From cb6384bc3f4e4a30664a549d4d871cbc965acfda Mon Sep 17 00:00:00 2001 From: no author Date: Fri, 1 Aug 2003 15:32:17 +0000 Subject: [PATCH] This commit was manufactured by cvs2svn to create tag 'before_scrollbars'. --- CVSROOT/checkoutlist | 13 - CVSROOT/commitinfo | 15 - CVSROOT/config | 11 - CVSROOT/cvswrappers | 23 - CVSROOT/editinfo | 21 - CVSROOT/loginfo | 26 - CVSROOT/modules | 26 - CVSROOT/notify | 12 - CVSROOT/rcsinfo | 13 - CVSROOT/taginfo | 20 - CVSROOT/verifymsg | 21 - helm/DEVEL/.cvsignore | 7 - helm/DEVEL/gdome_xslt/.cvsignore | 14 - helm/DEVEL/gdome_xslt/AUTHORS | 3 - helm/DEVEL/gdome_xslt/BUGS | 0 helm/DEVEL/gdome_xslt/C++/.cvsignore | 2 - helm/DEVEL/gdome_xslt/C++/Makefile.am | 1 - .../gdome_xslt/C++/gdome_xslt/.cvsignore | 3 - .../C++/gdome_xslt/GdomeSmartDOMXSLT.hh | 7 - .../gdome_xslt/GdomeSmartDOMXSLTStylesheet.cc | 131 - .../gdome_xslt/GdomeSmartDOMXSLTStylesheet.hh | 59 - .../gdome_xslt/C++/gdome_xslt/Makefile.am | 19 - helm/DEVEL/gdome_xslt/C++/test/.cvsignore | 3 - helm/DEVEL/gdome_xslt/C++/test/Makefile.am | 18 - helm/DEVEL/gdome_xslt/C++/test/main.cc | 53 - helm/DEVEL/gdome_xslt/C/.cvsignore | 2 - helm/DEVEL/gdome_xslt/C/Makefile.am | 3 - helm/DEVEL/gdome_xslt/C/gdome_xslt/.cvsignore | 4 - .../DEVEL/gdome_xslt/C/gdome_xslt/Makefile.am | 14 - .../gdome_xslt/C/gdome_xslt/gdome_xslt.c | 239 - .../gdome_xslt/C/gdome_xslt/gdome_xslt.h | 87 - helm/DEVEL/gdome_xslt/C/test/.cvsignore | 4 - helm/DEVEL/gdome_xslt/C/test/Makefile.am | 17 - helm/DEVEL/gdome_xslt/C/test/test.c | 106 - helm/DEVEL/gdome_xslt/ChangeLog | 0 helm/DEVEL/gdome_xslt/LICENSE | 510 - helm/DEVEL/gdome_xslt/LICENSE-INRIA | 13 - helm/DEVEL/gdome_xslt/Makefile.am | 16 - helm/DEVEL/gdome_xslt/NEWS | 0 helm/DEVEL/gdome_xslt/README | 0 helm/DEVEL/gdome_xslt/configure.ac | 107 - helm/DEVEL/gdome_xslt/debian/changelog | 127 - helm/DEVEL/gdome_xslt/debian/compat | 1 - helm/DEVEL/gdome_xslt/debian/control | 56 - helm/DEVEL/gdome_xslt/debian/copyright | 18 - helm/DEVEL/gdome_xslt/debian/docs | 0 .../debian/libgdome2-xslt-dev.examples | 2 - .../debian/libgdome2-xslt-dev.install | 5 - .../debian/libgdome2-xslt-ocaml-dev.dirs | 1 - .../debian/libgdome2-xslt-ocaml-dev.examples | 3 - .../debian/libgdome2-xslt-ocaml-dev.install | 3 - .../debian/libgdome2-xslt-ocaml.dirs | 1 - .../debian/libgdome2-xslt-ocaml.install | 1 - .../gdome_xslt/debian/libgdome2-xslt0.install | 1 - helm/DEVEL/gdome_xslt/debian/rules | 58 - .../gdome_xslt/gdome2-xslt-cpp-smart.pc.in | 14 - helm/DEVEL/gdome_xslt/gdome2-xslt.pc.in | 14 - helm/DEVEL/gdome_xslt/ocaml/.cvsignore | 2 - helm/DEVEL/gdome_xslt/ocaml/Makefile.am | 1 - .../gdome_xslt/ocaml/gdome_xslt/.cvsignore | 23 - .../DEVEL/gdome_xslt/ocaml/gdome_xslt/.depend | 5 - .../DEVEL/gdome_xslt/ocaml/gdome_xslt/META.in | 4 - .../gdome_xslt/ocaml/gdome_xslt/Makefile.am | 119 - .../gdome_xslt/ocaml/gdome_xslt/gdome_xslt.ml | 59 - .../ocaml/gdome_xslt/gdome_xslt.mli | 59 - .../ocaml/gdome_xslt/gdome_xslt_init.ml | 41 - .../ocaml/gdome_xslt/gdome_xslt_init.mli | 37 - .../ocaml/gdome_xslt/i_gdome_xslt.ml | 58 - .../ocaml/gdome_xslt/ml_gdome_xslt.c | 186 - .../ocaml/gdome_xslt/ml_gdome_xslt.h | 40 - .../gdome_xslt/ocaml/gdome_xslt/ocaml-io.h | 54 - helm/DEVEL/gdome_xslt/ocaml/test/.cvsignore | 8 - helm/DEVEL/gdome_xslt/ocaml/test/Makefile.am | 24 - helm/DEVEL/gdome_xslt/ocaml/test/test.ml | 79 - helm/DEVEL/gdome_xslt/test_files/.cvsignore | 3 - helm/DEVEL/gdome_xslt/test_files/Makefile.am | 1 - helm/DEVEL/gdome_xslt/test_files/input.xml | 4 - .../gdome_xslt/test_files/output.xml.correct | 4 - .../gdome_xslt/test_files/stylesheet.xsl | 22 - .../lablgtk/lablgtk_20000829-0.1.0-1.i386.rpm | Bin 1476108 -> 0 bytes .../lablgtk/lablgtk_20000829-0.1.0-1.spec | 25 - .../lablgtk/lablgtk_20000829-0.1.0-1.src.rpm | Bin 421518 -> 0 bytes .../lablgtk/lablgtk_20000829-0.1.0.tar.gz | Bin 419688 -> 0 bytes .../lablgtk/lablgtk_20000829-0.1.0/.cvsignore | 11 - .../lablgtk/lablgtk_20000829-0.1.0/CHANGES | 358 - .../lablgtk/lablgtk_20000829-0.1.0/COPYING | 28 - .../lablgtk/lablgtk_20000829-0.1.0/Makefile | 190 - .../lablgtk_20000829-0.1.0/Makefile.nt | 147 - .../lablgtk/lablgtk_20000829-0.1.0/README | 238 - .../applications/browser/.cvsignore | 3 - .../applications/browser/Makefile | 41 - .../applications/browser/README | 18 - .../applications/browser/TODO | 4 - .../applications/browser/editor.ml | 101 - .../applications/browser/file.ml | 13 - .../applications/browser/lexical.ml | 155 - .../applications/browser/list2.ml | 25 - .../applications/browser/shell.ml | 255 - .../applications/browser/text.ml | 16 - .../applications/browser/useunix.ml | 36 - .../applications/browser/widgets.ml | 34 - .../applications/radtest/.cvsignore | 3 - .../applications/radtest/CHANGES | 16 - .../applications/radtest/Makefile | 86 - .../applications/radtest/README | 24 - .../applications/radtest/aspectframe.xpm | 33 - .../applications/radtest/button.xpm | 33 - .../applications/radtest/checkbutton.xpm | 33 - .../applications/radtest/clist.xpm | 30 - .../applications/radtest/colorselection.xpm | 35 - .../applications/radtest/combo.xpm | 34 - .../applications/radtest/common.mli | 27 - .../applications/radtest/entry.xpm | 33 - .../applications/radtest/eventbox.xpm | 34 - .../applications/radtest/fixed.xpm | 31 - .../applications/radtest/frame.xpm | 33 - .../applications/radtest/gToolbar2.ml | 65 - .../applications/radtest/gTree2.ml | 78 - .../applications/radtest/gTree2.mli | 73 - .../applications/radtest/gtkTree2.ml | 82 - .../applications/radtest/gtktree2.c | 1385 -- .../applications/radtest/gtktree2.h | 139 - .../applications/radtest/gtktreeitem2.c | 1110 - .../applications/radtest/gtktreeitem2.h | 91 - .../applications/radtest/handlebox.xpm | 34 - .../applications/radtest/hbox.xpm | 31 - .../applications/radtest/hbuttonbox.xpm | 33 - .../applications/radtest/hseparator.xpm | 31 - .../applications/radtest/label.xpm | 30 - .../applications/radtest/load_lexer.mll | 46 - .../applications/radtest/load_parser.mly | 56 - .../applications/radtest/main.ml | 393 - .../applications/radtest/ml_gtk2.c | 124 - .../applications/radtest/notebook.xpm | 33 - .../applications/radtest/pixmap.xpm | 39 - .../applications/radtest/property.ml | 175 - .../applications/radtest/property.mli | 96 - .../applications/radtest/propwin.ml | 180 - .../applications/radtest/propwin.mli | 10 - .../applications/radtest/radiobutton.xpm | 33 - .../applications/radtest/scrolledwindow.xpm | 30 - .../applications/radtest/spinbutton.xpm | 33 - .../applications/radtest/statusbar.xpm | 34 - .../applications/radtest/tiBase.ml | 671 - .../applications/radtest/tiBin.ml | 185 - .../applications/radtest/tiButton.ml | 372 - .../applications/radtest/tiContainer.ml | 92 - .../applications/radtest/tiEdit.ml | 153 - .../applications/radtest/tiList.ml | 66 - .../applications/radtest/tiMisc.ml | 176 - .../applications/radtest/tiPack.ml | 300 - .../applications/radtest/tiWidget.ml | 43 - .../applications/radtest/tiWindow.ml | 117 - .../applications/radtest/togglebutton.xpm | 33 - .../applications/radtest/toolbar.xpm | 33 - .../applications/radtest/tree_minus.xpm | 18 - .../applications/radtest/tree_plus.xpm | 18 - .../applications/radtest/utils.ml | 353 - .../applications/radtest/vbox.xpm | 31 - .../applications/radtest/vbuttonbox.xpm | 33 - .../applications/radtest/viewport.xpm | 34 - .../applications/radtest/vseparator.xpm | 31 - .../applications/radtest/window.xpm | 38 - .../applications/unison/.cvsignore | 1 - .../applications/unison/README | 19 - .../applications/unison/uigtk.ml | 1434 -- .../lablgtk_20000829-0.1.0/config.make.nt | 6 - .../lablgtk_20000829-0.1.0/configure.mk | 50 - .../lablgtk_20000829-0.1.0/doc/formula.eps | 409 - .../lablgtk_20000829-0.1.0/doc/lablgtk.mgp | 558 - .../examples/GL/morph3d.ml | 607 - .../examples/GL/planet.ml | 125 - .../examples/GL/simple.ml | 33 - .../lablgtk_20000829-0.1.0/examples/README | 17 - .../examples/buttons.ml | 26 - .../lablgtk_20000829-0.1.0/examples/calc.ml | 114 - .../examples/calendar.ml | 21 - .../lablgtk_20000829-0.1.0/examples/clist.ml | 51 - .../lablgtk_20000829-0.1.0/examples/combo.ml | 23 - .../lablgtk_20000829-0.1.0/examples/csview.ml | 155 - .../examples/dcalendar.ml | 247 - .../examples/drawing.ml | 19 - .../lablgtk_20000829-0.1.0/examples/editor.ml | 101 - .../lablgtk_20000829-0.1.0/examples/entry.ml | 48 - .../lablgtk_20000829-0.1.0/examples/events.ml | 25 - .../examples/fifteen.ml | 97 - .../examples/fixed_editor.ml | 279 - .../examples/fixpoint.ml | 30 - .../lablgtk_20000829-0.1.0/examples/hello.ml | 18 - .../lablgtk_20000829-0.1.0/examples/image.ml | 67 - .../examples/image256x256.rgb | 19 - .../examples/kaimono.ml | 130 - .../lablgtk_20000829-0.1.0/examples/label.ml | 48 - .../examples/lissajous.ml | 48 - .../examples/nihongo.ml | 31 - .../examples/old/fixpoint.ml | 39 - .../examples/old/hello.ml | 23 - .../examples/old/progressbar.ml | 60 - .../lablgtk_20000829-0.1.0/examples/pousse.ml | 199 - .../examples/progressbar.ml | 51 - .../examples/radiobuttons.ml | 39 - .../lablgtk_20000829-0.1.0/examples/rpn.ml | 129 - .../examples/scrolledwin.ml | 35 - .../lablgtk_20000829-0.1.0/examples/socket.ml | 16 - .../lablgtk_20000829-0.1.0/examples/test.xpm | 92 - .../examples/testdnd.ml | 510 - .../examples/testgtk.ml | 1140 - .../examples/testinput.ml | 43 - .../examples/tictactoe.ml | 113 - .../lablgtk_20000829-0.1.0/examples/tron.ml | 204 - .../examples/xmhtml/test.ml | 38 - .../lablgtk/lablgtk_20000829-0.1.0/gBin.ml | 153 - .../lablgtk/lablgtk_20000829-0.1.0/gBin.mli | 163 - .../lablgtk/lablgtk_20000829-0.1.0/gButton.ml | 124 - .../lablgtk_20000829-0.1.0/gButton.mli | 144 - .../lablgtk_20000829-0.1.0/gContainer.ml | 75 - .../lablgtk_20000829-0.1.0/gContainer.mli | 79 - .../lablgtk/lablgtk_20000829-0.1.0/gData.ml | 60 - .../lablgtk/lablgtk_20000829-0.1.0/gData.mli | 60 - .../lablgtk/lablgtk_20000829-0.1.0/gDraw.ml | 163 - .../lablgtk/lablgtk_20000829-0.1.0/gDraw.mli | 107 - .../lablgtk/lablgtk_20000829-0.1.0/gEdit.ml | 147 - .../lablgtk/lablgtk_20000829-0.1.0/gEdit.mli | 146 - .../lablgtk/lablgtk_20000829-0.1.0/gHtml.ml | 33 - .../lablgtk/lablgtk_20000829-0.1.0/gList.ml | 162 - .../lablgtk/lablgtk_20000829-0.1.0/gList.mli | 158 - .../lablgtk/lablgtk_20000829-0.1.0/gMain.ml | 26 - .../lablgtk/lablgtk_20000829-0.1.0/gMenu.ml | 199 - .../lablgtk/lablgtk_20000829-0.1.0/gMenu.mli | 196 - .../lablgtk/lablgtk_20000829-0.1.0/gMisc.ml | 217 - .../lablgtk/lablgtk_20000829-0.1.0/gMisc.mli | 263 - .../lablgtk/lablgtk_20000829-0.1.0/gObj.ml | 292 - .../lablgtk/lablgtk_20000829-0.1.0/gObj.mli | 267 - .../lablgtk/lablgtk_20000829-0.1.0/gPack.ml | 217 - .../lablgtk/lablgtk_20000829-0.1.0/gPack.mli | 267 - .../lablgtk/lablgtk_20000829-0.1.0/gRange.ml | 83 - .../lablgtk/lablgtk_20000829-0.1.0/gRange.mli | 87 - .../lablgtk/lablgtk_20000829-0.1.0/gTree.ml | 76 - .../lablgtk/lablgtk_20000829-0.1.0/gTree.mli | 72 - .../lablgtk/lablgtk_20000829-0.1.0/gUtil.ml | 80 - .../lablgtk/lablgtk_20000829-0.1.0/gUtil.mli | 109 - .../lablgtk/lablgtk_20000829-0.1.0/gWindow.ml | 151 - .../lablgtk_20000829-0.1.0/gWindow.mli | 156 - .../lablgtk/lablgtk_20000829-0.1.0/gaux.ml | 17 - .../lablgtk/lablgtk_20000829-0.1.0/gdk.ml | 535 - .../lablgtk/lablgtk_20000829-0.1.0/gdk.mli | 447 - .../lablgtk_20000829-0.1.0/gdkEvent.ml | 159 - .../lablgtk_20000829-0.1.0/gdkKeysyms.ml | 1320 -- .../lablgtk_20000829-0.1.0/gdk_tags.var | 165 - .../lablgtk/lablgtk_20000829-0.1.0/glGtk.ml | 86 - .../lablgtk/lablgtk_20000829-0.1.0/glGtk.mli | 63 - .../lablgtk/lablgtk_20000829-0.1.0/glib.ml | 21 - .../lablgtk_20000829-0.1.0/gpointer.ml | 41 - .../lablgtk/lablgtk_20000829-0.1.0/gtk.ml | 158 - .../lablgtk/lablgtk_20000829-0.1.0/gtkArgv.ml | 106 - .../lablgtk/lablgtk_20000829-0.1.0/gtkBase.ml | 414 - .../lablgtk/lablgtk_20000829-0.1.0/gtkBin.ml | 170 - .../lablgtk_20000829-0.1.0/gtkButton.ml | 148 - .../lablgtk/lablgtk_20000829-0.1.0/gtkData.ml | 148 - .../lablgtk/lablgtk_20000829-0.1.0/gtkEdit.ml | 223 - .../lablgtk/lablgtk_20000829-0.1.0/gtkInit.ml | 5 - .../lablgtk/lablgtk_20000829-0.1.0/gtkList.ml | 294 - .../lablgtk/lablgtk_20000829-0.1.0/gtkMain.ml | 50 - .../lablgtk/lablgtk_20000829-0.1.0/gtkMenu.ml | 144 - .../lablgtk/lablgtk_20000829-0.1.0/gtkMisc.ml | 323 - .../lablgtk/lablgtk_20000829-0.1.0/gtkNew.ml | 56 - .../lablgtk/lablgtk_20000829-0.1.0/gtkPack.ml | 318 - .../lablgtk_20000829-0.1.0/gtkRange.ml | 147 - .../lablgtk_20000829-0.1.0/gtkSignal.ml | 65 - .../lablgtk_20000829-0.1.0/gtkSignal.mli | 45 - .../lablgtk_20000829-0.1.0/gtkThInit.ml | 5 - .../lablgtk_20000829-0.1.0/gtkThread.ml | 33 - .../lablgtk/lablgtk_20000829-0.1.0/gtkTree.ml | 122 - .../lablgtk_20000829-0.1.0/gtkWindow.ml | 189 - .../lablgtk_20000829-0.1.0/gtkXmHTML.ml | 109 - .../lablgtk_20000829-0.1.0/gtk_tags.var | 171 - .../lablgtk_20000829-0.1.0/gtkgl_tags.var | 19 - .../lablgtk_20000829-0.1.0/gtkxmhtml_tags.var | 30 - .../lablgtk_20000829-0.1.0/lablgl.patch | 112 - .../lablgtk/lablgtk_20000829-0.1.0/lablgtk.in | 24 - .../lablgtk/lablgtk_20000829-0.1.0/ml_gdk.c | 522 - .../lablgtk/lablgtk_20000829-0.1.0/ml_gdk.h | 53 - .../lablgtk/lablgtk_20000829-0.1.0/ml_glib.c | 135 - .../lablgtk/lablgtk_20000829-0.1.0/ml_glib.h | 10 - .../lablgtk/lablgtk_20000829-0.1.0/ml_gtk.c | 2170 -- .../lablgtk/lablgtk_20000829-0.1.0/ml_gtk.h | 15 - .../lablgtk/lablgtk_20000829-0.1.0/ml_gtkgl.c | 54 - .../lablgtk_20000829-0.1.0/ml_gtkxmhtml.c | 76 - .../lablgtk_20000829-0.1.0/var2conv.ml | 99 - .../lablgtk/lablgtk_20000829-0.1.0/var2def.ml | 44 - .../lablgtk/lablgtk_20000829-0.1.0/wrappers.c | 76 - .../lablgtk/lablgtk_20000829-0.1.0/wrappers.h | 222 - .../lablgtk/lablgtk_20001129-0.1.0-1.spec | 143 - .../lablgtk/lablgtk_20001129-0.1.0.tar.gz | Bin 407998 -> 0 bytes .../lablgtk/lablgtk_20001129-0.1.0/.cvsignore | 10 - .../lablgtk/lablgtk_20001129-0.1.0/CHANGES | 365 - .../lablgtk/lablgtk_20001129-0.1.0/COPYING | 28 - .../lablgtk/lablgtk_20001129-0.1.0/Makefile | 187 - .../lablgtk_20001129-0.1.0/Makefile.nt | 147 - .../lablgtk/lablgtk_20001129-0.1.0/README | 239 - .../applications/browser/.cvsignore | 3 - .../applications/browser/Makefile | 41 - .../applications/browser/README | 18 - .../applications/browser/TODO | 4 - .../applications/browser/editor.ml | 101 - .../applications/browser/file.ml | 13 - .../applications/browser/lexical.ml | 155 - .../applications/browser/list2.ml | 25 - .../applications/browser/shell.ml | 255 - .../applications/browser/text.ml | 16 - .../applications/browser/useunix.ml | 36 - .../applications/browser/widgets.ml | 34 - .../applications/radtest/.cvsignore | 3 - .../applications/radtest/CHANGES | 16 - .../applications/radtest/Makefile | 86 - .../applications/radtest/README | 24 - .../applications/radtest/aspectframe.xpm | 33 - .../applications/radtest/button.xpm | 33 - .../applications/radtest/checkbutton.xpm | 33 - .../applications/radtest/clist.xpm | 30 - .../applications/radtest/colorselection.xpm | 35 - .../applications/radtest/combo.xpm | 34 - .../applications/radtest/common.mli | 27 - .../applications/radtest/entry.xpm | 33 - .../applications/radtest/eventbox.xpm | 34 - .../applications/radtest/fixed.xpm | 31 - .../applications/radtest/frame.xpm | 33 - .../applications/radtest/gToolbar2.ml | 65 - .../applications/radtest/gTree2.ml | 78 - .../applications/radtest/gTree2.mli | 73 - .../applications/radtest/gtkTree2.ml | 82 - .../applications/radtest/gtktree2.c | 1385 -- .../applications/radtest/gtktree2.h | 139 - .../applications/radtest/gtktreeitem2.c | 1110 - .../applications/radtest/gtktreeitem2.h | 91 - .../applications/radtest/handlebox.xpm | 34 - .../applications/radtest/hbox.xpm | 31 - .../applications/radtest/hbuttonbox.xpm | 33 - .../applications/radtest/hseparator.xpm | 31 - .../applications/radtest/label.xpm | 30 - .../applications/radtest/load_lexer.mll | 46 - .../applications/radtest/load_parser.mly | 56 - .../applications/radtest/main.ml | 393 - .../applications/radtest/ml_gtk2.c | 124 - .../applications/radtest/notebook.xpm | 33 - .../applications/radtest/pixmap.xpm | 39 - .../applications/radtest/property.ml | 175 - .../applications/radtest/property.mli | 96 - .../applications/radtest/propwin.ml | 180 - .../applications/radtest/propwin.mli | 10 - .../applications/radtest/radiobutton.xpm | 33 - .../applications/radtest/scrolledwindow.xpm | 30 - .../applications/radtest/spinbutton.xpm | 33 - .../applications/radtest/statusbar.xpm | 34 - .../applications/radtest/tiBase.ml | 671 - .../applications/radtest/tiBin.ml | 185 - .../applications/radtest/tiButton.ml | 372 - .../applications/radtest/tiContainer.ml | 92 - .../applications/radtest/tiEdit.ml | 153 - .../applications/radtest/tiList.ml | 66 - .../applications/radtest/tiMisc.ml | 176 - .../applications/radtest/tiPack.ml | 300 - .../applications/radtest/tiWidget.ml | 43 - .../applications/radtest/tiWindow.ml | 117 - .../applications/radtest/togglebutton.xpm | 33 - .../applications/radtest/toolbar.xpm | 33 - .../applications/radtest/tree_minus.xpm | 18 - .../applications/radtest/tree_plus.xpm | 18 - .../applications/radtest/utils.ml | 353 - .../applications/radtest/vbox.xpm | 31 - .../applications/radtest/vbuttonbox.xpm | 33 - .../applications/radtest/viewport.xpm | 34 - .../applications/radtest/vseparator.xpm | 31 - .../applications/radtest/window.xpm | 38 - .../applications/unison/.cvsignore | 1 - .../applications/unison/README | 10 - .../lablgtk_20001129-0.1.0/config.make.nt | 6 - .../lablgtk_20001129-0.1.0/configure.mk | 50 - .../lablgtk_20001129-0.1.0/doc/formula.eps | 409 - .../lablgtk_20001129-0.1.0/doc/lablgtk.mgp | 558 - .../examples/GL/morph3d.ml | 607 - .../examples/GL/planet.ml | 125 - .../examples/GL/simple.ml | 33 - .../lablgtk_20001129-0.1.0/examples/README | 17 - .../examples/buttons.ml | 26 - .../lablgtk_20001129-0.1.0/examples/calc.ml | 114 - .../examples/calendar.ml | 21 - .../lablgtk_20001129-0.1.0/examples/clist.ml | 51 - .../lablgtk_20001129-0.1.0/examples/combo.ml | 23 - .../lablgtk_20001129-0.1.0/examples/csview.ml | 155 - .../examples/dcalendar.ml | 247 - .../examples/drawing.ml | 19 - .../lablgtk_20001129-0.1.0/examples/editor.ml | 101 - .../lablgtk_20001129-0.1.0/examples/entry.ml | 48 - .../lablgtk_20001129-0.1.0/examples/events.ml | 25 - .../examples/fifteen.ml | 97 - .../examples/fixed_editor.ml | 279 - .../examples/fixpoint.ml | 30 - .../lablgtk_20001129-0.1.0/examples/hello.ml | 18 - .../lablgtk_20001129-0.1.0/examples/image.ml | 67 - .../examples/image256x256.rgb | 19 - .../examples/kaimono.ml | 130 - .../lablgtk_20001129-0.1.0/examples/label.ml | 48 - .../examples/lissajous.ml | 48 - .../examples/nihongo.ml | 31 - .../lablgtk_20001129-0.1.0/examples/pousse.ml | 199 - .../examples/progressbar.ml | 51 - .../examples/radiobuttons.ml | 39 - .../lablgtk_20001129-0.1.0/examples/rpn.ml | 129 - .../examples/scrolledwin.ml | 35 - .../lablgtk_20001129-0.1.0/examples/socket.ml | 16 - .../lablgtk_20001129-0.1.0/examples/test.xpm | 92 - .../examples/testdnd.ml | 510 - .../examples/testgtk.ml | 1140 - .../examples/testinput.ml | 43 - .../examples/tictactoe.ml | 113 - .../lablgtk_20001129-0.1.0/examples/tron.ml | 204 - .../examples/xmhtml/test.ml | 38 - .../lablgtk/lablgtk_20001129-0.1.0/gBin.ml | 153 - .../lablgtk/lablgtk_20001129-0.1.0/gBin.mli | 163 - .../lablgtk/lablgtk_20001129-0.1.0/gButton.ml | 124 - .../lablgtk_20001129-0.1.0/gButton.mli | 144 - .../lablgtk_20001129-0.1.0/gContainer.ml | 75 - .../lablgtk_20001129-0.1.0/gContainer.mli | 79 - .../lablgtk/lablgtk_20001129-0.1.0/gData.ml | 60 - .../lablgtk/lablgtk_20001129-0.1.0/gData.mli | 60 - .../lablgtk/lablgtk_20001129-0.1.0/gDraw.ml | 163 - .../lablgtk/lablgtk_20001129-0.1.0/gDraw.mli | 107 - .../lablgtk/lablgtk_20001129-0.1.0/gEdit.ml | 147 - .../lablgtk/lablgtk_20001129-0.1.0/gEdit.mli | 146 - .../lablgtk/lablgtk_20001129-0.1.0/gHtml.ml | 33 - .../lablgtk/lablgtk_20001129-0.1.0/gList.ml | 162 - .../lablgtk/lablgtk_20001129-0.1.0/gList.mli | 158 - .../lablgtk/lablgtk_20001129-0.1.0/gMain.ml | 26 - .../lablgtk/lablgtk_20001129-0.1.0/gMenu.ml | 199 - .../lablgtk/lablgtk_20001129-0.1.0/gMenu.mli | 196 - .../lablgtk/lablgtk_20001129-0.1.0/gMisc.ml | 217 - .../lablgtk/lablgtk_20001129-0.1.0/gMisc.mli | 263 - .../lablgtk/lablgtk_20001129-0.1.0/gObj.ml | 292 - .../lablgtk/lablgtk_20001129-0.1.0/gObj.mli | 267 - .../lablgtk/lablgtk_20001129-0.1.0/gPack.ml | 217 - .../lablgtk/lablgtk_20001129-0.1.0/gPack.mli | 267 - .../lablgtk/lablgtk_20001129-0.1.0/gRange.ml | 83 - .../lablgtk/lablgtk_20001129-0.1.0/gRange.mli | 87 - .../lablgtk/lablgtk_20001129-0.1.0/gTree.ml | 76 - .../lablgtk/lablgtk_20001129-0.1.0/gTree.mli | 72 - .../lablgtk/lablgtk_20001129-0.1.0/gUtil.ml | 80 - .../lablgtk/lablgtk_20001129-0.1.0/gUtil.mli | 109 - .../lablgtk/lablgtk_20001129-0.1.0/gWindow.ml | 151 - .../lablgtk_20001129-0.1.0/gWindow.mli | 156 - .../lablgtk/lablgtk_20001129-0.1.0/gaux.ml | 17 - .../lablgtk/lablgtk_20001129-0.1.0/gdk.ml | 535 - .../lablgtk/lablgtk_20001129-0.1.0/gdk.mli | 447 - .../lablgtk_20001129-0.1.0/gdkEvent.ml | 159 - .../lablgtk_20001129-0.1.0/gdkKeysyms.ml | 1320 -- .../lablgtk_20001129-0.1.0/gdk_tags.var | 163 - .../lablgtk/lablgtk_20001129-0.1.0/glGtk.ml | 86 - .../lablgtk/lablgtk_20001129-0.1.0/glGtk.mli | 63 - .../lablgtk/lablgtk_20001129-0.1.0/glib.ml | 21 - .../lablgtk_20001129-0.1.0/gpointer.ml | 41 - .../lablgtk/lablgtk_20001129-0.1.0/gtk.ml | 158 - .../lablgtk/lablgtk_20001129-0.1.0/gtkArgv.ml | 106 - .../lablgtk/lablgtk_20001129-0.1.0/gtkBase.ml | 414 - .../lablgtk/lablgtk_20001129-0.1.0/gtkBin.ml | 170 - .../lablgtk_20001129-0.1.0/gtkButton.ml | 148 - .../lablgtk/lablgtk_20001129-0.1.0/gtkData.ml | 148 - .../lablgtk/lablgtk_20001129-0.1.0/gtkEdit.ml | 223 - .../lablgtk/lablgtk_20001129-0.1.0/gtkInit.ml | 5 - .../lablgtk/lablgtk_20001129-0.1.0/gtkList.ml | 294 - .../lablgtk/lablgtk_20001129-0.1.0/gtkMain.ml | 49 - .../lablgtk/lablgtk_20001129-0.1.0/gtkMenu.ml | 144 - .../lablgtk/lablgtk_20001129-0.1.0/gtkMisc.ml | 323 - .../lablgtk/lablgtk_20001129-0.1.0/gtkNew.ml | 56 - .../lablgtk/lablgtk_20001129-0.1.0/gtkPack.ml | 318 - .../lablgtk_20001129-0.1.0/gtkRange.ml | 147 - .../lablgtk_20001129-0.1.0/gtkSignal.ml | 65 - .../lablgtk_20001129-0.1.0/gtkSignal.mli | 45 - .../lablgtk_20001129-0.1.0/gtkThInit.ml | 5 - .../lablgtk_20001129-0.1.0/gtkThread.ml | 33 - .../lablgtk/lablgtk_20001129-0.1.0/gtkTree.ml | 122 - .../lablgtk_20001129-0.1.0/gtkWindow.ml | 189 - .../lablgtk_20001129-0.1.0/gtkXmHTML.ml | 109 - .../lablgtk_20001129-0.1.0/gtk_tags.var | 169 - .../lablgtk_20001129-0.1.0/gtkgl_tags.var | 19 - .../lablgtk_20001129-0.1.0/gtkxmhtml_tags.var | 30 - .../lablgtk_20001129-0.1.0/lablgl.patch | 112 - .../lablgtk/lablgtk_20001129-0.1.0/lablgtk.in | 24 - .../lablgtk/lablgtk_20001129-0.1.0/ml_gdk.c | 522 - .../lablgtk/lablgtk_20001129-0.1.0/ml_gdk.h | 53 - .../lablgtk/lablgtk_20001129-0.1.0/ml_glib.c | 143 - .../lablgtk/lablgtk_20001129-0.1.0/ml_glib.h | 10 - .../lablgtk/lablgtk_20001129-0.1.0/ml_gtk.c | 1013 - .../lablgtk/lablgtk_20001129-0.1.0/ml_gtk.h | 24 - .../lablgtk_20001129-0.1.0/ml_gtkbin.c | 118 - .../lablgtk_20001129-0.1.0/ml_gtkbutton.c | 75 - .../lablgtk_20001129-0.1.0/ml_gtkedit.c | 126 - .../lablgtk/lablgtk_20001129-0.1.0/ml_gtkgl.c | 54 - .../lablgtk_20001129-0.1.0/ml_gtklist.c | 168 - .../lablgtk_20001129-0.1.0/ml_gtkmenu.c | 97 - .../lablgtk_20001129-0.1.0/ml_gtkmisc.c | 139 - .../lablgtk_20001129-0.1.0/ml_gtknew.c | 180 - .../lablgtk_20001129-0.1.0/ml_gtkpack.c | 229 - .../lablgtk_20001129-0.1.0/ml_gtkrange.c | 88 - .../lablgtk_20001129-0.1.0/ml_gtktree.c | 53 - .../lablgtk_20001129-0.1.0/ml_gtkxmhtml.c | 76 - .../lablgtk/lablgtk_20001129-0.1.0/varcc.ml | 157 - .../lablgtk/lablgtk_20001129-0.1.0/wrappers.c | 90 - .../lablgtk/lablgtk_20001129-0.1.0/wrappers.h | 225 - helm/DEVEL/lablgtk_gtkmathview/.cvsignore | 1 - helm/DEVEL/lablgtk_gtkmathview/.depend | 4 - ...lgtk-20000829_gtkmathview-0.1.0-1.i386.rpm | Bin 16862 -> 0 bytes .../lablgtk-20000829_gtkmathview-0.1.0-1.spec | 25 - ...blgtk-20000829_gtkmathview-0.1.0-1.src.rpm | Bin 7616 -> 0 bytes .../lablgtk-20000829_gtkmathview-0.1.0.tar.gz | Bin 5777 -> 0 bytes .../.depend | 4 - .../COPYING | 11 - .../Makefile | 98 - .../config.make | 15 - .../configure.mk | 53 - .../gMathView.ml | 50 - .../gtkMathView.ml | 61 - .../gtk_mathview.ml | 1 - .../ml_gtk_mathview.c | 55 - .../test/Makefile | 36 - .../test/test.ml | 141 - .../test/test.xml | 123 - .../lablgtk-20000829_gtkmathview-0.2.0-1.spec | 25 - .../lablgtk-20000829_gtkmathview-0.2.0.tar.gz | Bin 14050 -> 0 bytes .../.cvsignore | 1 - .../.depend | 4 - .../COPYING | 11 - .../Makefile | 107 - .../configure.mk | 53 - .../gMathView.ml | 64 - .../gtkMathView.ml | 93 - .../gtk_mathview.ml | 1 - .../minidom/.cvsignore | 1 - .../minidom/Makefile | 43 - .../minidom/minidom.ml | 61 - .../minidom/minidom.mli | 50 - .../minidom/ml_minidom.c | 288 - .../minidom/ml_minidom.h | 10 - .../minidom/test.ml | 84 - .../minidom/test.xml | 505 - .../ml_gtk_mathview.c | 120 - .../test/.cvsignore | 1 - .../test/Makefile | 43 - .../test/t1.config | 3 - .../test/test.ml | 278 - .../test/test.xml | 123 - .../lablgtk-20000829_gtkmathview-0.2.1-1.spec | 25 - .../.cvsignore | 1 - .../.depend | 4 - .../COPYING | 11 - .../Makefile | 109 - .../configure.mk | 59 - .../gMathView.ml | 79 - .../gtkMathView.ml | 118 - .../gtk_mathview.ml | 1 - .../minidom/.cvsignore | 1 - .../minidom/Makefile | 51 - .../minidom/minidom.ml | 61 - .../minidom/minidom.mli | 50 - .../minidom/ml_minidom.c | 288 - .../minidom/ml_minidom.h | 18 - .../minidom/ominidom.ml | 156 - .../minidom/test.ml | 84 - .../minidom/test.xml | 505 - .../ml_gtk_mathview.c | 159 - .../test/.cvsignore | 1 - .../test/Makefile | 45 - .../test/t1.config | 3 - .../test/test.ml | 297 - .../test/test.xml | 123 - .../lablgtk-20001129_gtkmathview-0.2.1-1.spec | 25 - .../.cvsignore | 1 - .../.depend | 4 - .../COPYING | 11 - .../Makefile | 108 - .../configure.mk | 62 - .../gMathView.ml | 80 - .../gtkMathView.ml | 118 - .../gtk_mathview.ml | 1 - .../minidom/.cvsignore | 1 - .../minidom/Makefile | 52 - .../minidom/minidom.ml | 61 - .../minidom/minidom.mli | 50 - .../minidom/ml_minidom.c | 288 - .../minidom/ml_minidom.h | 18 - .../minidom/ominidom.ml | 156 - .../minidom/ominidom.mli | 64 - .../minidom/test.ml | 84 - .../minidom/test.xml | 505 - .../ml_gtk_mathview.c | 159 - .../test/.cvsignore | 1 - .../test/Makefile | 45 - .../test/t1.config | 3 - .../test/test.ml | 297 - .../test/test.xml | 123 - .../lablgtk-20001129_gtkmathview-0.2.2-1.spec | 26 - .../lablgtk-20001129_gtkmathview-0.2.2.tar.gz | Bin 15150 -> 0 bytes .../.cvsignore | 1 - .../.depend | 4 - .../COPYING | 11 - .../Makefile | 109 - .../configure.mk | 59 - .../gMathView.ml | 80 - .../gtkMathView.ml | 118 - .../gtk_mathview.ml | 1 - .../minidom/.cvsignore | 1 - .../minidom/Makefile | 51 - .../minidom/minidom.ml | 61 - .../minidom/minidom.mli | 50 - .../minidom/ml_minidom.c | 288 - .../minidom/ml_minidom.h | 18 - .../minidom/ominidom.ml | 156 - .../minidom/ominidom.mli | 64 - .../minidom/test.ml | 84 - .../minidom/test.xml | 505 - .../ml_gtk_mathview.c | 159 - .../test/.cvsignore | 1 - .../test/Makefile | 45 - .../test/t1.config | 3 - .../test/test.ml | 297 - .../test/test.xml | 123 - helm/DEVEL/lablgtkmathview/.cvsignore | 5 - helm/DEVEL/lablgtkmathview/.depend | 10 - helm/DEVEL/lablgtkmathview/AUTHORS | 2 - helm/DEVEL/lablgtkmathview/COPYING | 340 - helm/DEVEL/lablgtkmathview/ChangeLog | 6 - helm/DEVEL/lablgtkmathview/LICENSE | 22 - helm/DEVEL/lablgtkmathview/META.in | 5 - helm/DEVEL/lablgtkmathview/Makefile.in | 116 - helm/DEVEL/lablgtkmathview/NEWS | 0 helm/DEVEL/lablgtkmathview/README | 9 - helm/DEVEL/lablgtkmathview/configure.in | 58 - helm/DEVEL/lablgtkmathview/debian/changelog | 199 - helm/DEVEL/lablgtkmathview/debian/compat | 1 - helm/DEVEL/lablgtkmathview/debian/control | 27 - helm/DEVEL/lablgtkmathview/debian/copyright | 21 - helm/DEVEL/lablgtkmathview/debian/docs | 1 - .../debian/liblablgtkmathview-ocaml-dev.dirs | 2 - .../debian/liblablgtkmathview-ocaml.dirs | 1 - .../debian/liblablgtkmathview-ocaml.install | 2 - helm/DEVEL/lablgtkmathview/debian/rules | 65 - helm/DEVEL/lablgtkmathview/gMathView.ml | 183 - helm/DEVEL/lablgtkmathview/gMathView.mli | 106 - helm/DEVEL/lablgtkmathview/gMathViewAux.ml | 329 - helm/DEVEL/lablgtkmathview/gMathViewAux.mli | 78 - helm/DEVEL/lablgtkmathview/gtkMathView.ml | 175 - helm/DEVEL/lablgtkmathview/gtk_mathview.ml | 24 - .../lablgtkmathview/lablgtk/META.lablgtk | 6 - .../lablgtkmathview/lablgtkmathview.spec.in | 28 - helm/DEVEL/lablgtkmathview/ml_gtk_mathview.c | 219 - helm/DEVEL/lablgtkmathview/test/.cvsignore | 1 - helm/DEVEL/lablgtkmathview/test/Makefile.in | 20 - helm/DEVEL/lablgtkmathview/test/t1.config | 3 - helm/DEVEL/lablgtkmathview/test/test.ml | 479 - helm/DEVEL/lablgtkmathview/test/test.xml | 134 - helm/DEVEL/mathml_editor/.cvsignore | 16 - helm/DEVEL/mathml_editor/.log | 21 - helm/DEVEL/mathml_editor/AUTHORS | 2 - helm/DEVEL/mathml_editor/BROWSE | 503 - helm/DEVEL/mathml_editor/BUGS | 0 helm/DEVEL/mathml_editor/BUGS-GDOME2 | 4 - helm/DEVEL/mathml_editor/ChangeLog | 0 helm/DEVEL/mathml_editor/LICENSE | 25 - helm/DEVEL/mathml_editor/MODES | 25 - helm/DEVEL/mathml_editor/Makefile.am | 31 - helm/DEVEL/mathml_editor/Makefile.in | 438 - helm/DEVEL/mathml_editor/NEWS | 0 helm/DEVEL/mathml_editor/PATTERNS | 196 - helm/DEVEL/mathml_editor/README | 0 helm/DEVEL/mathml_editor/TML.dtd | 66 - helm/DEVEL/mathml_editor/TODO | 13 - helm/DEVEL/mathml_editor/configure.ac | 181 - helm/DEVEL/mathml_editor/debian/changelog | 33 - helm/DEVEL/mathml_editor/debian/control | 46 - helm/DEVEL/mathml_editor/debian/copyright | 23 - helm/DEVEL/mathml_editor/debian/docs | 7 - .../mathml_editor/debian/libeditex-dev.files | 5 - .../debian/libeditex-ocaml-dev.files | 3 - .../debian/libeditex-ocaml.files | 1 - .../mathml_editor/debian/libeditex0.files | 2 - helm/DEVEL/mathml_editor/debian/rules | 76 - helm/DEVEL/mathml_editor/dict/.cvsignore | 2 - helm/DEVEL/mathml_editor/dict/Makefile.am | 2 - .../mathml_editor/dict/dictionary-basic.xml | 9 - .../mathml_editor/dict/dictionary-test.xml | 39 - .../mathml_editor/dict/dictionary-tex.xml | 378 - helm/DEVEL/mathml_editor/dict/dictionary.dtd | 23 - helm/DEVEL/mathml_editor/doc/.cvsignore | 5 - helm/DEVEL/mathml_editor/doc/spec.tex | 973 - helm/DEVEL/mathml_editor/editex.pc.in | 19 - helm/DEVEL/mathml_editor/examples/.cvsignore | 2 - helm/DEVEL/mathml_editor/examples/Makefile.am | 1 - helm/DEVEL/mathml_editor/examples/abs.tex | 1 - helm/DEVEL/mathml_editor/examples/big.tex | 1 - helm/DEVEL/mathml_editor/ocaml/.cvsignore | 1 - helm/DEVEL/mathml_editor/ocaml/.depend | 3 - helm/DEVEL/mathml_editor/ocaml/META.in | 6 - helm/DEVEL/mathml_editor/ocaml/Makefile.am | 97 - .../mathml_editor/ocaml/c_mathml_editor.cc | 224 - .../mathml_editor/ocaml/c_mathml_editor.h | 49 - .../mathml_editor/ocaml/i_mathml_editor.ml | 76 - .../mathml_editor/ocaml/mathml_editor.ml | 70 - .../mathml_editor/ocaml/mathml_editor.mli | 50 - .../mathml_editor/ocaml/ml_mathml_editor.c | 210 - helm/DEVEL/mathml_editor/src/.cvsignore | 9 - helm/DEVEL/mathml_editor/src/ALogger.hh | 53 - .../mathml_editor/src/AMathMLConsumer.hh | 38 - .../DEVEL/mathml_editor/src/AMathMLFactory.cc | 42 - .../DEVEL/mathml_editor/src/AMathMLFactory.hh | 47 - helm/DEVEL/mathml_editor/src/APushLexer.hh | 46 - helm/DEVEL/mathml_editor/src/APushParser.cc | 42 - helm/DEVEL/mathml_editor/src/APushParser.hh | 57 - helm/DEVEL/mathml_editor/src/BROWSE | 503 - .../DEVEL/mathml_editor/src/CLoggerConsole.cc | 35 - .../DEVEL/mathml_editor/src/CLoggerConsole.hh | 40 - .../mathml_editor/src/CMathMLFactoryXSLT.cc | 106 - .../mathml_editor/src/CMathMLFactoryXSLT.hh | 47 - .../src/CMathMLFactoryXSLTDiff.cc | 93 - .../src/CMathMLFactoryXSLTDiff.hh | 46 - helm/DEVEL/mathml_editor/src/Diff.cc | 393 - helm/DEVEL/mathml_editor/src/Diff.hh | 77 - helm/DEVEL/mathml_editor/src/ILPushLexer.cc | 51 - helm/DEVEL/mathml_editor/src/ILPushLexer.hh | 21 - helm/DEVEL/mathml_editor/src/ITPushLexer.cc | 44 - helm/DEVEL/mathml_editor/src/ITPushLexer.hh | 20 - helm/DEVEL/mathml_editor/src/LPushLexer.cc | 382 - helm/DEVEL/mathml_editor/src/LPushLexer.hh | 65 - helm/DEVEL/mathml_editor/src/Makefile.am | 55 - helm/DEVEL/mathml_editor/src/Makefile.in | 431 - helm/DEVEL/mathml_editor/src/TDictionary.cc | 316 - helm/DEVEL/mathml_editor/src/TDictionary.hh | 129 - helm/DEVEL/mathml_editor/src/TDocument.cc | 213 - helm/DEVEL/mathml_editor/src/TDocument.hh | 69 - helm/DEVEL/mathml_editor/src/TListener.hh | 35 - helm/DEVEL/mathml_editor/src/TNode.cc | 236 - helm/DEVEL/mathml_editor/src/TNode.hh | 107 - helm/DEVEL/mathml_editor/src/TPushLexer.cc | 207 - helm/DEVEL/mathml_editor/src/TPushLexer.hh | 64 - helm/DEVEL/mathml_editor/src/TPushParser.cc | 1952 -- helm/DEVEL/mathml_editor/src/TPushParser.hh | 113 - helm/DEVEL/mathml_editor/src/TToken.hh | 63 - helm/DEVEL/mathml_editor/src/TTokenizer.cc | 69 - helm/DEVEL/mathml_editor/src/TTokenizer.hh | 54 - helm/DEVEL/mathml_editor/src/config.dirs.in | 3 - helm/DEVEL/mathml_editor/src/dom.hh | 53 - helm/DEVEL/mathml_editor/src/globals.hh | 33 - helm/DEVEL/mathml_editor/test/.cvsignore | 5 - helm/DEVEL/mathml_editor/test/Makefile.am | 21 - helm/DEVEL/mathml_editor/test/Makefile.in | 396 - helm/DEVEL/mathml_editor/test/aux.cc | 261 - helm/DEVEL/mathml_editor/test/editor.cc | 192 - helm/DEVEL/mathml_editor/test/guiGTK.c | 685 - helm/DEVEL/mathml_editor/test/guiGTK.h | 59 - helm/DEVEL/mathml_editor/textomml/.cvsignore | 6 - helm/DEVEL/mathml_editor/textomml/Makefile.am | 17 - .../mathml_editor/textomml/config.dirs.in | 1 - helm/DEVEL/mathml_editor/textomml/main.cc | 192 - helm/DEVEL/mathml_editor/xsl/.cvsignore | 2 - helm/DEVEL/mathml_editor/xsl/Makefile.am | 2 - helm/DEVEL/mathml_editor/xsl/d-xsl.xsl | 159 - helm/DEVEL/mathml_editor/xsl/tml-litex.xsl | 158 - helm/DEVEL/mathml_editor/xsl/tml-mmlp.xsl | 1159 - helm/DEVEL/mathml_editor/xsl/tml-tex.xsl | 161 - helm/DEVEL/mathml_editor/xsl/tml-texid.xsl | 123 - helm/DEVEL/mlminidom/.cvsignore | 8 - helm/DEVEL/mlminidom/.depend | 7 - helm/DEVEL/mlminidom/AUTHORS | 3 - helm/DEVEL/mlminidom/COPYING | 340 - helm/DEVEL/mlminidom/ChangeLog | 0 helm/DEVEL/mlminidom/META.in | 5 - helm/DEVEL/mlminidom/Makefile.in | 96 - helm/DEVEL/mlminidom/NEWS | 0 helm/DEVEL/mlminidom/README | 9 - helm/DEVEL/mlminidom/configure.in | 49 - helm/DEVEL/mlminidom/debian/changelog | 47 - helm/DEVEL/mlminidom/debian/control | 13 - helm/DEVEL/mlminidom/debian/copyright | 32 - helm/DEVEL/mlminidom/debian/dirs | 1 - helm/DEVEL/mlminidom/debian/docs | 2 - helm/DEVEL/mlminidom/debian/examples | 1 - helm/DEVEL/mlminidom/debian/rules | 91 - helm/DEVEL/mlminidom/minidom.ml | 81 - helm/DEVEL/mlminidom/minidom.mli | 70 - helm/DEVEL/mlminidom/ml_minidom.c | 350 - helm/DEVEL/mlminidom/ml_minidom.h | 38 - helm/DEVEL/mlminidom/mlminidom.spec.in | 27 - helm/DEVEL/mlminidom/ominidom.ml | 180 - helm/DEVEL/mlminidom/ominidom.mli | 87 - helm/DEVEL/mlminidom/test.ml | 106 - helm/DEVEL/mlminidom/test.xml | 505 - helm/DEVEL/ocaml-http/.cvsignore | 8 - helm/DEVEL/ocaml-http/.depend | 42 - helm/DEVEL/ocaml-http/.ocamlinit | 1 - helm/DEVEL/ocaml-http/INSTALL | 37 - helm/DEVEL/ocaml-http/LICENSE | 20 - helm/DEVEL/ocaml-http/META.in | 8 - helm/DEVEL/ocaml-http/Makefile | 124 - helm/DEVEL/ocaml-http/Makefile.defs | 25 - helm/DEVEL/ocaml-http/Makefile.overrides | 2 - helm/DEVEL/ocaml-http/README | 10 - helm/DEVEL/ocaml-http/TODO | 2 - helm/DEVEL/ocaml-http/debian/changelog | 63 - helm/DEVEL/ocaml-http/debian/control | 19 - helm/DEVEL/ocaml-http/debian/copyright | 13 - helm/DEVEL/ocaml-http/debian/dirs | 1 - helm/DEVEL/ocaml-http/debian/docs | 2 - helm/DEVEL/ocaml-http/debian/examples | 1 - helm/DEVEL/ocaml-http/debian/rules | 48 - helm/DEVEL/ocaml-http/doc/dot/.cvsignore | 2 - helm/DEVEL/ocaml-http/doc/html/.cvsignore | 2 - helm/DEVEL/ocaml-http/doc/latex/.cvsignore | 1 - helm/DEVEL/ocaml-http/examples/.cvsignore | 5 - helm/DEVEL/ocaml-http/examples/Makefile | 31 - .../ocaml-http/examples/always_ok_daemon.ml | 25 - helm/DEVEL/ocaml-http/examples/chdir.ml | 27 - .../ocaml-http/examples/client_address.ml | 34 - .../ocaml-http/examples/damned_recursion.ml | 58 - helm/DEVEL/ocaml-http/examples/dont_fork.ml | 25 - helm/DEVEL/ocaml-http/examples/dump_args.ml | 46 - helm/DEVEL/ocaml-http/examples/highlander.ml | 54 - helm/DEVEL/ocaml-http/examples/obj_foo.ml | 27 - helm/DEVEL/ocaml-http/examples/oo_daemon.ml | 44 - helm/DEVEL/ocaml-http/examples/threads.ml | 47 - helm/DEVEL/ocaml-http/examples/timeout.ml | 26 - helm/DEVEL/ocaml-http/examples/webfsd.ml | 40 - helm/DEVEL/ocaml-http/http_common.ml | 162 - helm/DEVEL/ocaml-http/http_common.mli | 80 - helm/DEVEL/ocaml-http/http_constants.ml | 30 - helm/DEVEL/ocaml-http/http_constants.mli | 41 - helm/DEVEL/ocaml-http/http_daemon.ml | 472 - helm/DEVEL/ocaml-http/http_daemon.mli | 158 - helm/DEVEL/ocaml-http/http_message.ml | 118 - helm/DEVEL/ocaml-http/http_message.mli | 130 - helm/DEVEL/ocaml-http/http_misc.ml | 139 - helm/DEVEL/ocaml-http/http_misc.mli | 85 - helm/DEVEL/ocaml-http/http_parser.ml | 147 - helm/DEVEL/ocaml-http/http_parser.mli | 62 - helm/DEVEL/ocaml-http/http_parser_sanity.ml | 112 - helm/DEVEL/ocaml-http/http_parser_sanity.mli | 46 - helm/DEVEL/ocaml-http/http_request.ml | 128 - helm/DEVEL/ocaml-http/http_request.mli | 29 - helm/DEVEL/ocaml-http/http_response.ml | 118 - helm/DEVEL/ocaml-http/http_response.mli | 33 - helm/DEVEL/ocaml-http/http_tcp_server.ml | 169 - helm/DEVEL/ocaml-http/http_tcp_server.mli | 39 - .../ocaml-http/http_threaded_tcp_server.mli | 26 - helm/DEVEL/ocaml-http/http_types.ml | 385 - helm/DEVEL/ocaml-http/mt/.cvsignore | 6 - .../ocaml-http/mt/http_threaded_tcp_server.ml | 23 - helm/DEVEL/ocaml-http/non_mt/.cvsignore | 6 - .../non_mt/http_threaded_tcp_server.ml | 26 - helm/DEVEL/ocaml-http/tophttp | 5 - helm/DEVEL/pxp/.cvsignore | 7 - helm/DEVEL/pxp/findlib-0.4.tar.gz | Bin 92356 -> 0 bytes helm/DEVEL/pxp/netstring-0.9.3.tar.gz | Bin 132893 -> 0 bytes helm/DEVEL/pxp/netstring/.cvsignore | 7 - helm/DEVEL/pxp/netstring/LICENSE | 21 - helm/DEVEL/pxp/netstring/META | 54 - helm/DEVEL/pxp/netstring/Makefile | 151 - helm/DEVEL/pxp/netstring/RELEASE | 1 - helm/DEVEL/pxp/netstring/base64.ml | 24 - helm/DEVEL/pxp/netstring/base64.mli | 36 - helm/DEVEL/pxp/netstring/cgi.ml | 645 - helm/DEVEL/pxp/netstring/cgi.mli | 419 - helm/DEVEL/pxp/netstring/compat-base64/META | 3 - helm/DEVEL/pxp/netstring/compat-cgi/META | 3 - helm/DEVEL/pxp/netstring/depend | 36 - helm/DEVEL/pxp/netstring/depend.pkg | 0 helm/DEVEL/pxp/netstring/doc/ABOUT-FINDLIB | 52 - .../DEVEL/pxp/netstring/doc/ABOUT-FINDLIB.xml | 61 - helm/DEVEL/pxp/netstring/doc/INSTALL | 128 - helm/DEVEL/pxp/netstring/doc/INSTALL.xml | 153 - helm/DEVEL/pxp/netstring/doc/Makefile | 22 - helm/DEVEL/pxp/netstring/doc/README | 212 - helm/DEVEL/pxp/netstring/doc/README.xml | 244 - helm/DEVEL/pxp/netstring/mimestring.ml | 1035 - helm/DEVEL/pxp/netstring/mimestring.mli | 683 - helm/DEVEL/pxp/netstring/netbuffer.ml | 145 - helm/DEVEL/pxp/netstring/netbuffer.mli | 93 - helm/DEVEL/pxp/netstring/netconversion.ml | 864 - helm/DEVEL/pxp/netstring/netconversion.mli | 241 - helm/DEVEL/pxp/netstring/netencoding.ml | 903 - helm/DEVEL/pxp/netstring/netencoding.mli | 271 - helm/DEVEL/pxp/netstring/nethtml.ml | 276 - helm/DEVEL/pxp/netstring/nethtml.mli | 72 - helm/DEVEL/pxp/netstring/nethtml_scanner.mll | 128 - helm/DEVEL/pxp/netstring/netmappings.ml | 38 - helm/DEVEL/pxp/netstring/netmappings.mli | 115 - helm/DEVEL/pxp/netstring/netmappings_iso.ml | 54 - helm/DEVEL/pxp/netstring/netmappings_other.ml | 154 - helm/DEVEL/pxp/netstring/netstream.ml | 162 - helm/DEVEL/pxp/netstring/netstream.mli | 118 - helm/DEVEL/pxp/netstring/netstring.cma | Bin 139420 -> 0 bytes helm/DEVEL/pxp/netstring/netstring.cmxa | Bin 4955 -> 0 bytes helm/DEVEL/pxp/netstring/netstring_mt.ml | 37 - helm/DEVEL/pxp/netstring/netstring_mt.mli | 25 - helm/DEVEL/pxp/netstring/netstring_str.ml | 241 - helm/DEVEL/pxp/netstring/netstring_str.mli | 82 - helm/DEVEL/pxp/netstring/netstring_top.ml | 34 - helm/DEVEL/pxp/netstring/netstring_top.mli | 21 - helm/DEVEL/pxp/netstring/neturl.ml | 1302 - helm/DEVEL/pxp/netstring/neturl.mli | 460 - helm/DEVEL/pxp/netstring/tests/.cvsignore | 7 - helm/DEVEL/pxp/netstring/tests/Makefile | 26 - helm/DEVEL/pxp/netstring/tests/test_cgi.ml | 423 - .../pxp/netstring/tests/test_encoding.cgi | 72 - .../pxp/netstring/tests/test_mimestring.ml | 589 - .../pxp/netstring/tests/test_netencoding.ml | 223 - helm/DEVEL/pxp/netstring/tests/test_neturl.ml | 969 - helm/DEVEL/pxp/netstring/tests/test_recode.ml | 169 - helm/DEVEL/pxp/netstring/tools/Makefile | 10 - .../tools/unimap_to_ocaml/.cvsignore | 7 - .../netstring/tools/unimap_to_ocaml/Makefile | 15 - .../tools/unimap_to_ocaml/unimap_to_ocaml.ml | 201 - helm/DEVEL/pxp/ocaml-findlib-0.4.0-1.i386.rpm | Bin 190472 -> 0 bytes helm/DEVEL/pxp/ocaml-findlib-0.4.0-1.src.rpm | Bin 95910 -> 0 bytes helm/DEVEL/pxp/ocaml-findlib.spec | 80 - .../pxp/ocaml-netstring-0.9.3-2.i386.rpm | Bin 240642 -> 0 bytes .../DEVEL/pxp/ocaml-netstring-0.9.3-2.src.rpm | Bin 134883 -> 0 bytes helm/DEVEL/pxp/ocaml-netstring.spec | 73 - helm/DEVEL/pxp/ocaml-pxp-1.0-1.i386.rpm | Bin 986080 -> 0 bytes helm/DEVEL/pxp/ocaml-pxp-1.0-1.src.rpm | Bin 484134 -> 0 bytes helm/DEVEL/pxp/ocaml-pxp.spec | 73 - helm/DEVEL/pxp/pxp-1.0.tar.gz | Bin 484568 -> 0 bytes helm/DEVEL/pxp/pxp/.cvsignore | 4 - helm/DEVEL/pxp/pxp/LICENSE | 22 - helm/DEVEL/pxp/pxp/META | 20 - helm/DEVEL/pxp/pxp/Makefile | 105 - helm/DEVEL/pxp/pxp/Makefile.code | 96 - helm/DEVEL/pxp/pxp/Makefile.conf | 37 - helm/DEVEL/pxp/pxp/RELEASE | 1 - helm/DEVEL/pxp/pxp/compatibility/.cvsignore | 4 - helm/DEVEL/pxp/pxp/compatibility/META | 6 - helm/DEVEL/pxp/pxp/compatibility/Makefile | 40 - .../DEVEL/pxp/pxp/compatibility/Makefile.code | 50 - .../DEVEL/pxp/pxp/compatibility/Makefile.conf | 9 - helm/DEVEL/pxp/pxp/compatibility/README | 21 - .../pxp/pxp/compatibility/markup_document.ml | 374 - .../pxp/pxp/compatibility/markup_document.mli | 420 - .../DEVEL/pxp/pxp/compatibility/markup_dtd.ml | 36 - .../pxp/pxp/compatibility/markup_dtd.mli | 108 - .../pxp/pxp/compatibility/markup_reader.ml | 119 - .../pxp/pxp/compatibility/markup_reader.mli | 141 - .../pxp/pxp/compatibility/markup_types.ml | 103 - .../pxp/pxp/compatibility/markup_types.mli | 125 - .../pxp/pxp/compatibility/markup_yacc.ml | 245 - .../pxp/pxp/compatibility/markup_yacc.mli | 233 - helm/DEVEL/pxp/pxp/doc/ABOUT-FINDLIB | 52 - helm/DEVEL/pxp/pxp/doc/ABOUT-FINDLIB.xml | 61 - helm/DEVEL/pxp/pxp/doc/EXTENSIONS | 50 - helm/DEVEL/pxp/pxp/doc/EXTENSIONS.xml | 62 - helm/DEVEL/pxp/pxp/doc/INSTALL | 154 - helm/DEVEL/pxp/pxp/doc/INSTALL.xml | 171 - helm/DEVEL/pxp/pxp/doc/Makefile | 43 - helm/DEVEL/pxp/pxp/doc/PRERELEASE | 103 - helm/DEVEL/pxp/pxp/doc/PRERELEASE.xml | 116 - helm/DEVEL/pxp/pxp/doc/README | 247 - helm/DEVEL/pxp/pxp/doc/README.xml | 423 - helm/DEVEL/pxp/pxp/doc/SPEC | 185 - helm/DEVEL/pxp/pxp/doc/SPEC.xml | 226 - helm/DEVEL/pxp/pxp/doc/design.txt | 340 - helm/DEVEL/pxp/pxp/doc/dist-common.xml | 123 - helm/DEVEL/pxp/pxp/doc/manual/Makefile | 82 - helm/DEVEL/pxp/pxp/doc/manual/html/TIMESTAMP | 0 helm/DEVEL/pxp/pxp/doc/manual/html/c1567.html | 434 - helm/DEVEL/pxp/pxp/doc/manual/html/c36.html | 533 - helm/DEVEL/pxp/pxp/doc/manual/html/c533.html | 234 - helm/DEVEL/pxp/pxp/doc/manual/html/c893.html | 349 - helm/DEVEL/pxp/pxp/doc/manual/html/index.html | 330 - helm/DEVEL/pxp/pxp/doc/manual/html/markup.css | 4 - helm/DEVEL/pxp/pxp/doc/manual/html/p34.html | 167 - helm/DEVEL/pxp/pxp/doc/manual/html/pic/done | 0 .../doc/manual/html/pic/extension_general.gif | Bin 2098 -> 0 bytes .../pxp/pxp/doc/manual/html/pic/node_add.gif | Bin 4334 -> 0 bytes .../pxp/doc/manual/html/pic/node_clone.gif | Bin 4031 -> 0 bytes .../pxp/doc/manual/html/pic/node_delete.gif | Bin 3459 -> 0 bytes .../pxp/doc/manual/html/pic/node_general.gif | Bin 1294 -> 0 bytes .../pxp/pxp/doc/manual/html/pic/node_term.gif | Bin 4284 -> 0 bytes helm/DEVEL/pxp/pxp/doc/manual/html/x107.html | 1694 -- helm/DEVEL/pxp/pxp/doc/manual/html/x1439.html | 464 - helm/DEVEL/pxp/pxp/doc/manual/html/x1496.html | 442 - helm/DEVEL/pxp/pxp/doc/manual/html/x1629.html | 895 - helm/DEVEL/pxp/pxp/doc/manual/html/x1812.html | 517 - helm/DEVEL/pxp/pxp/doc/manual/html/x1818.html | 779 - helm/DEVEL/pxp/pxp/doc/manual/html/x1965.html | 152 - helm/DEVEL/pxp/pxp/doc/manual/html/x468.html | 474 - helm/DEVEL/pxp/pxp/doc/manual/html/x550.html | 765 - helm/DEVEL/pxp/pxp/doc/manual/html/x675.html | 538 - helm/DEVEL/pxp/pxp/doc/manual/html/x738.html | 1036 - helm/DEVEL/pxp/pxp/doc/manual/html/x939.html | 2337 -- helm/DEVEL/pxp/pxp/doc/manual/ps/markup.ps | 8866 ------- helm/DEVEL/pxp/pxp/doc/manual/src/dtd.mli.ent | 374 - helm/DEVEL/pxp/pxp/doc/manual/src/getcode.ml | 56 - helm/DEVEL/pxp/pxp/doc/manual/src/markup.css | 4 - helm/DEVEL/pxp/pxp/doc/manual/src/markup.dsl | 74 - helm/DEVEL/pxp/pxp/doc/manual/src/markup.sgml | 5109 ---- .../doc/manual/src/pic/extension_general.fig | 47 - .../pxp/pxp/doc/manual/src/pic/node_add.fig | 107 - .../pxp/pxp/doc/manual/src/pic/node_clone.fig | 111 - .../pxp/doc/manual/src/pic/node_delete.fig | 96 - .../pxp/doc/manual/src/pic/node_general.fig | 35 - .../pxp/pxp/doc/manual/src/pic/node_term.fig | 63 - helm/DEVEL/pxp/pxp/doc/manual/src/readme.ent | 364 - .../DEVEL/pxp/pxp/doc/manual/src/yacc.mli.ent | 376 - helm/DEVEL/pxp/pxp/examples/Makefile | 22 - helm/DEVEL/pxp/pxp/examples/readme/.cvsignore | 10 - helm/DEVEL/pxp/pxp/examples/readme/Makefile | 34 - .../pxp/pxp/examples/readme/Makefile.code | 57 - helm/DEVEL/pxp/pxp/examples/readme/main.ml | 108 - helm/DEVEL/pxp/pxp/examples/readme/readme.dtd | 38 - helm/DEVEL/pxp/pxp/examples/readme/to_html.ml | 432 - helm/DEVEL/pxp/pxp/examples/readme/to_text.ml | 599 - .../examples/simple_transformation/Makefile | 21 - .../pxp/examples/simple_transformation/README | 17 - .../examples/simple_transformation/delcol.ml | 69 - .../examples/simple_transformation/print.ml | 60 - .../examples/simple_transformation/record.dtd | 5 - .../examples/simple_transformation/sample.xml | 18 - .../examples/simple_transformation/sort.ml | 83 - .../pxp/pxp/examples/validate/.cvsignore | 13 - helm/DEVEL/pxp/pxp/examples/validate/Makefile | 28 - .../pxp/pxp/examples/validate/validate.ml | 126 - .../pxp/pxp/examples/xmlforms/.cvsignore | 13 - helm/DEVEL/pxp/pxp/examples/xmlforms/Makefile | 33 - .../pxp/pxp/examples/xmlforms/Makefile.code | 57 - helm/DEVEL/pxp/pxp/examples/xmlforms/README | 61 - .../DEVEL/pxp/pxp/examples/xmlforms/ds_app.ml | 107 - .../pxp/pxp/examples/xmlforms/ds_context.ml | 238 - .../pxp/pxp/examples/xmlforms/ds_style.ml | 778 - .../pxp/pxp/examples/xmlforms/styles/Makefile | 16 - .../xmlforms/styles/address-style.xml | 361 - .../examples/xmlforms/styles/crazy-style.xml | 62 - .../examples/xmlforms/styles/ds-object.dtd | 8 - .../pxp/examples/xmlforms/styles/ds-style.dtd | 183 - .../examples/xmlforms/styles/mini-style.xml | 9 - helm/DEVEL/pxp/pxp/lexers/Makefile | 34 - helm/DEVEL/pxp/pxp/lexers/Makefile.code | 54 - helm/DEVEL/pxp/pxp/lexers/Makefile.generate | 67 - helm/DEVEL/pxp/pxp/lexers/objects | 0 .../pxp/lexers/open_pxp_lex_aux_iso88591.src | 19 - .../pxp/pxp/lexers/open_pxp_lex_aux_utf8.src | 19 - .../pxp/lexers/open_pxp_lex_misc_iso88591.src | 19 - .../pxp/pxp/lexers/open_pxp_lex_misc_utf8.src | 19 - helm/DEVEL/pxp/pxp/lexers/pxp_lex_aux.src | 82 - .../pxp/pxp/lexers/pxp_lex_aux_iso88591.ml | 97 - helm/DEVEL/pxp/pxp/lexers/pxp_lex_aux_utf8.ml | 95 - helm/DEVEL/pxp/pxp/lexers/pxp_lex_content.src | 107 - .../pxp/pxp/lexers/pxp_lex_content_string.src | 71 - .../pxp/pxp/lexers/pxp_lex_declaration.src | 138 - .../pxp/pxp/lexers/pxp_lex_defs_drv_utf8.def | 160 - .../pxp/pxp/lexers/pxp_lex_defs_generic.def | 122 - .../pxp/pxp/lexers/pxp_lex_defs_iso88591.def | 85 - .../DEVEL/pxp/pxp/lexers/pxp_lex_document.src | 70 - .../pxp/pxp/lexers/pxp_lex_document_type.src | 72 - .../pxp/pxp/lexers/pxp_lex_dtd_string.src | 70 - helm/DEVEL/pxp/pxp/lexers/pxp_lex_misc.src | 146 - .../pxp/pxp/lexers/pxp_lex_name_string.src | 77 - .../pxp/pxp/lexers/pxp_lex_within_tag.src | 69 - helm/DEVEL/pxp/pxp/m2parsergen/Makefile | 62 - helm/DEVEL/pxp/pxp/m2parsergen/README | 319 - helm/DEVEL/pxp/pxp/m2parsergen/ast.ml | 75 - helm/DEVEL/pxp/pxp/m2parsergen/generator.ml | 920 - helm/DEVEL/pxp/pxp/m2parsergen/lexer.mll | 93 - helm/DEVEL/pxp/pxp/m2parsergen/parser.mly | 194 - helm/DEVEL/pxp/pxp/m2parsergen/x.m2y | 45 - helm/DEVEL/pxp/pxp/pxp_aux.ml | 651 - helm/DEVEL/pxp/pxp/pxp_codewriter.ml | 518 - helm/DEVEL/pxp/pxp/pxp_codewriter.mli | 94 - helm/DEVEL/pxp/pxp/pxp_dfa.ml | 271 - helm/DEVEL/pxp/pxp/pxp_dfa.mli | 77 - helm/DEVEL/pxp/pxp/pxp_document.ml | 1985 -- helm/DEVEL/pxp/pxp/pxp_document.mli | 838 - helm/DEVEL/pxp/pxp/pxp_dtd.ml | 1090 - helm/DEVEL/pxp/pxp/pxp_dtd.mli | 476 - helm/DEVEL/pxp/pxp/pxp_entity.ml | 1292 - helm/DEVEL/pxp/pxp/pxp_lexer_types.ml | 248 - helm/DEVEL/pxp/pxp/pxp_lexer_types.mli | 188 - helm/DEVEL/pxp/pxp/pxp_lexers.ml | 90 - helm/DEVEL/pxp/pxp/pxp_lexers.mli | 51 - helm/DEVEL/pxp/pxp/pxp_reader.ml | 730 - helm/DEVEL/pxp/pxp/pxp_reader.mli | 388 - helm/DEVEL/pxp/pxp/pxp_types.ml | 212 - helm/DEVEL/pxp/pxp/pxp_types.mli | 224 - helm/DEVEL/pxp/pxp/pxp_utf8.ml | 48 - helm/DEVEL/pxp/pxp/pxp_utf8.mli | 22 - helm/DEVEL/pxp/pxp/pxp_yacc.m2y | 2528 -- helm/DEVEL/pxp/pxp/pxp_yacc.mli | 488 - helm/DEVEL/pxp/pxp/rtests/MISSING_TESTS | 6 - helm/DEVEL/pxp/pxp/rtests/Makefile | 32 - helm/DEVEL/pxp/pxp/rtests/README | 16 - helm/DEVEL/pxp/pxp/rtests/canonxml/Makefile | 27 - helm/DEVEL/pxp/pxp/rtests/canonxml/README | 20 - .../canonxml/data_jclark_valid/ext-sa/001.ent | 1 - .../canonxml/data_jclark_valid/ext-sa/001.xml | 5 - .../canonxml/data_jclark_valid/ext-sa/002.ent | 1 - .../canonxml/data_jclark_valid/ext-sa/002.xml | 5 - .../canonxml/data_jclark_valid/ext-sa/003.ent | 0 .../canonxml/data_jclark_valid/ext-sa/003.xml | 5 - .../canonxml/data_jclark_valid/ext-sa/004.ent | 1 - .../canonxml/data_jclark_valid/ext-sa/004.xml | 5 - .../canonxml/data_jclark_valid/ext-sa/005.ent | 1 - .../canonxml/data_jclark_valid/ext-sa/005.xml | 6 - .../canonxml/data_jclark_valid/ext-sa/006.ent | 4 - .../canonxml/data_jclark_valid/ext-sa/006.xml | 6 - .../canonxml/data_jclark_valid/ext-sa/007.ent | Bin 4 -> 0 bytes .../canonxml/data_jclark_valid/ext-sa/007.xml | 5 - .../canonxml/data_jclark_valid/ext-sa/008.ent | Bin 54 -> 0 bytes .../canonxml/data_jclark_valid/ext-sa/008.xml | 5 - .../canonxml/data_jclark_valid/ext-sa/009.ent | 1 - .../canonxml/data_jclark_valid/ext-sa/009.xml | 5 - .../canonxml/data_jclark_valid/ext-sa/010.ent | 0 .../canonxml/data_jclark_valid/ext-sa/010.xml | 5 - .../canonxml/data_jclark_valid/ext-sa/011.ent | 1 - .../canonxml/data_jclark_valid/ext-sa/011.xml | 5 - .../canonxml/data_jclark_valid/ext-sa/012.ent | 1 - .../canonxml/data_jclark_valid/ext-sa/012.xml | 9 - .../canonxml/data_jclark_valid/ext-sa/013.ent | 1 - .../canonxml/data_jclark_valid/ext-sa/013.xml | 10 - .../canonxml/data_jclark_valid/ext-sa/014.ent | Bin 12 -> 0 bytes .../canonxml/data_jclark_valid/ext-sa/014.xml | 5 - .../data_jclark_valid/ext-sa/out/001.xml | 1 - .../data_jclark_valid/ext-sa/out/002.xml | 1 - .../data_jclark_valid/ext-sa/out/003.xml | 1 - .../data_jclark_valid/ext-sa/out/004.xml | 1 - .../data_jclark_valid/ext-sa/out/005.xml | 1 - .../data_jclark_valid/ext-sa/out/006.xml | 1 - .../data_jclark_valid/ext-sa/out/007.xml | 1 - .../data_jclark_valid/ext-sa/out/008.xml | 1 - .../data_jclark_valid/ext-sa/out/009.xml | 1 - .../data_jclark_valid/ext-sa/out/010.xml | 1 - .../data_jclark_valid/ext-sa/out/011.xml | 1 - .../data_jclark_valid/ext-sa/out/012.xml | 1 - .../data_jclark_valid/ext-sa/out/013.xml | 1 - .../data_jclark_valid/ext-sa/out/014.xml | 1 - .../canonxml/data_jclark_valid/not-sa/001.ent | 0 .../canonxml/data_jclark_valid/not-sa/001.xml | 4 - .../canonxml/data_jclark_valid/not-sa/002.ent | 1 - .../canonxml/data_jclark_valid/not-sa/002.xml | 4 - .../data_jclark_valid/not-sa/003-1.ent | 3 - .../data_jclark_valid/not-sa/003-2.ent | 0 .../canonxml/data_jclark_valid/not-sa/003.xml | 2 - .../data_jclark_valid/not-sa/004-1.ent | 4 - .../data_jclark_valid/not-sa/004-2.ent | 1 - .../canonxml/data_jclark_valid/not-sa/004.xml | 2 - .../data_jclark_valid/not-sa/005-1.ent | 3 - .../data_jclark_valid/not-sa/005-2.ent | 1 - .../canonxml/data_jclark_valid/not-sa/005.xml | 2 - .../canonxml/data_jclark_valid/not-sa/006.ent | 2 - .../canonxml/data_jclark_valid/not-sa/006.xml | 4 - .../canonxml/data_jclark_valid/not-sa/007.ent | 2 - .../canonxml/data_jclark_valid/not-sa/007.xml | 2 - .../canonxml/data_jclark_valid/not-sa/008.ent | 2 - .../canonxml/data_jclark_valid/not-sa/008.xml | 2 - .../canonxml/data_jclark_valid/not-sa/009.ent | 2 - .../canonxml/data_jclark_valid/not-sa/009.xml | 4 - .../canonxml/data_jclark_valid/not-sa/010.ent | 2 - .../canonxml/data_jclark_valid/not-sa/010.xml | 4 - .../canonxml/data_jclark_valid/not-sa/011.ent | 2 - .../canonxml/data_jclark_valid/not-sa/011.xml | 5 - .../canonxml/data_jclark_valid/not-sa/012.ent | 3 - .../canonxml/data_jclark_valid/not-sa/012.xml | 5 - .../canonxml/data_jclark_valid/not-sa/013.ent | 4 - .../canonxml/data_jclark_valid/not-sa/013.xml | 2 - .../canonxml/data_jclark_valid/not-sa/014.ent | 4 - .../canonxml/data_jclark_valid/not-sa/014.xml | 4 - .../canonxml/data_jclark_valid/not-sa/015.ent | 5 - .../canonxml/data_jclark_valid/not-sa/015.xml | 4 - .../canonxml/data_jclark_valid/not-sa/016.ent | 4 - .../canonxml/data_jclark_valid/not-sa/016.xml | 4 - .../canonxml/data_jclark_valid/not-sa/017.ent | 3 - .../canonxml/data_jclark_valid/not-sa/017.xml | 2 - .../canonxml/data_jclark_valid/not-sa/018.ent | 3 - .../canonxml/data_jclark_valid/not-sa/018.xml | 2 - .../canonxml/data_jclark_valid/not-sa/019.ent | 3 - .../canonxml/data_jclark_valid/not-sa/019.xml | 2 - .../canonxml/data_jclark_valid/not-sa/020.ent | 3 - .../canonxml/data_jclark_valid/not-sa/020.xml | 2 - .../canonxml/data_jclark_valid/not-sa/021.ent | 3 - .../canonxml/data_jclark_valid/not-sa/021.xml | 2 - .../canonxml/data_jclark_valid/not-sa/022.ent | 3 - .../canonxml/data_jclark_valid/not-sa/022.xml | 2 - .../canonxml/data_jclark_valid/not-sa/023.ent | 5 - .../canonxml/data_jclark_valid/not-sa/023.xml | 2 - .../canonxml/data_jclark_valid/not-sa/024.ent | 4 - .../canonxml/data_jclark_valid/not-sa/024.xml | 2 - .../canonxml/data_jclark_valid/not-sa/025.ent | 5 - .../canonxml/data_jclark_valid/not-sa/025.xml | 2 - .../canonxml/data_jclark_valid/not-sa/026.ent | 1 - .../canonxml/data_jclark_valid/not-sa/026.xml | 7 - .../canonxml/data_jclark_valid/not-sa/027.ent | 2 - .../canonxml/data_jclark_valid/not-sa/027.xml | 2 - .../canonxml/data_jclark_valid/not-sa/028.ent | 2 - .../canonxml/data_jclark_valid/not-sa/028.xml | 2 - .../canonxml/data_jclark_valid/not-sa/029.ent | 3 - .../canonxml/data_jclark_valid/not-sa/029.xml | 2 - .../canonxml/data_jclark_valid/not-sa/030.ent | 3 - .../canonxml/data_jclark_valid/not-sa/030.xml | 2 - .../data_jclark_valid/not-sa/031-1.ent | 3 - .../data_jclark_valid/not-sa/031-2.ent | 1 - .../canonxml/data_jclark_valid/not-sa/031.xml | 2 - .../data_jclark_valid/not-sa/out/001.xml | 1 - .../data_jclark_valid/not-sa/out/002.xml | 1 - .../data_jclark_valid/not-sa/out/003.xml | 1 - .../data_jclark_valid/not-sa/out/004.xml | 1 - .../data_jclark_valid/not-sa/out/005.xml | 1 - .../data_jclark_valid/not-sa/out/006.xml | 1 - .../data_jclark_valid/not-sa/out/007.xml | 1 - .../data_jclark_valid/not-sa/out/008.xml | 1 - .../data_jclark_valid/not-sa/out/009.xml | 1 - .../data_jclark_valid/not-sa/out/010.xml | 1 - .../data_jclark_valid/not-sa/out/011.xml | 1 - .../data_jclark_valid/not-sa/out/012.xml | 1 - .../data_jclark_valid/not-sa/out/013.xml | 1 - .../data_jclark_valid/not-sa/out/014.xml | 1 - .../data_jclark_valid/not-sa/out/015.xml | 1 - .../data_jclark_valid/not-sa/out/016.xml | 1 - .../data_jclark_valid/not-sa/out/017.xml | 1 - .../data_jclark_valid/not-sa/out/018.xml | 1 - .../data_jclark_valid/not-sa/out/019.xml | 1 - .../data_jclark_valid/not-sa/out/020.xml | 1 - .../data_jclark_valid/not-sa/out/021.xml | 1 - .../data_jclark_valid/not-sa/out/022.xml | 1 - .../data_jclark_valid/not-sa/out/023.xml | 1 - .../data_jclark_valid/not-sa/out/024.xml | 1 - .../data_jclark_valid/not-sa/out/025.xml | 1 - .../data_jclark_valid/not-sa/out/026.xml | 1 - .../data_jclark_valid/not-sa/out/027.xml | 1 - .../data_jclark_valid/not-sa/out/028.xml | 1 - .../data_jclark_valid/not-sa/out/029.xml | 1 - .../data_jclark_valid/not-sa/out/030.xml | 1 - .../data_jclark_valid/not-sa/out/031.xml | 1 - .../canonxml/data_jclark_valid/sa/001.xml | 4 - .../canonxml/data_jclark_valid/sa/002.xml | 4 - .../canonxml/data_jclark_valid/sa/003.xml | 4 - .../canonxml/data_jclark_valid/sa/004.xml | 5 - .../canonxml/data_jclark_valid/sa/005.xml | 5 - .../canonxml/data_jclark_valid/sa/006.xml | 5 - .../canonxml/data_jclark_valid/sa/007.xml | 4 - .../canonxml/data_jclark_valid/sa/008.xml | 4 - .../canonxml/data_jclark_valid/sa/009.xml | 4 - .../canonxml/data_jclark_valid/sa/010.xml | 5 - .../canonxml/data_jclark_valid/sa/011.xml | 5 - .../canonxml/data_jclark_valid/sa/012.xml | 5 - .../canonxml/data_jclark_valid/sa/013.xml | 5 - .../canonxml/data_jclark_valid/sa/014.xml | 5 - .../canonxml/data_jclark_valid/sa/015.xml | 5 - .../canonxml/data_jclark_valid/sa/016.xml | 4 - .../canonxml/data_jclark_valid/sa/017.xml | 4 - .../canonxml/data_jclark_valid/sa/018.xml | 4 - .../canonxml/data_jclark_valid/sa/019.xml | 4 - .../canonxml/data_jclark_valid/sa/020.xml | 4 - .../canonxml/data_jclark_valid/sa/021.xml | 4 - .../canonxml/data_jclark_valid/sa/022.xml | 4 - .../canonxml/data_jclark_valid/sa/023.xml | 5 - .../canonxml/data_jclark_valid/sa/024.xml | 6 - .../canonxml/data_jclark_valid/sa/025.xml | 5 - .../canonxml/data_jclark_valid/sa/026.xml | 5 - .../canonxml/data_jclark_valid/sa/027.xml | 5 - .../canonxml/data_jclark_valid/sa/028.xml | 5 - .../canonxml/data_jclark_valid/sa/029.xml | 5 - .../canonxml/data_jclark_valid/sa/030.xml | 5 - .../canonxml/data_jclark_valid/sa/031.xml | 5 - .../canonxml/data_jclark_valid/sa/032.xml | 5 - .../canonxml/data_jclark_valid/sa/033.xml | 5 - .../canonxml/data_jclark_valid/sa/034.xml | 4 - .../canonxml/data_jclark_valid/sa/035.xml | 4 - .../canonxml/data_jclark_valid/sa/036.xml | 5 - .../canonxml/data_jclark_valid/sa/037.xml | 6 - .../canonxml/data_jclark_valid/sa/038.xml | 6 - .../canonxml/data_jclark_valid/sa/039.xml | 5 - .../canonxml/data_jclark_valid/sa/040.xml | 5 - .../canonxml/data_jclark_valid/sa/041.xml | 5 - .../canonxml/data_jclark_valid/sa/042.xml | 4 - .../canonxml/data_jclark_valid/sa/043.xml | 6 - .../canonxml/data_jclark_valid/sa/044.xml | 10 - .../canonxml/data_jclark_valid/sa/045.xml | 6 - .../canonxml/data_jclark_valid/sa/046.xml | 6 - .../canonxml/data_jclark_valid/sa/047.xml | 5 - .../canonxml/data_jclark_valid/sa/048.xml | 4 - .../canonxml/data_jclark_valid/sa/049.xml | Bin 124 -> 0 bytes .../canonxml/data_jclark_valid/sa/050.xml | Bin 132 -> 0 bytes .../canonxml/data_jclark_valid/sa/051.xml | Bin 140 -> 0 bytes .../canonxml/data_jclark_valid/sa/052.xml | 4 - .../canonxml/data_jclark_valid/sa/053.xml | 6 - .../canonxml/data_jclark_valid/sa/054.xml | 10 - .../canonxml/data_jclark_valid/sa/055.xml | 5 - .../canonxml/data_jclark_valid/sa/056.xml | 4 - .../canonxml/data_jclark_valid/sa/057.xml | 4 - .../canonxml/data_jclark_valid/sa/058.xml | 5 - .../canonxml/data_jclark_valid/sa/059.xml | 10 - .../canonxml/data_jclark_valid/sa/060.xml | 4 - .../canonxml/data_jclark_valid/sa/061.xml | 4 - .../canonxml/data_jclark_valid/sa/062.xml | 4 - .../canonxml/data_jclark_valid/sa/063.xml | 4 - .../canonxml/data_jclark_valid/sa/064.xml | 4 - .../canonxml/data_jclark_valid/sa/065.xml | 5 - .../canonxml/data_jclark_valid/sa/066.xml | 7 - .../canonxml/data_jclark_valid/sa/067.xml | 4 - .../canonxml/data_jclark_valid/sa/068.xml | 5 - .../canonxml/data_jclark_valid/sa/069.xml | 5 - .../canonxml/data_jclark_valid/sa/070.xml | 5 - .../canonxml/data_jclark_valid/sa/071.xml | 5 - .../canonxml/data_jclark_valid/sa/072.xml | 5 - .../canonxml/data_jclark_valid/sa/073.xml | 5 - .../canonxml/data_jclark_valid/sa/074.xml | 5 - .../canonxml/data_jclark_valid/sa/075.xml | 5 - .../canonxml/data_jclark_valid/sa/076.xml | 7 - .../canonxml/data_jclark_valid/sa/077.xml | 5 - .../canonxml/data_jclark_valid/sa/078.xml | 5 - .../canonxml/data_jclark_valid/sa/079.xml | 5 - .../canonxml/data_jclark_valid/sa/080.xml | 5 - .../canonxml/data_jclark_valid/sa/081.xml | 7 - .../canonxml/data_jclark_valid/sa/082.xml | 5 - .../canonxml/data_jclark_valid/sa/083.xml | 5 - .../canonxml/data_jclark_valid/sa/084.xml | 1 - .../canonxml/data_jclark_valid/sa/085.xml | 6 - .../canonxml/data_jclark_valid/sa/086.xml | 6 - .../canonxml/data_jclark_valid/sa/087.xml | 6 - .../canonxml/data_jclark_valid/sa/088.xml | 5 - .../canonxml/data_jclark_valid/sa/089.xml | 5 - .../canonxml/data_jclark_valid/sa/090.xml | 7 - .../canonxml/data_jclark_valid/sa/091.xml | 7 - .../canonxml/data_jclark_valid/sa/092.xml | 10 - .../canonxml/data_jclark_valid/sa/093.xml | 7 - .../canonxml/data_jclark_valid/sa/094.xml | 6 - .../canonxml/data_jclark_valid/sa/095.xml | 6 - .../canonxml/data_jclark_valid/sa/096.xml | 5 - .../canonxml/data_jclark_valid/sa/097.ent | 1 - .../canonxml/data_jclark_valid/sa/097.xml | 8 - .../canonxml/data_jclark_valid/sa/098.xml | 5 - .../canonxml/data_jclark_valid/sa/099.xml | 5 - .../canonxml/data_jclark_valid/sa/100.xml | 5 - .../canonxml/data_jclark_valid/sa/101.xml | 5 - .../canonxml/data_jclark_valid/sa/102.xml | 5 - .../canonxml/data_jclark_valid/sa/103.xml | 4 - .../canonxml/data_jclark_valid/sa/104.xml | 5 - .../canonxml/data_jclark_valid/sa/105.xml | 5 - .../canonxml/data_jclark_valid/sa/106.xml | 5 - .../canonxml/data_jclark_valid/sa/107.xml | 5 - .../canonxml/data_jclark_valid/sa/108.xml | 7 - .../canonxml/data_jclark_valid/sa/109.xml | 5 - .../canonxml/data_jclark_valid/sa/110.xml | 6 - .../canonxml/data_jclark_valid/sa/111.xml | 5 - .../canonxml/data_jclark_valid/sa/112.xml | 5 - .../canonxml/data_jclark_valid/sa/113.xml | 5 - .../canonxml/data_jclark_valid/sa/114.xml | 5 - .../canonxml/data_jclark_valid/sa/115.xml | 6 - .../canonxml/data_jclark_valid/sa/116.xml | 5 - .../canonxml/data_jclark_valid/sa/117.xml | 5 - .../canonxml/data_jclark_valid/sa/118.xml | 5 - .../canonxml/data_jclark_valid/sa/119.xml | 4 - .../canonxml/data_jclark_valid/sa/out/001.xml | 1 - .../canonxml/data_jclark_valid/sa/out/002.xml | 1 - .../canonxml/data_jclark_valid/sa/out/003.xml | 1 - .../canonxml/data_jclark_valid/sa/out/004.xml | 1 - .../canonxml/data_jclark_valid/sa/out/005.xml | 1 - .../canonxml/data_jclark_valid/sa/out/006.xml | 1 - .../canonxml/data_jclark_valid/sa/out/007.xml | 1 - .../canonxml/data_jclark_valid/sa/out/008.xml | 1 - .../canonxml/data_jclark_valid/sa/out/009.xml | 1 - .../canonxml/data_jclark_valid/sa/out/010.xml | 1 - .../canonxml/data_jclark_valid/sa/out/011.xml | 1 - .../canonxml/data_jclark_valid/sa/out/012.xml | 1 - .../canonxml/data_jclark_valid/sa/out/013.xml | 1 - .../canonxml/data_jclark_valid/sa/out/014.xml | 1 - .../canonxml/data_jclark_valid/sa/out/015.xml | 1 - .../canonxml/data_jclark_valid/sa/out/016.xml | 1 - .../canonxml/data_jclark_valid/sa/out/017.xml | 1 - .../canonxml/data_jclark_valid/sa/out/018.xml | 1 - .../canonxml/data_jclark_valid/sa/out/019.xml | 1 - .../canonxml/data_jclark_valid/sa/out/020.xml | 1 - .../canonxml/data_jclark_valid/sa/out/021.xml | 1 - .../canonxml/data_jclark_valid/sa/out/022.xml | 1 - .../canonxml/data_jclark_valid/sa/out/023.xml | 1 - .../canonxml/data_jclark_valid/sa/out/024.xml | 1 - .../canonxml/data_jclark_valid/sa/out/025.xml | 1 - .../canonxml/data_jclark_valid/sa/out/026.xml | 1 - .../canonxml/data_jclark_valid/sa/out/027.xml | 1 - .../canonxml/data_jclark_valid/sa/out/028.xml | 1 - .../canonxml/data_jclark_valid/sa/out/029.xml | 1 - .../canonxml/data_jclark_valid/sa/out/030.xml | 1 - .../canonxml/data_jclark_valid/sa/out/031.xml | 1 - .../canonxml/data_jclark_valid/sa/out/032.xml | 1 - .../canonxml/data_jclark_valid/sa/out/033.xml | 1 - .../canonxml/data_jclark_valid/sa/out/034.xml | 1 - .../canonxml/data_jclark_valid/sa/out/035.xml | 1 - .../canonxml/data_jclark_valid/sa/out/036.xml | 1 - .../canonxml/data_jclark_valid/sa/out/037.xml | 1 - .../canonxml/data_jclark_valid/sa/out/038.xml | 1 - .../canonxml/data_jclark_valid/sa/out/039.xml | 1 - .../canonxml/data_jclark_valid/sa/out/040.xml | 1 - .../canonxml/data_jclark_valid/sa/out/041.xml | 1 - .../canonxml/data_jclark_valid/sa/out/042.xml | 1 - .../canonxml/data_jclark_valid/sa/out/043.xml | 1 - .../canonxml/data_jclark_valid/sa/out/044.xml | 1 - .../canonxml/data_jclark_valid/sa/out/045.xml | 1 - .../canonxml/data_jclark_valid/sa/out/046.xml | 1 - .../canonxml/data_jclark_valid/sa/out/047.xml | 1 - .../canonxml/data_jclark_valid/sa/out/048.xml | 1 - .../canonxml/data_jclark_valid/sa/out/049.xml | 1 - .../canonxml/data_jclark_valid/sa/out/050.xml | 1 - .../canonxml/data_jclark_valid/sa/out/051.xml | 1 - .../canonxml/data_jclark_valid/sa/out/052.xml | 1 - .../canonxml/data_jclark_valid/sa/out/053.xml | 1 - .../canonxml/data_jclark_valid/sa/out/054.xml | 1 - .../canonxml/data_jclark_valid/sa/out/055.xml | 1 - .../canonxml/data_jclark_valid/sa/out/056.xml | 1 - .../canonxml/data_jclark_valid/sa/out/057.xml | 1 - .../canonxml/data_jclark_valid/sa/out/058.xml | 1 - .../canonxml/data_jclark_valid/sa/out/059.xml | 1 - .../canonxml/data_jclark_valid/sa/out/060.xml | 1 - .../canonxml/data_jclark_valid/sa/out/061.xml | 1 - .../canonxml/data_jclark_valid/sa/out/062.xml | 1 - .../canonxml/data_jclark_valid/sa/out/063.xml | 1 - .../canonxml/data_jclark_valid/sa/out/064.xml | 1 - .../canonxml/data_jclark_valid/sa/out/065.xml | 1 - .../canonxml/data_jclark_valid/sa/out/066.xml | 1 - .../canonxml/data_jclark_valid/sa/out/067.xml | 1 - .../canonxml/data_jclark_valid/sa/out/068.xml | 1 - .../canonxml/data_jclark_valid/sa/out/069.xml | 1 - .../canonxml/data_jclark_valid/sa/out/070.xml | 1 - .../canonxml/data_jclark_valid/sa/out/071.xml | 1 - .../canonxml/data_jclark_valid/sa/out/072.xml | 1 - .../canonxml/data_jclark_valid/sa/out/073.xml | 1 - .../canonxml/data_jclark_valid/sa/out/074.xml | 1 - .../canonxml/data_jclark_valid/sa/out/075.xml | 1 - .../canonxml/data_jclark_valid/sa/out/076.xml | 1 - .../canonxml/data_jclark_valid/sa/out/077.xml | 1 - .../canonxml/data_jclark_valid/sa/out/078.xml | 1 - .../canonxml/data_jclark_valid/sa/out/079.xml | 1 - .../canonxml/data_jclark_valid/sa/out/080.xml | 1 - .../canonxml/data_jclark_valid/sa/out/081.xml | 1 - .../canonxml/data_jclark_valid/sa/out/082.xml | 1 - .../canonxml/data_jclark_valid/sa/out/083.xml | 1 - .../canonxml/data_jclark_valid/sa/out/084.xml | 1 - .../canonxml/data_jclark_valid/sa/out/085.xml | 1 - .../canonxml/data_jclark_valid/sa/out/086.xml | 1 - .../canonxml/data_jclark_valid/sa/out/087.xml | 1 - .../canonxml/data_jclark_valid/sa/out/088.xml | 1 - .../canonxml/data_jclark_valid/sa/out/089.xml | 1 - .../canonxml/data_jclark_valid/sa/out/090.xml | 1 - .../canonxml/data_jclark_valid/sa/out/091.xml | 1 - .../canonxml/data_jclark_valid/sa/out/092.xml | 1 - .../canonxml/data_jclark_valid/sa/out/093.xml | 1 - .../canonxml/data_jclark_valid/sa/out/094.xml | 1 - .../canonxml/data_jclark_valid/sa/out/095.xml | 1 - .../canonxml/data_jclark_valid/sa/out/096.xml | 1 - .../canonxml/data_jclark_valid/sa/out/097.xml | 1 - .../canonxml/data_jclark_valid/sa/out/098.xml | 2 - .../canonxml/data_jclark_valid/sa/out/099.xml | 1 - .../canonxml/data_jclark_valid/sa/out/100.xml | 1 - .../canonxml/data_jclark_valid/sa/out/101.xml | 1 - .../canonxml/data_jclark_valid/sa/out/102.xml | 1 - .../canonxml/data_jclark_valid/sa/out/103.xml | 1 - .../canonxml/data_jclark_valid/sa/out/104.xml | 1 - .../canonxml/data_jclark_valid/sa/out/105.xml | 1 - .../canonxml/data_jclark_valid/sa/out/106.xml | 1 - .../canonxml/data_jclark_valid/sa/out/107.xml | 1 - .../canonxml/data_jclark_valid/sa/out/108.xml | 1 - .../canonxml/data_jclark_valid/sa/out/109.xml | 1 - .../canonxml/data_jclark_valid/sa/out/110.xml | 1 - .../canonxml/data_jclark_valid/sa/out/111.xml | 1 - .../canonxml/data_jclark_valid/sa/out/112.xml | 1 - .../canonxml/data_jclark_valid/sa/out/113.xml | 1 - .../canonxml/data_jclark_valid/sa/out/114.xml | 1 - .../canonxml/data_jclark_valid/sa/out/115.xml | 1 - .../canonxml/data_jclark_valid/sa/out/116.xml | 1 - .../canonxml/data_jclark_valid/sa/out/117.xml | 1 - .../canonxml/data_jclark_valid/sa/out/118.xml | 1 - .../canonxml/data_jclark_valid/sa/out/119.xml | 1 - .../data_valid/att_normalization/001.xml | 61 - .../data_valid/att_normalization/002.xml | 39 - .../data_valid/att_normalization/003.xml | 40 - .../data_valid/att_normalization/004.xml | 17 - .../data_valid/att_normalization/005.xml | 24 - .../data_valid/att_normalization/006.xml | 22 - .../data_valid/att_normalization/007.xml | 26 - .../data_valid/att_normalization/INDEX | 12 - .../data_valid/att_normalization/out/001.xml | 1 - .../data_valid/att_normalization/out/002.xml | 1 - .../data_valid/att_normalization/out/003.xml | 1 - .../data_valid/att_normalization/out/004.xml | 1 - .../data_valid/att_normalization/out/005.xml | 1 - .../data_valid/att_normalization/out/006.xml | 1 - .../data_valid/att_normalization/out/007.xml | 1 - .../canonxml/data_valid/bugfixes/001.xml | 10 - .../canonxml/data_valid/bugfixes/002+.xml | 4 - .../canonxml/data_valid/bugfixes/003.xml | 13 - .../rtests/canonxml/data_valid/bugfixes/INDEX | 12 - .../canonxml/data_valid/bugfixes/out/001.xml | 1 - .../canonxml/data_valid/bugfixes/out/002+.xml | 1 - .../canonxml/data_valid/bugfixes/out/003.xml | 1 - .../canonxml/data_valid/comments/001.xml | 13 - .../rtests/canonxml/data_valid/comments/INDEX | 1 - .../canonxml/data_valid/comments/out/001.xml | 1 - .../canonxml/data_valid/conditional/001.ent | 2 - .../canonxml/data_valid/conditional/001.xml | 2 - .../canonxml/data_valid/conditional/002.ent | 4 - .../canonxml/data_valid/conditional/002.xml | 2 - .../canonxml/data_valid/conditional/003.ent | 3 - .../canonxml/data_valid/conditional/003.xml | 2 - .../canonxml/data_valid/conditional/004.ent | 3 - .../canonxml/data_valid/conditional/004.xml | 2 - .../canonxml/data_valid/conditional/005.ent | 4 - .../canonxml/data_valid/conditional/005.xml | 2 - .../canonxml/data_valid/conditional/006.ent | 3 - .../canonxml/data_valid/conditional/006.xml | 2 - .../canonxml/data_valid/conditional/007.ent | 4 - .../canonxml/data_valid/conditional/007.xml | 2 - .../canonxml/data_valid/conditional/008.ent | 4 - .../canonxml/data_valid/conditional/008.xml | 2 - .../canonxml/data_valid/conditional/009.ent | 3 - .../canonxml/data_valid/conditional/009.xml | 2 - .../canonxml/data_valid/conditional/010.ent | 5 - .../canonxml/data_valid/conditional/010.xml | 2 - .../canonxml/data_valid/conditional/011.ent | 6 - .../canonxml/data_valid/conditional/011.xml | 2 - .../canonxml/data_valid/conditional/INDEX | 20 - .../data_valid/conditional/out/001.xml | 1 - .../data_valid/conditional/out/002.xml | 1 - .../data_valid/conditional/out/003.xml | 1 - .../data_valid/conditional/out/004.xml | 1 - .../data_valid/conditional/out/005.xml | 1 - .../data_valid/conditional/out/006.xml | 1 - .../data_valid/conditional/out/007.xml | 1 - .../data_valid/conditional/out/008.xml | 1 - .../data_valid/conditional/out/009.xml | 1 - .../data_valid/conditional/out/010.xml | 1 - .../data_valid/conditional/out/011.xml | 1 - .../data_valid/optional_decls/001.xml | 5 - .../data_valid/optional_decls/002.xml | 5 - .../data_valid/optional_decls/003.xml | 5 - .../data_valid/optional_decls/004.xml | 4 - .../data_valid/optional_decls/005.xml | 6 - .../data_valid/optional_decls/006.xml | 7 - .../data_valid/optional_decls/007.xml | 5 - .../canonxml/data_valid/optional_decls/INDEX | 14 - .../data_valid/optional_decls/out/001.xml | 1 - .../data_valid/optional_decls/out/002.xml | 1 - .../data_valid/optional_decls/out/003.xml | 1 - .../data_valid/optional_decls/out/004.xml | 1 - .../data_valid/optional_decls/out/005.xml | 1 - .../data_valid/optional_decls/out/006.xml | 1 - .../data_valid/optional_decls/out/007.xml | 1 - .../pxp/pxp/rtests/canonxml/run_canonxml | 31 - .../pxp/pxp/rtests/canonxml/test_canonxml.ml | 239 - helm/DEVEL/pxp/pxp/rtests/codewriter/Makefile | 28 - .../pxp/pxp/rtests/codewriter/compile.ml | 131 - .../pxp/pxp/rtests/codewriter/run_codewriter | 3 - .../pxp/pxp/rtests/codewriter/sample001.xml | 44 - .../pxp/pxp/rtests/codewriter/test_codewriter | 18 - helm/DEVEL/pxp/pxp/rtests/dumpfiles.ml | 56 - helm/DEVEL/pxp/pxp/rtests/negative/Makefile | 28 - helm/DEVEL/pxp/pxp/rtests/negative/README | 25 - .../pxp/rtests/negative/data_invalid/001.out | 2 - .../pxp/rtests/negative/data_invalid/001.xml | 5 - .../pxp/rtests/negative/data_invalid/010.out | 2 - .../pxp/rtests/negative/data_invalid/010.xml | 7 - .../pxp/rtests/negative/data_invalid/011.out | 2 - .../pxp/rtests/negative/data_invalid/011.xml | 11 - .../pxp/rtests/negative/data_invalid/012.out | 3 - .../pxp/rtests/negative/data_invalid/012.xml | 8 - .../pxp/rtests/negative/data_invalid/013.out | 2 - .../pxp/rtests/negative/data_invalid/013.xml | 7 - .../pxp/rtests/negative/data_invalid/014.out | 2 - .../pxp/rtests/negative/data_invalid/014.xml | 7 - .../pxp/rtests/negative/data_invalid/015.out | 2 - .../pxp/rtests/negative/data_invalid/015.xml | 7 - .../pxp/rtests/negative/data_invalid/016.out | 2 - .../pxp/rtests/negative/data_invalid/016.xml | 7 - .../pxp/rtests/negative/data_invalid/017.out | 2 - .../pxp/rtests/negative/data_invalid/017.xml | 13 - .../pxp/rtests/negative/data_invalid/018.out | 2 - .../pxp/rtests/negative/data_invalid/018.xml | 13 - .../pxp/rtests/negative/data_invalid/019.out | 2 - .../pxp/rtests/negative/data_invalid/019.xml | 8 - .../pxp/rtests/negative/data_invalid/020.out | 2 - .../pxp/rtests/negative/data_invalid/020.xml | 8 - .../pxp/rtests/negative/data_invalid/021.out | 2 - .../pxp/rtests/negative/data_invalid/021.xml | 8 - .../pxp/rtests/negative/data_invalid/022.out | 2 - .../pxp/rtests/negative/data_invalid/022.xml | 8 - .../pxp/rtests/negative/data_invalid/023.out | 2 - .../pxp/rtests/negative/data_invalid/023.xml | 6 - .../pxp/rtests/negative/data_invalid/024.out | 2 - .../pxp/rtests/negative/data_invalid/024.xml | 6 - .../pxp/rtests/negative/data_invalid/025.out | 2 - .../pxp/rtests/negative/data_invalid/025.xml | 7 - .../pxp/rtests/negative/data_invalid/026.out | 2 - .../pxp/rtests/negative/data_invalid/026.xml | 7 - .../pxp/rtests/negative/data_invalid/027.out | 2 - .../pxp/rtests/negative/data_invalid/027.xml | 8 - .../pxp/rtests/negative/data_invalid/028.out | 2 - .../pxp/rtests/negative/data_invalid/028.xml | 8 - .../pxp/rtests/negative/data_invalid/029.out | 2 - .../pxp/rtests/negative/data_invalid/029.xml | 6 - .../pxp/rtests/negative/data_invalid/030.out | 2 - .../pxp/rtests/negative/data_invalid/030.xml | 6 - .../pxp/rtests/negative/data_invalid/031.out | 2 - .../pxp/rtests/negative/data_invalid/031.xml | 7 - .../pxp/rtests/negative/data_invalid/032.out | 2 - .../pxp/rtests/negative/data_invalid/032.xml | 7 - .../pxp/rtests/negative/data_invalid/033.out | 2 - .../pxp/rtests/negative/data_invalid/033.xml | 7 - .../pxp/rtests/negative/data_invalid/034.out | 2 - .../pxp/rtests/negative/data_invalid/034.xml | 9 - .../pxp/rtests/negative/data_invalid/035.out | 2 - .../pxp/rtests/negative/data_invalid/035.xml | 7 - .../pxp/rtests/negative/data_invalid/036.out | 2 - .../pxp/rtests/negative/data_invalid/036.xml | 7 - .../pxp/rtests/negative/data_invalid/037.out | 2 - .../pxp/rtests/negative/data_invalid/037.xml | 7 - .../pxp/rtests/negative/data_invalid/038.out | 2 - .../pxp/rtests/negative/data_invalid/038.xml | 7 - .../pxp/rtests/negative/data_invalid/060.ent | 1 - .../pxp/rtests/negative/data_invalid/060.out | 4 - .../pxp/rtests/negative/data_invalid/060.xml | 19 - .../pxp/rtests/negative/data_invalid/061.ent | 2 - .../pxp/rtests/negative/data_invalid/061.out | 4 - .../pxp/rtests/negative/data_invalid/061.xml | 20 - .../pxp/rtests/negative/data_invalid/062.ent | 1 - .../pxp/rtests/negative/data_invalid/062.out | 4 - .../pxp/rtests/negative/data_invalid/062.xml | 17 - .../pxp/rtests/negative/data_invalid/063.ent | 1 - .../pxp/rtests/negative/data_invalid/063.out | 2 - .../pxp/rtests/negative/data_invalid/063.xml | 17 - .../pxp/rtests/negative/data_invalid/064.ent | 1 - .../pxp/rtests/negative/data_invalid/064.out | 2 - .../pxp/rtests/negative/data_invalid/064.xml | 19 - .../pxp/rtests/negative/data_invalid/065.ent | 1 - .../pxp/rtests/negative/data_invalid/065.out | 2 - .../pxp/rtests/negative/data_invalid/065.xml | 23 - .../pxp/rtests/negative/data_invalid/066.ent | 1 - .../pxp/rtests/negative/data_invalid/066.out | 2 - .../pxp/rtests/negative/data_invalid/066.xml | 20 - .../pxp/rtests/negative/data_invalid/067.ent | 1 - .../pxp/rtests/negative/data_invalid/067.out | 2 - .../pxp/rtests/negative/data_invalid/067.xml | 23 - .../pxp/rtests/negative/data_invalid/068.ent | 1 - .../pxp/rtests/negative/data_invalid/068.out | 4 - .../pxp/rtests/negative/data_invalid/068.xml | 21 - .../pxp/rtests/negative/data_invalid/069.ent | 1 - .../pxp/rtests/negative/data_invalid/069.out | 4 - .../pxp/rtests/negative/data_invalid/069.xml | 21 - .../pxp/rtests/negative/data_invalid/070.ent | 1 - .../pxp/rtests/negative/data_invalid/070.out | 2 - .../pxp/rtests/negative/data_invalid/070.xml | 21 - .../pxp/rtests/negative/data_invalid/080.out | 2 - .../pxp/rtests/negative/data_invalid/080.xml | 4 - .../pxp/rtests/negative/data_invalid/081.out | 2 - .../pxp/rtests/negative/data_invalid/081.xml | 4 - .../pxp/rtests/negative/data_invalid/INDEX | 75 - .../negative/data_jclark_invalid/001.ent | 3 - .../negative/data_jclark_invalid/001.out | 3 - .../negative/data_jclark_invalid/001.xml | 2 - .../negative/data_jclark_invalid/002.ent | 2 - .../negative/data_jclark_invalid/002.out | 3 - .../negative/data_jclark_invalid/002.xml | 2 - .../negative/data_jclark_invalid/003.ent | 2 - .../negative/data_jclark_invalid/003.out | 3 - .../negative/data_jclark_invalid/003.xml | 2 - .../negative/data_jclark_invalid/004.ent | 3 - .../negative/data_jclark_invalid/004.out | 4 - .../negative/data_jclark_invalid/004.xml | 2 - .../negative/data_jclark_invalid/005.ent | 2 - .../negative/data_jclark_invalid/005.out | 4 - .../negative/data_jclark_invalid/005.xml | 2 - .../negative/data_jclark_invalid/006.ent | 2 - .../negative/data_jclark_invalid/006.out | 4 - .../negative/data_jclark_invalid/006.xml | 2 - .../negative/data_jclark_notwf/ext-sa/001.ent | 1 - .../negative/data_jclark_notwf/ext-sa/001.out | 2 - .../negative/data_jclark_notwf/ext-sa/001.xml | 4 - .../negative/data_jclark_notwf/ext-sa/002.ent | 3 - .../negative/data_jclark_notwf/ext-sa/002.out | 3 - .../negative/data_jclark_notwf/ext-sa/002.xml | 5 - .../negative/data_jclark_notwf/ext-sa/003.ent | 2 - .../negative/data_jclark_notwf/ext-sa/003.out | 3 - .../negative/data_jclark_notwf/ext-sa/003.xml | 5 - .../negative/data_jclark_notwf/not-sa/001.ent | 3 - .../negative/data_jclark_notwf/not-sa/001.out | 3 - .../negative/data_jclark_notwf/not-sa/001.xml | 2 - .../negative/data_jclark_notwf/not-sa/002.out | 3 - .../negative/data_jclark_notwf/not-sa/002.xml | 6 - .../negative/data_jclark_notwf/not-sa/003.ent | 2 - .../negative/data_jclark_notwf/not-sa/003.out | 3 - .../negative/data_jclark_notwf/not-sa/003.xml | 2 - .../negative/data_jclark_notwf/not-sa/004.ent | 2 - .../negative/data_jclark_notwf/not-sa/004.out | 3 - .../negative/data_jclark_notwf/not-sa/004.xml | 2 - .../negative/data_jclark_notwf/not-sa/005.ent | 2 - .../negative/data_jclark_notwf/not-sa/005.out | 3 - .../negative/data_jclark_notwf/not-sa/005.xml | 2 - .../negative/data_jclark_notwf/not-sa/006.ent | 3 - .../negative/data_jclark_notwf/not-sa/006.out | 3 - .../negative/data_jclark_notwf/not-sa/006.xml | 2 - .../negative/data_jclark_notwf/not-sa/007.ent | 3 - .../negative/data_jclark_notwf/not-sa/007.out | 3 - .../negative/data_jclark_notwf/not-sa/007.xml | 2 - .../negative/data_jclark_notwf/not-sa/008.ent | 2 - .../negative/data_jclark_notwf/not-sa/008.out | 3 - .../negative/data_jclark_notwf/not-sa/008.xml | 2 - .../data_jclark_notwf/sa-problems/140.xml | 4 - .../data_jclark_notwf/sa-problems/141.xml | 4 - .../negative/data_jclark_notwf/sa/001.out | 2 - .../negative/data_jclark_notwf/sa/001.xml | 5 - .../negative/data_jclark_notwf/sa/002.out | 2 - .../negative/data_jclark_notwf/sa/002.xml | 4 - .../negative/data_jclark_notwf/sa/003.out | 2 - .../negative/data_jclark_notwf/sa/003.xml | 1 - .../negative/data_jclark_notwf/sa/004.out | 2 - .../negative/data_jclark_notwf/sa/004.xml | 1 - .../negative/data_jclark_notwf/sa/005.out | 2 - .../negative/data_jclark_notwf/sa/005.xml | 1 - .../negative/data_jclark_notwf/sa/006.out | 2 - .../negative/data_jclark_notwf/sa/006.xml | 1 - .../negative/data_jclark_notwf/sa/007.out | 2 - .../negative/data_jclark_notwf/sa/007.xml | 1 - .../negative/data_jclark_notwf/sa/008.out | 2 - .../negative/data_jclark_notwf/sa/008.xml | 1 - .../negative/data_jclark_notwf/sa/009.out | 2 - .../negative/data_jclark_notwf/sa/009.xml | 1 - .../negative/data_jclark_notwf/sa/010.out | 2 - .../negative/data_jclark_notwf/sa/010.xml | 1 - .../negative/data_jclark_notwf/sa/011.out | 2 - .../negative/data_jclark_notwf/sa/011.xml | 1 - .../negative/data_jclark_notwf/sa/012.out | 2 - .../negative/data_jclark_notwf/sa/012.xml | 1 - .../negative/data_jclark_notwf/sa/013.out | 2 - .../negative/data_jclark_notwf/sa/013.xml | 1 - .../negative/data_jclark_notwf/sa/014.out | 2 - .../negative/data_jclark_notwf/sa/014.xml | 1 - .../negative/data_jclark_notwf/sa/015.out | 2 - .../negative/data_jclark_notwf/sa/015.xml | 1 - .../negative/data_jclark_notwf/sa/016.out | 2 - .../negative/data_jclark_notwf/sa/016.xml | 1 - .../negative/data_jclark_notwf/sa/017.out | 2 - .../negative/data_jclark_notwf/sa/017.xml | 1 - .../negative/data_jclark_notwf/sa/018.out | 2 - .../negative/data_jclark_notwf/sa/018.xml | 1 - .../negative/data_jclark_notwf/sa/019.out | 2 - .../negative/data_jclark_notwf/sa/019.xml | 1 - .../negative/data_jclark_notwf/sa/020.out | 2 - .../negative/data_jclark_notwf/sa/020.xml | 1 - .../negative/data_jclark_notwf/sa/021.out | 2 - .../negative/data_jclark_notwf/sa/021.xml | 1 - .../negative/data_jclark_notwf/sa/022.out | 2 - .../negative/data_jclark_notwf/sa/022.xml | 1 - .../negative/data_jclark_notwf/sa/023.out | 2 - .../negative/data_jclark_notwf/sa/023.xml | 1 - .../negative/data_jclark_notwf/sa/024.out | 2 - .../negative/data_jclark_notwf/sa/024.xml | 3 - .../negative/data_jclark_notwf/sa/025.out | 2 - .../negative/data_jclark_notwf/sa/025.xml | 1 - .../negative/data_jclark_notwf/sa/026.out | 2 - .../negative/data_jclark_notwf/sa/026.xml | 1 - .../negative/data_jclark_notwf/sa/027.out | 2 - .../negative/data_jclark_notwf/sa/027.xml | 3 - .../negative/data_jclark_notwf/sa/028.out | 2 - .../negative/data_jclark_notwf/sa/028.xml | 4 - .../negative/data_jclark_notwf/sa/029.out | 2 - .../negative/data_jclark_notwf/sa/029.xml | 1 - .../negative/data_jclark_notwf/sa/030.out | 2 - .../negative/data_jclark_notwf/sa/030.xml | 1 - .../negative/data_jclark_notwf/sa/031.out | 2 - .../negative/data_jclark_notwf/sa/031.xml | 1 - .../negative/data_jclark_notwf/sa/032.out | 2 - .../negative/data_jclark_notwf/sa/032.xml | 1 - .../negative/data_jclark_notwf/sa/033.out | 2 - .../negative/data_jclark_notwf/sa/033.xml | 1 - .../negative/data_jclark_notwf/sa/034.out | 2 - .../negative/data_jclark_notwf/sa/034.xml | 1 - .../negative/data_jclark_notwf/sa/035.out | 2 - .../negative/data_jclark_notwf/sa/035.xml | 1 - .../negative/data_jclark_notwf/sa/036.out | 2 - .../negative/data_jclark_notwf/sa/036.xml | 2 - .../negative/data_jclark_notwf/sa/037.out | 2 - .../negative/data_jclark_notwf/sa/037.xml | 2 - .../negative/data_jclark_notwf/sa/038.out | 2 - .../negative/data_jclark_notwf/sa/038.xml | 1 - .../negative/data_jclark_notwf/sa/039.out | 2 - .../negative/data_jclark_notwf/sa/039.xml | 1 - .../negative/data_jclark_notwf/sa/040.out | 2 - .../negative/data_jclark_notwf/sa/040.xml | 2 - .../negative/data_jclark_notwf/sa/041.out | 2 - .../negative/data_jclark_notwf/sa/041.xml | 2 - .../negative/data_jclark_notwf/sa/042.out | 2 - .../negative/data_jclark_notwf/sa/042.xml | 1 - .../negative/data_jclark_notwf/sa/043.out | 2 - .../negative/data_jclark_notwf/sa/043.xml | 2 - .../negative/data_jclark_notwf/sa/044.out | 2 - .../negative/data_jclark_notwf/sa/044.xml | 1 - .../negative/data_jclark_notwf/sa/045.out | 2 - .../negative/data_jclark_notwf/sa/045.xml | 4 - .../negative/data_jclark_notwf/sa/046.out | 2 - .../negative/data_jclark_notwf/sa/046.xml | 3 - .../negative/data_jclark_notwf/sa/047.out | 2 - .../negative/data_jclark_notwf/sa/047.xml | 3 - .../negative/data_jclark_notwf/sa/048.out | 2 - .../negative/data_jclark_notwf/sa/048.xml | 3 - .../negative/data_jclark_notwf/sa/049.out | 2 - .../negative/data_jclark_notwf/sa/049.xml | 4 - .../negative/data_jclark_notwf/sa/050.out | 2 - .../negative/data_jclark_notwf/sa/050.xml | 0 .../negative/data_jclark_notwf/sa/051.out | 2 - .../negative/data_jclark_notwf/sa/051.xml | 3 - .../negative/data_jclark_notwf/sa/052.out | 2 - .../negative/data_jclark_notwf/sa/052.xml | 3 - .../negative/data_jclark_notwf/sa/053.out | 2 - .../negative/data_jclark_notwf/sa/053.xml | 1 - .../negative/data_jclark_notwf/sa/054.out | 2 - .../negative/data_jclark_notwf/sa/054.xml | 4 - .../negative/data_jclark_notwf/sa/055.out | 2 - .../negative/data_jclark_notwf/sa/055.xml | 2 - .../negative/data_jclark_notwf/sa/056.out | 2 - .../negative/data_jclark_notwf/sa/056.xml | 2 - .../negative/data_jclark_notwf/sa/057.out | 2 - .../negative/data_jclark_notwf/sa/057.xml | 4 - .../negative/data_jclark_notwf/sa/058.out | 2 - .../negative/data_jclark_notwf/sa/058.xml | 5 - .../negative/data_jclark_notwf/sa/059.out | 2 - .../negative/data_jclark_notwf/sa/059.xml | 5 - .../negative/data_jclark_notwf/sa/060.out | 2 - .../negative/data_jclark_notwf/sa/060.xml | 5 - .../negative/data_jclark_notwf/sa/061.out | 2 - .../negative/data_jclark_notwf/sa/061.xml | 4 - .../negative/data_jclark_notwf/sa/062.out | 2 - .../negative/data_jclark_notwf/sa/062.xml | 4 - .../negative/data_jclark_notwf/sa/063.out | 2 - .../negative/data_jclark_notwf/sa/063.xml | 4 - .../negative/data_jclark_notwf/sa/064.out | 2 - .../negative/data_jclark_notwf/sa/064.xml | 5 - .../negative/data_jclark_notwf/sa/065.out | 2 - .../negative/data_jclark_notwf/sa/065.xml | 5 - .../negative/data_jclark_notwf/sa/066.out | 2 - .../negative/data_jclark_notwf/sa/066.xml | 5 - .../negative/data_jclark_notwf/sa/067.out | 2 - .../negative/data_jclark_notwf/sa/067.xml | 5 - .../negative/data_jclark_notwf/sa/068.out | 2 - .../negative/data_jclark_notwf/sa/068.xml | 5 - .../negative/data_jclark_notwf/sa/069.out | 2 - .../negative/data_jclark_notwf/sa/069.xml | 6 - .../negative/data_jclark_notwf/sa/070.out | 2 - .../negative/data_jclark_notwf/sa/070.xml | 2 - .../negative/data_jclark_notwf/sa/071.out | 5 - .../negative/data_jclark_notwf/sa/071.xml | 6 - .../negative/data_jclark_notwf/sa/072.out | 2 - .../negative/data_jclark_notwf/sa/072.xml | 1 - .../negative/data_jclark_notwf/sa/073.out | 2 - .../negative/data_jclark_notwf/sa/073.xml | 4 - .../negative/data_jclark_notwf/sa/074.out | 3 - .../negative/data_jclark_notwf/sa/074.xml | 6 - .../negative/data_jclark_notwf/sa/075.out | 2 - .../negative/data_jclark_notwf/sa/075.xml | 7 - .../negative/data_jclark_notwf/sa/076.out | 2 - .../negative/data_jclark_notwf/sa/076.xml | 1 - .../negative/data_jclark_notwf/sa/077.out | 2 - .../negative/data_jclark_notwf/sa/077.xml | 4 - .../negative/data_jclark_notwf/sa/078.out | 2 - .../negative/data_jclark_notwf/sa/078.xml | 5 - .../negative/data_jclark_notwf/sa/079.out | 2 - .../negative/data_jclark_notwf/sa/079.xml | 8 - .../negative/data_jclark_notwf/sa/080.out | 2 - .../negative/data_jclark_notwf/sa/080.xml | 8 - .../negative/data_jclark_notwf/sa/081.out | 2 - .../negative/data_jclark_notwf/sa/081.xml | 4 - .../negative/data_jclark_notwf/sa/082.out | 2 - .../negative/data_jclark_notwf/sa/082.xml | 6 - .../negative/data_jclark_notwf/sa/083.out | 2 - .../negative/data_jclark_notwf/sa/083.xml | 4 - .../negative/data_jclark_notwf/sa/084.out | 2 - .../negative/data_jclark_notwf/sa/084.xml | 6 - .../negative/data_jclark_notwf/sa/085.out | 2 - .../negative/data_jclark_notwf/sa/085.xml | 2 - .../negative/data_jclark_notwf/sa/086.out | 2 - .../negative/data_jclark_notwf/sa/086.xml | 4 - .../negative/data_jclark_notwf/sa/087.out | 2 - .../negative/data_jclark_notwf/sa/087.xml | 4 - .../negative/data_jclark_notwf/sa/088.out | 2 - .../negative/data_jclark_notwf/sa/088.xml | 6 - .../negative/data_jclark_notwf/sa/089.out | 2 - .../negative/data_jclark_notwf/sa/089.xml | 4 - .../negative/data_jclark_notwf/sa/090.out | 3 - .../negative/data_jclark_notwf/sa/090.xml | 4 - .../negative/data_jclark_notwf/sa/091.out | 2 - .../negative/data_jclark_notwf/sa/091.xml | 5 - .../negative/data_jclark_notwf/sa/092.out | 3 - .../negative/data_jclark_notwf/sa/092.xml | 4 - .../negative/data_jclark_notwf/sa/093.out | 2 - .../negative/data_jclark_notwf/sa/093.xml | 1 - .../negative/data_jclark_notwf/sa/094.out | 2 - .../negative/data_jclark_notwf/sa/094.xml | 2 - .../negative/data_jclark_notwf/sa/095.out | 2 - .../negative/data_jclark_notwf/sa/095.xml | 2 - .../negative/data_jclark_notwf/sa/096.out | 2 - .../negative/data_jclark_notwf/sa/096.xml | 2 - .../negative/data_jclark_notwf/sa/097.out | 2 - .../negative/data_jclark_notwf/sa/097.xml | 2 - .../negative/data_jclark_notwf/sa/098.out | 2 - .../negative/data_jclark_notwf/sa/098.xml | 2 - .../negative/data_jclark_notwf/sa/099.out | 2 - .../negative/data_jclark_notwf/sa/099.xml | 2 - .../negative/data_jclark_notwf/sa/100.out | 2 - .../negative/data_jclark_notwf/sa/100.xml | 2 - .../negative/data_jclark_notwf/sa/101.out | 2 - .../negative/data_jclark_notwf/sa/101.xml | 2 - .../negative/data_jclark_notwf/sa/102.out | 2 - .../negative/data_jclark_notwf/sa/102.xml | 2 - .../negative/data_jclark_notwf/sa/103.out | 2 - .../negative/data_jclark_notwf/sa/103.xml | 4 - .../negative/data_jclark_notwf/sa/104.out | 2 - .../negative/data_jclark_notwf/sa/104.xml | 4 - .../negative/data_jclark_notwf/sa/105.out | 2 - .../negative/data_jclark_notwf/sa/105.xml | 4 - .../negative/data_jclark_notwf/sa/106.out | 2 - .../negative/data_jclark_notwf/sa/106.xml | 2 - .../negative/data_jclark_notwf/sa/107.out | 2 - .../negative/data_jclark_notwf/sa/107.xml | 4 - .../negative/data_jclark_notwf/sa/108.out | 2 - .../negative/data_jclark_notwf/sa/108.xml | 3 - .../negative/data_jclark_notwf/sa/109.out | 2 - .../negative/data_jclark_notwf/sa/109.xml | 4 - .../negative/data_jclark_notwf/sa/110.out | 2 - .../negative/data_jclark_notwf/sa/110.xml | 5 - .../negative/data_jclark_notwf/sa/111.out | 2 - .../negative/data_jclark_notwf/sa/111.xml | 4 - .../negative/data_jclark_notwf/sa/112.out | 2 - .../negative/data_jclark_notwf/sa/112.xml | 3 - .../negative/data_jclark_notwf/sa/113.out | 2 - .../negative/data_jclark_notwf/sa/113.xml | 4 - .../negative/data_jclark_notwf/sa/114.out | 2 - .../negative/data_jclark_notwf/sa/114.xml | 4 - .../negative/data_jclark_notwf/sa/115.out | 2 - .../negative/data_jclark_notwf/sa/115.xml | 4 - .../negative/data_jclark_notwf/sa/116.out | 3 - .../negative/data_jclark_notwf/sa/116.xml | 4 - .../negative/data_jclark_notwf/sa/117.out | 3 - .../negative/data_jclark_notwf/sa/117.xml | 4 - .../negative/data_jclark_notwf/sa/118.out | 2 - .../negative/data_jclark_notwf/sa/118.xml | 4 - .../negative/data_jclark_notwf/sa/119.out | 3 - .../negative/data_jclark_notwf/sa/119.xml | 6 - .../negative/data_jclark_notwf/sa/120.out | 3 - .../negative/data_jclark_notwf/sa/120.xml | 6 - .../negative/data_jclark_notwf/sa/121.out | 2 - .../negative/data_jclark_notwf/sa/121.xml | 4 - .../negative/data_jclark_notwf/sa/122.out | 2 - .../negative/data_jclark_notwf/sa/122.xml | 4 - .../negative/data_jclark_notwf/sa/123.out | 2 - .../negative/data_jclark_notwf/sa/123.xml | 4 - .../negative/data_jclark_notwf/sa/124.out | 2 - .../negative/data_jclark_notwf/sa/124.xml | 4 - .../negative/data_jclark_notwf/sa/125.out | 2 - .../negative/data_jclark_notwf/sa/125.xml | 4 - .../negative/data_jclark_notwf/sa/126.out | 2 - .../negative/data_jclark_notwf/sa/126.xml | 4 - .../negative/data_jclark_notwf/sa/127.out | 2 - .../negative/data_jclark_notwf/sa/127.xml | 4 - .../negative/data_jclark_notwf/sa/128.out | 2 - .../negative/data_jclark_notwf/sa/128.xml | 4 - .../negative/data_jclark_notwf/sa/129.out | 2 - .../negative/data_jclark_notwf/sa/129.xml | 4 - .../negative/data_jclark_notwf/sa/130.out | 2 - .../negative/data_jclark_notwf/sa/130.xml | 4 - .../negative/data_jclark_notwf/sa/131.out | 2 - .../negative/data_jclark_notwf/sa/131.xml | 4 - .../negative/data_jclark_notwf/sa/132.out | 2 - .../negative/data_jclark_notwf/sa/132.xml | 4 - .../negative/data_jclark_notwf/sa/133.out | 2 - .../negative/data_jclark_notwf/sa/133.xml | 4 - .../negative/data_jclark_notwf/sa/134.out | 2 - .../negative/data_jclark_notwf/sa/134.xml | 4 - .../negative/data_jclark_notwf/sa/135.out | 2 - .../negative/data_jclark_notwf/sa/135.xml | 4 - .../negative/data_jclark_notwf/sa/136.out | 2 - .../negative/data_jclark_notwf/sa/136.xml | 4 - .../negative/data_jclark_notwf/sa/137.out | 2 - .../negative/data_jclark_notwf/sa/137.xml | 4 - .../negative/data_jclark_notwf/sa/138.out | 2 - .../negative/data_jclark_notwf/sa/138.xml | 4 - .../negative/data_jclark_notwf/sa/139.out | 2 - .../negative/data_jclark_notwf/sa/139.xml | 4 - .../negative/data_jclark_notwf/sa/140.out | 3 - .../negative/data_jclark_notwf/sa/140.xml | 4 - .../negative/data_jclark_notwf/sa/141.out | 3 - .../negative/data_jclark_notwf/sa/141.xml | 4 - .../negative/data_jclark_notwf/sa/142.out | 2 - .../negative/data_jclark_notwf/sa/142.xml | 4 - .../negative/data_jclark_notwf/sa/143.out | 2 - .../negative/data_jclark_notwf/sa/143.xml | 4 - .../negative/data_jclark_notwf/sa/144.out | 2 - .../negative/data_jclark_notwf/sa/144.xml | 4 - .../negative/data_jclark_notwf/sa/145.out | 2 - .../negative/data_jclark_notwf/sa/145.xml | 4 - .../negative/data_jclark_notwf/sa/146.out | 2 - .../negative/data_jclark_notwf/sa/146.xml | 4 - .../negative/data_jclark_notwf/sa/147.out | 2 - .../negative/data_jclark_notwf/sa/147.xml | 3 - .../negative/data_jclark_notwf/sa/148.out | 2 - .../negative/data_jclark_notwf/sa/148.xml | 3 - .../negative/data_jclark_notwf/sa/149.out | 2 - .../negative/data_jclark_notwf/sa/149.xml | 5 - .../negative/data_jclark_notwf/sa/150.out | 2 - .../negative/data_jclark_notwf/sa/150.xml | 3 - .../negative/data_jclark_notwf/sa/151.out | 2 - .../negative/data_jclark_notwf/sa/151.xml | 3 - .../negative/data_jclark_notwf/sa/152.out | 2 - .../negative/data_jclark_notwf/sa/152.xml | 2 - .../negative/data_jclark_notwf/sa/153.out | 3 - .../negative/data_jclark_notwf/sa/153.xml | 5 - .../negative/data_jclark_notwf/sa/154.out | 2 - .../negative/data_jclark_notwf/sa/154.xml | 2 - .../negative/data_jclark_notwf/sa/155.out | 2 - .../negative/data_jclark_notwf/sa/155.xml | 2 - .../negative/data_jclark_notwf/sa/156.out | 2 - .../negative/data_jclark_notwf/sa/156.xml | 3 - .../negative/data_jclark_notwf/sa/157.out | 2 - .../negative/data_jclark_notwf/sa/157.xml | 3 - .../negative/data_jclark_notwf/sa/158.out | 2 - .../negative/data_jclark_notwf/sa/158.xml | 6 - .../negative/data_jclark_notwf/sa/159.out | 2 - .../negative/data_jclark_notwf/sa/159.xml | 5 - .../negative/data_jclark_notwf/sa/160.out | 2 - .../negative/data_jclark_notwf/sa/160.xml | 6 - .../negative/data_jclark_notwf/sa/161.out | 3 - .../negative/data_jclark_notwf/sa/161.xml | 5 - .../negative/data_jclark_notwf/sa/162.out | 2 - .../negative/data_jclark_notwf/sa/162.xml | 6 - .../negative/data_jclark_notwf/sa/163.out | 2 - .../negative/data_jclark_notwf/sa/163.xml | 6 - .../negative/data_jclark_notwf/sa/164.out | 2 - .../negative/data_jclark_notwf/sa/164.xml | 5 - .../negative/data_jclark_notwf/sa/165.out | 2 - .../negative/data_jclark_notwf/sa/165.xml | 5 - .../negative/data_jclark_notwf/sa/166.out | 2 - .../negative/data_jclark_notwf/sa/166.xml | 1 - .../negative/data_jclark_notwf/sa/167.out | 2 - .../negative/data_jclark_notwf/sa/167.xml | 1 - .../negative/data_jclark_notwf/sa/168.out | 2 - .../negative/data_jclark_notwf/sa/168.xml | 1 - .../negative/data_jclark_notwf/sa/169.out | 2 - .../negative/data_jclark_notwf/sa/169.xml | 1 - .../negative/data_jclark_notwf/sa/170.out | 2 - .../negative/data_jclark_notwf/sa/170.xml | 1 - .../negative/data_jclark_notwf/sa/171.out | 2 - .../negative/data_jclark_notwf/sa/171.xml | 2 - .../negative/data_jclark_notwf/sa/172.out | 2 - .../negative/data_jclark_notwf/sa/172.xml | 2 - .../negative/data_jclark_notwf/sa/173.out | 2 - .../negative/data_jclark_notwf/sa/173.xml | 1 - .../negative/data_jclark_notwf/sa/174.out | 2 - .../negative/data_jclark_notwf/sa/174.xml | 1 - .../negative/data_jclark_notwf/sa/175.out | 2 - .../negative/data_jclark_notwf/sa/175.xml | 5 - .../negative/data_jclark_notwf/sa/176.out | 2 - .../negative/data_jclark_notwf/sa/176.xml | 4 - .../negative/data_jclark_notwf/sa/177.out | 2 - .../negative/data_jclark_notwf/sa/177.xml | 4 - .../negative/data_jclark_notwf/sa/178.out | 2 - .../negative/data_jclark_notwf/sa/178.xml | 5 - .../negative/data_jclark_notwf/sa/179.out | 2 - .../negative/data_jclark_notwf/sa/179.xml | 4 - .../negative/data_jclark_notwf/sa/180.out | 2 - .../negative/data_jclark_notwf/sa/180.xml | 6 - .../negative/data_jclark_notwf/sa/181.out | 3 - .../negative/data_jclark_notwf/sa/181.xml | 5 - .../negative/data_jclark_notwf/sa/182.out | 3 - .../negative/data_jclark_notwf/sa/182.xml | 5 - .../negative/data_jclark_notwf/sa/183.out | 2 - .../negative/data_jclark_notwf/sa/183.xml | 5 - .../negative/data_jclark_notwf/sa/184.out | 2 - .../negative/data_jclark_notwf/sa/184.xml | 6 - .../negative/data_jclark_notwf/sa/185.ent | 1 - .../negative/data_jclark_notwf/sa/185.out | 2 - .../negative/data_jclark_notwf/sa/185.xml | 3 - .../negative/data_jclark_notwf/sa/186.out | 2 - .../negative/data_jclark_notwf/sa/186.xml | 5 - .../negative/data_jclark_notwf/sa/null.ent | 0 .../pxp/rtests/negative/data_notwf/sa/001.out | 2 - .../pxp/rtests/negative/data_notwf/sa/001.xml | 4 - .../pxp/rtests/negative/data_notwf/sa/002.out | 2 - .../pxp/rtests/negative/data_notwf/sa/002.xml | 6 - .../rtests/negative/data_notwf/sa/null.ent | 0 .../pxp/pxp/rtests/negative/run_negative | 117 - .../pxp/pxp/rtests/negative/test_negative.ml | 105 - helm/DEVEL/pxp/pxp/rtests/reader/Makefile | 31 - helm/DEVEL/pxp/pxp/rtests/reader/minilex.mll | 7 - helm/DEVEL/pxp/pxp/rtests/reader/t100.dat | 1 - .../pxp/pxp/rtests/reader/test_reader.ml | 455 - helm/DEVEL/pxp/pxp/rtests/run | 9 - helm/DEVEL/pxp/pxp/rtests/write/Makefile | 28 - helm/DEVEL/pxp/pxp/rtests/write/run_write | 17 - helm/DEVEL/pxp/pxp/rtests/write/sample001.xml | 37 - helm/DEVEL/pxp/pxp/rtests/write/test_write.ml | 94 - helm/DEVEL/pxp/pxp/tools/collect_files | 25 - helm/DEVEL/pxp/pxp/tools/insert_variant | 105 - .../pxp/pxp/tools/ucs2_to_utf8/.cvsignore | 4 - .../DEVEL/pxp/pxp/tools/ucs2_to_utf8/Makefile | 50 - helm/DEVEL/pxp/pxp/tools/ucs2_to_utf8/README | 15 - .../pxp/pxp/tools/ucs2_to_utf8/lexer.mll | 43 - .../pxp/pxp/tools/ucs2_to_utf8/parser.mly | 40 - .../DEVEL/pxp/pxp/tools/ucs2_to_utf8/types.ml | 13 - .../pxp/tools/ucs2_to_utf8/ucs2_to_utf8.ml | 215 - helm/EXPORT/cshrc | 4 - .../export_Bordeaux_EXCEPTIONS/Makefile | 11 - .../exporttheories.sh | 10 - .../prova_Bordeaux_EXCEPTIONS.v | 5 - helm/EXPORT/export_Marseille_CCS/Makefile | 11 - .../export_Marseille_CCS/exporttheories.sh | 10 - .../prova_Marseille_CCS.v | 5 - helm/EXPORT/export_Nijmegen_Rem/Makefile | 11 - .../export_Nijmegen_Rem/exporttheories.sh | 10 - .../export_Nijmegen_Rem/prova_Nijmegen_Rem.v | 5 - helm/EXPORT/export_Paris_ZF/Makefile | 25 - helm/EXPORT/export_Paris_ZF/exporttheories.sh | 10 - helm/EXPORT/export_Paris_ZF/prova_Paris_ZF.v | 33 - helm/EXPORT/export_Rocq_CHECKER/Makefile | 11 - .../export_Rocq_CHECKER/exporttheories.sh | 10 - .../export_Rocq_CHECKER/prova_Rocq_CHECKER.v | 7 - helm/EXPORT/export_Rocq_HIGMAN/Makefile | 11 - .../export_Rocq_HIGMAN/exporttheories.sh | 10 - .../export_Rocq_HIGMAN/prova_Rocq_HIGMAN.v | 5 - helm/EXPORT/export_Rocq_SHUFFLE/Makefile | 16 - .../export_Rocq_SHUFFLE/exporttheories.sh | 10 - .../export_Rocq_SHUFFLE/prova_Rocq_SHUFFLE.v | 16 - helm/EXPORT/export_Utrecht_Ramsey/Makefile | 11 - .../export_Utrecht_Ramsey/exporttheories.sh | 10 - .../prova_Utrecht_Ramsey.v | 5 - helm/EXPORT/exportcoq/Makefile | 7 - .../EXPORT/exportcoq/export_contrib_theory.sh | 12 - helm/EXPORT/exportcoq/export_theory_theory.sh | 12 - helm/EXPORT/exportcoq/exporttheories.sh | 17 - helm/EXPORT/exportcoq/provacoq.v | 14 - helm/EXPORT/exportcoq/provacoqArith.v | 31 - helm/EXPORT/exportcoq/provacoqBool.v | 13 - helm/EXPORT/exportcoq/provacoqInit.v | 13 - helm/EXPORT/exportcoq/provacoqLists.v | 15 - helm/EXPORT/exportcoq/provacoqLogic.v | 17 - helm/EXPORT/exportcoq/provacoqReals.v | 23 - helm/EXPORT/exportcoq/provacoqRelations.v | 33 - helm/EXPORT/exportcoq/provacoqSets.v | 48 - helm/EXPORT/exportcoq/provacoqSorting.v | 13 - helm/EXPORT/exportcoq/provacoqTrees.v | 7 - helm/EXPORT/exportcoq/provacoqZArith.v | 19 - helm/EXPORT/exportcoq/provacoqcontribOmega.v | 11 - helm/EXPORT/exportcoq/provacoqcontribRing.v | 17 - helm/EXPORT/exportcsczfc/Makefile | 11 - helm/EXPORT/exportcsczfc/csc_zfc/.cvsignore | 1 - helm/EXPORT/exportcsczfc/csc_zfc/csc_eqdep.v | 9 - helm/EXPORT/exportcsczfc/csc_zfc/csc_zfc.v | 1566 -- helm/EXPORT/exportcsczfc/exporttheories.sh | 10 - helm/EXPORT/exportcsczfc/provacsczfc.v | 6 - helm/EXPORT/exportprove/Makefile | 14 - helm/EXPORT/exportprove/exporttheories.sh | 10 - helm/EXPORT/exportprove/prova.v | 34 - helm/EXPORT/exportprove/provaCofix.v | 4 - helm/EXPORT/exportprove/provaFeIota.v | 6 - helm/EXPORT/exportprove/provaStruct.v | 16 - helm/EXPORT/exportprove/prove/.cvsignore | 1 - helm/EXPORT/exportprove/prove/provaF.v | 33 - helm/EXPORT/exportprove/prove/provaIota.v | 53 - helm/EXPORT/exportprove/prove/provacofix.v | 45 - helm/EXPORT/exportprove/prove/provastruct.v | 22 - helm/EXPORT/exportprove/prove/provastruct2.v | 42 - helm/EXPORT/exportprove/prove/provastruct3.v | 11 - helm/EXPORT/exportprove/prove/provastruct4.v | 8 - helm/EXPORT/exportprove/prove/provastruct5.v | 11 - helm/EXPORT/mktheory.pl | 151 - helm/Makefile | 17 - helm/annotationHelper/.cvsignore | 1 - helm/annotationHelper/.depend | 4 - helm/annotationHelper/Makefile | 47 - helm/annotationHelper/cicAnnotationHelper.ml | 594 - helm/annotationHelper/cicAnnotationHinter.ml | 393 - helm/annotationHelper/cicAnnotationHinter.mli | 46 - helm/cgi/mkcontrol.pl | 109 - helm/cgi/mkheader.pl | 44 - helm/cgi/mkindex.pl | 52 - helm/cgi/mkindexcic.pl | 113 - helm/cgi/mkindextheory.pl | 112 - helm/configuration/.cvsignore | 3 - helm/configuration/AUTHORS | 4 - helm/configuration/COPYING | 340 - helm/configuration/ChangeLog | 1 - helm/configuration/Makefile.in | 47 - helm/configuration/NEWS | 1 - helm/configuration/README | 8 - helm/configuration/config.cache.pkg | 15 - helm/configuration/configure.in | 186 - helm/configuration/etc/.cvsignore | 1 - helm/configuration/etc/configuration.dtd | 60 - helm/configuration/etc/configuration.xml.in | 49 - helm/configuration/etc/helm-dictionary.xml | 31 - .../etc/helm-font-configuration.xml | 36 - .../etc/helm-math-engine-configuration.xml.in | 38 - helm/configuration/helm-config.in | 84 - helm/configuration/helm_configuration.spec.in | 43 - helm/configuration/lib/.cvsignore | 1 - helm/configuration/lib/configuration.pl.in | 65 - helm/configuration/library/servers.txt | 1 - helm/configuration/library/urls_of_uris.db | Bin 4096 -> 0 bytes helm/dtd/annotations.dtd | 53 - helm/dtd/backward.dtd | 48 - helm/dtd/cic.dtd | 251 - helm/dtd/cicobject.dtd | 135 - helm/dtd/cictypes.dtd | 44 - helm/dtd/forward.dtd | 48 - helm/dtd/isoamsa.ent | 173 - helm/dtd/isoamsb.ent | 146 - helm/dtd/isoamsc.ent | 49 - helm/dtd/isoamsn.ent | 117 - helm/dtd/isoamso.ent | 77 - helm/dtd/isoamsr.ent | 205 - helm/dtd/isobox.ent | 67 - helm/dtd/isocyr1.ent | 94 - helm/dtd/isocyr2.ent | 53 - helm/dtd/isodia.ent | 41 - helm/dtd/isogrk3.ent | 70 - helm/dtd/isolat1.ent | 89 - helm/dtd/isolat2.ent | 148 - helm/dtd/isomfrk.ent | 79 - helm/dtd/isomopf.ent | 53 - helm/dtd/isomscr.ent | 79 - helm/dtd/isonum.ent | 106 - helm/dtd/isopub.ent | 111 - helm/dtd/isotech.ent | 183 - helm/dtd/ls.dtd | 13 - helm/dtd/mathml2-qname-1.mod | 268 - helm/dtd/mathml2.dtd | 1948 -- helm/dtd/maththeory.dtd | 75 - helm/dtd/mmlalias.ent | 529 - helm/dtd/mmlextra.ent | 134 - helm/dtd/provastruct.theory.xml | 158 - helm/dtd/theoryobject.dtd | 82 - helm/fix_params/.cvsignore | 1 - helm/fix_params/.depend | 2 - helm/fix_params/Makefile | 41 - helm/fix_params/cic2Xml.ml | 251 - helm/fix_params/cicFindParameters.ml | 158 - helm/fix_params/fix_params.ml | 74 - helm/gTopLevel/.cvsignore | 1 - helm/gTopLevel/.depend | 28 - helm/gTopLevel/INSTALL | 12 - helm/gTopLevel/Makefile | 82 - helm/gTopLevel/TATTICHE | 144 - helm/gTopLevel/dictionary-cic.xml | 37 - helm/gTopLevel/disambiguate.ml | 284 - helm/gTopLevel/disambiguate.mli | 73 - helm/gTopLevel/esempi/and_implies_or.cic | 11 - helm/gTopLevel/esempi/and_implies_or2.cic | 8 - helm/gTopLevel/esempi/apply.cic | 21 - helm/gTopLevel/esempi/bug.cic | 22 - .../gTopLevel/esempi/calcolo_proposizioni.cic | 17 - helm/gTopLevel/esempi/conversion.cic | 17 - helm/gTopLevel/esempi/decompose.cic | 8 - helm/gTopLevel/esempi/elim.cic | 13 - helm/gTopLevel/esempi/elim2.cic | 39 - helm/gTopLevel/esempi/evars.cic | 33 - helm/gTopLevel/esempi/fourier.cic | 35 - helm/gTopLevel/esempi/fourier/fourier.cic | 137 - .../esempi/fourier/fourier_benchmarks.cic | 170 - .../esempi/fourier/fourier_make_benchmarks.ml | 61 - helm/gTopLevel/esempi/prova.cic | 16 - helm/gTopLevel/esempi/rewrite.cic | 5 - helm/gTopLevel/esempi/ring/0eq0.cic | 10 - helm/gTopLevel/esempi/ring/aliases.cic | 24 - helm/gTopLevel/esempi/ring/caso0.cic | 23 - helm/gTopLevel/esempi/ring/caso1.cic | 25 - helm/gTopLevel/esempi/ring/caso2.cic | 25 - helm/gTopLevel/esempi/ring/caso3.1.cic | 25 - helm/gTopLevel/esempi/ring/caso3.1bis.cic | 25 - helm/gTopLevel/esempi/ring/caso3.2.cic | 25 - helm/gTopLevel/esempi/ring/caso3.3.cic | 25 - .../esempi/ring/coq_overkill_helm_rulez.cic | 23 - helm/gTopLevel/esempi/ring/novarmap.cic | 13 - .../esempi/ring/novarmap_tofinish.cic | 13 - helm/gTopLevel/esempi/ring/varmap.cic | 14 - helm/gTopLevel/esempi/ring/varmap2.cic | 14 - helm/gTopLevel/esempi/ring/varmap_trivial.cic | 14 - .../gTopLevel/esempi/ring/varmap_trivial2.cic | 14 - .../gTopLevel/esempi/ring/varmap_trivial3.cic | 14 - .../ring/varmap_trivial_molte_variabili.cic | 14 - helm/gTopLevel/esempi/sets.cic | 17 - helm/gTopLevel/esempi/various.cic | 7 - helm/gTopLevel/gTopLevel.ml | 2880 --- helm/gTopLevel/hbugs.ml | 133 - helm/gTopLevel/hbugs.mli | 40 - helm/gTopLevel/invokeTactics.ml | 472 - helm/gTopLevel/invokeTactics.mli | 110 - helm/gTopLevel/logicalOperations.ml | 113 - helm/gTopLevel/logicalOperations.mli | 32 - helm/gTopLevel/proofEngine.ml | 257 - helm/gTopLevel/proofEngine.mli | 106 - helm/gTopLevel/rootcontent.xsl | 94 - helm/gTopLevel/script.sh | 22 - helm/gTopLevel/termEditor.ml | 113 - helm/gTopLevel/termEditor.mli | 51 - helm/gTopLevel/termViewer.ml | 294 - helm/gTopLevel/termViewer.mli | 102 - helm/gTopLevel/texTermEditor.ml | 211 - helm/gTopLevel/texTermEditor.mli | 52 - helm/gTopLevel/xmlDiff.ml | 394 - helm/gTopLevel/xmlDiff.mli | 30 - helm/graphs/tools/.cvsignore | 7 - helm/graphs/tools/Makefile | 50 - helm/graphs/tools/drawGraph.ml | 112 - helm/graphs/tools/draw_graph.cgi | 60 - helm/graphs/tools/mk_html.pl | 49 - helm/graphs/tools/simplify_deps/.cvsignore | 5 - helm/graphs/tools/simplify_deps/Makefile | 12 - .../tools/simplify_deps/simplify_deps.ml | 102 - helm/graphs/tools/uriSetQueue.ml | 198 - helm/graphs/tools/uri_set_queue.cgi | 143 - helm/hbugs/Makefile | 30 - helm/hbugs/broker/.cvsignore | 8 - helm/hbugs/broker/.depend | 4 - helm/hbugs/broker/Makefile | 61 - helm/hbugs/broker/Makefile.overrides | 0 helm/hbugs/broker/hbugs_broker.ml | 292 - helm/hbugs/broker/hbugs_broker_ctl.sh | 15 - helm/hbugs/broker/hbugs_broker_registry.ml | 315 - helm/hbugs/broker/hbugs_broker_registry.mli | 87 - helm/hbugs/broker/run/.cvsignore | 1 - helm/hbugs/client/.cvsignore | 9 - helm/hbugs/client/Makefile | 37 - helm/hbugs/client/hbugs_client.ml | 414 - helm/hbugs/client/hbugs_client.mli | 25 - helm/hbugs/client/hbugs_gui.glade | 661 - helm/hbugs/client/main.ml | 41 - helm/hbugs/common/.cvsignore | 6 - helm/hbugs/common/.depend | 11 - helm/hbugs/common/Makefile | 51 - helm/hbugs/common/Makefile.overrides | 6 - helm/hbugs/common/hbugs_common.ml | 46 - helm/hbugs/common/hbugs_common.mli | 32 - helm/hbugs/common/hbugs_id_generator.ml | 65 - helm/hbugs/common/hbugs_id_generator.mli | 35 - helm/hbugs/common/hbugs_messages.ml | 362 - helm/hbugs/common/hbugs_messages.mli | 49 - helm/hbugs/common/hbugs_misc.ml | 120 - helm/hbugs/common/hbugs_misc.mli | 50 - helm/hbugs/common/hbugs_types.ml | 104 - helm/hbugs/common/threadSafe.ml | 96 - helm/hbugs/doc/.cvsignore | 1 - helm/hbugs/doc/hbugs.dia | Bin 1927 -> 0 bytes helm/hbugs/meta/.cvsignore | 3 - helm/hbugs/meta/META.hbugs-client.in | 4 - helm/hbugs/meta/META.hbugs-common.in | 4 - helm/hbugs/meta/META.hbugs-thread-safe.in | 4 - helm/hbugs/meta/Makefile | 12 - helm/hbugs/test/.cvsignore | 7 - helm/hbugs/test/HBUGS_MESSAGES.xml | 144 - helm/hbugs/test/Makefile | 5 - helm/hbugs/test/test_serialization.ml | 70 - helm/hbugs/tutors/.cvsignore | 28 - helm/hbugs/tutors/INDEX.xml | 114 - helm/hbugs/tutors/Makefile | 55 - helm/hbugs/tutors/build_tutors.ml | 118 - helm/hbugs/tutors/hbugs_deity.ml | 101 - helm/hbugs/tutors/hbugs_deity.mli | 33 - helm/hbugs/tutors/hbugs_tutor.TPL.ml | 41 - helm/hbugs/tutors/hbugs_tutors_common.ml | 241 - helm/hbugs/tutors/hbugs_tutors_common.mli | 59 - helm/hbugs/tutors/ls_tutors.ml | 55 - helm/hbugs/tutors/run/.cvsignore | 1 - helm/hbugs/tutors/sabba.sh | 47 - .../tutors/search_pattern_apply_tutor.ml | 125 - helm/header/getheader.xml | 21 - helm/header/provaurl | 1 - helm/header/provaurl1 | 2 - helm/header/setheader.xsl | 33 - helm/helm_data/.cvsignore | 1 - helm/helm_data/AUTHORS | 4 - helm/helm_data/COPYING | 340 - helm/helm_data/ChangeLog | 1 - helm/helm_data/LICENSE | 22 - helm/helm_data/LICENSE.ml | 25 - helm/helm_data/LICENSE.script | 22 - helm/helm_data/LICENSE.xml | 24 - helm/helm_data/Makefile.in | 23 - helm/helm_data/NEWS | 1 - helm/helm_data/README | 9 - helm/helm_data/config.cache.pkg | 4 - helm/helm_data/configure.in | 61 - helm/helm_data/helm_data.spec.in | 34 - helm/helmpot/.cvsignore | 18 - helm/helmpot/AUTHORS | 1 - helm/helmpot/ChangeLog | 0 helm/helmpot/LICENSE | 23 - helm/helmpot/Makefile.am | 26 - helm/helmpot/NEWS | 0 helm/helmpot/README | 18 - helm/helmpot/acconfig.h | 47 - helm/helmpot/configure.in | 70 - helm/helmpot/debian/changelog | 42 - helm/helmpot/debian/control | 14 - helm/helmpot/debian/copyright | 30 - helm/helmpot/debian/docs | 2 - helm/helmpot/debian/rules | 75 - helm/helmpot/guiGTK.c | 684 - helm/helmpot/guiGTK.h | 50 - helm/helmpot/helmpot.spec.in | 24 - helm/helmpot/main.c | 121 - helm/helmpot/pot_mask | 6 - helm/http_getter/.cvsignore | 9 - helm/http_getter/.depend | 35 - helm/http_getter/AUTHORS | 11 - helm/http_getter/BUGS | 0 helm/http_getter/COPYING | 340 - helm/http_getter/ChangeLog | 6 - helm/http_getter/Makefile | 88 - helm/http_getter/Makefile.overrides | 2 - helm/http_getter/NEWS | 6 - helm/http_getter/README | 7 - .../doc/http_getter.conf.xml.sample | 26 - helm/http_getter/http_getter.ml | 519 - helm/http_getter/http_getter_cache.ml | 204 - helm/http_getter/http_getter_cache.mli | 45 - helm/http_getter/http_getter_common.ml | 137 - helm/http_getter/http_getter_common.mli | 73 - helm/http_getter/http_getter_const.ml | 108 - helm/http_getter/http_getter_const.mli | 36 - helm/http_getter/http_getter_debugger.ml | 32 - helm/http_getter/http_getter_debugger.mli | 31 - helm/http_getter/http_getter_env.ml | 177 - helm/http_getter/http_getter_env.mli | 77 - helm/http_getter/http_getter_map.ml | 96 - helm/http_getter/http_getter_map.mli | 44 - helm/http_getter/http_getter_misc.ml | 281 - helm/http_getter/http_getter_misc.mli | 85 - helm/http_getter/http_getter_types.ml | 51 - helm/http_getter/panel/.cvsignore | 1 - helm/http_getter/panel/Makefile | 12 - helm/http_getter/panel/control.html | 121 - helm/http_getter/panel/control.js | 35 - helm/http_getter/panel/index.html | 8 - helm/http_getter/panel/welcome.html | 6 - helm/http_getter/threadSafe.ml | 98 - helm/http_getter/threadSafe.mli | 44 - helm/http_getter/tools/dump_db.ml | 6 - helm/http_getter/tools/dump_db.pl | 19 - helm/http_getter/tools/uri_escape.pl | 16 - helm/http_getter/tools/uri_unescape.pl | 15 - helm/http_getter/zack.ml | 475 - helm/http_getter/zack.mli | 149 - helm/hxsp/config | 47 - helm/hxsp/hxsp.pl | 1250 - helm/hxsp/make.pl | 17 - helm/hxsp/msg/error.en | 45 - helm/hxsp/msg/error.it | 46 - helm/hxsp/msg/message.en | 96 - helm/hxsp/msg/message.it | 96 - helm/hxsp/splitted/0.init.p.pl | 30 - helm/hxsp/splitted/1.globvars.p.pl | 95 - helm/hxsp/splitted/2.start.p.pl | 49 - helm/hxsp/splitted/3.daemon.p.pl | 131 - helm/hxsp/splitted/4.hash.p.pl | 150 - helm/hxsp/splitted/5.libxslt.p.pl | 174 - helm/hxsp/splitted/6.commands.p.pl | 215 - helm/hxsp/splitted/7.qsparse.p.pl | 172 - helm/hxsp/splitted/8.strrep.p.pl | 76 - helm/hxsp/splitted/9.load.p.pl | 149 - helm/hxsp/tpl/ok.tpl | 5 - helm/hxsp/tpl/operror.tpl | 5 - helm/hxsp/tpl/synerror.tpl | 6 - helm/interface/.cvsignore | 27 - helm/interface/.depend | 94 - helm/interface/AUTHORS | 3 - helm/interface/COPYING | 340 - helm/interface/ChangeLog | 1 - helm/interface/Makefile.in | 204 - helm/interface/NEWS | 1 - helm/interface/README | 8 - helm/interface/TEMPI | 214 - helm/interface/WGET | 3 - helm/interface/annotation2Xml.ml | 228 - helm/interface/annotationParser.ml | 55 - helm/interface/annotationParser2.ml | 129 - helm/interface/cic.ml | 162 - helm/interface/cic2Xml.ml | 255 - helm/interface/cicAnnotationHinter.ml | 381 - helm/interface/cicCache.ml | 212 - helm/interface/cicCache.mli | 81 - helm/interface/cicCooking.ml | 217 - helm/interface/cicCooking.mli | 31 - helm/interface/cicFindParameters.ml | 162 - helm/interface/cicParser.ml | 95 - helm/interface/cicParser.mli | 44 - helm/interface/cicParser2.ml | 289 - helm/interface/cicParser2.mli | 57 - helm/interface/cicParser3.ml | 564 - helm/interface/cicParser3.mli | 67 - helm/interface/cicPp.ml | 211 - helm/interface/cicPp.mli | 41 - helm/interface/cicReduction.ml | 278 - helm/interface/cicReduction.mli | 34 - helm/interface/cicSubstitution.ml | 140 - helm/interface/cicSubstitution.mli | 28 - helm/interface/cicTypeChecker.ml | 1255 - helm/interface/cicTypeChecker.mli | 34 - helm/interface/cicXPath.ml | 77 - helm/interface/clientHTTP.ml | 49 - helm/interface/config.cache.pkg | 4 - helm/interface/configuration.ml.in | 117 - helm/interface/configure.in | 206 - helm/interface/deannotate.ml | 98 - helm/interface/experiment.ml | 109 - helm/interface/fix_params.ml | 74 - helm/interface/getter.ml | 110 - helm/interface/getter.mli | 53 - helm/interface/helm_gtk_interface.spec.in | 32 - helm/interface/helm_wget.in | 19 - helm/interface/mmlinterface.ml | 518 - helm/interface/pxpUriResolver.ml | 128 - helm/interface/reduction.ml | 95 - helm/interface/styleConfiguration.ml | 95 - helm/interface/theory.ml | 34 - helm/interface/theoryCache.ml | 57 - helm/interface/theoryParser.ml | 54 - helm/interface/theoryParser2.ml | 66 - helm/interface/theoryTypeChecker.ml | 54 - helm/interface/toglie_helm_xref.pl | 8 - helm/interface/toglie_helm_xref.sh | 5 - helm/interface/uriManager.ml | 111 - .../uriManager.ml.implementazione_banale | 18 - .../uriManager.ml.implementazione_doppia | 86 - .../uriManager.ml.implementazione_semplice | 39 - helm/interface/uriManager.mli | 40 - helm/interface/uris_of_filenames.pl | 17 - helm/interface/xml.ml | 97 - helm/interface/xml.mli | 60 - helm/interface/xsltProcessor.ml | 79 - helm/mathql/grammar.txt | 148 - helm/mathql/homepage/authors.html | 104 - helm/mathql/homepage/documentation.html | 166 - helm/mathql/homepage/features.html | 166 - helm/mathql/homepage/implementation.html | 156 - helm/mathql/homepage/index.html | 137 - helm/mathql/homepage/links.html | 119 - helm/mathql/homepage/whatsnew.html | 269 - helm/mathql/query.xml | 31 - helm/mathql/result.xml | 20 - helm/mathql/xmathql.dtd | 165 - helm/mathql/xmqlresult.dtd | 59 - helm/mathql_db_map.txt | 26 - helm/mathql_test/.cvsignore | 2 - helm/mathql_test/.depend | 6 - helm/mathql_test/Makefile | 79 - helm/mathql_test/mQGTopLexer.mll | 71 - helm/mathql_test/mQGTopParser.mly | 107 - helm/mathql_test/mqgtop.ml | 302 - helm/mathql_test/mqitop.ml | 52 - helm/mathql_test/mqtop.ml | 40 - helm/meta_style/.cvsignore | 5 - helm/meta_style/Makefile | 56 - helm/meta_style/algebra.xml | 204 - helm/meta_style/arith.xml | 69 - helm/meta_style/basic.xml | 77 - helm/meta_style/meta_cic2mathml.xsl | 1298 - helm/meta_style/modeset.xsl | 65 - helm/meta_style/operator.dtd | 71 - helm/meta_style/positive.xsl | 177 - helm/meta_style/reals.xml | 163 - helm/meta_style/set.xml | 314 - helm/meta_style/subst.pl | 17 - helm/meta_style/xslt_index.txt | 7 - helm/metadata/create/.cvsignore | 1 - helm/metadata/create2/Makefile | 27 - helm/metadata/create2/fix_rdf.pl | 29 - helm/metadata/create2/invert.pl | 31 - helm/metadata/create2/mk_forward/.cvsignore | 1 - helm/metadata/create2/mk_forward/.depend | 0 helm/metadata/create2/mk_forward/Makefile | 41 - .../metadata/create2/mk_forward/mk_forward.ml | 385 - helm/metadata/create2/mkindex.sh | 4 - helm/metadata/create2/touch/.cvsignore | 1 - helm/metadata/create2/touch/.depend | 0 helm/metadata/create2/touch/Makefile | 41 - helm/metadata/create2/touch/touch.ml | 132 - helm/metadata/create2/uris_of_filenames.pl | 14 - helm/metadata/create4/METADATA/Makefile | 17 - helm/metadata/create4/METADATA/meta_lex.l | 263 - helm/metadata/create4/METADATA/sthandler.c | 263 - helm/metadata/create4/METADATA/sthandler.h | 8 - helm/metadata/create4/Makefile | 27 - helm/metadata/create_V7_mowgli/.cvsignore | 2 - .../create_V7_mowgli/METADATA/.cvsignore | 4 - .../create_V7_mowgli/METADATA/Makefile | 30 - .../metadata/create_V7_mowgli/METADATA/README | 9 - .../create_V7_mowgli/METADATA/meta_lex.l | 363 - .../create_V7_mowgli/METADATA/meta_lex_ind.l | 400 - .../create_V7_mowgli/METADATA/sthandler.c | 418 - .../create_V7_mowgli/METADATA/sthandler.h | 8 - .../create_V7_mowgli/METADATA/sthandler_ind.c | 423 - .../create_V7_mowgli/METADATA/sthandler_ind.h | 8 - helm/metadata/create_V7_mowgli/Makefile | 30 - helm/metadata/create_V7_mowgli/fix_rdf.pl | 39 - .../forward_rel_or_sort_footer.txt | 1 - .../forward_rel_or_sort_header.txt | 9 - helm/metadata/create_V7_mowgli/invert.pl | 40 - helm/metadata/create_V7_mowgli/mkindex.sh | 4 - .../create_V7_mowgli/touch/.cvsignore | 1 - helm/metadata/create_V7_mowgli/touch/.depend | 0 helm/metadata/create_V7_mowgli/touch/Makefile | 41 - helm/metadata/create_V7_mowgli/touch/touch.ml | 132 - .../create_V7_mowgli/uris_of_filenames.pl | 14 - helm/metadata/dc_mowgli/.cvsignore | 1 - helm/metadata/dc_mowgli/Makefile | 7 - helm/metadata/dc_mowgli/create_dc_indexes | 37 - helm/metadata/dc_mowgli/create_dc_tables | 18 - helm/metadata/dc_mowgli/drop_dc_tables | 18 - helm/metadata/dc_mowgli/mkindex.sh | 4 - helm/metadata/dc_mowgli/upload.pl | 51 - helm/metadata/dc_mowgli/uris_of_filenames.pl | 14 - helm/metadata/postgresql_V7_mowgli/.cvsignore | 6 - helm/metadata/postgresql_V7_mowgli/Makefile | 16 - helm/metadata/postgresql_V7_mowgli/README | 29 - .../postgresql_V7_mowgli/inserisci.pl | 24 - .../postgresql_V7_mowgli/inserisci_names.pl | 13 - .../metadata_for_names/.cvsignore | 1 - .../metadata_for_names/Makefile | 2 - .../postgresql_V7_mowgli/metainfo.xsl | 60 - .../postgresql_V7_mowgli/upload_rel.pl | 30 - .../postgresql_V7_mowgli/upload_sort.pl | 36 - helm/minidom/.cvsignore | 23 - helm/minidom/AUTHORS | 1 - helm/minidom/COPYING | 340 - helm/minidom/ChangeLog | 0 helm/minidom/HEADER | 24 - helm/minidom/INSTALL | 182 - helm/minidom/Makefile.am | 42 - helm/minidom/NEWS | 0 helm/minidom/README | 0 helm/minidom/TODO | 2 - helm/minidom/acconfig.h | 36 - helm/minidom/config.guess | 1308 - helm/minidom/config.sub | 1417 -- helm/minidom/configure.in | 82 - helm/minidom/debian/README.helm | 7 - helm/minidom/debian/autopippe.helm | 5 - helm/minidom/debian/changelog | 40 - helm/minidom/debian/control | 23 - helm/minidom/debian/copyright | 28 - helm/minidom/debian/debianize.helm | 97 - helm/minidom/debian/docs | 2 - helm/minidom/debian/garbage.helm | 2 - helm/minidom/debian/libminidom-dev.files | 5 - .../debian/libminidom-dev.undocumented | 1 - helm/minidom/debian/libminidom0.files | 1 - helm/minidom/debian/libminidom0.postinst | 47 - helm/minidom/debian/rules | 101 - helm/minidom/minidom-config.in | 48 - helm/minidom/minidom.c | 393 - helm/minidom/minidom.h | 105 - helm/minidom/minidom.spec.in | 31 - helm/minidom/stamp-h.in | 1 - helm/mowgli/home/htaccess | 5 - helm/mowgli/home/html/.cvsignore | 12 - helm/mowgli/home/html/Makefile | 359 - .../html/deliverables/distribution/.cvsignore | 2 - .../.cvsignore | 2 - .../html/deliverables/interfaces/.cvsignore | 5 - .../html/deliverables/metadata/.cvsignore | 2 - .../project-management/.cvsignore | 4 - .../requirement-analysis/.cvsignore | 3 - .../testing-and-validation/.cvsignore | 4 - .../deliverables/transformation/.cvsignore | 7 - helm/mowgli/home/html/members/.cvsignore | 3 - .../mowgli/home/html/mowgli-events/.cvsignore | 1 - helm/mowgli/home/html/people/aei/.cvsignore | 6 - .../home/html/people/bologna/.cvsignore | 5 - helm/mowgli/home/html/people/dfki/.cvsignore | 6 - helm/mowgli/home/html/people/inria/.cvsignore | 10 - .../home/html/people/nijmegen/.cvsignore | 9 - .../home/html/people/trusted-logic/.cvsignore | 3 - helm/mowgli/home/html/proposal/.cvsignore | 9 - helm/mowgli/home/html/publications/.cvsignore | 1 - .../home/html/publications/mowgli/.cvsignore | 2 - .../home/html/publications/others/.cvsignore | 18 - helm/mowgli/home/html/sites/.cvsignore | 6 - helm/mowgli/home/html/slides/.cvsignore | 1 - helm/mowgli/home/html/software/.cvsignore | 1 - .../mowgli/home/html/work-packages/.cvsignore | 9 - helm/mowgli/home/images/NextArrow.gif | Bin 623 -> 0 bytes helm/mowgli/home/images/PreviousArrow.gif | Bin 632 -> 0 bytes helm/mowgli/home/images/arch.png | Bin 24641 -> 0 bytes helm/mowgli/home/images/gantt_new.png | Bin 19172 -> 0 bytes helm/mowgli/home/images/istbutton.gif | Bin 47319 -> 0 bytes helm/mowgli/home/images/istbutton_small.gif | Bin 3128 -> 0 bytes helm/mowgli/home/images/istdrop.gif | Bin 14622 -> 0 bytes helm/mowgli/home/images/logo.png | Bin 11156 -> 0 bytes helm/mowgli/home/images/mowgli_combo.gif | Bin 47856 -> 0 bytes helm/mowgli/home/images/mowgli_combo.png | Bin 63492 -> 0 bytes helm/mowgli/home/images/mowgli_parquet.png | Bin 70983 -> 0 bytes .../home/images/mowgli_parquet_light.png | Bin 46885 -> 0 bytes helm/mowgli/home/images/pert_new.png | Bin 26056 -> 0 bytes .../misc/contract/MOWGLIfinal-for-ceto.zip | Bin 852811 -> 0 bytes .../misc/contract/RTD-annex2-rtd-final.pdf | Bin 179026 -> 0 bytes .../home/misc/contract/RTD-annex3-ist-fet.pdf | Bin 16433 -> 0 bytes .../misc/contract/RTD-audit-cert-annex4.pdf | Bin 19017 -> 0 bytes .../home/misc/contract/mowgli-an1-final.pdf | Bin 519358 -> 0 bytes .../home/misc/contract/mowgli-ctr-final.pdf | Bin 49544 -> 0 bytes helm/mowgli/home/misc/kick-off/AIP_Intro.ppt | Bin 880640 -> 0 bytes helm/mowgli/home/misc/kick-off/KM2002GO.ps | 1984 -- .../home/misc/kick-off/KM2002GO_mathweb.ps | 506 - .../home/misc/kick-off/MoWGLI-LogiCal.ps | 1919 -- helm/mowgli/home/misc/kick-off/lemme2.ppt | Bin 855024 -> 0 bytes helm/mowgli/home/misc/proposal/MOWGLI.xls | Bin 2235392 -> 0 bytes helm/mowgli/home/misc/proposal/mowgli.pdf | Bin 519358 -> 0 bytes helm/mowgli/home/misc/proposal/mowgli.ps | 9679 -------- helm/mowgli/home/misc/proposal/proposal.tgz | Bin 1384283 -> 0 bytes helm/mowgli/home/style/mowgli.css | 90 - helm/mowgli/home/templates/index.html | 17 - .../mowgli/home/templates/ml-help-example.txt | 101 - helm/mowgli/home/xml/Makefile | 15 - helm/mowgli/home/xml/consortium.xml | 191 - .../home/xml/deliverables/deliverable.dtd | 25 - .../xml/deliverables/distribution/d5a.xml | 12 - .../xml/deliverables/distribution/d5b.xml | 12 - .../d7a.xml | 12 - .../d7b.xml | 12 - .../home/xml/deliverables/interfaces/d4a.xml | 12 - .../home/xml/deliverables/interfaces/d4b.xml | 12 - .../home/xml/deliverables/interfaces/d4c.xml | 12 - .../home/xml/deliverables/interfaces/d4d.xml | 12 - .../home/xml/deliverables/interfaces/d4e.xml | 12 - .../home/xml/deliverables/metadata/d3a.xml | 12 - .../home/xml/deliverables/metadata/d3b.xml | 12 - .../deliverables/project-management/d0a.xml | 12 - .../deliverables/project-management/d0b.xml | 12 - .../deliverables/project-management/d0c.xml | 12 - .../deliverables/project-management/d0d.xml | 12 - .../deliverables/requirement-analysis/d1a.xml | 12 - .../deliverables/requirement-analysis/d1b.xml | 12 - .../deliverables/requirement-analysis/d1c.xml | 12 - .../testing-and-validation/d6a.xml | 12 - .../testing-and-validation/d6b.xml | 12 - .../testing-and-validation/d6c.xml | 12 - .../testing-and-validation/d6d.xml | 12 - .../xml/deliverables/transformation/d2a.xml | 12 - .../xml/deliverables/transformation/d2b.xml | 12 - .../xml/deliverables/transformation/d2c.xml | 12 - .../xml/deliverables/transformation/d2d.xml | 12 - .../xml/deliverables/transformation/d2e.xml | 12 - .../xml/deliverables/transformation/d2f.xml | 12 - .../xml/deliverables/transformation/d2g.xml | 12 - helm/mowgli/home/xml/home.xml | 85 - helm/mowgli/home/xml/members-index.xml | 90 - helm/mowgli/home/xml/members/kick-off.xml | 202 - helm/mowgli/home/xml/menu.xml | 112 - helm/mowgli/home/xml/mowgli-events.xml | 29 - .../home/xml/mowgli-events/kick-off.xml | 183 - .../home/xml/mowgli-xhtml1-transitional.dtd | 1223 - helm/mowgli/home/xml/news.xml | 118 - helm/mowgli/home/xml/other-events.xml | 370 - helm/mowgli/home/xml/people/aei/kelley.xml | 10 - helm/mowgli/home/xml/people/aei/pollney.xml | 19 - helm/mowgli/home/xml/people/aei/schutz.xml | 32 - helm/mowgli/home/xml/people/aei/velden.xml | 31 - helm/mowgli/home/xml/people/aei/wegner.xml | 52 - helm/mowgli/home/xml/people/aei/weyher.xml | 18 - .../home/xml/people/bologna/asperti.xml | 56 - helm/mowgli/home/xml/people/bologna/guidi.xml | 17 - .../home/xml/people/bologna/padovani.xml | 18 - .../home/xml/people/bologna/sacerdoti.xml | 19 - .../mowgli/home/xml/people/bologna/schena.xml | 18 - helm/mowgli/home/xml/people/dfki/goguadze.xml | 19 - helm/mowgli/home/xml/people/dfki/kohlhase.xml | 11 - .../mowgli/home/xml/people/dfki/libbrecht.xml | 15 - helm/mowgli/home/xml/people/dfki/melis.xml | 29 - helm/mowgli/home/xml/people/dfki/moschner.xml | 21 - helm/mowgli/home/xml/people/dfki/siekmann.xml | 33 - helm/mowgli/home/xml/people/index.xml | 64 - helm/mowgli/home/xml/people/inria/amerkad.xml | 10 - helm/mowgli/home/xml/people/inria/bertot.xml | 11 - helm/mowgli/home/xml/people/inria/chicli.xml | 11 - .../mowgli/home/xml/people/inria/delahaye.xml | 11 - .../mowgli/home/xml/people/inria/herbelin.xml | 20 - helm/mowgli/home/xml/people/inria/naciri.xml | 11 - helm/mowgli/home/xml/people/inria/pottier.xml | 13 - helm/mowgli/home/xml/people/inria/rideau.xml | 13 - helm/mowgli/home/xml/people/inria/thery.xml | 11 - helm/mowgli/home/xml/people/inria/werner.xml | 20 - .../home/xml/people/nijmegen/barendregt.xml | 12 - .../home/xml/people/nijmegen/barreiro.xml | 10 - .../mowgli/home/xml/people/nijmegen/cohen.xml | 12 - .../home/xml/people/nijmegen/cruz-filipe.xml | 11 - .../home/xml/people/nijmegen/geuvers.xml | 51 - .../mowgli/home/xml/people/nijmegen/niqui.xml | 11 - .../mowgli/home/xml/people/nijmegen/stein.xml | 11 - .../mowgli/home/xml/people/nijmegen/synek.xml | 11 - .../home/xml/people/nijmegen/wiedijk.xml | 12 - helm/mowgli/home/xml/people/person.dtd | 29 - .../xml/people/trusted-logic/bolignano.xml | 44 - .../home/xml/people/trusted-logic/gimenez.xml | 24 - .../xml/people/trusted-logic/loiseaux.xml | 17 - helm/mowgli/home/xml/project.xml | 43 - .../home/xml/proposal/EC-contribution.xml | 187 - .../mowgli/home/xml/proposal/contribution.xml | 95 - .../proposal/econ-scient-tech-prospects.xml | 126 - helm/mowgli/home/xml/proposal/innovation.xml | 146 - .../home/xml/proposal/project-components.xml | 50 - .../home/xml/proposal/project-management.xml | 256 - .../home/xml/proposal/project-objectives.xml | 156 - .../home/xml/proposal/project-planning.xml | 50 - .../home/xml/proposal/project-summary.xml | 120 - helm/mowgli/home/xml/publications/index.xml | 36 - .../xml/publications/mowgli/crimea2002_aw.xml | 14 - .../mowgli/crimea2002_aw_on_line.xml | 411 - .../xml/publications/others/category_al.xml | 15 - .../home/xml/publications/others/cc.xml | 8 - .../publications/others/crimea2001_apss.xml | 15 - .../home/xml/publications/others/cup_hp91.xml | 16 - .../home/xml/publications/others/cup_hp93.xml | 16 - .../home/xml/publications/others/cup_s.xml | 9 - .../home/xml/publications/others/cup_s2.xml | 9 - .../publications/others/extreme2001_apss.xml | 13 - .../home/xml/publications/others/har_bg.xml | 11 - .../home/xml/publications/others/jep_ws.xml | 13 - .../home/xml/publications/others/jep_wwsw.xml | 22 - .../xml/publications/others/jlp2001_scg.xml | 18 - .../publications/others/mathml2000_apss.xml | 13 - .../home/xml/publications/others/mscs_gb.xml | 15 - .../xml/publications/others/publication.dtd | 17 - .../xml/publications/others/tcs2001_og.xml | 13 - .../publications/others/tphols2000_gwz.xml | 15 - .../publications/others/tphols2001_apss.xml | 14 - .../home/xml/publications/others/w3c_bl98.xml | 12 - helm/mowgli/home/xml/sites/aei.xml | 84 - helm/mowgli/home/xml/sites/bologna.xml | 51 - helm/mowgli/home/xml/sites/dfki.xml | 72 - helm/mowgli/home/xml/sites/inria.xml | 119 - helm/mowgli/home/xml/sites/nijmegen.xml | 58 - helm/mowgli/home/xml/sites/site.dtd | 32 - helm/mowgli/home/xml/sites/trusted-logic.xml | 35 - helm/mowgli/home/xml/slides/mowgligroup.xml | 87 - helm/mowgli/home/xml/software/index.xml | 28 - .../home/xml/work-packages/distribution.xml | 63 - helm/mowgli/home/xml/work-packages/index.xml | 121 - ...rmation-dissemination-and-exploitation.xml | 53 - .../home/xml/work-packages/interfaces.xml | 69 - .../home/xml/work-packages/metadata.xml | 57 - .../xml/work-packages/project-management.xml | 68 - .../work-packages/requirement-analysis.xml | 94 - .../work-packages/testing-and-validation.xml | 59 - .../home/xml/work-packages/transformation.xml | 105 - .../home/xml/work-packages/work-package.dtd | 50 - .../mowgli/home/xsl/approaching-deadlines.xsl | 25 - helm/mowgli/home/xsl/common.xsl | 215 - helm/mowgli/home/xsl/consortium.xsl | 48 - helm/mowgli/home/xsl/deadlines.xsl | 73 - helm/mowgli/home/xsl/deliverable.xsl | 57 - helm/mowgli/home/xsl/events.xsl | 97 - helm/mowgli/home/xsl/latest-news.xsl | 23 - helm/mowgli/home/xsl/management.xsl | 201 - helm/mowgli/home/xsl/minutes.xsl | 121 - helm/mowgli/home/xsl/news.xsl | 59 - helm/mowgli/home/xsl/people-list.xsl | 75 - helm/mowgli/home/xsl/person.xsl | 120 - helm/mowgli/home/xsl/project.xsl | 50 - helm/mowgli/home/xsl/publication.xsl | 51 - helm/mowgli/home/xsl/publications-index.xsl | 84 - helm/mowgli/home/xsl/site.xsl | 102 - helm/mowgli/home/xsl/work-package.xsl | 115 - helm/mowgli/home/xsl/work-packages_index.xsl | 103 - helm/mowgli/home/xsl/xhtml-content.xsl | 140 - helm/nuprl_stylesheets/nuprl_abstract.xsl | 170 - .../nuprl_stylesheets/nuprl_annotatedpres.xsl | 61 - .../nuprl_content_to_html2.xsl | 3047 --- helm/nuprl_stylesheets/nuprl_expand.xsl | 108 - helm/nuprl_stylesheets/nuprl_html_arith.xsl | 650 - helm/nuprl_stylesheets/nuprl_html_basic.xsl | 532 - helm/nuprl_stylesheets/nuprl_link.xsl | 127 - .../nuprl_stylesheets/nuprl_links_library.xsl | 371 - helm/nuprl_stylesheets/nuprl_mmlextension.xsl | 3046 --- helm/nuprl_stylesheets/nuprl_proof.xsl | 72 - helm/nuprl_stylesheets/nuprl_rules.xsl | 876 - helm/nuprl_stylesheets/nuprl_term.xsl | 598 - helm/nuprl_stylesheets/nuprl_tree.xsl | 25 - helm/nuprl_stylesheets/xslt_index.txt | 13 - helm/ocaml/.cvsignore | 28 - helm/ocaml/META.helm-cic.src | 5 - helm/ocaml/META.helm-cic_annotations.src | 5 - .../ocaml/META.helm-cic_annotations_cache.src | 5 - helm/ocaml/META.helm-cic_cache.src | 5 - helm/ocaml/META.helm-cic_omdoc.src | 4 - helm/ocaml/META.helm-cic_proof_checking.src | 7 - helm/ocaml/META.helm-cic_textual_parser.src | 5 - helm/ocaml/META.helm-cic_transformations.src | 5 - helm/ocaml/META.helm-cic_unification.src | 5 - helm/ocaml/META.helm-getter.src | 5 - helm/ocaml/META.helm-mathql.src | 5 - helm/ocaml/META.helm-mathql_generator.src | 5 - helm/ocaml/META.helm-mathql_interpreter.src | 6 - helm/ocaml/META.helm-pxp.src | 5 - helm/ocaml/META.helm-tactics.src | 4 - .../META.helm-tex_cic_textual_parser.src | 5 - helm/ocaml/META.helm-urimanager.src | 5 - helm/ocaml/META.helm-xml.src | 5 - helm/ocaml/Makefile.common.in | 81 - helm/ocaml/Makefile.in | 52 - helm/ocaml/cic/.cvsignore | 1 - helm/ocaml/cic/.depend | 12 - helm/ocaml/cic/Makefile | 10 - helm/ocaml/cic/cic.ml | 188 - helm/ocaml/cic/cicParser.ml | 84 - helm/ocaml/cic/cicParser.mli | 49 - helm/ocaml/cic/cicParser2.ml | 249 - helm/ocaml/cic/cicParser2.mli | 52 - helm/ocaml/cic/cicParser3.ml | 550 - helm/ocaml/cic/cicParser3.mli | 63 - helm/ocaml/cic/deannotate.ml | 124 - helm/ocaml/cic/deannotate.mli | 36 - helm/ocaml/cic_annotations/.cvsignore | 1 - helm/ocaml/cic_annotations/.depend | 8 - helm/ocaml/cic_annotations/Makefile | 11 - .../cic_annotations/cicAnnotation2Xml.ml | 165 - .../cic_annotations/cicAnnotation2Xml.mli | 38 - .../cic_annotations/cicAnnotationParser.ml | 53 - .../cic_annotations/cicAnnotationParser.mli | 36 - .../cic_annotations/cicAnnotationParser2.ml | 96 - .../cic_annotations/cicAnnotationParser2.mli | 50 - helm/ocaml/cic_annotations/cicXPath.ml | 146 - helm/ocaml/cic_annotations/cicXPath.mli | 39 - helm/ocaml/cic_annotations_cache/.cvsignore | 1 - helm/ocaml/cic_annotations_cache/.depend | 2 - helm/ocaml/cic_annotations_cache/Makefile | 10 - helm/ocaml/cic_annotations_cache/cicCache.ml | 57 - helm/ocaml/cic_annotations_cache/cicCache.mli | 37 - helm/ocaml/cic_cache/.cvsignore | 1 - helm/ocaml/cic_cache/.depend | 2 - helm/ocaml/cic_cache/Makefile | 10 - helm/ocaml/cic_cache/cicCache.ml | 60 - helm/ocaml/cic_cache/cicCache.mli | 37 - helm/ocaml/cic_omdoc/.cvsignore | 1 - helm/ocaml/cic_omdoc/.depend | 17 - helm/ocaml/cic_omdoc/Makefile | 12 - helm/ocaml/cic_omdoc/cic2acic.ml | 438 - helm/ocaml/cic_omdoc/cic2acic.mli | 56 - helm/ocaml/cic_omdoc/cic2content.ml | 940 - helm/ocaml/cic_omdoc/cic2content.mli | 30 - helm/ocaml/cic_omdoc/content.ml | 166 - helm/ocaml/cic_omdoc/content.mli | 156 - helm/ocaml/cic_omdoc/content2cic.ml | 268 - helm/ocaml/cic_omdoc/content2cic.mli | 35 - helm/ocaml/cic_omdoc/contentPp.ml | 156 - helm/ocaml/cic_omdoc/contentPp.mli | 30 - helm/ocaml/cic_omdoc/doubleTypeInference.ml | 688 - helm/ocaml/cic_omdoc/doubleTypeInference.mli | 25 - helm/ocaml/cic_omdoc/eta_fixing.ml | 302 - helm/ocaml/cic_omdoc/eta_fixing.mli | 28 - helm/ocaml/cic_proof_checking/.cvsignore | 4 - helm/ocaml/cic_proof_checking/.depend | 22 - helm/ocaml/cic_proof_checking/Makefile | 27 - .../cic_proof_checking/cicEnvironment.ml | 237 - .../cic_proof_checking/cicEnvironment.mli | 79 - .../cic_proof_checking/cicMiniReduction.ml | 74 - .../cic_proof_checking/cicMiniReduction.mli | 26 - helm/ocaml/cic_proof_checking/cicPp.ml | 247 - helm/ocaml/cic_proof_checking/cicPp.mli | 47 - .../ocaml/cic_proof_checking/cicReduction.mli | 33 - .../cic_proof_checking/cicReductionMachine.ml | 894 - .../cicReductionMachine.mli | 33 - .../cic_proof_checking/cicReductionNaif.ml | 306 - .../cic_proof_checking/cicReductionNaif.mli | 33 - .../cic_proof_checking/cicSubstitution.ml | 412 - .../cic_proof_checking/cicSubstitution.mli | 46 - .../cic_proof_checking/cicTypeChecker.ml | 1785 -- .../cic_proof_checking/cicTypeChecker.mli | 52 - helm/ocaml/cic_proof_checking/logger.ml | 66 - helm/ocaml/cic_proof_checking/logger.mli | 40 - helm/ocaml/cic_textual_parser/.cvsignore | 1 - helm/ocaml/cic_textual_parser/.depend | 10 - helm/ocaml/cic_textual_parser/Makefile | 14 - .../cic_textual_parser/cicTextualLexer.mll | 104 - .../cic_textual_parser/cicTextualParser.mly | 512 - .../cic_textual_parser/cicTextualParser0.ml | 48 - .../cicTextualParserContext.ml | 36 - .../cicTextualParserContext.mli | 31 - helm/ocaml/cic_transformations/.cvsignore | 1 - helm/ocaml/cic_transformations/.depend | 29 - helm/ocaml/cic_transformations/Makefile | 13 - .../cic_transformations/applyStylesheets.ml | 184 - .../cic_transformations/applyStylesheets.mli | 51 - helm/ocaml/cic_transformations/cexpr2pres.ml | 422 - helm/ocaml/cic_transformations/cexpr2pres.mli | 70 - .../cic_transformations/cexpr2pres_hashtbl.ml | 419 - .../cexpr2pres_hashtbl.mli | 49 - helm/ocaml/cic_transformations/cic2Xml.ml | 435 - helm/ocaml/cic_transformations/cic2Xml.mli | 44 - .../ocaml/cic_transformations/content2pres.ml | 883 - .../cic_transformations/content2pres.mli | 37 - .../content_expressions.ml | 398 - .../content_expressions.mli | 62 - helm/ocaml/cic_transformations/misc.ml | 47 - helm/ocaml/cic_transformations/misc.mli | 40 - .../cic_transformations/mpresentation.ml | 223 - .../cic_transformations/mpresentation.mli | 78 - helm/ocaml/cic_transformations/sequentPp.ml | 116 - helm/ocaml/cic_transformations/sequentPp.mli | 42 - helm/ocaml/cic_transformations/xml2Gdome.ml | 133 - helm/ocaml/cic_transformations/xml2Gdome.mli | 27 - helm/ocaml/cic_unification/.cvsignore | 1 - helm/ocaml/cic_unification/.depend | 5 - helm/ocaml/cic_unification/Makefile | 9 - helm/ocaml/cic_unification/cicRefine.ml | 365 - helm/ocaml/cic_unification/cicRefine.mli | 40 - helm/ocaml/cic_unification/cicUnification.ml | 703 - helm/ocaml/cic_unification/cicUnification.mli | 85 - helm/ocaml/configure.in | 27 - helm/ocaml/getter/.cvsignore | 1 - helm/ocaml/getter/.depend | 6 - helm/ocaml/getter/Makefile | 10 - helm/ocaml/getter/clientHTTP.ml | 64 - helm/ocaml/getter/clientHTTP.mli | 30 - helm/ocaml/getter/configuration.ml | 122 - helm/ocaml/getter/configuration.mli | 41 - helm/ocaml/getter/getter.ml | 95 - helm/ocaml/getter/getter.mli | 62 - helm/ocaml/mathql/.cvsignore | 1 - helm/ocaml/mathql/.depend | 8 - helm/ocaml/mathql/Makefile | 16 - helm/ocaml/mathql/mQueryTLexer.mll | 132 - helm/ocaml/mathql/mQueryTParser.mly | 314 - helm/ocaml/mathql/mQueryUtil.ml | 231 - helm/ocaml/mathql/mQueryUtil.mli | 54 - helm/ocaml/mathql/mathQL.ml | 131 - helm/ocaml/mathql_generator/.cvsignore | 5 - helm/ocaml/mathql_generator/.depend | 12 - helm/ocaml/mathql_generator/Makefile | 16 - .../mathql_generator/cGMatchConclusion.ml | 153 - .../mathql_generator/cGMatchConclusion.mli | 31 - .../ocaml/mathql_generator/cGSearchPattern.ml | 189 - .../mathql_generator/cGSearchPattern.mli | 37 - helm/ocaml/mathql_generator/mQGTypes.ml | 74 - helm/ocaml/mathql_generator/mQGUtil.ml | 149 - helm/ocaml/mathql_generator/mQGUtil.mli | 74 - .../ocaml/mathql_generator/mQueryGenerator.ml | 189 - .../mathql_generator/mQueryGenerator.mli | 42 - helm/ocaml/mathql_interpreter/.cvsignore | 1 - helm/ocaml/mathql_interpreter/.depend | 21 - helm/ocaml/mathql_interpreter/Makefile | 17 - helm/ocaml/mathql_interpreter/mQIConn.ml | 102 - helm/ocaml/mathql_interpreter/mQIConn.mli | 52 - helm/ocaml/mathql_interpreter/mQIMap.ml | 96 - helm/ocaml/mathql_interpreter/mQIMap.mli | 47 - helm/ocaml/mathql_interpreter/mQIPostgres.ml | 49 - helm/ocaml/mathql_interpreter/mQIPostgres.mli | 35 - helm/ocaml/mathql_interpreter/mQIProperty.ml | 157 - helm/ocaml/mathql_interpreter/mQIProperty.mli | 34 - helm/ocaml/mathql_interpreter/mQIUtil.ml | 153 - helm/ocaml/mathql_interpreter/mQIUtil.mli | 69 - .../mathql_interpreter/mQueryInterpreter.ml | 243 - .../mathql_interpreter/mQueryInterpreter.mli | 29 - helm/ocaml/mathql_interpreter/mQueryMisc.ml | 111 - helm/ocaml/mathql_interpreter/mQueryMisc.mli | 41 - helm/ocaml/pxp/.cvsignore | 1 - helm/ocaml/pxp/.depend | 2 - helm/ocaml/pxp/Makefile | 10 - helm/ocaml/pxp/pxpUrlResolver.ml | 43 - helm/ocaml/pxp/pxpUrlResolver.mli | 27 - helm/ocaml/tactics/.cvsignore | 9 - helm/ocaml/tactics/.depend | 80 - helm/ocaml/tactics/Makefile | 21 - helm/ocaml/tactics/discriminationTactics.ml | 583 - helm/ocaml/tactics/discriminationTactics.mli | 30 - helm/ocaml/tactics/eliminationTactics.ml | 220 - helm/ocaml/tactics/eliminationTactics.mli | 34 - helm/ocaml/tactics/equalityTactics.ml | 236 - helm/ocaml/tactics/equalityTactics.mli | 35 - helm/ocaml/tactics/fourier.ml | 244 - helm/ocaml/tactics/fourier.mli | 27 - helm/ocaml/tactics/fourierR.ml | 1233 - helm/ocaml/tactics/fourierR.mli | 5 - helm/ocaml/tactics/introductionTactics.ml | 60 - helm/ocaml/tactics/introductionTactics.mli | 31 - helm/ocaml/tactics/negationTactics.ml | 73 - helm/ocaml/tactics/negationTactics.mli | 28 - helm/ocaml/tactics/primitiveTactics.ml | 565 - helm/ocaml/tactics/primitiveTactics.mli | 44 - helm/ocaml/tactics/proofEngineHelpers.ml | 148 - helm/ocaml/tactics/proofEngineHelpers.mli | 49 - helm/ocaml/tactics/proofEngineReduction.ml | 867 - helm/ocaml/tactics/proofEngineReduction.mli | 48 - .../tactics/proofEngineStructuralRules.ml | 149 - .../tactics/proofEngineStructuralRules.mli | 27 - helm/ocaml/tactics/proofEngineTypes.ml | 45 - helm/ocaml/tactics/reductionTactics.ml | 127 - helm/ocaml/tactics/reductionTactics.mli | 39 - helm/ocaml/tactics/ring.ml | 594 - helm/ocaml/tactics/ring.mli | 12 - helm/ocaml/tactics/tacticChaser.ml | 97 - helm/ocaml/tactics/tacticChaser.mli | 32 - helm/ocaml/tactics/tacticals.ml | 249 - helm/ocaml/tactics/tacticals.mli | 61 - helm/ocaml/tactics/variousTactics.ml | 96 - helm/ocaml/tactics/variousTactics.mli | 31 - helm/ocaml/tex_cic_textual_parser/.cvsignore | 1 - helm/ocaml/tex_cic_textual_parser/.depend | 9 - helm/ocaml/tex_cic_textual_parser/Makefile | 14 - .../texCicTextualLexer.mll | 122 - .../texCicTextualParser.mly | 598 - .../texCicTextualParser0.ml | 27 - .../texCicTextualParserContext.ml | 36 - .../texCicTextualParserContext.mli | 31 - helm/ocaml/urimanager/.cvsignore | 1 - helm/ocaml/urimanager/.depend | 2 - helm/ocaml/urimanager/Makefile | 10 - helm/ocaml/urimanager/uriManager.ml | 140 - helm/ocaml/urimanager/uriManager.mli | 55 - helm/ocaml/xml/.cvsignore | 1 - helm/ocaml/xml/.depend | 2 - helm/ocaml/xml/Makefile | 10 - helm/ocaml/xml/xml.ml | 132 - helm/ocaml/xml/xml.mli | 70 - helm/on-line/html/cic/control.html | 94 - helm/on-line/html/cic/index.html | 16 - helm/on-line/html/control.html | 263 - helm/on-line/html/index.html | 8 - helm/on-line/html/library/control.html | 110 - helm/on-line/html/library/header.html | 18 - helm/on-line/html/library/index.html | 90 - helm/on-line/html/theory/control.html | 42 - helm/on-line/html/theory/index.html | 16 - helm/on-line/html/welcome.html | 6 - helm/on-line/icons/back.gif | Bin 216 -> 0 bytes helm/on-line/icons/folder.gif | Bin 225 -> 0 bytes helm/on-line/icons/generic.red.gif | Bin 220 -> 0 bytes helm/on-line/icons/text.gif | Bin 229 -> 0 bytes helm/on-line/javascript/.cvsignore | 1 - helm/on-line/javascript/Makefile | 19 - helm/on-line/javascript/control.js | 298 - helm/on-line/javascript/defaults.js | 27 - helm/on-line/javascript/graphLinks.js | 78 - helm/on-line/javascript/helmjsmenu.js | 58 - helm/on-line/javascript/prelude.js | 249 - helm/on-line/javascript/utils.js | 113 - helm/on-line/xslt/getParam.xsl | 28 - helm/on-line/xslt/ls2html.xsl | 158 - helm/on-line/xslt/makeGraphLinks.xsl | 107 - helm/on-line/xslt/metadataControl.xsl | 48 - helm/on-line/xslt/metadataLib.xsl | 108 - helm/on-line/xslt/resolve_topurl.xsl | 28 - helm/on-line/xslt/utils.xsl | 41 - helm/on-line/xslt/xslt_index.txt | 7 - helm/pacchetti/Makefile | 76 - helm/papers/calculemus-2003/.cvsignore | 4 - helm/papers/calculemus-2003/Makefile | 14 - helm/papers/calculemus-2003/draftstamp.sty | 45 - helm/papers/calculemus-2003/ed.sty | 79 - helm/papers/calculemus-2003/eps/arch.dia | Bin 1938 -> 0 bytes helm/papers/calculemus-2003/eps/arch.eps | 5109 ---- .../papers/calculemus-2003/eps/interfaces.dia | Bin 2276 -> 0 bytes .../papers/calculemus-2003/eps/interfaces.eps | 9640 -------- helm/papers/calculemus-2003/eps/status.eps | 961 - helm/papers/calculemus-2003/eps/step1.eps | 19631 ---------------- helm/papers/calculemus-2003/eps/step2.eps | 5586 ----- .../calculemus-2003/hbugs-calculemus-2003.tex | 873 - helm/papers/calculemus-2003/llncs.cls | 1015 - helm/papers/calculemus-2003/outline.txt | 48 - .../calculemus-2003/referaggio_hbugs.txt | 253 - .../referaggio_hbugs_short.txt | 29 - helm/papers/calculemus-2003/stamp.pro | 82 - helm/proofChecker/.cvsignore | 1 - helm/proofChecker/.depend | 0 helm/proofChecker/Makefile | 47 - helm/proofChecker/proofChecker.ml | 128 - helm/schemas/13-dcagent | 169 - helm/schemas/21-euler | 281 - helm/schemas/dces | 197 - helm/schemas/dcq | 588 - helm/schemas/dctype | 129 - helm/schemas/schema-h | 272 - helm/schemas/schema-hth | 323 - helm/scripts/Makefile | 28 - helm/scripts/init.d/etc_default_helm | 29 - helm/scripts/init.d/etc_default_helm_mowgli | 33 - helm/scripts/init.d/helm | 37 - helm/scripts/init.d/helm-bootmisc.sh | 19 - helm/scripts/init.d/helm-bootmisc_mowgli.sh | 19 - helm/scripts/init.d/helm-draw-graph | 60 - helm/scripts/init.d/helm-draw-graph_mowgli | 60 - helm/scripts/init.d/helm-http-getter | 59 - helm/scripts/init.d/helm-http-getter_mowgli | 59 - helm/scripts/init.d/helm-proof-checker | 59 - helm/scripts/init.d/helm-proof-checker_mowgli | 59 - helm/scripts/init.d/helm-search-engine_mowgli | 61 - helm/scripts/init.d/helm-tomcat | 50 - helm/scripts/init.d/helm-tomcat_mowgli | 57 - helm/scripts/init.d/helm-uri-set-queue | 60 - helm/scripts/init.d/helm-uri-set-queue_mowgli | 60 - helm/scripts/init.d/helm-uwobo_mowgli | 77 - helm/scripts/init.d/helm_mowgli | 37 - .../init.d/loadPredefinedStylesheets.pl | 98 - helm/scripts/init.d/uwobo_forever.sh | 55 - helm/scripts/makeit | 11 - helm/scripts/start-tomcat | 8 - helm/scripts/start-tomcat-debug | 2 - helm/scripts/stop-tomcat-debug | 2 - helm/scripts/template.cshrc | 98 - helm/scripts/template.rc | 90 - helm/searchEngine/.cvsignore | 1 - helm/searchEngine/Makefile | 28 - helm/searchEngine/html/aliaslist.html | 89 - helm/searchEngine/html/almost_blank.html | 5 - helm/searchEngine/html/blank.html | 4 - helm/searchEngine/html/boole.html | 77 - .../html/constraints_choice_template.html | 18 - helm/searchEngine/html/editor.html | 122 - helm/searchEngine/html/editorpdq.html | 90 - helm/searchEngine/html/expnamedsubst.html | 78 - helm/searchEngine/html/expr.html | 60 - helm/searchEngine/html/genid.html | 27 - helm/searchEngine/html/grammar.html | 76 - helm/searchEngine/html/grammarpdq.html | 38 - helm/searchEngine/html/index.html | 636 - helm/searchEngine/html/loc_obj.html | 29 - helm/searchEngine/html/manual/alias.jpg | Bin 29673 -> 0 bytes helm/searchEngine/html/manual/ex1.jpg | Bin 23989 -> 0 bytes helm/searchEngine/html/manual/frames.jpg | Bin 44022 -> 0 bytes helm/searchEngine/html/manual/index.html | 40 - helm/searchEngine/html/mat_con.html | 10 - helm/searchEngine/html/paginacollink.html | 13 - helm/searchEngine/html/pdq.html | 75 - helm/searchEngine/html/query_choice.html | 33 - helm/searchEngine/html/set.html | 178 - helm/searchEngine/html/start.html | 15 - helm/searchEngine/html/summary.html | 23 - helm/searchEngine/html/templateambigpdq1.html | 22 - helm/searchEngine/html/templateambigpdq2.html | 19 - helm/searchEngine/html/templateambigpdq3.html | 11 - helm/searchEngine/html/val.html | 115 - helm/searchEngine/searchEngine.ml | 651 - helm/style/annotatedcont.xsl | 122 - helm/style/annotatedpres.xsl | 58 - helm/style/content.xsl | 297 - helm/style/content_to_html.xsl | 2266 -- helm/style/contentlib.xsl | 116 - helm/style/drop_coercions.xsl | 184 - helm/style/expandobj.xsl | 85 - helm/style/genmmlid.xsl | 55 - helm/style/getter.xsl | 34 - helm/style/headercontent.xsl | 43 - helm/style/html_init.xsl | 509 - helm/style/html_reals.xsl | 469 - helm/style/html_set.xsl | 389 - helm/style/inductive.xsl | 407 - helm/style/lambda.xsl | 158 - helm/style/link.xsl | 118 - helm/style/links_library.xsl | 363 - helm/style/mk_dep_graph.xsl | 38 - helm/style/mk_meta_and_dep_graph.xsl | 271 - helm/style/mk_meta_graph.xsl | 38 - helm/style/mk_meta_theory.xsl | 177 - helm/style/mmlctop.xsl | 3985 ---- helm/style/mmlctop.xsl-0.14 | 3103 --- helm/style/mmlctop2_0.xsl | 3985 ---- helm/style/mmlextension.xsl | 2175 -- helm/style/mmlnotation.xsl | 399 - helm/style/mmltheoryextension.xsl | 42 - helm/style/objcontent.xsl | 187 - helm/style/objtheorycontent.xsl | 85 - helm/style/params.xsl | 374 - helm/style/proofs.xsl | 1019 - helm/style/ricerca.xsl | 104 - helm/style/ring.xsl | 132 - helm/style/rootcontent.xsl | 94 - helm/style/roottheory.xsl | 44 - helm/style/show_dc.xsl | 249 - helm/style/theory_content.xsl | 90 - helm/style/theory_pres.xsl | 127 - helm/style/xslt_index.txt | 36 - helm/uwobo-panel/.cvsignore | 1 - helm/uwobo-panel/Makefile | 11 - helm/uwobo-panel/control.html | 488 - helm/uwobo-panel/control.js | 196 - helm/uwobo-panel/index.html | 8 - helm/uwobo-panel/welcome.html | 6 - helm/uwobo/.cvsignore | 7 - helm/uwobo/.depend | 16 - helm/uwobo/Makefile | 68 - helm/uwobo/log/.cvsignore | 1 - helm/uwobo/uwobo.ml | 523 - helm/uwobo/uwobo_common.ml | 192 - helm/uwobo/uwobo_common.mli | 75 - helm/uwobo/uwobo_engine.ml | 263 - helm/uwobo/uwobo_engine.mli | 55 - helm/uwobo/uwobo_logger.ml | 107 - helm/uwobo/uwobo_logger.mli | 69 - helm/uwobo/uwobo_styles.ml | 209 - helm/uwobo/uwobo_styles.mli | 84 - helm/xmltheory/Coq_v2theoryxml/.cvsignore | 1 - helm/xmltheory/Coq_v2theoryxml/.depend | 0 helm/xmltheory/Coq_v2theoryxml/Makefile | 17 - .../Coq_v2theoryxml/coq_v2theoryxml.ml | 176 - helm/xmltheory/FakeCoq_vo2xml/README | 3 - helm/xmltheory/FakeCoq_vo2xml/coq_vo2xml | 4 - helm/xmltheory/XmlTheory/.cvsignore | 1 - helm/xmltheory/XmlTheory/.depend | 8 - helm/xmltheory/XmlTheory/COME_COMPILARE | 5 - helm/xmltheory/XmlTheory/Make | 5 - helm/xmltheory/XmlTheory/Makefile | 165 - helm/xmltheory/XmlTheory/README | 78 - helm/xmltheory/XmlTheory/XmlTheory.v | 15 - helm/xmltheory/XmlTheory/iXml.ml | 53 - helm/xmltheory/XmlTheory/iXml.mli | 7 - helm/xmltheory/XmlTheory/xmltheoryentries.ml | 371 - helm/xmltheory/maththeory.dtd | 78 - helm/xsltd/.cvsignore | 1 - helm/xsltd/AUTHORS | 1 - helm/xsltd/COPYING | 340 - helm/xsltd/ChangeLog | 1 - helm/xsltd/Makefile.in | 16 - helm/xsltd/Makefile.old | 48 - helm/xsltd/NEWS | 1 - helm/xsltd/README | 8 - helm/xsltd/config.cache.pkg | 4 - helm/xsltd/configure.in | 92 - helm/xsltd/helm_xsltd.spec.in | 32 - helm/xsltd/start-xaland.in | 55 - helm/xsltd/xaland-cpp/xaland.cpp | 207 - helm/xsltd/xaland-java-DOM/xaland_DOM.class | Bin 3555 -> 0 bytes helm/xsltd/xaland-java-DOM/xaland_DOM.java | 114 - helm/xsltd/xaland-java/rompi.class | Bin 732 -> 0 bytes helm/xsltd/xaland-java/rompi.java | 35 - helm/xsltd/xaland-java/sped.class | Bin 1142 -> 0 bytes helm/xsltd/xaland-java/sped.java | 51 - helm/xsltd/xaland-java/xaland.class | Bin 3509 -> 0 bytes helm/xsltd/xaland-java/xaland.java | 105 - .../xaland.java.prima_del_loro_baco | 85 - ...d.java.prima_del_loro_baco_ma_dopo_i_reset | 87 - helm/xsltd/xaland-java2/xaland2.class | Bin 3773 -> 0 bytes helm/xsltd/xaland-java2/xaland2.java | 157 - helm/xsltd/xaland-uwobo/.cvsignore | 1 - helm/xsltd/xaland-uwobo/xaland_uwobo.java | 79 - helm/xsltd/xaland.class | Bin 3509 -> 0 bytes helm/xsltd/xaland2.class | Bin 3773 -> 0 bytes helm/xsltd/xaland_DOM.class | Bin 3555 -> 0 bytes 3342 files changed, 359579 deletions(-) delete mode 100644 CVSROOT/checkoutlist delete mode 100644 CVSROOT/commitinfo delete mode 100644 CVSROOT/config delete mode 100644 CVSROOT/cvswrappers delete mode 100644 CVSROOT/editinfo delete mode 100644 CVSROOT/loginfo delete mode 100644 CVSROOT/modules delete mode 100644 CVSROOT/notify delete mode 100644 CVSROOT/rcsinfo delete mode 100644 CVSROOT/taginfo delete mode 100644 CVSROOT/verifymsg delete mode 100644 helm/DEVEL/.cvsignore delete mode 100644 helm/DEVEL/gdome_xslt/.cvsignore delete mode 100644 helm/DEVEL/gdome_xslt/AUTHORS delete mode 100644 helm/DEVEL/gdome_xslt/BUGS delete mode 100644 helm/DEVEL/gdome_xslt/C++/.cvsignore delete mode 100644 helm/DEVEL/gdome_xslt/C++/Makefile.am delete mode 100644 helm/DEVEL/gdome_xslt/C++/gdome_xslt/.cvsignore delete mode 100644 helm/DEVEL/gdome_xslt/C++/gdome_xslt/GdomeSmartDOMXSLT.hh delete mode 100644 helm/DEVEL/gdome_xslt/C++/gdome_xslt/GdomeSmartDOMXSLTStylesheet.cc delete mode 100644 helm/DEVEL/gdome_xslt/C++/gdome_xslt/GdomeSmartDOMXSLTStylesheet.hh delete mode 100644 helm/DEVEL/gdome_xslt/C++/gdome_xslt/Makefile.am delete mode 100644 helm/DEVEL/gdome_xslt/C++/test/.cvsignore delete mode 100644 helm/DEVEL/gdome_xslt/C++/test/Makefile.am delete mode 100644 helm/DEVEL/gdome_xslt/C++/test/main.cc delete mode 100644 helm/DEVEL/gdome_xslt/C/.cvsignore delete mode 100644 helm/DEVEL/gdome_xslt/C/Makefile.am delete mode 100644 helm/DEVEL/gdome_xslt/C/gdome_xslt/.cvsignore delete mode 100644 helm/DEVEL/gdome_xslt/C/gdome_xslt/Makefile.am delete mode 100644 helm/DEVEL/gdome_xslt/C/gdome_xslt/gdome_xslt.c delete mode 100644 helm/DEVEL/gdome_xslt/C/gdome_xslt/gdome_xslt.h delete mode 100644 helm/DEVEL/gdome_xslt/C/test/.cvsignore delete mode 100644 helm/DEVEL/gdome_xslt/C/test/Makefile.am delete mode 100644 helm/DEVEL/gdome_xslt/C/test/test.c delete mode 100644 helm/DEVEL/gdome_xslt/ChangeLog delete mode 100644 helm/DEVEL/gdome_xslt/LICENSE delete mode 100644 helm/DEVEL/gdome_xslt/LICENSE-INRIA delete mode 100644 helm/DEVEL/gdome_xslt/Makefile.am delete mode 100644 helm/DEVEL/gdome_xslt/NEWS delete mode 100644 helm/DEVEL/gdome_xslt/README delete mode 100644 helm/DEVEL/gdome_xslt/configure.ac delete mode 100644 helm/DEVEL/gdome_xslt/debian/changelog delete mode 100644 helm/DEVEL/gdome_xslt/debian/compat delete mode 100644 helm/DEVEL/gdome_xslt/debian/control delete mode 100644 helm/DEVEL/gdome_xslt/debian/copyright delete mode 100644 helm/DEVEL/gdome_xslt/debian/docs delete mode 100644 helm/DEVEL/gdome_xslt/debian/libgdome2-xslt-dev.examples delete mode 100644 helm/DEVEL/gdome_xslt/debian/libgdome2-xslt-dev.install delete mode 100644 helm/DEVEL/gdome_xslt/debian/libgdome2-xslt-ocaml-dev.dirs delete mode 100644 helm/DEVEL/gdome_xslt/debian/libgdome2-xslt-ocaml-dev.examples delete mode 100644 helm/DEVEL/gdome_xslt/debian/libgdome2-xslt-ocaml-dev.install delete mode 100644 helm/DEVEL/gdome_xslt/debian/libgdome2-xslt-ocaml.dirs delete mode 100644 helm/DEVEL/gdome_xslt/debian/libgdome2-xslt-ocaml.install delete mode 100644 helm/DEVEL/gdome_xslt/debian/libgdome2-xslt0.install delete mode 100755 helm/DEVEL/gdome_xslt/debian/rules delete mode 100644 helm/DEVEL/gdome_xslt/gdome2-xslt-cpp-smart.pc.in delete mode 100644 helm/DEVEL/gdome_xslt/gdome2-xslt.pc.in delete mode 100644 helm/DEVEL/gdome_xslt/ocaml/.cvsignore delete mode 100644 helm/DEVEL/gdome_xslt/ocaml/Makefile.am delete mode 100644 helm/DEVEL/gdome_xslt/ocaml/gdome_xslt/.cvsignore delete mode 100644 helm/DEVEL/gdome_xslt/ocaml/gdome_xslt/.depend delete mode 100644 helm/DEVEL/gdome_xslt/ocaml/gdome_xslt/META.in delete mode 100644 helm/DEVEL/gdome_xslt/ocaml/gdome_xslt/Makefile.am delete mode 100644 helm/DEVEL/gdome_xslt/ocaml/gdome_xslt/gdome_xslt.ml delete mode 100644 helm/DEVEL/gdome_xslt/ocaml/gdome_xslt/gdome_xslt.mli delete mode 100644 helm/DEVEL/gdome_xslt/ocaml/gdome_xslt/gdome_xslt_init.ml delete mode 100644 helm/DEVEL/gdome_xslt/ocaml/gdome_xslt/gdome_xslt_init.mli delete mode 100644 helm/DEVEL/gdome_xslt/ocaml/gdome_xslt/i_gdome_xslt.ml delete mode 100644 helm/DEVEL/gdome_xslt/ocaml/gdome_xslt/ml_gdome_xslt.c delete mode 100644 helm/DEVEL/gdome_xslt/ocaml/gdome_xslt/ml_gdome_xslt.h delete mode 100644 helm/DEVEL/gdome_xslt/ocaml/gdome_xslt/ocaml-io.h delete mode 100644 helm/DEVEL/gdome_xslt/ocaml/test/.cvsignore delete mode 100644 helm/DEVEL/gdome_xslt/ocaml/test/Makefile.am delete mode 100644 helm/DEVEL/gdome_xslt/ocaml/test/test.ml delete mode 100644 helm/DEVEL/gdome_xslt/test_files/.cvsignore delete mode 100644 helm/DEVEL/gdome_xslt/test_files/Makefile.am delete mode 100644 helm/DEVEL/gdome_xslt/test_files/input.xml delete mode 100644 helm/DEVEL/gdome_xslt/test_files/output.xml.correct delete mode 100644 helm/DEVEL/gdome_xslt/test_files/stylesheet.xsl delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0-1.i386.rpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0-1.spec delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0-1.src.rpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0.tar.gz delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/.cvsignore delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/CHANGES delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/COPYING delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/Makefile delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/Makefile.nt delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/README delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/browser/.cvsignore delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/browser/Makefile delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/browser/README delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/browser/TODO delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/browser/editor.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/browser/file.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/browser/lexical.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/browser/list2.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/browser/shell.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/browser/text.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/browser/useunix.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/browser/widgets.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/.cvsignore delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/CHANGES delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/Makefile delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/README delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/aspectframe.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/button.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/checkbutton.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/clist.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/colorselection.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/combo.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/common.mli delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/entry.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/eventbox.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/fixed.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/frame.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/gToolbar2.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/gTree2.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/gTree2.mli delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/gtkTree2.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/gtktree2.c delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/gtktree2.h delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/gtktreeitem2.c delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/gtktreeitem2.h delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/handlebox.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/hbox.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/hbuttonbox.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/hseparator.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/label.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/load_lexer.mll delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/load_parser.mly delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/main.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/ml_gtk2.c delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/notebook.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/pixmap.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/property.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/property.mli delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/propwin.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/propwin.mli delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/radiobutton.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/scrolledwindow.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/spinbutton.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/statusbar.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/tiBase.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/tiBin.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/tiButton.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/tiContainer.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/tiEdit.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/tiList.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/tiMisc.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/tiPack.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/tiWidget.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/tiWindow.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/togglebutton.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/toolbar.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/tree_minus.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/tree_plus.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/utils.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/vbox.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/vbuttonbox.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/viewport.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/vseparator.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/window.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/unison/.cvsignore delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/unison/README delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/unison/uigtk.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/config.make.nt delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/configure.mk delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/doc/formula.eps delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/doc/lablgtk.mgp delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/GL/morph3d.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/GL/planet.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/GL/simple.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/README delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/buttons.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/calc.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/calendar.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/clist.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/combo.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/csview.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/dcalendar.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/drawing.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/editor.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/entry.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/events.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/fifteen.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/fixed_editor.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/fixpoint.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/hello.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/image.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/image256x256.rgb delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/kaimono.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/label.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/lissajous.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/nihongo.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/old/fixpoint.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/old/hello.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/old/progressbar.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/pousse.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/progressbar.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/radiobuttons.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/rpn.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/scrolledwin.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/socket.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/test.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/testdnd.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/testgtk.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/testinput.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/tictactoe.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/tron.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/xmhtml/test.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gBin.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gBin.mli delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gButton.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gButton.mli delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gContainer.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gContainer.mli delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gData.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gData.mli delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gDraw.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gDraw.mli delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gEdit.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gEdit.mli delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gHtml.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gList.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gList.mli delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gMain.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gMenu.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gMenu.mli delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gMisc.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gMisc.mli delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gObj.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gObj.mli delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gPack.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gPack.mli delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gRange.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gRange.mli delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gTree.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gTree.mli delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gUtil.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gUtil.mli delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gWindow.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gWindow.mli delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gaux.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gdk.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gdk.mli delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gdkEvent.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gdkKeysyms.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gdk_tags.var delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/glGtk.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/glGtk.mli delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/glib.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gpointer.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtk.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkArgv.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkBase.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkBin.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkButton.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkData.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkEdit.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkInit.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkList.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkMain.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkMenu.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkMisc.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkNew.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkPack.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkRange.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkSignal.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkSignal.mli delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkThInit.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkThread.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkTree.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkWindow.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkXmHTML.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtk_tags.var delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkgl_tags.var delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkxmhtml_tags.var delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/lablgl.patch delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/lablgtk.in delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/ml_gdk.c delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/ml_gdk.h delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/ml_glib.c delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/ml_glib.h delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/ml_gtk.c delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/ml_gtk.h delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/ml_gtkgl.c delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/ml_gtkxmhtml.c delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/var2conv.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/var2def.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/wrappers.c delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/wrappers.h delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0-1.spec delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0.tar.gz delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/.cvsignore delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/CHANGES delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/COPYING delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/Makefile delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/Makefile.nt delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/README delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/browser/.cvsignore delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/browser/Makefile delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/browser/README delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/browser/TODO delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/browser/editor.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/browser/file.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/browser/lexical.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/browser/list2.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/browser/shell.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/browser/text.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/browser/useunix.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/browser/widgets.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/.cvsignore delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/CHANGES delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/Makefile delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/README delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/aspectframe.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/button.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/checkbutton.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/clist.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/colorselection.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/combo.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/common.mli delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/entry.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/eventbox.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/fixed.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/frame.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/gToolbar2.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/gTree2.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/gTree2.mli delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/gtkTree2.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/gtktree2.c delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/gtktree2.h delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/gtktreeitem2.c delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/gtktreeitem2.h delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/handlebox.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/hbox.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/hbuttonbox.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/hseparator.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/label.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/load_lexer.mll delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/load_parser.mly delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/main.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/ml_gtk2.c delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/notebook.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/pixmap.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/property.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/property.mli delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/propwin.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/propwin.mli delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/radiobutton.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/scrolledwindow.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/spinbutton.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/statusbar.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/tiBase.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/tiBin.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/tiButton.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/tiContainer.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/tiEdit.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/tiList.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/tiMisc.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/tiPack.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/tiWidget.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/tiWindow.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/togglebutton.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/toolbar.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/tree_minus.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/tree_plus.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/utils.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/vbox.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/vbuttonbox.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/viewport.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/vseparator.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/window.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/unison/.cvsignore delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/unison/README delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/config.make.nt delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/configure.mk delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/doc/formula.eps delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/doc/lablgtk.mgp delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/GL/morph3d.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/GL/planet.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/GL/simple.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/README delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/buttons.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/calc.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/calendar.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/clist.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/combo.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/csview.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/dcalendar.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/drawing.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/editor.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/entry.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/events.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/fifteen.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/fixed_editor.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/fixpoint.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/hello.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/image.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/image256x256.rgb delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/kaimono.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/label.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/lissajous.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/nihongo.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/pousse.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/progressbar.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/radiobuttons.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/rpn.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/scrolledwin.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/socket.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/test.xpm delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/testdnd.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/testgtk.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/testinput.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/tictactoe.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/tron.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/xmhtml/test.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gBin.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gBin.mli delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gButton.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gButton.mli delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gContainer.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gContainer.mli delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gData.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gData.mli delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gDraw.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gDraw.mli delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gEdit.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gEdit.mli delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gHtml.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gList.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gList.mli delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gMain.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gMenu.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gMenu.mli delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gMisc.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gMisc.mli delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gObj.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gObj.mli delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gPack.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gPack.mli delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gRange.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gRange.mli delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gTree.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gTree.mli delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gUtil.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gUtil.mli delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gWindow.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gWindow.mli delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gaux.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gdk.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gdk.mli delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gdkEvent.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gdkKeysyms.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gdk_tags.var delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/glGtk.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/glGtk.mli delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/glib.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gpointer.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtk.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkArgv.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkBase.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkBin.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkButton.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkData.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkEdit.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkInit.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkList.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkMain.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkMenu.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkMisc.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkNew.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkPack.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkRange.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkSignal.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkSignal.mli delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkThInit.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkThread.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkTree.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkWindow.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkXmHTML.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtk_tags.var delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkgl_tags.var delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkxmhtml_tags.var delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/lablgl.patch delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/lablgtk.in delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gdk.c delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gdk.h delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_glib.c delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_glib.h delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtk.c delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtk.h delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtkbin.c delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtkbutton.c delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtkedit.c delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtkgl.c delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtklist.c delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtkmenu.c delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtkmisc.c delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtknew.c delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtkpack.c delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtkrange.c delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtktree.c delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtkxmhtml.c delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/varcc.ml delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/wrappers.c delete mode 100644 helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/wrappers.h delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/.cvsignore delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/.depend delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0-1.i386.rpm delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0-1.spec delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0-1.src.rpm delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0.tar.gz delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0/.depend delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0/COPYING delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0/Makefile delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0/config.make delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0/configure.mk delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0/gMathView.ml delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0/gtkMathView.ml delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0/gtk_mathview.ml delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0/ml_gtk_mathview.c delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0/test/Makefile delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0/test/test.ml delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0/test/test.xml delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0-1.spec delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0.tar.gz delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/.cvsignore delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/.depend delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/COPYING delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/Makefile delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/configure.mk delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/gMathView.ml delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/gtkMathView.ml delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/gtk_mathview.ml delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/minidom/.cvsignore delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/minidom/Makefile delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/minidom/minidom.ml delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/minidom/minidom.mli delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/minidom/ml_minidom.c delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/minidom/ml_minidom.h delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/minidom/test.ml delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/minidom/test.xml delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/ml_gtk_mathview.c delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/test/.cvsignore delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/test/Makefile delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/test/t1.config delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/test/test.ml delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/test/test.xml delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1-1.spec delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/.cvsignore delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/.depend delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/COPYING delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/Makefile delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/configure.mk delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/gMathView.ml delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/gtkMathView.ml delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/gtk_mathview.ml delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/minidom/.cvsignore delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/minidom/Makefile delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/minidom/minidom.ml delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/minidom/minidom.mli delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/minidom/ml_minidom.c delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/minidom/ml_minidom.h delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/minidom/ominidom.ml delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/minidom/test.ml delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/minidom/test.xml delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/ml_gtk_mathview.c delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/test/.cvsignore delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/test/Makefile delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/test/t1.config delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/test/test.ml delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/test/test.xml delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1-1.spec delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/.cvsignore delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/.depend delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/COPYING delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/Makefile delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/configure.mk delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/gMathView.ml delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/gtkMathView.ml delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/gtk_mathview.ml delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/minidom/.cvsignore delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/minidom/Makefile delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/minidom/minidom.ml delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/minidom/minidom.mli delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/minidom/ml_minidom.c delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/minidom/ml_minidom.h delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/minidom/ominidom.ml delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/minidom/ominidom.mli delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/minidom/test.ml delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/minidom/test.xml delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/ml_gtk_mathview.c delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/test/.cvsignore delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/test/Makefile delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/test/t1.config delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/test/test.ml delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/test/test.xml delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2-1.spec delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2.tar.gz delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/.cvsignore delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/.depend delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/COPYING delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/Makefile delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/configure.mk delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/gMathView.ml delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/gtkMathView.ml delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/gtk_mathview.ml delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/minidom/.cvsignore delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/minidom/Makefile delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/minidom/minidom.ml delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/minidom/minidom.mli delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/minidom/ml_minidom.c delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/minidom/ml_minidom.h delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/minidom/ominidom.ml delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/minidom/ominidom.mli delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/minidom/test.ml delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/minidom/test.xml delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/ml_gtk_mathview.c delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/test/.cvsignore delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/test/Makefile delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/test/t1.config delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/test/test.ml delete mode 100644 helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/test/test.xml delete mode 100644 helm/DEVEL/lablgtkmathview/.cvsignore delete mode 100644 helm/DEVEL/lablgtkmathview/.depend delete mode 100644 helm/DEVEL/lablgtkmathview/AUTHORS delete mode 100644 helm/DEVEL/lablgtkmathview/COPYING delete mode 100644 helm/DEVEL/lablgtkmathview/ChangeLog delete mode 100644 helm/DEVEL/lablgtkmathview/LICENSE delete mode 100644 helm/DEVEL/lablgtkmathview/META.in delete mode 100644 helm/DEVEL/lablgtkmathview/Makefile.in delete mode 100644 helm/DEVEL/lablgtkmathview/NEWS delete mode 100644 helm/DEVEL/lablgtkmathview/README delete mode 100644 helm/DEVEL/lablgtkmathview/configure.in delete mode 100644 helm/DEVEL/lablgtkmathview/debian/changelog delete mode 100644 helm/DEVEL/lablgtkmathview/debian/compat delete mode 100644 helm/DEVEL/lablgtkmathview/debian/control delete mode 100644 helm/DEVEL/lablgtkmathview/debian/copyright delete mode 100644 helm/DEVEL/lablgtkmathview/debian/docs delete mode 100644 helm/DEVEL/lablgtkmathview/debian/liblablgtkmathview-ocaml-dev.dirs delete mode 100644 helm/DEVEL/lablgtkmathview/debian/liblablgtkmathview-ocaml.dirs delete mode 100644 helm/DEVEL/lablgtkmathview/debian/liblablgtkmathview-ocaml.install delete mode 100755 helm/DEVEL/lablgtkmathview/debian/rules delete mode 100644 helm/DEVEL/lablgtkmathview/gMathView.ml delete mode 100644 helm/DEVEL/lablgtkmathview/gMathView.mli delete mode 100644 helm/DEVEL/lablgtkmathview/gMathViewAux.ml delete mode 100644 helm/DEVEL/lablgtkmathview/gMathViewAux.mli delete mode 100644 helm/DEVEL/lablgtkmathview/gtkMathView.ml delete mode 100644 helm/DEVEL/lablgtkmathview/gtk_mathview.ml delete mode 100644 helm/DEVEL/lablgtkmathview/lablgtk/META.lablgtk delete mode 100644 helm/DEVEL/lablgtkmathview/lablgtkmathview.spec.in delete mode 100644 helm/DEVEL/lablgtkmathview/ml_gtk_mathview.c delete mode 100644 helm/DEVEL/lablgtkmathview/test/.cvsignore delete mode 100644 helm/DEVEL/lablgtkmathview/test/Makefile.in delete mode 100644 helm/DEVEL/lablgtkmathview/test/t1.config delete mode 100644 helm/DEVEL/lablgtkmathview/test/test.ml delete mode 100644 helm/DEVEL/lablgtkmathview/test/test.xml delete mode 100644 helm/DEVEL/mathml_editor/.cvsignore delete mode 100644 helm/DEVEL/mathml_editor/.log delete mode 100644 helm/DEVEL/mathml_editor/AUTHORS delete mode 100644 helm/DEVEL/mathml_editor/BROWSE delete mode 100644 helm/DEVEL/mathml_editor/BUGS delete mode 100644 helm/DEVEL/mathml_editor/BUGS-GDOME2 delete mode 100644 helm/DEVEL/mathml_editor/ChangeLog delete mode 100644 helm/DEVEL/mathml_editor/LICENSE delete mode 100644 helm/DEVEL/mathml_editor/MODES delete mode 100644 helm/DEVEL/mathml_editor/Makefile.am delete mode 100644 helm/DEVEL/mathml_editor/Makefile.in delete mode 100644 helm/DEVEL/mathml_editor/NEWS delete mode 100644 helm/DEVEL/mathml_editor/PATTERNS delete mode 100644 helm/DEVEL/mathml_editor/README delete mode 100644 helm/DEVEL/mathml_editor/TML.dtd delete mode 100644 helm/DEVEL/mathml_editor/TODO delete mode 100644 helm/DEVEL/mathml_editor/configure.ac delete mode 100644 helm/DEVEL/mathml_editor/debian/changelog delete mode 100644 helm/DEVEL/mathml_editor/debian/control delete mode 100644 helm/DEVEL/mathml_editor/debian/copyright delete mode 100644 helm/DEVEL/mathml_editor/debian/docs delete mode 100644 helm/DEVEL/mathml_editor/debian/libeditex-dev.files delete mode 100644 helm/DEVEL/mathml_editor/debian/libeditex-ocaml-dev.files delete mode 100644 helm/DEVEL/mathml_editor/debian/libeditex-ocaml.files delete mode 100644 helm/DEVEL/mathml_editor/debian/libeditex0.files delete mode 100755 helm/DEVEL/mathml_editor/debian/rules delete mode 100644 helm/DEVEL/mathml_editor/dict/.cvsignore delete mode 100644 helm/DEVEL/mathml_editor/dict/Makefile.am delete mode 100644 helm/DEVEL/mathml_editor/dict/dictionary-basic.xml delete mode 100644 helm/DEVEL/mathml_editor/dict/dictionary-test.xml delete mode 100644 helm/DEVEL/mathml_editor/dict/dictionary-tex.xml delete mode 100644 helm/DEVEL/mathml_editor/dict/dictionary.dtd delete mode 100644 helm/DEVEL/mathml_editor/doc/.cvsignore delete mode 100644 helm/DEVEL/mathml_editor/doc/spec.tex delete mode 100644 helm/DEVEL/mathml_editor/editex.pc.in delete mode 100644 helm/DEVEL/mathml_editor/examples/.cvsignore delete mode 100644 helm/DEVEL/mathml_editor/examples/Makefile.am delete mode 100644 helm/DEVEL/mathml_editor/examples/abs.tex delete mode 100644 helm/DEVEL/mathml_editor/examples/big.tex delete mode 100644 helm/DEVEL/mathml_editor/ocaml/.cvsignore delete mode 100644 helm/DEVEL/mathml_editor/ocaml/.depend delete mode 100644 helm/DEVEL/mathml_editor/ocaml/META.in delete mode 100644 helm/DEVEL/mathml_editor/ocaml/Makefile.am delete mode 100644 helm/DEVEL/mathml_editor/ocaml/c_mathml_editor.cc delete mode 100644 helm/DEVEL/mathml_editor/ocaml/c_mathml_editor.h delete mode 100644 helm/DEVEL/mathml_editor/ocaml/i_mathml_editor.ml delete mode 100644 helm/DEVEL/mathml_editor/ocaml/mathml_editor.ml delete mode 100644 helm/DEVEL/mathml_editor/ocaml/mathml_editor.mli delete mode 100644 helm/DEVEL/mathml_editor/ocaml/ml_mathml_editor.c delete mode 100644 helm/DEVEL/mathml_editor/src/.cvsignore delete mode 100644 helm/DEVEL/mathml_editor/src/ALogger.hh delete mode 100644 helm/DEVEL/mathml_editor/src/AMathMLConsumer.hh delete mode 100644 helm/DEVEL/mathml_editor/src/AMathMLFactory.cc delete mode 100644 helm/DEVEL/mathml_editor/src/AMathMLFactory.hh delete mode 100644 helm/DEVEL/mathml_editor/src/APushLexer.hh delete mode 100644 helm/DEVEL/mathml_editor/src/APushParser.cc delete mode 100644 helm/DEVEL/mathml_editor/src/APushParser.hh delete mode 100644 helm/DEVEL/mathml_editor/src/BROWSE delete mode 100644 helm/DEVEL/mathml_editor/src/CLoggerConsole.cc delete mode 100644 helm/DEVEL/mathml_editor/src/CLoggerConsole.hh delete mode 100644 helm/DEVEL/mathml_editor/src/CMathMLFactoryXSLT.cc delete mode 100644 helm/DEVEL/mathml_editor/src/CMathMLFactoryXSLT.hh delete mode 100644 helm/DEVEL/mathml_editor/src/CMathMLFactoryXSLTDiff.cc delete mode 100644 helm/DEVEL/mathml_editor/src/CMathMLFactoryXSLTDiff.hh delete mode 100644 helm/DEVEL/mathml_editor/src/Diff.cc delete mode 100644 helm/DEVEL/mathml_editor/src/Diff.hh delete mode 100644 helm/DEVEL/mathml_editor/src/ILPushLexer.cc delete mode 100644 helm/DEVEL/mathml_editor/src/ILPushLexer.hh delete mode 100644 helm/DEVEL/mathml_editor/src/ITPushLexer.cc delete mode 100644 helm/DEVEL/mathml_editor/src/ITPushLexer.hh delete mode 100644 helm/DEVEL/mathml_editor/src/LPushLexer.cc delete mode 100644 helm/DEVEL/mathml_editor/src/LPushLexer.hh delete mode 100644 helm/DEVEL/mathml_editor/src/Makefile.am delete mode 100644 helm/DEVEL/mathml_editor/src/Makefile.in delete mode 100644 helm/DEVEL/mathml_editor/src/TDictionary.cc delete mode 100644 helm/DEVEL/mathml_editor/src/TDictionary.hh delete mode 100644 helm/DEVEL/mathml_editor/src/TDocument.cc delete mode 100644 helm/DEVEL/mathml_editor/src/TDocument.hh delete mode 100644 helm/DEVEL/mathml_editor/src/TListener.hh delete mode 100644 helm/DEVEL/mathml_editor/src/TNode.cc delete mode 100644 helm/DEVEL/mathml_editor/src/TNode.hh delete mode 100644 helm/DEVEL/mathml_editor/src/TPushLexer.cc delete mode 100644 helm/DEVEL/mathml_editor/src/TPushLexer.hh delete mode 100644 helm/DEVEL/mathml_editor/src/TPushParser.cc delete mode 100644 helm/DEVEL/mathml_editor/src/TPushParser.hh delete mode 100644 helm/DEVEL/mathml_editor/src/TToken.hh delete mode 100644 helm/DEVEL/mathml_editor/src/TTokenizer.cc delete mode 100644 helm/DEVEL/mathml_editor/src/TTokenizer.hh delete mode 100644 helm/DEVEL/mathml_editor/src/config.dirs.in delete mode 100644 helm/DEVEL/mathml_editor/src/dom.hh delete mode 100644 helm/DEVEL/mathml_editor/src/globals.hh delete mode 100644 helm/DEVEL/mathml_editor/test/.cvsignore delete mode 100644 helm/DEVEL/mathml_editor/test/Makefile.am delete mode 100644 helm/DEVEL/mathml_editor/test/Makefile.in delete mode 100644 helm/DEVEL/mathml_editor/test/aux.cc delete mode 100644 helm/DEVEL/mathml_editor/test/editor.cc delete mode 100644 helm/DEVEL/mathml_editor/test/guiGTK.c delete mode 100644 helm/DEVEL/mathml_editor/test/guiGTK.h delete mode 100644 helm/DEVEL/mathml_editor/textomml/.cvsignore delete mode 100644 helm/DEVEL/mathml_editor/textomml/Makefile.am delete mode 100644 helm/DEVEL/mathml_editor/textomml/config.dirs.in delete mode 100644 helm/DEVEL/mathml_editor/textomml/main.cc delete mode 100644 helm/DEVEL/mathml_editor/xsl/.cvsignore delete mode 100644 helm/DEVEL/mathml_editor/xsl/Makefile.am delete mode 100644 helm/DEVEL/mathml_editor/xsl/d-xsl.xsl delete mode 100644 helm/DEVEL/mathml_editor/xsl/tml-litex.xsl delete mode 100644 helm/DEVEL/mathml_editor/xsl/tml-mmlp.xsl delete mode 100644 helm/DEVEL/mathml_editor/xsl/tml-tex.xsl delete mode 100644 helm/DEVEL/mathml_editor/xsl/tml-texid.xsl delete mode 100644 helm/DEVEL/mlminidom/.cvsignore delete mode 100644 helm/DEVEL/mlminidom/.depend delete mode 100644 helm/DEVEL/mlminidom/AUTHORS delete mode 100644 helm/DEVEL/mlminidom/COPYING delete mode 100644 helm/DEVEL/mlminidom/ChangeLog delete mode 100644 helm/DEVEL/mlminidom/META.in delete mode 100644 helm/DEVEL/mlminidom/Makefile.in delete mode 100644 helm/DEVEL/mlminidom/NEWS delete mode 100644 helm/DEVEL/mlminidom/README delete mode 100644 helm/DEVEL/mlminidom/configure.in delete mode 100644 helm/DEVEL/mlminidom/debian/changelog delete mode 100644 helm/DEVEL/mlminidom/debian/control delete mode 100644 helm/DEVEL/mlminidom/debian/copyright delete mode 100644 helm/DEVEL/mlminidom/debian/dirs delete mode 100644 helm/DEVEL/mlminidom/debian/docs delete mode 100644 helm/DEVEL/mlminidom/debian/examples delete mode 100755 helm/DEVEL/mlminidom/debian/rules delete mode 100644 helm/DEVEL/mlminidom/minidom.ml delete mode 100644 helm/DEVEL/mlminidom/minidom.mli delete mode 100644 helm/DEVEL/mlminidom/ml_minidom.c delete mode 100644 helm/DEVEL/mlminidom/ml_minidom.h delete mode 100644 helm/DEVEL/mlminidom/mlminidom.spec.in delete mode 100644 helm/DEVEL/mlminidom/ominidom.ml delete mode 100644 helm/DEVEL/mlminidom/ominidom.mli delete mode 100644 helm/DEVEL/mlminidom/test.ml delete mode 100644 helm/DEVEL/mlminidom/test.xml delete mode 100644 helm/DEVEL/ocaml-http/.cvsignore delete mode 100644 helm/DEVEL/ocaml-http/.depend delete mode 100644 helm/DEVEL/ocaml-http/.ocamlinit delete mode 100644 helm/DEVEL/ocaml-http/INSTALL delete mode 100644 helm/DEVEL/ocaml-http/LICENSE delete mode 100644 helm/DEVEL/ocaml-http/META.in delete mode 100644 helm/DEVEL/ocaml-http/Makefile delete mode 100644 helm/DEVEL/ocaml-http/Makefile.defs delete mode 100644 helm/DEVEL/ocaml-http/Makefile.overrides delete mode 100644 helm/DEVEL/ocaml-http/README delete mode 100644 helm/DEVEL/ocaml-http/TODO delete mode 100644 helm/DEVEL/ocaml-http/debian/changelog delete mode 100644 helm/DEVEL/ocaml-http/debian/control delete mode 100644 helm/DEVEL/ocaml-http/debian/copyright delete mode 100644 helm/DEVEL/ocaml-http/debian/dirs delete mode 100644 helm/DEVEL/ocaml-http/debian/docs delete mode 100644 helm/DEVEL/ocaml-http/debian/examples delete mode 100755 helm/DEVEL/ocaml-http/debian/rules delete mode 100644 helm/DEVEL/ocaml-http/doc/dot/.cvsignore delete mode 100644 helm/DEVEL/ocaml-http/doc/html/.cvsignore delete mode 100644 helm/DEVEL/ocaml-http/doc/latex/.cvsignore delete mode 100644 helm/DEVEL/ocaml-http/examples/.cvsignore delete mode 100644 helm/DEVEL/ocaml-http/examples/Makefile delete mode 100644 helm/DEVEL/ocaml-http/examples/always_ok_daemon.ml delete mode 100644 helm/DEVEL/ocaml-http/examples/chdir.ml delete mode 100644 helm/DEVEL/ocaml-http/examples/client_address.ml delete mode 100644 helm/DEVEL/ocaml-http/examples/damned_recursion.ml delete mode 100644 helm/DEVEL/ocaml-http/examples/dont_fork.ml delete mode 100644 helm/DEVEL/ocaml-http/examples/dump_args.ml delete mode 100644 helm/DEVEL/ocaml-http/examples/highlander.ml delete mode 100644 helm/DEVEL/ocaml-http/examples/obj_foo.ml delete mode 100644 helm/DEVEL/ocaml-http/examples/oo_daemon.ml delete mode 100644 helm/DEVEL/ocaml-http/examples/threads.ml delete mode 100644 helm/DEVEL/ocaml-http/examples/timeout.ml delete mode 100644 helm/DEVEL/ocaml-http/examples/webfsd.ml delete mode 100644 helm/DEVEL/ocaml-http/http_common.ml delete mode 100644 helm/DEVEL/ocaml-http/http_common.mli delete mode 100644 helm/DEVEL/ocaml-http/http_constants.ml delete mode 100644 helm/DEVEL/ocaml-http/http_constants.mli delete mode 100644 helm/DEVEL/ocaml-http/http_daemon.ml delete mode 100644 helm/DEVEL/ocaml-http/http_daemon.mli delete mode 100644 helm/DEVEL/ocaml-http/http_message.ml delete mode 100644 helm/DEVEL/ocaml-http/http_message.mli delete mode 100644 helm/DEVEL/ocaml-http/http_misc.ml delete mode 100644 helm/DEVEL/ocaml-http/http_misc.mli delete mode 100644 helm/DEVEL/ocaml-http/http_parser.ml delete mode 100644 helm/DEVEL/ocaml-http/http_parser.mli delete mode 100644 helm/DEVEL/ocaml-http/http_parser_sanity.ml delete mode 100644 helm/DEVEL/ocaml-http/http_parser_sanity.mli delete mode 100644 helm/DEVEL/ocaml-http/http_request.ml delete mode 100644 helm/DEVEL/ocaml-http/http_request.mli delete mode 100644 helm/DEVEL/ocaml-http/http_response.ml delete mode 100644 helm/DEVEL/ocaml-http/http_response.mli delete mode 100644 helm/DEVEL/ocaml-http/http_tcp_server.ml delete mode 100644 helm/DEVEL/ocaml-http/http_tcp_server.mli delete mode 100644 helm/DEVEL/ocaml-http/http_threaded_tcp_server.mli delete mode 100644 helm/DEVEL/ocaml-http/http_types.ml delete mode 100644 helm/DEVEL/ocaml-http/mt/.cvsignore delete mode 100644 helm/DEVEL/ocaml-http/mt/http_threaded_tcp_server.ml delete mode 100644 helm/DEVEL/ocaml-http/non_mt/.cvsignore delete mode 100644 helm/DEVEL/ocaml-http/non_mt/http_threaded_tcp_server.ml delete mode 100644 helm/DEVEL/ocaml-http/tophttp delete mode 100644 helm/DEVEL/pxp/.cvsignore delete mode 100644 helm/DEVEL/pxp/findlib-0.4.tar.gz delete mode 100644 helm/DEVEL/pxp/netstring-0.9.3.tar.gz delete mode 100644 helm/DEVEL/pxp/netstring/.cvsignore delete mode 100644 helm/DEVEL/pxp/netstring/LICENSE delete mode 100644 helm/DEVEL/pxp/netstring/META delete mode 100644 helm/DEVEL/pxp/netstring/Makefile delete mode 100644 helm/DEVEL/pxp/netstring/RELEASE delete mode 100644 helm/DEVEL/pxp/netstring/base64.ml delete mode 100644 helm/DEVEL/pxp/netstring/base64.mli delete mode 100644 helm/DEVEL/pxp/netstring/cgi.ml delete mode 100644 helm/DEVEL/pxp/netstring/cgi.mli delete mode 100644 helm/DEVEL/pxp/netstring/compat-base64/META delete mode 100644 helm/DEVEL/pxp/netstring/compat-cgi/META delete mode 100644 helm/DEVEL/pxp/netstring/depend delete mode 100644 helm/DEVEL/pxp/netstring/depend.pkg delete mode 100644 helm/DEVEL/pxp/netstring/doc/ABOUT-FINDLIB delete mode 100644 helm/DEVEL/pxp/netstring/doc/ABOUT-FINDLIB.xml delete mode 100644 helm/DEVEL/pxp/netstring/doc/INSTALL delete mode 100644 helm/DEVEL/pxp/netstring/doc/INSTALL.xml delete mode 100644 helm/DEVEL/pxp/netstring/doc/Makefile delete mode 100644 helm/DEVEL/pxp/netstring/doc/README delete mode 100644 helm/DEVEL/pxp/netstring/doc/README.xml delete mode 100644 helm/DEVEL/pxp/netstring/mimestring.ml delete mode 100644 helm/DEVEL/pxp/netstring/mimestring.mli delete mode 100644 helm/DEVEL/pxp/netstring/netbuffer.ml delete mode 100644 helm/DEVEL/pxp/netstring/netbuffer.mli delete mode 100644 helm/DEVEL/pxp/netstring/netconversion.ml delete mode 100644 helm/DEVEL/pxp/netstring/netconversion.mli delete mode 100644 helm/DEVEL/pxp/netstring/netencoding.ml delete mode 100644 helm/DEVEL/pxp/netstring/netencoding.mli delete mode 100644 helm/DEVEL/pxp/netstring/nethtml.ml delete mode 100644 helm/DEVEL/pxp/netstring/nethtml.mli delete mode 100644 helm/DEVEL/pxp/netstring/nethtml_scanner.mll delete mode 100644 helm/DEVEL/pxp/netstring/netmappings.ml delete mode 100644 helm/DEVEL/pxp/netstring/netmappings.mli delete mode 100644 helm/DEVEL/pxp/netstring/netmappings_iso.ml delete mode 100644 helm/DEVEL/pxp/netstring/netmappings_other.ml delete mode 100644 helm/DEVEL/pxp/netstring/netstream.ml delete mode 100644 helm/DEVEL/pxp/netstring/netstream.mli delete mode 100644 helm/DEVEL/pxp/netstring/netstring.cma delete mode 100644 helm/DEVEL/pxp/netstring/netstring.cmxa delete mode 100644 helm/DEVEL/pxp/netstring/netstring_mt.ml delete mode 100644 helm/DEVEL/pxp/netstring/netstring_mt.mli delete mode 100644 helm/DEVEL/pxp/netstring/netstring_str.ml delete mode 100644 helm/DEVEL/pxp/netstring/netstring_str.mli delete mode 100644 helm/DEVEL/pxp/netstring/netstring_top.ml delete mode 100644 helm/DEVEL/pxp/netstring/netstring_top.mli delete mode 100644 helm/DEVEL/pxp/netstring/neturl.ml delete mode 100644 helm/DEVEL/pxp/netstring/neturl.mli delete mode 100644 helm/DEVEL/pxp/netstring/tests/.cvsignore delete mode 100644 helm/DEVEL/pxp/netstring/tests/Makefile delete mode 100644 helm/DEVEL/pxp/netstring/tests/test_cgi.ml delete mode 100755 helm/DEVEL/pxp/netstring/tests/test_encoding.cgi delete mode 100644 helm/DEVEL/pxp/netstring/tests/test_mimestring.ml delete mode 100644 helm/DEVEL/pxp/netstring/tests/test_netencoding.ml delete mode 100644 helm/DEVEL/pxp/netstring/tests/test_neturl.ml delete mode 100644 helm/DEVEL/pxp/netstring/tests/test_recode.ml delete mode 100644 helm/DEVEL/pxp/netstring/tools/Makefile delete mode 100644 helm/DEVEL/pxp/netstring/tools/unimap_to_ocaml/.cvsignore delete mode 100644 helm/DEVEL/pxp/netstring/tools/unimap_to_ocaml/Makefile delete mode 100644 helm/DEVEL/pxp/netstring/tools/unimap_to_ocaml/unimap_to_ocaml.ml delete mode 100644 helm/DEVEL/pxp/ocaml-findlib-0.4.0-1.i386.rpm delete mode 100644 helm/DEVEL/pxp/ocaml-findlib-0.4.0-1.src.rpm delete mode 100644 helm/DEVEL/pxp/ocaml-findlib.spec delete mode 100644 helm/DEVEL/pxp/ocaml-netstring-0.9.3-2.i386.rpm delete mode 100644 helm/DEVEL/pxp/ocaml-netstring-0.9.3-2.src.rpm delete mode 100644 helm/DEVEL/pxp/ocaml-netstring.spec delete mode 100644 helm/DEVEL/pxp/ocaml-pxp-1.0-1.i386.rpm delete mode 100644 helm/DEVEL/pxp/ocaml-pxp-1.0-1.src.rpm delete mode 100644 helm/DEVEL/pxp/ocaml-pxp.spec delete mode 100644 helm/DEVEL/pxp/pxp-1.0.tar.gz delete mode 100644 helm/DEVEL/pxp/pxp/.cvsignore delete mode 100644 helm/DEVEL/pxp/pxp/LICENSE delete mode 100644 helm/DEVEL/pxp/pxp/META delete mode 100644 helm/DEVEL/pxp/pxp/Makefile delete mode 100644 helm/DEVEL/pxp/pxp/Makefile.code delete mode 100644 helm/DEVEL/pxp/pxp/Makefile.conf delete mode 100644 helm/DEVEL/pxp/pxp/RELEASE delete mode 100644 helm/DEVEL/pxp/pxp/compatibility/.cvsignore delete mode 100644 helm/DEVEL/pxp/pxp/compatibility/META delete mode 100644 helm/DEVEL/pxp/pxp/compatibility/Makefile delete mode 100644 helm/DEVEL/pxp/pxp/compatibility/Makefile.code delete mode 100644 helm/DEVEL/pxp/pxp/compatibility/Makefile.conf delete mode 100644 helm/DEVEL/pxp/pxp/compatibility/README delete mode 100644 helm/DEVEL/pxp/pxp/compatibility/markup_document.ml delete mode 100644 helm/DEVEL/pxp/pxp/compatibility/markup_document.mli delete mode 100644 helm/DEVEL/pxp/pxp/compatibility/markup_dtd.ml delete mode 100644 helm/DEVEL/pxp/pxp/compatibility/markup_dtd.mli delete mode 100644 helm/DEVEL/pxp/pxp/compatibility/markup_reader.ml delete mode 100644 helm/DEVEL/pxp/pxp/compatibility/markup_reader.mli delete mode 100644 helm/DEVEL/pxp/pxp/compatibility/markup_types.ml delete mode 100644 helm/DEVEL/pxp/pxp/compatibility/markup_types.mli delete mode 100644 helm/DEVEL/pxp/pxp/compatibility/markup_yacc.ml delete mode 100644 helm/DEVEL/pxp/pxp/compatibility/markup_yacc.mli delete mode 100644 helm/DEVEL/pxp/pxp/doc/ABOUT-FINDLIB delete mode 100644 helm/DEVEL/pxp/pxp/doc/ABOUT-FINDLIB.xml delete mode 100644 helm/DEVEL/pxp/pxp/doc/EXTENSIONS delete mode 100644 helm/DEVEL/pxp/pxp/doc/EXTENSIONS.xml delete mode 100644 helm/DEVEL/pxp/pxp/doc/INSTALL delete mode 100644 helm/DEVEL/pxp/pxp/doc/INSTALL.xml delete mode 100644 helm/DEVEL/pxp/pxp/doc/Makefile delete mode 100644 helm/DEVEL/pxp/pxp/doc/PRERELEASE delete mode 100644 helm/DEVEL/pxp/pxp/doc/PRERELEASE.xml delete mode 100644 helm/DEVEL/pxp/pxp/doc/README delete mode 100644 helm/DEVEL/pxp/pxp/doc/README.xml delete mode 100644 helm/DEVEL/pxp/pxp/doc/SPEC delete mode 100644 helm/DEVEL/pxp/pxp/doc/SPEC.xml delete mode 100644 helm/DEVEL/pxp/pxp/doc/design.txt delete mode 100644 helm/DEVEL/pxp/pxp/doc/dist-common.xml delete mode 100644 helm/DEVEL/pxp/pxp/doc/manual/Makefile delete mode 100644 helm/DEVEL/pxp/pxp/doc/manual/html/TIMESTAMP delete mode 100644 helm/DEVEL/pxp/pxp/doc/manual/html/c1567.html delete mode 100644 helm/DEVEL/pxp/pxp/doc/manual/html/c36.html delete mode 100644 helm/DEVEL/pxp/pxp/doc/manual/html/c533.html delete mode 100644 helm/DEVEL/pxp/pxp/doc/manual/html/c893.html delete mode 100644 helm/DEVEL/pxp/pxp/doc/manual/html/index.html delete mode 100644 helm/DEVEL/pxp/pxp/doc/manual/html/markup.css delete mode 100644 helm/DEVEL/pxp/pxp/doc/manual/html/p34.html delete mode 100644 helm/DEVEL/pxp/pxp/doc/manual/html/pic/done delete mode 100644 helm/DEVEL/pxp/pxp/doc/manual/html/pic/extension_general.gif delete mode 100644 helm/DEVEL/pxp/pxp/doc/manual/html/pic/node_add.gif delete mode 100644 helm/DEVEL/pxp/pxp/doc/manual/html/pic/node_clone.gif delete mode 100644 helm/DEVEL/pxp/pxp/doc/manual/html/pic/node_delete.gif delete mode 100644 helm/DEVEL/pxp/pxp/doc/manual/html/pic/node_general.gif delete mode 100644 helm/DEVEL/pxp/pxp/doc/manual/html/pic/node_term.gif delete mode 100644 helm/DEVEL/pxp/pxp/doc/manual/html/x107.html delete mode 100644 helm/DEVEL/pxp/pxp/doc/manual/html/x1439.html delete mode 100644 helm/DEVEL/pxp/pxp/doc/manual/html/x1496.html delete mode 100644 helm/DEVEL/pxp/pxp/doc/manual/html/x1629.html delete mode 100644 helm/DEVEL/pxp/pxp/doc/manual/html/x1812.html delete mode 100644 helm/DEVEL/pxp/pxp/doc/manual/html/x1818.html delete mode 100644 helm/DEVEL/pxp/pxp/doc/manual/html/x1965.html delete mode 100644 helm/DEVEL/pxp/pxp/doc/manual/html/x468.html delete mode 100644 helm/DEVEL/pxp/pxp/doc/manual/html/x550.html delete mode 100644 helm/DEVEL/pxp/pxp/doc/manual/html/x675.html delete mode 100644 helm/DEVEL/pxp/pxp/doc/manual/html/x738.html delete mode 100644 helm/DEVEL/pxp/pxp/doc/manual/html/x939.html delete mode 100644 helm/DEVEL/pxp/pxp/doc/manual/ps/markup.ps delete mode 100644 helm/DEVEL/pxp/pxp/doc/manual/src/dtd.mli.ent delete mode 100755 helm/DEVEL/pxp/pxp/doc/manual/src/getcode.ml delete mode 100644 helm/DEVEL/pxp/pxp/doc/manual/src/markup.css delete mode 100644 helm/DEVEL/pxp/pxp/doc/manual/src/markup.dsl delete mode 100644 helm/DEVEL/pxp/pxp/doc/manual/src/markup.sgml delete mode 100644 helm/DEVEL/pxp/pxp/doc/manual/src/pic/extension_general.fig delete mode 100644 helm/DEVEL/pxp/pxp/doc/manual/src/pic/node_add.fig delete mode 100644 helm/DEVEL/pxp/pxp/doc/manual/src/pic/node_clone.fig delete mode 100644 helm/DEVEL/pxp/pxp/doc/manual/src/pic/node_delete.fig delete mode 100644 helm/DEVEL/pxp/pxp/doc/manual/src/pic/node_general.fig delete mode 100644 helm/DEVEL/pxp/pxp/doc/manual/src/pic/node_term.fig delete mode 100644 helm/DEVEL/pxp/pxp/doc/manual/src/readme.ent delete mode 100644 helm/DEVEL/pxp/pxp/doc/manual/src/yacc.mli.ent delete mode 100644 helm/DEVEL/pxp/pxp/examples/Makefile delete mode 100644 helm/DEVEL/pxp/pxp/examples/readme/.cvsignore delete mode 100644 helm/DEVEL/pxp/pxp/examples/readme/Makefile delete mode 100644 helm/DEVEL/pxp/pxp/examples/readme/Makefile.code delete mode 100644 helm/DEVEL/pxp/pxp/examples/readme/main.ml delete mode 100644 helm/DEVEL/pxp/pxp/examples/readme/readme.dtd delete mode 100644 helm/DEVEL/pxp/pxp/examples/readme/to_html.ml delete mode 100644 helm/DEVEL/pxp/pxp/examples/readme/to_text.ml delete mode 100644 helm/DEVEL/pxp/pxp/examples/simple_transformation/Makefile delete mode 100644 helm/DEVEL/pxp/pxp/examples/simple_transformation/README delete mode 100644 helm/DEVEL/pxp/pxp/examples/simple_transformation/delcol.ml delete mode 100644 helm/DEVEL/pxp/pxp/examples/simple_transformation/print.ml delete mode 100644 helm/DEVEL/pxp/pxp/examples/simple_transformation/record.dtd delete mode 100644 helm/DEVEL/pxp/pxp/examples/simple_transformation/sample.xml delete mode 100644 helm/DEVEL/pxp/pxp/examples/simple_transformation/sort.ml delete mode 100644 helm/DEVEL/pxp/pxp/examples/validate/.cvsignore delete mode 100644 helm/DEVEL/pxp/pxp/examples/validate/Makefile delete mode 100644 helm/DEVEL/pxp/pxp/examples/validate/validate.ml delete mode 100644 helm/DEVEL/pxp/pxp/examples/xmlforms/.cvsignore delete mode 100644 helm/DEVEL/pxp/pxp/examples/xmlforms/Makefile delete mode 100644 helm/DEVEL/pxp/pxp/examples/xmlforms/Makefile.code delete mode 100644 helm/DEVEL/pxp/pxp/examples/xmlforms/README delete mode 100644 helm/DEVEL/pxp/pxp/examples/xmlforms/ds_app.ml delete mode 100644 helm/DEVEL/pxp/pxp/examples/xmlforms/ds_context.ml delete mode 100644 helm/DEVEL/pxp/pxp/examples/xmlforms/ds_style.ml delete mode 100644 helm/DEVEL/pxp/pxp/examples/xmlforms/styles/Makefile delete mode 100644 helm/DEVEL/pxp/pxp/examples/xmlforms/styles/address-style.xml delete mode 100644 helm/DEVEL/pxp/pxp/examples/xmlforms/styles/crazy-style.xml delete mode 100644 helm/DEVEL/pxp/pxp/examples/xmlforms/styles/ds-object.dtd delete mode 100644 helm/DEVEL/pxp/pxp/examples/xmlforms/styles/ds-style.dtd delete mode 100644 helm/DEVEL/pxp/pxp/examples/xmlforms/styles/mini-style.xml delete mode 100644 helm/DEVEL/pxp/pxp/lexers/Makefile delete mode 100644 helm/DEVEL/pxp/pxp/lexers/Makefile.code delete mode 100644 helm/DEVEL/pxp/pxp/lexers/Makefile.generate delete mode 100644 helm/DEVEL/pxp/pxp/lexers/objects delete mode 100644 helm/DEVEL/pxp/pxp/lexers/open_pxp_lex_aux_iso88591.src delete mode 100644 helm/DEVEL/pxp/pxp/lexers/open_pxp_lex_aux_utf8.src delete mode 100644 helm/DEVEL/pxp/pxp/lexers/open_pxp_lex_misc_iso88591.src delete mode 100644 helm/DEVEL/pxp/pxp/lexers/open_pxp_lex_misc_utf8.src delete mode 100644 helm/DEVEL/pxp/pxp/lexers/pxp_lex_aux.src delete mode 100644 helm/DEVEL/pxp/pxp/lexers/pxp_lex_aux_iso88591.ml delete mode 100644 helm/DEVEL/pxp/pxp/lexers/pxp_lex_aux_utf8.ml delete mode 100644 helm/DEVEL/pxp/pxp/lexers/pxp_lex_content.src delete mode 100644 helm/DEVEL/pxp/pxp/lexers/pxp_lex_content_string.src delete mode 100644 helm/DEVEL/pxp/pxp/lexers/pxp_lex_declaration.src delete mode 100644 helm/DEVEL/pxp/pxp/lexers/pxp_lex_defs_drv_utf8.def delete mode 100644 helm/DEVEL/pxp/pxp/lexers/pxp_lex_defs_generic.def delete mode 100644 helm/DEVEL/pxp/pxp/lexers/pxp_lex_defs_iso88591.def delete mode 100644 helm/DEVEL/pxp/pxp/lexers/pxp_lex_document.src delete mode 100644 helm/DEVEL/pxp/pxp/lexers/pxp_lex_document_type.src delete mode 100644 helm/DEVEL/pxp/pxp/lexers/pxp_lex_dtd_string.src delete mode 100644 helm/DEVEL/pxp/pxp/lexers/pxp_lex_misc.src delete mode 100644 helm/DEVEL/pxp/pxp/lexers/pxp_lex_name_string.src delete mode 100644 helm/DEVEL/pxp/pxp/lexers/pxp_lex_within_tag.src delete mode 100644 helm/DEVEL/pxp/pxp/m2parsergen/Makefile delete mode 100644 helm/DEVEL/pxp/pxp/m2parsergen/README delete mode 100644 helm/DEVEL/pxp/pxp/m2parsergen/ast.ml delete mode 100644 helm/DEVEL/pxp/pxp/m2parsergen/generator.ml delete mode 100644 helm/DEVEL/pxp/pxp/m2parsergen/lexer.mll delete mode 100644 helm/DEVEL/pxp/pxp/m2parsergen/parser.mly delete mode 100644 helm/DEVEL/pxp/pxp/m2parsergen/x.m2y delete mode 100644 helm/DEVEL/pxp/pxp/pxp_aux.ml delete mode 100644 helm/DEVEL/pxp/pxp/pxp_codewriter.ml delete mode 100644 helm/DEVEL/pxp/pxp/pxp_codewriter.mli delete mode 100644 helm/DEVEL/pxp/pxp/pxp_dfa.ml delete mode 100644 helm/DEVEL/pxp/pxp/pxp_dfa.mli delete mode 100644 helm/DEVEL/pxp/pxp/pxp_document.ml delete mode 100644 helm/DEVEL/pxp/pxp/pxp_document.mli delete mode 100644 helm/DEVEL/pxp/pxp/pxp_dtd.ml delete mode 100644 helm/DEVEL/pxp/pxp/pxp_dtd.mli delete mode 100644 helm/DEVEL/pxp/pxp/pxp_entity.ml delete mode 100644 helm/DEVEL/pxp/pxp/pxp_lexer_types.ml delete mode 100644 helm/DEVEL/pxp/pxp/pxp_lexer_types.mli delete mode 100644 helm/DEVEL/pxp/pxp/pxp_lexers.ml delete mode 100644 helm/DEVEL/pxp/pxp/pxp_lexers.mli delete mode 100644 helm/DEVEL/pxp/pxp/pxp_reader.ml delete mode 100644 helm/DEVEL/pxp/pxp/pxp_reader.mli delete mode 100644 helm/DEVEL/pxp/pxp/pxp_types.ml delete mode 100644 helm/DEVEL/pxp/pxp/pxp_types.mli delete mode 100644 helm/DEVEL/pxp/pxp/pxp_utf8.ml delete mode 100644 helm/DEVEL/pxp/pxp/pxp_utf8.mli delete mode 100644 helm/DEVEL/pxp/pxp/pxp_yacc.m2y delete mode 100644 helm/DEVEL/pxp/pxp/pxp_yacc.mli delete mode 100644 helm/DEVEL/pxp/pxp/rtests/MISSING_TESTS delete mode 100644 helm/DEVEL/pxp/pxp/rtests/Makefile delete mode 100644 helm/DEVEL/pxp/pxp/rtests/README delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/Makefile delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/README delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/ext-sa/001.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/ext-sa/001.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/ext-sa/002.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/ext-sa/002.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/ext-sa/003.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/ext-sa/003.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/ext-sa/004.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/ext-sa/004.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/ext-sa/005.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/ext-sa/005.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/ext-sa/006.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/ext-sa/006.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/ext-sa/007.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/ext-sa/007.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/ext-sa/008.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/ext-sa/008.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/ext-sa/009.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/ext-sa/009.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/ext-sa/010.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/ext-sa/010.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/ext-sa/011.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/ext-sa/011.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/ext-sa/012.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/ext-sa/012.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/ext-sa/013.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/ext-sa/013.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/ext-sa/014.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/ext-sa/014.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/ext-sa/out/001.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/ext-sa/out/002.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/ext-sa/out/003.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/ext-sa/out/004.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/ext-sa/out/005.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/ext-sa/out/006.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/ext-sa/out/007.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/ext-sa/out/008.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/ext-sa/out/009.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/ext-sa/out/010.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/ext-sa/out/011.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/ext-sa/out/012.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/ext-sa/out/013.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/ext-sa/out/014.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/001.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/001.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/002.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/002.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/003-1.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/003-2.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/003.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/004-1.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/004-2.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/004.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/005-1.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/005-2.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/005.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/006.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/006.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/007.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/007.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/008.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/008.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/009.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/009.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/010.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/010.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/011.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/011.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/012.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/012.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/013.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/013.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/014.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/014.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/015.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/015.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/016.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/016.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/017.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/017.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/018.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/018.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/019.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/019.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/020.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/020.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/021.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/021.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/022.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/022.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/023.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/023.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/024.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/024.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/025.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/025.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/026.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/026.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/027.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/027.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/028.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/028.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/029.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/029.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/030.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/030.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/031-1.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/031-2.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/031.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/out/001.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/out/002.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/out/003.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/out/004.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/out/005.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/out/006.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/out/007.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/out/008.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/out/009.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/out/010.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/out/011.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/out/012.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/out/013.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/out/014.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/out/015.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/out/016.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/out/017.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/out/018.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/out/019.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/out/020.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/out/021.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/out/022.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/out/023.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/out/024.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/out/025.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/out/026.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/out/027.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/out/028.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/out/029.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/out/030.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/not-sa/out/031.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/001.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/002.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/003.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/004.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/005.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/006.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/007.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/008.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/009.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/010.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/011.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/012.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/013.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/014.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/015.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/016.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/017.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/018.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/019.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/020.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/021.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/022.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/023.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/024.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/025.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/026.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/027.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/028.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/029.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/030.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/031.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/032.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/033.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/034.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/035.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/036.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/037.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/038.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/039.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/040.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/041.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/042.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/043.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/044.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/045.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/046.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/047.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/048.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/049.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/050.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/051.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/052.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/053.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/054.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/055.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/056.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/057.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/058.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/059.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/060.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/061.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/062.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/063.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/064.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/065.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/066.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/067.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/068.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/069.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/070.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/071.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/072.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/073.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/074.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/075.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/076.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/077.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/078.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/079.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/080.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/081.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/082.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/083.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/084.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/085.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/086.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/087.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/088.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/089.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/090.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/091.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/092.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/093.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/094.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/095.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/096.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/097.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/097.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/098.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/099.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/100.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/101.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/102.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/103.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/104.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/105.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/106.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/107.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/108.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/109.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/110.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/111.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/112.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/113.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/114.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/115.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/116.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/117.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/118.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/119.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/001.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/002.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/003.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/004.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/005.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/006.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/007.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/008.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/009.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/010.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/011.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/012.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/013.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/014.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/015.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/016.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/017.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/018.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/019.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/020.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/021.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/022.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/023.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/024.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/025.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/026.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/027.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/028.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/029.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/030.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/031.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/032.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/033.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/034.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/035.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/036.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/037.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/038.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/039.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/040.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/041.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/042.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/043.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/044.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/045.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/046.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/047.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/048.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/049.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/050.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/051.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/052.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/053.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/054.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/055.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/056.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/057.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/058.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/059.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/060.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/061.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/062.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/063.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/064.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/065.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/066.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/067.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/068.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/069.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/070.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/071.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/072.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/073.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/074.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/075.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/076.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/077.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/078.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/079.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/080.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/081.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/082.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/083.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/084.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/085.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/086.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/087.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/088.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/089.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/090.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/091.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/092.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/093.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/094.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/095.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/096.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/097.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/098.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/099.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/100.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/101.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/102.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/103.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/104.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/105.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/106.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/107.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/108.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/109.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/110.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/111.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/112.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/113.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/114.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/115.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/116.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/117.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/118.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_jclark_valid/sa/out/119.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/att_normalization/001.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/att_normalization/002.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/att_normalization/003.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/att_normalization/004.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/att_normalization/005.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/att_normalization/006.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/att_normalization/007.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/att_normalization/INDEX delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/att_normalization/out/001.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/att_normalization/out/002.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/att_normalization/out/003.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/att_normalization/out/004.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/att_normalization/out/005.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/att_normalization/out/006.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/att_normalization/out/007.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/bugfixes/001.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/bugfixes/002+.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/bugfixes/003.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/bugfixes/INDEX delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/bugfixes/out/001.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/bugfixes/out/002+.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/bugfixes/out/003.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/comments/001.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/comments/INDEX delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/comments/out/001.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/conditional/001.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/conditional/001.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/conditional/002.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/conditional/002.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/conditional/003.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/conditional/003.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/conditional/004.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/conditional/004.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/conditional/005.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/conditional/005.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/conditional/006.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/conditional/006.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/conditional/007.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/conditional/007.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/conditional/008.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/conditional/008.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/conditional/009.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/conditional/009.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/conditional/010.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/conditional/010.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/conditional/011.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/conditional/011.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/conditional/INDEX delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/conditional/out/001.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/conditional/out/002.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/conditional/out/003.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/conditional/out/004.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/conditional/out/005.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/conditional/out/006.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/conditional/out/007.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/conditional/out/008.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/conditional/out/009.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/conditional/out/010.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/conditional/out/011.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/optional_decls/001.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/optional_decls/002.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/optional_decls/003.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/optional_decls/004.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/optional_decls/005.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/optional_decls/006.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/optional_decls/007.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/optional_decls/INDEX delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/optional_decls/out/001.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/optional_decls/out/002.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/optional_decls/out/003.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/optional_decls/out/004.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/optional_decls/out/005.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/optional_decls/out/006.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/data_valid/optional_decls/out/007.xml delete mode 100755 helm/DEVEL/pxp/pxp/rtests/canonxml/run_canonxml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/canonxml/test_canonxml.ml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/codewriter/Makefile delete mode 100644 helm/DEVEL/pxp/pxp/rtests/codewriter/compile.ml delete mode 100755 helm/DEVEL/pxp/pxp/rtests/codewriter/run_codewriter delete mode 100644 helm/DEVEL/pxp/pxp/rtests/codewriter/sample001.xml delete mode 100755 helm/DEVEL/pxp/pxp/rtests/codewriter/test_codewriter delete mode 100644 helm/DEVEL/pxp/pxp/rtests/dumpfiles.ml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/Makefile delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/README delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/001.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/001.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/010.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/010.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/011.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/011.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/012.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/012.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/013.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/013.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/014.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/014.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/015.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/015.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/016.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/016.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/017.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/017.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/018.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/018.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/019.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/019.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/020.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/020.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/021.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/021.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/022.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/022.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/023.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/023.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/024.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/024.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/025.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/025.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/026.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/026.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/027.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/027.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/028.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/028.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/029.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/029.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/030.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/030.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/031.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/031.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/032.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/032.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/033.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/033.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/034.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/034.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/035.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/035.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/036.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/036.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/037.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/037.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/038.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/038.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/060.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/060.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/060.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/061.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/061.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/061.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/062.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/062.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/062.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/063.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/063.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/063.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/064.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/064.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/064.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/065.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/065.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/065.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/066.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/066.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/066.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/067.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/067.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/067.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/068.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/068.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/068.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/069.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/069.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/069.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/070.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/070.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/070.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/080.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/080.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/081.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/081.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_invalid/INDEX delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_invalid/001.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_invalid/001.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_invalid/001.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_invalid/002.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_invalid/002.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_invalid/002.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_invalid/003.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_invalid/003.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_invalid/003.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_invalid/004.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_invalid/004.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_invalid/004.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_invalid/005.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_invalid/005.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_invalid/005.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_invalid/006.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_invalid/006.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_invalid/006.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/ext-sa/001.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/ext-sa/001.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/ext-sa/001.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/ext-sa/002.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/ext-sa/002.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/ext-sa/002.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/ext-sa/003.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/ext-sa/003.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/ext-sa/003.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/not-sa/001.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/not-sa/001.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/not-sa/001.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/not-sa/002.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/not-sa/002.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/not-sa/003.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/not-sa/003.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/not-sa/003.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/not-sa/004.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/not-sa/004.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/not-sa/004.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/not-sa/005.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/not-sa/005.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/not-sa/005.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/not-sa/006.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/not-sa/006.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/not-sa/006.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/not-sa/007.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/not-sa/007.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/not-sa/007.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/not-sa/008.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/not-sa/008.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/not-sa/008.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa-problems/140.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa-problems/141.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/001.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/001.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/002.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/002.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/003.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/003.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/004.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/004.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/005.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/005.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/006.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/006.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/007.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/007.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/008.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/008.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/009.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/009.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/010.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/010.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/011.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/011.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/012.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/012.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/013.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/013.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/014.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/014.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/015.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/015.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/016.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/016.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/017.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/017.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/018.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/018.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/019.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/019.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/020.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/020.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/021.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/021.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/022.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/022.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/023.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/023.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/024.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/024.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/025.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/025.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/026.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/026.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/027.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/027.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/028.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/028.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/029.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/029.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/030.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/030.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/031.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/031.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/032.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/032.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/033.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/033.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/034.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/034.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/035.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/035.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/036.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/036.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/037.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/037.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/038.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/038.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/039.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/039.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/040.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/040.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/041.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/041.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/042.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/042.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/043.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/043.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/044.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/044.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/045.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/045.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/046.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/046.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/047.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/047.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/048.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/048.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/049.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/049.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/050.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/050.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/051.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/051.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/052.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/052.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/053.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/053.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/054.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/054.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/055.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/055.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/056.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/056.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/057.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/057.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/058.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/058.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/059.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/059.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/060.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/060.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/061.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/061.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/062.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/062.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/063.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/063.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/064.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/064.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/065.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/065.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/066.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/066.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/067.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/067.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/068.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/068.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/069.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/069.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/070.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/070.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/071.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/071.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/072.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/072.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/073.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/073.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/074.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/074.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/075.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/075.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/076.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/076.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/077.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/077.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/078.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/078.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/079.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/079.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/080.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/080.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/081.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/081.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/082.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/082.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/083.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/083.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/084.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/084.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/085.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/085.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/086.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/086.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/087.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/087.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/088.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/088.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/089.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/089.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/090.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/090.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/091.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/091.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/092.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/092.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/093.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/093.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/094.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/094.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/095.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/095.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/096.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/096.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/097.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/097.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/098.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/098.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/099.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/099.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/100.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/100.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/101.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/101.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/102.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/102.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/103.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/103.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/104.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/104.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/105.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/105.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/106.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/106.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/107.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/107.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/108.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/108.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/109.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/109.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/110.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/110.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/111.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/111.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/112.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/112.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/113.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/113.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/114.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/114.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/115.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/115.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/116.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/116.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/117.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/117.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/118.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/118.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/119.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/119.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/120.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/120.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/121.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/121.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/122.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/122.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/123.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/123.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/124.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/124.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/125.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/125.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/126.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/126.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/127.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/127.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/128.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/128.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/129.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/129.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/130.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/130.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/131.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/131.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/132.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/132.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/133.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/133.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/134.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/134.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/135.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/135.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/136.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/136.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/137.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/137.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/138.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/138.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/139.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/139.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/140.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/140.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/141.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/141.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/142.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/142.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/143.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/143.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/144.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/144.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/145.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/145.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/146.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/146.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/147.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/147.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/148.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/148.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/149.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/149.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/150.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/150.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/151.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/151.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/152.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/152.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/153.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/153.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/154.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/154.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/155.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/155.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/156.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/156.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/157.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/157.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/158.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/158.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/159.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/159.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/160.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/160.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/161.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/161.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/162.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/162.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/163.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/163.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/164.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/164.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/165.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/165.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/166.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/166.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/167.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/167.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/168.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/168.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/169.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/169.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/170.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/170.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/171.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/171.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/172.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/172.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/173.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/173.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/174.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/174.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/175.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/175.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/176.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/176.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/177.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/177.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/178.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/178.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/179.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/179.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/180.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/180.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/181.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/181.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/182.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/182.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/183.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/183.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/184.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/184.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/185.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/185.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/185.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/186.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/186.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_jclark_notwf/sa/null.ent delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_notwf/sa/001.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_notwf/sa/001.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_notwf/sa/002.out delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_notwf/sa/002.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/data_notwf/sa/null.ent delete mode 100755 helm/DEVEL/pxp/pxp/rtests/negative/run_negative delete mode 100644 helm/DEVEL/pxp/pxp/rtests/negative/test_negative.ml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/reader/Makefile delete mode 100644 helm/DEVEL/pxp/pxp/rtests/reader/minilex.mll delete mode 100644 helm/DEVEL/pxp/pxp/rtests/reader/t100.dat delete mode 100644 helm/DEVEL/pxp/pxp/rtests/reader/test_reader.ml delete mode 100755 helm/DEVEL/pxp/pxp/rtests/run delete mode 100644 helm/DEVEL/pxp/pxp/rtests/write/Makefile delete mode 100755 helm/DEVEL/pxp/pxp/rtests/write/run_write delete mode 100644 helm/DEVEL/pxp/pxp/rtests/write/sample001.xml delete mode 100644 helm/DEVEL/pxp/pxp/rtests/write/test_write.ml delete mode 100755 helm/DEVEL/pxp/pxp/tools/collect_files delete mode 100755 helm/DEVEL/pxp/pxp/tools/insert_variant delete mode 100644 helm/DEVEL/pxp/pxp/tools/ucs2_to_utf8/.cvsignore delete mode 100644 helm/DEVEL/pxp/pxp/tools/ucs2_to_utf8/Makefile delete mode 100644 helm/DEVEL/pxp/pxp/tools/ucs2_to_utf8/README delete mode 100644 helm/DEVEL/pxp/pxp/tools/ucs2_to_utf8/lexer.mll delete mode 100644 helm/DEVEL/pxp/pxp/tools/ucs2_to_utf8/parser.mly delete mode 100644 helm/DEVEL/pxp/pxp/tools/ucs2_to_utf8/types.ml delete mode 100644 helm/DEVEL/pxp/pxp/tools/ucs2_to_utf8/ucs2_to_utf8.ml delete mode 100755 helm/EXPORT/cshrc delete mode 100644 helm/EXPORT/export_Bordeaux_EXCEPTIONS/Makefile delete mode 100755 helm/EXPORT/export_Bordeaux_EXCEPTIONS/exporttheories.sh delete mode 100644 helm/EXPORT/export_Bordeaux_EXCEPTIONS/prova_Bordeaux_EXCEPTIONS.v delete mode 100644 helm/EXPORT/export_Marseille_CCS/Makefile delete mode 100755 helm/EXPORT/export_Marseille_CCS/exporttheories.sh delete mode 100644 helm/EXPORT/export_Marseille_CCS/prova_Marseille_CCS.v delete mode 100644 helm/EXPORT/export_Nijmegen_Rem/Makefile delete mode 100755 helm/EXPORT/export_Nijmegen_Rem/exporttheories.sh delete mode 100644 helm/EXPORT/export_Nijmegen_Rem/prova_Nijmegen_Rem.v delete mode 100644 helm/EXPORT/export_Paris_ZF/Makefile delete mode 100755 helm/EXPORT/export_Paris_ZF/exporttheories.sh delete mode 100644 helm/EXPORT/export_Paris_ZF/prova_Paris_ZF.v delete mode 100644 helm/EXPORT/export_Rocq_CHECKER/Makefile delete mode 100755 helm/EXPORT/export_Rocq_CHECKER/exporttheories.sh delete mode 100644 helm/EXPORT/export_Rocq_CHECKER/prova_Rocq_CHECKER.v delete mode 100644 helm/EXPORT/export_Rocq_HIGMAN/Makefile delete mode 100755 helm/EXPORT/export_Rocq_HIGMAN/exporttheories.sh delete mode 100644 helm/EXPORT/export_Rocq_HIGMAN/prova_Rocq_HIGMAN.v delete mode 100644 helm/EXPORT/export_Rocq_SHUFFLE/Makefile delete mode 100755 helm/EXPORT/export_Rocq_SHUFFLE/exporttheories.sh delete mode 100644 helm/EXPORT/export_Rocq_SHUFFLE/prova_Rocq_SHUFFLE.v delete mode 100644 helm/EXPORT/export_Utrecht_Ramsey/Makefile delete mode 100755 helm/EXPORT/export_Utrecht_Ramsey/exporttheories.sh delete mode 100644 helm/EXPORT/export_Utrecht_Ramsey/prova_Utrecht_Ramsey.v delete mode 100644 helm/EXPORT/exportcoq/Makefile delete mode 100755 helm/EXPORT/exportcoq/export_contrib_theory.sh delete mode 100755 helm/EXPORT/exportcoq/export_theory_theory.sh delete mode 100755 helm/EXPORT/exportcoq/exporttheories.sh delete mode 100644 helm/EXPORT/exportcoq/provacoq.v delete mode 100644 helm/EXPORT/exportcoq/provacoqArith.v delete mode 100644 helm/EXPORT/exportcoq/provacoqBool.v delete mode 100644 helm/EXPORT/exportcoq/provacoqInit.v delete mode 100644 helm/EXPORT/exportcoq/provacoqLists.v delete mode 100644 helm/EXPORT/exportcoq/provacoqLogic.v delete mode 100644 helm/EXPORT/exportcoq/provacoqReals.v delete mode 100644 helm/EXPORT/exportcoq/provacoqRelations.v delete mode 100644 helm/EXPORT/exportcoq/provacoqSets.v delete mode 100644 helm/EXPORT/exportcoq/provacoqSorting.v delete mode 100644 helm/EXPORT/exportcoq/provacoqTrees.v delete mode 100644 helm/EXPORT/exportcoq/provacoqZArith.v delete mode 100644 helm/EXPORT/exportcoq/provacoqcontribOmega.v delete mode 100644 helm/EXPORT/exportcoq/provacoqcontribRing.v delete mode 100644 helm/EXPORT/exportcsczfc/Makefile delete mode 100644 helm/EXPORT/exportcsczfc/csc_zfc/.cvsignore delete mode 100644 helm/EXPORT/exportcsczfc/csc_zfc/csc_eqdep.v delete mode 100644 helm/EXPORT/exportcsczfc/csc_zfc/csc_zfc.v delete mode 100755 helm/EXPORT/exportcsczfc/exporttheories.sh delete mode 100644 helm/EXPORT/exportcsczfc/provacsczfc.v delete mode 100644 helm/EXPORT/exportprove/Makefile delete mode 100755 helm/EXPORT/exportprove/exporttheories.sh delete mode 100644 helm/EXPORT/exportprove/prova.v delete mode 100644 helm/EXPORT/exportprove/provaCofix.v delete mode 100644 helm/EXPORT/exportprove/provaFeIota.v delete mode 100644 helm/EXPORT/exportprove/provaStruct.v delete mode 100644 helm/EXPORT/exportprove/prove/.cvsignore delete mode 100644 helm/EXPORT/exportprove/prove/provaF.v delete mode 100644 helm/EXPORT/exportprove/prove/provaIota.v delete mode 100644 helm/EXPORT/exportprove/prove/provacofix.v delete mode 100644 helm/EXPORT/exportprove/prove/provastruct.v delete mode 100644 helm/EXPORT/exportprove/prove/provastruct2.v delete mode 100644 helm/EXPORT/exportprove/prove/provastruct3.v delete mode 100644 helm/EXPORT/exportprove/prove/provastruct4.v delete mode 100644 helm/EXPORT/exportprove/prove/provastruct5.v delete mode 100755 helm/EXPORT/mktheory.pl delete mode 100644 helm/Makefile delete mode 100644 helm/annotationHelper/.cvsignore delete mode 100644 helm/annotationHelper/.depend delete mode 100644 helm/annotationHelper/Makefile delete mode 100644 helm/annotationHelper/cicAnnotationHelper.ml delete mode 100644 helm/annotationHelper/cicAnnotationHinter.ml delete mode 100644 helm/annotationHelper/cicAnnotationHinter.mli delete mode 100755 helm/cgi/mkcontrol.pl delete mode 100755 helm/cgi/mkheader.pl delete mode 100755 helm/cgi/mkindex.pl delete mode 100755 helm/cgi/mkindexcic.pl delete mode 100755 helm/cgi/mkindextheory.pl delete mode 100644 helm/configuration/.cvsignore delete mode 100644 helm/configuration/AUTHORS delete mode 100644 helm/configuration/COPYING delete mode 100644 helm/configuration/ChangeLog delete mode 100644 helm/configuration/Makefile.in delete mode 100644 helm/configuration/NEWS delete mode 100644 helm/configuration/README delete mode 100644 helm/configuration/config.cache.pkg delete mode 100644 helm/configuration/configure.in delete mode 100644 helm/configuration/etc/.cvsignore delete mode 100644 helm/configuration/etc/configuration.dtd delete mode 100644 helm/configuration/etc/configuration.xml.in delete mode 100644 helm/configuration/etc/helm-dictionary.xml delete mode 100644 helm/configuration/etc/helm-font-configuration.xml delete mode 100644 helm/configuration/etc/helm-math-engine-configuration.xml.in delete mode 100644 helm/configuration/helm-config.in delete mode 100644 helm/configuration/helm_configuration.spec.in delete mode 100644 helm/configuration/lib/.cvsignore delete mode 100644 helm/configuration/lib/configuration.pl.in delete mode 100644 helm/configuration/library/servers.txt delete mode 100644 helm/configuration/library/urls_of_uris.db delete mode 100644 helm/dtd/annotations.dtd delete mode 100644 helm/dtd/backward.dtd delete mode 100644 helm/dtd/cic.dtd delete mode 100644 helm/dtd/cicobject.dtd delete mode 100644 helm/dtd/cictypes.dtd delete mode 100644 helm/dtd/forward.dtd delete mode 100644 helm/dtd/isoamsa.ent delete mode 100644 helm/dtd/isoamsb.ent delete mode 100644 helm/dtd/isoamsc.ent delete mode 100644 helm/dtd/isoamsn.ent delete mode 100644 helm/dtd/isoamso.ent delete mode 100644 helm/dtd/isoamsr.ent delete mode 100644 helm/dtd/isobox.ent delete mode 100644 helm/dtd/isocyr1.ent delete mode 100644 helm/dtd/isocyr2.ent delete mode 100644 helm/dtd/isodia.ent delete mode 100644 helm/dtd/isogrk3.ent delete mode 100644 helm/dtd/isolat1.ent delete mode 100644 helm/dtd/isolat2.ent delete mode 100644 helm/dtd/isomfrk.ent delete mode 100644 helm/dtd/isomopf.ent delete mode 100644 helm/dtd/isomscr.ent delete mode 100644 helm/dtd/isonum.ent delete mode 100644 helm/dtd/isopub.ent delete mode 100644 helm/dtd/isotech.ent delete mode 100644 helm/dtd/ls.dtd delete mode 100644 helm/dtd/mathml2-qname-1.mod delete mode 100644 helm/dtd/mathml2.dtd delete mode 100644 helm/dtd/maththeory.dtd delete mode 100644 helm/dtd/mmlalias.ent delete mode 100644 helm/dtd/mmlextra.ent delete mode 100644 helm/dtd/provastruct.theory.xml delete mode 100644 helm/dtd/theoryobject.dtd delete mode 100644 helm/fix_params/.cvsignore delete mode 100644 helm/fix_params/.depend delete mode 100644 helm/fix_params/Makefile delete mode 100644 helm/fix_params/cic2Xml.ml delete mode 100644 helm/fix_params/cicFindParameters.ml delete mode 100644 helm/fix_params/fix_params.ml delete mode 100644 helm/gTopLevel/.cvsignore delete mode 100644 helm/gTopLevel/.depend delete mode 100644 helm/gTopLevel/INSTALL delete mode 100644 helm/gTopLevel/Makefile delete mode 100644 helm/gTopLevel/TATTICHE delete mode 100644 helm/gTopLevel/dictionary-cic.xml delete mode 100644 helm/gTopLevel/disambiguate.ml delete mode 100644 helm/gTopLevel/disambiguate.mli delete mode 100644 helm/gTopLevel/esempi/and_implies_or.cic delete mode 100644 helm/gTopLevel/esempi/and_implies_or2.cic delete mode 100644 helm/gTopLevel/esempi/apply.cic delete mode 100644 helm/gTopLevel/esempi/bug.cic delete mode 100644 helm/gTopLevel/esempi/calcolo_proposizioni.cic delete mode 100644 helm/gTopLevel/esempi/conversion.cic delete mode 100644 helm/gTopLevel/esempi/decompose.cic delete mode 100644 helm/gTopLevel/esempi/elim.cic delete mode 100644 helm/gTopLevel/esempi/elim2.cic delete mode 100644 helm/gTopLevel/esempi/evars.cic delete mode 100644 helm/gTopLevel/esempi/fourier.cic delete mode 100644 helm/gTopLevel/esempi/fourier/fourier.cic delete mode 100644 helm/gTopLevel/esempi/fourier/fourier_benchmarks.cic delete mode 100644 helm/gTopLevel/esempi/fourier/fourier_make_benchmarks.ml delete mode 100644 helm/gTopLevel/esempi/prova.cic delete mode 100644 helm/gTopLevel/esempi/rewrite.cic delete mode 100644 helm/gTopLevel/esempi/ring/0eq0.cic delete mode 100644 helm/gTopLevel/esempi/ring/aliases.cic delete mode 100644 helm/gTopLevel/esempi/ring/caso0.cic delete mode 100644 helm/gTopLevel/esempi/ring/caso1.cic delete mode 100644 helm/gTopLevel/esempi/ring/caso2.cic delete mode 100644 helm/gTopLevel/esempi/ring/caso3.1.cic delete mode 100644 helm/gTopLevel/esempi/ring/caso3.1bis.cic delete mode 100644 helm/gTopLevel/esempi/ring/caso3.2.cic delete mode 100644 helm/gTopLevel/esempi/ring/caso3.3.cic delete mode 100644 helm/gTopLevel/esempi/ring/coq_overkill_helm_rulez.cic delete mode 100644 helm/gTopLevel/esempi/ring/novarmap.cic delete mode 100644 helm/gTopLevel/esempi/ring/novarmap_tofinish.cic delete mode 100644 helm/gTopLevel/esempi/ring/varmap.cic delete mode 100644 helm/gTopLevel/esempi/ring/varmap2.cic delete mode 100644 helm/gTopLevel/esempi/ring/varmap_trivial.cic delete mode 100644 helm/gTopLevel/esempi/ring/varmap_trivial2.cic delete mode 100644 helm/gTopLevel/esempi/ring/varmap_trivial3.cic delete mode 100644 helm/gTopLevel/esempi/ring/varmap_trivial_molte_variabili.cic delete mode 100644 helm/gTopLevel/esempi/sets.cic delete mode 100644 helm/gTopLevel/esempi/various.cic delete mode 100644 helm/gTopLevel/gTopLevel.ml delete mode 100644 helm/gTopLevel/hbugs.ml delete mode 100644 helm/gTopLevel/hbugs.mli delete mode 100644 helm/gTopLevel/invokeTactics.ml delete mode 100644 helm/gTopLevel/invokeTactics.mli delete mode 100644 helm/gTopLevel/logicalOperations.ml delete mode 100644 helm/gTopLevel/logicalOperations.mli delete mode 100644 helm/gTopLevel/proofEngine.ml delete mode 100644 helm/gTopLevel/proofEngine.mli delete mode 100644 helm/gTopLevel/rootcontent.xsl delete mode 100755 helm/gTopLevel/script.sh delete mode 100644 helm/gTopLevel/termEditor.ml delete mode 100644 helm/gTopLevel/termEditor.mli delete mode 100644 helm/gTopLevel/termViewer.ml delete mode 100644 helm/gTopLevel/termViewer.mli delete mode 100644 helm/gTopLevel/texTermEditor.ml delete mode 100644 helm/gTopLevel/texTermEditor.mli delete mode 100644 helm/gTopLevel/xmlDiff.ml delete mode 100644 helm/gTopLevel/xmlDiff.mli delete mode 100644 helm/graphs/tools/.cvsignore delete mode 100644 helm/graphs/tools/Makefile delete mode 100644 helm/graphs/tools/drawGraph.ml delete mode 100755 helm/graphs/tools/draw_graph.cgi delete mode 100755 helm/graphs/tools/mk_html.pl delete mode 100644 helm/graphs/tools/simplify_deps/.cvsignore delete mode 100644 helm/graphs/tools/simplify_deps/Makefile delete mode 100644 helm/graphs/tools/simplify_deps/simplify_deps.ml delete mode 100644 helm/graphs/tools/uriSetQueue.ml delete mode 100755 helm/graphs/tools/uri_set_queue.cgi delete mode 100644 helm/hbugs/Makefile delete mode 100644 helm/hbugs/broker/.cvsignore delete mode 100644 helm/hbugs/broker/.depend delete mode 100644 helm/hbugs/broker/Makefile delete mode 100644 helm/hbugs/broker/Makefile.overrides delete mode 100644 helm/hbugs/broker/hbugs_broker.ml delete mode 100755 helm/hbugs/broker/hbugs_broker_ctl.sh delete mode 100644 helm/hbugs/broker/hbugs_broker_registry.ml delete mode 100644 helm/hbugs/broker/hbugs_broker_registry.mli delete mode 100644 helm/hbugs/broker/run/.cvsignore delete mode 100644 helm/hbugs/client/.cvsignore delete mode 100644 helm/hbugs/client/Makefile delete mode 100644 helm/hbugs/client/hbugs_client.ml delete mode 100644 helm/hbugs/client/hbugs_client.mli delete mode 100644 helm/hbugs/client/hbugs_gui.glade delete mode 100644 helm/hbugs/client/main.ml delete mode 100644 helm/hbugs/common/.cvsignore delete mode 100644 helm/hbugs/common/.depend delete mode 100644 helm/hbugs/common/Makefile delete mode 100644 helm/hbugs/common/Makefile.overrides delete mode 100644 helm/hbugs/common/hbugs_common.ml delete mode 100644 helm/hbugs/common/hbugs_common.mli delete mode 100644 helm/hbugs/common/hbugs_id_generator.ml delete mode 100644 helm/hbugs/common/hbugs_id_generator.mli delete mode 100644 helm/hbugs/common/hbugs_messages.ml delete mode 100644 helm/hbugs/common/hbugs_messages.mli delete mode 100644 helm/hbugs/common/hbugs_misc.ml delete mode 100644 helm/hbugs/common/hbugs_misc.mli delete mode 100644 helm/hbugs/common/hbugs_types.ml delete mode 100644 helm/hbugs/common/threadSafe.ml delete mode 100644 helm/hbugs/doc/.cvsignore delete mode 100644 helm/hbugs/doc/hbugs.dia delete mode 100644 helm/hbugs/meta/.cvsignore delete mode 100644 helm/hbugs/meta/META.hbugs-client.in delete mode 100644 helm/hbugs/meta/META.hbugs-common.in delete mode 100644 helm/hbugs/meta/META.hbugs-thread-safe.in delete mode 100644 helm/hbugs/meta/Makefile delete mode 100644 helm/hbugs/test/.cvsignore delete mode 100644 helm/hbugs/test/HBUGS_MESSAGES.xml delete mode 100644 helm/hbugs/test/Makefile delete mode 100644 helm/hbugs/test/test_serialization.ml delete mode 100644 helm/hbugs/tutors/.cvsignore delete mode 100644 helm/hbugs/tutors/INDEX.xml delete mode 100644 helm/hbugs/tutors/Makefile delete mode 100755 helm/hbugs/tutors/build_tutors.ml delete mode 100644 helm/hbugs/tutors/hbugs_deity.ml delete mode 100644 helm/hbugs/tutors/hbugs_deity.mli delete mode 100644 helm/hbugs/tutors/hbugs_tutor.TPL.ml delete mode 100644 helm/hbugs/tutors/hbugs_tutors_common.ml delete mode 100644 helm/hbugs/tutors/hbugs_tutors_common.mli delete mode 100755 helm/hbugs/tutors/ls_tutors.ml delete mode 100644 helm/hbugs/tutors/run/.cvsignore delete mode 100755 helm/hbugs/tutors/sabba.sh delete mode 100644 helm/hbugs/tutors/search_pattern_apply_tutor.ml delete mode 100644 helm/header/getheader.xml delete mode 100644 helm/header/provaurl delete mode 100644 helm/header/provaurl1 delete mode 100644 helm/header/setheader.xsl delete mode 100644 helm/helm_data/.cvsignore delete mode 100644 helm/helm_data/AUTHORS delete mode 100644 helm/helm_data/COPYING delete mode 100644 helm/helm_data/ChangeLog delete mode 100644 helm/helm_data/LICENSE delete mode 100644 helm/helm_data/LICENSE.ml delete mode 100644 helm/helm_data/LICENSE.script delete mode 100644 helm/helm_data/LICENSE.xml delete mode 100644 helm/helm_data/Makefile.in delete mode 100644 helm/helm_data/NEWS delete mode 100644 helm/helm_data/README delete mode 100644 helm/helm_data/config.cache.pkg delete mode 100644 helm/helm_data/configure.in delete mode 100644 helm/helm_data/helm_data.spec.in delete mode 100644 helm/helmpot/.cvsignore delete mode 100644 helm/helmpot/AUTHORS delete mode 100644 helm/helmpot/ChangeLog delete mode 100644 helm/helmpot/LICENSE delete mode 100644 helm/helmpot/Makefile.am delete mode 100644 helm/helmpot/NEWS delete mode 100644 helm/helmpot/README delete mode 100644 helm/helmpot/acconfig.h delete mode 100644 helm/helmpot/configure.in delete mode 100644 helm/helmpot/debian/changelog delete mode 100644 helm/helmpot/debian/control delete mode 100644 helm/helmpot/debian/copyright delete mode 100644 helm/helmpot/debian/docs delete mode 100755 helm/helmpot/debian/rules delete mode 100644 helm/helmpot/guiGTK.c delete mode 100644 helm/helmpot/guiGTK.h delete mode 100644 helm/helmpot/helmpot.spec.in delete mode 100644 helm/helmpot/main.c delete mode 100644 helm/helmpot/pot_mask delete mode 100644 helm/http_getter/.cvsignore delete mode 100644 helm/http_getter/.depend delete mode 100644 helm/http_getter/AUTHORS delete mode 100644 helm/http_getter/BUGS delete mode 100644 helm/http_getter/COPYING delete mode 100644 helm/http_getter/ChangeLog delete mode 100644 helm/http_getter/Makefile delete mode 100644 helm/http_getter/Makefile.overrides delete mode 100644 helm/http_getter/NEWS delete mode 100644 helm/http_getter/README delete mode 100644 helm/http_getter/doc/http_getter.conf.xml.sample delete mode 100644 helm/http_getter/http_getter.ml delete mode 100644 helm/http_getter/http_getter_cache.ml delete mode 100644 helm/http_getter/http_getter_cache.mli delete mode 100644 helm/http_getter/http_getter_common.ml delete mode 100644 helm/http_getter/http_getter_common.mli delete mode 100644 helm/http_getter/http_getter_const.ml delete mode 100644 helm/http_getter/http_getter_const.mli delete mode 100644 helm/http_getter/http_getter_debugger.ml delete mode 100644 helm/http_getter/http_getter_debugger.mli delete mode 100644 helm/http_getter/http_getter_env.ml delete mode 100644 helm/http_getter/http_getter_env.mli delete mode 100644 helm/http_getter/http_getter_map.ml delete mode 100644 helm/http_getter/http_getter_map.mli delete mode 100644 helm/http_getter/http_getter_misc.ml delete mode 100644 helm/http_getter/http_getter_misc.mli delete mode 100644 helm/http_getter/http_getter_types.ml delete mode 100644 helm/http_getter/panel/.cvsignore delete mode 100644 helm/http_getter/panel/Makefile delete mode 100644 helm/http_getter/panel/control.html delete mode 100644 helm/http_getter/panel/control.js delete mode 100644 helm/http_getter/panel/index.html delete mode 100644 helm/http_getter/panel/welcome.html delete mode 100644 helm/http_getter/threadSafe.ml delete mode 100644 helm/http_getter/threadSafe.mli delete mode 100755 helm/http_getter/tools/dump_db.ml delete mode 100755 helm/http_getter/tools/dump_db.pl delete mode 100755 helm/http_getter/tools/uri_escape.pl delete mode 100755 helm/http_getter/tools/uri_unescape.pl delete mode 100644 helm/http_getter/zack.ml delete mode 100644 helm/http_getter/zack.mli delete mode 100644 helm/hxsp/config delete mode 100644 helm/hxsp/hxsp.pl delete mode 100644 helm/hxsp/make.pl delete mode 100644 helm/hxsp/msg/error.en delete mode 100644 helm/hxsp/msg/error.it delete mode 100644 helm/hxsp/msg/message.en delete mode 100644 helm/hxsp/msg/message.it delete mode 100644 helm/hxsp/splitted/0.init.p.pl delete mode 100644 helm/hxsp/splitted/1.globvars.p.pl delete mode 100644 helm/hxsp/splitted/2.start.p.pl delete mode 100644 helm/hxsp/splitted/3.daemon.p.pl delete mode 100644 helm/hxsp/splitted/4.hash.p.pl delete mode 100644 helm/hxsp/splitted/5.libxslt.p.pl delete mode 100644 helm/hxsp/splitted/6.commands.p.pl delete mode 100644 helm/hxsp/splitted/7.qsparse.p.pl delete mode 100644 helm/hxsp/splitted/8.strrep.p.pl delete mode 100644 helm/hxsp/splitted/9.load.p.pl delete mode 100644 helm/hxsp/tpl/ok.tpl delete mode 100644 helm/hxsp/tpl/operror.tpl delete mode 100644 helm/hxsp/tpl/synerror.tpl delete mode 100644 helm/interface/.cvsignore delete mode 100644 helm/interface/.depend delete mode 100644 helm/interface/AUTHORS delete mode 100644 helm/interface/COPYING delete mode 100644 helm/interface/ChangeLog delete mode 100644 helm/interface/Makefile.in delete mode 100644 helm/interface/NEWS delete mode 100644 helm/interface/README delete mode 100644 helm/interface/TEMPI delete mode 100644 helm/interface/WGET delete mode 100644 helm/interface/annotation2Xml.ml delete mode 100644 helm/interface/annotationParser.ml delete mode 100644 helm/interface/annotationParser2.ml delete mode 100644 helm/interface/cic.ml delete mode 100644 helm/interface/cic2Xml.ml delete mode 100644 helm/interface/cicAnnotationHinter.ml delete mode 100644 helm/interface/cicCache.ml delete mode 100644 helm/interface/cicCache.mli delete mode 100644 helm/interface/cicCooking.ml delete mode 100644 helm/interface/cicCooking.mli delete mode 100644 helm/interface/cicFindParameters.ml delete mode 100644 helm/interface/cicParser.ml delete mode 100644 helm/interface/cicParser.mli delete mode 100644 helm/interface/cicParser2.ml delete mode 100644 helm/interface/cicParser2.mli delete mode 100644 helm/interface/cicParser3.ml delete mode 100644 helm/interface/cicParser3.mli delete mode 100644 helm/interface/cicPp.ml delete mode 100644 helm/interface/cicPp.mli delete mode 100644 helm/interface/cicReduction.ml delete mode 100644 helm/interface/cicReduction.mli delete mode 100644 helm/interface/cicSubstitution.ml delete mode 100644 helm/interface/cicSubstitution.mli delete mode 100644 helm/interface/cicTypeChecker.ml delete mode 100644 helm/interface/cicTypeChecker.mli delete mode 100644 helm/interface/cicXPath.ml delete mode 100644 helm/interface/clientHTTP.ml delete mode 100644 helm/interface/config.cache.pkg delete mode 100644 helm/interface/configuration.ml.in delete mode 100644 helm/interface/configure.in delete mode 100644 helm/interface/deannotate.ml delete mode 100644 helm/interface/experiment.ml delete mode 100644 helm/interface/fix_params.ml delete mode 100644 helm/interface/getter.ml delete mode 100644 helm/interface/getter.mli delete mode 100644 helm/interface/helm_gtk_interface.spec.in delete mode 100755 helm/interface/helm_wget.in delete mode 100755 helm/interface/mmlinterface.ml delete mode 100644 helm/interface/pxpUriResolver.ml delete mode 100644 helm/interface/reduction.ml delete mode 100644 helm/interface/styleConfiguration.ml delete mode 100644 helm/interface/theory.ml delete mode 100644 helm/interface/theoryCache.ml delete mode 100644 helm/interface/theoryParser.ml delete mode 100644 helm/interface/theoryParser2.ml delete mode 100644 helm/interface/theoryTypeChecker.ml delete mode 100755 helm/interface/toglie_helm_xref.pl delete mode 100755 helm/interface/toglie_helm_xref.sh delete mode 100644 helm/interface/uriManager.ml delete mode 100644 helm/interface/uriManager.ml.implementazione_banale delete mode 100644 helm/interface/uriManager.ml.implementazione_doppia delete mode 100644 helm/interface/uriManager.ml.implementazione_semplice delete mode 100644 helm/interface/uriManager.mli delete mode 100755 helm/interface/uris_of_filenames.pl delete mode 100644 helm/interface/xml.ml delete mode 100644 helm/interface/xml.mli delete mode 100644 helm/interface/xsltProcessor.ml delete mode 100644 helm/mathql/grammar.txt delete mode 100644 helm/mathql/homepage/authors.html delete mode 100644 helm/mathql/homepage/documentation.html delete mode 100644 helm/mathql/homepage/features.html delete mode 100644 helm/mathql/homepage/implementation.html delete mode 100644 helm/mathql/homepage/index.html delete mode 100644 helm/mathql/homepage/links.html delete mode 100644 helm/mathql/homepage/whatsnew.html delete mode 100644 helm/mathql/query.xml delete mode 100644 helm/mathql/result.xml delete mode 100644 helm/mathql/xmathql.dtd delete mode 100644 helm/mathql/xmqlresult.dtd delete mode 100644 helm/mathql_db_map.txt delete mode 100644 helm/mathql_test/.cvsignore delete mode 100644 helm/mathql_test/.depend delete mode 100644 helm/mathql_test/Makefile delete mode 100644 helm/mathql_test/mQGTopLexer.mll delete mode 100644 helm/mathql_test/mQGTopParser.mly delete mode 100644 helm/mathql_test/mqgtop.ml delete mode 100644 helm/mathql_test/mqitop.ml delete mode 100644 helm/mathql_test/mqtop.ml delete mode 100644 helm/meta_style/.cvsignore delete mode 100644 helm/meta_style/Makefile delete mode 100644 helm/meta_style/algebra.xml delete mode 100644 helm/meta_style/arith.xml delete mode 100644 helm/meta_style/basic.xml delete mode 100644 helm/meta_style/meta_cic2mathml.xsl delete mode 100644 helm/meta_style/modeset.xsl delete mode 100644 helm/meta_style/operator.dtd delete mode 100644 helm/meta_style/positive.xsl delete mode 100644 helm/meta_style/reals.xml delete mode 100644 helm/meta_style/set.xml delete mode 100755 helm/meta_style/subst.pl delete mode 100644 helm/meta_style/xslt_index.txt delete mode 100644 helm/metadata/create/.cvsignore delete mode 100644 helm/metadata/create2/Makefile delete mode 100755 helm/metadata/create2/fix_rdf.pl delete mode 100755 helm/metadata/create2/invert.pl delete mode 100644 helm/metadata/create2/mk_forward/.cvsignore delete mode 100644 helm/metadata/create2/mk_forward/.depend delete mode 100644 helm/metadata/create2/mk_forward/Makefile delete mode 100644 helm/metadata/create2/mk_forward/mk_forward.ml delete mode 100755 helm/metadata/create2/mkindex.sh delete mode 100644 helm/metadata/create2/touch/.cvsignore delete mode 100644 helm/metadata/create2/touch/.depend delete mode 100644 helm/metadata/create2/touch/Makefile delete mode 100644 helm/metadata/create2/touch/touch.ml delete mode 100755 helm/metadata/create2/uris_of_filenames.pl delete mode 100644 helm/metadata/create4/METADATA/Makefile delete mode 100644 helm/metadata/create4/METADATA/meta_lex.l delete mode 100644 helm/metadata/create4/METADATA/sthandler.c delete mode 100644 helm/metadata/create4/METADATA/sthandler.h delete mode 100644 helm/metadata/create4/Makefile delete mode 100644 helm/metadata/create_V7_mowgli/.cvsignore delete mode 100644 helm/metadata/create_V7_mowgli/METADATA/.cvsignore delete mode 100644 helm/metadata/create_V7_mowgli/METADATA/Makefile delete mode 100644 helm/metadata/create_V7_mowgli/METADATA/README delete mode 100644 helm/metadata/create_V7_mowgli/METADATA/meta_lex.l delete mode 100644 helm/metadata/create_V7_mowgli/METADATA/meta_lex_ind.l delete mode 100644 helm/metadata/create_V7_mowgli/METADATA/sthandler.c delete mode 100644 helm/metadata/create_V7_mowgli/METADATA/sthandler.h delete mode 100644 helm/metadata/create_V7_mowgli/METADATA/sthandler_ind.c delete mode 100644 helm/metadata/create_V7_mowgli/METADATA/sthandler_ind.h delete mode 100644 helm/metadata/create_V7_mowgli/Makefile delete mode 100755 helm/metadata/create_V7_mowgli/fix_rdf.pl delete mode 100644 helm/metadata/create_V7_mowgli/forward_rel_or_sort_footer.txt delete mode 100644 helm/metadata/create_V7_mowgli/forward_rel_or_sort_header.txt delete mode 100755 helm/metadata/create_V7_mowgli/invert.pl delete mode 100755 helm/metadata/create_V7_mowgli/mkindex.sh delete mode 100644 helm/metadata/create_V7_mowgli/touch/.cvsignore delete mode 100644 helm/metadata/create_V7_mowgli/touch/.depend delete mode 100644 helm/metadata/create_V7_mowgli/touch/Makefile delete mode 100644 helm/metadata/create_V7_mowgli/touch/touch.ml delete mode 100755 helm/metadata/create_V7_mowgli/uris_of_filenames.pl delete mode 100644 helm/metadata/dc_mowgli/.cvsignore delete mode 100644 helm/metadata/dc_mowgli/Makefile delete mode 100644 helm/metadata/dc_mowgli/create_dc_indexes delete mode 100644 helm/metadata/dc_mowgli/create_dc_tables delete mode 100644 helm/metadata/dc_mowgli/drop_dc_tables delete mode 100755 helm/metadata/dc_mowgli/mkindex.sh delete mode 100755 helm/metadata/dc_mowgli/upload.pl delete mode 100755 helm/metadata/dc_mowgli/uris_of_filenames.pl delete mode 100644 helm/metadata/postgresql_V7_mowgli/.cvsignore delete mode 100644 helm/metadata/postgresql_V7_mowgli/Makefile delete mode 100644 helm/metadata/postgresql_V7_mowgli/README delete mode 100755 helm/metadata/postgresql_V7_mowgli/inserisci.pl delete mode 100755 helm/metadata/postgresql_V7_mowgli/inserisci_names.pl delete mode 100644 helm/metadata/postgresql_V7_mowgli/metadata_for_names/.cvsignore delete mode 100644 helm/metadata/postgresql_V7_mowgli/metadata_for_names/Makefile delete mode 100644 helm/metadata/postgresql_V7_mowgli/metainfo.xsl delete mode 100755 helm/metadata/postgresql_V7_mowgli/upload_rel.pl delete mode 100755 helm/metadata/postgresql_V7_mowgli/upload_sort.pl delete mode 100644 helm/minidom/.cvsignore delete mode 100644 helm/minidom/AUTHORS delete mode 100644 helm/minidom/COPYING delete mode 100644 helm/minidom/ChangeLog delete mode 100644 helm/minidom/HEADER delete mode 100644 helm/minidom/INSTALL delete mode 100644 helm/minidom/Makefile.am delete mode 100644 helm/minidom/NEWS delete mode 100644 helm/minidom/README delete mode 100644 helm/minidom/TODO delete mode 100644 helm/minidom/acconfig.h delete mode 100644 helm/minidom/config.guess delete mode 100644 helm/minidom/config.sub delete mode 100644 helm/minidom/configure.in delete mode 100644 helm/minidom/debian/README.helm delete mode 100644 helm/minidom/debian/autopippe.helm delete mode 100644 helm/minidom/debian/changelog delete mode 100644 helm/minidom/debian/control delete mode 100644 helm/minidom/debian/copyright delete mode 100755 helm/minidom/debian/debianize.helm delete mode 100644 helm/minidom/debian/docs delete mode 100644 helm/minidom/debian/garbage.helm delete mode 100644 helm/minidom/debian/libminidom-dev.files delete mode 100644 helm/minidom/debian/libminidom-dev.undocumented delete mode 100644 helm/minidom/debian/libminidom0.files delete mode 100644 helm/minidom/debian/libminidom0.postinst delete mode 100755 helm/minidom/debian/rules delete mode 100644 helm/minidom/minidom-config.in delete mode 100644 helm/minidom/minidom.c delete mode 100644 helm/minidom/minidom.h delete mode 100644 helm/minidom/minidom.spec.in delete mode 100644 helm/minidom/stamp-h.in delete mode 100644 helm/mowgli/home/htaccess delete mode 100644 helm/mowgli/home/html/.cvsignore delete mode 100644 helm/mowgli/home/html/Makefile delete mode 100644 helm/mowgli/home/html/deliverables/distribution/.cvsignore delete mode 100644 helm/mowgli/home/html/deliverables/information-dissemination-and-exploitation/.cvsignore delete mode 100644 helm/mowgli/home/html/deliverables/interfaces/.cvsignore delete mode 100644 helm/mowgli/home/html/deliverables/metadata/.cvsignore delete mode 100644 helm/mowgli/home/html/deliverables/project-management/.cvsignore delete mode 100644 helm/mowgli/home/html/deliverables/requirement-analysis/.cvsignore delete mode 100644 helm/mowgli/home/html/deliverables/testing-and-validation/.cvsignore delete mode 100644 helm/mowgli/home/html/deliverables/transformation/.cvsignore delete mode 100644 helm/mowgli/home/html/members/.cvsignore delete mode 100644 helm/mowgli/home/html/mowgli-events/.cvsignore delete mode 100644 helm/mowgli/home/html/people/aei/.cvsignore delete mode 100644 helm/mowgli/home/html/people/bologna/.cvsignore delete mode 100644 helm/mowgli/home/html/people/dfki/.cvsignore delete mode 100644 helm/mowgli/home/html/people/inria/.cvsignore delete mode 100644 helm/mowgli/home/html/people/nijmegen/.cvsignore delete mode 100644 helm/mowgli/home/html/people/trusted-logic/.cvsignore delete mode 100644 helm/mowgli/home/html/proposal/.cvsignore delete mode 100644 helm/mowgli/home/html/publications/.cvsignore delete mode 100644 helm/mowgli/home/html/publications/mowgli/.cvsignore delete mode 100644 helm/mowgli/home/html/publications/others/.cvsignore delete mode 100644 helm/mowgli/home/html/sites/.cvsignore delete mode 100644 helm/mowgli/home/html/slides/.cvsignore delete mode 100644 helm/mowgli/home/html/software/.cvsignore delete mode 100644 helm/mowgli/home/html/work-packages/.cvsignore delete mode 100644 helm/mowgli/home/images/NextArrow.gif delete mode 100644 helm/mowgli/home/images/PreviousArrow.gif delete mode 100644 helm/mowgli/home/images/arch.png delete mode 100644 helm/mowgli/home/images/gantt_new.png delete mode 100644 helm/mowgli/home/images/istbutton.gif delete mode 100644 helm/mowgli/home/images/istbutton_small.gif delete mode 100644 helm/mowgli/home/images/istdrop.gif delete mode 100644 helm/mowgli/home/images/logo.png delete mode 100644 helm/mowgli/home/images/mowgli_combo.gif delete mode 100644 helm/mowgli/home/images/mowgli_combo.png delete mode 100644 helm/mowgli/home/images/mowgli_parquet.png delete mode 100644 helm/mowgli/home/images/mowgli_parquet_light.png delete mode 100644 helm/mowgli/home/images/pert_new.png delete mode 100644 helm/mowgli/home/misc/contract/MOWGLIfinal-for-ceto.zip delete mode 100644 helm/mowgli/home/misc/contract/RTD-annex2-rtd-final.pdf delete mode 100644 helm/mowgli/home/misc/contract/RTD-annex3-ist-fet.pdf delete mode 100644 helm/mowgli/home/misc/contract/RTD-audit-cert-annex4.pdf delete mode 100644 helm/mowgli/home/misc/contract/mowgli-an1-final.pdf delete mode 100644 helm/mowgli/home/misc/contract/mowgli-ctr-final.pdf delete mode 100644 helm/mowgli/home/misc/kick-off/AIP_Intro.ppt delete mode 100644 helm/mowgli/home/misc/kick-off/KM2002GO.ps delete mode 100644 helm/mowgli/home/misc/kick-off/KM2002GO_mathweb.ps delete mode 100644 helm/mowgli/home/misc/kick-off/MoWGLI-LogiCal.ps delete mode 100644 helm/mowgli/home/misc/kick-off/lemme2.ppt delete mode 100644 helm/mowgli/home/misc/proposal/MOWGLI.xls delete mode 100644 helm/mowgli/home/misc/proposal/mowgli.pdf delete mode 100644 helm/mowgli/home/misc/proposal/mowgli.ps delete mode 100644 helm/mowgli/home/misc/proposal/proposal.tgz delete mode 100644 helm/mowgli/home/style/mowgli.css delete mode 100644 helm/mowgli/home/templates/index.html delete mode 100644 helm/mowgli/home/templates/ml-help-example.txt delete mode 100644 helm/mowgli/home/xml/Makefile delete mode 100644 helm/mowgli/home/xml/consortium.xml delete mode 100644 helm/mowgli/home/xml/deliverables/deliverable.dtd delete mode 100644 helm/mowgli/home/xml/deliverables/distribution/d5a.xml delete mode 100644 helm/mowgli/home/xml/deliverables/distribution/d5b.xml delete mode 100644 helm/mowgli/home/xml/deliverables/information-dissemination-and-exploitation/d7a.xml delete mode 100644 helm/mowgli/home/xml/deliverables/information-dissemination-and-exploitation/d7b.xml delete mode 100644 helm/mowgli/home/xml/deliverables/interfaces/d4a.xml delete mode 100644 helm/mowgli/home/xml/deliverables/interfaces/d4b.xml delete mode 100644 helm/mowgli/home/xml/deliverables/interfaces/d4c.xml delete mode 100644 helm/mowgli/home/xml/deliverables/interfaces/d4d.xml delete mode 100644 helm/mowgli/home/xml/deliverables/interfaces/d4e.xml delete mode 100644 helm/mowgli/home/xml/deliverables/metadata/d3a.xml delete mode 100644 helm/mowgli/home/xml/deliverables/metadata/d3b.xml delete mode 100644 helm/mowgli/home/xml/deliverables/project-management/d0a.xml delete mode 100644 helm/mowgli/home/xml/deliverables/project-management/d0b.xml delete mode 100644 helm/mowgli/home/xml/deliverables/project-management/d0c.xml delete mode 100644 helm/mowgli/home/xml/deliverables/project-management/d0d.xml delete mode 100644 helm/mowgli/home/xml/deliverables/requirement-analysis/d1a.xml delete mode 100644 helm/mowgli/home/xml/deliverables/requirement-analysis/d1b.xml delete mode 100644 helm/mowgli/home/xml/deliverables/requirement-analysis/d1c.xml delete mode 100644 helm/mowgli/home/xml/deliverables/testing-and-validation/d6a.xml delete mode 100644 helm/mowgli/home/xml/deliverables/testing-and-validation/d6b.xml delete mode 100644 helm/mowgli/home/xml/deliverables/testing-and-validation/d6c.xml delete mode 100644 helm/mowgli/home/xml/deliverables/testing-and-validation/d6d.xml delete mode 100644 helm/mowgli/home/xml/deliverables/transformation/d2a.xml delete mode 100644 helm/mowgli/home/xml/deliverables/transformation/d2b.xml delete mode 100644 helm/mowgli/home/xml/deliverables/transformation/d2c.xml delete mode 100644 helm/mowgli/home/xml/deliverables/transformation/d2d.xml delete mode 100644 helm/mowgli/home/xml/deliverables/transformation/d2e.xml delete mode 100644 helm/mowgli/home/xml/deliverables/transformation/d2f.xml delete mode 100644 helm/mowgli/home/xml/deliverables/transformation/d2g.xml delete mode 100644 helm/mowgli/home/xml/home.xml delete mode 100644 helm/mowgli/home/xml/members-index.xml delete mode 100644 helm/mowgli/home/xml/members/kick-off.xml delete mode 100644 helm/mowgli/home/xml/menu.xml delete mode 100644 helm/mowgli/home/xml/mowgli-events.xml delete mode 100644 helm/mowgli/home/xml/mowgli-events/kick-off.xml delete mode 100644 helm/mowgli/home/xml/mowgli-xhtml1-transitional.dtd delete mode 100644 helm/mowgli/home/xml/news.xml delete mode 100644 helm/mowgli/home/xml/other-events.xml delete mode 100644 helm/mowgli/home/xml/people/aei/kelley.xml delete mode 100644 helm/mowgli/home/xml/people/aei/pollney.xml delete mode 100644 helm/mowgli/home/xml/people/aei/schutz.xml delete mode 100644 helm/mowgli/home/xml/people/aei/velden.xml delete mode 100644 helm/mowgli/home/xml/people/aei/wegner.xml delete mode 100644 helm/mowgli/home/xml/people/aei/weyher.xml delete mode 100644 helm/mowgli/home/xml/people/bologna/asperti.xml delete mode 100644 helm/mowgli/home/xml/people/bologna/guidi.xml delete mode 100644 helm/mowgli/home/xml/people/bologna/padovani.xml delete mode 100644 helm/mowgli/home/xml/people/bologna/sacerdoti.xml delete mode 100644 helm/mowgli/home/xml/people/bologna/schena.xml delete mode 100644 helm/mowgli/home/xml/people/dfki/goguadze.xml delete mode 100644 helm/mowgli/home/xml/people/dfki/kohlhase.xml delete mode 100644 helm/mowgli/home/xml/people/dfki/libbrecht.xml delete mode 100644 helm/mowgli/home/xml/people/dfki/melis.xml delete mode 100644 helm/mowgli/home/xml/people/dfki/moschner.xml delete mode 100644 helm/mowgli/home/xml/people/dfki/siekmann.xml delete mode 100644 helm/mowgli/home/xml/people/index.xml delete mode 100644 helm/mowgli/home/xml/people/inria/amerkad.xml delete mode 100644 helm/mowgli/home/xml/people/inria/bertot.xml delete mode 100644 helm/mowgli/home/xml/people/inria/chicli.xml delete mode 100644 helm/mowgli/home/xml/people/inria/delahaye.xml delete mode 100644 helm/mowgli/home/xml/people/inria/herbelin.xml delete mode 100644 helm/mowgli/home/xml/people/inria/naciri.xml delete mode 100644 helm/mowgli/home/xml/people/inria/pottier.xml delete mode 100644 helm/mowgli/home/xml/people/inria/rideau.xml delete mode 100644 helm/mowgli/home/xml/people/inria/thery.xml delete mode 100644 helm/mowgli/home/xml/people/inria/werner.xml delete mode 100644 helm/mowgli/home/xml/people/nijmegen/barendregt.xml delete mode 100644 helm/mowgli/home/xml/people/nijmegen/barreiro.xml delete mode 100644 helm/mowgli/home/xml/people/nijmegen/cohen.xml delete mode 100644 helm/mowgli/home/xml/people/nijmegen/cruz-filipe.xml delete mode 100644 helm/mowgli/home/xml/people/nijmegen/geuvers.xml delete mode 100644 helm/mowgli/home/xml/people/nijmegen/niqui.xml delete mode 100644 helm/mowgli/home/xml/people/nijmegen/stein.xml delete mode 100644 helm/mowgli/home/xml/people/nijmegen/synek.xml delete mode 100644 helm/mowgli/home/xml/people/nijmegen/wiedijk.xml delete mode 100644 helm/mowgli/home/xml/people/person.dtd delete mode 100644 helm/mowgli/home/xml/people/trusted-logic/bolignano.xml delete mode 100644 helm/mowgli/home/xml/people/trusted-logic/gimenez.xml delete mode 100644 helm/mowgli/home/xml/people/trusted-logic/loiseaux.xml delete mode 100644 helm/mowgli/home/xml/project.xml delete mode 100644 helm/mowgli/home/xml/proposal/EC-contribution.xml delete mode 100644 helm/mowgli/home/xml/proposal/contribution.xml delete mode 100644 helm/mowgli/home/xml/proposal/econ-scient-tech-prospects.xml delete mode 100644 helm/mowgli/home/xml/proposal/innovation.xml delete mode 100644 helm/mowgli/home/xml/proposal/project-components.xml delete mode 100644 helm/mowgli/home/xml/proposal/project-management.xml delete mode 100644 helm/mowgli/home/xml/proposal/project-objectives.xml delete mode 100644 helm/mowgli/home/xml/proposal/project-planning.xml delete mode 100644 helm/mowgli/home/xml/proposal/project-summary.xml delete mode 100644 helm/mowgli/home/xml/publications/index.xml delete mode 100644 helm/mowgli/home/xml/publications/mowgli/crimea2002_aw.xml delete mode 100644 helm/mowgli/home/xml/publications/mowgli/crimea2002_aw_on_line.xml delete mode 100644 helm/mowgli/home/xml/publications/others/category_al.xml delete mode 100644 helm/mowgli/home/xml/publications/others/cc.xml delete mode 100644 helm/mowgli/home/xml/publications/others/crimea2001_apss.xml delete mode 100644 helm/mowgli/home/xml/publications/others/cup_hp91.xml delete mode 100644 helm/mowgli/home/xml/publications/others/cup_hp93.xml delete mode 100644 helm/mowgli/home/xml/publications/others/cup_s.xml delete mode 100644 helm/mowgli/home/xml/publications/others/cup_s2.xml delete mode 100644 helm/mowgli/home/xml/publications/others/extreme2001_apss.xml delete mode 100644 helm/mowgli/home/xml/publications/others/har_bg.xml delete mode 100644 helm/mowgli/home/xml/publications/others/jep_ws.xml delete mode 100644 helm/mowgli/home/xml/publications/others/jep_wwsw.xml delete mode 100644 helm/mowgli/home/xml/publications/others/jlp2001_scg.xml delete mode 100644 helm/mowgli/home/xml/publications/others/mathml2000_apss.xml delete mode 100644 helm/mowgli/home/xml/publications/others/mscs_gb.xml delete mode 100644 helm/mowgli/home/xml/publications/others/publication.dtd delete mode 100644 helm/mowgli/home/xml/publications/others/tcs2001_og.xml delete mode 100644 helm/mowgli/home/xml/publications/others/tphols2000_gwz.xml delete mode 100644 helm/mowgli/home/xml/publications/others/tphols2001_apss.xml delete mode 100644 helm/mowgli/home/xml/publications/others/w3c_bl98.xml delete mode 100644 helm/mowgli/home/xml/sites/aei.xml delete mode 100644 helm/mowgli/home/xml/sites/bologna.xml delete mode 100644 helm/mowgli/home/xml/sites/dfki.xml delete mode 100644 helm/mowgli/home/xml/sites/inria.xml delete mode 100644 helm/mowgli/home/xml/sites/nijmegen.xml delete mode 100644 helm/mowgli/home/xml/sites/site.dtd delete mode 100644 helm/mowgli/home/xml/sites/trusted-logic.xml delete mode 100644 helm/mowgli/home/xml/slides/mowgligroup.xml delete mode 100644 helm/mowgli/home/xml/software/index.xml delete mode 100644 helm/mowgli/home/xml/work-packages/distribution.xml delete mode 100644 helm/mowgli/home/xml/work-packages/index.xml delete mode 100644 helm/mowgli/home/xml/work-packages/information-dissemination-and-exploitation.xml delete mode 100644 helm/mowgli/home/xml/work-packages/interfaces.xml delete mode 100644 helm/mowgli/home/xml/work-packages/metadata.xml delete mode 100644 helm/mowgli/home/xml/work-packages/project-management.xml delete mode 100644 helm/mowgli/home/xml/work-packages/requirement-analysis.xml delete mode 100644 helm/mowgli/home/xml/work-packages/testing-and-validation.xml delete mode 100644 helm/mowgli/home/xml/work-packages/transformation.xml delete mode 100644 helm/mowgli/home/xml/work-packages/work-package.dtd delete mode 100644 helm/mowgli/home/xsl/approaching-deadlines.xsl delete mode 100644 helm/mowgli/home/xsl/common.xsl delete mode 100644 helm/mowgli/home/xsl/consortium.xsl delete mode 100644 helm/mowgli/home/xsl/deadlines.xsl delete mode 100644 helm/mowgli/home/xsl/deliverable.xsl delete mode 100644 helm/mowgli/home/xsl/events.xsl delete mode 100644 helm/mowgli/home/xsl/latest-news.xsl delete mode 100644 helm/mowgli/home/xsl/management.xsl delete mode 100644 helm/mowgli/home/xsl/minutes.xsl delete mode 100644 helm/mowgli/home/xsl/news.xsl delete mode 100644 helm/mowgli/home/xsl/people-list.xsl delete mode 100644 helm/mowgli/home/xsl/person.xsl delete mode 100644 helm/mowgli/home/xsl/project.xsl delete mode 100644 helm/mowgli/home/xsl/publication.xsl delete mode 100644 helm/mowgli/home/xsl/publications-index.xsl delete mode 100644 helm/mowgli/home/xsl/site.xsl delete mode 100644 helm/mowgli/home/xsl/work-package.xsl delete mode 100644 helm/mowgli/home/xsl/work-packages_index.xsl delete mode 100644 helm/mowgli/home/xsl/xhtml-content.xsl delete mode 100644 helm/nuprl_stylesheets/nuprl_abstract.xsl delete mode 100644 helm/nuprl_stylesheets/nuprl_annotatedpres.xsl delete mode 100644 helm/nuprl_stylesheets/nuprl_content_to_html2.xsl delete mode 100644 helm/nuprl_stylesheets/nuprl_expand.xsl delete mode 100644 helm/nuprl_stylesheets/nuprl_html_arith.xsl delete mode 100644 helm/nuprl_stylesheets/nuprl_html_basic.xsl delete mode 100644 helm/nuprl_stylesheets/nuprl_link.xsl delete mode 100644 helm/nuprl_stylesheets/nuprl_links_library.xsl delete mode 100644 helm/nuprl_stylesheets/nuprl_mmlextension.xsl delete mode 100644 helm/nuprl_stylesheets/nuprl_proof.xsl delete mode 100644 helm/nuprl_stylesheets/nuprl_rules.xsl delete mode 100644 helm/nuprl_stylesheets/nuprl_term.xsl delete mode 100644 helm/nuprl_stylesheets/nuprl_tree.xsl delete mode 100644 helm/nuprl_stylesheets/xslt_index.txt delete mode 100644 helm/ocaml/.cvsignore delete mode 100644 helm/ocaml/META.helm-cic.src delete mode 100644 helm/ocaml/META.helm-cic_annotations.src delete mode 100644 helm/ocaml/META.helm-cic_annotations_cache.src delete mode 100644 helm/ocaml/META.helm-cic_cache.src delete mode 100644 helm/ocaml/META.helm-cic_omdoc.src delete mode 100644 helm/ocaml/META.helm-cic_proof_checking.src delete mode 100644 helm/ocaml/META.helm-cic_textual_parser.src delete mode 100644 helm/ocaml/META.helm-cic_transformations.src delete mode 100644 helm/ocaml/META.helm-cic_unification.src delete mode 100644 helm/ocaml/META.helm-getter.src delete mode 100644 helm/ocaml/META.helm-mathql.src delete mode 100644 helm/ocaml/META.helm-mathql_generator.src delete mode 100644 helm/ocaml/META.helm-mathql_interpreter.src delete mode 100644 helm/ocaml/META.helm-pxp.src delete mode 100644 helm/ocaml/META.helm-tactics.src delete mode 100644 helm/ocaml/META.helm-tex_cic_textual_parser.src delete mode 100644 helm/ocaml/META.helm-urimanager.src delete mode 100644 helm/ocaml/META.helm-xml.src delete mode 100644 helm/ocaml/Makefile.common.in delete mode 100644 helm/ocaml/Makefile.in delete mode 100644 helm/ocaml/cic/.cvsignore delete mode 100644 helm/ocaml/cic/.depend delete mode 100644 helm/ocaml/cic/Makefile delete mode 100644 helm/ocaml/cic/cic.ml delete mode 100644 helm/ocaml/cic/cicParser.ml delete mode 100644 helm/ocaml/cic/cicParser.mli delete mode 100644 helm/ocaml/cic/cicParser2.ml delete mode 100644 helm/ocaml/cic/cicParser2.mli delete mode 100644 helm/ocaml/cic/cicParser3.ml delete mode 100644 helm/ocaml/cic/cicParser3.mli delete mode 100644 helm/ocaml/cic/deannotate.ml delete mode 100644 helm/ocaml/cic/deannotate.mli delete mode 100644 helm/ocaml/cic_annotations/.cvsignore delete mode 100644 helm/ocaml/cic_annotations/.depend delete mode 100644 helm/ocaml/cic_annotations/Makefile delete mode 100644 helm/ocaml/cic_annotations/cicAnnotation2Xml.ml delete mode 100644 helm/ocaml/cic_annotations/cicAnnotation2Xml.mli delete mode 100644 helm/ocaml/cic_annotations/cicAnnotationParser.ml delete mode 100644 helm/ocaml/cic_annotations/cicAnnotationParser.mli delete mode 100644 helm/ocaml/cic_annotations/cicAnnotationParser2.ml delete mode 100644 helm/ocaml/cic_annotations/cicAnnotationParser2.mli delete mode 100644 helm/ocaml/cic_annotations/cicXPath.ml delete mode 100644 helm/ocaml/cic_annotations/cicXPath.mli delete mode 100644 helm/ocaml/cic_annotations_cache/.cvsignore delete mode 100644 helm/ocaml/cic_annotations_cache/.depend delete mode 100644 helm/ocaml/cic_annotations_cache/Makefile delete mode 100644 helm/ocaml/cic_annotations_cache/cicCache.ml delete mode 100644 helm/ocaml/cic_annotations_cache/cicCache.mli delete mode 100644 helm/ocaml/cic_cache/.cvsignore delete mode 100644 helm/ocaml/cic_cache/.depend delete mode 100644 helm/ocaml/cic_cache/Makefile delete mode 100644 helm/ocaml/cic_cache/cicCache.ml delete mode 100644 helm/ocaml/cic_cache/cicCache.mli delete mode 100644 helm/ocaml/cic_omdoc/.cvsignore delete mode 100644 helm/ocaml/cic_omdoc/.depend delete mode 100644 helm/ocaml/cic_omdoc/Makefile delete mode 100644 helm/ocaml/cic_omdoc/cic2acic.ml delete mode 100644 helm/ocaml/cic_omdoc/cic2acic.mli delete mode 100644 helm/ocaml/cic_omdoc/cic2content.ml delete mode 100644 helm/ocaml/cic_omdoc/cic2content.mli delete mode 100644 helm/ocaml/cic_omdoc/content.ml delete mode 100644 helm/ocaml/cic_omdoc/content.mli delete mode 100644 helm/ocaml/cic_omdoc/content2cic.ml delete mode 100644 helm/ocaml/cic_omdoc/content2cic.mli delete mode 100644 helm/ocaml/cic_omdoc/contentPp.ml delete mode 100644 helm/ocaml/cic_omdoc/contentPp.mli delete mode 100644 helm/ocaml/cic_omdoc/doubleTypeInference.ml delete mode 100644 helm/ocaml/cic_omdoc/doubleTypeInference.mli delete mode 100644 helm/ocaml/cic_omdoc/eta_fixing.ml delete mode 100644 helm/ocaml/cic_omdoc/eta_fixing.mli delete mode 100644 helm/ocaml/cic_proof_checking/.cvsignore delete mode 100644 helm/ocaml/cic_proof_checking/.depend delete mode 100644 helm/ocaml/cic_proof_checking/Makefile delete mode 100644 helm/ocaml/cic_proof_checking/cicEnvironment.ml delete mode 100644 helm/ocaml/cic_proof_checking/cicEnvironment.mli delete mode 100644 helm/ocaml/cic_proof_checking/cicMiniReduction.ml delete mode 100644 helm/ocaml/cic_proof_checking/cicMiniReduction.mli delete mode 100644 helm/ocaml/cic_proof_checking/cicPp.ml delete mode 100644 helm/ocaml/cic_proof_checking/cicPp.mli delete mode 100644 helm/ocaml/cic_proof_checking/cicReduction.mli delete mode 100644 helm/ocaml/cic_proof_checking/cicReductionMachine.ml delete mode 100644 helm/ocaml/cic_proof_checking/cicReductionMachine.mli delete mode 100644 helm/ocaml/cic_proof_checking/cicReductionNaif.ml delete mode 100644 helm/ocaml/cic_proof_checking/cicReductionNaif.mli delete mode 100644 helm/ocaml/cic_proof_checking/cicSubstitution.ml delete mode 100644 helm/ocaml/cic_proof_checking/cicSubstitution.mli delete mode 100644 helm/ocaml/cic_proof_checking/cicTypeChecker.ml delete mode 100644 helm/ocaml/cic_proof_checking/cicTypeChecker.mli delete mode 100644 helm/ocaml/cic_proof_checking/logger.ml delete mode 100644 helm/ocaml/cic_proof_checking/logger.mli delete mode 100644 helm/ocaml/cic_textual_parser/.cvsignore delete mode 100644 helm/ocaml/cic_textual_parser/.depend delete mode 100644 helm/ocaml/cic_textual_parser/Makefile delete mode 100644 helm/ocaml/cic_textual_parser/cicTextualLexer.mll delete mode 100644 helm/ocaml/cic_textual_parser/cicTextualParser.mly delete mode 100644 helm/ocaml/cic_textual_parser/cicTextualParser0.ml delete mode 100644 helm/ocaml/cic_textual_parser/cicTextualParserContext.ml delete mode 100644 helm/ocaml/cic_textual_parser/cicTextualParserContext.mli delete mode 100644 helm/ocaml/cic_transformations/.cvsignore delete mode 100644 helm/ocaml/cic_transformations/.depend delete mode 100644 helm/ocaml/cic_transformations/Makefile delete mode 100644 helm/ocaml/cic_transformations/applyStylesheets.ml delete mode 100644 helm/ocaml/cic_transformations/applyStylesheets.mli delete mode 100644 helm/ocaml/cic_transformations/cexpr2pres.ml delete mode 100644 helm/ocaml/cic_transformations/cexpr2pres.mli delete mode 100644 helm/ocaml/cic_transformations/cexpr2pres_hashtbl.ml delete mode 100644 helm/ocaml/cic_transformations/cexpr2pres_hashtbl.mli delete mode 100644 helm/ocaml/cic_transformations/cic2Xml.ml delete mode 100644 helm/ocaml/cic_transformations/cic2Xml.mli delete mode 100644 helm/ocaml/cic_transformations/content2pres.ml delete mode 100644 helm/ocaml/cic_transformations/content2pres.mli delete mode 100644 helm/ocaml/cic_transformations/content_expressions.ml delete mode 100644 helm/ocaml/cic_transformations/content_expressions.mli delete mode 100644 helm/ocaml/cic_transformations/misc.ml delete mode 100644 helm/ocaml/cic_transformations/misc.mli delete mode 100644 helm/ocaml/cic_transformations/mpresentation.ml delete mode 100644 helm/ocaml/cic_transformations/mpresentation.mli delete mode 100644 helm/ocaml/cic_transformations/sequentPp.ml delete mode 100644 helm/ocaml/cic_transformations/sequentPp.mli delete mode 100644 helm/ocaml/cic_transformations/xml2Gdome.ml delete mode 100644 helm/ocaml/cic_transformations/xml2Gdome.mli delete mode 100644 helm/ocaml/cic_unification/.cvsignore delete mode 100644 helm/ocaml/cic_unification/.depend delete mode 100644 helm/ocaml/cic_unification/Makefile delete mode 100644 helm/ocaml/cic_unification/cicRefine.ml delete mode 100644 helm/ocaml/cic_unification/cicRefine.mli delete mode 100644 helm/ocaml/cic_unification/cicUnification.ml delete mode 100644 helm/ocaml/cic_unification/cicUnification.mli delete mode 100644 helm/ocaml/configure.in delete mode 100644 helm/ocaml/getter/.cvsignore delete mode 100644 helm/ocaml/getter/.depend delete mode 100644 helm/ocaml/getter/Makefile delete mode 100644 helm/ocaml/getter/clientHTTP.ml delete mode 100644 helm/ocaml/getter/clientHTTP.mli delete mode 100644 helm/ocaml/getter/configuration.ml delete mode 100644 helm/ocaml/getter/configuration.mli delete mode 100644 helm/ocaml/getter/getter.ml delete mode 100644 helm/ocaml/getter/getter.mli delete mode 100644 helm/ocaml/mathql/.cvsignore delete mode 100644 helm/ocaml/mathql/.depend delete mode 100644 helm/ocaml/mathql/Makefile delete mode 100644 helm/ocaml/mathql/mQueryTLexer.mll delete mode 100644 helm/ocaml/mathql/mQueryTParser.mly delete mode 100644 helm/ocaml/mathql/mQueryUtil.ml delete mode 100644 helm/ocaml/mathql/mQueryUtil.mli delete mode 100644 helm/ocaml/mathql/mathQL.ml delete mode 100644 helm/ocaml/mathql_generator/.cvsignore delete mode 100644 helm/ocaml/mathql_generator/.depend delete mode 100644 helm/ocaml/mathql_generator/Makefile delete mode 100644 helm/ocaml/mathql_generator/cGMatchConclusion.ml delete mode 100644 helm/ocaml/mathql_generator/cGMatchConclusion.mli delete mode 100644 helm/ocaml/mathql_generator/cGSearchPattern.ml delete mode 100644 helm/ocaml/mathql_generator/cGSearchPattern.mli delete mode 100644 helm/ocaml/mathql_generator/mQGTypes.ml delete mode 100644 helm/ocaml/mathql_generator/mQGUtil.ml delete mode 100644 helm/ocaml/mathql_generator/mQGUtil.mli delete mode 100644 helm/ocaml/mathql_generator/mQueryGenerator.ml delete mode 100644 helm/ocaml/mathql_generator/mQueryGenerator.mli delete mode 100644 helm/ocaml/mathql_interpreter/.cvsignore delete mode 100644 helm/ocaml/mathql_interpreter/.depend delete mode 100644 helm/ocaml/mathql_interpreter/Makefile delete mode 100644 helm/ocaml/mathql_interpreter/mQIConn.ml delete mode 100644 helm/ocaml/mathql_interpreter/mQIConn.mli delete mode 100644 helm/ocaml/mathql_interpreter/mQIMap.ml delete mode 100644 helm/ocaml/mathql_interpreter/mQIMap.mli delete mode 100644 helm/ocaml/mathql_interpreter/mQIPostgres.ml delete mode 100644 helm/ocaml/mathql_interpreter/mQIPostgres.mli delete mode 100644 helm/ocaml/mathql_interpreter/mQIProperty.ml delete mode 100644 helm/ocaml/mathql_interpreter/mQIProperty.mli delete mode 100644 helm/ocaml/mathql_interpreter/mQIUtil.ml delete mode 100644 helm/ocaml/mathql_interpreter/mQIUtil.mli delete mode 100644 helm/ocaml/mathql_interpreter/mQueryInterpreter.ml delete mode 100644 helm/ocaml/mathql_interpreter/mQueryInterpreter.mli delete mode 100644 helm/ocaml/mathql_interpreter/mQueryMisc.ml delete mode 100644 helm/ocaml/mathql_interpreter/mQueryMisc.mli delete mode 100644 helm/ocaml/pxp/.cvsignore delete mode 100644 helm/ocaml/pxp/.depend delete mode 100644 helm/ocaml/pxp/Makefile delete mode 100644 helm/ocaml/pxp/pxpUrlResolver.ml delete mode 100644 helm/ocaml/pxp/pxpUrlResolver.mli delete mode 100644 helm/ocaml/tactics/.cvsignore delete mode 100644 helm/ocaml/tactics/.depend delete mode 100644 helm/ocaml/tactics/Makefile delete mode 100644 helm/ocaml/tactics/discriminationTactics.ml delete mode 100644 helm/ocaml/tactics/discriminationTactics.mli delete mode 100644 helm/ocaml/tactics/eliminationTactics.ml delete mode 100644 helm/ocaml/tactics/eliminationTactics.mli delete mode 100644 helm/ocaml/tactics/equalityTactics.ml delete mode 100644 helm/ocaml/tactics/equalityTactics.mli delete mode 100644 helm/ocaml/tactics/fourier.ml delete mode 100644 helm/ocaml/tactics/fourier.mli delete mode 100644 helm/ocaml/tactics/fourierR.ml delete mode 100644 helm/ocaml/tactics/fourierR.mli delete mode 100644 helm/ocaml/tactics/introductionTactics.ml delete mode 100644 helm/ocaml/tactics/introductionTactics.mli delete mode 100644 helm/ocaml/tactics/negationTactics.ml delete mode 100644 helm/ocaml/tactics/negationTactics.mli delete mode 100644 helm/ocaml/tactics/primitiveTactics.ml delete mode 100644 helm/ocaml/tactics/primitiveTactics.mli delete mode 100644 helm/ocaml/tactics/proofEngineHelpers.ml delete mode 100644 helm/ocaml/tactics/proofEngineHelpers.mli delete mode 100644 helm/ocaml/tactics/proofEngineReduction.ml delete mode 100644 helm/ocaml/tactics/proofEngineReduction.mli delete mode 100644 helm/ocaml/tactics/proofEngineStructuralRules.ml delete mode 100644 helm/ocaml/tactics/proofEngineStructuralRules.mli delete mode 100644 helm/ocaml/tactics/proofEngineTypes.ml delete mode 100644 helm/ocaml/tactics/reductionTactics.ml delete mode 100644 helm/ocaml/tactics/reductionTactics.mli delete mode 100644 helm/ocaml/tactics/ring.ml delete mode 100644 helm/ocaml/tactics/ring.mli delete mode 100644 helm/ocaml/tactics/tacticChaser.ml delete mode 100644 helm/ocaml/tactics/tacticChaser.mli delete mode 100644 helm/ocaml/tactics/tacticals.ml delete mode 100644 helm/ocaml/tactics/tacticals.mli delete mode 100644 helm/ocaml/tactics/variousTactics.ml delete mode 100644 helm/ocaml/tactics/variousTactics.mli delete mode 100644 helm/ocaml/tex_cic_textual_parser/.cvsignore delete mode 100644 helm/ocaml/tex_cic_textual_parser/.depend delete mode 100644 helm/ocaml/tex_cic_textual_parser/Makefile delete mode 100644 helm/ocaml/tex_cic_textual_parser/texCicTextualLexer.mll delete mode 100644 helm/ocaml/tex_cic_textual_parser/texCicTextualParser.mly delete mode 100644 helm/ocaml/tex_cic_textual_parser/texCicTextualParser0.ml delete mode 100644 helm/ocaml/tex_cic_textual_parser/texCicTextualParserContext.ml delete mode 100644 helm/ocaml/tex_cic_textual_parser/texCicTextualParserContext.mli delete mode 100644 helm/ocaml/urimanager/.cvsignore delete mode 100644 helm/ocaml/urimanager/.depend delete mode 100644 helm/ocaml/urimanager/Makefile delete mode 100644 helm/ocaml/urimanager/uriManager.ml delete mode 100644 helm/ocaml/urimanager/uriManager.mli delete mode 100644 helm/ocaml/xml/.cvsignore delete mode 100644 helm/ocaml/xml/.depend delete mode 100644 helm/ocaml/xml/Makefile delete mode 100644 helm/ocaml/xml/xml.ml delete mode 100644 helm/ocaml/xml/xml.mli delete mode 100644 helm/on-line/html/cic/control.html delete mode 100644 helm/on-line/html/cic/index.html delete mode 100644 helm/on-line/html/control.html delete mode 100644 helm/on-line/html/index.html delete mode 100644 helm/on-line/html/library/control.html delete mode 100644 helm/on-line/html/library/header.html delete mode 100644 helm/on-line/html/library/index.html delete mode 100644 helm/on-line/html/theory/control.html delete mode 100644 helm/on-line/html/theory/index.html delete mode 100644 helm/on-line/html/welcome.html delete mode 100644 helm/on-line/icons/back.gif delete mode 100644 helm/on-line/icons/folder.gif delete mode 100644 helm/on-line/icons/generic.red.gif delete mode 100644 helm/on-line/icons/text.gif delete mode 100644 helm/on-line/javascript/.cvsignore delete mode 100644 helm/on-line/javascript/Makefile delete mode 100644 helm/on-line/javascript/control.js delete mode 100644 helm/on-line/javascript/defaults.js delete mode 100644 helm/on-line/javascript/graphLinks.js delete mode 100644 helm/on-line/javascript/helmjsmenu.js delete mode 100644 helm/on-line/javascript/prelude.js delete mode 100644 helm/on-line/javascript/utils.js delete mode 100644 helm/on-line/xslt/getParam.xsl delete mode 100644 helm/on-line/xslt/ls2html.xsl delete mode 100644 helm/on-line/xslt/makeGraphLinks.xsl delete mode 100644 helm/on-line/xslt/metadataControl.xsl delete mode 100644 helm/on-line/xslt/metadataLib.xsl delete mode 100644 helm/on-line/xslt/resolve_topurl.xsl delete mode 100644 helm/on-line/xslt/utils.xsl delete mode 100644 helm/on-line/xslt/xslt_index.txt delete mode 100644 helm/pacchetti/Makefile delete mode 100644 helm/papers/calculemus-2003/.cvsignore delete mode 100644 helm/papers/calculemus-2003/Makefile delete mode 100644 helm/papers/calculemus-2003/draftstamp.sty delete mode 100644 helm/papers/calculemus-2003/ed.sty delete mode 100644 helm/papers/calculemus-2003/eps/arch.dia delete mode 100644 helm/papers/calculemus-2003/eps/arch.eps delete mode 100644 helm/papers/calculemus-2003/eps/interfaces.dia delete mode 100644 helm/papers/calculemus-2003/eps/interfaces.eps delete mode 100644 helm/papers/calculemus-2003/eps/status.eps delete mode 100644 helm/papers/calculemus-2003/eps/step1.eps delete mode 100644 helm/papers/calculemus-2003/eps/step2.eps delete mode 100644 helm/papers/calculemus-2003/hbugs-calculemus-2003.tex delete mode 100644 helm/papers/calculemus-2003/llncs.cls delete mode 100644 helm/papers/calculemus-2003/outline.txt delete mode 100644 helm/papers/calculemus-2003/referaggio_hbugs.txt delete mode 100644 helm/papers/calculemus-2003/referaggio_hbugs_short.txt delete mode 100644 helm/papers/calculemus-2003/stamp.pro delete mode 100644 helm/proofChecker/.cvsignore delete mode 100644 helm/proofChecker/.depend delete mode 100644 helm/proofChecker/Makefile delete mode 100644 helm/proofChecker/proofChecker.ml delete mode 100644 helm/schemas/13-dcagent delete mode 100644 helm/schemas/21-euler delete mode 100644 helm/schemas/dces delete mode 100644 helm/schemas/dcq delete mode 100644 helm/schemas/dctype delete mode 100644 helm/schemas/schema-h delete mode 100644 helm/schemas/schema-hth delete mode 100644 helm/scripts/Makefile delete mode 100644 helm/scripts/init.d/etc_default_helm delete mode 100644 helm/scripts/init.d/etc_default_helm_mowgli delete mode 100755 helm/scripts/init.d/helm delete mode 100755 helm/scripts/init.d/helm-bootmisc.sh delete mode 100755 helm/scripts/init.d/helm-bootmisc_mowgli.sh delete mode 100755 helm/scripts/init.d/helm-draw-graph delete mode 100755 helm/scripts/init.d/helm-draw-graph_mowgli delete mode 100755 helm/scripts/init.d/helm-http-getter delete mode 100755 helm/scripts/init.d/helm-http-getter_mowgli delete mode 100755 helm/scripts/init.d/helm-proof-checker delete mode 100755 helm/scripts/init.d/helm-proof-checker_mowgli delete mode 100755 helm/scripts/init.d/helm-search-engine_mowgli delete mode 100755 helm/scripts/init.d/helm-tomcat delete mode 100755 helm/scripts/init.d/helm-tomcat_mowgli delete mode 100755 helm/scripts/init.d/helm-uri-set-queue delete mode 100755 helm/scripts/init.d/helm-uri-set-queue_mowgli delete mode 100755 helm/scripts/init.d/helm-uwobo_mowgli delete mode 100755 helm/scripts/init.d/helm_mowgli delete mode 100755 helm/scripts/init.d/loadPredefinedStylesheets.pl delete mode 100755 helm/scripts/init.d/uwobo_forever.sh delete mode 100755 helm/scripts/makeit delete mode 100755 helm/scripts/start-tomcat delete mode 100755 helm/scripts/start-tomcat-debug delete mode 100755 helm/scripts/stop-tomcat-debug delete mode 100644 helm/scripts/template.cshrc delete mode 100644 helm/scripts/template.rc delete mode 100644 helm/searchEngine/.cvsignore delete mode 100644 helm/searchEngine/Makefile delete mode 100644 helm/searchEngine/html/aliaslist.html delete mode 100644 helm/searchEngine/html/almost_blank.html delete mode 100644 helm/searchEngine/html/blank.html delete mode 100644 helm/searchEngine/html/boole.html delete mode 100644 helm/searchEngine/html/constraints_choice_template.html delete mode 100644 helm/searchEngine/html/editor.html delete mode 100644 helm/searchEngine/html/editorpdq.html delete mode 100644 helm/searchEngine/html/expnamedsubst.html delete mode 100644 helm/searchEngine/html/expr.html delete mode 100644 helm/searchEngine/html/genid.html delete mode 100644 helm/searchEngine/html/grammar.html delete mode 100644 helm/searchEngine/html/grammarpdq.html delete mode 100644 helm/searchEngine/html/index.html delete mode 100644 helm/searchEngine/html/loc_obj.html delete mode 100644 helm/searchEngine/html/manual/alias.jpg delete mode 100644 helm/searchEngine/html/manual/ex1.jpg delete mode 100644 helm/searchEngine/html/manual/frames.jpg delete mode 100644 helm/searchEngine/html/manual/index.html delete mode 100644 helm/searchEngine/html/mat_con.html delete mode 100644 helm/searchEngine/html/paginacollink.html delete mode 100644 helm/searchEngine/html/pdq.html delete mode 100644 helm/searchEngine/html/query_choice.html delete mode 100644 helm/searchEngine/html/set.html delete mode 100644 helm/searchEngine/html/start.html delete mode 100644 helm/searchEngine/html/summary.html delete mode 100644 helm/searchEngine/html/templateambigpdq1.html delete mode 100644 helm/searchEngine/html/templateambigpdq2.html delete mode 100644 helm/searchEngine/html/templateambigpdq3.html delete mode 100644 helm/searchEngine/html/val.html delete mode 100644 helm/searchEngine/searchEngine.ml delete mode 100644 helm/style/annotatedcont.xsl delete mode 100644 helm/style/annotatedpres.xsl delete mode 100644 helm/style/content.xsl delete mode 100644 helm/style/content_to_html.xsl delete mode 100644 helm/style/contentlib.xsl delete mode 100644 helm/style/drop_coercions.xsl delete mode 100644 helm/style/expandobj.xsl delete mode 100644 helm/style/genmmlid.xsl delete mode 100644 helm/style/getter.xsl delete mode 100644 helm/style/headercontent.xsl delete mode 100644 helm/style/html_init.xsl delete mode 100644 helm/style/html_reals.xsl delete mode 100644 helm/style/html_set.xsl delete mode 100644 helm/style/inductive.xsl delete mode 100644 helm/style/lambda.xsl delete mode 100644 helm/style/link.xsl delete mode 100644 helm/style/links_library.xsl delete mode 100644 helm/style/mk_dep_graph.xsl delete mode 100644 helm/style/mk_meta_and_dep_graph.xsl delete mode 100644 helm/style/mk_meta_graph.xsl delete mode 100644 helm/style/mk_meta_theory.xsl delete mode 100644 helm/style/mmlctop.xsl delete mode 100755 helm/style/mmlctop.xsl-0.14 delete mode 100644 helm/style/mmlctop2_0.xsl delete mode 100644 helm/style/mmlextension.xsl delete mode 100644 helm/style/mmlnotation.xsl delete mode 100644 helm/style/mmltheoryextension.xsl delete mode 100644 helm/style/objcontent.xsl delete mode 100644 helm/style/objtheorycontent.xsl delete mode 100644 helm/style/params.xsl delete mode 100644 helm/style/proofs.xsl delete mode 100644 helm/style/ricerca.xsl delete mode 100644 helm/style/ring.xsl delete mode 100644 helm/style/rootcontent.xsl delete mode 100644 helm/style/roottheory.xsl delete mode 100644 helm/style/show_dc.xsl delete mode 100644 helm/style/theory_content.xsl delete mode 100644 helm/style/theory_pres.xsl delete mode 100644 helm/style/xslt_index.txt delete mode 100644 helm/uwobo-panel/.cvsignore delete mode 100644 helm/uwobo-panel/Makefile delete mode 100644 helm/uwobo-panel/control.html delete mode 100644 helm/uwobo-panel/control.js delete mode 100644 helm/uwobo-panel/index.html delete mode 100644 helm/uwobo-panel/welcome.html delete mode 100644 helm/uwobo/.cvsignore delete mode 100644 helm/uwobo/.depend delete mode 100644 helm/uwobo/Makefile delete mode 100644 helm/uwobo/log/.cvsignore delete mode 100644 helm/uwobo/uwobo.ml delete mode 100644 helm/uwobo/uwobo_common.ml delete mode 100644 helm/uwobo/uwobo_common.mli delete mode 100644 helm/uwobo/uwobo_engine.ml delete mode 100644 helm/uwobo/uwobo_engine.mli delete mode 100644 helm/uwobo/uwobo_logger.ml delete mode 100644 helm/uwobo/uwobo_logger.mli delete mode 100644 helm/uwobo/uwobo_styles.ml delete mode 100644 helm/uwobo/uwobo_styles.mli delete mode 100644 helm/xmltheory/Coq_v2theoryxml/.cvsignore delete mode 100644 helm/xmltheory/Coq_v2theoryxml/.depend delete mode 100644 helm/xmltheory/Coq_v2theoryxml/Makefile delete mode 100644 helm/xmltheory/Coq_v2theoryxml/coq_v2theoryxml.ml delete mode 100644 helm/xmltheory/FakeCoq_vo2xml/README delete mode 100755 helm/xmltheory/FakeCoq_vo2xml/coq_vo2xml delete mode 100644 helm/xmltheory/XmlTheory/.cvsignore delete mode 100644 helm/xmltheory/XmlTheory/.depend delete mode 100644 helm/xmltheory/XmlTheory/COME_COMPILARE delete mode 100644 helm/xmltheory/XmlTheory/Make delete mode 100644 helm/xmltheory/XmlTheory/Makefile delete mode 100644 helm/xmltheory/XmlTheory/README delete mode 100644 helm/xmltheory/XmlTheory/XmlTheory.v delete mode 100644 helm/xmltheory/XmlTheory/iXml.ml delete mode 100644 helm/xmltheory/XmlTheory/iXml.mli delete mode 100644 helm/xmltheory/XmlTheory/xmltheoryentries.ml delete mode 100644 helm/xmltheory/maththeory.dtd delete mode 100644 helm/xsltd/.cvsignore delete mode 100644 helm/xsltd/AUTHORS delete mode 100644 helm/xsltd/COPYING delete mode 100644 helm/xsltd/ChangeLog delete mode 100644 helm/xsltd/Makefile.in delete mode 100644 helm/xsltd/Makefile.old delete mode 100644 helm/xsltd/NEWS delete mode 100644 helm/xsltd/README delete mode 100644 helm/xsltd/config.cache.pkg delete mode 100644 helm/xsltd/configure.in delete mode 100644 helm/xsltd/helm_xsltd.spec.in delete mode 100755 helm/xsltd/start-xaland.in delete mode 100644 helm/xsltd/xaland-cpp/xaland.cpp delete mode 100644 helm/xsltd/xaland-java-DOM/xaland_DOM.class delete mode 100644 helm/xsltd/xaland-java-DOM/xaland_DOM.java delete mode 100644 helm/xsltd/xaland-java/rompi.class delete mode 100644 helm/xsltd/xaland-java/rompi.java delete mode 100644 helm/xsltd/xaland-java/sped.class delete mode 100644 helm/xsltd/xaland-java/sped.java delete mode 100644 helm/xsltd/xaland-java/xaland.class delete mode 100644 helm/xsltd/xaland-java/xaland.java delete mode 100644 helm/xsltd/xaland-java/xaland.java.prima_del_loro_baco delete mode 100644 helm/xsltd/xaland-java/xaland.java.prima_del_loro_baco_ma_dopo_i_reset delete mode 100644 helm/xsltd/xaland-java2/xaland2.class delete mode 100644 helm/xsltd/xaland-java2/xaland2.java delete mode 100644 helm/xsltd/xaland-uwobo/.cvsignore delete mode 100644 helm/xsltd/xaland-uwobo/xaland_uwobo.java delete mode 100644 helm/xsltd/xaland.class delete mode 100644 helm/xsltd/xaland2.class delete mode 100644 helm/xsltd/xaland_DOM.class diff --git a/CVSROOT/checkoutlist b/CVSROOT/checkoutlist deleted file mode 100644 index b04b3501f..000000000 --- a/CVSROOT/checkoutlist +++ /dev/null @@ -1,13 +0,0 @@ -# The "checkoutlist" file is used to support additional version controlled -# administrative files in $CVSROOT/CVSROOT, such as template files. -# -# The first entry on a line is a filename which will be checked out from -# the corresponding RCS file in the $CVSROOT/CVSROOT directory. -# The remainder of the line is an error message to use if the file cannot -# be checked out. -# -# File format: -# -# [] -# -# comment lines begin with '#' diff --git a/CVSROOT/commitinfo b/CVSROOT/commitinfo deleted file mode 100644 index b19e7b7a6..000000000 --- a/CVSROOT/commitinfo +++ /dev/null @@ -1,15 +0,0 @@ -# The "commitinfo" file is used to control pre-commit checks. -# The filter on the right is invoked with the repository and a list -# of files to check. A non-zero exit of the filter program will -# cause the commit to be aborted. -# -# The first entry on a line is a regular expression which is tested -# against the directory that the change is being committed to, relative -# to the $CVSROOT. For the first match that is found, then the remainder -# of the line is the name of the filter to run. -# -# If the repository name does not match any of the regular expressions in this -# file, the "DEFAULT" line is used, if it is specified. -# -# If the name "ALL" appears as a regular expression it is always used -# in addition to the first matching regex or "DEFAULT". diff --git a/CVSROOT/config b/CVSROOT/config deleted file mode 100644 index 8069cad5d..000000000 --- a/CVSROOT/config +++ /dev/null @@ -1,11 +0,0 @@ -# Set this to "no" if pserver shouldn't check system users/passwords -#SystemAuth=no - -# Set `PreservePermissions' to `yes' to save file status information -# in the repository. -#PreservePermissions=no - -# Set `TopLevelAdmin' to `yes' to create a CVS directory at the top -# level of the new working directory when using the `cvs checkout' -# command. -#TopLevelAdmin=no diff --git a/CVSROOT/cvswrappers b/CVSROOT/cvswrappers deleted file mode 100644 index 0accaf1b1..000000000 --- a/CVSROOT/cvswrappers +++ /dev/null @@ -1,23 +0,0 @@ -# This file affects handling of files based on their names. -# -# The -t/-f options allow one to treat directories of files -# as a single file, or to transform a file in other ways on -# its way in and out of CVS. -# -# The -m option specifies whether CVS attempts to merge files. -# -# The -k option specifies keyword expansion (e.g. -kb for binary). -# -# Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers) -# -# wildcard [option value][option value]... -# -# where option is one of -# -f from cvs filter value: path to filter -# -t to cvs filter value: path to filter -# -m update methodology value: MERGE or COPY -# -k expansion mode value: b, o, kkv, &c -# -# and value is a single-quote delimited value. -# For example: -#*.gif -k 'b' diff --git a/CVSROOT/editinfo b/CVSROOT/editinfo deleted file mode 100644 index d78886c15..000000000 --- a/CVSROOT/editinfo +++ /dev/null @@ -1,21 +0,0 @@ -# The "editinfo" file is used to allow verification of logging -# information. It works best when a template (as specified in the -# rcsinfo file) is provided for the logging procedure. Given a -# template with locations for, a bug-id number, a list of people who -# reviewed the code before it can be checked in, and an external -# process to catalog the differences that were code reviewed, the -# following test can be applied to the code: -# -# Making sure that the entered bug-id number is correct. -# Validating that the code that was reviewed is indeed the code being -# checked in (using the bug-id number or a seperate review -# number to identify this particular code set.). -# -# If any of the above test failed, then the commit would be aborted. -# -# Actions such as mailing a copy of the report to each reviewer are -# better handled by an entry in the loginfo file. -# -# One thing that should be noted is the the ALL keyword is not -# supported. There can be only one entry that matches a given -# repository. diff --git a/CVSROOT/loginfo b/CVSROOT/loginfo deleted file mode 100644 index 5a59f0a54..000000000 --- a/CVSROOT/loginfo +++ /dev/null @@ -1,26 +0,0 @@ -# The "loginfo" file controls where "cvs commit" log information -# is sent. The first entry on a line is a regular expression which must match -# the directory that the change is being made to, relative to the -# $CVSROOT. If a match is found, then the remainder of the line is a filter -# program that should expect log information on its standard input. -# -# If the repository name does not match any of the regular expressions in this -# file, the "DEFAULT" line is used, if it is specified. -# -# If the name ALL appears as a regular expression it is always used -# in addition to the first matching regex or DEFAULT. -# -# You may specify a format string as part of the -# filter. The string is composed of a `%' followed -# by a single format character, or followed by a set of format -# characters surrounded by `{' and `}' as separators. The format -# characters are: -# -# s = file name -# V = old version number (pre-checkin) -# v = new version number (post-checkin) -# -# For example: -#DEFAULT (echo ""; id; echo %s; date; cat) >> $CVSROOT/CVSROOT/commitlog -# or -#DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog diff --git a/CVSROOT/modules b/CVSROOT/modules deleted file mode 100644 index cb9e9efc9..000000000 --- a/CVSROOT/modules +++ /dev/null @@ -1,26 +0,0 @@ -# Three different line formats are valid: -# key -a aliases... -# key [options] directory -# key [options] directory files... -# -# Where "options" are composed of: -# -i prog Run "prog" on "cvs commit" from top-level of module. -# -o prog Run "prog" on "cvs checkout" of module. -# -e prog Run "prog" on "cvs export" of module. -# -t prog Run "prog" on "cvs rtag" of module. -# -u prog Run "prog" on "cvs update" of module. -# -d dir Place module in directory "dir" instead of module name. -# -l Top-level directory only -- do not recurse. -# -# NOTE: If you change any of the "Run" options above, you'll have to -# release and re-checkout any working directories of these modules. -# -# And "directory" is a path to a directory relative to $CVSROOT. -# -# The "-a" option specifies an alias. An alias is interpreted as if -# everything on the right of the "-a" had been typed on the command line. -# -# You can encode a module within a module by using the special '&' -# character to interpose another module into the current module. This -# can be useful for creating a module that consists of many directories -# spread out over the entire source repository. diff --git a/CVSROOT/notify b/CVSROOT/notify deleted file mode 100644 index 34f0bc288..000000000 --- a/CVSROOT/notify +++ /dev/null @@ -1,12 +0,0 @@ -# The "notify" file controls where notifications from watches set by -# "cvs watch add" or "cvs edit" are sent. The first entry on a line is -# a regular expression which is tested against the directory that the -# change is being made to, relative to the $CVSROOT. If it matches, -# then the remainder of the line is a filter program that should contain -# one occurrence of %s for the user to notify, and information on its -# standard input. -# -# "ALL" or "DEFAULT" can be used in place of the regular expression. -# -# For example: -#ALL mail %s -s "CVS notification" diff --git a/CVSROOT/rcsinfo b/CVSROOT/rcsinfo deleted file mode 100644 index 49e59f4d0..000000000 --- a/CVSROOT/rcsinfo +++ /dev/null @@ -1,13 +0,0 @@ -# The "rcsinfo" file is used to control templates with which the editor -# is invoked on commit and import. -# -# The first entry on a line is a regular expression which is tested -# against the directory that the change is being made to, relative to the -# $CVSROOT. For the first match that is found, then the remainder of the -# line is the name of the file that contains the template. -# -# If the repository name does not match any of the regular expressions in this -# file, the "DEFAULT" line is used, if it is specified. -# -# If the name "ALL" appears as a regular expression it is always used -# in addition to the first matching regex or "DEFAULT". diff --git a/CVSROOT/taginfo b/CVSROOT/taginfo deleted file mode 100644 index 274a46dd5..000000000 --- a/CVSROOT/taginfo +++ /dev/null @@ -1,20 +0,0 @@ -# The "taginfo" file is used to control pre-tag checks. -# The filter on the right is invoked with the following arguments: -# -# $1 -- tagname -# $2 -- operation "add" for tag, "mov" for tag -F, and "del" for tag -d -# $3 -- repository -# $4-> file revision [file revision ...] -# -# A non-zero exit of the filter program will cause the tag to be aborted. -# -# The first entry on a line is a regular expression which is tested -# against the directory that the change is being committed to, relative -# to the $CVSROOT. For the first match that is found, then the remainder -# of the line is the name of the filter to run. -# -# If the repository name does not match any of the regular expressions in this -# file, the "DEFAULT" line is used, if it is specified. -# -# If the name "ALL" appears as a regular expression it is always used -# in addition to the first matching regex or "DEFAULT". diff --git a/CVSROOT/verifymsg b/CVSROOT/verifymsg deleted file mode 100644 index 86f747ce2..000000000 --- a/CVSROOT/verifymsg +++ /dev/null @@ -1,21 +0,0 @@ -# The "verifymsg" file is used to allow verification of logging -# information. It works best when a template (as specified in the -# rcsinfo file) is provided for the logging procedure. Given a -# template with locations for, a bug-id number, a list of people who -# reviewed the code before it can be checked in, and an external -# process to catalog the differences that were code reviewed, the -# following test can be applied to the code: -# -# Making sure that the entered bug-id number is correct. -# Validating that the code that was reviewed is indeed the code being -# checked in (using the bug-id number or a seperate review -# number to identify this particular code set.). -# -# If any of the above test failed, then the commit would be aborted. -# -# Actions such as mailing a copy of the report to each reviewer are -# better handled by an entry in the loginfo file. -# -# One thing that should be noted is the the ALL keyword is not -# supported. There can be only one entry that matches a given -# repository. diff --git a/helm/DEVEL/.cvsignore b/helm/DEVEL/.cvsignore deleted file mode 100644 index c1fcbc4ae..000000000 --- a/helm/DEVEL/.cvsignore +++ /dev/null @@ -1,7 +0,0 @@ -*.cmo -*.cmx -*.cmi - -*.o -*.a - diff --git a/helm/DEVEL/gdome_xslt/.cvsignore b/helm/DEVEL/gdome_xslt/.cvsignore deleted file mode 100644 index 4d6980027..000000000 --- a/helm/DEVEL/gdome_xslt/.cvsignore +++ /dev/null @@ -1,14 +0,0 @@ -gdome2-xslt-cpp-smart.pc -gdome2-xslt.pc -autom4te.cache -Makefile -Makefile.in -aclocal.m4 -config.h -config.h.in -config.log -config.status -configure -libtool -stamp-h -stamp-h.in diff --git a/helm/DEVEL/gdome_xslt/AUTHORS b/helm/DEVEL/gdome_xslt/AUTHORS deleted file mode 100644 index 834817f9e..000000000 --- a/helm/DEVEL/gdome_xslt/AUTHORS +++ /dev/null @@ -1,3 +0,0 @@ -Claudio Sacerdoti Coen -Stefano Zacchiroli -Luca Padovani diff --git a/helm/DEVEL/gdome_xslt/BUGS b/helm/DEVEL/gdome_xslt/BUGS deleted file mode 100644 index e69de29bb..000000000 diff --git a/helm/DEVEL/gdome_xslt/C++/.cvsignore b/helm/DEVEL/gdome_xslt/C++/.cvsignore deleted file mode 100644 index 282522db0..000000000 --- a/helm/DEVEL/gdome_xslt/C++/.cvsignore +++ /dev/null @@ -1,2 +0,0 @@ -Makefile -Makefile.in diff --git a/helm/DEVEL/gdome_xslt/C++/Makefile.am b/helm/DEVEL/gdome_xslt/C++/Makefile.am deleted file mode 100644 index 30e2ce870..000000000 --- a/helm/DEVEL/gdome_xslt/C++/Makefile.am +++ /dev/null @@ -1 +0,0 @@ -SUBDIRS = gdome_xslt test diff --git a/helm/DEVEL/gdome_xslt/C++/gdome_xslt/.cvsignore b/helm/DEVEL/gdome_xslt/C++/gdome_xslt/.cvsignore deleted file mode 100644 index 051d1bd50..000000000 --- a/helm/DEVEL/gdome_xslt/C++/gdome_xslt/.cvsignore +++ /dev/null @@ -1,3 +0,0 @@ -Makefile -Makefile.in -.deps diff --git a/helm/DEVEL/gdome_xslt/C++/gdome_xslt/GdomeSmartDOMXSLT.hh b/helm/DEVEL/gdome_xslt/C++/gdome_xslt/GdomeSmartDOMXSLT.hh deleted file mode 100644 index 97b8cc655..000000000 --- a/helm/DEVEL/gdome_xslt/C++/gdome_xslt/GdomeSmartDOMXSLT.hh +++ /dev/null @@ -1,7 +0,0 @@ - -#ifndef __GdomeSmartDOMXSLT_hh__ -#define __GdomeSmartDOMXSLT_hh__ - -#include "GdomeSmartDOMXSLTStylesheet.hh" - -#endif // __GdomeSmartDOMXSLT_hh__ diff --git a/helm/DEVEL/gdome_xslt/C++/gdome_xslt/GdomeSmartDOMXSLTStylesheet.cc b/helm/DEVEL/gdome_xslt/C++/gdome_xslt/GdomeSmartDOMXSLTStylesheet.cc deleted file mode 100644 index 330f8724e..000000000 --- a/helm/DEVEL/gdome_xslt/C++/gdome_xslt/GdomeSmartDOMXSLTStylesheet.cc +++ /dev/null @@ -1,131 +0,0 @@ -// This file is part of a XSLT engine working on Gdome documents. In fact, -// it just maps Gdome documents to libxml documents back and forth, and -// applies the transformation on libxml documents using libxlt. -// -// Copyright (C) 2002: Luca Padovani -// -// This library 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 (at your option) any later version. -// -// This library 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 library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// For more information, please send an email to lpadovan@cs.unibo.it - -#include "config.h" - -#include -#include - -#include -#include - -#include "GdomeSmartDOMXSLTStylesheet.hh" - -namespace GdomeSmartDOMExt { - - XSLTStylesheet::XSLTStylesheet(const Document& doc) - { - assert(doc); - GdomeDocument* _doc = gdome_cast_doc(doc.gdome_object()); - assert(_doc); - stylesheet = processStylesheet(_doc); - GdomeException _exc = 0; - gdome_doc_unref(_doc, &_exc); - assert(_exc == 0); - } - - XSLTStylesheet::~XSLTStylesheet() - { - if (stylesheet) - { - xsltFreeStylesheet(stylesheet); - stylesheet = 0; - } - } - - Document - XSLTStylesheet::apply(const Document& source) const - { - std::vector< std::pair > noParams; - return apply(source, noParams); - } - - Document - XSLTStylesheet::apply(const Document& source, const std::vector< std::pair >& params) const - { - assert(source); - - char** _params = (char**) malloc(sizeof(char*) * (2 * params.size() + 1)); - for (unsigned i = 0; i < params.size(); i++) - { - std::string param = params[i].first; - _params[2 * i] = strdup(param.c_str()); - std::string value = params[i].second; - _params[2 * i + 1] = strdup(value.c_str()); - } - _params[2 * params.size()] = 0; - - GdomeDocument* _source = gdome_cast_doc(source.gdome_object()); - assert(_source); - GdomeDocument* _result = applyStylesheet(_source, stylesheet, const_cast(_params)); - - GdomeException _exc = 0; - gdome_doc_unref(_source, &_exc); - assert(_exc == 0); - - for (unsigned i = 0; i < 2 * params.size(); i++) free(_params[i]); - free(_params); - - Document result(_result); - gdome_doc_unref(_result, &_exc); - assert(_exc == 0); - - return result; - } - - void - XSLTStylesheet::save(const Document& doc, const std::string& filename) const - { - assert(doc); - GdomeException _exc = 0; - GdomeDocument* _doc = gdome_cast_doc(doc.gdome_object()); - assert(_doc); - if (saveResultToFilename(filename.c_str(), _doc, stylesheet, 0) < 0) throw SaveException(); - gdome_doc_unref(_doc, &_exc); - assert(_exc == 0); - } - - void - XSLTStylesheet::save(const Document& doc, FILE* f) const - { - assert(doc); - GdomeException _exc = 0; - GdomeDocument* _doc = gdome_cast_doc(doc.gdome_object()); - assert(_doc); - if (saveResultToFile(f, _doc, stylesheet) < 0) throw SaveException(); - gdome_doc_unref(_doc, &_exc); - assert(_exc == 0); - } - - void - XSLTStylesheet::save(const Document& doc, int fd) const - { - assert(doc); - GdomeException _exc = 0; - GdomeDocument* _doc = gdome_cast_doc(doc.gdome_object()); - assert(_doc); - if (saveResultToFd(fd, _doc, stylesheet) < 0) throw SaveException(); - gdome_doc_unref(_doc, &_exc); - assert(_exc == 0); - } - -} diff --git a/helm/DEVEL/gdome_xslt/C++/gdome_xslt/GdomeSmartDOMXSLTStylesheet.hh b/helm/DEVEL/gdome_xslt/C++/gdome_xslt/GdomeSmartDOMXSLTStylesheet.hh deleted file mode 100644 index 1757f39a3..000000000 --- a/helm/DEVEL/gdome_xslt/C++/gdome_xslt/GdomeSmartDOMXSLTStylesheet.hh +++ /dev/null @@ -1,59 +0,0 @@ -// This file is part of a XSLT engine working on Gdome documents. In fact, -// it just maps Gdome documents to libxml documents back and forth, and -// applies the transformation on libxml documents using libxlt. -// -// Copyright (C) 2002: Luca Padovani -// -// This library 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 (at your option) any later version. -// -// This library 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 library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// For more information, please send an email to lpadovan@cs.unibo.it - -#ifndef __GdomeSmartDOMXSLTStylesheet_hh__ -#define __GdomeSmartDOMXSLTStylesheet_hh__ - -#include -#include -#include - -#include "gdome_xslt.h" -#include - -namespace GdomeSmartDOMExt { - - using namespace GdomeSmartDOM; - - class XSLTStylesheet - { - public: - explicit XSLTStylesheet(const Document& doc); - ~XSLTStylesheet(); - - Document apply(const Document& source) const; - Document apply(const Document& source, const std::vector< std::pair >& params) const; - void save(const Document& result, const std::string& filename) const; - void save(const Document& result, FILE* f) const; - void save(const Document& result, int fd) const; - - class SaveException { }; - - private: - XSLTStylesheet(const XSLTStylesheet&); - - xsltStylesheet* stylesheet; - }; - -} - -#endif // __GdomeSmartDOMXSLTStylesheet_hh__ diff --git a/helm/DEVEL/gdome_xslt/C++/gdome_xslt/Makefile.am b/helm/DEVEL/gdome_xslt/C++/gdome_xslt/Makefile.am deleted file mode 100644 index 0e4b76e4e..000000000 --- a/helm/DEVEL/gdome_xslt/C++/gdome_xslt/Makefile.am +++ /dev/null @@ -1,19 +0,0 @@ - -lib_LTLIBRARIES = libgdome_xslt_cpp_smart.la - -libgdome_xslt_cpp_smart_la_LIBADD = $(top_builddir)/C/gdome_xslt/libgdome_xslt.la - -libgdome_xslt_cpp_smart_la_LDFLAGS = -version-info @VERSION_INFO@ - -libgdome_xslt_cpp_smart_la_SOURCES = \ - GdomeSmartDOMXSLTStylesheet.cc - -pkginclude_HEADERS = \ - GdomeSmartDOMXSLTStylesheet.hh \ - GdomeSmartDOMXSLT.hh - -INCLUDES = \ - $(GMETADOM_CFLAGS) \ - $(LIBXSLT_CFLAGS) \ - -I$(top_srcdir) \ - -I$(top_srcdir)/C/gdome_xslt diff --git a/helm/DEVEL/gdome_xslt/C++/test/.cvsignore b/helm/DEVEL/gdome_xslt/C++/test/.cvsignore deleted file mode 100644 index 051d1bd50..000000000 --- a/helm/DEVEL/gdome_xslt/C++/test/.cvsignore +++ /dev/null @@ -1,3 +0,0 @@ -Makefile -Makefile.in -.deps diff --git a/helm/DEVEL/gdome_xslt/C++/test/Makefile.am b/helm/DEVEL/gdome_xslt/C++/test/Makefile.am deleted file mode 100644 index 12a08d07a..000000000 --- a/helm/DEVEL/gdome_xslt/C++/test/Makefile.am +++ /dev/null @@ -1,18 +0,0 @@ - -noinst_PROGRAMS = test - -test_SOURCES = main.cc - -LDADDS = \ - $(GMETADOM_LIBS) \ - $(LIBXSLT_LIBS) \ - $(top_builddir)/C++/gdome_xslt/libgdome_xslt_cpp_smart.la - -test_LDADD = $(LDADDS) - -INCLUDES = \ - $(GMETADOM_CFLAGS) \ - $(LIBXSLT_CFLAGS) \ - -I$(top_srcdir)/C/gdome_xslt \ - -I$(top_srcdir)/C++/gdome_xslt - diff --git a/helm/DEVEL/gdome_xslt/C++/test/main.cc b/helm/DEVEL/gdome_xslt/C++/test/main.cc deleted file mode 100644 index 0f5aa2d70..000000000 --- a/helm/DEVEL/gdome_xslt/C++/test/main.cc +++ /dev/null @@ -1,53 +0,0 @@ -/* This file is a test for the XSLT engine working on Gdome documents. - * - * Copyright (C) 2002 Claudio Sacerdoti Coen - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please send an email to - */ - -#include -#include -#include "GdomeSmartDOMXSLT.hh" - -namespace DOM = GdomeSmartDOM; -namespace DOMX = GdomeSmartDOMExt; - -#define OUTPUT_FILE "../../test_files/output.xml" -#define CORRECT_OUTPUT_FILE "../../test_files/output.xml.correct" - -int -main(void) -{ - int bytes; - DOM::DOMImplementation di; - std::vector< std::pair > params; - - params.push_back(std::make_pair(DOM::GdomeString("parameter1"), DOM::GdomeString("'value1'"))); - params.push_back(std::make_pair(DOM::GdomeString("parameter2"), DOM::GdomeString("'value2'"))); - params.push_back(std::make_pair(DOM::GdomeString("parameter3"), DOM::GdomeString("'value3'"))); - - DOM::Document input = di.createDocumentFromURI("../../test_files/input.xml"); - DOM::Document style = di.createDocumentFromURI("../../test_files/stylesheet.xsl"); - - DOMX::XSLTStylesheet style_libxslt(style); - DOM::Document output = style_libxslt.apply(input, params); - style_libxslt.save(output, OUTPUT_FILE); - - std::cout << "The test was successful iff " << OUTPUT_FILE << " is equal to " << CORRECT_OUTPUT_FILE << std::endl; - - return 0; -} diff --git a/helm/DEVEL/gdome_xslt/C/.cvsignore b/helm/DEVEL/gdome_xslt/C/.cvsignore deleted file mode 100644 index 282522db0..000000000 --- a/helm/DEVEL/gdome_xslt/C/.cvsignore +++ /dev/null @@ -1,2 +0,0 @@ -Makefile -Makefile.in diff --git a/helm/DEVEL/gdome_xslt/C/Makefile.am b/helm/DEVEL/gdome_xslt/C/Makefile.am deleted file mode 100644 index 7424d618c..000000000 --- a/helm/DEVEL/gdome_xslt/C/Makefile.am +++ /dev/null @@ -1,3 +0,0 @@ - -SUBDIRS = gdome_xslt test - diff --git a/helm/DEVEL/gdome_xslt/C/gdome_xslt/.cvsignore b/helm/DEVEL/gdome_xslt/C/gdome_xslt/.cvsignore deleted file mode 100644 index 572cf3ae5..000000000 --- a/helm/DEVEL/gdome_xslt/C/gdome_xslt/.cvsignore +++ /dev/null @@ -1,4 +0,0 @@ -gdome_xslt.o -Makefile -Makefile.in -.deps diff --git a/helm/DEVEL/gdome_xslt/C/gdome_xslt/Makefile.am b/helm/DEVEL/gdome_xslt/C/gdome_xslt/Makefile.am deleted file mode 100644 index b8e374ee3..000000000 --- a/helm/DEVEL/gdome_xslt/C/gdome_xslt/Makefile.am +++ /dev/null @@ -1,14 +0,0 @@ - -lib_LTLIBRARIES = libgdome_xslt.la - -libgdome_xslt_la_LDFLAGS = -version-info @VERSION_INFO@ - -libgdome_xslt_la_SOURCES = gdome_xslt.c - -pkginclude_HEADERS = gdome_xslt.h - -INCLUDES = \ - $(GDOME_CFLAGS) \ - $(LIBXSLT_CFLAGS) \ - -I$(top_srcdir) - diff --git a/helm/DEVEL/gdome_xslt/C/gdome_xslt/gdome_xslt.c b/helm/DEVEL/gdome_xslt/C/gdome_xslt/gdome_xslt.c deleted file mode 100644 index 2c34f9cb5..000000000 --- a/helm/DEVEL/gdome_xslt/C/gdome_xslt/gdome_xslt.c +++ /dev/null @@ -1,239 +0,0 @@ -/* This file implements a XSLT engine working on Gdome documents. In fact, - * it just maps Gdome documents to libxml documents back and forth, and - * applyes the transformation on libxml documents using libxlt. - * - * The code is largely based on the code of T.J. Mather's XML::GDOME::XSLT - * Perl module (http://kobesearch.cpan.org/search?dist=XML-GDOME-XSLT) - * - * Copyright (C) 2002: - * Claudio Sacerdoti Coen - * Stefano Zacchiroli - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please send an email to {sacerdot,zack}@cs.unibo.it - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "gdome_xslt.h" - -// Begin of Gdome internals exposed -typedef struct _Gdome_xml_Document Gdome_xml_Document; -struct _Gdome_xml_Document { - GdomeDocument super; - const GdomeDocumentVtab* vtab; - int refcnt; - xmlDocPtr n; - GdomeAccessType accessType; -}; - -GdomeNode* gdome_xml_n_mkref(xmlNode* n); -// End of Gdome internals exposed - -// Begin of the abstraction of Gdome internals. Uses the Gdome internals exposed -xmlDocPtr libxml_of_gdome(GdomeDocument* doc) -{ - return ((Gdome_xml_Document*)doc)->n; -} - -GdomeDocument* gdome_of_libxml(xmlDocPtr n) -{ - return (GdomeDocument*)gdome_xml_n_mkref((xmlNode*)n); -} -// End of the abstraction of Gdome internals. Uses the Gdome internals exposed. - - - -// From now on no Gdome internal should be used directly. - - /******************************/ - /* XSLT stylesheet Processing */ - /******************************/ - -xsltStylesheetPtr processStylesheet(GdomeDocument* style) -{ - xmlDocPtr style_copy; - xmlDocPtr style_libxml; - - if (style == NULL) { - return NULL; - } - style_libxml = libxml_of_gdome(style); - style_copy = xmlCopyDoc(style_libxml, 1); - style_copy->URL = xmlStrdup(style_libxml->URL); - - xsltSetGenericDebugFunc(NULL, NULL); - - return xsltParseStylesheetDoc(style_copy); -} - - /*******************************/ - /* XSLT stylesheet Application */ - /*******************************/ - -GdomeDocument* applyStylesheet(GdomeDocument* source, xsltStylesheetPtr - style_libxslt, const char** params) -{ - xmlDocPtr source_libxml; - xmlDocPtr output_libxml; - - if (source == NULL) return NULL; - source_libxml = libxml_of_gdome(source); - - xsltSetGenericDebugFunc(NULL, NULL); - - output_libxml = xsltApplyStylesheet(style_libxslt, source_libxml, - params); - - if (output_libxml == NULL) return NULL; - - return gdome_of_libxml(output_libxml); -} - - /******************/ - /* Results Output */ - /******************/ - -int saveResultToFilename (const char* name, GdomeDocument* result, - xsltStylesheetPtr style_libxslt, int compression) -{ - xmlDocPtr result_libxml; - - if (result == NULL) return -1; - result_libxml = libxml_of_gdome(result); - - xsltSetGenericDebugFunc(NULL, NULL); - - return xsltSaveResultToFilename(name, result_libxml, - style_libxslt, compression); -} - -int saveResultToFile (FILE* file, GdomeDocument* result, - xsltStylesheetPtr style_libxslt) -{ - xmlDocPtr result_libxml; - - if (result == NULL) return -1; - result_libxml = libxml_of_gdome(result); - - xsltSetGenericDebugFunc(NULL, NULL); - - return xsltSaveResultToFile(file, result_libxml, style_libxslt); -} - -int saveResultToFd (int fd, GdomeDocument* result, xsltStylesheetPtr - style_libxslt) -{ - xmlDocPtr result_libxml; - - if (result == NULL) return -1; - result_libxml = libxml_of_gdome(result); - - xsltSetGenericDebugFunc(NULL, NULL); - - return xsltSaveResultToFd(fd, result_libxml, style_libxslt); -} - - /**********************************************/ - /* Error and Debugging Callbacks Registration */ - /**********************************************/ - - /* max size of a single message passed to callbacks */ -#define MAX_MSG_SIZE 1024 -#define TRUNCATED_MSG "... TRUNCATED ..." -#define TRUNCATED_MSG_LEN strlen(TRUNCATED_MSG) - - /* ERROR callbacks */ - - /* user provided error callback, needs a string input */ -static gdomeXsltMsgCallback errorUserCallback = NULL; - - /* libxslt like error callback, ignore context, builds a string - * input for user provided error callback and invoke it */ -void gdomeXsltErrorCallback (void *ctx, const char *msg, ...) { - va_list args; - char buf[MAX_MSG_SIZE]; - - if (errorUserCallback == NULL) - return; - - va_start(args, msg); - if (vsnprintf(buf, MAX_MSG_SIZE, msg, args) > MAX_MSG_SIZE - 1) - { /* message truncated; write TRUNCATED_MSG on it */ - strncpy(buf+(strlen(buf) - TRUNCATED_MSG_LEN), - TRUNCATED_MSG, TRUNCATED_MSG_LEN); - } - va_end(args); - - (*errorUserCallback) (buf); - - return; -} - - /* set user provided error callback */ -void setErrorCallback (gdomeXsltMsgCallback callback) -{ - errorUserCallback = callback; - xsltSetGenericErrorFunc(NULL, - (callback == NULL ? NULL : gdomeXsltErrorCallback)); - - return; -} - - /* DEBUG callbacks */ - - /* user provided debug callback, needs a string input */ -static gdomeXsltMsgCallback debugUserCallback = NULL; - - /* libxslt like debug callback, ignore context, builds a string - * input for user provided debug callback and invoke it */ -void gdomeXsltDebugCallback (void *ctx, const char *msg, ...) { - va_list args; - char buf[MAX_MSG_SIZE]; - - if (debugUserCallback == NULL) - return; - - va_start(args, msg); - if (vsnprintf(buf, MAX_MSG_SIZE, msg, args) > MAX_MSG_SIZE - 1) - { /* message truncated; write TRUNCATED_MSG on it */ - strncpy(buf+(strlen(buf) - TRUNCATED_MSG_LEN), - TRUNCATED_MSG, TRUNCATED_MSG_LEN); - } - va_end(args); - - (*debugUserCallback) (buf); - - return; -} - - /* set user provided debug callback */ -void setDebugCallback (gdomeXsltMsgCallback callback) -{ - debugUserCallback = callback; - xsltSetGenericDebugFunc(NULL, - (callback == NULL ? NULL : gdomeXsltDebugCallback)); - - return; -} - diff --git a/helm/DEVEL/gdome_xslt/C/gdome_xslt/gdome_xslt.h b/helm/DEVEL/gdome_xslt/C/gdome_xslt/gdome_xslt.h deleted file mode 100644 index 383208770..000000000 --- a/helm/DEVEL/gdome_xslt/C/gdome_xslt/gdome_xslt.h +++ /dev/null @@ -1,87 +0,0 @@ - -/* This file implements a XSLT engine working on Gdome documents. In fact, - * it just maps Gdome documents to libxml documents back and forth, and - * applies the transformation on libxml documents using libxlt. - * - * The code is largely based on the code of T.J. Mather's XML::GDOME::XSLT - * Perl module (http://kobesearch.cpan.org/search?dist=XML-GDOME-XSLT) - * - * Copyright (C) 2002: - * Claudio Sacerdoti Coen - * Stefano Zacchiroli - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please send an email to {sacerdot,zack}@cs.unibo.it - */ - -#ifndef __gdome_xslt_h__ -#define __gdome_xslt_h__ - -#include -#include -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - - /******************************/ - /* XSLT stylesheet Processing */ - /******************************/ - -xsltStylesheetPtr processStylesheet (GdomeDocument* style); - - - /*******************************/ - /* XSLT stylesheet Application */ - /*******************************/ - -GdomeDocument* applyStylesheet (GdomeDocument* source, - xsltStylesheetPtr style_libxslt, - const char** params); - - /******************/ - /* Results Output */ - /******************/ - -int saveResultToFilename (const char* name, - GdomeDocument* result, - xsltStylesheetPtr style_libxslt, - int compression); -int saveResultToFile (FILE* file, - GdomeDocument* result, - xsltStylesheetPtr style_libxslt); -int saveResultToFd (int fd, - GdomeDocument* result, - xsltStylesheetPtr style_libxslt); - - /**********************************************/ - /* Error and Debugging Callbacks Registration */ - /**********************************************/ - -typedef void(*gdomeXsltMsgCallback)(const char *); - -void setErrorCallback (gdomeXsltMsgCallback callback); -void setDebugCallback (gdomeXsltMsgCallback callback); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* __gdome_xslt_h__ */ diff --git a/helm/DEVEL/gdome_xslt/C/test/.cvsignore b/helm/DEVEL/gdome_xslt/C/test/.cvsignore deleted file mode 100644 index 87ed101b8..000000000 --- a/helm/DEVEL/gdome_xslt/C/test/.cvsignore +++ /dev/null @@ -1,4 +0,0 @@ -test -.deps -Makefile -Makefile.in diff --git a/helm/DEVEL/gdome_xslt/C/test/Makefile.am b/helm/DEVEL/gdome_xslt/C/test/Makefile.am deleted file mode 100644 index e17047c15..000000000 --- a/helm/DEVEL/gdome_xslt/C/test/Makefile.am +++ /dev/null @@ -1,17 +0,0 @@ - -noinst_PROGRAMS = test - -test_SOURCES = test.c - -LDADDS = \ - $(GDOME_LIBS) \ - $(LIBXSLT_LIBS) \ - $(top_builddir)/C/gdome_xslt/libgdome_xslt.la - -test_LDADD = $(LDADDS) - -INCLUDES = \ - $(GDOME_CFLAGS) \ - $(LIBXSLT_CFLAGS) \ - -I$(top_srcdir)/C/gdome_xslt - diff --git a/helm/DEVEL/gdome_xslt/C/test/test.c b/helm/DEVEL/gdome_xslt/C/test/test.c deleted file mode 100644 index a37c471f5..000000000 --- a/helm/DEVEL/gdome_xslt/C/test/test.c +++ /dev/null @@ -1,106 +0,0 @@ -/* This file is a test for the XSLT engine working on Gdome documents. - * - * Copyright (C) 2002 Claudio Sacerdoti Coen - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please send an email to - */ - -#include -#include -#include -#include -#include - -#include "gdome_xslt.h" - -#define OUTPUT_FILE "../../test_files/output.xml" -#define CORRECT_OUTPUT_FILE "../../test_files/output.xml.correct" - -GdomeDocument* loadDocument(GdomeDOMImplementation *domimpl, char *uri) -{ - GdomeDocument *doc; - GdomeException exc; - - doc = gdome_di_createDocFromURI(domimpl, uri, GDOME_LOAD_PARSING, &exc); - if (doc == NULL) { - fprintf (stderr, - "DOMImplementation.createDocFromURI: failed\n\tException #%d\n", - exc); - } - - return doc; -} - -/* // old version: use gdome serialization -int saveDocument(GdomeDOMImplementation *domimpl, GdomeDocument* doc, char *uri) -{ - GdomeException exc; - - if (!gdome_di_saveDocToFile (domimpl, doc, uri, GDOME_SAVE_STANDARD, &exc)) { - fprintf (stderr, - "DOMImplementation.saveDocToFile: failed\n\tException #%d\n", - exc); - return 0; - } - - return 1; -} -*/ - - /* new version, use libxslt serialization */ -int saveDocument(char* fname, GdomeDocument* result, xsltStylesheetPtr style) { - return saveResultToFilename(fname, result, style, 0); -} - -int main(void) -{ - int bytes; - GdomeDOMImplementation *domimpl; - GdomeDocument *input; - GdomeDocument *style; - xsltStylesheetPtr style_libxslt; - GdomeDocument *output; - GdomeException exc; - const char* params[] = {"parameter1", "'value1'", - "parameter2", "'value2'", - "parameter3", "'value3'", - NULL}; - - domimpl = gdome_di_mkref(); - - if (!(input = loadDocument(domimpl, "../../test_files/input.xml"))) return 1; - if (!(style = loadDocument(domimpl, "../../test_files/stylesheet.xsl"))) return 1; - - style_libxslt = processStylesheet(style); - - output = applyStylesheet(input, style_libxslt, params); - -/* if (!(saveDocument(domimpl, output, "../../test_files/output.xml"))) return 1; */ - bytes = saveDocument("../../test_files/output.xml", output, style_libxslt); - - xsltFreeStylesheet(style_libxslt); - gdome_di_freeDoc (domimpl, input, &exc); - gdome_di_freeDoc (domimpl, style, &exc); - gdome_di_freeDoc (domimpl, output, &exc); - gdome_di_unref (domimpl, &exc); - - printf("The test was successful iff %s is equal to %s\n", - OUTPUT_FILE, - CORRECT_OUTPUT_FILE); - - return 0; -} diff --git a/helm/DEVEL/gdome_xslt/ChangeLog b/helm/DEVEL/gdome_xslt/ChangeLog deleted file mode 100644 index e69de29bb..000000000 diff --git a/helm/DEVEL/gdome_xslt/LICENSE b/helm/DEVEL/gdome_xslt/LICENSE deleted file mode 100644 index cf9b6b997..000000000 --- a/helm/DEVEL/gdome_xslt/LICENSE +++ /dev/null @@ -1,510 +0,0 @@ - - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 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. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations -below. - - When we speak of free software, we are referring to freedom of use, -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 and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. -^L - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it -becomes a de-facto standard. To achieve this, non-free programs must -be allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. -^L - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, 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 library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete 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 distribute a copy of this License along with the -Library. - - 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 Library or any portion -of it, thus forming a work based on the Library, 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) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -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 Library, 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 Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. -^L - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you 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. - - If distribution of 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 satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. -^L - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at least - three years, to give the same user the materials specified in - Subsection 6a, above, for a charge no more than the cost of - performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be 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. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. -^L - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library 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. - - 9. 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 Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -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 with -this License. -^L - 11. 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 Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library 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 Library. - -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. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library 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. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser 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 Library -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 Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. -^L - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -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 - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "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 -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. 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 LIBRARY 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 -LIBRARY (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 LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS -^L - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms -of the ordinary General Public License). - - To apply these terms, attach the following notices to the library. -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 library 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 (at your option) any later version. - - This library 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 library; 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. - -You should also get your employer (if you work as a programmer) or -your school, if any, to sign a "copyright disclaimer" for the library, -if necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James - Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! - - diff --git a/helm/DEVEL/gdome_xslt/LICENSE-INRIA b/helm/DEVEL/gdome_xslt/LICENSE-INRIA deleted file mode 100644 index 0fcaa957d..000000000 --- a/helm/DEVEL/gdome_xslt/LICENSE-INRIA +++ /dev/null @@ -1,13 +0,0 @@ -As a special exception to the GNU Library General Public License, you -may link, statically or dynamically, a "work that uses the Library" -with a publicly distributed version of the Library to produce an -executable file containing portions of the Library, and distribute -that executable file under terms of your choice, without any of the -additional requirements listed in clause 6 of the GNU Library General -Public License. By "a publicly distributed version of the Library", -we mean either the unmodified Library as distributed by INRIA, or a -modified version of the Library that is distributed under the -conditions defined in clause 3 of the GNU Library General Public -License. This exception does not however invalidate any other reasons -why the executable file might be covered by the GNU Library General -Public License. diff --git a/helm/DEVEL/gdome_xslt/Makefile.am b/helm/DEVEL/gdome_xslt/Makefile.am deleted file mode 100644 index 5c36bb5ff..000000000 --- a/helm/DEVEL/gdome_xslt/Makefile.am +++ /dev/null @@ -1,16 +0,0 @@ -DISTDIR = @PACKAGE@-@VERSION@ - -EXTRA_DIST = BUGS LICENSE aclocal.m4 debian/ gdome2-xslt.pc.in gdome2-xslt-cpp-smart.pc.in - -pkgconfigdir = $(libdir)/pkgconfig -pkgconfig_DATA = gdome2-xslt.pc gdome2-xslt-cpp-smart.pc - -## SUBDIRS = C C++ test_files -SUBDIRS = C C++ ocaml test_files - -deb: dist - if [ -d $(DISTDIR)/ ]; then rm -rf $(DISTDIR); else true; fi - tar xvzf $(DISTDIR).tar.gz - (cd $(DISTDIR)/ && debuild) - rm -rf $(DISTDIR) - diff --git a/helm/DEVEL/gdome_xslt/NEWS b/helm/DEVEL/gdome_xslt/NEWS deleted file mode 100644 index e69de29bb..000000000 diff --git a/helm/DEVEL/gdome_xslt/README b/helm/DEVEL/gdome_xslt/README deleted file mode 100644 index e69de29bb..000000000 diff --git a/helm/DEVEL/gdome_xslt/configure.ac b/helm/DEVEL/gdome_xslt/configure.ac deleted file mode 100644 index 89193537a..000000000 --- a/helm/DEVEL/gdome_xslt/configure.ac +++ /dev/null @@ -1,107 +0,0 @@ -dnl Process this file with autoconf to produce a configure script. -AC_INIT -AC_CONFIG_SRCDIR([C/gdome_xslt/gdome_xslt.h]) - -PACKAGE=gdome2-xslt -VERSION=0.0.5 -VERSION_INFO=`echo $VERSION | awk -F. '{ printf "%d:%d:%d", $1+$2, $3, $2 }'` -AC_SUBST(VERSION_INFO) - -AC_PROG_CC -AC_PROG_CXX -AC_PROG_INSTALL - -AM_CONFIG_HEADER(config.h) -AM_INIT_AUTOMAKE($PACKAGE, $VERSION) -AM_PROG_LIBTOOL - -PKG_CHECK_MODULES(GDOME, gdome2 >= 0.7.0,, AC_MSG_ERROR(could not find Gdome2)) -AC_SUBST(GDOME_CFLAGS) -AC_SUBST(GDOME_LIBS) - -PKG_CHECK_MODULES(GMETADOM, gdome2-cpp-smart >= 0.1.8,, AC_MSG_ERROR(could not find GMetaDOM)) -AC_SUBST(GMETADOM_CFLAGS) -AC_SUBST(GMETADOM_LIBS) - -PKG_CHECK_MODULES(LIBXSLT, libxslt,, AC_MSG_ERROR(could not find libxslt)) -AC_SUBST(LIBXSLT_CFLAGS) -AC_SUBST(LIBXSLT_LIBS) - -AC_CHECK_PROG(HAVE_OCAMLC, ocamlc, yes, no) -if test $HAVE_OCAMLC = "no"; then - AC_MSG_ERROR(could not find ocamlc in PATH, please make sure ocaml is installed) -else - OCAMLC=ocamlc - OCAMLSTDLIBDIR="`ocamlc -where`" - OCAMLSTUBDIR="`ocamlc -where`/stublibs" - AC_SUBST(OCAMLC) - AC_SUBST(OCAMLSTDLIBDIR) - AC_SUBST(OCAMLSTUBDIR) -fi - -AC_CHECK_PROG(HAVE_OCAMLOPT, ocamlopt, yes, no) -if test $HAVE_OCAMLOPT = "no"; then - AC_MSG_WARN(ocaml native libraries won't be compiled since ocamlopt was not found) -else - OCAMLOPT=ocamlopt - AC_SUBST(OCAMLOPT) -fi -AM_CONDITIONAL(HAVE_OCAMLOPT_COND, test x$HAVE_OCAMLOPT = xyes) - -AC_CHECK_PROG(HAVE_OCAMLFIND, ocamlfind, yes, no) -if test $HAVE_OCAMLFIND = "no"; then - AC_MSG_ERROR(could not find ocamlfind in PATH, please make sure findlib is installed) -else - OCAMLFIND=ocamlfind - AC_SUBST(OCAMLFIND) -fi - -AC_CHECK_PROG(HAVE_OCAMLDEP, ocamldep, yes, no) -if test $HAVE_OCAMLDEP = "yes"; then - OCAMLDEP=ocamldep - AC_SUBST(OCAMLDEP) -fi - -AC_CHECK_PROG(HAVE_OCAMLMKLIB, ocamlmklib, yes, no) -if test $HAVE_OCAMLMKLIB = "no"; then - AC_MSG_ERROR(could not find ocamlmklib in PATH, please make sure ocamlmklib is installed) -else - OCAMLMKLIB=ocamlmklib - AC_SUBST(OCAMLMKLIB) -fi - -AC_MSG_CHECKING(for gdome2 ocaml binding) -ocamlfind query gdome2 || - AC_MSG_ERROR(gdome2 not installed (according to findlib)) -MLGDOME_CFLAGS="`$OCAMLFIND query -i-format gdome2`" -AC_SUBST(MLGDOME_CFLAGS) - -AC_MSG_CHECKING(for the ocaml library dir) -OCAML_LIB_DIR=`ocamlc -where` -AC_MSG_RESULT($OCAML_LIB_DIR) - -AC_CHECK_FILE(/usr/include/caml/mlvalues.h, - OCAML_INCLUDE_DIR=/usr/include/caml, - OCAML_INCLUDE_DIR=$OCAML_LIB_DIR/caml -) - -AC_SUBST(PACKAGE) -AC_SUBST(VERSION) -AC_SUBST(OCAML_INCLUDE_DIR) - -AC_CONFIG_FILES([ - Makefile - C/Makefile - C/gdome_xslt/Makefile - C/test/Makefile - C++/gdome_xslt/Makefile - C++/test/Makefile - C++/Makefile - ocaml/Makefile - ocaml/gdome_xslt/Makefile - ocaml/gdome_xslt/META - ocaml/test/Makefile - gdome2-xslt.pc - gdome2-xslt-cpp-smart.pc - test_files/Makefile]) -AC_OUTPUT diff --git a/helm/DEVEL/gdome_xslt/debian/changelog b/helm/DEVEL/gdome_xslt/debian/changelog deleted file mode 100644 index 5727e9417..000000000 --- a/helm/DEVEL/gdome_xslt/debian/changelog +++ /dev/null @@ -1,127 +0,0 @@ -gdome2-xslt (0.0.5-1) unstable; urgency=low - - * ocaml binding - - wrapped XSLT stylesheet application in a blocking section so that - it can be interrupted by ocaml exceptions, signals, ... - - -- Stefano Zacchiroli Mon, 14 Jul 2003 16:05:43 +0200 - -gdome2-xslt (0.0.4-7) unstable; urgency=low - - * rebuilt against gmetadom 0.1.10-3 - * debian/control - - strictly depends on gmetadom >= 0.1.10-3 (older version are buggy - on mips) - - -- Stefano Zacchiroli Mon, 14 Jul 2003 11:16:59 +0200 - -gdome2-xslt (0.0.4-6) unstable; urgency=low - - * debian/control - - bumped gmetadom dependencies to >= 0.1.10-2 (to ensure that .pc - is available) - - -- Stefano Zacchiroli Tue, 1 Jul 2003 10:14:14 +0200 - -gdome2-xslt (0.0.4-5) unstable; urgency=low - - * rebuilt using gmetadom 0.1.9 - * debian/control - - added build-dep on pkg-config - - bumped dependencies on gmetadom to 0.1.9 - - bumped standards-version to 3.5.10 - - changed section of -dev packages to libdevel - - added ${misc:Depends} - * debian/rules - - removed DH_COMPAT in favour of debian/compat - - removed dh_movefiles in favour of dh_install - - cosmetic changes - - -- Stefano Zacchiroli Thu, 19 Jun 2003 17:05:47 +0200 - -gdome2-xslt (0.0.4-4) unstable; urgency=low - - * Bugfix: ships also -config script - * Bumped Standards-Version to 3.5.9 - - -- Stefano Zacchiroli Thu, 20 Mar 2003 20:45:27 +0100 - -gdome2-xslt (0.0.4-3) unstable; urgency=low - - * Implemented "high" level functions to set handlers for libxslt error and - debugging messages: setErrorCallback, setDebugCallback (C flavour) - * Implemented binding for the above functions (OCaml flavour) - * Bugfix: installs also i_gdome_xslt.ml, gdome_xslt_init.o - - -- Stefano Zacchiroli Thu, 13 Mar 2003 18:07:22 +0100 - -gdome2-xslt (0.0.4-2) unstable; urgency=low - - * Bugfix: installs also i_gdome_xslt.cmi - - -- Stefano Zacchiroli Wed, 12 Mar 2003 18:28:27 +0100 - -gdome2-xslt (0.0.4-1) unstable; urgency=low - - * New release - * Added a new interface for apply method which requires no arguments - * Bumped gmetadom dependencies to 0.1.6 - * Removed << dependencies on gmetadom - * Bumpetd gdome2 version to 0.7.4 - - -- Stefano Zacchiroli Mon, 10 Mar 2003 17:50:42 +0100 - -gdome2-xslt (0.0.3-3) unstable; urgency=low - - * No longer use virtual dependencies on other ocaml libraries, reverted to - >=/<< dependencies approach - * Bumped dependencies on gmetadom to version 0.1.5 - - -- Stefano Zacchiroli Fri, 24 Jan 2003 13:10:22 +0100 - -gdome2-xslt (0.0.3-2) unstable; urgency=low - - * Use versioned ocaml standard library directory - * Changed deps and build-deps to ocaml-3.06-1 - * Source named changed to gdome2-xslt - * Moved OCaml .so stub in /stublibs - * Moved ocaml stuff in /usr/lib/ocaml/3.06 - * Ship also C and C++ flavours - * Added dep from libgdome2-xslt-ocaml to libgdome2-ocaml - * Added dep from libgdome2-xslt-ocaml-dev to libgdome2-ocaml-dev-0.1.4 - * Added build-dep to libgdome2-cpp-smart-dev - * Provided a better Description - * Bumped Standards-Version to 3.5.8 - * Better test for ocamlopt existence - - -- Stefano Zacchiroli Sun, 8 Dec 2002 16:09:56 +0100 - -libxslt-ocaml (0.0.2-1) unstable; urgency=low - - * Added serialization functions - - -- Stefano Zacchiroli Thu, 28 Nov 2002 17:59:29 +0100 - -libxslt-ocaml (0.0.1-3) unstable; urgency=low - - * Rebuilt with ocaml 3.06 (Closes: Bug#158225, Bug#158217) - * Upgraded Standards-Version to 3.5.6 - * Switched deps and build-deps to ocaml-3.06 and ocaml-base-3.06 - * Switched to debhelper 4 - - -- Stefano Zacchiroli Wed, 28 Aug 2002 11:09:04 +0200 - -libxslt-ocaml (0.0.1-2) unstable; urgency=low - - * Added -fPIC option when compiled some .o in order to succesfully build - also on HPPA (Closes: Bug#142485). - * Renamed binary packages to libgdome2-xslt-ocaml and -dev. - - -- Stefano Zacchiroli Fri, 12 Apr 2002 14:55:57 +0200 - -libxslt-ocaml (0.0.1-1) unstable; urgency=low - - * Initial Release. - - -- Stefano Zacchiroli Sat, 6 Apr 2002 13:00:49 +0200 - diff --git a/helm/DEVEL/gdome_xslt/debian/compat b/helm/DEVEL/gdome_xslt/debian/compat deleted file mode 100644 index b8626c4cf..000000000 --- a/helm/DEVEL/gdome_xslt/debian/compat +++ /dev/null @@ -1 +0,0 @@ -4 diff --git a/helm/DEVEL/gdome_xslt/debian/control b/helm/DEVEL/gdome_xslt/debian/control deleted file mode 100644 index dc84635f4..000000000 --- a/helm/DEVEL/gdome_xslt/debian/control +++ /dev/null @@ -1,56 +0,0 @@ -Source: gdome2-xslt -Section: devel -Priority: optional -Maintainer: Stefano Zacchiroli -Build-Depends: debhelper (>> 4.0.0), ocaml-3.06-1, ocaml-findlib, libgdome2-ocaml-dev (>= 0.1.10-3), libgdome2-dev (>= 0.7.4), libxslt1-dev, libgdome2-cpp-smart-dev (>= 0.1.10-3), pkg-config -Standards-Version: 3.5.10 - -Package: libgdome2-xslt0 -Section: libs -Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends} -Description: Minimal XSLT processor working on GDome2 documents - gdome2-xslt is a very small C library that implements a minimal - XSLT processor that can be used to apply XSLT stylesheets to - gdome2 documents. - . - This package includes shared libraries for the C implementation - and for the C++ bindings. - -Package: libgdome2-xslt-dev -Section: libdevel -Architecture: any -Depends: libgdome2-xslt0 (= ${Source-Version}), libxslt1-dev, libgdome2-dev (>= 0.7.4), libgdome2-cpp-smart-dev (>= 0.1.10-3), ${misc:Depends} -Description: Minimal XSLT processor working on GDome2 documents - gdome2-xslt is a very small C library that implements a minimal - XSLT processor that can be used to apply XSLT stylesheets to - gdome2 documents. - . - This package includes development support files for the C - library and for its C++ bindings. - -Package: libgdome2-xslt-ocaml -Architecture: any -Depends: ocaml-base-3.06-1, libgdome2-ocaml (>= 0.1.10-3), ${shlibs:Depends}, ${misc:Depends} -Description: OCaml bindings for a minimal GDome2 based XSLT processor - gdome2-xslt is a very small C library that implements a minimal - XSLT processor that can be used to apply XSLT stylesheets to - gdome2 documents. - . - This package ships the OCaml language bindings for gdome2-xslt. - . - This package contains only the OCaml shared runtime stub libraries. - -Package: libgdome2-xslt-ocaml-dev -Architecture: any -Section: libdevel -Depends: ocaml-3.06-1, libgdome2-xslt-ocaml (= ${Source-Version}), libgdome2-ocaml-dev (>= 0.1.10-3), libxslt1-dev, libgdome2-dev (>= 0.7.4), ${misc:Depends} -Description: OCaml bindings for a minimal GDome2 based XSLT processor - gdome2-xslt is a very small C library that implements a minimal - XSLT processor that can be used to apply XSLT stylesheets to - gdome2 documents. - . - This package ships the OCaml language bindings for gdome2-xslt. - . - This package contains OCaml development stuff for gdome2-xslt. - diff --git a/helm/DEVEL/gdome_xslt/debian/copyright b/helm/DEVEL/gdome_xslt/debian/copyright deleted file mode 100644 index 5cafed7bd..000000000 --- a/helm/DEVEL/gdome_xslt/debian/copyright +++ /dev/null @@ -1,18 +0,0 @@ -This package was debianized by Stefano Zacchiroli on -Sat, 6 Apr 2002 13:00:49 +0200. - -It was exported from the HELM CVS which is accesible using ViewCVS from: - http://www.cs.unibo.it/helm/ - -Upstream Author: - Claudio Sacerdoti Coen - -Copyright: - - This library 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. - - On a Debian GNU/Linux system, the LGPL can be found as - /usr/share/common-licenses/LGPL-2.1. diff --git a/helm/DEVEL/gdome_xslt/debian/docs b/helm/DEVEL/gdome_xslt/debian/docs deleted file mode 100644 index e69de29bb..000000000 diff --git a/helm/DEVEL/gdome_xslt/debian/libgdome2-xslt-dev.examples b/helm/DEVEL/gdome_xslt/debian/libgdome2-xslt-dev.examples deleted file mode 100644 index 23610114a..000000000 --- a/helm/DEVEL/gdome_xslt/debian/libgdome2-xslt-dev.examples +++ /dev/null @@ -1,2 +0,0 @@ -ocaml/test/test.ml -test_files/* diff --git a/helm/DEVEL/gdome_xslt/debian/libgdome2-xslt-dev.install b/helm/DEVEL/gdome_xslt/debian/libgdome2-xslt-dev.install deleted file mode 100644 index c40374691..000000000 --- a/helm/DEVEL/gdome_xslt/debian/libgdome2-xslt-dev.install +++ /dev/null @@ -1,5 +0,0 @@ -usr/include/ -usr/lib/*.a -usr/lib/*.la -usr/lib/*.so -usr/lib/pkgconfig/ diff --git a/helm/DEVEL/gdome_xslt/debian/libgdome2-xslt-ocaml-dev.dirs b/helm/DEVEL/gdome_xslt/debian/libgdome2-xslt-ocaml-dev.dirs deleted file mode 100644 index 8fd999513..000000000 --- a/helm/DEVEL/gdome_xslt/debian/libgdome2-xslt-ocaml-dev.dirs +++ /dev/null @@ -1 +0,0 @@ -usr/lib/ocaml/3.06 diff --git a/helm/DEVEL/gdome_xslt/debian/libgdome2-xslt-ocaml-dev.examples b/helm/DEVEL/gdome_xslt/debian/libgdome2-xslt-ocaml-dev.examples deleted file mode 100644 index 354012c11..000000000 --- a/helm/DEVEL/gdome_xslt/debian/libgdome2-xslt-ocaml-dev.examples +++ /dev/null @@ -1,3 +0,0 @@ -C/test/test.c -C++/test/main.cc -test_files/* diff --git a/helm/DEVEL/gdome_xslt/debian/libgdome2-xslt-ocaml-dev.install b/helm/DEVEL/gdome_xslt/debian/libgdome2-xslt-ocaml-dev.install deleted file mode 100644 index e7203c324..000000000 --- a/helm/DEVEL/gdome_xslt/debian/libgdome2-xslt-ocaml-dev.install +++ /dev/null @@ -1,3 +0,0 @@ -usr/lib/ocaml/3.06/stublibs/*.owner -usr/lib/ocaml/3.06/stublibs/lib*.so -usr/lib/ocaml/3.06/gdome2-xslt/ diff --git a/helm/DEVEL/gdome_xslt/debian/libgdome2-xslt-ocaml.dirs b/helm/DEVEL/gdome_xslt/debian/libgdome2-xslt-ocaml.dirs deleted file mode 100644 index 8fd999513..000000000 --- a/helm/DEVEL/gdome_xslt/debian/libgdome2-xslt-ocaml.dirs +++ /dev/null @@ -1 +0,0 @@ -usr/lib/ocaml/3.06 diff --git a/helm/DEVEL/gdome_xslt/debian/libgdome2-xslt-ocaml.install b/helm/DEVEL/gdome_xslt/debian/libgdome2-xslt-ocaml.install deleted file mode 100644 index 2dd4e59d9..000000000 --- a/helm/DEVEL/gdome_xslt/debian/libgdome2-xslt-ocaml.install +++ /dev/null @@ -1 +0,0 @@ -usr/lib/ocaml/3.06/stublibs/dll*.so diff --git a/helm/DEVEL/gdome_xslt/debian/libgdome2-xslt0.install b/helm/DEVEL/gdome_xslt/debian/libgdome2-xslt0.install deleted file mode 100644 index 093956b17..000000000 --- a/helm/DEVEL/gdome_xslt/debian/libgdome2-xslt0.install +++ /dev/null @@ -1 +0,0 @@ -usr/lib/*.so.* diff --git a/helm/DEVEL/gdome_xslt/debian/rules b/helm/DEVEL/gdome_xslt/debian/rules deleted file mode 100755 index 6479a0b90..000000000 --- a/helm/DEVEL/gdome_xslt/debian/rules +++ /dev/null @@ -1,58 +0,0 @@ -#!/usr/bin/make -f -# Sample debian/rules that uses debhelper. -# GNU copyright 1997 to 1999 by Joey Hess. - -# Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 - -TARGETDIR = debian/libgdome2-xslt-ocaml-dev -SHARED_LIB_PKG = libgdome2-xslt0 - -configure: configure-stamp -configure-stamp: - dh_testdir - ./configure --prefix=/usr - touch configure-stamp - -build: build-stamp -build-stamp: configure-stamp - dh_testdir - $(MAKE) - touch build-stamp - -clean: - dh_testdir - dh_testroot - rm -f build-stamp configure-stamp - -$(MAKE) clean - dh_clean - -install: build - dh_testdir - dh_testroot - dh_clean -k - dh_installdirs -s - $(MAKE) install DESTDIR=$(CURDIR)/debian/tmp - dh_install --sourcedir=debian/tmp - -binary-arch: build install - dh_testdir - dh_testroot - dh_installdocs -s - dh_installexamples -s - dh_installman -s - dh_installinfo -s - dh_installchangelogs -s - dh_link -s - dh_strip -s - dh_compress -s - dh_fixperms -s - dh_makeshlibs -p $(SHARED_LIB_PKG) - dh_installdeb -s - dh_shlibdeps -s - dh_gencontrol -s - dh_md5sums -s - dh_builddeb -s - -binary: binary-arch -.PHONY: build clean binary-arch binary install configure diff --git a/helm/DEVEL/gdome_xslt/gdome2-xslt-cpp-smart.pc.in b/helm/DEVEL/gdome_xslt/gdome2-xslt-cpp-smart.pc.in deleted file mode 100644 index 0046f27e7..000000000 --- a/helm/DEVEL/gdome_xslt/gdome2-xslt-cpp-smart.pc.in +++ /dev/null @@ -1,14 +0,0 @@ -# This is a comment -prefix=@prefix@ -exec_prefix=@exec_prefix@ -libdir=@libdir@ -includedir=@includedir@ -datadir=@datadir@ - -Name: Gdome2/XSLT C++ Binding -Description: API for applying XSLT stylesheets to Gdome2 documents -Version: @VERSION@ -Requires: gdome2 libxslt -Libs: @LIBXSLT_LIBS@ -L${libdir} -lgdome_xslt_cpp_smart -Cflags: @LIBXSLT_CFLAGS@ -I${includedir}/@PACKAGE@ - diff --git a/helm/DEVEL/gdome_xslt/gdome2-xslt.pc.in b/helm/DEVEL/gdome_xslt/gdome2-xslt.pc.in deleted file mode 100644 index 88df34a8d..000000000 --- a/helm/DEVEL/gdome_xslt/gdome2-xslt.pc.in +++ /dev/null @@ -1,14 +0,0 @@ -# This is a comment -prefix=@prefix@ -exec_prefix=@exec_prefix@ -libdir=@libdir@ -includedir=@includedir@ -datadir=@datadir@ - -Name: Gdome2/XSLT C Binding -Description: API for applying XSLT stylesheets to Gdome2 documents -Version: @VERSION@ -Requires: gdome2 libxslt -Libs: @LIBXSLT_LIBS@ -L${libdir} -lgdome_xslt -Cflags: @LIBXSLT_CFLAGS@ -I${includedir}/@PACKAGE@ - diff --git a/helm/DEVEL/gdome_xslt/ocaml/.cvsignore b/helm/DEVEL/gdome_xslt/ocaml/.cvsignore deleted file mode 100644 index 282522db0..000000000 --- a/helm/DEVEL/gdome_xslt/ocaml/.cvsignore +++ /dev/null @@ -1,2 +0,0 @@ -Makefile -Makefile.in diff --git a/helm/DEVEL/gdome_xslt/ocaml/Makefile.am b/helm/DEVEL/gdome_xslt/ocaml/Makefile.am deleted file mode 100644 index 30e2ce870..000000000 --- a/helm/DEVEL/gdome_xslt/ocaml/Makefile.am +++ /dev/null @@ -1 +0,0 @@ -SUBDIRS = gdome_xslt test diff --git a/helm/DEVEL/gdome_xslt/ocaml/gdome_xslt/.cvsignore b/helm/DEVEL/gdome_xslt/ocaml/gdome_xslt/.cvsignore deleted file mode 100644 index 68ade6c12..000000000 --- a/helm/DEVEL/gdome_xslt/ocaml/gdome_xslt/.cvsignore +++ /dev/null @@ -1,23 +0,0 @@ -META -Makefile -Makefile.in -config.cache -config.log -config.status -configure -gdome2-xslt.cma -gdome_xslt.cmi -gdome_xslt.cmo -gdome_xslt.cmx -gdome2-xslt.cmxa -gdome_xslt.o -gdome_xslt_init.cmi -gdome_xslt_init.cmo -gdome_xslt_init.cmx -gdome_xslt_init.o -i_gdome_xslt.cmi -i_gdome_xslt.cmo -i_gdome_xslt.cmx -i_gdome_xslt.o -ml_gdome_xslt.o -.deps diff --git a/helm/DEVEL/gdome_xslt/ocaml/gdome_xslt/.depend b/helm/DEVEL/gdome_xslt/ocaml/gdome_xslt/.depend deleted file mode 100644 index 519df4ba6..000000000 --- a/helm/DEVEL/gdome_xslt/ocaml/gdome_xslt/.depend +++ /dev/null @@ -1,5 +0,0 @@ -gdome_xslt.cmo: i_gdome_xslt.cmo gdome_xslt.cmi -gdome_xslt.cmx: i_gdome_xslt.cmx gdome_xslt.cmi -gdome_xslt_init.cmo: i_gdome_xslt.cmo gdome_xslt_init.cmi -gdome_xslt_init.cmx: i_gdome_xslt.cmx gdome_xslt_init.cmi -gdome_xslt.cmi: i_gdome_xslt.cmo diff --git a/helm/DEVEL/gdome_xslt/ocaml/gdome_xslt/META.in b/helm/DEVEL/gdome_xslt/ocaml/gdome_xslt/META.in deleted file mode 100644 index e5c9b19a1..000000000 --- a/helm/DEVEL/gdome_xslt/ocaml/gdome_xslt/META.in +++ /dev/null @@ -1,4 +0,0 @@ -requires="gdome2" -version="@VERSION@" -archive(byte)="mlgdome2-xslt.cma gdome_xslt_init.cmo" -archive(native)="mlgdome2-xslt.cmxa gdome_xslt_init.cmx" diff --git a/helm/DEVEL/gdome_xslt/ocaml/gdome_xslt/Makefile.am b/helm/DEVEL/gdome_xslt/ocaml/gdome_xslt/Makefile.am deleted file mode 100644 index 3524a9f1d..000000000 --- a/helm/DEVEL/gdome_xslt/ocaml/gdome_xslt/Makefile.am +++ /dev/null @@ -1,119 +0,0 @@ - -ARCHIVE = mlgdome2-xslt -PKGNAME = gdome2-xslt -OCAMLINSTALLDIR = $(DESTDIR)$(OCAMLSTDLIBDIR)/$(PKGNAME) -STUBSDIR = $(DESTDIR)$(OCAMLSTUBDIR) -OCAMLFLAGS = -I +gdome2 -OCAMLC = @OCAMLC@ ${OCAMLFLAGS} -OCAMLOPT = @OCAMLOPT@ ${OCAMLFLAGS} -OCAMLDEP = @OCAMLDEP@ -OCAML_CFLAGS = @OCAML_CFLAGS@ -OCAMLFIND = @OCAMLFIND@ -OCAMLMKLIB = ocamlmklib -DLL = dll$(ARCHIVE).so - -CLEANFILES = \ - $(ARCHIVE).cma $(ARCHIVE).cmxa $(ARCHIVE).a lib$(ARCHIVE).a $(DLL) \ - *.cmo *.cmx *.cmi - -EXTRA_DIST = \ - META.in .depend \ - gdome_xslt.ml gdome_xslt.mli gdome_xslt_init.ml gdome_xslt_init.mli \ - i_gdome_xslt.ml \ - ocaml-io.h - -if HAVE_OCAMLOPT_COND -noinst_DATA = \ - $(ARCHIVE).cma $(DLL) $(ARCHIVE).cmxa $(ARCHIVE).a lib$(ARCHIVE).a \ - gdome_xslt_init.cmo gdome_xslt_init.cmx -else -noinst_DATA = \ - $(ARCHIVE).cma $(DLL) gdome_xslt_init.cmo lib$(ARCHIVE).a -endif - -noinst_LTLIBRARIES = libmlgdome2-xslt.la -C_SRC = ml_gdome_xslt.c -libmlgdome2_xslt_la_SOURCES = $(C_SRC) - -O_S = $(C_SRC:%.c=%.o) -LO_S = $(O_S:%.o=%.lo) $(top_builddir)/C/gdome_xslt/gdome_xslt.lo -CMA_DEPS = i_gdome_xslt.cmo gdome_xslt.cmo -CMXA_DEPS = $(CMA_DEPS:%.cmo=%.cmx) -SHARED_LIBS = -lxslt -lgdome -lglib -lxml2 -lmlgdome - -$(ARCHIVE).cma: $(CMA_DEPS) - $(OCAMLMKLIB) -o $(ARCHIVE) -L@OCAMLSTUBDIR@ $(CMA_DEPS) $(SHARED_LIBS) - -$(ARCHIVE).cmxa: $(CMXA_DEPS) - $(OCAMLMKLIB) -o $(ARCHIVE) -L@OCAMLSTUBDIR@ $(CMXA_DEPS) $(SHARED_LIBS) - -$(DLL) lib$(ARCHIVE).a: $(LO_S) - # use .lo for ocamlmklib - for f in $(LO_S); do \ - cp $$f $$f.o; \ - done - $(OCAMLMKLIB) -o $(ARCHIVE) -L@OCAMLSTUBDIR@ $(LO_S:%=%.o) $(SHARED_LIBS) - for f in $(LO_S:%=%.o); do \ - rm $$f; \ - done - -INCLUDES = $(GDOME_CFLAGS) $(MLGDOME_CFLAGS) -I/usr/include/caml -I$(top_srcdir)/C/gdome_xslt - -BYTECODE_STUFF = \ - $(ARCHIVE).cma $(DLL) i_gdome_xslt.cmi i_gdome_xslt.ml gdome_xslt.cmi \ - gdome_xslt.mli gdome_xslt_init.cmi gdome_xslt_init.mli gdome_xslt_init.cmo \ - lib$(ARCHIVE).a -NATIVECODE_STUFF = \ - $(ARCHIVE).cmxa $(ARCHIVE).a gdome_xslt_init.cmx gdome_xslt_init.o -if HAVE_OCAMLOPT_COND -install-data-local: $(BYTECODE_STUFF) $(NATIVECODE_STUFF) -else -install-data-local: $(BYTECODE_STUFF) -endif - $(mkinstalldirs) $(OCAMLINSTALLDIR) $(STUBSDIR) - chmod -x $(DLL) - for i in $^; do \ - if [ "$$i" != "$(DLL)" ]; then \ - $(INSTALL_DATA) $$i $(OCAMLINSTALLDIR)/$$i; \ - fi \ - done - if [ "x$(OCAMLFIND)" != "x" ]; then \ - mv $(OCAMLINSTALLDIR) $(OCAMLINSTALLDIR).saved; \ - $(OCAMLFIND) install -destdir $(DESTDIR)$(OCAMLSTDLIBDIR)/ $(PKGNAME) META $(DLL); \ - $(INSTALL_DATA) $(OCAMLINSTALLDIR).saved/* $(OCAMLINSTALLDIR)/; \ - rm -rf $(OCAMLINSTALLDIR).saved/; \ - else \ - $(INSTALL_DATA) $(DLL) $(STUBSDIR); \ - fi - ln -fs $(DLL) $(STUBSDIR)/lib$(ARCHIVE).so - -uninstall-local: - if [ "x$(OCAMLFIND)" != "x" ]; then \ - $(OCAMLFIND) remove -destdir $(DESTDIR)$(OCAMLSTDLIBDIR)/ $(PKGNAME); \ - else \ - rm -rf $(OCAMLINSTALLDIR); \ - rm $(STUBSDIR)/$(DLL); \ - fi - rm $(STUBSDIR)/lib$(ARCHIVE).so - -#### OCaml only stuff from now on - -DEPOBJS = *.ml *.mli - -depend: - $(OCAMLDEP) $(DEPOBJS) > .depend - -%.cmi : $(srcdir)/%.mli - if test ! -e $(@:%.cmi=%.mli) -a "x$(srcdir)" != "x." ; then $(LN_S) $< . ; fi - $(OCAMLC) -c $(@:%.cmi=%.mli) - -%.cmo : $(srcdir)/%.ml - if test ! -e $(@:%.cmo=%.ml) -a "x$(srcdir)" != "x." ; then $(LN_S) $< . ; fi - $(OCAMLC) -c $(@:%.cmo=%.ml) - -%.cmx %.o : $(srcdir)/%.ml - if test ! -e $(@:%.cmx=%.ml) -a "x$(srcdir)" != "x." ; then $(LN_S) $< . ; fi - $(OCAMLOPT) -c $(@:%.cmx=%.ml) - -include .depend - diff --git a/helm/DEVEL/gdome_xslt/ocaml/gdome_xslt/gdome_xslt.ml b/helm/DEVEL/gdome_xslt/ocaml/gdome_xslt/gdome_xslt.ml deleted file mode 100644 index b64a006b4..000000000 --- a/helm/DEVEL/gdome_xslt/ocaml/gdome_xslt/gdome_xslt.ml +++ /dev/null @@ -1,59 +0,0 @@ -(* This file is part of an ocaml binding of an XSLT engine working on Gdome - * documents. - * - * The code is largely based on the code of T.J. Mather's XML::GDOME::XSLT - * Perl module (http://kobesearch.cpan.org/search?dist=XML-GDOME-XSLT) - * - * Copyright (C) 2002: - * Claudio Sacerdoti Coen - * Stefano Zacchiroli - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please send an email to {sacerdot,zack}@cs.unibo.it - *) - -let processStylesheet style = - I_gdome_xslt.processStylesheet style#as_Document -;; - -let applyStylesheet ~source ~stylesheet ~params = - let res = - I_gdome_xslt.applyStylesheet ~source:(source#as_Document) ~stylesheet - ~params - in - new Gdome.document res -;; - -let saveResultToChannel ~outchan ~result ~stylesheet = - I_gdome_xslt.saveResultToChannel - ~outchan - ~result:result#as_Document - ~stylesheet -;; - -let setErrorCallback = function - | None -> I_gdome_xslt.disableErrorCallback () - | Some (callback: string -> unit) -> - Callback.register "error_callback" callback; - I_gdome_xslt.enableErrorCallback () -;; -let setDebugCallback = function - | None -> I_gdome_xslt.disableDebugCallback () - | Some (callback: string -> unit) -> - Callback.register "debug_callback" callback; - I_gdome_xslt.enableDebugCallback () -;; - diff --git a/helm/DEVEL/gdome_xslt/ocaml/gdome_xslt/gdome_xslt.mli b/helm/DEVEL/gdome_xslt/ocaml/gdome_xslt/gdome_xslt.mli deleted file mode 100644 index 8115457f3..000000000 --- a/helm/DEVEL/gdome_xslt/ocaml/gdome_xslt/gdome_xslt.mli +++ /dev/null @@ -1,59 +0,0 @@ -(* This file is part of an ocaml binding of an XSLT engine working on Gdome - * documents. - * - * The code is largely based on the code of T.J. Mather's XML::GDOME::XSLT - * Perl module (http://kobesearch.cpan.org/search?dist=XML-GDOME-XSLT) - * - * Copyright (C) 2002: - * Claudio Sacerdoti Coen - * Stefano Zacchiroli - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please send an email to {sacerdot,zack}@cs.unibo.it - *) - -(* processStylesheet stylesheet *) -(* Process a stylesheet so that it can be subsequently used *) -(* with applyStylesheet. *) -val processStylesheet: - Gdome.document -> - I_gdome_xslt.processed_stylesheet - -(* applyStylesheet source stylesheet params *) -(* Applies a processed stylesheet to a source document, using *) -(* the given list of parameters (couples name,value) *) -val applyStylesheet: - source: Gdome.document -> - stylesheet:I_gdome_xslt.processed_stylesheet -> - params:(string * string) list -> - Gdome.document - -(* output the result of a previous XSLT transformation to an *) -(* output channel *) -val saveResultToChannel: - outchan: out_channel -> - result: Gdome.document -> - stylesheet: I_gdome_xslt.processed_stylesheet -> - unit - -(** set error callback, that is a function invoked each time an error message is -generated. If None is passed, libxslt default error callback is used *) -val setErrorCallback: (string -> unit) option -> unit - -(** set debug callback, that is a function invoked each time a debugging message -is generated. If None is passed, libxslt default error callback is used *) -val setDebugCallback: (string -> unit) option -> unit - diff --git a/helm/DEVEL/gdome_xslt/ocaml/gdome_xslt/gdome_xslt_init.ml b/helm/DEVEL/gdome_xslt/ocaml/gdome_xslt/gdome_xslt_init.ml deleted file mode 100644 index e7da4e02d..000000000 --- a/helm/DEVEL/gdome_xslt/ocaml/gdome_xslt/gdome_xslt_init.ml +++ /dev/null @@ -1,41 +0,0 @@ -(* This file is part of an ocaml binding of an XSLT engine working on Gdome - * documents. - * - * The code is largely based on the code of T.J. Mather's XML::GDOME::XSLT - * Perl module (http://kobesearch.cpan.org/search?dist=XML-GDOME-XSLT) - * - * Copyright (C) 2002: - * Claudio Sacerdoti Coen - * Stefano Zacchiroli - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please send an email to {sacerdot,zack}@cs.unibo.it - *) - -exception ProcessStylesheetException -exception ApplyStylesheetException - -let _ = - Callback.register_exception - "ProcessStylesheetException" ProcessStylesheetException -;; - -let _ = - Callback.register_exception - "ApplyStylesheetException" ApplyStylesheetException -;; - -I_gdome_xslt.setXsltMaxDepth 2000;; diff --git a/helm/DEVEL/gdome_xslt/ocaml/gdome_xslt/gdome_xslt_init.mli b/helm/DEVEL/gdome_xslt/ocaml/gdome_xslt/gdome_xslt_init.mli deleted file mode 100644 index d3e6d670e..000000000 --- a/helm/DEVEL/gdome_xslt/ocaml/gdome_xslt/gdome_xslt_init.mli +++ /dev/null @@ -1,37 +0,0 @@ -(* This file is part of an ocaml binding of an XSLT engine working on Gdome - * documents. - * - * The code is largely based on the code of T.J. Mather's XML::GDOME::XSLT - * Perl module (http://kobesearch.cpan.org/search?dist=XML-GDOME-XSLT) - * - * Copyright (C) 2002: - * Claudio Sacerdoti Coen - * Stefano Zacchiroli - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please send an email to {sacerdot,zack}@cs.unibo.it - *) - -(**************************** WARNING!!! ***********************************) -(*** ***) -(*** This file must always be linked with any code using gdome_xslt and ***) -(*** must be linked as the first file. It is responsible of initializing ***) -(*** the whole binding, registering some ocaml values to the C level. ***) -(*** ***) -(***************************************************************************) - -exception ProcessStylesheetException -exception ApplyStylesheetException diff --git a/helm/DEVEL/gdome_xslt/ocaml/gdome_xslt/i_gdome_xslt.ml b/helm/DEVEL/gdome_xslt/ocaml/gdome_xslt/i_gdome_xslt.ml deleted file mode 100644 index 6f686c482..000000000 --- a/helm/DEVEL/gdome_xslt/ocaml/gdome_xslt/i_gdome_xslt.ml +++ /dev/null @@ -1,58 +0,0 @@ -(* This file is part of an ocaml binding of an XSLT engine working on Gdome - * documents. - * - * The code is largely based on the code of T.J. Mather's XML::GDOME::XSLT - * Perl module (http://kobesearch.cpan.org/search?dist=XML-GDOME-XSLT) - * - * Copyright (C) 2002: - * Claudio Sacerdoti Coen - * Stefano Zacchiroli - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please send an email to {sacerdot,zack}@cs.unibo.it - *) - -type processed_stylesheet - -external setXsltMaxDepth: - int -> - unit - = "setXsltMaxDepth" - -external processStylesheet: - [> `Document] GdomeT.t -> - processed_stylesheet - = "ml_processStylesheet" - -external applyStylesheet: - source: [> `Document] GdomeT.t -> - stylesheet: processed_stylesheet -> - params: (string * string) list -> - TDocument.t - = "ml_applyStylesheet" - -external saveResultToChannel: - outchan: out_channel -> - result: TDocument.t -> - stylesheet: processed_stylesheet -> - unit - = "ml_saveResultToChannel" - -external enableErrorCallback : unit -> unit = "ml_enableErrorCallback" -external disableErrorCallback : unit -> unit = "ml_disableErrorCallback" -external enableDebugCallback : unit -> unit = "ml_enableDebugCallback" -external disableDebugCallback : unit -> unit = "ml_disableDebugCallback" - diff --git a/helm/DEVEL/gdome_xslt/ocaml/gdome_xslt/ml_gdome_xslt.c b/helm/DEVEL/gdome_xslt/ocaml/gdome_xslt/ml_gdome_xslt.c deleted file mode 100644 index 225698a79..000000000 --- a/helm/DEVEL/gdome_xslt/ocaml/gdome_xslt/ml_gdome_xslt.c +++ /dev/null @@ -1,186 +0,0 @@ -/* This file is part of an ocaml binding of an XSLT engine working on Gdome - * documents. - * - * The code is largely based on the code of T.J. Mather's XML::GDOME::XSLT - * Perl module (http://kobesearch.cpan.org/search?dist=XML-GDOME-XSLT) - * - * Copyright (C) 2002: - * Claudio Sacerdoti Coen - * Stefano Zacchiroli - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please send an email to {sacerdot,zack}@cs.unibo.it - */ - -#include - -#include -#include -#include -#include - -#include -#include - -#include "ocaml-io.h" -#include "mlgdomevalue.h" -#include "gdome_xslt.h" - -xsltStylesheetPtr XsltStylesheetPtr_val(value); - -static void ml_xsltFreeStylesheet(value v) -{ - xsltFreeStylesheet(XsltStylesheetPtr_val(v)); -} - -xsltStylesheetPtr XsltStylesheetPtr_val(value v) -{ - CAMLparam1(v); - xsltStylesheetPtr res = *((xsltStylesheetPtr*) Data_custom_val(v)); - CAMLreturn(res); -} - -value Val_XsltStylesheetPtr(xsltStylesheetPtr obj) -{ - CAMLparam0(); - CAMLlocal1(v); - static struct custom_operations ops = { - "http://www.cs.unibo.it/helm/gdome_xslt/XsltStylesheetPtr", - ml_xsltFreeStylesheet, - custom_compare_default, - custom_hash_default, - custom_serialize_default, - custom_deserialize_default - }; - - v = alloc_custom(&ops, sizeof(xsltStylesheetPtr), 0, 1); - *((xsltStylesheetPtr*) Data_custom_val(v)) = obj; - - CAMLreturn(v); -} - -value ml_processStylesheet(value style) -{ - CAMLparam1(style); - xsltStylesheetPtr res; - res = processStylesheet(Document_val(style)); - if (res == NULL) { - value* excp; - excp = caml_named_value("ProcessStylesheetException"); - assert(excp != NULL); - raise_constant(*excp); - } - CAMLreturn(Val_XsltStylesheetPtr(res)); -} - -value setXsltMaxDepth(value depth) -{ - CAMLparam1(depth); - xsltMaxDepth = Int_val(depth); - CAMLreturn0; -} - -value ml_applyStylesheet(value source, value style, value params) -{ - CAMLparam3(source,style,params); - CAMLlocal1(list); - GdomeDocument* res; - int i; - const char** c_params; - - i = 0 ; list = params; - while(list != Val_int(0)) { - list = Field(list,1); - i++; - } - c_params = (const char **)malloc(sizeof(char *) * (i * 2 + 1)); - - i = 0; list = params; - while(list != Val_int(0)) { - c_params[i] = String_val(Field(Field(list,0),0)); - c_params[i+1] = String_val(Field(Field(list,0),1)); - list = Field(list,1); - i+=2; - } - c_params[i] = NULL; - enter_blocking_section(); - res = applyStylesheet(Document_val(source), - XsltStylesheetPtr_val(style), - c_params); - leave_blocking_section(); - free(c_params); - if (res == NULL) { - value* excp; - excp = caml_named_value("ApplyStylesheetException"); - assert(excp != NULL); - raise_constant(*excp); - } - CAMLreturn(Val_Document(res)); -} - -value ml_saveResultToChannel(value channel, - value result, - value stylesheet) -{ - CAMLparam3(channel, result, stylesheet); - - saveResultToFd((Channel(channel))->fd, - Document_val(result), - XsltStylesheetPtr_val(stylesheet)); - - CAMLreturn0; -} - - /* error callback handling */ - -static void ml_gdomeXsltErrorCallback(const char *msg) { - callback(*caml_named_value("error_callback"), copy_string(msg)); - - return; -} - -value ml_enableErrorCallback(value unit) { - CAMLparam1(unit); - setErrorCallback(ml_gdomeXsltErrorCallback); - CAMLreturn(Val_unit); -} - -value ml_disableErrorCallback(value unit) { - CAMLparam1(unit); - setErrorCallback(NULL); - CAMLreturn(Val_unit); -} - - /* debug callback handling */ - -static void ml_gdomeXsltDebugCallback(const char *msg) { - callback(*caml_named_value("debug_callback"), copy_string(msg)); - - return; -} - -value ml_enableDebugCallback(value unit) { - CAMLparam1(unit); - setDebugCallback(ml_gdomeXsltDebugCallback); - CAMLreturn(Val_unit); -} - -value ml_disableDebugCallback(value unit) { - CAMLparam1(unit); - setDebugCallback(NULL); - CAMLreturn(Val_unit); -} - diff --git a/helm/DEVEL/gdome_xslt/ocaml/gdome_xslt/ml_gdome_xslt.h b/helm/DEVEL/gdome_xslt/ocaml/gdome_xslt/ml_gdome_xslt.h deleted file mode 100644 index a173bc97f..000000000 --- a/helm/DEVEL/gdome_xslt/ocaml/gdome_xslt/ml_gdome_xslt.h +++ /dev/null @@ -1,40 +0,0 @@ -/* This file is part of an ocaml binding of an XSLT engine working on Gdome - * documents. - * - * The code is largely based on the code of T.J. Mather's XML::GDOME::XSLT - * Perl module (http://kobesearch.cpan.org/search?dist=XML-GDOME-XSLT) - * - * Copyright (C) 2002: - * Claudio Sacerdoti Coen - * Stefano Zacchiroli - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please send an email to {sacerdot,zack}@cs.unibo.it - */ - -xsltStylesheetPtr XsltStylesheetPtr_val(value); -value Val_XsltStylesheetPtr(xsltStylesheetPtr); - -value ml_processStylesheet(value style); -value ml_applyStylesheet(value source, value style, value params); - -value ml_saveResultToChannel(value channel, value result, value stylesheet); - -value ml_enableErrorCallback(value unit); -value ml_disableErrorCallback(value unit); -value ml_enableDebugCallback(value unit); -value ml_disableDebugCallback(value unit); - diff --git a/helm/DEVEL/gdome_xslt/ocaml/gdome_xslt/ocaml-io.h b/helm/DEVEL/gdome_xslt/ocaml/gdome_xslt/ocaml-io.h deleted file mode 100644 index 6ce9493c8..000000000 --- a/helm/DEVEL/gdome_xslt/ocaml/gdome_xslt/ocaml-io.h +++ /dev/null @@ -1,54 +0,0 @@ -/**********************************************************************/ -/* */ -/* Objective Caml */ -/* */ -/* Xavier Leroy, projet Cristal, INRIA Rocquencourt */ -/* */ -/* Copyright 1996 Institut National de Recherche en Informatique et */ -/* en Automatique. All rights reserved. This file is distributed */ -/* under the terms of the GNU Library General Public License, with */ -/* the special exception on linking described in file */ -/* ../../LICENSE-INRIA. */ -/* */ -/**********************************************************************/ - -/* Buffered input/output */ - -#ifndef __IO_H__ -#define __IO_H__ - -#ifndef IO_BUFFER_SIZE -#define IO_BUFFER_SIZE 4096 -#endif - -typedef long file_offset; - -struct channel { - int fd; /* Unix file descriptor */ - file_offset offset; /* Absolute position of fd in the file */ - char * end; /* Physical end of the buffer */ - char * curr; /* Current position in the buffer */ - char * max; /* Logical end of the buffer (for input) */ - void * mutex; /* Placeholder for mutex (for systhreads) */ - struct channel * next; /* Linear chaining of channels (flush_all) */ - int revealed; /* For Cash only */ - int old_revealed; /* For Cash only */ - int refcount; /* For flush_all and for Cash */ - char buff[IO_BUFFER_SIZE]; /* The buffer itself */ -}; - -/* For an output channel: - [offset] is the absolute position of the beginning of the buffer [buff]. - For an input channel: - [offset] is the absolute position of the logical end of the buffer, [max]. -*/ - -/* Functions and macros that can be called from C. Take arguments of - type struct channel *. No locking is performed. */ - -/* Extract a struct channel * from the heap object representing it */ - -#define Channel(v) (*((struct channel **) (Data_custom_val(v)))) - -#endif /* __IO_H__ */ - diff --git a/helm/DEVEL/gdome_xslt/ocaml/test/.cvsignore b/helm/DEVEL/gdome_xslt/ocaml/test/.cvsignore deleted file mode 100644 index fb5d24d4f..000000000 --- a/helm/DEVEL/gdome_xslt/ocaml/test/.cvsignore +++ /dev/null @@ -1,8 +0,0 @@ -test.cmi -test.cmo -test.cmx -test.o -test -test.opt -Makefile -Makefile.in diff --git a/helm/DEVEL/gdome_xslt/ocaml/test/Makefile.am b/helm/DEVEL/gdome_xslt/ocaml/test/Makefile.am deleted file mode 100644 index 58be30f90..000000000 --- a/helm/DEVEL/gdome_xslt/ocaml/test/Makefile.am +++ /dev/null @@ -1,24 +0,0 @@ -REQUIRES = gdome2 -OCAMLFIND = @OCAMLFIND@ -OCAMLC = $(OCAMLFIND) @OCAMLC@ -package "$(REQUIRES)" -OCAMLOPT = $(OCAMLFIND) @OCAMLOPT@ -package "$(REQUIRES)" -CMA = $(top_builddir)/ocaml/gdome_xslt/mlgdome2-xslt.cma -CMXA = $(top_builddir)/ocaml/gdome_xslt/mlgdome2-xslt.cmxa -INIT_CMO = $(top_builddir)/ocaml/gdome_xslt/gdome_xslt_init.cmo -INIT_CMX = $(top_builddir)/ocaml/gdome_xslt/gdome_xslt_init.cmx -OCAMLC_FLAGS = -I $(top_builddir)/ocaml/gdome_xslt/ - -EXTRA_DIST = test.ml -CLEANFILES = test{,.o,.opt} test.cm[iox] - -if HAVE_OCAMLOPT_COND -noinst_DATA = test.opt test -else -noinst_DATA = test -endif - -test: test.ml $(CMA) $(INIT_CMO) - $(OCAMLC) -o $@ -linkpkg $(OCAMLC_FLAGS) $(CMA) $(INIT_CMO) $< -test.opt: test.ml $(CMXA) $(INIT_CMX) - $(OCAMLOPT) -o $@ -linkpkg $(OCAMLC_FLAGS) $(CMXA) $(INIT_CMX) $< - diff --git a/helm/DEVEL/gdome_xslt/ocaml/test/test.ml b/helm/DEVEL/gdome_xslt/ocaml/test/test.ml deleted file mode 100644 index 4cd103435..000000000 --- a/helm/DEVEL/gdome_xslt/ocaml/test/test.ml +++ /dev/null @@ -1,79 +0,0 @@ -(* This file is part of an ocaml binding of an XSLT engine working on Gdome - * documents. - * - * The code is largely based on the code of T.J. Mather's XML::GDOME::XSLT - * Perl module (http://kobesearch.cpan.org/search?dist=XML-GDOME-XSLT) - * - * Copyright (C) 2002 Claudio Sacerdoti Coen - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please send an email to - *) - -let (output_file, - correct_output_file, - input_file, - stylesheet_file) = - ("../../test_files/output.xml", - "../../test_files/output.xml.correct", - "../../test_files/input.xml", - "../../test_files/stylesheet.xsl") -in -let domImpl = Gdome.domImplementation () in - let input = - domImpl#createDocumentFromURI ~uri:input_file () - and style = - domImpl#createDocumentFromURI ~uri:stylesheet_file () - in - (* First of all, let's try the exception handling machinery *) - let _ = - try - ignore (Gdome_xslt.processStylesheet input); - assert false (* previous line should rise an exception *) - with - Gdome_xslt_init.ProcessStylesheetException -> () - in - let pstyle = Gdome_xslt.processStylesheet style in - let output = - Gdome_xslt.applyStylesheet input pstyle - ["parameter1","'value1'" ; - "parameter2","'value2'" ; - "parameter3","'value3'" - ] - in -(* (* old version: use gdome serialization functions *) - let res = - domImpl#saveDocumentToFile ~doc:output ~name:output_file () - in - if not res then - prerr_endline ("Error saving to document " ^ output_file) - else - begin - Printf.printf - "The test was successful iff %s is equal to %s\n" - output_file - correct_output_file - end -*) - (* new version: use libxslt serialization functions *) - let outchan = open_out output_file in - Gdome_xslt.saveResultToChannel ~outchan ~result:output ~stylesheet:pstyle; - close_out outchan; - Printf.printf - "The test was successful iff %s is equal to %s\n" - output_file - correct_output_file -;; diff --git a/helm/DEVEL/gdome_xslt/test_files/.cvsignore b/helm/DEVEL/gdome_xslt/test_files/.cvsignore deleted file mode 100644 index d1e494380..000000000 --- a/helm/DEVEL/gdome_xslt/test_files/.cvsignore +++ /dev/null @@ -1,3 +0,0 @@ -output.xml -Makefile -Makefile.in diff --git a/helm/DEVEL/gdome_xslt/test_files/Makefile.am b/helm/DEVEL/gdome_xslt/test_files/Makefile.am deleted file mode 100644 index ead191b52..000000000 --- a/helm/DEVEL/gdome_xslt/test_files/Makefile.am +++ /dev/null @@ -1 +0,0 @@ -EXTRA_DIST = input.xml output.xml.correct stylesheet.xsl diff --git a/helm/DEVEL/gdome_xslt/test_files/input.xml b/helm/DEVEL/gdome_xslt/test_files/input.xml deleted file mode 100644 index b6ffa38fd..000000000 --- a/helm/DEVEL/gdome_xslt/test_files/input.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - It works! - diff --git a/helm/DEVEL/gdome_xslt/test_files/output.xml.correct b/helm/DEVEL/gdome_xslt/test_files/output.xml.correct deleted file mode 100644 index c4adda3d7..000000000 --- a/helm/DEVEL/gdome_xslt/test_files/output.xml.correct +++ /dev/null @@ -1,4 +0,0 @@ - -value2value3value1 - It works! - diff --git a/helm/DEVEL/gdome_xslt/test_files/stylesheet.xsl b/helm/DEVEL/gdome_xslt/test_files/stylesheet.xsl deleted file mode 100644 index ca4534e12..000000000 --- a/helm/DEVEL/gdome_xslt/test_files/stylesheet.xsl +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0-1.i386.rpm b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0-1.i386.rpm deleted file mode 100644 index 78f0a3b12657315d93184d7ff4aed060628d20e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1476108 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%0A}R8(xj)i$`fl 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μ+-ft+!us5XVV*8ugVSkN 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 !q zn}gB3a=qn#_}Ife%G9#H(JGQ~y)~JIj>`s|YL(b3nNjt9rGNzyQnH#Gn-|kN3?J}U zbTQM|$!dnXW<6f{gHjVNoo{0ucI(%TK{J=<&LNj%%Gd~&h?W$sM=R$mekVwik-Q-v zBl&ZwBhL3U&rrg<(jz1fVc*ZN$x+o#G@t*^_9(=&Du-=|zBnZ0@0Z(8c1O=+QOFcq z&U4fs%^}u>xrEj{xa7US=UfADaLgwqILisMW|_hbs)VUN&dvET^MZ=#zQ!c_|O>IEiE(>*>cMWi`0wD);M z$GOI^NvBHUmx;q@7ox+prfd3}Axt1G`zq^tnJ!si_I8GhW4dgi*)Gf?Nd%)YOzvqY zwz#2{QJQ7v(EXu_)l+J6$fWesSeHp||DkRrcF|!LTbhqXK2LZ6dE*2pN@J=nkN#R* z3DA3}5GZvplo~rZg~!D9#G`*vNJee-%OsUO2fMJf4}i+wmS-VgKbCRW)N@qO6jsw4 z-zOvx@7`P67&g~s7NDjHXAiHFum9f=&E>sYb{H^XiB>Z$!9ykVyJxDL%(@1XZ?{|; z93nqDp+Ft0cB{ff{MY<8UPD3ZLJ@4L$Rv-#D?>oi5mbVN|2=B^W|emH+1S{>O#(h& z^`#TuT>LV6`0EgZ&LXRC|0U(yq@6*jp$6x>B!!xKY8Kp<6|0U=!mnv8W*eAPh#pwK z*=xqEWG-maO;GCnigd+ZDwQIo7gu9svsGo=6A*t~!e3A*OXla?R%|V3cf<_^u2WeY zddTSN))b@r+j&jg+7SLEs=vCT8_JKmzPWC!4LaeNQm&?}4eEM3JPRE+1~ryzt#xMqaa@vXbW zo(gkfqWOsWH}o9j%O}HqTC@F!SE;4MeZk#J?I1AkZ-!%z#-+Ve(>Xqy5nDUW?V*$Y zBtfKaSK~b<;qg4=L`LC_LL%@UHy(bQ0FFM?bAgho6IRSzkvZ4IKrFK(B%B7 zl0qaGoa}aeY#Nt3jCe|gl3bb;=pqc`G|HV3!E=A1r7R{J#;O2%5ecPX0<~^Zhjmrp zN*~L~EDc_J+Y+;IW3%68R{BXU9oF3d7k0nCmODpMNXuV{zVTUg4W@2=#>qa;;fjp@ zITv3$nY(5WcQsa&snNXfKsItT(T^;XbuN4XbD_gbD*AE{+)q;9Kqwk%m5+q|yZehH zYTt?_m<6sd?xN(9rAL=qK&ybAZi zq_4#Wk$RzFnR{NJ1s9dH1U1;}Ww=5i#}9$;hmsy`uine^iyDiIix8jX`LHg7R?|ZG zPWw2Te`AvWrBcQ*yERjxmV!|@wN<5bokY&W<7$4tGR=xZ4KdHD+VpS3oXskTCNR2blP^KSF_{)3R zbfTHfqv=K~5>YcS34X?-8*8sVSsJ19VLI>vov2p~c|79!UYG_T`NSGA9mK>~raL7U z=`>uO61h82)+0Lkw)rW&-Oi@KG?~ToU#GU>;Jqm^(_k-6(;m-(S!JbT0M=Mtm*TBbM^OYue4rQ_>&Zn(;YSUK;z^nf(!r<8x?!Lo&30yxrHt zcSW851nWg|@jRptyy(>1P5|6U1;Jm=r#KBggnwvvdm{%`t{@X9WH!x z{8Cx|ZdwG$oy}h$4&Pq!(G#+^^lqWJLrHe4J5{z8n6U4v=Xaah41R0@4kb3ZCXrQU zTKv;<&S##F>VupV@f!WpdA{uq{P;HL-_Nv-3}f|&ORTH4i~;eHTG0UGWYVcntPQ_) z2CDV4T>@#(k`lPPcF_I}*0#8{{;OorLJpleH&1qwW|&FwfZ~5#z#+sAt|82-P@9c4 z@FD@MG6Ug)%O4E+1Vk2mba>!ZZ=HxW_VCEQ`>+lD!4!T~3We1%S|+_W>MV2w9jOlz z(K;}O)>F$#s^voVBHMR9wxjt^p_FVOf&ydK)HmmFq|gkrg}`m{2w#&X;!c5_r5H-HgjS($E?+rvtAxiYl+xT< zzJu0f;(zJDB$oy413<}|Vx6iNRf@kp4Su?deT2`>Ipt=?0Jt!)08ZJX*~#e-z!gM< zAh9{>XPP(2*Y{&Yv%@`!i*3d3f|xG_yAP8Jk)7InB4&+!MsGJuJttT4MIf8xr}Q}E zHt?UMKHgQ_($$u-nc+BIuN?}|r2QDrVl^|uv;IO^V)*;MN5X1!`p?{2+rg=vF*7p$zz~IY+budI7~c4j{6l zYs&%~RQ$itrM>x);{+8Hs$^z>1D71OwbUIsO4_Tjbx95gF^gg%I;WCuQZ6%J+`Kdx zl|6Ah$!b_ZIWONuDPlyKiaD!A-lye@r=(JnW!+&SEyjyW4%UJ-M_B@UGK>|v6xM)_ zN*FbJVlV@20Haa9vPPU-yeD^-)J@`qhjo|MQ}&$XOETTM!9qEDTWp~p_X<$ax!*sK zBf;LF-5g7A_na*Urz(}lTHCww?@-A2 z@s@CA?HWIkAsyEY7V%xNA`K(LlY8d;An96R(L00&{@Ed3`Y^nHfKIas=4y;=Z;ZEhRQY*Rf8n6_D;yKjA%A+XC zBj-+I#5Xgr%jk2?e=wGRZs&9t&=)hHBaV@h9){7sC|yZfl&O~jixD}7BR-T#+Z!}s zlFUo?M@NS!V~WcNi@S)6OIuwPX~aUEs2_-Fh!C=4JNsj3hr3Ad3n_GVouVcz&X1y% z@Kg@h1dL8$f(cX1>~=%xpqXWS5GEx&En4+p;Wwvpx^G%8^fYgD8?Lc~i)NN)c_C_R zJ~8B6{#J0UGrlVyif!^~xwd~J@gju0%PCKkgP4be$_P`7`pR=2!uOz1-O0IIb*kt~ z!wlQNmuok<6tHyi{g-b$Aolhz``cc0{gkdOL{bC(YGjvJ(B9rcVpg_`wHUu!ZmjWkjGzS zTfRea{+aQ2h06oOf>@*7Pd)h)T9X34-sYZ$treOc| z#M^(5v;BH|G8n{`KG&a9UM^z?Eoq9CrO6?t`+r=lRLyw8`8(ssP!e|MfV_Mpa_=@k zHJ^ohE*4|{517saS235 zV3MCosJn{>{uraQdLkYbLLsO)&SSACW-rUy4P8c9GS@6(j(!2;yt^{V8E+RJjm?10 zxbmEH#Gzvyt2Xk48-^MIXl26u{T;gr1IRRRLFdL1Qi=LNa2tso?a_YOiHE z(_ua}_eA!%cIs8jEqN@T8@4c za$lXRF zcT+y){wMD;4CwviA&Exax*uvX=Xq2?j26=^JQs~2XLENw1AZDv%>gr6$2T?Xts zizG~uzO3ecT6UuYk>tq`WB%F#$}b_#4ixF2|B<-_Z~dvWhqF~3XEO&;-~A5YrPoh! z?wLqJ{<2lKn4xa0jh=L$U46ZYXB+OYu0l7;~TtO<8jf<|!AXiN%Dd ze5Yybu9aJ*%}7~eUkk^dDZc=Dm!-qG&n28=@4$Jewx6e05_+r2h$rvnE(FN*yNC&t z8!E$i_vMa7Q+A$XRS(sLD5Oc!5V#J>(O*SHs+i*5IO+aLB~?S=F43N zR;KgD8^Iehc?uq1MPPTq5DXU}q1c+e*^lz%U~cyAMIYiHBbDhW7W>+QF|Vzsf++xA z_uaJ8`>`(OFbuj_r1W<0Mt_PvKV#MJyG0~Fn}ecKqkUZd?&T2`kI?K#`>QVDCZN9`SPTn$^Ulf`diY_it`pNg z%6iuy9Pi)-@r}JAQ>aGNhaaDWxPyL>I{%5Un~K9hN;`7dsAU_%X56v zr>s?Ed1ucx5tEw_F<|`M(~d~?vIv$T8h66@On{OlI#0wH<^v6kBQiMKLCJLl7g8DS z?qF0Kdm+}x=+`#5JbA%gMx1(O?U->dA!6 zVI)?yoqV(zKG0OanU4N1v)V3Z{12%?)+ogrmp!#u?83bnR(cfTl09W-dKBDp)4$r- z5%HSND_+>rXtkz9tPCjVjeBU$3@G@mdx^CS@!x$0S8l!z!Gk7d+C*H@k{$QN&$Q$^ zsT~3J;gzw|jJuCUg^4)((TD|CzMev67gf7xt1p2hJEj6;Ob2HRvdDD}8u7$80GKvB zBT!6w(t{TLPT1;7`n7&06FyH?2JXInOSL=;(%o&26Am`yzwRZj-U6_-Zi%l5Mx?BUXYxNS2;gjcQ1b zmobJ}dA1fu)j`Du6f_s?6oO0?f(K0n(}9r}nb;5oIK5Fay06F(fI%k{GD4gni5HxX z9$CPFx*sQXEjvuX5|d4Vni_{3cX;~Z=2cmbvHC2grvE9C@|X*5qD#?R-^W$gJqt+U zcOi;CUf>&lb`tKQ!D*KsxE*iNrl1dgYxhAOvn-UJfx7{R8SKrA{mWC-+9g{aA^+=H z(5)mOntMN0Y1Hu$yvlCHq+esa6&$lx(?L}I%=JTAJS^{R;u)4rt&?KKwCT{J9JL+D zh%!{4?V@sXosYlW0%jS&RXribyVwSj&gDj?pa2f;1jT}P4n&adzM}x*N6Z{d9I>g? ziLmp%oB+2uRS#B7eSf@4H~!1}zTC+ezrM#We^MRDBCOxD#}HqXE^3t~kA>Y{0_Cjl zImCV3?n)v4@A=BFL+QZgS5-4N4dxyd4-KOY;OgZ})jpJrHc|IK*Rac?{vY5)J;Rd4 z#;IlIXz}+Gfi6?8;Vhz$rsi@=pw^P6w&btBCjYiE);<{v-~YdZzeV~C!7uCMDg0@I zwN|9#N!~in2G?U^55T2Mt+kz{r{lN!1D)t0UYb0wy^7U(TtojmgZvvWwsCr4`*YgBk$trj{Iq83N#rgmZBm0TmgovzotCqbvrk5`W zt&c}?c^1t)^cRa?>LuJo?{*3~Wkg9Mnr(r;`+X7UEc8+G8c0w-$5eOQ6atUZ(88br zfr#}4LF?#NpItS!RBDzarHQopvd3coz3Nr;hb{88^El1r*o;4H@FsaX>AkGOg2cw<}mN|? z(6&XsWxcFzP`BDeTQBSwbQYpJzM0?fxg+3X=IOIuC8W#6ppP4N{^7Bkb)+`(k1+I( z@QZ%SLkRn|&(_N|ZATYZTW|m4YvQJ*;J^(Aho(a{$EgP~l{0jjsZEvdw0%$pvXk<% z>b}zj|G3>OzzFIe^lMms2S9|qOh*w{n|V$r_x|wLbMO_U2p(`;+O|xACv96a?G1{X zsxJ#%fXtcgiO&v$VNw6<2<B=r52yr_HFAQQ zJSxE78W*dZUKTW~*XS$2#J0cM*XTiDd&~K11s;X%v&2`Kzq04%vrCREh>dhrbq%lU zZJ#@K#o+xKgkJzbV+BAHYUbsvF2x)8sC0IUgg?}u;!#V036x8fHEv_W`ZYK-uK(m2 z^xE$9*}ESnaIKSWteM6v>4v$JTmzRt%&48y6t1~ zS9gPoTkCdJYbOj)*6u1^)VTcvj+Z+oNUqWS;oHmR_)25HvhO#DVPreu^)^0KOLs*I z_OG_pQfNJvE4#@zAL&sGiHrut(z{=@-!}ypGiPh6naX z@ys6zR8p0+2463G-49M2&uC69BJ^F8>*CHm3@ywZ_UzA_;B6Bz2B6 zvN;AvPppsZEHM-~2tk;7HWlB}nHcNZR=qg(9ju)BsiG(5fjIhYYPwsPv2zuAQSH_H zo9r9g?31Ok%MM7)+SFTr_uXYoQCqQu#4gOh)@9>tQx`bR3vCZq5bC?$)3z;&x4e^Q zgRFw+2gBb1R&^ou&dbB?$F1GCn)ft$H(MI<-4#4HZOC|?w9i3s>D3IX2fY;;qos2<8N1tEi38> z?0oe#8$2R6Kzu^wznUJosvZ0q*#E$E3n1n1M>k!Z?0BVqdMb^^rxEVEGmAf7TveI8 zyE{2^y#TyMRXp8Zt#5AYG5C;Z_hb7fVThWBpguicQ{ zd>t_Hu8>8{2&})buC(NL;BFzdU-T(11}h=vzu~Cly9cgMkjy^N`K(k7#`niLpz1Z^ z6MNKzchFF}PhNMW&hNJVc8gT; zul0>WO=p}ZugH(?!PlLUPf9LrG)OVlVwv6^Z zn5s{-AL}%x+B1&z!Rg>W&zcJ2ixZCBXV|T;CabDC(e|ja&=4h-%C|TMHT`fHPF4$f4Yq8uELalFP z>`|eyEp^;nSC1so^$%Y^u=X{(az&^?5xbpd_d~2x4g3Pj*PWefkHZ@X4>{i4w#Rm@ z@>#41i9e6IH*7qcK6x?m&_Jsa9(k2~YW|;Gu;%-Qv%m9sqN0$x-pL!Q2iNy_1-ESw z4XAk_%Jx_CT9#cG?-GQ34(8y)L8Z&cblG=fTW)jPUxF!v*`D0&c}!DqboB3Khmfs( zH35GNJs8`FI(`y^rY#oLknS=6!2d}_KM?%tyZI4P&8FC~YA<}IPY#dn1F%=hO)6W) zQBw3pP-iau#*JZ^_CWDuqvDS)$XLP6@`gBV z2@1@5%13`yiWc53EE_~_dY32qsA|6xti7`@`|0~^qatW0#Q1U8k#O@7c)DzrNz9rS z;isEA5m-XK-&=d^^X=zOQT`)_eebkWQITx0(scd*Qe zhN%|BZ3t0Z^)hlJggD{{e340Zk!(%Jydw?f$Cbn_dq(kejBfJkUD!DR8mbi-W1P?I z`qYbIUtv-z1hf3K+Pbwag}tIRwd&lwcGE!h-TY-I(~k!cuCTW5m|~V@UAhfzi1Yjn zkzqcY`o|xJjzXdfrz7lnzxvcGKuHre@0%3j>T>*zx>+piU@Cu-(zRErsuWb0T)*G0 z*8$FmAyT;lXG^1@Ky@0-XU2sH?Q8$&Ct=1%QmjBB^_OJGYYUHGLi?Rbt#~z4KUi;o za|QOSkY>daNQ9-)r^LMNxv>q&&Kel7s>14zP}{p%UCpaxd+>iMc@^)wR`Vz3Id#wSy*sNc z;6TbYwlB1W2DN?qF5{==*yCY&3R8>FH3x?N&SEB`iR?4d|gi#GPAN% zq})=cADMmL$xp{E-FFJfvAHSCyYKai{NJV*!RK(V@V6mMohP$Vb%@i-{B*e~f2-Ci zbz?sL7Ioi_ofW6By}SFY8H?*0-^T43bpeKZtx#{0TM+D5!M*7(cPNW&9>1h^*V+|l z>hPYsvxY=#KG-kz-6p&Urwlx&|8&dtJ*BxnFp5NRq8P8Wbul~L!k4e_0!`tj(M*(r zEkJ97uT0}R-Ok9j-j*o@|u1R12jwS!4+&WNu!&hq%ycjM3-@R`4{jXSxX zsw7es`Xo2{`taOzwN(=TxjvzIM77bG=lOZ`@iFh`QXhCKpR)_c*AK7{`Ik%auWtop-_wtZ- zihCqnA#)KPcx4hKS+U_V77CK0m9H42r#1i{V?Hy-etPT(`$5r}EMAOrL!K9=F!TT2 zrs!Q=8M&_BJCgEzSJ$ZLZa%IwJy+^}DfB(c%lrHY5zH{RsnW)h+p`jWxv%VYaa}ay z1bcSBXPzJ?Y*TNvww0~EGYb3r?RLj_ZZ$PJ-n9Oz(ha#nSU*Ce{$2U%Y3J*Zy!rc0k9HeUuDjoMvL_b`apgWtT|>|7Od=KVwYnp&knX6KA&+aZa=IgVl@N@71UI6Y1L z9y=tFju^A}%jRgvYPwHjV#eK@eLQBuXDXtYDL^22u{SA(6CxkcpPvnm-)Cyo_GG9u zHlg2gyi^>oP{)g=+NX zMIQ|DT-9WC*!3CA?4-A`dul2sZA{fYDI`S=9r5IaU$V0548V!qv4Po2f>~Y^cY_zx zB2}dvuJWbtGx9#GUj&w$Gu~HaIO>l%kTnw{630nMA95;JG8auo{znqOMpz{7x2aU6 z30ev%KgR~k&#+eZr83^yc z26=1a0H`>c`CS)FiGynNytD@E8YVYy_TB4EgZGNoDf zT`B)z@vv7*XSg){pz;SCI1Qe1G5FiiDS*aPv0p4*k2VG9{3RrE7oTf>y8Oj|zyJuv z)u3d%BXY>CW%BSQ7kT`))FHK5Q{e`q2li(M({|$z-Zy`U#w06|688=#$_jh;=M$o@ z7Go0CXX^$0csR70f8e;<3Ie!vbcS%@2OM;U%9JK?;<9CRBUQ zSmg}Q^Pgaj9nmP3XOc3J^~P8IVmS&MUgb=ce~qvI3cG)W@i3c@!tQ$3Wpa!3JpKaD zj{e$amfZq)8j9<5RO{FID1?s^D{pBU;}3s|d2pHK*lZZU8%}t=0(cqu^0LJzeF&ng zvs6n}jUaNGIg>wli3e9A&ug9Ob5+B;orE+l573crvHrEvexRsVa%63brm^dqbrr<^ z12$+C&7nFsIcs%v)ZMNv_e;dTkLe0EYR^F;@kLI1pRaW+xKn#N=5t!>YNHMFSp=HQ z-23lZkd{W>yvxU0`^Awl4i}8;?#C@T$T&1bK~cSCdVq^2Q*?PD_4Q;OCgyNKvnTX5 zEaSu3!NTN>{+QbCVHF#w>7PE4N-pX-`RojGQ|GZ7T2v{n!%ai7xe4v3V;frEc_jp} zo8>pEtEh*wLI{V82Qo|ur|$-GgxSwU6!>E`5UE_Pr0;d+w2JtJEBs>HRW+Q|Pfj&t z;tU$GE$1cx9;My!Bi}^jwxBm&4}Z?d)$EEY7{qOA(@(g@6~|@OYg;t)E4UEt1(2RY zmsLx|@GYFimvR@x5JLW&&1vClgBrn)BOg`VLHTk}*Al38M841wrK!G7=$dUH!Vc|l8kW_} zALFxbhd$;dC$zm^q^+y(T7YUxl&cW9WJoW>av0tCMO9>zrSI=V( zTHIpc3q9UA4d!A!K@wNK^ZrKQP@9hGehhbjZ_oJASA#J8J0l6l_sdbEA4AP}VxK~J zpEldGas8K6bU*CP?Oxyi>H^}fat>lT z!i>%I!(ZSVI~lJ{x_>%SZ|dsFSQ{^Fk}|HcuGhkWbJcV8=f!;hNO2l|YXrpe{cqK;RuyB})>6EDWCRt%G82&u(=R@S%=*ETsqAcv?>=TaNK$oS1hW15& zF4$k1%VTt>dWiGb3q1J2n|&VHKx52}C!P!ZDty$1uVeaE?YS6?V#{5;wW9;yI2CO% zt%L8Y^LZtN=))P}@R$SJ$UQqodqEA4^d5pS$RKCCeX4`n*gPjzrg&vPw!WN)}A8!Vm82=&i2F}lq`YD{R0@shB)r(4*M zeF;An0KM~phiw|uA)}rN$dzYDK&-~?haA+#?ZQD$#>a{-G9pje6=wX$KgUp>n+?Z( zv7P1B(v8)^EGM{mNQIAdx>w1)!>A!%g8G;Bc`*fPX{`o1waW*u2bX^tc`DwEk4-`E z(2RJaD`nW~<+{VHC)Ff`wx4^ynQUrnk0DdIRI$qf%OAt8hzlRbq48dom-dy6F>hO!3r*1EgXz{Y`%`z8ILoWiG%34ZD9G213 zdAM-lax-OYd?%+tZI-$|vzGb1bCpkWOZ0Hm0^XpQd0W86(emmVOWE350pr7?T~Hg2 zF4iphZ`&F*dxL=*ojkBIcghkM&qo@PcQlNH#g5oC7f5gCKO~)R0`~C|m*xv}c~A?v z7X?k2wp9|fk=+iNR{RT$?#lcKoJvJivrCD-9wNDz9KC9k3w}{P#Z5#TYN2iQMCy)} zA~x???lDah>+?wN$8%ZG@MZ4yOSx-p_DZA+t5<#Bg4A*&-4mK%*5^^(^@tXJtJ(R$ zTM7OFmp>wl7*s=VoaShrOZ}B@;GE0LRp!3ffg_Ia;kFVi1$#Xri{(=E+#|d5h!mI2 z;~Xs*9O4JJEw>~Gd|Tw>Ket+2Gn-~v_%fwW!XGQio3&~j9LPfl6?2BR>w|w^ z7ByD53$t07n^O-bop}$Aa9dZa0C$MXZ{Ic8nUj!?HC;%%fN#N7=bv8B#Fv$ZHND{x zUx8xfCoR9@2f*ihS0!_nX;ss=N0+qiDdk@($I9DWc7h zcZGrP@$3x$z7?D3{TMH~bwV zPWdU8fydMM_VMX9d7*R=FA@QC)C_FMgFSYbUUW_vi@i zOfUghhraw~sP{0Y`ML6r9P{TtkGQv$tVlGUR&BW1N>2wO4&qRHJmD1h^nGCxifX*0B2I;W7VZH$)aTcjAz0+D!J_7? z7Mn0W*-liyr1bo?17X(+K3v2)i4Evx0B{B|)S&Kgk!A#~x{nI4T*LP`>yVda%roK> z*`NmZW9~x4vu&{gy)XuyaSd;&&1f!AAbjCgR23E|UlbyRxv(u-upY{=ic=wl|M0Cr z^!*j_fyu2zM2q!jM!|<6)FzYuD2|#tMKOsO;X+`nGW-k>sxwYBUlem8FiXS}L94=G zvlk@&RbeB_h4xt>l+Ca9?s#fYV62EIK&#@xKUHO0G`sx-M*t$K1-RFNdq+@E{uGDm z)M`<+Pt}TB5Dw!4eexDwiD>}_zQvyfhERh(IfJ$$s*Wnc-!P@#zu7B)`igZ5$0?{6 z@uO^pcxUR7gA7s9oXrk+1 z_$*8p8I)jb)zN6U{^UhAMD^=znG1!0L(~<@@}2(-L%6Oxvy}63y8fs5cJhhuOLk-E zOYC)tvV8Zy$6|n=Bjtis81rIkX24x1z<$SW1 z2azOv-Vz5*BN+h(W3wUR)~@Ln!N*8n?JyzV@=qw3>sn9*#0)S3lz?47DA#(P5XA)P z{YIArf^@jHDXgKlj}acIcI65)%LBz=(m-ZP0w|M#(_zlY@n-sWckANvSTJUAaCA_0klY@bJ{ z1;lRwVgY*Oz-ht;&S`7-z{tdHn?|j80wKpGO}1jyU4FF4 zb$4{~ThC9^oG@PgPa6c7PZ!zS{#7ZAOVy0-yJ}IQXDzj8Qk7`zkar4b%chLcJ4Xqk zXKv+ang=YYs*Hs@qu)HW>T5DL`#L@VMm72Cf7}$vZ@jYCn6lq_U}dQ=Syqpkzazh` z)AlNTQR&Vou_vtxfBt9MyRB3nAXSErDKKP1&4zih9mjGFDS{EsH%ji|0bquFjH4rc zjMFZvsT-GJ!$nMtXO8?R{3I9%`m~k3iGeMli^a4-GBHXpzHXP(%`ZLI$z>2kb&dFF z{?g@G3Nt;yEMuG#&MWcBkB0Q2N4v;u)e?u?PHXu={lyB=4K2DOEOKq6!frU<%>a@2 zVJqZF;+6b-MMwB}Qb{(NW{@dDm%_|6x!;aaz7EX5cpn1iZ0tCZY5fqyo{#%TAj5eh zEm5Cl`k_>kZ(mj`^r~|m7(Ms?=tYq$4m|7FmN=q(Hr#{L%C}XF>~eqljvsW6TjrGKMJTyK+`F$7afn-^T{ClBF%o9{IP5A@Isb(PiCLQ zOa0&HUFyBk6(dC!n}5pi$OXmPnlntur=;xTahSzuY>rSVBZ4%?^QX+IVTM*({QBBc zgT@v@*l)=w!ynVdTMHRn0C`as7;3e;bddUhcJU1NoG=?DwajhEo_H7=T?#1Zi`P9! zSN0`6CHK!bKzuXe=j4WM0ph$!L6YjHdufV~H>9WOYZR%vkA09Jk_-T)()Vf4WWmAg z72tb$bSW^-5jDCbf|GbjW%^-758k!i+>+X6 zyy=)i0!;i_hBReUua=VG3djjXL-;{{-EE24($2CXIM-g1u}z`I@=l-~%!A;j5*^rn z6@erv8K7wT!dU|#L(`Vo`E}7Z^h>y&kNAlT047)L5B^BK|rlX*j5`kgufGq^)^#5mEua2#)I*p4dRsJ z4pb z!%w$~)ttqB9P{4ZXlq%-eN7@Ex}(^qWUv!YGR1_9k`Q?;-~61DD?ha0xZ?mLz7vva zx8_H%p{_Wn@3ix6Kx`*K)_uc|z*|Fc@W5#YGcxQySh}FoJDVL9UhMk8plLE3sQeOj zPS=aLf4y5``OjO^;cq)kS6mtVD1P`sXwMi_<+&D~?w-dH;ZuVSQhr5h)W#&d*9xJc zJA|nPS1`bx2EQ(8327EJMN1dnYrz5Wo%Yna04AXhxLe*@CsPn*98SmHaAastO6m~z z`qpotE*UK5bWj;Oe2|ec;8Wj^BmUm~nBk8J0pGQrgxHRbEM~?pM?5As2p%{wT;{YV z9}V$abka9~s}lkjoBAn-ybAnBxCp`{1W|s^QR5GXFVPiz9F} zVDOB2&%&XkWI{V;#C^BUki1^`G1;8wUD{6=FOA3X;}6WusxB18>qH!P2f%s82~hHL zg4N|uerVKf_#r}QxJ4=@@AB8nJKXy&d@(XKoSjy|wo7)O$xE-P1f_PIMH6gE{1FpqXOA!!{|g4x1Bf*0p`-D_O9e({5k>TO~ zsa5_CI(!mojy%7=MC8s*%*{nI@7W%5g`IwcKapV&TorND zTM^ipXDXN+b?^3nU0GiQ;o*VG+dbaj;R)mb0ustMeaz~y=rU*mp)gu&uZ-(E`3`!T zJUr`XsG@@1yU={cJq`RDBGLY3G+2NU)myMPK&caS0^W3%=mDx7gj#9%y-m`WiN z1`RYUs(Aqlci|Dj!f9w{Z~Ts9qP5vJ%IFkIuT#bPr_qoA!X@f7sU;Zw1ewvtcmx4q z+SbohC4A0lf{s@=^_LbD&?~A96E|++{dWi<;m5SSdaN_v)Q2@YL^UTNAOrA$%dLM1CrOMsFL zhoTf3ha&lNr6q>nzwcc(%tpRh19t}!W{gDzwc*!gQ%l#C16k0S!8G&)gy`^bfK=1k z?AM2Xg&k0Lev)QbWHWeVPFnmy(*$(1Kc;m#EYZHj+4M2lP+YVzx#!<3NPbb96x4mIQgYHgDg_3vZxPEmPL%iFs?h$pnPwyo8|& zZ-iuBn)IspD%pWnQUt>BXx4s_J;&ykWD3?_>#2zo2*+qzzaj5V+1K9rw#Bp>A|A*j z4lx(v6Oew*b=f~oC4HFqIj2B1l?%MiJ_BGx_LmWT0wOlK=h}INdDK@bs-kIx2)bj? ztlvJX`PkerzJI7PTotP^-++uW}XSK~*5 zX=b0`kC}~TD4$md5(oG<9)dX~#bH-yZ>7))DKOEvRPL)~mhe|{+=Dbz&jwx(z0mQh z=C?MP-P_yW&0WGvmAvr+zh)>XpvoUx>_|{K8_d3AMAf8WUi8GyR?Cv%(tX?HyFhY< zm6WDAH4)B5NMtKO;?pscGREKGaTSu|#732ODo_@m2E3KD$D23+cSdJK zw*HJ<+7FU~QNX>}0M&^>N*TLub#2o%sbw3X{$eI2ja^f^yoGFE0k^N@NPWCqTFajb zl_oWFQRfi8T;x;MJHL&1yq;G$e}beWKCpPaCdK!w@T`oX;9jOMq*>9v@VR?b=eD4h z+LSM)Vo`nS1$4#(l@ZX&kv4v!5S!+<+s=1cJg^ZyRX7edx}w6>%&hz(1?Suykm6e` zTuBe{La;$YQ#q(9?vRc01nn5%ct8a!+T+Rsiv0U+-%%C;t<*;2Cl17Ee7pCPoh3T9 zIhxd_UQjm5dW&W;Z;cmnXi-Z=#*5|i?E;s(>9DC@0ILa|hvTFJpSWS3Y$Tw=38nLW zgT-OqMERqNy4Pd{of@d&><{em9E130Q|drE9A%L9qytpkFiBSVIinZ1sf0bc>7hO( z`IZ1 zKrasRkUv*%O|GJ;@b67NA_@EKra3*x@%%^(qZi+)xP4*MSPrvCT_JxNSpggYnd9AU zrt7T@4g%Z0LjN~-u!!j}c0rZ<`>Rn)W&dP$$Zr}$GJ9YOfkt?kvG<EUgi$C-sclt&=0j=O(kO2L~A1$bDLo(R_ z4FJw4^GZ?E7(hO%P!td&8_&El=^en)_q+Me`?H_LqfG%pvM#UCCj(E++eF@aU5iT< zZ?A0aCdGJ|-R&Kb#CTq-D;J|zwu&iZJ&>Hec8Z7U%a87j|H;>q9QxW$AwF)X;P%Y! zg);XR&5I{o!n)j3=y|_RV(7SGpxd+XSyWx&=zspl&0Yx}X0Tq7T`89dgV^MyEjC)B z5sX1%D9lfu7&Y4NcWeZZNAmV!;dY&*CY}u+F07i=B$I*1Y~XEnE~r<2QL=yUb(Lgu3%%;tg#s56) z3svI)wWKAMvYIS+CHoiu+`AF?^T8hGQ6_VRMPXMua9BWM3EhMa^ z-L%>5r(j+&qIx6dEtZwSrp@dp3fY(ulbgAa014&wn|X_3^!s}=7qmVfbYes}qo&Z5 zet$^-1MKs`UyR7ywUOtq#tYG#{&MwFAU{Op7LH1J9(PR;kHAzDZ}aUI)Acraya$WW zz)r=Nikmir+7i9--z=KcGMfeu$}l3j)Y67_d3pjg9@MDtkleig)%EKL1|zY;!4x%9R(`7j=ed~ z<2sb2fKr^L&c9Cs7;7X?aTBat;5a)PQuRrmUVeoo+yqBSQk8Rw*nBDtB~qA01zq2a z>tXevi0k!==c3A9Ta&SC7hwoPb|hByd@HAn;i}4BGxrPm{h6!tMQ}}ui;LJfE2&y0 z?90J+lXA7gf-mYer1O>^4J=tALdU}LUwTBT6&0S0{5KDAEX*Qt?87<=*oX`}D@MT_ z!L|t1b8$bn4@Zx`N)+h+)<#35juh_Y*){(8FmeGGp|)|KHwiL7PmT->D{atu6ap<^DzV+_Om| z^S_aUw47z3t3KPU%h+h$JEZU_$m)MdsqE>Z2*ls^?pEB(fuM1yTpCa->A!J$e~EZ-cUs?tApMDG949t(F@egJfs?!XNmjG z;DZnLrnd}z(Bsr2>WcAt2awfJ--Y1XMVcT)*&P}(sF`B#9m#2G?5ygnL^G2DgE|d& zx#XW${d*nqL9sPQau(Tcf!kvZJ}E0?&scL z_KclY+fti#z2WLA9<5qD^c>G~Brof7<&U-sOAT4GJq8o`68<_Ahfut5^KYy37X3Dk_ZcYgw# zWm@r1Lsb_zeoh_z^Zi^N1MhK6nIq6l*lB|52j_qO!bx?m3SuYWq-sf+j)O{>aKC?B zE=1w?pY5vmyGIddla*f{;+9K_BkkUj+wH>%rc2u?3 zqF5m&>X3MNHMMB)eBqarn2Vk#cQv>S*X_>@QX@;UC@Ls=jl2@Ywx6uk*@S=p(oEpJ zHXmGal1sFr%>K*xH}Rw2wFIMeurjbsov;3VH;S&totR$dV zIf}P%IR}2jL7g-)ep6f8$tR#qAwOtA&SsOgR;k6Z`q|$7PiRMI_{gxE+OJFt@FIyX z#v#s=Bes^sA)W0~Xm`lIHlT={ujO|k0~@ILGINwPph$y_uSV)4F$rJ?q4Q=y5djZu zGNqKnaG&dW8ZaDk$HI$4%9I)n)e~1!m?^U#%oZ#;GkuX5ws$+1iC05S*U#oO6+cw= zS8mK&`~3?136tDh@nJqv$Ja$)B0{zRYA9&!Yn!?pV6S+LT%!OW(RJDm0$-^@`1pHE zZ&W1s7!A_8Tr^7>vHWFs;WA`>SVO+d%HsY`;*UF^P!85gB>n6QI2k^CAWKW^Y}RZW z?00^jPvzh16`=_Hqr|QkAj<5QGu4BTpHgo!sPG3F69Dgbww;XOTA~7+LHTQyfB{)+ z8%6qyw>%Op_s0%M`(L%yt0@ivApy?gyfsxQ`6tYSW>$rrtV!YnaX*&7Y=AV27B%(# z9MVVKIqv6OfEM1S*b3qFkQUBUad#GUj8#%5@r=*jd)?vD(IWQ^xp=kszDle2GkX$J zKUF;L^F%di#?x0?-SgG^7m0V!(eO&3gd1U>)O6SyQtUs_+Y;k}10GrxR+xSVtS=$b z&`oD?970QnvYlWIk2BT6d+2z)Vc~{}G`mnrDM^&G$a9R)K;cyk0h+HSR4-8rFWbRH zG*FSMT(5drRu%NhOJQ9}Ej@J~Ub~&+G<%6b7MnDWq|C?D`q1%%&sv^tBn40neN&<3 zbdC`QdKEq;o*z8K+!)$s32ew{tzLyPk34{R@rP}u;!vY-2+@+7BDHOO>yw!m zoKmC^cL7L9J>N&O922%dF;tU3*~Y=9beguF&CaR;Qe&XTHxq@lAk#@TTf$fUdy6Squ}%C>BZySeUhUqDl@CvJ0-zlJ?)l4<^0qkr7p z=XDaLrIwSEKD!`t2EOK_660aLmIDe4>Jo~KuTGAH#h|R$!Y*9;wz`BRtMI}wZ+wzY zS3JOVenO#cYQ<_V-+SVxEDee2q@wK)+?ri3iqurF5)|}$VxJrI8WYlV->V+S`f#Ag z>jZu?57K87iqFoD*u?}`ugQSCDY^u1TFP?F6Et(0N-AX%a($xp{~ zI1TU68+Y7SA$=uTF>TgsA@2XhAdSPdTReeA{8NW$!H>N*ZFh_ircz=itTj54eR}&| zevHo3!%Gq-tc8ipNm&~czx)UH-ottgvj-xQVwkr%uqDPjw8Ki04_T?X$z3o}O-H+D zvu0z4`2%#oaRDx@Nb%Wh;LX^UmP8z>Zfkd_JbDjYq3_x_4iTSJxBaT{l-_zPPhe_Z zqfhN6eU=r}Z=X3QQj^5IqTYO*Tzpc?_G{x=`cikyCvjI+yF{y`toxIT6Nx6SZ`!<_ zMx{c?iMe!+^lIi^>Lwk57pY06VRZrIJl>}t)`W7lv#F-$!zg2z;k;NCc1f1wP%s`f za9>@qPfyJI6z41{RV?Ai`ZWcVl;uCk+MUmHo!kC=VbYqj0IIVN_w{58S*bAbFmUAo zQh49P_Aq`$u?0ANkoo|e7(BG)($k3ncPmV`3|t>VK`xlGro_YK#|}zC<@JP#TjEGl zTOPmp1H(#u&cI4MPy#u*n6OVZ&@XAu8m#=%#? zJx?lxW|xKsTOO=k7^#zN&ZqBc!Ub}HwKTnZ+$@Wp8++`%Qwfx%5(Qp)Yf_B^-khxO z+NA|Z9O>Ob{;1%>twHLHeG#g|YDf@_xGS55&l_-11N2Syezfevgnuky&U!@w97h-u z3PKbeZH)j3M6@*gk1B#i5Yl5~hTai$i%{cVhJ;ob_GL8h7klq^av~c3tcue`tG3nu zz9@OO6YbLQS5=(0%7p7Cn|r{&(~_zc(HG91V$YJot^swYyk5v{%V62w=gU?nqbHvM zceKXqMugL!lX!mf^1~M3FkBAH2K-}FRip64AAlUiP0VGiZ%hD7`W?1Vh7ar2%SkPX zdJ3?j@283C(D%V-ygQz%tN~A8M9MJ-2WLny1XUg~BqhjgD`BtwtM^>~JqQ!zGyU$# z&A5*F)3h?ZRx!y4l@d>5U5%$n$|jvg9J5pHeN~y9Q?`GQF~Y}Z@tujAW*tM>ydsf` zJYhs2Qf!ZXU0kGB(!`Ro?@hN><oADqHxSujg5A742TpbZScJ{{)VGYe>wv@SM4 zZlkxsc5KiWFLKO1EWUH9f%@RAJ{`ls3bmPrRRakCK$>R%QeKr&%boqN1^W}Ou~OpA ztkIOtH2lqPgS$n91x^D1c7Iuc$wX7ApA;ImSQvQAS?@kq+{pGM%Qb6f~~d{*Bb zfwL8^g@T>iK$IeF$hbR6>3EYo)X>GSGfi5k{_z#hcL5@v)BfBE9FcZoJL=jK2+ zli}DlnAxLSQ`Lv7uK+Lt%`5y_zYr*^w0}2q#kuMZ}$72c{NNz#v(Z%m_H-yq%5Q z;}zL7aPgNGzeAMCrCuG}^O)aBl6=>G46qK{k$?Lmx7=vaNf&Uvq-u&+< zM@W{?41;)o!AE+amV5Q7K(fWdK6c-AX@EJEIo71@^VBqhct^pry8zX73xecirG`XT z!F&c#T59I9R;$|AGg10b27rdCn*9NEMiI~{v<%2@*v#=X%Xhk25?Am{6o_uHARN3cDLiwcRcb<6~y;@|P9!~)rvXD(lBRSUTwqz{3c-q^mkvv24G>h691X)^PlJzT@U2El)d=2|KL{em|8aRB@Z^ z24W=-ITEAR%u$Nfrk6Am8!Lct-9lnCnmd=_EaEC`^lsJCEIJSv{Dn`XXX3In>Z|=v z8S+l`ExT+1Qgx)o+u6_`de62OhqG*FnE>E^%H;i>t*>CDW1pIs+!Z(TlWn%3s{ym2(-j-vsPOZp*cknJo9 z9`vgb4&8d1{hJ%e64o3wHH2%h-J)^fki8J^Q$u3vW*dKnurF5hpvR4(Sk*IO;M!9= zOKwg11=j@Bj8POVG!u5W_EZsjPLB#(-f#sNc{^i&d{lngFNQ1pBcs6uM_3asZr!IP z^9Yf>(2Q3@ZoHq}XRsDh=6jZ{s!Iuj)A?Sj=MK*Lu@=EsHtJ|e;dK4B(MA0&94o~S zSBt2{7YhF~uhsDf$t1c)L=;2=2=xWI)`*%J3<$?jU+7h+|$41MJAMc}? z^Gc(!wH&S`0|Bn zuiJzIrL{l_Y)(69si*YeR(=`N zV*d+*&UyZRoUde!f^SaO(2@w4tpYDKYMR@4a&K<+;pYWAma*x;U(Gj3pLE<&+%10- zm*7HsY@T^yiCWm4X1j@4NAQolm)&LV`>VH6@v2C&zX%}|%cX5*zrSHjvG+<|2rp6T zuL;5Er4ou?dvy?`c#&%Bzt_450(X5G-K4h=@{ zBjL0$2t2|b^a}?}kE+m)=PY1lCCqDjZIrk1H5HKH;vG&sKuB?3`Oaun7ZhxU`F1KZ zipzhwm3ke=qp7*huKD$nf}x((`Aq)Qu}>pqqkW|U9nr5GF8|O_qmrKsJP9M5%J|}{ z!3Yj#K7~kNfyb!TAz+*en#;K}H=C-1dTD$`OYDt2Lul?G7PgPbq&~&}rx4Gqm)$+b zHk;~6_8pyP%uh?^jl4kc*k;@FI@trjI z?-ns^RZI=?kWa#{P6tkbji%V$;st)4)Xt5YvNqsKh}@Ct={T4_>mrd=e!SiuZJBFmRR~zs-vBGW3A)z6KD?vEw&YR66uz zt6?f1N;wImJNs}WeniNnPoG)==F`fpJu(^p2Zr`J^1CNs%2+9?#ExQwoxEmChD2j= zl;mqJqiW~ zYDlgYM{xp@>$~hf#@>C4uDEBuvVHr8IRDw`wo?;3N(+5z98C|+eYb^Z+)00J z7*VO30ML6ouV_*;?|gcaCUI5#7x?rsnsnKZ7-=ckOOqfe`O6CAy>!_pjzpD><6|p1 zZv=ANdGxl7p`XT`PwAQjUNb2=)${qiUn#rdWrf%OX(GokQ@Uh<}9G0b;|VgnsypypK-h$lxBB zMr=LS(n#zZUa_?0mo4D5VCp6f-{RI%Pn5#1Of|Dtl^MT;pBdf;*eH1Hvq+w>XA_MeHp-zS^@hRqk^p zXfgbG9!t4?l6YxJ7#%Pz7@B@-blAIfcQGGtqaC?`CdHmPVBWa@?7C@zCoKufq_p(!y-^FqRtA7&`&GvWE8!zvt{X!g&_=4Vj(o3ob3>QOlDQ=pH|lG61sHch-Lm@7 z`eRl+khl-q9W|LVWp=hl)M3! zdgedXS_bwt`TEg$25eboSnbKgP1gWRKVxh%zHZ+HE<2;Oh%Ce)m zO^6T{pqh*Kemcu#TA5&O^63r>ke#ZcLmPW9H-K-p5xC>Bp)(2(_uTHxZwTd^Yy1I) zG{AsGC~vgQ7x%Ff#2Fo_dfv&@%3olz)JLHm3h?!wxSPtDvs?J)hmfsf#hrIE1gntE z*5+>erxgp0kxB8w-qjt7Kia(W>b}1BIbD<-vB2Xzb!n(=kPpKtJcljV3`Tn~;US#s zTm}lh`{V4g{ngFoa1>(9Awlgka%E9b$m?}r;*n*w?d2d*)6a%n9Fyd z2|8Smg)%n4de8QdRWg=>yjcPJBtt2#R#mRN_B zOkxZ-J)={oxC|to?AN%Pp8RHve>RWjmAqVVNU zW$0?D48sFYM>Q!oxX50|<%YhekkQD0(Px|}U`}%Vc94Ad$T`XvE+V$QN}LqWXod{0 z+no;QOZNEE1p3iQNB8;}5g zQkyGt@RNqkng!WAe?@5f)ToEPbj*!ODe5MBe(K^)yXOUc+VYzmeR$mbQgU^5@;Qyy z#Xsxt+rX3FzoP8Rwy#s%u)408RYnvwdLLOGO@!(JKCp#ZPLJ%f8aZYS5c9;djT#9pWOPd|~z)x%|+*x2y;qQ4FN$7ZZ z>R{P{xUMKm~9`pYKaZy?6aD*qs zIPkBpYoflJ6j6ZS?-h>bg^njWG{1=tm42jp0PFcOC16UVlk{f&!&LP|BgfVgD1Mv2goGLCl(1PpM>)zi6(}tBrt}#tmtO2l z-k?KahQBp&2K>5D2&7F{`$_3cp(osOR*BO7f~2q?~r*m)Eie4d~FLM*NH{5IfIqm$8L z_i8)NiY!Ew< z#EW?k@GJcLWFVwlFyKP{lQ+vs`K7?s1__ZGvQ|v_?0JNgAo!VmMJ&j9QZFX5F!Q}N||=W zr96AH-CS%H06Zhhy({*#Gy?VtjDRDntTQVfKM`<51wk-{4aPUl}7Pt0q56Avg= z0^dWr}235G<2lu&*s)XGI#+G%1DuNehFvdG)LxMNQ z>jtCv+0v6pSpfr|6JU5h81?X@52kfptYRly5yTC*`pj`<{Xw5|=WD{Z=KD39w_ICQ z7APR_2A8w>eTM4DE?2J@maC0ykPfo8Liy~9EJWh%)$Rwo{bA2`jsZ;M5etY1Znem9 z^(;^SmFTOlJKW)hi~OaxnUQXryY(h+HPT&muf@Gf+aZ93cduUc^Fz^(%bgX}Tf5nH z#Psk6jo5Y|d zT-cwDD-ax6OQ~|UO~>HsAGh#l$TbFFNY8oorv0Zr zX*8+%<&X(c3e3hkVkd*TfpdZ!HEj}g%Lz6lxZzqV^4VC6&B;Oaf;T1$CX|yA=`Va> zc}CrJ`ReN;xWwyzfwPb5g)}G|R#T91J@ibPMxyp^#d&r#wHMM&`UF^!zo2M3pyvD+ zLVEmXD1amrW+NWCL+usSOtp2H{ST~$bhA9IS5-DHf6$d@ETlH_FOOqOyZfEtX zipKqqIz(2;^!~EjX2NRPGa|(|LaN_A6XI&Voe3NAIdF9Zw-hgu2asXj5y9Z~fq&-x zT-PS%3f7dLPuCHlFxHQvc7`v$rD$!ryUrI%v4IrvveyHtte`8wdL z2~snwg{ht~*tI{>`=0)r%{H1>e-BirHxzqH>2kktRPtbmqXX+tcrT0Ilpx_ zmGo~S&vSt5k&EovIUGKmv#{G9WFp+9s8=xmN*G0k{z5rzBUDD@1zAw*YK{zg(j=qbXOs!;aE7 zXz_n5ebo2`tc*CXzWz7!rcMvyr>raXyYvX8ZdQv@ISU=~`7c``CG4LC#ZOqj{!iEF z(&uGZ961;V6-vu+Sy2t9<@%p})sX7__}M+aYjYDK5WN2KVqSHFxNcjA^CFtQ@o$wU zNfO4IC~}80!;)f`=GO6b6%%nT#(Fnm#}4f?yo$No8@hV8|G(&8n;@uwl>+Bgh;7U! z@(F$Rb=4ekEXH~>Vy9I9r0gJa%v*ZtU1$&0_0HwJtv}`g%7iL@=wCa~ubM&|%R8LvdGU;!oETLWy553@?c!QcVi6nXp>j!VSuD%Fc z!#M>X7v1Fq$D*&NOK(UHMeI<>Bc>Q+cKk;|H^K!oTpUzSAA-0AtfV-v*4C;cLat5m zTa}$uFr-WWQ9b9~cQXCLiYePy)1l9Su4$>9eea!V{f`JgR~bbK__!a|M=RRrjy0*K zY+p=|#Q;9QiMs!y#!tRVjHmRHEK@Hfw`VXa@FPN9FkSxqKZqV|0Z1?kDt9``d9K9&amR&MRQ&pieP_ec_iSG2Gr(q?}h7?BA;9wAWBiO;kZ@u#xI- zuK&=Lmp`B3n<_cU?;$;M59CUow+kMv&KYv-b*zUoyYaD`4myj2i7-1KEde z_|9ZFM=2MRFvA;T&*!6szhf19 z^48}Yrr1bbZ)R?1l#q!kZ4zKu5edxEk)ul-I&7lWLV9fO&He=z=(@w12F0Ky{zSzX zo3b{BHzq%+y1s8QS9DJ)zsi=Xd5RNO`@o}T7+M)Xt^fxXHib%vOExL#8<(~#Nn$WI z-fh7#8oE3W44+n(Qh<;imbwTV+9_dnIkhL-%-49VJP5=o9SE6P+#VxN$Jl_|f-~qNA5p$6wBOHg zHdegW24zasIN|ot75kY~uQakq`I@Gpi6{Zl2(ul;AB^e*O1~9%$A?@7fYc^yLzY`Z zyJceZKcFUzqp4|NBj7pgmD_@l!D}x=pUQt^V*h9Hs5XioPm2|QQ~XypCR0kt4!6hT zwRC*HYygP+#{|+Vu&lNFP0>jcO=>;FWWKoVNE8qBr1cbZ8G(OCNW}_0U)aGDab-hl z9^g1or0)u$zu`{z6@z470VZP{hg+i;nN^4^;*+tHf?^OS2nne%#c>qX$Sf(4PGQsc zhuVPurFwaCK)8_3+P`Ks^_2p}le+OCTQpqoM22d+t`f?qC85v?(u!tDftxZwbU_8r zuG!y)8r1YCJ(0RZt=cleI-RAcY}3irN>P#s$i(n#R!`>r%h-XYkgbUrD2r98zcTwL zp5L)wt-hh=MlC>EH&F_t>0swJwo9rY;>Ja^wpu2n#sqikM;y!E3B@uc2Ve_U%Yq0! zz@_J8%Jv;N;O;xVD(T(`*&#a_p4${OL+_EnLN*%*_t{0biN#inTR?J1XLo{?kJL|H znyQaI1nyp*#ISvQHj#luEn->!xc4g41NCoIiMkus`(+*rxii2~RQ*BUMNsLOxEoN@ z1J__b54bRnwL<`xltrxlyTxq{*yO1~nYkXF`FHdjD9O!Qx-Hj)d>^+r>?D#5Kg4s4 z!xLxf?GnDZ`_W7qz_$7%_em9o-m`|(Q1VO2i8RMqKZp?*D7gTs=_TgAw+pFm-E?>z zKtU@#1ji?NMzMilz2JE)5-f?G31pkbHxotBQESmm+iDr9h^!8W}~t9;_xB^MIidWj4l?7qt{ z#Du`R#SKa>3_w|sn#VZ4$Mb~#+NA3Ep(Fe%Nv4~1aGSKvmJ#A4&Cb7xb_*}LN_21N zJ$I;Y^#g`%fkjZ`7Mc_E(#^W8Ex6r!v$1fEV%^jijxX|z0t0F%?9KA%PcW9{hx3Yu zm0WP%G&2;(fd((0TuMk8xhyKRae`pOKFe6$3I8{|uRFST!p=rPyf#)x{>qDaX$V>E zLMO0t_-znUxF#IOVZNU3@>8K=qVYEcY^dQVl+gEfk#8vskMZOLTO-}w4`!v>#A$ah zfo%pZbjsnt_lw~#->_(QJ4JfAt+7TMP?m5_9L^)dihzCoY}k*^d}~312A;>zZ5K4; zb7E22=N5J*Hx3xO>~dYjs*2w+chU0=HBPAkh<^Kz{BZi`-?RQbaV~|v;&WpqNUNcC zZ&?BTR;FmgXrYY0VxUn-jqe6~@t4EO-@0okx-kc8E~NX+-mC_&zo!Pl7d-WCfgcp> zW>el4tYC+g$L6hOc)esfcuWF76vl? z4xZTgdk*K1*%$(swkvxzAUptPWssDh-McUI)(wKDpbNKG$qrqyn)9_B!rDzLZ1N%DU>DUa~zWZpQi0G-Kgv6F?x4L){ZM+)&%TjIbBXTzwJqNKL%4_}UkgDO}@+<0yS4TY!t$Hbu>k{^iL8LYwVOoFadn zDz_w8h}9Qgb8zY9F#tBh`uwCf)!z8Wp3x8x(w$+~>QwKvU8$r(yuA3@7@hL{}KAs z6wL>ChaX4~m%J6$-%rBp<3CjUD8r4v#q#1hYkWPbb2N=4cEdWkbu+DJz?9I+^i(jh z~ZVS3sUx=g%){G7Q2uo?t>(;L$)L|jcRv^B_@+y$O31( zKw}Mj(+u$ki@^p3XRvpxhAMD8(K-2mZ4UuN)tKWJFKCqF2d6{!bku+>7PyF^&NZh9 z=-R0`M@~OffB7GwqN#hBQ=?pbx0nqCfV6C#$&E`gk$}5i zDuz<4>7_GZ?3Cq`$~?)+#c!8{179E0XI|S~v%e0dO}9B%3IHW-SktyjXX2fi@?B%) z50(swGy`kTms&G>RP@C>x`XP-DTnF{f(Wlkf78C)-d`#NX$01eFSX`?pZ8mPid__k zQvf-0QFd*}(|4kbg%G~ZpnVD;=2IZS!!9Py=apZC$y0Lk)t1{NnH$#LEvK+5Bj&WQ z{iS`P#0_iHmf%$Oqr66*Rqvvn+R(k*L|TEh1xtuP@z-PNf7HFnr&d~2iP(qgeF6yr z4Q)`dt0GEeMk-ZT8mADy@FAzjPYXC*hsUo6SSEgUYHfB^DpO9(6I zq|HV4JcMs3=pS(3=qkN7+qfyLE$lILOiBYA^Xb9<(7OA>L-((oV%);fpJI^SQ7zXJ z;@zy)w41w_XGxbL2wsw#U^hl>6hI#XKmKzK(mbjaUP44Mi-fr@D*YqGK*OvU{jU?X zRyW>ox~?lllZwH{Qa)js^i=0Ll1@CyvwvJb)bvUi66{2CYTMo!KKBrdD-i`Gv$6Sj z%ALIDS7s?5S5it08ER~JLg@b(_<2)2PX6Q%RZOOm5H-$$j@SSz9$BIa-2Qo5uFY;n zoYK$n*iYs4up^>a9>B(aeZuB@RI}NoKU_Y;-4$Q7F?{`Fj5vP7#`5E713N{)#aBDZ zK`q4JLlAeE6^nm|5@+n~jV#{Op_7QaK=_wl?8Ep&rYzNpspB6++DElIO9*%CyXcWG zE*i?wcVhHPa+B=3Y;q3Xkz5YvOS*~Im2{EHAw6@~XKNa2wZo?Z0#Xn|!hEyGCS(8w z+oyyX`{K(y$5rH5{TCO6@;`P^mXZ)7&LR7D&*7<#jbXzNN78#p;FrW%-(%V{x(t@H zKfo&4QLWPw;!(j`c$5i!sfTz+Ni?v6Qo``kuI_ft{qJqU9<#>*L^MN<1y2d!2>X!h z<;-=I!&ny^Aa?ZtRyJ@8T#XZ^9Cb-lHc~ zVgfF%$KSf9DF34ZaMiHmR_yZ*WFYJ5t9!$XOTv7M$I+w@0CXF(b}0>}p1vR#H)=!N zkAL(}fUbVV;*Pv$63y$Tse*Pd>Og?VWG$y3UNXN*jPTW9%-*>O`2V)Em&_$9)z7z2 z|ES(rs9H|bBfOrFdkGq1fBd`Y8jvfL@lzZNtFhs`AHbYJdM0elwtXUwppU6K{SysJ z*{~64Io)ewXOb@!D=YcOd!q)@Zhx)aH)`ZCJk8^ZTo?mS|)MLJ)BA=^edLetkyb_T;p zCI>PxGbe_PS^oaFa*uR<(pmODu@Py2YeSYU=}XDq3wJ|;fcLm$_11>2?Z)tsStJt>b*)X~&H1lii`k4@H}J-39`P+-vrHb8@v9;~S0+cOO3 zQ{Pcnv-X2J5I>m}o&U8!=vo2KoxU)`WTwA&fyV21V^yhxAEtvV`lwYYfZPQEgjDC- znO^uLrr$UCnsKM)G`>}m6@965pm=&4G%naqzOP{Ku_8&!!4GkMhd(eb?aqWM%qPZWr5v3W&_V7PmogzG&BSdd~G(;S7KTY z*I`b2SqxEjj)J6u7BH?e+3Di@IB~^PstFOm=hqVg=YtH9?JP2U6;mk~ z2N>Uf*0}{t72Hr)_sXI zQ)-QuE-ST8>G5sP^;Q_gIvgS-GvQebFYH!_o;n40WXS4Lqg+Hgsnsx_!F||$57Kt- z{f~@dLk@pLZcx$S{@NTRs{YvYaxLjNrv+tk3*EtW<}(~jy$4ZBRm`PwQa}V66rKVr zjKm$}w0wbse-MX~F#r-F|LYo&gT^N-hl|C}cZ59_QXN5DK$o5puFU$p=WYjsj(7T1 zDS+;_J|$2zbV;uLbpc8M>t5Pcvi{fa?|rLzBrBnT@)nJ{^91u5xSVnhsnlL}L}92r zzNW5{0lAQYguy$LojoIiHkHc-|RZ=;D28kfTYK2yBxq8ihFvLil+VKyI z6qmMDg#Y!G#amY#GC0xDw>r+C>A7?$HsiP2xQ=iA?_N+;H z8h3If@z&;UTnx7iu#gbNcj(#vXpYIilt}XUOqodgu~o7EwXTiebX?bj4yp{t33}kt z$Qn#gH86z|N<{a*Fo~H4s6sOPJc57CM#F#DoY}X4n8eKkI7w*gZP2Z!$7ZBatbcH%6{yd=crX)jngk#f);2&Lj483?pfGRBjmv{H6i|%5)p<|y#=Pq&P zd~LgOr>dX_$zPt?3hs*IT}H0t5%BW&`k&0T{yov!c^{H&BHJhc@&&&?GBD6T1sU#q zl_f#W*Ip`f}R+1#m*AlBlseR&klMohp6$S!Cjm>a0Px)wo0rQ>h=7WF$ zW|b&@MQ(1TPpD-aaCZVgIXqPKe9E9D?k9IXZOA=Jp_R zV0wZ-`&vp0bfZ7w&)&!TW)EB8-^AAfq8T6bd7K^{hU=ZthW1Bv0V`jC=J>&VfdyTq znSq?HYo?nyQJAqxt@$D|dl7Yn`$w+U=h1w87+y(guf)+e@VM(*1VmGqJ36?Zo%i67 zQie_P`m75SJ74=mCCV{5_cm#h_(;G%Hm;b3_!ZB9YIi;nxc$VM~Qby zo;~xZRa`U~rAy6d{IuX zrk9*MJjf}?Ql}@(cWm(gSo#LwNSm(hO|rqxrh?7JPByk}+unF%+jchG*qGS1ZQGjI z$;9~PdH=s^>Qv**>8rc$>gw(z$TQRrnv_@p#8-0kAz5DwXb8V0XrHvsZf}>1-SkE# z7VZmGt?=_xzmh(l{=`-a^?wk^2?c^-h`|sYy#*@d4`T=WVW>3Op~l8*T@6SG%0^_j zH>4{ZrHrN*G8|t56E!Wo-zZ*1;3h{Cl8 zufEU0f03205azdyrJn5T75aAfR=5pEOI2(1>@H=4zI7#&dd=|8{~wz1;c=5fwUH_^ z*|!vafTFSy==MfQP1QYvdRNYW?g$Dpwl+V1QH=PXX6oHd|G5+>h+tEG{wly+fg(BM_C4LYj$Cdyf35>S7O2(q=;}&j4ggjLRdVi`uyi7SqMYvHIgvbcZdv= zyPMTf$#B2UGq=uTqaZi5F_WGI=JJBr=~0!}m)uUkUqLT4Z|1#Jce^}qJe)XYn#x#> zD7k)m?IBzM$iiH3tYVFypMj_4v_T|WWylKvQu%LKJ3;{}ldRPT4v1m0{C7{Rhdkyj zH_B>37-duRryG^wXv|XdoWEom`r+{O0jWJITjCA5s0XfM!36c){$JOTtbAbDBgvTVmw(JO)3FSE zBnJomL&#ThiEeq{AhO?|9L-%=qoB76C&LLZlpF8$FV{l~#a zPMuN=MUBl%*kTF4Q0)%zQbKd)^IkIz^2_c>p~Q#%#lDwUSe{L7vTJ2nWtQ)f#I`>7 zh3`dwG}_>|r*2(Z3<~nU#&SUp3A?Tq(}zM^wg-(pyNxgv=eTGp6Y(JC{BsFmki1au`z`Jd82(!tVw z(9OOvkTgTS`OF4sBYv!KY9v11`E*C8z%qtqaV}?#TEYSp$Od5+r zrI(KUG0ey!@8gyAajz5dlLFhIztp0DN?iMX&34`e7sn@k)=Z~releUSs^#zjezQqD z%XmS}Y-V1yZak_*@9L#e-DS4g&MHm`Y4su?ID_>Ti&VqYr5Jd3R5saqJ-j#^r4;nr z99@z+SM{I{sHKjso(;G;`3;~P5}wSp>;b@JJFFe?$H;eT(abfFU;?m^1QZJ*=L7=7hy0ISl4i62M>azPHv%#Us(qT`L3O8m~FoGNAVke^dr_$=kaM-w1Wcg`Yh!J{POV?6D!GMHP>hUp_ehx zDAK*FX)Y={qVdl>+c(gG$>TqIC*Fkx%2XI?8yhh0ehlZnt*0l?W$0PWzye$CzSwG3 zll(!yM(e>6{0j-=)UbWtrc=A8F@Lz(I$$z;-`Gfuea2lNWuxivV!s1;m(7o`-;q;e zx~OaOik;d!*1wWjjlM;gL~Dxgm5AddiOzRq;UxT-U&z8q z`Qt+(CnuTj0IeV=-DW{8w`-1Fe6zqhH_5^k%qVwQnnno&{J}z;V6nx^MpHVZ#TNp{ zrqEpqKnh@LNfiz&pE-Icy~j@M*@vThOC3^5wKdmG9YU&V$1gs+2ghd**;XN2zE=UO z73ZDuV!k3P&7$O0d1CVNrKb*6VKmzAb}pV+Cunm6Yp z8)Czm3i}ovI&Y{9+*M7TGxsJqmgz$zRQBOZ-8C*{fUEcZ1x_+Zj@|EA+SlTbywmnG zd&Ziw>dXR>a#n*~l4G|!mgZL-W>qGkOb4@#tbmN;!?q5TCRJ!EH=1n0?NMtxtzX0cX1LOBiCYuj;`HPBk-dZfag_PO=GT5Wu(|qx!{sXq?3A3?^?Mt`! zN@Q-^Q36DMmwt9faF-|62 zRyM?BOhshZ^kJUccj(IQMw|~o=&F6nQ{NjDG|@JZUTZ3LIAIVpN@H3uyGQ(4sPk`` z;3!i)hW$&FkR%V zSUBO+vdbNPYP#H-JNiRw@yjk&ogaF<4glr8mOm)VbQ}^DUYb~Q+ltLu9E4&toL5aY zM`Y+@RYP(rJJk2GWME?cwAK>-)AGwdyN3luH0tuI<*fz91Vg=EQqPHgR&)aL;f2-{ z#y%VO%4DFSsW6t`yd5NuC=WYs;LM|ug?}r`PT*BQiRCn*d28{QCfV2XR-P@j-aEtj znc<( zIR}Wl?sHE~*pmP5KsFoTI;{xl3mr>xc_4eEQ5VjoH&QdYsEH?9rXsgo^>%u}8zs zaa-#S_yv#7!tf`ZnF~Um$mr{Jg8@~_ILbFO2B?sITu#(P&q0~nfaSeu_e0UdcLWd?eQSd~>W|X)fm2g*WeSEaMlx-M1GG<^^vX-X z1b3PQbm_{71ZSDpzC z`=yHMKBK-rrq4Dbo8{*Fs|@I0ZJp6n_N*-TSFDHZTqNUgM?(r`{If%ArSM!#l%HaO zgPp2&Ts+kAufo?g+v1gl|5_;;;Ca}ZW%Mg^p$AZ>!s=x-$Q&t-TQ=JcMaANY99;dk zoEBijmHvok#%!Oty-y`C)kef!>hf8~`|s%fqoezviad}MgOY$pnORpKMY7w* zxmQ(=j)!F2i~-J_Mv3cl=Qdi65Z`&*i2k+(CC{%bTgZv4T{?6BnbF#sC@A8j2 zVtr`wJ87heE$&B|WYQ_XF4(4L-o){hvn)0`(m3BU3)ft{lm0TVWLfMa9a1aF*TZav zg$yD{@gFH(fN1(l^p4=TEA@_sxPW>`;##WJPJd}jms{DAAsk3F5G?*`ptcb=KJ`v| zNVZ59hd1@=yPIuA2oWgPJKFcF^vsI=nijq37E?bK$ZqjdTCsobhq(xSAycEqss0iCKm;6Kc;|6%@n>cam4S%2?0 zw?zoCQ?Cv?OdKVoIEb3_BuJMT!ZIb{O+eJT-}~Auw_ZIW%OcO&(&+d#bY^9@Xmc%OMvc_5-gQ$h z7OC>3KRLgD(z1(@k ziZ1!eaMML*ug8)RNTdE~XuRu4VUKvXjUGW5P1EeN$@{5m>$SY1W9#uh;^uDG`n;Kk zzqj-VnFojuXm9Ib*J5vLY*%7$Yo?I_lCwQ%8kLr_{j*)*l(4?cak6pn01i9dIDmVI z4r~p1H^jG$^hCT0T%PZ5CvR@Bf942K)gb4zBMS>+n8$?|8Ue; zK5|G{cXy*St4+y>(0qAo$4`UENwbgC##kKQLIK& zYlc7~pQ}a_L}&CZHYS&7Ukd1dRi%|tT(XDgLL%cUj+va+$wYV9P zX$HR{MVe+i9QWByXxO)!BC0ps!!iWVbArkRTawzuQH}nxy8EvXznb1f`dE$}V6-n# z&F3Z#(7RZ!!0G((8VgMGld`6v03fOUcpW;~Jr|oAEXmgVYz}S0{M)#k`;8EMsVGG| znn8XsknZKn`Pin}H<6Vhv!RG&l*Pjp9HfaUj|3vZgjc~FAU5%FchZnmsfTvNK?V^W z-X5YL^*wTgImT_-oCb#XdiH1B(ObKrZ!`QAv|K-N4xL?!nlGZwuYeWd{EeZsv=`U3 z_l#8ZTVG35nIeo8qr8z=mHzL^3|lk0P&8HbZww(hD@mQI1}jzV!Azaa zTKuKTEjGF?N;Ko5sYo|VKvdo%_M`PRX>Ka#Q9}gdXyvuFD_qTCtcU$Z+&i;bo;vs3e}$4$Pu> zB?F}>N-FE$kV~a2Lc-hA#lehf32O){Y*U6-k6zmQrm4J9YbSGciE_<`PbPyUEdgjX zsp=7i655IphTB}_Kl(3~l_Cr^lqz+;uYW`pDXl!1u_pBm2>?%iHho~rmDW5@n`?($ zbXQrRyZVDw(zOkdHJ29vUOjC^>MJlyY>ja^_c_6My1L<`=28QoeYmbjZG}(XLOWzrgz&h=Yr;x9 zq;r1(B4G-Gt?&fzA&X4zsOE~cl$)cktG>W;5rJp;Uzr-I^*fnbx%kS80V-4yv#afcvfxk4$$$F`>!#5Y5Tv%%DyFmVhi-9t2*g}LzC_(7P{@*nCQ3n zOjLAs@FF1|`=*Pf-eyC8Y(#XFNa#=An25o+{sDZ@Y0QI4028(p%W-nOQ$4ln7LREh ze(|jRThqK_26aur9W%^0`Ht98ekAUqgAi0GO*QB`~4-ViA#T5$wIeo=jD)R&h_ z3`A?2nPoUz>A})36o8dER3({gw@rL>C5@NLT657a>u|xiLaYnYE47{~vnnFtjgh1a zzz0pzQxOiH)1av#9J0YiT>vULeJdI2hf8Yqydspbv<92t0^iG;0ULQ@wz+?a8l7*PkrV!v56LKn_M@!^hAu2@|B`wYCr`OV{0yEFgeIIC_7EGHmL7x1+h7yqWI zx>EhJWv`c-k9+Usm(rIP?mc-+C*R@KO8_f}3$SQb1DV4zwFt&3@5-F7j7krVrWHy} zL%e&LEf1$n6n*b>PgPPSrBE1)uZ&}bpyY);$-{fG(suJ=iMLqSCR0P+ zYk%)c=Rr^CX)|AOTdA?A#hdN2Rij|)Q8_}q5+oVeFW^7k=ut{x=z(WL1l7XXc}C-O zB6Oyzkyaf4+Lc8jG(c<~0@p83J940iz)vEr2Impg#9{m3KXXgO@`iRx811V)QqP|23SPvS7qtLVLV z5vYHI`AA9~ew@P0T1&){cH8_$#_x%6vmKvNQ$q*uXT|DE3sJr9a^R0vT<3_$$LUQ* zMB>(x=O%}Ew0Hyw*cCu-k$i32>8p>87={^Q<~WX#>Lx$yKx&}kG+@6DMTm&K5f)g* z4N6|pUp!h+>#TZFsqwU+ln}D93beHJ)27a^B5_p}6%i{L*U<%&x@c6D)8}{58+PQi zg{RNq+m-O=tN)4RP$hKmq84_E?x^5JT}}WjDjd>XG%ix}KV@V& z9Rrmi)#uqbSDi9B;Ru7VY{p&GQc5Sv5f+W*EzfGo+a{dw7Imm)Ah?po>LL~S!~m|p7sb>UnXJm_^G*4OGsZVx zj#!N~%!uq|eW8gz6vF!{M5<`%CaM4`_9RifUX4|`Z$SIA`rFx?##@45r-m6A!v>8*y>O8zgThn0n>=MYK9`*I=C!% zxNwBX{qOj($&9IN;i+EsjWG&1as3Ah01$UY2-@PxCLXg9n~gYixaUA3OA-KpQoA#H zQb-0st=;-CUvDidm$CSRci_Dz^p7QqcXO5PkrqnNswti^a(`kY4;j=Byy8g@kn0D|p%t#oXZy5G2esw$=$Itn%pg>Ze0Ef#@XHhj;%T~uLe47W6u) z1-8izQJ^fQI$;G7K0_VZ9_^5`}%b}pfv#YW{H!J+bMe0%tk%H(C%~gJ*>$BNZ+*ErL z+0FZnJ<)(owD_Xs`}IoQ>e7FM3fXSlbP96y@=KuUEaE*5S_hI276yM3+uJqpQtmGM zf_8*d{Pe*WwYCuxxM_VheqB@LKP>PzFwt(6AUkDH!!U+?hR|$NQP|4Du`I+*=rdm$v-{5_Rw;NUlL;DUk0T#*U7Y)h>?!4?VvcII zKYKfH^_YvNi(68KghyxF(Qx;2$-B5*Xdt%ng*t%8t-kcfKz(={bwD*IT_tSJ_lsod z9hIFxa&KwPMn?H0-qAt$+)&eHoSQhp9in|6zKb-Z+z(cp~9hG z6x|l!9TmR0{q;`_6O@lwVT8s}5o&^B%?p%Bk4VeF8rw)+}BOg&rJhk%l`bvyAA zaWuoFw=9|BV`tvI>?q24*d!-K|73NO19!+;9D7r@kQ!)xH9>VL4pyiMr2ky+)7*Vr z5}a|KI)o53Sj#v$1q+st9<}yVAu7Q zSxC=NLwm_N5ve-^0-`@=?18ye4=s)o!7jEs?nz3S2p3ot5`?x#=>bNwAS83RB$Qt~ zCH#Ob)Oh``g#rxIr~wAKTKb!N_^3#2HV~Do`o5CE6*-GFiFHAFiGamG8aHEzQ*pl@ zaUMzLOeQuo>NL3>z>>O@KBv4?;vxotz4>=>Iasaggf8`Wl|@YWaqX_Pt)+BCNxYmB zOTkZWR;;BjsPs#j>f=|qY;nj%=d<-`yYZGW2>4tDtIC8c7vTs$JWu-u)3=qO`pz%y z!zEo>>6+_7Z?Z97xUw^Wymo`=VVTS?+$IDYQN~x! z`f>(6s4CiC|GtX7Pl^N0hxsQL)`O6BLLMz{yg7mrLX zwWyB%A7>S9D^O%cj}JsOmR3G#iuWD(g8J~XW&V}rq^^r8mJ6Gu2t+NqjTguAd!h#9 zqI7}gTs&3eIp!=F(6+nLuh zYFbu7mNA%z_!!$g&lO`=??%l6rDot%rH2XMIjL?p&kSd}h1uNGwIfsd~E_rAW1Z3c4d z3#n#M1B;7_XH*@ev-RoCI&|n3Z$30`1@i%qoblBX#0RMGkUOSVm)N62E9+*T5>*Fc zA}MJQ)Ru=z05d4Y0AU|tA0Sf|G3!V$KnW^=T2Mq*>@Wkqyb8`CYF}F5RK}UqdMv%Z z5YTNY)~H~sgzp2$(^g#UT||`B7|04}T4^yMMLA5jq~~DX&AK2GURflI6$`UmUcFH> za~lSxcJ13(8DGka3aw#)$u9lh zh1P)z-)~rD-I>fGwvphHS#u0vcvBaE%_bzG%YTx}_= zq$TBq=bXn;&1WxT3r_fho1WLph_u+Ll@ROoK`}nNRi{OC-WSR~qBtu;FfTcF_>qcfXkZXK5Btmv7~BrXXAI*!Ew|eXq@n#4%($o zg{v&Jjur{a$95S!soF1F|LycUtb|8O#ift9Q+@N=^|i9?K+Tgx&-BVow^*02cq_y) zV>0M967AZrU6WQ`7Gs!v*Un+iRs8Sa=PHP5*>wyger?l1Yj5(={Kqyl1-{cZ53~sI z-CVUm*OsqrT-~O(Zjyg!zT=^@+wSriy&s7W8M;CBpz|^um{N#RBna7a&*NlLrX_5q zh)p?-Io9?ci%6zQ|Id<5s4u|J&-X@i8UG^d-19ma)7yRvAnypQBSgm!gj;858={j6I z^_qrst4ZMKF>R9&pKN|F-K5zi;029STWW$8`W_lwNZ)~goy=XH-z8R`@(a5)=z zh4AHV%|rT!Wsk_0TW4N3N&xo9K33+ZoK zG+N60yt@C3Nx-W9`TnKejt?c{5odRZs1yW?{PgmX8p!R)doI$N%y{>2a&h8md?62^ph z21}0;^?ZS-QlRE+NjVYJ3xw%;vA17IgzYn4sQ~z&3u}IV;VT<4<~C5$BCInf_`HE>6+&-g6nvt~7SgMVNgdbIRP)fiuPJH}|T!$5dgSXh8QkDvAg z@$lE$>7R4#-cmeXtbg)9J#KW8Qb2V+9@4C@{*_PZvY~h)21O`jb2{wZCee^;*mioG zJYdPH=k_F_z3vOVhWQL|i&jq)=IJ8q`fz^o)HS;msuf{i@-}C>0zs|{=en&%oA4i- zS7Vh+KDE1sPo4~Ko>8B20YA?u^%U;9TgRK_<`&B=QJDDn9HHCl6E6M7-X+Z{Xv0T| z+R?7rBJ>ISKlyPQ?A8<6j8T_-03UqN>G;E@^VcrW-BUN+6s4EQgJ;E0+bk(|xG8NC zUu6|U^dGl8L4EOLn%D{*KRtH^ItVHKpjA)tjMr6ihr!NoG!iA>Lx=q0$2vHC^>_W2 z>9>==|GE5P+y)g;qBV9`lnC!7cHMvCe}Qxl;$QK_@7f~l)*JuS^LuV$u1mo4KjAi6 zlN0Qi&;1bA;>ULXEl9x8v;5W92l~@%AGB`$XLKE=pW9?b#;eoPZN~O{HUl)d$Dch> zx|tn64u)-Z9A%ZdFHL-7O@0SOP%R85PjEZe<_9&f`uaio&ClBpp!M64ICePo>4FNl zh)|jBf)-qRF9BBlp+kOe9}eG(+wLIA6b~+3SrZJXcaV?Pcm-Onm1?6~d*?KBAP`{QL|-*(rA6$Ixc zf9rky69WUI}ep3;}5BA(O0SLo4 zv5v~^5{aw5tbO5;WR65mzGEB?$}<>g=)l|4-Z^#j;ubx8LIK2OkPFPc#YGvO{OJ9K z9JoTHNWFr#Xy7V(uHrMQK?@Vs=gt)?A{W>lul@twVw}R-JZwqFQC77mGjYaQl4n3P zeeQ$;2UeIgnvxCr=+4UhI})dJ931*ASHJfw(sbHwixd2GK4?9S<;_g0|MB)cCup27 ztefZh>c(p{p#yev8V%(uSG4%!0L5cf$8Dsh&*dgb&AdE3kF<<1W#9$aET(paswH@m z*ZjfY$xYz*@TCGrMm*n{y!#2U(I@c}3!)gAvAmV(YEy+cR96!PnM}PM+Fw`#hmf%P2sLs>2+n3wML~!9iOuY{5R@7a8 z#>4~k=U{l0K)Yx~Y=1Yy%~f;n5pq48bD}$0eq~CpIvEOCV66R&L_f>iK`^+dq_wH%?{?^uR(%SRhgO7UI)jgq~71#{< zWBW>9&mvRtVPfsm;X`4w_gTL!=uV)+Zm-ecs=3>gzG?Y=36bv7o{e-qCfB+E*34KiE#g8$Yic zVVu2RGA2BUc-w`elK?9(azsScGzs?z#j0dr+&Z=k=+wPn&Hm{Znew{c+f;q^9P;e* ziuAGDVJ&mFp>BP%o3qXCK`G#D=Ub^4 z{{11L#Z*B?F**=T7jFk(;!|(6b@B9=Y7_AOEzsCh<2~ewQj@K(`MbdvANysbMy@}? zyZ@|C!lqQ)l)cET?2g9jsA&1H;(kjn**7OGn-A^x2<&D}WInFRY_!8_G*#luuS8E4 z$%~^YWKW;!lSM7^FCokXcmIZ=?@gQPI+V2PF~scDz*6)kgA*d*RLCf+f}IT6?I2X-&3 z2@R`bR+ZCM>7?xJ_uZbCjzCys|M(m0 zn(X_>Zinvk!O+J8jY*BsAzDwjMt{J1f4~F=E>!&lQiZ1}8=6{`aHMbCidLp3#>OTQ zK7RXKdXYa?OS-WuCQHxz))f~dlolie7i=RB>C}WImN|-+*(;FyRy2Aj1fnJdq9;F5 z(zg*OU(SvlQu*A>KdK_AzjV*m(xIWk%-{9;!$X0K>vS(GgY52hUxz&t;OUQyh zaCy##M{e3jZg_fbMpu#ONL?BWcaP7<_Quk|GBY;^IOgA7s|H5-|J^YhvxhqHqIN@pp0(Qat)AjMI$wTy2e9X^dR?1#GLZ+?Vcfw5xG~ zCHTBN0Uez3;)27&*_D~F^kG7yA%%rw8-4e1-hAX~LsukeL&(tcJ`@1jXocxTh?yPc z(o%p!nnF8g0Qvz!)J`d98Z=}ZDy>p8ovx}33YSo(nX;v=pdB7H?#T*pwKM@ucxF!I zUcUmbUzK*})ATye`kTrT4vlM}`J1|ww9sXAGb=7GK!G$ywSN=p?JZnh{*XDJaGPWP z{&ztD&#RE5s~w#{k)*Za|5e^zYh)pB`j>LFN7?qPtDRd=Vi#4VRB%o zQ-R2zAfG?Xp(^ax2PIjk!GqG&RYV_}+%E97ya2xX6)e_(+3ekj7S`QSARP^EjnSmq z33%H-;7A|l_OId`sp6aiwFUiV5ZU;mX~s3=Q8z>PyV0(F;&0t@+PQCN6kgXhopqXN zo4HvYG!>HH$Ip^LU|2X`_%YrH=A+Vy$W7b@*Nul-o+K=nP-Hg%hZlOBp^@bJ@UE*%3Z1)*5dvoZ@9gopybi!3F8;5)s!{&{|$Ro*Zr{FXF zAGoa0UT=#TM`Oe1^D(U%Fy_v?)AzGoneMf9nF%$F;%fN$i|yFAoQSs^q30ZV{cBIX zNh^QH+cG*8f#jA;CVOZ=JqswU-2tRcM4HAri!l_0JD=FY&9P_kxKB7Sj78N z2`hz65sRK85AEDB$>!_LJ9gq7cjBEkwHZ@C2+MUQmxQFt@5e#UTyu*fbJr&-k(rAL z_}tR_6BvKO1Nl+T7phKQJ*Xv@p190dAsza9e_~@jw*q|i#Z3u?O`DZX$Hh2*v*DfA z#56ULVI)^)>HYq)&MO}?j@ru=|iAXdjnz0t#?ji5*=b?QiL`-7g*0c}ph zQfzn;e&vUbG)K5Y>lt97tW=iRR8wHIbdC z-3{;I2j$_HeXB>e1ozHQyKf&nQ{-V=#Vi0AcXjdE_Z+(eHZauO%fU>?&c+Akl6QUX zJFZ=R{>o{36^Q=P9rL4GoQ$7+U+iK6ntGBt?_y`~2b*z1Na>Z9Nd=dmrZB_O;dP|&fg!dIO~N6RW6 zdG*UhxG}5*eOtN{#3v96#?NFJ6+CxRKL7dSR~zs%&r- zPoGn(rgS*%W`&aTxz9UEZeZnWG<9;ZMma8x8Uin|c?7=1!=w1aWBz%yT)?{J{ENAX zh0Fen`+30%uTk-8p0R}|8-Y%Kg4r&&xMq@)GjCIjBSEMmfix&{+=0S%L6^0+$yD)9 z9EG=8{K%;SX*o@%CxyIjl4zaP#B1}UxiccVe#f5;Uuah?yC-GP^zBCh6?gPLFjA1jNBu=T-^5 z-L)tepVNDB`!Erm0iS4=aeLrcXDv5+w(&_7wAW z{`4+b4umC!E7yw25jm*{NFs$B*N%ZRxz1uBV*0&})Swt|Q#OL;cu%j>xXYd;R8A*Q8x>SWI8Md(YYBqQXC+XfNnKOKt(VN@;+p~VbTTbc)k8b)!A+Btyk0U-_ z3wI~L+rVf1>-K>28~Uvm#;q4QNP~|3-L>0u@mzSLjpkj}P3pw-nwi57BD8hMu*>;VcP^ckhJ2cNVDe$pOeQifi6H3eSGglzws zWsL+$@j9t*t(vR5=t`*p4=-ST!uj(tUQaM%M>Tcn?X>mO$(ZKyOU| z3Rh&mPCvR_Ct2qGTL?qyMraqUqp>3YAOs+}$)+Zm4UbdG0deacia8Ixqm zP;f)W=U29X_M?t(ik|!3R#LxivqNB{7eBy#YYSa*$z>gCmrT;VcPojsaj6GT)%~No z+x<$qFKjYnXfg4g`&Z{rZi&Jds^@!6`sdvg`5Acy!iTlI1`u2IR{+Rp6T7+-=O+NL zbPR6a2QOdfat#5Nsys-qtn_8Sz4T1$(m!Ffi?cA|Dwi2Yo^f+Dy`^5Xk>gcBsxKCcm zAa@)-nkQ^F%;!c(flx+peR0)A3Wh7MNPyGCz-eW14vLeT>MIvd?u?wi2DF71aL&j< z`N#oH;%Gult#HrvhKa_W!}kmyw2XH?8&{dgww(RO&8kumpJ8i)zxx~i$nopQu|5@$ zqBt|Tc~u=wgxS+Q5%sHFn3Wz6fkKbVDkFgc(En2y>Qf4qmu!$)^d!qL$UmaQe_yx< zXz(Q{bcUWlfcSZP^xxanPvBdQXTxg9U3|o&a^hpzPA5{H{0t>QHwN}L4E8oYR)UYh zICm$~MCGX>6u88{2xTYFAEO65!+k@-5Lw6&87Y{LZ_?5sGa)`DH2-$Zt^~|W>z_=W|0}kGA{U5&% z1%(46M-M}f8s6j*D&$qw8Gb=e=|B6UUK=9r!MiG*6GZx`5IuwphyL}DSDm;MOVPvn z_xR(9_Mih1)PW4@;E21+x4!oOSMGc&r(|J=I=4me@1ZJ=Rnv_bO2J_lhVsKr@l68e zhG9yi33Lt$z?-_@3$4hvv2R#|$UFFzJU(!+zT7BJ|7wXwx=5GaELAU; zLpJP!5Bky*frujN@8r_mfI>g2INxWAO&7v%tD|-Slp{Z z{Hp@=CByXB>h%Hvp;m)6hH5I&)s$b$Oe^m}O*dBLh5kHOB2e9cuO0chvU&+|(yAj= zvtcYXAK_HE-Ee3lZe8U+osQZeaW@I=uAubQ;=5wEMJ}ZrVT2u}RESzj3ywnbe+VLU zO2(TG+Dp+B|M(XN{Z0Jb$E~|%sc|TBGaP@s%&K~&=0dx+@_21s+xM>PF8gkZ>hW+0 z{P{@g#_VL8{g~!>DC=>QUvT?Z-(;|7pJ{U3^p9J`zUPp-(9Io%#=ab4g3%FA=quyrKt!#GILt)123FP{ zP8yQi5cLC@p9gw3&9c=LzeknHYZD_VL3Sp$^*CCRIcg&|k#Rie#E;=+f|R-w#51RciE&|~FYKOAiuJ9lf4dUG z4Q%o3gGU^Zk?hj`+R(tnC7HiZ=vvY6By?!bl)a58ZdLA|LR?)pW-QtqMA5 zmGAN-_dHk{3aT$zIoQ|T2=1HaYi({p4G+8#`A1Cu2Y^6-zhdi&-1j6UnxIJu2zq@! zOgUT-eb%1GCwd-?s{6R#NlIn7;Rts_k+Hqv2AK&X0D7+bMleo*ak3HT#xgpxjwf;5 zu!=+uDUR;r{qm$ThAKs`c@{00kr z2UM?!srxoD+7XO)IHKK}zrL}(&I;`$=#IrR-FGUdU(4wmF#YxdR6BJ8IL8DyU*r^{ z>AnjYtAnxH5$m>s#`VTRw+d^UiFLie!f3khCdN9Bv5rNo+Y6dPtHW+zHs1~t3--h@ znl5@!6YEcmbtYonQ34C7wHrFa?v3SH6L2R3z9e2YNQS9&-!8_#fbq{q{5uO<8@twr zTHUbUH?d(`T*lLVpD@~0jCLiW-Bo04h`Hg38It*2_wg(#sgH4PL7cnG)QvS4tfY7q zD@n|jN(vuzQb{~(O5)Y;qYN99_mRW8G)C*lO9Ke9R=;s@wg!r zGeVj86XWSgl?=wq-$^ea*uBN_qY@#blNfLc%o~ijdJ^jbCh_8U(%T4nUqM@Elj|o~ zyve=tp`Nsa5qMQR=~G0wzqmcz8fpu5w78$>LwC_;;ZA zCvpL*^}+fJ^&P|Z8khXV%`M@NHf{Mb!jYl=&KX5Jp%nRK(^Sh@1bGxU*0Tszt3%-! z&mz?Ke->eVlVT4C{qpGU{uXOE6RO8gs2;bk+xa6tb%6&JzGgsayEgV z2TF{H=E0cNN2!No;K;~i!$65q%oXP88H_0p5{PJce!x6o3&#c=Cv5ou0az^wtXjUf zXB8;i_pE{~@}5<=V;)#(Mz{(?f>-Vez6%pV8f1{4R5MHxXk*e&MO8~i3-m^+7 z;Y+ckfzPQFwFH@p743Ug8Cv!nT~Vp0QX*ygo>ht_ea|XWjou8mm6541FJVw!MPzK@ z3^huJS{_n!pl6k;3okMSj*^D8-i=ZOy%kZAhO&FlD%5mWlSm~>mx>a(F!(F+6{U5V z2G!MjR++l$99Pv#mvN;=u&Bde-SSiWKP06**e89NLhf!EOF2f|cZ^qPDd{qtc*rrN$U}eBWva4S^T96{uu3yb>k8EGEE3v;N76odV1XZU+(-Z|GD_4ol z+RZ*JQy9G=swf*? zQcrdOSUMimK?b6re=J0U?y*wjhMF;T1cpK}WX1TKW83wJsr^HNOD*CagYKM~B~b8- z4up0g%5^#Zf{L*CTRNyE+(VY(7>+lzT;cTmsKY z57@*&EnN|yLdf^_| zep}Jcl?aFQtU8oCBDKe}D&88Mo~d#xKasVEkb9`w@70H`jlt-sBaI1IU6z_UH9J(2 z70$u%VGtPt#aQ7S4DY}A*vy1Jbf)D)YtfOkeq{{JNRe38a#g;cVY7e5Q3)SgvV~<8m8{0XG>^(9sBfT9$CTN6ImeG}w z1B=QhHB>|0(;O~IRZlsPGSxhl0jsLfDQQVvPLV-Fj}saNK-8!mv8t*`O^B2F+L?`HMgiq zO`SGMW@?~CO=ZS1QgwvaM^7LkP+U{RtltDZs|;N-N@{9P#gNocfHInbRRwGS0OGl- zV?}s2buOb*{(YD|t1LQOM!Ppuvtl4?=wPihOcYC%si-N9Najlf1LLSEWR#Uk7v)f* ziIiR@g&L^PcnAr(F}+r2bd z$}ZH5NDm5mu={C^2q6ZPv8!o`VTP`>*)Sb5Za_8+>+4tlK{gCK*44B%Y>Z&b zY{-8+p19E-Ptqcf$M;3==-Dzh*mN?_i*2Qo^Ha%S0$MnmmS49v)TSJoOPoqp6nfn( zVEvprfSv5{IS%4@aYUC-s zV+%!#?`-O@9?{(4nW`mRjYl+1yB=GO+JM8&-p!1(jj92|yEyz>S^gNjQ9U&%3SDf) zb(pIpdK zZZ<0#pIiVXdNx1q<3Dd90~;9cZVtcIFt>pZrtyRAhVcq~aC>k6m2^A*c^g+UCVw=B z=FNnlQ7h?k`m;;r8Add*UQjUT@b<)$3# z{g-jfl-zf>?i{ZclqqXkjdv0fm{|%Lq*j6qmI($+8S=gUTha&QeoS{4C?#hks_`C# z;%1ejwN>*q1%Zu1;95reM0h`9?;djhLzg-z;3kZK56N@Hb4G(TR5U7S9Os@ZTjJ%t zeMN2IHDS1i1P(AO$D|WS_VyJt3sgAStZQfTgY4eEdJdRKrgx_S4=X??bB0Iq;~A zJmugiB2O`R3X#xaqo0axd6s}@5n?YX z-P9Ipt(BL~VD-H!5+2M6n;=`;du8@+;_w#F5-qWf{q5v#+PbrRMX0G(eCQS-sHn_W zP}EYcFPV|0l#L~f^1NrMmiQ0&>6Q|Af@uKlNsjR>|M?8W+iaW~1Wy+VT3*?JF9wvE z(Q|;jCY0950RQwX*AidCiqW-?ykDy|^BO#RnLMw6=S2iRSnZDh^*BU5hEsm-Iao`4 zTWK5H^+9F)_%nF?J|^P(LJ~iQ(B0(u06g^0C%y}ww@~(B)K#5}cUYWj`Ih-K&tY2P zS5~oe`LPEcea`E&vdO8 zgk+gLoR7^q_=W(jG3*~qZW1JqCr<)+yePUBiyPlrDfne-G%qnmji*-gjfJ07Ii@mg z83-B&al8rq=l&2ojXde#kspJ4TlWbPzd(7PapD!8dd)Z6TGDKl-M1Vb&!<*3OV_3= z&C0hJ9v(=Z1>m8ZVtjMKGYeTXIC@nq)}gZYc*x^x^fYL`!>mkp@Z+`c_(&PNF9+8_ zaIJCl2Rw(9=Lql|iX4url7rmZkmYldKSh4s2i+;Vgh9_UZj%rjA9*2+BOB9ebnObvCx3jMJ{TA^5NIlm4*`dy^V8LBkEhQ)Kd42u-Q#YUb)Roh1da6|enrp7vw?4+X zW>su+O`EPNg`vKxqOLjt&E-#sdU>PBD_`TNZbPD>a+nC=A21PuZF`uLVgSs5Ab>8| z>j{XFyLz1=&PvRUerfd_XB~=aEA9TmGg7P(&(QY0vNsG*XK6Fzh%(NmG3C8KS;4l^!zGYiJ!1qat1{VD)9-O}zSI>y<(zs-ZBU}OHUcBD$*e(kjKZ(J=of06}!4Y2) zm)nb!bP()Fr{u~#KaI`Kwjf^_N+vzdgc$BfYTkGuFEO>eQ%(%|+yNq|1(sWslvlzD zBjW=MmAX+W?NBMyzNA9bwD2alp)t_0wy`}R{%>yS5P!oi7V2t-;R+OxWoAXTi(0KG z2zetVT)`OV*whlJZ(JiM7J*Hn?)E@OOQ5qo9FSku3bzK(?$!VzH+x4zXm@J}k<&XG zM7y&=L{4pQ812#Dl*mBJ8)JiWX=jmPob9bWQhSRG;?m&S`|U|0!@2b+?T!X)-dr0A z#?pTAx=|bsh-PH$3E*M`?P-v{m27&|#>0sLTzViiDfuU~Lr`skYf73s)68$44DYCGvuEsdUvWns21yR^gA66CB(1@(y+6(#mBG+@m+Yi zFfwAx-qRLe21ZCheWfi4g+@rjZCXu3p;22I7uRI|3_9An65lMY$^6-i7T+kY$>vus zT5N08PquyBqNU`5o~(SsqNPv@db0Y>ik3!g(335nsA#E_>Y1#5hb(F2F-hZNWnZNb zJ?Io=?f~m3#^27bBAtrl%S0V;xh%@MIw9mZ@#N&q0JA2@b=;Y?|3K#d`>hU+`@{B{ zr-j$;t^ zF2c?)T~(Q|f%mW=X)OTLeU+Pv*R-{)uQfz@_n`|bDP^1R@``LiC%Ij`*Mop2Moo=3 z1#fmNYzon8dY`uhE?{JkZsFxM=Y$?|kKMX+jEX4%1YiyTb{AvUiROL*vs!@gnrXsu zuzxX$O#-W>bE09jmu@*W1YksgKNj#emq~ewhy#TPzUnLCRLjNS31^V|XWlDPXq(`8 zxAoEajqSA|1U*8a9IhDa6+v)k^eV+judCL;Ipm&iSmCu*DF~QWBcO%2o>JxD7E0|9 zBH9`3Z=$qr^=`uJ$fi4Pi%`q%VsbCrx^q8Eg>xE_$(E^bS-59mp&U73^W9?I8~rm> z(4P$L0++4cd#u~r_mle|w+h)$85^XhK~9e~3f8;^bZ-WKMcLXsR!evo7tDuXEX7#x z3&+Avt#zv>;TaM5xM9Lq{QVDOQ&{}{klgyUT(kY4NIsS&zs^W+xav{7<=iu+-0|hx z_sJdL!n&4lTb(S#SA>{3EarU%+%29gz-4UjJ{*703mWT1^)+^Y zsF&sbaA{|AyOKZBOZ^1foEuf>yauVTR0eDWi?zu07aEVqD*I@-Dl0Z<>S z%nHLE6E2ZeOcJv^GquDN_!%O85`Lo_XwQwL?UI-YaRwz)O_5X`3?mC?5X(X zYMx&U50)mSk;8Jxes-JuGU6VDdG4A0YQ3 z)@G1!wT4KbaiiR#&Tn7avPn{S6e#R(r@+>ed=E1P*s=EUrN}-^tL%C{X_ye>o|ZU( zJdpnw%3oFl{@P}P!`pzf#Li(kb9k0HJm*=a`IOzbosgC_1bi@5mi= z$s;5$?bfv)0jtT*qeV4kX7YI5vt0AN!E)b(v^DI1o80%@d4%AaZ(aKdd927^E7}Tj z7&IJkPO)=1ojJVE9CmwFXuc0v=7*4$hXlTVllz&YK0uz3KPZ(p`@wIP!=Q4&>9uoE zEKYvT9RA}u7%ZllGQWhho$UXX+#ej}V8{d>70Ba|JTQiY6lMd=4m*YWnZl1u;U~`_ zn(x0X@@GiP*Bc~Jf1DJ@qc)--#DVlVDE-ia&Sq172ryo@%V)d(NnTTalI}TFOX7Yq zDFM=Q-;qR{|4BnxMaz6OiNR{A_%OOH9BOLZOikfv!1>(H;Y;Q)j5#EG4%3o&w4LOK zwEtj#I=OrEFo8IbNMO-}EDkU3Y_{;g9qmLL57?kLiR{BfMtBa_l6ah-Gzy6Pi~Tv| z=JPPnEDVLpc}V4mk_w&S&TuVgrb{lj0GC_`7rr|rseri@dXCVNxNk@*0xsXPpEQz^ zDtX{dTv#lS>67XqWinKn5s`GB1Ui!(bfz$!Ak(SxtkjZNDI{quBv$HdKXR+L?yPpB zBLxGYr;yN*`CKmV1J()$kwcltL?$xHbEK9unFSvJ2wypMfNzy^#rkzM#Y>DMv$HMQ zWW#5dv_v7&(Eq?*hsG+k(%1DABl0P!*hohz75 z2Ghy(tkRPAX7T$#;tuv_k(=YFaaAx7Dn~-00z5e@nal#PdmK#IP;YWBGs*LWv}9JW zPA&k1<;H4&s9}k$49k*PM>M$qJ)HbfKE8n+aQuPy?s3L8Tm^1X=z zb-O`tJGj5c+{ZEZ@t)OMGAs5Z?*}(evHEE8L~;*sd}0itP=f1`NL^7|SQ&xEodQID zbP)NOiA-T4Q$2NBGJoTfrvU==j&Y9OaS->8$+H+?HXzJlgt;J|d&lGjo?4ALAVT;~?%Ilb0}?rJi~%nKgftm-qGMbOEC?IP6dn)(T-; zIqV1!632d0vPxb}ZXLPxj%I;Orwi(GN*XT4wYGLr%GBdt0pvLj`tzB7nCY+agtg=b zrm+?fcE{3fC5!gw{W-=yF1ZEdunuT4>3}A0BDc%&DKm2gwe%m%>Y7Sih7L7bx)X0A zWcX-DhWQ5X(0rx0jZUk;Orer z3VOyP?vK5r0sle=<4c(FY0UU^PlJ}Mw5BrwVP8Oakpuq^{7SF*S8~rK_q?q;C%Q96 zTEJI!k84XB+Cr;Uvd~AyIr_*!N*{SXlfA&RR!indW%7lP_%H0gl-$c59}gBQdK&L+ zB-2=ip_bZS1&A*>=&+5@5}hbmiK$sX~_>TfxkoIOW03~Z^@52h!{elxGqE@O~rEW z#Q0`;Zv(JG2a{rE@;Ebj!qcQBvp#q7Q-JU=tY>)VE049K$`%;z!lUCjJd&w4GH4{Id94hS&3^d8HB{{nvw z`$>yC`F(PCyS}m}E#ND4Q=5@*r+L#d^8Fgn*Esk#GT#rF?}wgdEtyYVB!5gFvAE|r zY!7|J;$G&k|6rl8|0{B7!kYXYx!=2H#bhi#X1WKn(t--6)0`aWdxL~OIkLf*dM5wC z+4#}Zq9y;tbpG2%cjE!=Z#ew7KI3jYc)$r#27$Eo?AOUnB-cl7l4~4i`xe^CDM4z`cV5i z<-JJp0~inYQqqA5E25|DL+&VYvmD(s=S4I;eL3cE11kHgIRpi6@4Jp1?&ch3a}EQZ z3R()k04ceEaEusLR1PF-g@D5QSt%tz;R*IvkXuFW7)RDP6OgszF>7t(Ftn=!UbmKJ zOD5r)rtf9Xq&Jx}IhHdy&eNu)jAuIg0>X99+y(8j)I3&0o<3*)WO53B&DNd1T$fDQ zAR&9(FnjG~xE<8e+9aOH6)XKg$ktd#w)W+0P2+4$_q1y%Gnmm#NGzMA?&XnF%3O$d zAp2=>o^p`$gR2k{Ul9FqB-(*QL(O&Jb};0OMBf2fOC3b{BES?LpQkMKbZ99&K2KQ= z2+(ioN_id%{xGrUGpi{_K;l~VuOhde+^}md47O0*doUNBmmaksk&B}_ z7i%~d3Z70ag-^<*G%B;sA_G@#G3&`~b!BLz5ak>{7#VIXf$)uu?VWOuQjgCEe&;** zu?qT>3e2y~vr$XoEzOh;gAKOM;3=^%Fxlj~t} z$9OhrDO*_jv3+O3c^{q6RHdAV0l6G-it)$k$Ufz-jBqv}oWlsvrsH`rG39UM(q3}P zC60_KIS@@az5_GXO+z`jxEHhaXTbH?N$GJ+>QW|knWtMz>17g^1H#2Hl#9Pe-Uh5T z4;ZEE|78EQ>#8H20~9Fp`PLfYn8qSfXf|h4q-O`U^b6M6b_p<&ia*`K?oZ6_3TF4FXN#7iH0*!%_2soUG)LH8KG&ND z@jsSl`Vz*2q*hM+F8Gx`myU#{d<2O;;qZS$;sfAaOPH))$gRF{{}Dvig}c>WTX@^M z*Q=4f62s{!>s#s@;VW57r}PqC$7)3oZB1jiO-=tT5M$khlpn$W3;TZ+!}2L;>JbEV zk$@c9!;b%@gslcEu>L^;#;>zK9{g-Vz&{wuiA^5(hmq?im)5iWspQgGPd{z<_%lRP z2{;GCN=v9+T{o*{a?~i;gpM847GB@7G3;zbunG|Wv!fO9y|4aEvlaRG_8hDES+B%D z0uU|`uOBbc`?F)HP=Bskp?6VvuZp=s{RKdT)h_(S;4f!?1>}mSSAJUR_KzobUvg>F z#=pO_q@4veqef4-3W`(n99PxUQnyZhC`afC&j`T@Q|!eV&lisPCvb6A3n0zUmKXe! zAayGH3U~U}ol~sr9O6ZHk?^b}cl_AS<_Pp)k2&E`2fZVh-VCNUQ$T6{Sxg7EbrUMs zKcC!%qV#g?+kvhOKavbj7^^)!0 zOBEclaR#IUlGI6~jVrj3)dXO5ql48g%!-%W{cA*W&Cl!Yeps4Fc#r)}4Y0iRIjM+nG{lPdk(J_uq;Bl;&ya{SX1I>xjKJf`(u&Frob7@B_@6Sx*2UhQXk>&FsMK7qH8OS)tJ+g!)w1`-tROELpz z;1ZTH?@inT(6tWwd_k1|cBX%aK+yck;NmWT_;1wNuOG(ki3hNs)Xw~5>&XAG>k5^` z0qWmN>Sy8-l`&ei)PXO#zXJRRaNyy(|1ol(bYDrbOA$@LH$>9-(-<{^Qj)%c=*939 zP~bHR|Fh)obdCa?5`aLCB=F~P3K7cz7S0k`lgj@>f8|0O1^!o^<1q@_K^DY)QazbJ=Bc+}syjH~b_}@AOY_9k8_<6W`L?0&3i4fvzFwK_Ys!sm8><`V z%9jP?H^|XW&}#qDu{M^vN8o6w|KWfyFyIp<*KcD8DXyk|ioRV^);VURH&E(&nd>iP zuA3P3Jxs-0f~g;3z*}an-$6h1RjL0(->c+%3VpB0TwiDAy1p&cP-W!$CX{~>=T>wT zpeoj2TvwrFIxSPcXlZGj$21>?&=fr_1AQKe{ID6x%QAF5tJh`*D{UyI8qNWJ3`jKc zn3jZo+5}9CN1sN%LEuaMP3G}NOCHAl2YWgOP0%_vRwFhPTF`(r3jsZ0hMOCRH2_VKhw(5 zN5<&ViqTgn%caj!E@P=&lG3G-DsOBBbEd%2(vF2RIbFz==jv%k;lmT~A=-iS&g6&d z@!`pqBK0of=dJksG~@V+dCKc7GsZ<2V+;P$PC(ij=%cAe+NtOx1);Q)(03g9jz{0Y zGSf>OJ*-7TD(yUse7Gzc*$V2kCZmnzXkm=j!vRNQK&`up*tE0pDeYUOh0u2d`BtLu z5b_<0z7?|K?lw+0IFG*QzFpEHt>tRm^UdLL+P&uRIPE@xq@_JTuLCGN`1pI7_7?cx zWx$pu~`eKn(OJ71ZP;$B7Q0xXG4qfAnvLoA<13nUB8S|HC^YIwzYl$E z@Ho921KK6chpf8VK=yG5*~6IZ-c0!cp5lR;V!83$r2URusb!+>Fu z(i0_gTDhG}cM3k^9DE*UK8u;pK_a=9v6T2+2OU}~G>O5lVZ-24rx~myn!%e#8Eq(T zFzeZ8tU*N5Bgoi*KGvhiSdIaUB=aYWah$3WU+EyuN|6~GnfNA=TFdAr;x7X6zX9bz zyhxhC`lJ~bNS?fUlJO@5pmU2E=cA7&3>imb08Jd9D#1a<>TpA2vqAI(JJG>uO!Oiq zda+2ZWn4-`zqcNW$dJ9jVAd7MxE145FOYE``uP3K=*55wC9kK8kXN|bY=>7mSg{^X z26qA(q7!&p%b-pmE)!U>a&yMJk`=3$X1s#&|4F`g(8rxY#v>R&oxw9fWCim;(IYg4 zJHiILM;z=9W_EnIE@QU<(K0?Hb`z}DPcwDN?s69YBgD_7vu2rIOwDtUjE^zkJ<0A_ zS(i=W&_WC%KwPE%wqB6lH@sp14m=5Y`Ri|~Wq z;=p4e@O%j5gZY_Ttfw$Ck0F<=US!g8MJAbw&g@1qyo;2%5(5sFx!hUKFGz#g^$Kcm z4}_EFOTaiy9+nk6=VExtC!+PUS*63Ik4%h4k7O zE~K__UAS?h`L!K%wY{W<>~EITh-=M~8gZR~(MH@LOA3sl^jlIRs|*!pK4d>KXs9sr zUggM2Kn%uOq9ZGm66I0H$a1Ab*=qR6GFhVhLXI2(IT@KtzEW~a$fZtXBu%DA(ga{+ zA?E)^u9%xJV4GY>{JCHzo@kTHi0|5#5%+49rFNucw#`S?p!i2GT(oS?+=a7mg@aje z1;)$+XD*vbzR@#gE?u@{(V@n}nTIT1wA6T5F0XX06##Q*8BxlnEnl`w1TJ1ObLmnF z3obi&QLRh(m}PU8%$(`=q=Leh2r@OMz~cEc54A)qg#c@uGI>9@m6M3DVx}z&H!fvO}$ymGZh{D3j?zBzVC5#@51G4QuE3wW&?syUTeRE&D1mF0Yca=`5X`SpMi?Ti$`Z76SA45awHHV6!bP=8gE8Ok ztOKXkZ0)`ER_{#~xi&6+0~wwAR8->0|_lqH(1CVWDx&RNHSZ{%2P@Ho}5Fl(zwr)6Ct-|AtBt}ko3gpR{^1A#}n7u7`gr?L=0o)v}{^h%GMDrfgdD7K-SNa>nG)Mgjm}w zoHa&E@gD4;`frnJHlI1j9w!jA>`6rRWGB@Hh(66iH5>E`hw<$t+0>4+Cn6djb0eK*-JKUpl82|Xgo;IeggxZlN>)QUKj4R_8E>f<)MEy zX$ImiSaSRrKnovV7fX^YoyIg-f8W89)k|~O(n`)Gky^`{Az7xR#Kv+mu;e?3 zatwDmf^loenS}wQQTYmQ>FDu32fvG%UkmeV73s8`9^$uOln($*CG=t28Rasw^UrBR z6kd_dfwQT}Y?vyC&P?STjS*Q}GG_}0G|L=(t8NDA@%uUQ@DxkGlJjttNU7!YQ69ok z@*w9x`mlEx=Oxa?HHgFNL^;f9 zujJd=>qHmVX3#y;PB%Hrq?^lUeRGEh3@ta6=-%V(G0f$NxfZ^;djVfwbk0pCcQ^v_ zf#2M83`mlEf2d-%9I9_Aj6fczfj zZoz;yN%*HS(So}g*EfnLYfH<0pk@ zK)Lj~<=%pT{JQ0C$AD`j+5eU^S?-_{9GmOOyt$tHCbRvgK+tk`6WfDgXA24eDQrtD zmnl$2fp20Gw zLf7mc;X*KlJE@XqnBcPlN-JTD5GBt8%3YAn6FBfC@PEtxUF5z_?i!H*OBsu5Te5kN(GjeYG3=$;_S`X~{nYl2*cFsFJq;Wf#_cZK(pU);?^a z`_tJ^*PWJpOztO&imo*?3Lxa=d6^e)UZ`H4u90Hv=T1xQV*a60Of2)rp_}VO4)E^sSXgOY&o(N^bGv0R$fX9 z0i{F99mWSzIa4wdB45L$Qn?nNXY6J7l}}MyrlBlmweqL?c~if%MkLotSxK$58Uxbs z7Zx4+3a1!Y+qde;t9!}nG6L}mOzGj6Vj2GC<8K!JvdU2D2n@&o(9u)KrU`Ty85T^Q zJeD4Y2^Qh+82l~6Up~fHT8se&vO9lMV%(|^KVJ8LYitL%tI=ezZ`yoTOLm4Jg^0{vI_)~ zR>mqTWfuZU7UUsy6m%M7bl=*$`MGy1W4j4ummwG%PAG%LjN#n7m0e9P3P{SXi}*!S zGA1&eO8s2=cz(7qRDV=wd&hd?6kjT61rEQ-E$e;E_IhS}gTT|uc$>29CP0}hx}#D9 zq=aSY{=YNIt&FlAQP>(^8JI*H&MOXOq*GINFS+-LJQqgEvyv~!`8=8P3?=7l?K!Ul zk-OY-{yKBMpE*Au@U${kSuJ}IP~f_bWv)5@m{A^Klt&SThjwK!$QjNSAIhF4_c?N( z?K`uLk#J_!TlBB(ZkM&EvG=$Y(3U3x2JG! z-{suCC(>%=G^ZR4r=&HuyjuY#Uz4~oRM5rP6|*rFPaMlX#DI5bJxgFv4)a;AY zDP!u{vTmO+r;L?6=c*LLt|F~+FN~79ou-Uw)AJhzn$n;vQ!pM61uN4qfQFux!_X(s zO=>0TY%%R1KsMFt5Lh41s-Bf>hPX0Mq}3|9G%5=q?F;saVr4PL>O%&4( zk&H?Ub<#nu9G8AN z^%(A_i69RKD|ax#dj*nKc|SG!lYkv-u2;f>OzJ7@r&qo5O-#jW6P16*fO}+VRjHL` zIh8?FRx*{hnaVpNrB?YKQMnRCv%Y!|OfjZj&3-y}74%>#R_UwUjR9{-Dr30fEXOj4 zNRLS*$WzFmm_m-xf(bcP?YX0o5ACcy$smB0qNU?GpPKFtwNIZDM*|BE1&uWsFCYL8Q|;;0%Ej!mc0Kqzrad zL6J(YGMb9^7ewQcT@VZ>q_Mf);CbYdE=ur1a!DgGcrm}qQpu1?c}9(%zEZY`eM>N~ zv)L^CjUeO`N8#_`!oP$I|5AaV1$j?C2-BoAeiMSUn;6{2Qw*kpQpHQ1zDbhVuW(Ic zb7Q-lq^56;L60$bttjC3&bqpAI}~vGe*ENyzP`NrFlalZvvNl8X4XVZW8)sdTfxsC z#vmCl3zB)^AdRVm_mI1T`zK^3c|*C%{ZVayv@r}?oia194wznIFV(biE>%7k7Q9cS z*Mj#mod*Eou~^FE;l92?**cZj`Js*$^+OzdR4E1CjS7NkigaE*3DS5vNaN|?^W^R% z_XS(~GO`TiAPPum6ROZaK})Cjl+$r3n)J zNQ8J($ZmnJ2DFV%rLs3tMJI z>&;jq3t}=CL~CQ0VN4-oT?_?LHMp{wNoZ9v5ZF8Z%b zsTZKtRC2J{c=gPKLDo}_%6OJ5gKq?>+ALtSDn2z=)iZ$h4@ZwOH$-p$Co1hf?Tmig z|0&3a$JkYHx-^3=tycYoT(a*{MXTLabOy5O9DDa~Eg~qsEwcEgmC-XE9%sUlDS0$b zExU}pxa`j5vO7;;XjSJkw+nzP>tF8 zUQ_iTxMlUa`!-D2{rH<}ZfIF>%+MEmdwJFz{H5xa`wsZTf7O$P&wTZ6bHWR~y?KjP z9~E4ex~O(r%Msgaza8=Go~?`OMX*Q{tiMp-F>J4K$zR;u68>n@mM?{v>7k~k)uFm| z!AIXe{)uzFPY)});ey>+`@e7rP$1LL!Isf)y|C{uO;=vh&^+~!1t%_$IRXO^!TF8f zY#Y+?vv%`ockJ2n+gVqDr22Ki)g@tX_L6xg-F4HLdEs5R*UJ=eE-84}FPk2J|H#%A zD=$Ckt83r7dqr<=$>MO^#!!3X#&COZ`}WyA^Pk&2bDz%xU6Vdva=$2{*`dy^V8LBk zEhQ)Kd42u-Q#YUb)Rohxs&{hlJ8mF%a*qpz_K)#S?yA`CDrYuMF;68JrLZj;$U)p?XYJph3)58yh;qftg*cf&2hmj^5H5ZVo_R>93A; z@(<{ul9EJ^+1V5hz+K*O$$CdyXB}KxZeDW^mzD%jI<8;xHR*J#x#gzrTs5V6)3!)X zNkn23$d=rUZNZR-zHRa&LCDCK^yW?6E)X)@hJk@D6b6Q(rm=v5`S3`&5r2b?6+0Fr zv6d@eXl;YCUyqHK&j%bO&9QQm!p-$&8<1CGyS4)3f@~phbSTiW`ltx?pj>>%3G^jIpzg10bsGEK9Ei^R_Pe|MgKm=*%0m4`34X9AtJR|L|Pc7 zV4A1^@e(0gxbb;NbTEkau-<7hbb z_$)xM;kOd->;QNK&_oVLkr-GMagv7pfQ15J0|6KD58y|JL=A^w14kePqShKW$W*)| zZG`c`IUoj#keIQ4$7vQcl3r6cAcgF4aA~`FI1E{`rhQQpQZY}|Qr-f;6>EPqS)Es+#B13+45KVjA5^8r077w{A(a-LhgzPm1WTrI-qUXzkJ|PDg0pR;c z?D#U&T(1HHc)orV6-G1qMueSC@GDO%DB`f6-Ja|VR8JiyS6ONJU-SkPHb}9V{q!M@ zK2dKE{oyNA=_IPph#pX~@F((UeQfl%KS7LP&Y}(b&hrwY)Wr)+LwH+>W4HJy!0kJ_ zuc${JA{cb5J$VXMJBN6TY%IW;j%=RGe0Y+XNJNy%C@%u zemA+_o<#@5q1sf0`Z*B5jlz-!*VIL+6b3DCbV)5L0$J~fxDn7NY-M!iAlD&l(_e07 zB#!%{47Ff22Yv39w-)f;S;+CBc7lc7bVaEI7P2{_(DsjS6Lxl8I9I?Nr{xFoi}E}H z9y0?g*j@#{_=nq69pEOga|%M;Vyb58W;U>zxRikr)2~#XUNsrrZr7ygoV*~9sC~U; zWfi(iu0|_01Dm(yMK(V*%)9C&v+SoH3e?Yd{JKNaVYI%-A2F5eF|s-tXqb#&#S^*h zJvM-E`=um;$JQ!E#*{v>kz64~IbtscEKI}1Y@?t0&!uhKN>2Mt%>A->wGe1#1$rvS zRRKNi=7r1l%iLv$j&QMrTe6+9iCDzBh9g9Qr4{_yvSkxm6zJF@B${M+Vq!R5J&uJh zk%n`ywE_ZdF6Xpxm3jDf0#UIqlP=FGTGTFJ{BEHryEm(f#eZ8q}ZSkS_$s7G1U@1Ri( z-h{3i5tr7f#g?;&W@3%3_0<5g6FF?DxjmtZH2ont-K6ZVp>LRv$L5v+10}`vP_dCl z(O6%^Q9BG;i)K<->|c=7fg>bV(C@aO!!U$xuFUo%2Vi@Rbpj#?*ES=64g5TYr1-zK zE7wPry16PxH}2}ZB*$~k(t+<$fPodxSUJewK^W)ZYyw$+vELbQkH-KHAVx<(Z|<1> zF5;7jP>4%_{%Asb-9Xx%WZ{I?g=16UZRmg)g?4qE`<2su}GXLQ^79pNfh$M zT?)JF=Qc(vLCYvw2!(CkD1eIFE~9}^8ZLHmLj)RV`8IzPAk}@?2#Bq9&?u-hraZh| zu@}A<*bQg$pXmX~4==5)GTj4Gjn;-~8077Hi|I->_^?9!q?pFFX+`zT7}cQ0{GC43 zTugKqwM5rIrw3ga?CK|NGP+97HqlF^xe!6UL^H^O{Y0f1o9@WSpSUMkbR3go0K4MwhCHT1aiO$5TWRk6ED|F-a1{PTu=nRyNhtO;cp&{@JcLfC zwjrQmiV6r4Kn*{f0NiLCnPIfO?~k2$pe=X5|fh1$~i$aU~10({Sd{ zFpIj_xBZn2=gZougSKc5i!?gIVEm*4V;w^?wzgK6s3SX@_9W{^dbdSPKUJ)4I!TCT z>2jiMdB@f&-3@j%hmJ$}#`x&fQDW)`tD-&(rDDt5Es+*e%IZ8dQIxWx6(m(wHPi3h zA~d<%J6hK@;)wL;rQ)!*fl=D+M+qEGuauUAKBh3Kba0>q%ZmOD(L$=H4HF`okt z7%Q}~Me+W?jdbu1+I}cSiwrI_!*o73M>g$c#Hi(ZO573^TZIPadd&3LaY4*FQ4+(U z4_=aStH1anLGym_34WC(20Rd2l$8-@7Bxa*k-Ic9`Fq5Cn^AlW?~J|o4v{0Cxg#u- zI1dt0mao*86==xhhXZKHW7`<5#Nr&gM(iv&&~%xlrY21zawpVmpg59=Sfp$bQh+WZ zB@#l$%M6X`uTG1nFT;DJSq>?PC>J#1u0TrB#T*<8d}SIRrQek9EQ`f|U=eP8@n&Ob z=eXiPRwOwV`I1S0F({Z+epy(u)dW2GN;tzzy9TejvH@TrQIdunwWMTKf|MAep%yAd z+7T99q+SdfvsHhl`^Z76*aoH!8mD(L-3`lx%}}xb(iV5z3ZNp7=C7&_>6BT{vVZI% znw36r%A)CPTsg<_WYqGAu9z@xW{BFTpn??8w0Q8*e`#0bfm-vKX!Pk_gh3rsGE<zrsuO)N|}hv{g0fExHQX ztzUeb4j^c&tuhyTG4xd$XHFxBY-Uh1naOyoT3>z(uVpZd#lwM#`*#&t*N$!lKKF7# zzYZ6}ISFVOCGyb?N?3N&P-JY+u;#YqLjWW01Q*8AjYbp{ z`^n*ro@g0IKy?(BUyOECX2;>K*92)0%rae~XF!#iE*p<&OTRLRaWgbpi)+=?Y0gX( zmHnj&p;3{U+FIEC+>o>J9`vyTmBHXCmTymMVUG86#)bvc z7Jl;S-3w>6xJ|-H*y8KB8k%{PWudqSpfwl)L+xv?+@Z1jp;GJ8G#-Oo`*L(^!pfq) zTxIv-SsDqdghnQt20*-~tS*h#K6xZ^@#cQ1#F4kvwK=ej{!=f`F?Y3#{Y{+l7z5WR z*)31+gRht6Vx*fZ!j>8j-6}U*%HAq}#%@s*Zx;(?uvc;%k1x<@#%_@+t~9pqxvwqm zi$n20`i9aCakV`_*d^XcTLL%82yvAyc&@QlDFz%Gy6?HsXYJsvEUc-oujrv$0ix~; zaC#+!-LVgB68)FW4r-E52c$XvrqkJ?>|HTL*0y50GIf;2dsB6kH5eK&kG0Gk$TC}j z#An#eMpNu;Q|i*WiygE`?Ml)-z1!I?zaQ>t9`5CFzR?eQhX!A?>fJQ&Orep8^O6_p z(*Ed@{pb!4pu^mOKe|y+kv#o@g;tz%%tLjwNB*@#`hC;dR$PO*V?`>=A}nPPK_BxK z8}^m>>QetY+EN$aq3v!14R+6>iO_t%FO@sNh>OI4C*DML_zg`2?Ts*6Rwi2HKfeVeD~B1`Ghf{ENAk~ub3MusRrfaRvDv${O^yk)^@;mPGf!oU zq#cU&Qb+r7yVGN$+JoS{1P%XS{Nz`Z^6GN8$JD2cm?QW>zy4LCT)o)^!TiPl`qB>n z1^x67PIK*g<$WRpG`-vASZP_{jHp+~e4qj)!(8wZJp*16DGz9vNV7#tgPX>a9n_FI zf_AXFDaJBbcfA+(d(8b1Z`oz6F9vT%n8kbagt6&nVm@Z{NUaHzH1;!!Ol1=pUxcuM&n@(P$_%Ep-um||Z4Q&jnSBXJkDg80%p65OT_v_mIOnIfh>fOO zn)v7qU;!yJ`=SgRYgcN{?AsH}Y261iF2SU5i*_5F>2a@jx1kI6iE~^t-H9qFMO@#r6p*ohE9$7R9${3()5_6#iCHXR# z39Bt}7R%j_=DE9H(mX>%QHC?y?(WGw#_)E^t0%5V}(eG=P)?cZu z#~@!rlx%Fon7aAk`mRppnrf|5%NVCwtQ4((LUjB_PFHT3JYzO$;We{HE?f$X*_IQp zQ_(N7=bmV}F@3?Zfi{If`LBN7Ke5HRB|pRl><=iduEl#H4F80H`h)+H-#-Dn^#-kG zs2jj($*z$^wvN2wnwUEhJc1~wb?v8Wh04c)oGas1izb=@%A@gj<@q7lA zMe-Q;D@)}v-N(QGUJKouB#{HLf zrjt!nq9wlPE?)02$TQ*JD=>c&2QEXH0Rd5l4E^q`sV_EiZPUIg6m*-P4p~(w?dC<0 zII{Ft9`4igRJGXj`g43@J6-G^T;orCN9c5haeSKhE(_C=zrD;=FF^XnkSdsGI6p{3 zbg-ULb&jIXL8N+JHuoF6EgXm+k^hr%eX3`&Vcvy}EAfDiJjfaclE(YkzhT1h54}k; zy@kymO9F3-18Yq#!2dZfIv|JiYfpnS3G~O$VAiBeZxx!@FpKTMFp3MylX^R#4godY zrw7Siq?95hT4%{!v^_+LA{cRb%Yfxaev@QhM) zM))KDYC$E8xxnHh3AGJXTyUu>Rw4_yP4Hu;nu9i6gA8sfS~i`yJEh zJ_kJzaO@T@-9`d-o*E3alZbF0d2hA9EE9J%Qg}`gXy3uq84-kSdbrz^CXpQ`9ZW9) zW%J@<0o;pEI1d`3Z~E(aoI8$QsL@{Uz!)696`0JGkjPXVfel>F&rNYNlq_c?Mefbj z0;I2k&Vh>LKjD}84Eci;lE_&Z;f+aYOC!cCsNk50xNUSU>&}2R7X1^4Y5Q!m48mgw z-LGn|nbKgb{bYa5c^-FWPxXC?SiPZ~7u?r*z) zdP~O8>lK7YIMy2)iABH@%oh(qo$4!7j|HY}c& zB#aJBZq+~5 z)rZ_{2*Nwki$37zX~G%UV|JuVnrDof7;gtAZPm-%xe>d+Z>x7W$+=0Q>|}cqcx$33 ziJs9|uep7{M_7tyz;=+@3ku=6r-OhzDQdYB!3J$i*Npabn>M}~rx%yi95NqeKRyB! zA7~lvg5=mv(d!=P{Tt^5#U|S1UbKOabd@~-%EGKI6H6zB0J^z zXMz`+f;nIB$SM-nrbR6;Wc$9DD2#4>$}?g+P1Fvs?QCoe%lV;pdS2`_ZOeTAxW=wv zTOH7SeU_SblAWf`LEi-yn>wW5l)VN7j%M7EHT_OLfA%0fyLH?ve*3BIE*GJI4#7R3 zEuV6?c(GdbFJMp2AWsSV@*HZV2GFHHlCxB>JzR5a6_rt?(<{vD-X*Z&WM4Let4RNW zrpupsd$1~>ukD+RHF>gOdnivAUc=k02bJad!*Oyu_`SQ`SEtE$O;QMUnZL!K;V*>34k^ zzlNUh4NOQbu|%ZH&3i|!?toUXd=B~JP>XiTl$)(Y)8CQZFCL3XB_EQWkge{IsZ z7&p9KpNwxD?1qz(y7-w$@7!+V2S@nO zG5TQkLm9tucFwb$fQMMZJ+!|I*@Sg4zAQuI*24NxG@ngW4~NjRlx+Op7V&Pu39?PL zS084xw6A=gg|D2_Q(Z9|+i(}y7boHNYMWUfUfVGf9)cWqd`|esw<|WxY`KTbxcri* z2X*OTF)uv*^Xz_6(s*>IJUqjm9vVQFp54f4uTaJO%BvjyWly>N9^H}|udp55#PPcp zq`tuy=LiDbLzW7Ogfs#>t?>4k?X;F`Q5b@?f$7E}1-sr6U(RqGMGS-|K>S6&O2*EtJiEHrb$981zfk2Cod?rfx zz~gN|jZ>_3dkoWMuuYJLZ=o;UbHIWZMSVoC+D?5@@oO=w-MchTUbR>0jD8qU?}Hg@ zZv`@m_VF{Hg8!EAH8AxFEzp>6k1-I~2SVZA^X_8m#dq^?dWD#-Jr?yaCv|%E06SL# zzuI#*uBkEzmD$4b58=x^eu|QPeE-s%#iuoB@xjwLfn+dX_y@0^o4MY_kyznGa0$if z4;PZvQ|t;%@4+*AJ}~l!15>_rsRyT6>%K}Wa_Q4%^TQ`i?+099#0T~bH5AG1LmLhr zh%_q3?TwSXKhAxDVp{SUsT|ou|J>3#`>>5=gdTjx+k<^5O{9hP793-T@@)>xy%x~t zhH|v2)6`g72NH8Y79r|ko$FM?xgg1ZiA#( zy;5Ph{>Wq(M*-T5`(BSb0ln6y&Rr_Fcf8e zq}ZhQ-s--E*jiozZIRc^qv!~)ud?Z1nA2Z;;PR8-;%Mf_f1A8E1q2?VJEE^n%Cl-M^sZg1>f1Q&vx z{C>#)DKF2Ud*}EQ$k#sM&h~GQSnt|Gn>5-pYVF>7Fe8C&`vyApN(s42MhESEW(Vy& zc)S|I+(`xy0V`1A)#@UW27Q?U!w{?>#_lsU1|Ypp4v zDW!IAGk7TQmL!b_f7Ha&zL`K7$P(O}xx*Lem;xx{F7r$*biydzCiuWn1b7=b?;hyW z@~$SJc9V|cmV9p2-p(j@`bo7mXgxS7z;2y%j+|)&iA8NcGcX}b;e7%&%qQ`XU)Jpf|I zb=tr;BPi21VLh%mSsLUU`pS#3t5I24SDmDe80_SFH$vHK95APhjt`REV$}QgCIcWq zp3vlQ+|s1=y12#r1mRDi=ky-XZ3dX*Gv>bo$9Q752gi5?G{qe)jFe8D< zaBZ+Xh?iV}+llY{o%7LG;fYr-ok<&8z)HxBI-eukJ&n@=XO!n7mheCYh!{0TOhgVG z0kuPVYjbmL2|(_1b1$1;ct>~Or{;K3_YnLnT;@dFn;Ukru;C5K#LSN3ag2C+N7J1lPgit;>RQy%1LjMU4h+u<0mhj+Sf-XS>cK9i2ML-*7Z?x-Jh zgnK3DML98lVCKcOvD@yKr?ec>w^kS!KE_d$(ue&c8GmWD2I${D$$ok-X&AsRfDm#O z&>FRj4ME7h@cj2i^l|D_WEihDfjA{&qdF!~ONGA%P2ey>f$$IRJ{!B;F-yK#QeIB( zu`o(>+v7AhLo%Y10{iub-$kU%b%O>AFn;W*rsNmIhlc*Z&;O@w``_`ulNEI;!3{_o z^d%o9y2riT9w$%n@~QquO7c#jKl_BKc?3oqSvQrn30ocL0AV;DEqdK%J0#E*I% zgq(Bhvjugb*y`=1QP(FOPQwQUuljQ8II%lU?9eD#hjiO%KwaiZPPoPF4sJ2x^|6Jx zCwb?|maM(j9=o)0$v(*jedW$p74Z!~sp%K=Vpe~ZB9UyDFt6}EAoQAn= z`|L?uzM?d{2Mfz8trG(A4JZOZIs@}efZr!eRHHsN>KrfwEf~Lg^Hzb1-7bv(YstX@8NyrBQ;q5axjvd->-iQ}(1ECg5f z`77VpQ}>WR72bJ!izkK5>>Kvkczt~nYpYjxe-+o&`d;0l_VftQw|A0U&*(AT6?fTT zG1GTny?AAS%uYj|vHLaIN{r2I&Xnymm`~Z8>k{??nl2t24W`c9^wwX~N~!5BEpola z{~)7>n;Uoky`5)@sEe%E5wHvsv{?O}yByz2SU(qkS!){sYJfgF=1@mt< zpGYHiTRbZcxK>12wYA_h^t@~#_T6rDN+9g-l<(84wr#ujlmArZ()gTKxo08k0Rc=L zDE=#1@iee0@&8c_unc03M*RN>dNE?d)D-aF=tL|k3>sA zQIf#lj#tlserS>nqLOM95~zr&-QINNO~66u`HgW!RW&eFL0j8c*qno*sfsloUVJw3 z7}FzRh2)5(`wLX1Xoi47;EAH$bC|l&7Ub!#mHHzs+FFk z@z|s*_p8xKm{mREL;;$jicvaWAtS8J+$jL18S0c_n&u&-Jyqpph&Z-rw4D8ttUC|e z&9;nm+tF0Ct3cc$S=T|E{y zfrlpVd^4Vr`Q`PS?ZGtPrkGFbapwHZ|&)nJBL#)|t4)fh~4!8Rx=N)ivjw*92 zqz^(#*EsPu0j>e4v?A})Ox_K#BtA!Nz!Mu6GpN6`Z&WGFkKBh#HnSLvGs2@#)a4)~ z8Z;ti;+ntv#8nXK)#(r2A5Ec99Tuzndx6JZ;ADSZo0wZ|`hwb^0>UdeX{+@K9EVl& zVhdogKZH_Bnm931u>Z0v3tYCR8CThHoU7$_`uL{4dl%Mw^j{aFw^-FWvWQ)p{-wS+ zd2EI>5sq;GbXc`&it}4wz;V2E{DH`QFqMb`uN;8m>u^B*fXFmB=R?F+v1cvf$V0Pe zCEB?Xrko>ZZinjqjSYw8Y~*_a@Nw$z`cpX=VQm7TxVC zxCU@^{rUG8mrlMs2?)lw+h#B*@mXZz*Ib-i<;>mi{Dh)gQ)vN$r zVKttfp>UVAU+BNr$G4rH57sN`NXN-JLSa?sWQD!yZ@x~nE@i+-e<)(3C0#7Hn}H! z{-kioUl7B`G^3nS7={Xm>j-h>b^0nYHxkF3J&|Vu%AK2WU1Q65u^r?Rlam^XCw*iZ8<8qpH<)TC zQXK(Ihur63;mQuqAy?aG)%t61i9TDFa>Ug$G@yHY$tOPV(Tl!&ynIR1KRrunkYCde zw3_aREnw3uGJ!!iBivE4_NCED`u1(bODp|_5t2^2XNN#y8czmla+G4Ex|6r4)?D7) z=&mjPX<|+xCS`YSw+ucJ9N_kP)~3hK8qGN_IHM$2Jln}fTI^@n&N|v-g@n1jau{FN z%HF%iUXwt6lOG+as`unmmF)WhcsHv3_e)YQVTXY{kz*7GM%K`5 z5#tY6H{%iEKf?zi!5<-S!pqfe{Dp&X*i|q~`qB=SHz+d4Xq>XB9Rg{vPvhgGL)TEz zm_%n19(->d3XO`1AdI;JIJq&)Ble&em4bwAxOUHs0~EJ6^(KmHx~=Kf@16u{)7}jOk)` z(_~PQU&|30eWSgT$}Gv|W!yxm64#VG#$l2A0kHiE-~nz#-x!5C`c{g-%p@Qk zaN3~55EoL7>1LV>!6i z%5*jA30tVX8zky>bVXv>*mg;BL^<`x7BGoEXoWIN-L!%o1j9m+gAU>a)R(bN)oyDG zb7Y?H5_p%4nUyta527Z6y2PY>D*3ds^|ftcpEe%B9BthlDflX85%ui*Jr>O~#H4C9 zv8tza9%+UNKZhi{l`bSc^u(Q(e-;@IKT+_%6`65=DUzjGt&?GEed4zL%lN4Wd~Tde z+&9}8-dKtca3PU~B77S6J(~U%cgdP~AT^wpFZ&2CRnFP3P>w1HxBN|!dIN}zOiU8b z)rDi$G`utxG5my+k;>Tnlqy1C*kcaXew3Q2=b(V~v-3lp9V4WUDUMqVHr9+bawm>y zdT%L$Zn?o#t&f@mjyC!|N}&utm1iordTlMew;BW7CN?7Lzpz8DB{W7YX=)^PM>fY| z4^3m`9N)(KYfmVJ*rnwfP6c;J^WUP?B#{&SG5%Tvo1BvIZ*AJG_PV*i2T{%xq%%Wh zekpXvBqA?$mr?>3ZZRaG&i!;@fTk2R(^<#jf`dA__(#sIREK6d6O4HnK`yO;x-eZO z>Bm}QgcU}evo*9v;E5!7B4x-YaKgI#1@)gyf;+r@E6ihkIrBH1ZYfUJ75Sp*S1jmN z-0?xFuPv>xa=jA?!Te-Wh}EA%bk3Nn7ljLttO_UC&74kHJ3953c;9GD)z#kPQgS$m6 zd{X*Be*d-Z97-47Z7*48xJH|O2LQsL%}~0z7WR??#?H@b4MKCykzEwi(~J7@$7_%} zVu;u!j>RH%#%7iWdAvrAXLd3TVjlQcw`&4!;{;waSB%65qex-08~((09k^kPw!_2xT9CrMC#Le}A<>l*Rvf#qYYI@}pvgfsGUwdIZd0s%kc zq>pBV2is=@;m^VhMz)r?R$~Ups9Tv}-DL=O6@kW-2vPGj49&3#1+H|}hDMD%5fKHh z)o}Po^1M3DDj{hdfGHnsCLc}rt|~!-s+(eAF=YDs)D6bzU!yL??gYQl1^97PqasSZ zyFB1yzH)P*4h{OTmm+R=F(33uc1x*2UX~5b0wiQe*Nk^UAQJf~3^om0i<=IH(|iCe*n@tEAAdo$;8 zxbzCe$e~PV>(aTL!}-W;@!JFvX9yAhf=wOXX}xf|Jb$y;+uts4u9eQhm9aVWuI9eJ z&Nh2qPQngWmE^=lZH|fVIKGF1qi^r@hN@~lZnNgo7NlK@16k}m%rm$(t!A?UDBQvg z172S$oX*v@5_IoHE!#1>1zn+|V~DH(ICd;{enEDA5&qYCc$-cm{<625&gijbsCu_i zyrL@jtK-iK{{UN-&=%F}HJ2<7oN!*L1a1;1a?uZ5Hoiy(n0QwW;j_qHx5aji4Jw#P zgqdEU+v_RM-2;SDeMSbR5xrKpC#3b~*D-as*F};-&fShdlMC-4Fzh)Yj!dIF$@1P4 z?vLD%2)oE3cT3z`@tK*I7`r_G@$ND%952LV(fo<=1Ft z#N2k-wx2M+A4z_HaaO+4H+@z@eVwQ`;#xmh^}hKDd%(S_qrJQ72HrvX*HqXuKp6p=2zmTNu>o3jH;RJbJKR620;7m&7#@^W! z7jT)|2ioOj_1fm@>kFNtU6#(HzIJ12(!}l>#+iLTOqL)xfM7djfI%7dUMO`p?XYO} zEhZOk#9x3rbRW|7*%9=tZWP!%#fWKfOc{xcG>6t8BN8CZ-zWP6OFXE{%^Mv*vz5jw zYoYropbe_SMvQ(x*1Z(MzuV;}D1v;_Hoj_}Km%-~j$m}-4Qx`MH-Z~DN`hlYzrAo! zyvo3m!>1aMT8<cR}?)P@0 zFTH2f{VW)B(`EZYiN-LN5a9FlAk8^M^urtO&*(CW?l8!c$Yz$HtO`7dU z`inQ&CkCGCAe2>0=e{G@PB@f@wH==pHe_EAK|h+*6+Z5Hq@E=bv*sk(C$a$VG-&ms zdxE<L%wg>pKZr(k}u1_Udk+nj$)}_65qm_&4(q}-#V(Jlks6+7I zD0nb7>^sxPI31He3`S)^f@Oe+RAul`N@!$^6n|tL83NGV3P`THtOm7d3 z%o}fTMbe&Yz>9cxvSCaYR<-FBHkfS4K*}0vz$IB7W;EQ0upeu95Yjs9Zu9D2G%*tK zO=4#^{yVz`&ATuBH=qx}UhAu_d{>;rm~F!1DK5;jOL&+Z;Q<~k&{W||Keu4RMCpsi z!D4o3nf#}OIW_dA%16ha8FK$4i9ufI;VzYe0ev?2L0;X`%bCNz*KX>GY4e{}$R)hV z6n2|4yA7_|fZ$QmKrAP{B6uUBaQcD7o<}dO8#LY!%X~f5-@m`_o8zLXumT=T3>dj_zq z85;DAD{L{#Z*dd-xybHQGzU}lEX-IsAthK8Kt-Nojev+1B~cq_P>M)#v`HV1pOBeGEJ^a+qg>a8eX@-556o#;2EvwE)Kph;~l%X&m^-2NU>OQ9}Ok5Ne(6k zzDEV*S~5wNbpbB2qtSZ0q(qIg`e~XaApt=%pTiZy?J51YzJJ{Ao;(L_>jf8kefhGR z$V~S52tQvUV3^hn$QXot!V&CaN?;Va&Ta1I>*Gp^W~YLEQ4EYf`5X})?MUnW^YXtx zznDGP?QMcmvl=$#=dJktQ4bpn^5OyC!!5wbx3KLh8AbnUNY{z`lMaG?J*1##7{cf_&>U4)c-_ z_dq`gZa`DJ3r?dCVS5;>BarCdcDm=2`c3)k*WX8P?IJtQ8oM;oM5I`wXU{O?B-2en zl6$&dNBV*t%S+QB&Ov5n5b?=LcFTp#f3}Y6_4)vuCmg{oR%dxL`BsfSUGxKjF1o_5 zjMJ29#c5sHD}1*)^E$~uL3M{C{m7dY+!^e~mm4t5T`^T8tOnDi^4zmobnDZHLS-CF zcU1czwn1wvt*uTo;bxJv7n731?S^8Yrsd0zcLOTbsQaB?w1fg@c&PSW;@)0`#_qE6 zd%y#KFgTR$kO$!uT6wK{F z#!+20Q4oAtM-~)bsUBXQtNv@hYeKOZyK&aZeAnCVVko`xpq~9yh1`ev{@Y&u^Qxn= zWs8QcYAk+)@Z2y4uZo{_QO@I|BFCkybaUTVRJ;goy3(-*`W?XaswJcr;!O+O3{l!& zP`T;NY-&LUX~Gu!%3~rNpKM5g?7?>4cD#h7+thPX<7+D&vKqohE9TJ5!7dz~G_sYh1@Fu}ECCmXqE@^Oi|NxR z4ss=E7Yf$bdo;_7=T&qi%WxNtg2)K>w^kW91Bp3pRNyH*|gaU^Prs=sw5cn zwF<|>0w0@CqV8y=yXG&*;}>0= zu;8*URO8@0EToKo79J8xH#$P^+ z=h4lrv4dS`*+Y)MoX3RqwyqwG-a{*)L-;o5)`fH4g2yuT1|stKV6r|(Ock#kDzena zM+dsa8@=^TgKR5j?<+-*vBuk|OSOVDt{wHC3-P)08WHAnh{5A|IR>IS!Fm6IVLqDz zMcId%h`;3o1<(!hbl?an;zeNo<<8R9bKsQzGwG-fWM;oY9;A5WFo&r%b9SCvF4_}j zl&cyX$Eb7X0cNO-;nVp6+ zW)vQYyVU3rvIlh+5r3!ds;!-U$H}xV4tQ*;PK&N#ohw*-gN(p}eS6Z)H{%bT|I37Ev$5nA&!$q7J!H%@kKGjh%H{ zLMSyk)anAu^^MXW_5~`%9R?RrMfifhtnHm@x`E8qNQ&Xq8w3Z610`3BDi`XE zsEUPES+q-^!mreh^;A@ZaIocJX*lEuafZ_tQlykKGlZ>>JcVY@0ClQ{)d04FV-eI4 zDa{BBuas=GXw@l2Cw$TlaWYD=F&*CPCx*Y7NG~A4Ief`}o}~-)_zT~U0|l>B&autX z`Q^$^y^%uS)yGJruwaa&LUk%c05eklqgc2F zq-(GxwQJa}-!f~@`oeWrve?&19vyTYs-g!@^~ZEdAXn!~9nhK?Z>n^N4~E`}Y%|iA zSc@^G*WSqtMJ0F&iVSQiJd1mI`Ol?;Q<W4IXHZ>LYPirQ}NtBp}~dQ{61=_?*0#l zsiL-BZ1(6rF%flEUYlv|Q3qYVBnSP{{5}*xclW&a`$KM7JXs;aet(Bv`6lt;4g(IH zRZ&XmhtS*O$ZhU!Vr7Ql2XJX!pev(?wn(ny9U_9INv~n;Xm;S1GKXHsX2w)&$dq%w z#9((J!ZK|g3YrHzh3$h*R!zJ)l9R&f3g4`T*W$aK5%^^WiAlGCM6GI-z2R|Pn;ih9 zi(7j~yN&?|L7aql?p4N9v-{<`KNVn+6udul9ifaF&$b3YH;)*!JA47kGk9}j> z*V|$FjgOc^T7ct&5Rl|&_?rWN`Bt1Y)MIUf%QDS6IZcbF0Mbtf{$wlL*@sqra<}(= zQg5#@bJ30(^qyQa*(}u?_OjB=u64_|cFsmt4h$sz)rI*!m_PE+{H!{RmlrKa0w9`% z+nIJg??aqNJb<<#{-Wla8M#tQ1KDl;avFjHte+M*>5%HGWwvf=r-#`x{%mGFMtRP-$|DuqTHEz9E z$%xAw(`jy{mt5XJ85Y#Rx|pc3bJ^AhlyueK5QOf$G%}S%uYVf;n&-#< zWWbb4#kyl^B(C}Y>0*~Q3zmV(3H)J3%}A`Vn0FAY=MmaG&B98KC~wX{*@xX+=7g#C ze2Q-fQa~>hFXR$~;SDZGEKv~_k`s-Wv(FII>o}|nrDR68{x}-U@2YG#D>&e=o zSKDRlwE=hBvI?c^9qYM!Z294AgEDZq=g-$Z=)Mq3>md!;%IvY@wGDV=}YPLIU zDE{c9njr;eK>u{WIY6wUC|i4`F)rc$EuSd|R^*IHe`zzO@NcZ$gIDgB>`7o-)nBlp zZm=D*R8pDNlCl7N6w`$nm06}4y)o?wiZc%?$j#l7GNnUFP*gVvSAGlQv|Q2xjo0Md zE64*B34qU^T##w``PSG>;PSpR&x(jsGIaNsNyer8>70lWsc1oNoz}7{CB4=()-}2< za&BAm4JvqB^9-87sZL7#>$k~M1t0jZ62^_|PQbj!D>E4b%Z|>DT!?IyS(%-fZoI+%Nr)yRTcyB~y8_G(ynoJKa6vF$cA?V9aG}hnVy;yRlEx1st!%$CsN!D7%4f zp#Bd4i9mM0fT^wQW(mdOqwF?g7Yqs?c?)(Br7kudD;?GOV@Bexnedis)}8d?v7o-Llm<71~b|-!UMr zy9UI@g^18ky9^|AWkfRfAfiGtSN48ZKwLHfI)wopJZ_05`PYMl&~^~As|eX1LC8J> zGSJPHePA7Imw|4s>_g87woKUO%05xcy+klHFABo=GsbubV{}I=1LFgPaY+D1ntr$- z{{fKyv<|V${smP3rp+lt|0Cg7*+F_?5XfI@^1zgP)wN6xy+rtq3B*?qe6V0D`>)kv zmtiO!VbO)D$ah@RJ z?V@EU>F3@Gwh>|jIO0yqgiZAk7f}3chfHwPT*u5=GYOj83gKPIU=fEV<;0U4`cOWS zVOPJS*Z4%1Z)0`X(Yi=%1j97GhTNy+mK3%zyp|{2 zmMO2cme}Q>!zic4Wq1+d!hleo#xa(QLKjOw^w7GrR?V=0ga+2|)&WQ`u9lAmk}=j& zyBwD2<>M&(5s1t7X!#D<_ji#6PzsL^0E02Lya`}-v^wo_ z*r}H9OfoK@PZ!9>%bQ6ixaP`bN48vcV9RG>hVCMDVX2RPc%vpQtmX6iPQ4%qUq@2+ z3P1|7h4NWIx|?;VT@K#A^4TQg7bK(APp6VI3=%*vQN9mJz`V44j>~YQgj^!0h?yQK z%J-vuU==Apkf>y}t`X(DQNN~`dzQCQ2BUAa(QR)aE}OCChf26iLScj`Umoz}rRk=r z*8GF!Ph=uqUI%Fgf-q5KgwM@v&>T$f%RvTF-fbBzKRUQJGy(?_5KhEd(O87 z8nl`&Urln>A->M&F3$hTRW`f)dc?1z_&M~mQJdQvt?3fU zR1+g0IPA+ofK>i8Wqp)>E~KAxwGg8zT_M|(5D-I@{|$W;`%L?V|`md;zRBcKgr7#Q8r7Vu%*&z{UmHUuZt)|xHP_dzeck3c z#7Oy|jErHT;EHRZ^)8}nAkEt-Y?pnlJucOg8k<7cAQ~ATsJI#l>#$bv6{jUrS$a~p zS_*_+w5_WPQ!}|xJ>(?^Dopl1M~*?i_7|q)Qc?GCQEO^CXrDx?^?UN_17Tz76AEV& zBPU3>eb$<2VI*Gr5?DJ*Z$|aC>H^;Jbjy*AG~?JBaUnn*xeLfvd<8h-s0d9QyiVRs zCHi>D_{}KQ9S`})0saMY+->81&KHNNYlnbCx&N@g9SYFitq zB~!c5Z=GTP(Kod2#7Zl%Y}b4g3Z%1C(aEb~Fc1_+vmv`1-~gQkFG~0D-tGHCDs7!(&gA~Fen0~! zkM2M$AUPA&n$1VGJ_F3U!BMRVMztmbl|Enh_9<=VWnv(FyfRN`dmLI$<|7|eG_SXt zi~@%8+?Qn3L5{tLQjsNX1Jps}WXN}pvcGcyj-ZSZoP%rsyWyq>Npmh{NTX9>za&lz zl0p|U9$i)m+1~nISJJ4YVUeT;)k#gpt3Rnp<0yjZ#(K&trW@;{9jn!6vP0#ogK4F{ z!#9ZF&mA*v<1*-nJQtf|GELFVA^BVI1K<>0%u;CimX#m?cW*XF01m_l{D?@Ad_>U1 zhvW2&_|y+kK67)U?f@i*OSsQH%JC)9=?Ri>;1Fm!oN+=O%W^5B*KsAZX&ml!t>aLe zz>jml$+C|N$~m4jZDRw<8L;gJEgZ#U4kILZ;OYt_*%gr?m?3^Q!7L&}@DLuzV1hFr zMCQTfcPqgwE2Ajy@#J?a$}20lC>Y>=r&1gX+;1^NdClew6j|A{2DEka(_VQ_BZppy zC)>B6!V-JVAx)@V>rXG`o_T=iV|b(UGZ^L4P1z{geCL1OX`Via+e|@{D`4T$)w({5 ztif#Wy{B!Nrq!J*{R{!7cwF%k1w<$L=qcpD%Sag;?efe?Y?iYUFLM(gX>6`6oy*rJ z_#|YrC8<0fIeM4h5u;w3!6fJm0V@nOaTF=KuMZ~3$rTeWkx|L$9;#3Dw08EkM_opd z6|1|tXdBr3I=JtF9?aISY;qcazab3KSqAcP#bEDW=3#^0tMKlpj~}}^`{@%VbbNod z%hMNk_GPhMo?2yDCDSY`y~?s0j^k4bx|@y*J4Vr8ta8DY%Z6XPXrQwhIj4z0-6gVo zjU72Cn`fF^Lq((7r3m8yDY8&yf)C=zVigrn6OlvI-v_c$ui@dF6ehQFkKi4NhJtNm zm3!D4=~-t-pa~S|BVToXpLmgV>ZZdH6;15O(O&1?Y+=1Vr5}Hb8aU+WlzrScWdI7r z0O%M1I(EGsISyqVul2=y`T}e?B0uTxPxSV6uk>i+MotM*6poxOp_~LqMB_PfHtaGT zWG$X5Ol=OO*krd}2w>=|#P!B3N?gu1&Z)N5w3zE$xv0Cfhb^~46&0jvo=a z{>X~~UENb~b93lkHbG9)#;y<0YmOnY7tkL82u>a&FK@6T&_0d4s`A1zH1dXoZ{rLe zfIKBDM9;H%?C6zhv~Bl6`i#{xGckP%Oz!~GyGPlP_WkIH}*w#$I)Z@~3;YqA~r7)U-LBO;O;#QqTZH+f9#Tuzn& zpCR>gk9kr={6t3nE8#aftgr$q=c~fh=CHk$wo)A<@0+iBO;o*o0;;!zTfGX~tzJcr z)ofS5g=R&FvKJs;AmK2>#fkroH7f&1FT?08n!Psu-Y3tSNQ{6niVk zpwWg^LB&W3e+V@=G?*@zpv-0{Q`r@d8nHXkNGnL-2?2PZG+VJH@N8vGwJV^dQt>0# z3LL%+D=H`s%e;yz2@?`lLubbLlmQtTAZr7nX>1(jMSL2&WeY%jDiGHIajiAYt{4R{ zbzY163egg(7!v@>ES#G01Z|hg&FI{uL0v;q9|!<-H9(C8sBzYGyJ9>*OduI|sdwY2 zNMnT{4DS`95LB^?gp;zgq7$K3yh_{gj>lA&zZ+C3jr(ybju%o;tF za=?lyx{~6DYV)r&=&)$QDP9(He&Q~Xf@ZtXpIiIe(O2o7xcDl}nCM4erh8roDM<7J zN|0$p^i7KVQ6jHVWTP(mI_F_I+G))mb>HaobniI^JP&_UXiK(CG&5XG89^#%Y*jcTfEK?EC zG_Q(S3+<{=?0k}E&2+g7m!ovK9*?qWYf2FR$W9v=)u50OPU$LZ5GkoN7QK0mQ(M&7%B3(4}dt)1|Wp?ar#LtoNd~;&# zl@mG!MFSJDIqFliE%`B$5 z0rN3yr5yt)TI^RO;O|~PcCjZZemmmgTQBykgwMe?Tf;OU5z^Nf>8gg6J?%cI-;nnC z5B*U83#h*b)IV6O>=-CNVlR*}<#2+AZ(oeOcIU!YBlenvZ%X)iaIv5G`^-6MZ;Cm`lap2F`b^9y|6fAiPJA;Fve|X9@r6f4EMOWTg2+ZSKMBIcqw5 zI~R3!sbNHep|wJ2FF%;=0p=rs`J2^i$Kd)h_Av>VL5T1Li@7GqJ9s4h!d_w{{*d7|bxpOI=L|lAu z#|tGa3c?FigmG`_R7+Kz9B_(Y1A(ND1++R!jsTIdHd9DzD5 zKAY~Jj`%c+|B!yl1I9-ZQY%OdA&1cY`yoD`;@i^CR@$Zgi;h#&r^LGHAK}ogaHzfr z4%G_p^Sh9MH2qZQw(ze7;`8XD*b>E~6xmuLKca~2QpC5QNQp#-Q$%ya98pg#?dc)E zBarX;d&qAAwG&VewT`gkFy4)mF>mNv#D#1l-m5oB=&XeMfKe#DV2@AMu05|x&RN;H zLbJ{5$;t+EvJ(D*_C30VJ6Vapin3m@HrVms=sQXsT$f@+rM^w)f)>Oa&)g`6!C9}e+mb|HcR@NB-Kumre#@wgx~uxCSi#f3)qT( z%lQ}Efr(O17^eH>Ejlmk>J!`Y<*jx4H8l0X$xZ_2W{D`@_aljI!!cQOB}y2tY|zHP z;n?RA`wz!H)eq~Wy0-2W9i2;7_ed|jluEtR?VI$N^-~UqFTvv&kH;}V39%EHD+MiF+)ttKS51u-8uP$l_qIo!Hs!>Y*!;+H7|5Fy=UkX%q+BZbCM<5<(!B5CXA; z5QruAFiZiBF737o*(2Yk+v;TgDxwOy!Tvx6{w1)%evcZ0bttiyl4K_gr|0{Sn0H9b z7l8`(HpI+>nE5OQpN+)+B;i)X50bD&!iC1>nORkDrO2B7RbAgx(n|vB`!yL9ZV^~t z*tI8G0d$d)WGAr1ODtxSXBlSmYJ!P|5=%K7J`f2p9#5>yQV%a!Vi5RR*W*++B-gz~ z+gVl;g6)FpkXL~^U<#S&QBv##7LkcQ5|gGD{}PGoD30MaA@s=!p-)a6g*`(51JLMH zxW3Rt5NKT*PyRfAS%X;7`|*4o>` z-xxAl-A>~>eT?UF=L+Xbn|HLf#O{^3%C_OW{ekZi-~+Q=;vyx_PMjLJJ(oC>FUl5S z;&hIkqCsr*aYE&-rjkzzY@|MbxC|gRDIson8zZuYPQNrv5)=Y_8Nz9d+ zD581xe$5N!g!3-hv}x3=U0dci&z?0coVN*r?sUD?C+?z>v2~M>!}7#E65eYN=J>1U zsR&i`d|l16>gno=)yvy^IyG5e-aS;zvw;=78@TR61@Bj4?8E~A_Dd4;8+yqwPfR>Q zVoyW-amPixgijcz*go(Ak6`~?!#+Df_h`H?li-g7@xBDSPXg~#D!-k;3Ni6J67vC* zSLa)rytNz$*>cD1di8~nEYYX;2$FKEdmRDfW*5J{z<|Q3|dxSgA+Ca{2vPVr=!^s z%F@=w-D_K1x`6y`2=}-k-1$EO?mq+fhf0*4_zNKYmBbLuKxj(6A>M5AkNN2$E>qpa zrxJdqI(;llH4KreHVPEi=3IWWdsnosZ0YN6>FaD;roT4%#QU8;C$K&{qCTIaK5B+` zuATS-;Jzd=wC9%`P*NRs&~-SkM!(P+_<>YHPayCE zT;SFDF7WCCCBd$Swp4WyNvK17xP&7N_5cH#E?j+O^5d zpfHwIzsZ?iM#4*+(9FL(^L(aY2gzTMmR^?A94;7%#(o#QtOJ7DS;QRvovO>nF;?}9 zoGvs|)zdj9DgxD$IMyh!9XK{lV&gd`=ULS$jtMl3GX}Wasj}rb+1(b|F{Zpg#R*UF@8h~(y{S72=$2}p=F3m% z^p|MU0}GcLaCFu@$M*?WXwC09CfboTzvkFO5__0qztl~ALyD&#-93vjKPq^d%6i`= z3Z^F%F8CeliS75AzbO%R3ijV?X#c(7b^0j4=ST|ezZYPWqDJ=LYh?eu=1YS{j=F;f z6LpNIG};>(Et@_A?cbE}!mtnRM?j0s_nNPj2)hQm?=`ghUO)@?d`#|YY4^S0A;e|( zy;gSLYl{NVx|j&5*0lGi?*x?-+EPl{ zJFt{Slv06GDp_b0LaR6d>MgZ3)F87+F5K(+?#MUp zf`myDP6aPNqjeCexn1FY8s;sd^$vm$=6Wh>qYvgfz?=q{>brT1UArqvrvtIVO9Unu zCu?`-8?irIyO)G>0${EYm}@o6{yMGY*y#Wy^2ow|AHeega4rDOQ`zlW_(`bUj|5yx z0^s(gmZsT-m`c`)^RZfSK32O32aN8MXFTd9EIe1EytQtL7bOu#7C!Am`E#Ib1IooJ zyItE30CY}QcoyP9<5;`g2gEIsnyX&}xh=`Yy*Lyqq{VIFpM6N41rjhe)^@A>b}c9y zYgbX;8xdbE;W~rF)Is8&2^Bt}q1;~6(bL{8biIXtRicV=eK7t480!J!FqPM?g)T_# z5d;JJh_y#cc-+Qk#+fj5c?98I3gM1K-_q8#44^2F07Se1ioyVJJOHSb!5wz(k5S-> z1mF*d3matZ=};VD08|o%vXh2f&}P}X%Q z3!7}IYw+jQEdMeBcD%$+;F#>ur;g&-I*G04 z*cw?Wy`=iq@)dS{QspxYOeK#^LA~fZC$pY69X|*hUz)oXpJKZVaa*QO5 zN>tE_{;CW6>!`dPcRHuJN z5@C0kzE;8;B)rksgbG3~@TdZ7%SehRzLkN#Mo$0(at z!^p#S8brwHev&|h_eD@>Oy5Bg@s&%_M2PVU4^J3Vq-OoOi5FXYK0gphyqbvY+Yw5>H zz=I?Jn^);4D1JQRvKmi6BcZ4hrk}&980v3SaH^{O&ARfBR=X}(!^23sa@e2zRelk__=kGDq2NYv0b>~|X5V+o9QbZStX z?}zqxK!ZhK`dyXPPQxZJ{XS*hLPr1Mt*c3_c_xwmkaK*51o5kp{s(*xYK)YXAbzYN zK0aQr305xdUb{kCw^zPQ#ZB@(Egmf=vNZ~Yi?}hzMcfF5m+ik%LhbE7rr-3xw4B+Q zRt!NV7u&x}nYPD9!}hPTl+S~;(6)btuZnYy^cNiax5Pf>*gth8pB(Ld`D>jDu5c>Y zCKY@?Ts#vM1jT+MymK|~ss!4NllZq(%Q@P4tb0zMKYibD@%&AjYNt)#wRzs`x#8jk zI8-e@2*Ss^JME2Iv8<6A3Ut96r*XRMy*B=UV`UN>!Li}Gg3n-8PI_hQZkHK)d(azYFL9;mnUJs(+jGMjq^ zO=gGT0KXA)!o~+U|Ly$S&cCgCT5Qf9TuFDZB&bI>VrQ@MKF)m;|1RU-CERC9awI=L z^e>$W>mS0!Z=%(prrn6`w#Elp%q9GLD*qnIzsofjeK9n78h^zXWHr**%`vguYV72g zIQVO9c`4ZcYW5Vm*xDUtn)IIOTF+$wqaoescq-s@C?i=okzd+S~hpIiT z#Mq5ci)?(Bn&dZ#%b|ATOVEPRgPFf$>}3jIb5Bp}`Z0CWPI~atl^)p=&CZZqbbqxZPu z%b(tS-s``g+LZIuTT}k;BO@QBKu=$zzF}iFELwKosvX|_)vFyhbnkKG@aNRGpWEQx zYo2-Tp^Mws4BPF_4;q^8&(}4YqTbapC(L}|vM*ZS`+T=a(>_{SaO>Z`A8zx-o5RI2 zZeqv8?~U7>xmbMM=8~ql&BqD1`F5kn>_FV+W5za3*lx4A&7CA_LzlM5;d3!rir0c0v)mGso}R&|r7fW}ot7iT<+bvOjk&favrj_8<4LxnBT-xs9~CzwMd8jXJvP+aZ89_bIXdW)mEUS@;V5gmn&ALKbmDeCHu2lS^{Y z0tW8}&zv$y~L`$y+4ZSQT5 z_O0z^&j-D|?Y*k7_Gstwm0ir;+Dhf67PI*y(ZVtZpYxBYANAu=ADNa`Ij~bz8|9wf zsR*OrK;PUkb-STlp5t88}w}( z=!Wmo92yUr!#k}RQgfISmMqO7wGLvdWuv?7b6CDQ-~=|qfr)4KN>?#;HKb*kw`TC; zdh+<~*aNcqP1}_y`NFx9GKaxzcJU6ms-QBgJ)@)QTr$K`r35jSiAF@cbgcz&b;|ryFL-A8_UsU=Qt~`sF4tY?wWrbL{|b3yAo)Bf2)w zX#oqRpG-#uMoIWH^ELwn{`Bzf!n`+2n|RtH$Sm0Byv8*P&N_-2D(C}_We^n`z<+_C zE}hMN2|HOaf_-1Bn7fNWFN93mTd%pTf8a6v7)%;P9l^sK^l&t>cw2q#{Ck7uZ`BHqtuZH@UD>x+mNfD>D3{_uFZV4gSyi~eK2&yLdVkX z;31dpDJKJk7-nRx>40CLEY@z`LexE3rMsqTLn}i4olyZ&2l{@{lcWsshP_DkS{U~X zwJ;-3W|^jG$@fz?k4Uc*L+&0~OBqzU&hMERn4bz6MfBNP)N5?ycqwrDAlvsuO%t7{ z*UaWy&ngT=_%n0rAYgS6FahB@@Nect@9XS|W!~)6Si;O3xFzT(^OD&-#@_)qdYaA? z^Lh)RDOa|M3(v;}nz79F&uZQEQ`T8Z)(cKynO-Nvw8cLuS!#AQLlbc*Q<0_STqNMS zAui+V;3^`D!x43HXzyjFQAWnw?;1dSYuT=Z0cS3T_YkuP!zyBcd6jx=9h-)x>~o#L zp&I4|8PkKM{^^bf=O7auk4Zql%;WnIy~Z!vRhthGI-n04kIsF-?sj&O0kDFFm+{y|vxJV1osR}U1`y$(;7wyqswZn`z#U@v>GB?a*&)A3$*-#1PN&h7zcFb6%* z!1jFivW`YjTz0=;ogL-?WIDK66OiolaAVxD*7L$fy%3x?H0m81-A_dnxEyCZ22!s# zK-Npn`k7!givhnAoPXerHd9Ei1HN$jWpx<!T9tFhqQa>(2C1n>PnsNvdmwgoO0hJe zpb-pBOEpT2QX>j?vxTf3dBj4|j66aXzX#VDv;W2I9SZUeIOh?v3Qj@@Y*C?>!|V0d zuHNONw%xpjq3li>i-IxTrpz` z|G478gVw)O_><}>JGI4XXAGbunMK<$K4*RJn7w;@^Gbd?bIf&DR^{(I><=6NPijF1 zD;Z{0&&;Oen3$m+&6tiC-s`>N?P-@sejJ)uciF77bVc@1BjcEPxv_^T4w-jY{yjDJ zC(|lN46OV(+0(ZgH?wcGkN>{=R=3-?_8K#0g6aj++N4X+KbsQN|0?yL-it|+K2omj zAaUtUr>H-tsQ;g;|4$cKR>E>R)ZVIRo~d0PP@^@^+_dSe{>h=D=9QBNQx+Ydp|d@k zY|k>=qtDt?0z1|~eQ}^ZJV4ja^0H)kwX(j7p~)F9F8Oou^|>MH)yn0ui(0?$KDW;8 za|_(@%syGV*I(8DM?S`Q_WwG^_tiPJ&+HsV1CFoXa9mME{;ua;dFSEzQ^J3leC9^# zI=6k3Gwu(+*)QjYW9E*3ZdTcQ-fv^$xXl{B#x!<(Z#vrCmwY*>_j_n)a?$%op{@)eY4)R@jHweV*894TKjaXm+7eKvv;*^+p^p-J=a3avTl@c0{@P( z3avcr@{s!Tl>I}$pc_B<>YH!Axson&^bz_iWEt`-tK3OS_pV>w*SbiBeLXr{>iot0 zPU)WZF8Pby*l=9`wWzn(8tT7oq})6Md&Iczz@zV0p^?5a*Rr-!VZP+2`_y;Js+V}K z+&9O6bVz^5J*njWF(U?wf3R+tvwljPxy3&3< znGPW@&@{s>$@x0Baz}^&mCndWeZQ-wrY(!()H24>pOemmNnfMpJzNzy1zr} z>d0HG!eS$C$>%~l_vK}7n+Y0P(dS-<(SIX1%qSw$IAI5cT&iJ|A*okAlw{J1;2L!JzTFz2$^sScFe3)hJ z@~UeEwdu&~G!*#Ui<1LYI;cwVwHVAZM7FpGQTc|>tLT+vN7hY#a)*6n5 z9go5w`Eem>dIRlLcx=Wd3j6=uCW`~zBUPb|x@_3sM~?P+7IvHn!v@?_wozDfbBGy4 z5A)E$)lA}xL4^4sxcrD*ahM%B&G194q9?O+sBXR!F5Mz$t4kX>aS0iZF2og3^F_`- z%ZS(@&$udjkK;>M{rwB=71ih)p`(?+qmbiwDte)x@*?sqc|ZksPULyVi!8|b_|b5W z2pyrllR9qH=y`Eb=PIE$xkmJq!Ss0w65YtFRgGkmHBFw`F_{O7iA{7A;V+q zTM+Oz33vwr-gO){XS%5VK*_xq(Z4wEUmf4C5`GN&VBHB(x2escTeQd11|wB$$3vfR zTfQr1)e}P#;34rp@R0a9ydi#OO|c{YVAELJcHBLf7UQA+im*wBC+mt&A?)7}_Ahdy z`d7sNLh(OQ37;Ac{YWT0uvGk$ZVJ&&Uj!SRSA0kp9Urz|QRFkn&n-oS2slEeM?TSR zE*nIZ)o7crJyEmijFJki4}qkta=2TeN>IF27L%LHZ*=bI3if2OIJS2X0f&W7f&kFt zRf03F63n`l1u8!rUQ`NsUuCH(qSBIxP318alr<~mD9n25(4yg2;6M?;n!S2~0$!$wJyTobpuSoRkKCEMbbw6O;-`dlz zTmTdYP<~<(u|LWfwZk^X{mMfiqlIMPt6Irj^KHc2B^1N`%1$_2Gamw1fGYL^S8T7e zTVtbYL_?C3@2eUpxhoF^tYy|-b|uIKE0Wm43fA6sB_;rsM^pY$ zlz&n{<<5c(aP3u|Kr%qJSIO_9AycM6m8VO1hOctoDyYikjN;1e!%Rdl%%h_(UBM{? zaDlIaHv-&7fIHLL$F2kuW98YDe;@WJkkhF>3Z%V77!#_>^Qa(WfW1({OC-D$WLDAz z{eY=DyYsYfKd;l`xrXOwkAL6+ycbJNUxw@1F1VguZq2o$-2-?oKEvy|_;km0Fy#ZK zSacP|wIA|%{z1XxzF5$}XHE1>pgGH$XGhO*(5S}#RXFESstNu5WX)PWT{V68f-60G zJC_4LE75C6*v%5TjUsRu9zB=h8yWBX%y*rARCy8SR0Hu{K>Ty^*nGF1w$I8}$%WZX_u?$GGb$8KsB?lhF ztInr_BDw*8h~$f`1MMoqXYOSZUTLu3VKETS(c{!XJ?!>BVUG{#{Eo{||bQ{>ls`@3o!ywRdP?;FWEo%iMJealSU5>e2 zaxIw)*OG0z=U{SI1rMiHcUcG9RiI?7BIei}kn>dCC*d!_{;JV9MG}lghH*$elNEG# ztzN!DknBrHI{ipM=UDY1kUV4^VplzklF7A84%pnQgy_5K34A(%L`o$v`)XI%DN63> zZd=_;Ff|Gv9)d&85=&J|$Tm30lv2}EB0H<^AEmXkczAEN!3UF}dQuU$LYFELROBMNY$$fwX zJRelW+)YwaK7;#zhRS7kF)t5n4T;r{xcGSBlkX<|XB`V1$`ga^skLbWDr1!&^rHX@AC9pdtqwZ|7ml%=NkAukDyJt%D-pB0 zSTp++MqFH?#Kdi5Y-Uh<8{i1{BF4RBoTCu6xTkeVOJ`fRe1by6-W@vI5B+^W2SZ?N zH}W`dxJ{o;0#5OE?!8GKHeF+LBov~x*nUCH?FB}#k73wL8Mc_~wDJQH*cVYTxA|a) zKo}m|AFvl#OYPVJfOH@UxSocUe<87j5^wSE$f*f!N6J&a`93Tn!JvkZu?y$>5Ep9r z*m4Plq%PJS)CS&KPE~Edr14g#Nz@)9deP8Z{(58UF}4!*US)OKF~bo%JG^}X@wE~j zw(*(q9yl&jdx**6twTZ79(tFAeCY>(?aJ8U0C0qLs2zhJlh_8z3%6piV~r;KCatw{W6KQu7v#;~A@on>{|F%W^r$lGB!f%y3nUNkT?Dx5rf zZpF}+k2kMs?LWarLt=QAAKS&ib}_JBVlB60SQNxABLO@xor1(GN#In(ua;0;LB_7% z_)K9mD{{d`&Q;k-hqYpY=km(d-d-2`K2+3FKlXcp{RUva(OO~0ZUU^ENx(wFemxRz zBY`0Bjom5XFC@I%@TeMqUBD6e`3$~$g7>MI3cr%dI?)gQ6@b47;P17%?U*r`+)sHy zWf~J#KCwp!#OIVx{bD8KTRG8t-P5`!Qz4i80sadB9|OS0t(A5Rp2lLoro5mjjXfpd z(fc~e|YsZX_?7vCCrzF6b<@|>diA*)mB~z6>q;R+$VzESseNAGqM2OK6Auk^u z+H)n8bDy{@2I2(*b9yq zlYj)(AG5l68429Q@%TJ7bN?(plEh%a5SIl*d>aY3_17x{I{6iialKYI8kMG%MQ2B6 zTdTXloJamR^XB-gcQvXPLG>!E)pooRxS}M0JaLAxxfM@P;@-Ta^-aoCpjpLQDi*tL z@uY;}_$i*2aJ1o$IpZ06q^n1nHb`EdOIMC2@OcmUDwhZD_V|2MZa-_C9p4`i7m$FvNkA?V z52i%gOUapsM4Bz+LGL2oCSiw!OC(&XDi_aIIRiV@?hdZq`Z2O8$Cptr+DOZL&tETi zSBrO|UWZ!i?Kr%^$7usE?-j&XO4#ck_x(ka?{a4Jw+@>?+BC~syNm%uoK=yx=5XFO zerWpwS|6aTwhpu7YXD^}3HXczG$ZkFicdpa{LI9Uk?`1zxlIr_8r(i&@Q07_j_3kB zKcCp)EBwG$0r+tMe!O+K9X|n>eoO*>NI-FZ89&)^#hi!bU;H#G1t<9NjS`A8&-ghK z{&awu1A|tbB!2`~=!gl%wdI|jO4Uy#2lHW#&SPH~xHkfZbzPlt8Kc#U|uZrJ0V9gxlRI>$K zvkL6krl)&t%hLAFB}?_RA)glC`6v79^cv~}S0(ZLtqOJ=o=W26sU-hcg8vi}Y5zap zczWX6Jua@@<4+iVZLm4yq9VW6>lp7*HOsr#wD)yuoaDzP|2jWT90bO31`vPBI?9gY z3?NP}-SaOeoY8drZ*L43!rwLeRum0T1r!@aj zD(_Wav*f4IEbpUP{-lK1ad?)E|CuEG-ZwgYMAZ(Tki=Krth&tD$PYRpawX7v^@*<8v7;QCJ?->$7&**{`75;=UgHbk zHNH?~w-eazNem+iv|*mV7>T8nSV@VUNGzvBnzR={!z@9ofC8wRCbp7LrsRojC5%W| z;XfaAsxqxv!O-Cm zp*E4IqhiJ&E)KL4qa_rdtBJ8eN1TLKJ)(kLbQO+IvYl?{y5){%-u+2>x4#k(qY~p# ziSbH+otOY96G_4n!V8BVi5)1h%lrN(cA~^phTp{+3c~1sb<|}G4%hd%R!YsI9NHX5 zIop-6sI$*2Avux&Cb1GrZb`L611IJ2Co3eZlu#UxC#xikLCFl=K_gZ}QNb~~HBVr7 zp=N8+ws(Pl+q(eU-pRPzn#qI`U?<^eH_1<*rp@_Sk|&dtNJo(QI5SD6`p?`%epU*O z@HI(BqbA32DbV#!P9WWivO$}&k@G=WFS(QRhZD-0C^<#Kss1)Y<4_NLM7P!m62 z9=%45_Ah^<%|N5UYi@G7l3*v{H8(kfB#?X50(ksQ?oNrHP@++RJt>hkHws=w;y#o} zn;QjKTP5d`%T;UOc4cR{Mc<{f9>7&O7zs2hD%=)v@r#ob<-4S;X_B(0Ns2OFQoJB0 z-lsYdd+pk_j?Ri7=K zsT<@c+#n$J(F#I46NUbri303QB%!C5JV6PulTg%4o`?p)9&+*&lDqahHpuB*7Thi- zY06lL(}3i;5{jqAq-fS9FA8c9)S4RPDBU0@rQJC|Z{K>EgZX?*OM?{VqCs$Mk-S6+ zv6DErNM7bRmo9+fL-I;WyonMq-AP_;80}PZ@n-GiNF#Zpgf~fev%hlQ8c^k~)s;J$ zpSHhp4^!n{_E)X}mAeI%BO!JYpTy*CB!OH?6>fvXyC{+LbPM5rJ$W}JzB*tE@1rcx z%}xGN!iOb%M8ZcUd@Sg(qI%?e{RLg~Q&OT8WmcTjb&K--6^FiV@^MuBS4xJR{57!s z#_i^X(56oQcEI|HC&r}c^dXj}j;)xC-i)sWAq)9Nyv9paMwctU%TAMM{>- zYyu0np7kRr@qF+5UB5+t|0suVjV@u~TEAs~e-a#Rbn$PvNQt(K6 zACoXHVFK>yO)Vi+ZE^~Jp>B+g9_Q@jOt$DrUrQ8Kpe3r&5;ZEbT@U5n`cdw4Gdv*I zH;~-l(7d*`0dXdD34k0+s6bk&QgOMR1sJ4(2df7d}*j{55p zy1r+kzU(o(*mayZELY5jwhI@{ackUwWm5yD_zG&yf2Ljk760zRzq_zC7}cMBK*Pyr zL!7Tq(d8u_zv6Y9%*d&Qf=Ge}gbkxHgG!w!)z#a@dJZT8I68t9~E7A%!>$6r!CR+-k1Kx0} zAGnE+9>)d>{E`|y;%dk=01msw2YFZyAm0Yax2w!{0}L1%?j#9h=~eUz5@}X7>_)Hm z^ah$o3cDF`nMXCqJgPzFQ3{V{?geNcf!%AV?XS>PxO9|b|DY?u(tq!-L<%YaO^t@f zRd%}psu~KvCJ9fH1egLhJmtEV{t*(Nra1H{8bqzTLF|MZUXbub|C4a7HKZDk>uOw9 z&1QeP4y0N=>@$BIc0(OrLLFXKdF=+AZ8gvi@Guy_HoPIB>9QJjhU5?WO$uRC+UX^F z4_{*;J>O!#p6@W|`8Gfoqv2g8#BP8xM#KC4{Z;D-50-@rAF8zVlm^YihL3n(MU4VT z`j`{22ifpX=Z{Y%6m9GVnG7}j$FBvp#G|m6c1?-S8FAeNCCM+mo^-3}xxWs#Nk=TdTob(cpFq7Y^x?74PqdbAt;f z6?WmI)c52HJB1HSs(>=XvL#h4VQJRxD1e$ZpeyTo*S4;NZAkHfB(TSi<}sit0~+7%);>Qerndsz)Ntor+f>E_0`p%$-s)cS^-F=1LA+dc^Iz5?76) z&g^~>i;p7V=lbjLXVd|kgef&)xXMmp29cso!s62jE-WchNi|L{?j_5{VXq@K#pNI_ z8^tLx08UMiaH4XIi7ZyQj~5D~n0xtJtsdRScD{)OM)K_DYJKY6KqI zC@!W`zG0Zfr*% zl?*$DDOqYJNqCM9QHqYKa|Ih;z|?FK4;|jrUJ{CFaB5D_g3pyi;AO&jO@dN2=6A(E zw-+;XdQ)?Od7jE@r?6H_?MIn$w3j+i!bAK@y;L5(dhcog*K+HzY6OswLT`y*p|=#saBM{hS&I<~uTf2~t1>~cF<0vK3POazPZkJjnTmW8>)Ed6ntA!i=dL5_tNo+O8 zMAIX+ieoD@ront3S>|~Ces8Qb(?`@ZLP=iTK?l5L}`Ch^$r%MXo3>Uxd z)*uSIoHR7>(nU(Xorcy=I)@TcKjYuab(w4YWrntuqONg@dL~@_8H$2RTpHW!>20{E zEs!vh3%P-RuhB&r#xYXVL|s%Nx=MO93j#eux|T)U%D*>}pwW}O)&m;t;hWq=WHFoi zpDEQC0a3fM?47013Yv@*f;1?NLyPn@zH=8RI*FrAxV{6!d60ka;a?ojrGCx{w`;6k z;~J^=N(x~Z)Zo(#xQKm`un$XloPQtI3TRlnh@fMoE;yA-FJnQNW2M_z#8dqHYYNJ1 zf+Dic5m}cZ>ya!AicRU&Eaf@={T<1wp9C!nk#n^)yaC}1mIHf)^ocCtCI0<`uADL0 zh@f8xAQ)PvFK0m)BH;oS@jCy$LW0thJVStpdO}1!kDRx&s2h=>`|7*=`z8+@!@Jx* zHN4Gv8*T}gU>TeKIo^hu5H*8km$0ZW`1k!_3Yzrwd{xXVQy*|l)H+gcbL>@#{gGp` z6iL0nv8N^W497$nCiMiz{y*Zr13s?e>UXcSD_L@f7(!sBtJSWWy}OcyWJzG`l`Y#c zwqy~MNt2?0|AA%UO}k^lih_z0bRrjrB+J%JEfAfYC2&Y5%X zncG&f;k~EdPj~jrojK<}i@CZw(<>N=!$$Y$!k z5~FLSHg(GRoHeIW)@VNtOn%19n)qZhYvSA{#YLNRpBDQJpMS^agTOE{54s`Zs7;r} zm8&!`?_k(B*yDBd_yay41s28gW3;`3t^&5vw9khvFJ~)0z9&%Sb&>)C)*G zNz_wFJx0{yNYNeW*uzNuUKZ5vONdSe-F$|D^6dph+2b*!iis*giY9#V5K?rEB)%U~blgAwZKP(%TK!BJpF*U1 zJ@s5ANmGp`DEB*oDcl5=e`wb0^25!flpiJ-YUL~OITN3Iz%zcYtd#N+fw3@5P0`dV zjrRYnz?64cLMcn&F-v(da^(xh+LrNJ*;dR;a1CR%=zn52F?8otm z{djbqdZWx>C6!8S4@~5#R{6omOYvBQT%N+`A7r;_xldp)YodOWRsNKBBQIWPEpJ0E zFW~bTIVRv^eg>l?jd)o9Q2D9I=vej`K^8CL^G`ImFi*-GjQWYuHjZ~WGUAV+`~qb0 z20mYrqYLF!y20sm;kLSzeM?vqK(Y>=Sb1v&iKbj z(Pgdpdq~mvC;m62X#5kGKxzCFe-SAf|HPj|ipD?jok-F6C;li>H2#S{fE2Aq$L~Yx z9@(tCSxjsH)TT@uqCA+k#h54-2d46M%L+b(Qo)mj3NcxDQ>%#LQ^QkPE z>{)omoY$Z#>iK5^S@7hyVh(!b;4>gO^AQr_oH>O!Pejgsj?I;_q8VB6ZT5<#=rI+a z6D4Qfr!_c-CFe=pp;a7>F?b!KVgq{2z~^*lKbKi8d1Ubvui``u%(IG$LG;)cpL@%a zc)=(M9|v220m|_il)1|KV=D&GpUxsy!K^X|thf33{#50D z7~)_Y-K2)(#Qe6vgepF-RI<2jO9Q+~6iF-83oKhlRian>QmcxwM;uwM5DW|zr|JASYXO8eD=FL)6O+N zQtHdvC`zJ*v+ZQzb(rwtsch9r!fOf?$C+^Sb0xoEMR8Tzj|DOx%Sc-UTe=C&KG&;l+y( zRW}JQIEXRfS34~FbgTG!N!5)qasOnWD^LjSvsTevnW`U=dp*8AlY^gy9;e8}`DY3I zty|Qw-EIDj_QdgWe$~yKxLZVYt?E`94^DIW*s5ShZz^y5RsDh7Con3{b*g@j9zT_! z0`VdEs$2Vd)O!Wf;j+gxKFCwG6V|S$uAZp`R6jyGa#i)5+@o7-Wtm6>re7h&WpP7- z@2Me~{%3Qg)c-o&i>E584fKlQ3t(T95Ds?U+4{kE!qBlUt5 z_%Acci|FCMUe2IPWU>4&3wZ;hDRtl@^mxTTgXq_grm1b!%Sio^s6Qd~yiEMW3d$5d zdPB9~QClsT&eyK1`7luRM8QL=o-C{QJc~NJ>X`6?i(k2iuwPV;a!zI+9XZexrJ8O8 zRL?|TK15SJ6+Ln!>`8HgZ5$>d&>z@A4>M@KTw7fsIB37&?e7Jb#)AIEgK5#0f&0_SZXTjtLD9q z>UE=|;qGKt3PSLq%4$$3v&Vd_`tN&G{pzDk3a`0*SGGEdvY2iomyTdp(-G`y+O?=Y zn)fyPu~~0X;4e%B_K^25v?;b^VRP^&Z`JkH1B_uvAnk|yRsn744*vuhd5<28+Q#Y= zMTx-vUoIcUtOoTid+->hn%eYgYSXJln?6OW=7WyagZ^psi@Jg8tr%nr*kn;G<{T*g zUl;#(?l9H#mtS(y^4q_-^km`L>N)?mnjWjfei+{?nf2Cro)Njmez!wujs;1I<_M zJ5+Dn75fgA`zL3AWA<^-zJtv^4*5y@IOSv@r#fCyt(Vu8g7twUPr z*T5F}1JuZxUQoEESy{tKgr{X$)22aM>#_!$^af__yh3hv6I@uR#xLs>1Edyy4#R<7 z))?$Y%q3sbV!1S9DLo;QG>8c1amkc|ml+r9OA3Jp8UJMCs=%wgu0&0dQ<;$01*uU#vqtxBymSAe+@vst=f^fsfN+zzIkkkwORPG)w9f-|}38Xu(h8 z1e-9kT*oPg3eF~iEGJW1jY*m!%u$WT6lbd`;};0sgT>4{v}@jG-qFf#S~Kt7eFW&x zHa=mMQOK@<+Or3iJMi2Eqf%@OJE!$tH?7td0fvrgG6-y`*MQc}%LwmaLh4|4g%3q> zurgIUdoc4zrX{N5D^^Ycxv>=<9AFHS$Zjf{9rA|$FUTA6khf{<^eJz>E6S!cY1%Y) zn#L_-C{4a8$C=z@sISM)FeUW3n)TM*Y1doRH0&0M%0VMHaiF<(96}T>4hhy1NMA#U zm61b^^{ALSgmr%TAXEyDqvUZwu*$GNkjiDPY;Bbt>Ri2e zd8E(DAPRrb$@;bU0|QU~w9oC;ZjWCMG4d8fN;B{mTa=du z$uXNoYv^&O))LJN37;29lkjnN2o9EBLiudTHzt%>dI?p|p?qUf6`n4Q0P8*6t?!?s zTX?&vCQOqc@3F8Oqcor7SWE!w>3GYYP>qB6b~ngh9W%0FA5?l)`G;UGA>O*xuNi2Zsp``w+iKLV;7tm zG+oPWgmDxboVOiY#<)9LVCP88uEs(#Xqt)!Tt&SxAc zmW&)}9s`#*B6-kQFH>#N&lyA;+oE9uFSGj6GnBuu{22tZq!U z_jIU&v;1I2FNxHFfP*-P3exGIJh5BK}DD5t`X z9vvI+02bJ}HfQ6NGe%41;4iN(SpW7~S%tB@GlHDBeY;KpdH zk*_0l3f!_WHc_mKK-@NxlbxO8#?4XOH;Z?Lmm0~6%g|}@^=g5^#WCmc`u2!tTmQg# zK0#vS>`7QR#O}`>6(;TiJhxQLm*W)ToJaMz_e1HJ_4GMMxu(v9ud#Ds@-TWYo5}^z zc+b^E^WUn>C!faijJmoP=?N!L|8erzBc`9=9wbe0pidinAh6SJfNn zs@?%z)eJzw=apD@RpuUkWT|euOs}gK;*EH=jV0xJx~^U^*XKFXZ}y*E$q^_ZyjsEmY;VXFw`&3#EJ(_)&}M z0bi$1H_COm6kf-zk8%cZM8|-T<<@p#m@}5X3Nw(}h^oO@fF&gQ43{bxVKN37aZE^; zsCB#tExsGNvplyPz89Pb!3a=@Bg`99n>xDb^dc~rr4s`vuS5!) ze1W8h5PFu3-rHr5X2>xkiXbJU4jY8W`PjM_0GrvNhT)W&1<9@v5trR&{yrROhRsI^X^zK3vA*Y{f7N zZY`O0FG@NGc!iSb#3yH-nrho@hOz>N3+)DhGYYrOUc_h?c$z;v|LMAmE0gI7-@315 zp*-U#1;#%;Ln}qfKRrXMg|7TQAWb2O%79PLFkETOU*2KOjR>`Vb#kK&bzE8HQ*NZ{ z${kX*@o}q^vN{?S5oW2bHBk}7Kb_bW3_Abz>e>*W&cEIJ9*N&ru^P|8N4Ry7?j)r3 zzNp9qF{d7K4!n-n8&@=A#?{r~Ph-Gcr>|@hbi*pW7l;y8(omp@yG2d{tP2J>PLXRS zwv&yN5h45OO?jZM#2i?Uad;DEs~)FADW_eIY>rokWllU^De9fZaY<1lcu9fDl@wu4 zMQqm;g(zc(M)8z$58L&_kh44(<-LEmoOsO&U%Y);qIQCecB`Y)K1iL(Ak#tw28F9uX%PeB$YMZ%&tLw!{W3mZC z>UbjvZt%p^9H%4suG^^UywrKajx$-sFc&HD;ftq$Sf{*Gjw$Yb^|%3ZlLRbErG z|2XeV%^vg4)beCUcdWIm!?!@ZsHm;2Z7eUZmbdM)vwS{HxB>V-7w@w{=pEOMo>1J} z(Us~M9GHLMj%!ATLLF`M?}J-&E8-uhXmO!j%?ewWJvJ^+)6Mnl|bQUDr*DC-mz87 zz6doOnNZD}#(X_L`*$MPy;6xmLl_n{1j-A|w>OKoq*WvPKJoi|7@hUiWM3&fFQea= zi{E4!GW!zo`$7PDyrSCNf3S#rAV+>wkgQ@O`w4P)vUXJ?(UM0Z;Xi0T=xOjR3PUNP zj)rYvSWZXw8z2=+BDkY4-&5Cn_G{a;Y*uxg{gyy6RbK36YXjNuh(P~f@;!1t+P-rp zVFR%O5vr^`5p@@Jikc}3Gx$#t+*m(L_CE#5`mwUMm ziTEdK*4qKfch@l_^diBRSD)oZyAibu{L;Mc?C z^9VfdgvVp#^EiZg0e;;JzaD_cqwx5-Z-JI`E8<)j?gGy88a3*y^0PUroV$DrwVYqO zE8fd_4qlSk`Af*IA$$!xqpzlvNf&k3W(7XKoS{iHSr& z%S9kdiW$VEB(Vyzd$E@L7o=*5dIhPuM7@g7mwijL+!v8iW2C)vuz#~ry<9S5+Vvvi zvX~@Gs?)CZHEOwU$S-w8cyV8HBYvsAgN=4Ipf$VP+_qRs-#*{GQ$Ot?^G^M=hkXZY z(^vuBv_~NctW;wf>3*2@B8V-Ub{tSqgAeSKnJEm44iYK<*@O?ye8l1fZ} z?yq-RP@ndSZ@D&&6+TTPbD-1y#%jw^v?2)PpUwBsm->9Z{l)+N;{WO$X4hE0CNuQA zyrb3}n|)W2_Tj?(>2PCOeBkBn&%N1y`)doY37+AvD!sb#BJW${9(TFjFJ60ISWkCb zJl!qxbXVh7kMx(X?C;N-eCd+%o31O!UN!NV?VeZJ(_bU^xP5NDN8Y|mW1{NXjo;Wk zavT%c?vaxp-XpKzd*tP{dU<7Cc}3m+bG+}74{XWJg<)cg7#tb}6BBcFxMSSclG@su zl5@|Hkdx}`>*)*WB?{<jl|WJP|5P%FRpuI zZ0kT*87vtaFTizMSHGCm5<42iJN#(@t8WvXG(m}S3cP=?a{%9zY^ZN)T4s){^paBX z=ej@M(dM#!XdTvsESLVEkkkxP4p?*yxLmih&@2K%L()a@^E6{Ca+2Ol<6gxlVsyYaPDZ2HU4*$Zege?m9YJK?g^`ztmXo6wzAn1~|r( zKjl&r9vdBf8d0={SjddpRk(>D>Mr|TRVqB&lex#mj%Ux1Sc8Q&6Od=)V=_Hr1;^@9aI@(9sMmL8QoCm7_zO0{6#6t z1y$TdZ0qSx9bjdQv-^QgVl3VzyW4aadLdHDMUohDa~p*$bzJq6LmH(nnI{M6$<;~; zZ+!bk^tl#hqH@uD9O#I*a6ItP7*dvR5{59Y-=u7++%Ji!kZ1@J@;X8@j_58YW|Y2N z$r-*oV&k9$rzXc}(4lr=6E~dfgK}=!ED8!1F0d)=>c^(AFWJ#AD)KrR1bju4=ityQ z8ixVb`0@(19uPa%vVJgomvpYo-Z;DJn_E9fbq{*1AC#Wt^G#^=`GO04zWpZ3L6Qgx zBiqIj_yvkiaCAEqhMU*QWXwx5QIHj72XlwC{XTOFj03;i(k>wa6(}fUzx}=%(t@lq zF{lY9pVO-^#P3gWaiFNRC)L-AV_Y4Siy0%_5?~1&l@WGuiaEv#PTi^nr!n*CB5skK zfbujYI70+tb!EYQ$O>-XSsLkR6BVpuU?d?|DMpH9+k?~MLbqu|Fi$Y2NiN$c3l@xM z!7!5%a!a@G+~4RxjLd;MzO6aA;pa(FeM(1_aB5RH@idQ7RUU9;*e}f_Sik z+$y$IWD%|i6F4dX$8oWNRI;z9y}d|1-B7UWfu;9PPOY{$jm zY|ns3x#D69L`|KD%FWP(vJ?|M{CF+MR^)<<1-Src$2VX|R+kuDCSEn7=T)FT@G^eG zb_#-rh(Jr}_rc=#Li*hxe%IrI2^zKTAKVB@z^nm|H#;h+{}QgGM{y->IZ+F;j`d(t z#D}@4X;&u<@%`6v+!V)c7janyZ*a3kVPcT1s04e+?d4qO+*YvHC;V5+)tZ=Wp)HBJ zS1^CpnW%dh*f9*O&o^HSvJ&PXOiWoPV{j|E$GO!(t87sfzeUh^D==+w>)Z1~5QAan7Xh75gbqZI*08vL z4`|ncfV+%biXwl`s%y=x%C9uDDt~|9GA+M~B~=5Dhh&E5vv(Z?o6Gb;&NbNg0ahMZV=)ek0S=b>y#5Oj%j8Om=ty?bj%Dg?pbL(EbSW ze#nfQfc~eH&x*41SNT?G`K(Dhe=WI(ZQq#_@djY&^#j@yh^5J^`wD2Mk*Se;Ski#6 zNz3QnHGc!pM_|p$D3+mL;kPMxyHRSz&WGN2kl$_LpGQNmRwCMfIFg8?fH)j+uEH$~ z(}tFiw->ODdQ_r}8C;2mxe{< zXwwYh!dh?hAAtyL4=VqDpnnRF8|8;_kD+h>HZml=G>~x_XW$c@foyv&|50FYH#}}} z-`dIl9lRu~N%^+|K}M7EZvujBCgooT1e#3ptuK~ok((MBVAMO~F|Q(KgHriVGs0(l z>$QBgSe5@A@L=OD`Lykm{}Olk_Ch2KPy=tqUh7C}mw$wU(nX89b_I9&cFfP2n02=D zs4wyzq3KJg|AXqM@hm{!3^W_>(n;~J-VTwtjn|g~y^#9Zqob>mZ5=( zsezE$&+3mdvqyX_ntq225u|=LGZgOwrmp?0emBJUEz|b_O=AN6E+Ayrl2rS%%x@#( zcm$4~_0lxm&j#`ICwxgw-^uio0H{s|<843vSqR3~NOjsb(qH2K&IX&An_Dm)g5?r15ePpK z0RZ+1q5KyR|HLfmD21jNGeVXmd{&vJN$)6Tt@&MMa%)!*Gr!A%xUWMi;Bqgh07f?o zl;4$Ec?!R(f}m`Kq@WhWv4Oz?T68Ed=!7U{-J_UIKq0 zmM{4)!2E8GbsW&2$$Vm40tMTAU0MOFkuNxf+%wpWu>#BZN}oo7-FP$9SPKYbej-Hp zCmBUrCgZ{DK<39>o@a7-p5^P-3fNLl!8yQSAIcDaUf7-!7eIKP&lX%n?)SFuJirC4 zfesLVf{1(Y6ugPpzc&bsxgqxN#fW+ORdBhlM=N0Sss-N%E=9m)u4QQ^AZB7_{Hr+r z)exWO3k6_}!OyFa1!QlcfI8-ao7_`oq(W3ke;%f+cP6cnaN_0z?{%(;o5$dO!r*@D z>(vU_mSn*#z@UujpObq#chxE=1%SwLe+uF{2G_whck~bR^vN{?utgH^ALEK^J>&W% zA88y^Lu(+Es8rx&PyiT!9EVdKe<_;}K$H9t1N6Wn`+z ze>DouHU#{qG459xH&1K|{^IM?3jWCS3qU^tkKaopeI(wHQ7k`Hr2%^%0>91l-+=yK zcswS}T>LM^^*=zk4hi^gVqE`ZTznL$-~(Xr8a$qqf|W-8ui*U@5l;j0I1x_(@gNZo z0r3E~ikk0~QfLrYZwAwi*eVXIt)l+}iST{1RSfYGZRh~suofzlA>J_>f%nT~2?0l? zDG0?Na0Sz|fu2dkEFem;6i3u$1pk}B`%9zh;pPK!4*1_Nb1F2?%&E|P--s4Uu#|c* zc9>&dLI^E_U_A5-(eysF!nTCqe;qL$TO^fqBc?zAc<$$d3BF*1V-sUq={r^nu_=(y zDq!+0U^3Ho$R`lklR2zq4(ou!q0C`DH^QCW=BSU;?J!1I>L+)=w(KdBMTvlP$-&(5MN&(EOcvNq4|KaFYb}EsWKcuCsppFg$qQQ+c3>1 zl(nTSE6;&5fd3EO(tSFkK95nK?>j*Y@wP+gyAZ#ZX*x$6`krn3LE>TQ;;RX4lWoh% zHq&J%SwXtY{QO&Z=BGmbF+=_jL;kN|sTFF}R2>Q*MTZHvumET_{8*@yn~$+F_(djo zgua?jE#l>2bBL(c?hlSjd|rg?%ElR+yAQ-ls)`=lFdJ-*0A*4)oYa zR4Y;&q=~@O)sbP~Z@}^Q9B~LN+hvdh?qLc?L`1Fdc=jOcFoh@c*+XSe7kQIg{8Ote3r8u*uFu${z z-#N(dT;_Kk@Pn<`>CV;mtRVB)&O9ze9v3l>i^YUXUO|S;QZn(f(a|uRdIE1=lqvi^ zq@QPWg+C;h?2HxChDRZ-y%f?3)57cd;5242W@$qrkQI`de5RSnxa`!MghLN4JW8>z zVwv0Tfh;8x{YwH_YdGQm!wJ7%h|mh(P>#wMzJ*>&{dfmGeuB>%EI1%bX_6bJt#wo6 z+CWwxi@c9T{uUWMtcrXTy?A0@_!@eQ;`3(wh_Y^xmKk@@py%vB7B@(R4>EhDtRBGl zx8WWNeC8Q^tDx{6;nx9vmFx$j$}HtO_zJmqk$Wfd`vp{BM>OQ z)~stJi1X}A%~`Oek@Y7Vj{6zMXN==>5nn50)6|7uLfpU7*e&Z_=ds?f52A$m(0G^@ z4#E?7!f8(4%$4V?|B-0Vx3B4E!H6#FOB-4q%!PAIwBcM4Ukmf$l<*{A@G%rNw-VuL zz>tqXhxa6RFLL*`;k2yZXT2tIUJ#ewt*K6B%_G|nwoUi7g3Zoku-|5|`v@jlm@VRk z_XP%fLcV5~%~Uw6nVS#TKVdpVE*&ii7x8RT!EUk=2@q&70pE>pa!UYgd}JSJOF)YWEKj@f=|4J7ej15!4f{0+!f?D z*#=_vL_p=B;lxE1SV%H}n#5B;#uc_Cp3L}GGQL9u8!fEhSqgD)ki7*jTZh+SINr4i zA5Lz|_MLMb^+tsRMRJk^d~s1*3f@SR*Mg)wZ78o{lp7djQpDB5ygnLkg}CQ2P0MiM zqxnJvqLK0d!uKVFOT6}*0)Z8@Xv+)1;WI=8EzH)2!zZFgFFrfT7&zBHgVP3?eGhTG zOE3nH!^7vJ#}GdIum_zmfud)BMSbWif$Y~fJ1*z!_#X4Q6gixU&#h8A?>C3fL;n$? zjzx;5UEu+wx`^sVY6}XMuPlbaa(%Lo#>-cz{Hsw$aD^q4}_RHP=!g8P9wcAk(2`NSPwBm~lG?5nDgh=`{} z_}*irl-#JTLl(ej_&i|`zPWOY&*!TV|Idj3TXvX-GRteXfAEU}?Ul<~PP@PHlQ}nQ zX)P#vTvADMdt~=b8@k?a@wj!8)=pzObBMcP!*RC^CHk!Qeyiu~%DLT&Io02stwcPx zYro?n{qT;<9J=CC6`x%SS6r$p>tV+nHDq*KpB zdfTS69#KherB3DO*(6#HrkF+OE@!;0qepD-1An{FQo8VVs)MA6)XRS<2yvw6%&^rSFKG{6g-BiyW;dj|%ymh-KE`S{d9<0Xdq@ zw5-Q9ymdR0<2JfYD``y53KOT9Re5a0lX*H_)*dHdEKNNkHx8#*8hLzUwB1Ok3cL}+ z2w-w3wdw*e4vVCpaN<7Sm@`gfly=IAe5`X$m9@vPN*;9Z;xbMHdX9q=77=vl;G2^{ z3_S{1j7P>;M$jGS2Q1QfZ{ADdSWKD2ZuZy~2qhK_ULCd~b65N9vqB4}6ITsu2w-l-c?X=_oM%u{*Tnp$`> z&KfQQyUyp-oZq$ioEnpZDcqdhetohpeW$-s1Q@HuthbqHabI&~P9c}QmynCD&)KcJ zvgTh^RaNoL>FVg{Z}rgCvHD`4Z`!LqU)`Y3R}+)lLL&5z>qd_)Tb%6bN-h}e8%ph> zvW{-Pecd&r1&>IhtYhXT5CSSzhEmFQT5yAi*UDs@AdfUu8i?PAle!Lb8_o4Db?_Lz z+OvTIv5iNKk zOFRj{E{wEy_9RubbhR^hCU2XoKuqC@gg;;27-^D*`Boc-D6pK4Q_9JYH$wa=E*nKT z!i~piL8+W{0~JRq-U|HK(1ltg-xtC8T5#|xL6R2J;N{}?rI1A@sESJt7o2&QJ@`|& zdu!j;4F2o{E%Q!sk?ic*gi??3&{^_p&{;w0ytvxV zR5DPLd)GEC$d`_T_mX?Rdb8D)2?6Xwl^qpm-=nt*K=$@@cC_M!1^;;h%ys6GLF6OY z_>bY*!w2Vr51gn4`KVd&K@tB4phndHi!f+4UNDpRgIYK>1&>;;F9k_eY;Y&JPl}Y3 zc%;OEx<28*RI2R2%NIRhMPfjv)@kM!Dpqy4;QT%e-v!_ zLTm6va{of^D*}Be3VK2)aLYT12|g?ln`cRy`{_nS$!_pVQ0nn7rauAtEqJ^pZ(5Kr z%k^A89|g+G6=C!IOoN`;;Jfhno4gRJ(|HMP2A!8!?tg`KHL#|kJl3|GHxc501&{aK zFX!fg;@aT*1o{IY-X`K5AYLcp3LsvUN?uFJ;6YEHR0aUInY5U*biZVD-(qw#dfv}X$$IgwY(%F+XzgakqM}0?{)~r*9!8E zCbwH8pfr5~6r2EGDn?pr)?|r&Cy4#4C-z@5_8!LG>stzXYfMmmz~p24mM>xdAqdAx zGV+ckcblr2!6Wwx2q1q>Dpa;!?q432F%aL zmHOoOSd{wYcaz%%@m8|`AwVBY_xoE)R}Uly2KzVC(KX*n_2gQ{QhB+qk#*>>e)jw~ zd@Hs5r)7wR^o?dTmi8MARqZ*?L)bqt{b!(`A>vseo|4K>)KhC2^K2S4;08#>di(G$ z|L>sdJ*u{=b1q8>+Km&o3}c?R6L$avZcBcIdNBaE@g zw^q}6Frk+Klg9)`zEG&o0>7P>R#%UMoTr$kL4{sLZZ)}cSm`+9mw+LUAC$VZtP0oq znOM1?96XvW{|Cx_CMAu3;51&%Y24vkuj$ts?UtXL--6$Wae0<)xaB&pD!7Y(-YHvg zzKKzAvk*}53*(M8xxWUf*KrPA5A;>k>I%WB&{TJu(dccks6bdOk2Npi%f5WMI5ge2 zK@0h0h=id6VG$^tMth+8z>BIy{m}TGa}MW`e{nIy9R7=4Izu7wiDJ!@q}!3I~r z0yP|Xvfq~~=}Pu(VW@E3F7xLuP)}s23mED`UrGx#DEGLfQk2{LiIS0oZ#H?53G${2G(dFVVgLtlxJ*%bGqzNk+TTw@C}}l3=I`HJvcM zncOXW`Nu@0$cC@&1%$LY-qz9I+nF4pU2B5%5nRg6ae>7OKSP}itIM}p3-N+ys0S|k zYBsAc&=7Ukm~d=z)rP4b*s-Fr&@iBx!t`F}epaa)x}Mw{d01n@0HFZlaO@!mtz&}j zD7Lm~Co^KmsLp0gsI7bjb1GlKoaXD+3iqIC#%VB|IhC(t&IbAnrm0sbEQd&Yvj4Y$ zo+35m%xXgmlF-%~0R4q7aCop-$c=wtm9IxDoI`LxX{Q+8nPNb9LdK7nCM}eOYakM< zIw`CLx>BmOsa4^$wDk;b>`b+wp+Uk{?}Cj7iG}MK+hM+5t?&rKc0XYG9m_l(=m(gl zZ@2JRh;$_T9|iQGQngK4Z(nN2?Ee8w(gn1SwwOZD3Y5XN zZ_L}`S3@NJs0&X8`UI)1rmP!An<|)-T)^;@xbQj#bG@%mE4+b*Z9Wjrtz6-Q&~_{O z3Vv_gqJ~JU)v)l#K+C~=e<|h+3|9!t)h<~6!&n|>ERXp5wZg{;3tVW;kNIg)@187M@D( z6o|wsb_zcN`du0^A2)MhUvgLs$`fL!>Y^bhaGJbJcd9vP4*!)!yyY9#!q3VO+o-P! zoI0ybvTR8Tp6YerKSJ;qnSKfA=ZJV7h-VBPIf{CS5#Y|s%EIpeeX)Ju9R7!IL<{p3 z^f2km3xC2>B^8&UBtlw#J2ni~fTcXt403}}CdCvf5E$Sqi2vd%i2wE-tA#&hv7d=C zGn)5>TC0@KSEHjv(%3q@Sim>&pn3sXzB0s%Mp3>R?h?Gzn~M1mjMq6Mg+S9BB@zSzZ36hV zscMb_&jZ)@_=c-s8VKBN=4Yhb%+E-LZ<`ijjs1~Ii28+H!%<`o1gm43R<|SbY#NRN zFCm;0qj&xAn7F~ls2{+JslWlDIT84@vv`*yLWct)$GJcmF`*nOp`422 z>#ZWYBoG+9XI)?eas&fmjZBdfK(|hWRWe0RM8&O4pGxi-iYX5>PlQB(F)U%6hA>7< z7#9MJAKPFIF$~t87&%MC)*`GvF#_rnGg+Zpd=m8(2$C@TtN zJxZIMcLlO|qa*Sd!{Oz>$St5bC~_x0e~HhF(TMB3t;S9D_jVY3ujgntW6%fi$tnOM z_o2rR@Ohc!W9Z3~YK!pK9US4O81xQ&{(`-4M~`dp`9n-!_EZ`79S(E@zP?WSzt8?Z zL4O+fM}CA9DWHyAjnw5tU4ayt0*G9S)I~Cv&$cxuh#_R=arQox$FHj@Oo}FQ9`oXS z0E0k$zvLf+ofi2FpP%6KX=@&5%{B5Slb8J>??TWbKStnwrpSjLf5zwYwmd$>KdviSgii^&|XeZ#a5TE&y#fXK)D6(MvDn)1V&oeOE zFg{E18Ih`jw3S;Fc zSJ90a{z`lia#d+Jb*c-@xSCB9(wir;|u_K_}8ps~yPvvIwQz`lh zbG-?0d@8$Ko0^}yf0GUmS4@4$`l~HrK7tFbG@q!nc5F46~{zf>ffAf>lwyigEJ-J z2v-3RXUV~&f@6OnPb;3o9yR11NbcP2JIkrVk^scyp*|6qFhzp>A${T^r{L7cgn8z< zJ`5e0FxjjT#Rr)+qIjN&sTFe_FHV?gRg{SrHz7w6SBLE2(Ou ziq;A4T9oHxQJ6tb*deO}SLkRxhT~=U=pu6I3`+E1&QZivNr`fIi5A^2P_v;P@{#$_Bm65p0SSr1XP6*xSVwzM{>rFH$7rFArl;H{)6 z96Xx9Bco^^xr5{mkvnWJ9jfmyQ+@wcWEtx3m-YQdwZ7*>FlTeZW_^$H%seWFVmE40 zS&%vTRNr&L5xh#NLcan7vRSF<57C3nTSYHJ>JnK1H>nflobLeZ3bPE5b6~=MxeQo4 zc2tZiZ_=Wy9y7Pm(IupxsGnd?9b`Kj0FT}UQkv}+ zg`)R}cv|#6_8^n((cg1%U~*{TC8t^n`zfByH;-xLtOWL(Y&noq#W}z#6r&G`=vwq) zmiY*9XaT@HFpWL|9QnXgl#Z}QpC}<9$&`|Gg~ zdSv4>QyvDU(jzW8Q{{KYTZFMW7@8H0$I8)TGCsjj#%S3*6R5$afWUB15?g{1cu6ak zK#x7~IaPw8;xV{X5*OZximk`stJz}}dhCPG8Q7-g9>k;XK<*rxQC<+p+eIwLq{aWp`a!-(1d%W3c#rWuZ?0ykii~U>%8KzDv_xQ2_ z!LsET;Hk7Yv0q|nUb=|gi5_&ZBK8ZUMr97&sdf{&a1=9_k7mYTmnQc-`zn3x5fM*| z@yAocyBjGHi2RKUE-J}9j@M4YM@eDEb>h1wh@ZubP z0X7nHnMZsAxf98qMDAqIl*uHBacS;{GG+Ioir!RL2P}IICr4!RCQcNRCWhRS_ko$b zIN$MzPZgZBI9qUuPX{hAuFU1RMjQ^GP27*^Zm2AKjgrZy~PLt?=iwo&W z#hX|LA`&jZCr)MHK?a^Dm}qexx5jl~u!35wiL0Huo8w`O!fXHW5^`s`W;-JkU(CeW z68L?y%{I5is0A_s%RqjsTLLOL0Z~psOfb{paYj=Pnf^DX_a}FbqQut*&x!+J(md^V z<@{RKNC^@wH%vUi3gp2IvW7v{3RYU2H_qa4@@*pTrpM=zTd!P^as??-0K|3)@qSd% z?5Myefq={05VCoRIG=%wFBF`#IM2T0iy#~SmuZ@X$Cta;Q5y&VNLqLQ$J%y?zO!_m z`Qg*}g@yNG!Ww) zim{FZ)ME^8$}6BLpTuVhDyS*1pkomgv_x6agc13cUBxQ&D3dw&TAXsub}I06x2)q+ zCKY#b*4-tzXq9hK*1`3oiMLApll_!+zhddXfzTEAvd3@HgJ)S44=7njc|VDjoL4-I z;gy6xZppeQCl0w3kuW$QswiQOun8~ z`DYNr=b$TTMX8cjlq%^~ZzWAVD&Ir~eB!I}Z;0y-!IC$l<=(1cqy}Wwcwe29 zPF|s|FgqEaqbx{I(#Kkmt~y_^*Q&O&2ON!RP0(mRSF3?jKBsL!y)KFz1LeX@SXSm>*!(ugwpz>JAZAtGbgV-UUMn z83)q2)m9wN(z_Qq@QK-~`_?>w)zgmRlN$_^ z$tKLl1XkwCOThJGN3O8_nyP0wSDqEIwJJ8MRrP%OJoq!YFU!k8qQ{k=BLNd*-^pYE z=94hwjD!S6ai;9)fb=Ru`U^vPMa0#r*yK^wYw5G~Epp$Mxx|n_z5p~uqo(7l($%Tn zWFIKArq<)%YU?p&30Bf6i_O-fI&4a*E)=1)YPl^vg?9c#*wTK3r2?sXFAU5Z|JC0? z54yEj{Vk-X%Y6DQw%OzXpC#tl6fpZYg^vYP7X!V{zPMFgCgN+=e5kUTZa-De=EW^5 zd&rPlDf#o*kc(unLNbM|l2pTS$SGa+HmAB;#Mi3%NJ}-H6sSIkB@a0yH%ZA~SlXMw zlnbdberjeKRy|+l{<%9W_misG=3n(13`cjUs_T)OCyQSzh%V~s z9#ECfTqB_TC*D2S+1VlnL|tN>4qZDKv%_aZrySt{ad zHGJQ%W+8aY8HQ&y-xROjiXLbid%It$a0BRn3{ibZ^&l>7f~DF%Cq+MNR@)k$n$@I4 zXsxDM2H9y;+h=3#A}d_==F}XDF?je}a|C*L&c$jA! zWuC2}JlhY#o6v4zXsjZt=0?FxtGPG|@A1x23qmoT zo7y6=?}6)1?H!#1v^F{w&R0*}?gV}m1HYGn|5mWjYIwJ@=6As3ENnaeQH~NNbNhLx zn%_e}xX&>00;93{tP~^ILq3c$c!pB*I7Gct)bh{RZzuR&V^PRc^ECL~V7<9r^Bj2o z6g(%e=O4jy)M_TS=0))QC3q@rGnk5>%J#KuXm(QbCb=}msQD|oe5;m+WfUB3doq0jaGQoV1$v z?qAhUdAb{j`yBhj_I&QQA++3bzaJ>|NtC>G;v>7~>m34WEx??H~K zWGD}^Y7aq9L458bbFLqBNOf-_c2g%IyT!4DlB^rwTPwNa$# z;Am|zQgm>%wg4$Qn_0UrQgm>%b_P;povd~$QnUkBn}hZ3W2$|hAoT%JA0qXh{B-hh zM+5HVb)<%QqkS5*jnkZM<1}s?YkB-oE5;A`S}l(sYT-J|G#=m7(vYF{L`C(FOHZic z5S`()5eZT+?{@`xF-ZA|6XaF~$#iQ2f6x{_osj>gg;m-g4o2uU5{u@Xl>Ro6p=iyC|*s zwlsFyJnXHdHLSK9#?w6Px9z@_I9Gdg=`6m%5$WVedFjHl@4Kq^AJ;F@Yd*Yu`K$%s zkX^T$UD5Gcxqn;5H)q!hbiCT_x=BB@>sB$F47*jw%WJ`~TX{v@{&RN4up8)_bT{$F zief$0?<$H+(`w*lR_T@SI{Ag%b+QA-5isr3RH(qaf{MTGQ2~2)mXbUYclmV z!84YwQio*H9_b-7y$U05)uI-C*Ve=t`YJ6dudP80mDW~YRROla!w6~eEVZW(L8|Kc z?P)a3;-uQ@WG#m;2vl$~37R*VG7`W(P4k$S>3kU*~8Fo}1fU1YmAV;22^F2Y#BUPSls9pKr?wXQg#eno-FjDK60imhd>+O1r;NCvijbAAR01IR^Q;0RLXx3W? zw(50trq}A`RgEha>;2%@0%e^8QQGwqQSoD4$xR)tGKMo_O7(t4M2j>}GL-D>XlqIK zZITukV908ID>2G}nDLncmk{yj=yux1<4o}Q(B18GlFk->H4r_ylg)wWL z`#P+di?tY8ft&~T^lX**Rx>MBRc)3roLvIUzhYiW-gMA4H#QDiEJsJuX4=+r&Au{z zddo2Qgv4tx8HEZdqR0wdrbGFZSw^r@$=YsZtBh(jmAyGRyj#2=;%>IR76oj^u*8t= zH7v128mH}IRdLyP<*0FXLySc~+V04-Fc>EQR)RKOi5z2`B3QNActvoGT}cI2|6NH0 zMA(%y?1}(0!Y&Vk6%}Kiy`-wsDs4}xFiYQAx^N76C<3$gU>!z-Lcvt4Slm}i1rup| zONX8=S^yFX+rpkyzuw&g3jnDueJIr@ruhA-_Q6g)7K@of3;U`VE^WXv)8S;GizMi{ z&~zj%vRLwUz}2uH;sQq(~5E#2RMIRSG*QC~;UBHB60(F{-znF?gBQ#+V4; zZBbObRFY@1@-QQ6QLyB~LCKu467AGk=8!~6hFs+sqtEn49Bm549K#Q(TgOF!eQnmJ z4$Q%5WS1F@xHAGBJ1%S>m2PN6XeX9kVlhH2Xk}3;-eG;-R(;+GTa>oH-nO-_q)YU? zZK?L;VCR6EqvE9)^3`oEr83zz;tV=s2|7}$fG|ql6#~C>1puiZmv|+hDqJUxOFAh{ z(oye`j;f3Fc_rAOi;RrUE)|q)(TOw`Upv}$VsYR>((3l{$Lk|jpMlLOV>;=~^*R$l z9Yrglby{EwI8??eZDXtEV;v=<4kIWGWr_rc=xpFeNs=`1)7N3g5yRDE?CC_V$w=E| zU`x-9DuFzkD^w?ww!Omm?tKg#bEso=KDh3IT5jqTn@_SQyzG5Fg2 zWX3Jewe>MI=UDe}P;-uF{-FAiwE2Va-ScO0+m@JQ088p{dbSR{!^mffbWMt;xn220+&eXwT%{kP;;+b>OQhmCd!}y+EA;vd>tK2*~ zLo?fXZP60TuEE67zwr{PRW|dpjfkweMjZS|5ri8{i@p%ge0OLBap{s#y~Eh3)9@x9 z4&J5;3ODX)H_cr1ZCEzTFrx}R89M8_&WFa z5y~W-;Y<{zI{mcw>0?wCdsdiNZml1XsT0EUBjQW3X}=_s(HL_9JGYRlx&~`afQx}L zspgd|uNi{7t_2%AW5s^gxEUA!9JN$lVfA7;PK(Q~Dhr$+1YSE zj4Ub3$erqtdI4Ow-Qm{f*?4ioPqB?wnMn1Bgv!?lruqu=sM;n~8L(UAdkox-jOF~V zvnPYHO64}r)nwRJOSinNw57Dr$2H4qrB7{t$G4csZR{=xF`MP_$*^9R7AG)WlwLCQlMk&6TS}^L5oUA zvoq|S1*=kh8?x9YV~%V8)9lV2`=69^X|_PES)6Vc)KVn8tMGNpMEHA^ig7G6CT}{& z29$TuGN3U#k?WR#ycFs= zbd`5f(+*oD2k*HvvGACxvH(Yy%6GEA&h(kbd6J*mjngIPy0J034#N1#vGpvAhQmuMt zk7#8()TSKU&clzSWx`lVN2z{bG%dg!z}H__*J+E>e}H6P(lJvA7U4weiXP>9=K;An z%(4U!o9jeL0A6aZ+}7(E$_YpJT5c)F^s{g$XGaU+yshh)Z9owDk<-l;%U2G5V{tXO z81>)eYK*}}5@j_g;a8=y9+`!*LKFxHg^J|{5ie4@HYh z(4I|uy6dEl$-KOCNd1h9Ec>-k(+>$c@Pm=<-#)B5jK}M1MdlnxpMK*?rZEZ`Gpsu8 zr92W7FI@aD8R(pQ_=d!?Wk;6k##KmSOII0nc?nTBuMg_R#XsG+vZoVMo;RCP=*K{( zUSdx$Ni)V|j`vc0sq+Qm@r-7`bc-l)dq$L^%~jN{q$5`&ei8}3fh&=#VQcG zO4}W)%Kdlcj#YUwx$zsjW3?hR9Bb|B@c9;q7ZtU&wTsFCv ziTVc69$A)Hu%Ka?L6tT)u3UY{nub;DAxvV`s-|`Dqj7m+aRcyK*?8#k#7YRb0EQ=x zD;ib_qOiUZQ~;JHmNhP3vAkgg2#PFPl~@jOW+qmz6etX`sD4dza}xxg)!ejr@v;V! zp1EL2!-9jET$NbZ*kqDrO)Hxln}9ngT@N=lH!K%!3DERAit$ws1kp)f5>p=%h z>FVZ0^P1K5iB;$e8HPU~x3Hia4{cZo;8rv>3*=1)V;-nUhEOXLD=<{i67$zu^VhP( z`ldBlJ&AiM6w&G>qGAf77zimoOyys+GO^%btb0YPo5U|f)SRea28fEA#VnV?6UdSU ziDe2a7NXzGg{u-GM;9knH6$=0l<<;K2Fg~iY+PYh!f? z0QCcsvT{|^;#CT(LG{Z_<2U8V!bEcdzx#zt*Q{=)ueAiS48DD=&f*hTlvp6Rt~a#n zTv7oFsAyVSJCptWEgho8g{#i`=%_yvOcQBk=FQ}+H^D&DqA;||tcDAphRrjoa z39oVl&zJkNJ`1Jn;OByD#Nl$!sfZQxr1jgVS68>2-N#CoX z23saK+15tEP%*B5kr2u%AhNTC*TImkB@vuckWNF^*O;9vSZdjgXA*hK3?F;%0lYL^o zYtc8Coi{pK(oGyK`YW;v3_U*sTM{L>lVR0Jk{u?um|W7TnO(Yl=WJv1gK-JC$4I!B zm!P*%kIofhS+z)ZnGoxrQ7BR^HIm-uXElx4Q4w3qRgBxJBQ$qCa0$!g{%kSeqZd!cBys+aRPqSyz$*>YjdZRioe zm-+adD5P8{Gqjh(eTd;EVmkt_{?4!7#8+sN*53iTP1tB(4qNffc^`w3TFRV{4DWxU zP|~tKLFN@{pqP+@6n(4{B*+X?7lJNEgtNr|jpF~T9mZIz{EiE%zWn3l4^Mf!A@s~4 z6(jGaS5V-g2VwU$5xDA4@X&YQu1#PJbqnbg6nN-0m~R<7&ne%fv2$%@MMV zgL(p0KY{c^^#uE~c7htcysECMvaY<+TRXwPmfT!21h^!Hh1*P z^)vFIMedI7_MR4One|+`_AVQQSS$Qawzl^4wZT1Hkb}{c(K=2R&D{p^OAglI7Yx?H z#o;;p;K4dj=3pIP!C)OZ;bWn!HpcJPHW9ro*J9;>W?3kfq$d2)iF+2P=$LzScX&JMFk1=M)%xpST$y6i0g<5N)q-#wQ z^59XsWMTvqqjm&hjM~u`G75h{j>!~@Q9JT6hV71IV}fCbj{MDEYt3JB*lrezQM@>A zHwXd%KP5jHw>}%aVbSI|?vI?y@Ew zio$S|jtMe@x9Bm}dL8LVItR}5rk zIfaYCh-C~nyLMN`aMj70s&S6tW{)|BTPeoAxB%*0|J?kF&-bn0`g}{OeZGb^9AQJ~ z9oLQeHWt?RY(@RhLyDSRot1lw!MHJ-qsc*#_1y)#hP2=ju7SbNpIf-GXR9*l3~mtN zSv`KRO^`>@@1w-;!(qm^Rk7Hqi;2s(3N>)RZ2Npu16=SJQv+PEZ>tt$TMR*%B^Sxr zQUUvJ6@iXpk~G%^PqLcn#08U)vR;uvEv7j%SQ7EqsX+W8268e3Ib}o(p2{*#6H#Z2 zsEsz$UVb)l6g-P#pDkjuqR8O6Viud)+M5K6#oI?4!f*_SC;!3kib-&LM`x$tpToWv zi3u%TWpP=?30~^9wiF~=_Q4;JdnLJ~Qa^YVxmUBgYmo;noJk4^Kdi}(9$SKbsqQw+ zHUYuE&5~{HobVl-@N16Mg4Z&f>qOKcnAzL2jV)*fZ{*lN7O`*Q*gsLS&A*WSf5!Q> zlzo4$=9fRgFK!nk8+{M{n%uj{{R+9HxHfnXx%Wz4@s=zS* r^%EZ#1|RvE`5(n9 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⁅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�+guoeG=$-TeAzfG zo&-gCb?eZnZRr~EI*j>(;t5G<%yK1kmEtq6S>8|z_zH8aO2XF0;jDTBRq@te72Fi%b@S>&hH`p_H0akA zh=@;~uFydlvkmRh(>NCOzvH7A@CDVNe2N@7>>fr|JvG!=gvb;dbT|MAKaZy_S7-FT zf`tj&FRG*amj^P1zlM;Y;<1_q$m@jb7_-+)6hwB+YYBLJy*Mg+cwiZL%(|h7dPfY$ zdS*#4yNRPTg$ixi?|Hj^^`KPB!#G$gm|gr({khf0f}GV_+& z<}$2w(0`T(GM1j~NL@H@@V~YUgU1Gd_WYK0M64dI-nx?A*i+xTwls7_R}ex=5W^JI zgoL5GVR?E7p-#7Np;9I<@BNt>gsQGmUnvhl)h?wj8V5^XBg3o!#VYlQcW8U1=;5$s z4yO=7MQHd^_mz+wG#s9XElM>7A@i`Re;Ywp@`DH8PRU@b7)c4*b}MUSMvwRf`^IUF z(m$^x$Cs8PGtdP-6biK&7e%i^7^ve#tP01O4wEyjevEG|lMlMQf{;Vg1E^~$FC;d` zwgM=wST+!!F{1wBmQ(VGb6%w3+#j9Hk!yf#gi~*0+u!WFJM9Tgdi>WR~F*}XPIKJ^7 z-vLg8JZpKu3+3RIO!HtFLhJobPg6&72&KY=?L!cH=_%^SsWkN~a<-6?e0B%zhDL+q z;3|V-yjRIuGshOYwPw*K$zf+-B+6?A_JK~W^mVI1GE7@28TL!2Wm4BGgT5|ZO{qRj zO^FuRFFj25M(ID;3ZdOn8o0uETRv%OPIQ%yv{FOcC4ZtH&Jfs=(oXX}$P?IFgqn=v z>Fii?;cdd32MZ{^^LEiXk^|C3YK3UjCZTTh+>u+c=p@)s4P~%hYmYVe)qK%`&5Qj; z9PtNDf)mku6`JYzl4z7P%l&g!_ZHLTolY`T|B^8*W0Hh$KAoBaz;gQr1s`s?N5_<;L%1@muvj+&W- z6PgEsZ{_UX%RY!&@#CHZNs|H;8L40MpOSa5$eVU#8Q?*Z4H8Tkcblg*c_ml|{1Q|K zngp?i4Ye6r%ezy#^SYC}bGu8rgWVzSithK_>D{T_`77xGJi&VD!cs<9DWTz$j@9saI%Y8w@bY1{fs=(6?(YVW(}G zZI0H|m5>IehT8y+M%Mra7(505N+SWVG-d!y0|Vm(HBk5Y1;3`52hCH@Q|?l*ld+Q? zFVF|hlPb4~h=2zvHb^l5)dm58yoEN!HlbyuWs>E`%Ql~XJ%xjm+pYtrkN~HI{eLJS zsEm9PVyO1O6~hlLJ@1#!kvkLGdA9G0evL z|2XXy`0F*&mFzNr81EaBIuOAAkplD|DOO0%0&2~~MB)elcmaUd&j7FQ0A7;;UXub| zvH)Jw0AAk$ye4k|PgBj4{NwHBLA#{;Aa-}mr@I^gvdFM31t5l$?mX_&?zENvkiBdE zH~pE4t48+!pE=Hrf%yqnQv2VWR#HE_R_P!iQ>h3J`bgUcx#5qu3a89`agf!6z5 zBcN)`O%5hG&=!c6l$GbRLR*x$uB9~>#~#@{bs6sFF(t(?T@Ent7|o|pfOx!5-pA3v z+=sx3XoJcr_DMEwbF#ZDR#Io^3%sN?2hWqNQPMBK+ny~u1D;8X=<&&r%g_T;!VXLT zwZe^<6sipnKY)Zj145bizc7Zl(*tqF$dtwPlI9IrIjJkTE9E|^F9|IvX#JtI2;)lt zBmEz$a=mQ=plF8xu2RUF@$jyQ2s0Ms1>^~zwIF~t(wNhjgUxB@Z|su&@2_(_BLFNa zRV5hUE6M8qgEpr?(jfV;=1_~a@V2&@K8_4(0TLq;7a$RQfsk)7`2cW79)7Rfn0`Mh8Ii)LwFR35NKjt&cD*^g{8=bq*G35rS1_0ZdTHgl};vbty z0))apGLsQVP_i4jk*7BR?5SWZtUXDh_WpP!DDdzhKW~3O zFE5|4&?u+)7&M^0h8of<3hTH~MD8|8?dwOjD&5d6aSjB-ZOhIeA)C2=X+9JPi%G~w z#W7vx7{m4Nkr$nNamx(a_s?A3j_M*x<-~w97P0!fOW{9jF##0;y|wLrvpaDaVPVtN zwB)M=u*`p8sH=&zvG~n7NcOW@mWqlbBp1`=RxVsAr))gllE&|;e3iIdm8!3O3uYjT zMr^N``qs&F#lC{oI{CV-?!17Hp!7ZJkkq3$!46(?7tQ>nXhXIQE90K85aUR>LJP08 z*A;ql5qR{EC`I~9<&|lluuVR0Uyojcs9-{(pzm(8o6*noJjctp=x~VPgsR-hUYVE@ z%qQn~e@>umEZ+l=7*2=(-sp9`Gs?}U#Fx<#Y}YA_EL^Lu(a1pA~$66NHi-Zo&9&jR;%j)9!7<9+Z!`p z{0UX3t~KTe_!Y*Xct@V=$EoIS#8a1rEk9$*ylg&~g^W0A-eWACiE#Sa_jA1APXw2C z!GptjY|^ind0cyp>;YBh25}nlr;;C_%R#1YUS}Bxdk1ehPGqvpnFEVjH~M0SV}~8a zv<%GjE2JQx_Y!#msJlZp&_8BenJvyx9N_MuqmxQY7;N@^ zz{?$-xEOFsLTD_h!dOC5Op;gsi5ok#^0b55v!m?a`HJ1L5>q*{?|3H0%Tj{|s|j+I zH~=8sLC)g>hJE?kW{PyvnuGBNH-u_mEDaI)B`Y`LPb`Y%Cq9EyU5Ym3m+tf>UnAz6 z%Hl81%_F`UaPt11j+r=8pz7Z4P&jsoo-O;c9_WV-lU6 z+<=;Io~)H!ZHi5ht4tkNy4ih%_q-wbdxaeJ>j7oy^q%;_zE5MhJ-BvyP7=u1A}4d= zje?33wxTE>%>i(8viuVgU2xxial{W-i8s_oKKDwWyrP-e5ZW0WW9_NhPcVxNnS38= zHuzaJu#76~A}hgKqIO|^)AX}F9p$15it^i1c+-+HAq1s{5Ki||T{z_kW++sOzBn%m zb=^%6qBnNVl4lA>`hu}@lA6AW4!OEDF7MNIe(_{fT7+9R2l59^-&dTKT&v};)!{Jp z;*P^TShiZB7fJFb?J1v37M3!sFsc%HAGi}e*lcu?{aG}>^=Wu8w_GR#c|ZCyy#h92)veeAnC`EgZIsTVSIadNOG%(d7b$u@Mf5-uSkrnr@P zA1C|$AXxO0*c>c6#e&%|c|hxw3CnQ+yQlH~Svm4j|E#>H^Lye9I@J~Oq~xKW*k6+; zMYj(c-y>}A-DZmAu<*pmHQE1!9-t`pr!*8*Ra*CiGZ#53PIyO6BaL*g^o;P=fmnPl^ydS%cp>nxSecc8A_w!d` zeCv5wMbmd;FM46A8Cpqg-V;i~$Ry(4N2uoI>xn8UE-n_Y6s_z30GgDte|YCQpG$E{ zhW)pcS1B1Or7w7OMRi4gSB^-i{S*;Z>wo?jRWTKyxO5P-=;UWNW)sYgLP+LSYzDLr zqo%Nz$a5rGH0X^Bz0~|7`=0lrcadu3Ly>S&@lHj#>T32}mAV;z-?bp9%asD+_od$- zX1q*%j(pIGM*~uo!@9ZYmij?v?2AL<@v~P*{!_n#+};sk6!cSC1zz4}H<`(e6~I4lu~jX0aZ%BU;dhe`Ici|#R`7uM z^}i%A*PHX$o1V#ICW>aIuO5uD?cj4d7g(PgMl~UY|6V8?JJC9Fof&nSRi(i~5aHgq zlC0)UYTvp|jmER4KJ?P?nP<&CCdv@W z9sPQBTI@y#Ha_e|t2T!0QgfY-0WUKnwT>(A(GHwd3eXOmS8CE`|FL0aXE?6(rp?~B z>1UT3>Qq-8Jg^aEH(If=w9?6AJb0_ea`d4+e;n8T!-NL)GbZw7C@KnFgN&LotKn_J z)N86uvexo8_10eMk!W?vPAZpvtMAXQ=9-!GyJ}333C z?IO9o9<@>MuVU7d7wzH;@0@&oE;HW(vv0fW@h84ZS8p#;BjySvv-l*Quz!D6XBK;v zm&^0(8%uSdYu-c8Xu1A}Pbe+CrTl(#CI|UCmn6weJRciZ8ynXclQ^9p*IO~F8ON>< zMnQ(+2OfhJFP0)3c97}amu4-9?nt&?lDZl&F<+=Jm9EazmeqKl~K35Snz2mwemKn;$wAUUQatJXQ$~@R^u*)=nOE zd-J`#*ly-GtF%WIGHe`X%(7{vYsh{6&D_wewIR>#^;iFz`zA6@dD$Vs7Ag*>u$0Ud zY2k8)Yn?NR5+ zIp{0-k>nl>y$kDLl#!J(oQTx|Q>XuJaj)iF+y3y&d5gXYAz>gq;_=Z~Lhk&}Ct`_( zH)OQf>uvnAh3AXp*y}U95wL_ce8PDm?D{c#Qv8!e=KJR%l`XL%*8?d-{mpzjS*BnnsTJ46y zq@J_bD?zzHVhF(`a3&g(NtTJ`;*A*GOdSjzbjlq3Fu0jB{&++DMHVLp`w$SjX6AFb ziwWT0;lyMLWZ%U!3cdwEz>K{F>{Yr&!g)`A@cmjykDW5PAWx56rMvbiUE^@t6~pUT zHK`5)ZTxD}Q`rHP_%BaodsQx#bcfw-0zALwEPb8h)E#!Ukrme+e*4>wUw8NoAkX)3 zv$k^Zd}uHf#`Spk_3yppyG}KK8>Jr)JJ|%NzRMZ=2;QP?!|Qw25?wPeLh?q?+5)>*}}}9 zcxuvZXm?y&JNZVWCLAEq#$z9_BHIlq(&+v}+W!6or{o-p0E&L*1P!&}4+@{w)Do)I zgd%c&YYh93UD78xDQiDyq!DwQ&F18|Yfcp){fDJ*?)sGSq~G<-w>JB)@7L<625qvx zNk-dgtyITIojiea0b=LSelt!?qni9(Os0A>=ME;V5+%8_k%kUtFZu3^P`#&^{~{-f z|H9YWZDw1)7$206N-ziRk#H7CCR!>B_@wwfe9-Bhr1AzP$>_;ObqXLu?v*yFydj<; z^>_o5IeQl~qcz95141uWO5JUX%zAlD9dEXX846V^x=ia;VWJ5gfNdlIwSfCGPWN>Tk^gVZi z@h$Dhc}*E=Pp!}4_y-$Z|9v1RqvM>eJIcK|rf$5)upnXaADycGN#qYdj~E5aa7llY$$4 zc<-Ix-;5=0W{Ds6LcCt2o!NopVOp074;j2zY_8k4!Ah@UP9U(NxF%HE&mUQcf`z2b zym(cC%kb~~AA3z?@0QVWMZ~=ZALif=CEd~_#ue;AdEY~RCINy(>Bv^z8YE8*&-HEY zRvbzK`N;`-8fle`xbPSB`v-{Xx6+sX_B+)ab2{}MRBmM1?{b^v;p9IB z#A$kQ?-zay7^{64_dK+lBHHD1*{(F6a@)<)hSY9t>L}-)Scqz!3X%2p2pc_mdmnYL z7hOF){1DSoh05?Pqi+XURFmv|W{92st3LG=3o2?^m+Jlq(D1y9p+oV3_~kE}K##17 zt_Fk4VqO!Zf4{M?0+GV4wWjH&elbA%qGs=-pZeRnPI-SuVw9eN&+_fJ)2pu;f!bd zSH7lE}eSO zr7s4!#);o+)7YIx_zpMxZr1qZ50RIm3nqp69dwR#%E}Uc%cy^yc%!1KKG4J=tdq}9 z;kr^8J$>?8TJKE!@NmHlYtq@$s|2(FbgC|F!}N%oFL-~W09RYLe^^~pUgwl)nf-QD zN$FV*=j^@2?uhG{#rUPC1oyaj$NZP`Dg2xALV7KwFZyb-%8SR=(1!g9Y?lr&yzF-&- zFEk(1Bhw`{BV(mEool&bJu4@d zCgAzk8nE-?2rexzntt;_Rn@oKljA34M4{o0MVZynBHy=4?>2upU*2)a_F!sds~cb` zne@NTWA~Yv=f+tFcGo7b>pyp*yCx1Jss)-FXEP0Q*cCFnfH9w8fGW=^1u)6{kYGlh zgHt$SJ(BkG!YaLLTiWK`#6TVVw^aGZ?=;0`l$gA8J{j#lgf^e1qptZA{QvNQq(?E? z-Bz`D*hCBAu@<~%9R9efRidyka9?G4J-60_sLyy_K(U6dwF~uETB;1>3X1zw!O^aQ z4i35%ytzrS)@TF$@K&6CHJkQG^Yq&#YqW$meH>AQ{ycxO3Q8Uai6RSwLcGLn~3sbV28B*0WFq2j;NjcrnOgRI%QY!v$1-Mjx?XU1Rl@hy5fK-2|~z z83!uA@AjHqKyjy-s8mRF0Z4jwS;+e`D8!?pTL?#gY4eef+{}!yd^69C0qsiBpLX6F0XDp|XnBjmJy@H**1dA_ zNrM&E-|L%_!0O>fx$v?I(JA>gW#=P9iVI9#{JGAX37yGZEsC7vTf>B*pqEB5J6*^&KK9nfsX zFCTJ?#2ZM3XUz+k_#9YF3obVppU2X<3(r~ACi~MZpFop;_`qGMr-fdsNVEKP%Caqx zoY&moh7)Qx=vKuD7B^5Ugf%Jcr?YSQ58}{kN)Qgz@J1whS*apw=JAHRf={K`72O}8 z<+(*(Hl6)KId@az-oS|gX_rgWI^NzOSNCr~IfyT(^N_jUt)QO!sxgKU?3ITx>_sXX zO$2xK;B(oZolYTw^O@6gW6QNa=@(}5%Fe!F=9g~?9**9)MnBv-mjAJ#tZZ=-XUYB@L&Hag*VvqN?CjE3?AS$(W%g3Kei|GHyTd2lCi7y|R)IKn0`+U4Bz~Dl@nKNCZebfXv@|ku16HtE@wyk%$&`6qyL*9<>9tY4t*N1n?px5ns$KaZ8Z!_+bqa?R?$g1D3U)xU#kz(Zz z8AXaAJXAK|{SVUI z%l1)nr;vYz!UZ#UnZ(X5=wGF9A<$Mcyh_AZ$b>V0OH_Qzts+!`n-j`tKi)@trr$Sq&Q$}_Uh?pIt8ELorCUqX(gwZ73V;0K z=z|}IoL;cvj0TxytrY3Cd4Qp1#vneUBR9Vjq}fHO?eKYfQJdW^R2y8B3+*3=+o1i$ zj^eNwQkUJ&zq?z7|x z%a{WUZkbV8S$FK-$d;MKwhlW;+O+lkMqXyr-wuLQzN_yz=gy#_AqRu;f;!u82xczf zSYp2#4eu6i+jz6L*?iP$r&rN@l|Gd?ObFIhg@VXAW2+1JdYq@tKgrB(GHGa(SD2!Y;k4xl&z*0yxbeNo^JZSGY zPBR%-ym+RYjH_5An*N+=lX(Lq0mqz5a$A?|A#Ea~ywrbp`kS4(-&^PA+5z#k&8_y= z$_NVGCh_Ok9P1~x?1uEO*L-o8J#dbSO#Dl5P7NvTM%CdFVkCxW&^xp;>xw&?S(GQ! zWmt%nS6vAtXil0CBdT>7b6z4EQz7!`CsuZVR2x-~XX&bEzg$WaC1!RN6-1npt52d@ zTe4Q($lD)O)`$|F2$1d{RU}F+D-ETPUy?kc#0L;R`p>7FqC_HrCpH(*6vO*a`|Jpj zOHpDlD|vQ3Bslo|zi8bmd@(B$r;vrT7$M(S*X|+x_!>~tF*PYMDSjV`Jiy3Lc{{UR zt2BRW=;}c?^d{vNc7H&G?eQZ~;p87ZpHqyDWK)oA+t(1%ue^Q>4iQt_10g!qS8uVu zyXFPaw91jKe);TPhSL^*dC$e(Kp{rt_JeKXH00K{=KaL@(Z#4fSz6N;!$*!b-hpm1 z1KIj_eyy;Nm1Kd1GK8!qORIm|*jQLRCLh3{G8Q>Wv6NeEoYQ^BU)2l*in^$&UszL! z($mL25i0%|wbuSqDY@`R-!-2-v)5cqS#PiEeRrkV=6l$CE$a&-eXJKNYc9C)<-M7; zha=&hJeuhYKJ?#F9-GO`m*xhNygSLtyn^2MzY2s7C@A-$Ax!IXD#MV0$EE8IJhNqwG7OVe}pQAEb8*2P2b_F8x@pClmkXWVrhfo7!MR=<1 zBa33B^pXF(48Q+f?ZA;q9py@}o5SUL<1TC6MB`FgZ6J?p^Gtr<-TJ(eKhUCq?|EOR z&KU+pI7>t_N(R|R(tEX@i0hW=vx>hj`DO8X>5lfRr}oARU0IA@l?oDyRp1S?>@QiO zhr*Jx_oG%rY7+0IaRtP!-8G$f&}V~5)jIFWy7nfU&HjFgyeyXS{VgR>Wwu!?-!rVX z=cjK-jwbtwHmAifEmLd%`+S7xXr~aeFvUTk8=f}_7FxlkgH}7V*#=V~S zMLU<41okFqKhM_MxS)SPcbHt8xc}+K_RTj&x1uu!k;bCA@Ss+X1fCeWM@8+@G~Nx) zH_G29|52=eea5+UdMm{^Rn|aO>_fcpY{iqOb&Bbc^;vE0J?Y0`e;{Xk3il7T2SmdXC<{ zK&O~DU~!`?Jyp8`m9#F+CM>&qA>_KqE+p&TI~VyBO6TQw-;Vt04R-`R1|wY-_(9Y+ljifYASw z`HFs0w|I2Iy+(a@wg~PIPy35$A1xAAWfj{tIGbUEEmFf~_ zjpK_)plvQEEo~8wWPCZ+d`LRfkwSvfk|~Q}aop?z9X`ZsuqO%7pH{Zu zmm`HyKfCY9eD=uHixQTCG1|5nj5MvGW#!c_7UqPq&jY z&0TkbvMjEiQ!gLBlzjJ;%oLA^wgC~66Ig4qh1V+`bD`JqLbI(&cS#pt(53|!H2G~* zVMV}0Uf^j0OFY^;@X6j|p*yD^tRdxDr+-gPdtXK$GIKap6W=`9`y+qnbbf&FrXc6q z%hsIjQ+@{ot!IG*?NWvfKE1+|Cx0i5R2 zsAoUrLh=Ag-)u!$-$C-Pf__HRWXxQAfvQ~XIl1);DXpiOa(l^m{xrW$k9+_u8biEA zq-oEh5JWGbO}}C=s761UEhuq;?(!?YL7`d|pzHk$v!o%1`$xS?M^gD!3Ge z$F9W4jwx{5B%jhUQGKJ{rqHDtS(DcEdmT(uU?tA132#xkPsAt!T8Y!AyJ-s_$Hn3F zn$1cq$$oR($$o)?_YW~fujjXTpE|LTvZ?E}e4tKg%fvBM=q|B9r7^~N)Blz^is1*G z@hwxcS`6Iq1NBDzdnom#q79B8pueG?(5x9qYn;Lfl$PhCg+U2ky8Y!o@w)+fqQCv_ zDqE<73yvCNSAw^5E5YZ98xm%Q2y_J%TDPEJX+uKwJww2VuLQr5V<6nC8|GT9m$M?Z zta({xAdJf#g;Rlf{i><*7m4id`X3gr2wO3E$VWocw-tM`Yjc>|NttNjc@R^)AJjH9 z`BH5=c?3rDvYD6r&S{KRQqa8u4P`1PTUgG$Q?AT=r%LkLd+D%yr&)=>x`g&X2%U#f zMlw9ilRHI3d+%Iq2hPyK;s<}3ub~|4(^QKdELkLf* zMXuy1ygrZ!4Uyjn%8<2&(jORIF|#Hs&yv5RFE@L`)=@%X2rBYbFw0xXFY!EXZ89$j z7xEnr|45pC1%H=#Jm^Ceeg*WF0J5&a zL%Xbn$#T|b*2TSP?5H27UR9Izw=d4yU(EhtOubm{2@pCpo&{ZLjtqa&=6D(jvQMer(I`TuMh{@ zL#l!$EC%|STiUcYEBVHCRKwES%~u6h(?Tc0N+bIq+tYl%VE`wrz6!Sn12tV4uk#*U z;o-V_NJj9DliG5-in-9L1w`pc%}XRx${9?~U>-XD+KD`#J5FL_PB|lEfG=~v5p2L- zIPmiE(sZ>XSC6b1G0-qSgtyC(i2MroYj>uCDO*6{I}x#eHO=k&o4YQ*XH|7 zWE50L+N}_oYO`KhdBr(2PD-U{a@l4*&Nwm(v}~h;Ugo_=V&}L^Qaas;-_cTChcN)l zzfTiBw669`Ld|^vQlo+Z$%OR=d6DY|87w5Q)kf7IDX<0of>sF^pdH>7%C!iFI8Jve&;Ix1Eo}hJ@abX?QzZzMMe;SQ=4CWW?XxMkc~K zB&;D!vFgWO+ic_5Yk2TB+h_|DgdU6SUs)9!lK2_IjCUQvzK2mjWU;%N#H$2~?Z#RZ zH8lDBxhZc4%+B)3ArM zCi$uDa1#EVMTb}L++0Z$bAEBZ9~to`@kl#QV9D&o8usS4{`;)EOEUS*Nu9j>AW5MZ zPI^#m1W-XkH*Zbo#XOY`HOT!D;n8i#ZLv#O$ylQ9#QT27TagoO$mOx$#*GiM)DDvJ-?o1(vZPT_I3x3Rs6* zBBo zUX8>en+A)`V`jz_Zt#C+5m|%V5M+iCo|yB)n)dLR`UwJ$#OxJi1!o zKf!b)*I{#IPP$F`$?;71Ra(YdF-&wkx5fKV^yhdbgPyB_5`AgUFJ*e{15v#*W+T1F z1%1KFgm35%J#Cm}rUk5`O52Z?qRw5{cdt@#Ufv z7@>{JD;FYEBQ!=7`~P@KfK~nTzcUS8c?S^j=j|Hp z{q1_Ik5(D2IXq+lOqli`YMVxBOleFpb7h8dMzMu$p6>s}aQ|c1|A)i(p>FM6Pzq59 zQE7!ugi41xw9f(jEO!;pEF(a=(gCb1l{o`IB41g&y2$841pv+d7>%bY?J4bs?T-Ox znA3K8z#V3|T?TLn@>^wE6<>8*wOkbeGED^p-w6Z{S$l%>ww8K$?G;r-C`Y@fwM^AD zIl8x$qSQLHBUeT!F~NEB%>O^Gp)zlBN%5VLk#ZuG@BhnB5Q(povp!d1scFKT0Mwl7 zJM|C^D}@k+R_J9IEnxKmG*cM(*C%n>_!Y;gbAY;cYA=YXb+q^&Vh!{{2Bm8T#UFQp zp2ld+0%#FfJcN#~jDns34av~J2te;_>`64it1bXk?YC-U-SZ^*|J=;X&L!}c(uKy2 z@`##-h9Q+QjdCHBHgtFQqXUo{iznp&I{JZ8VYGVPn)JFO2pAA5KS(Vp#4A8TX&FEN zpsk<QoBnQ0;aHfQa`6deY(ly+3J{)>`2q%iF72 zG@?{S6q&&2b`IkV&HP7}hgDu-Ry=pi<-HOeD%j2eblLw$jKF-t&MwVEqJ0PKFKCwn zxOX04H2*Uc`ln&I1>DE~@^pOv;kNydJ}}!{9isW)3_vvqK<@u%zW(n!<^(c!Enrf3 z@#r>8h>z}s} z)xWt3a3T6%2E5^K4HtYcf9d!L#!8Yx&A)zCHNT_7$XQvZV+ny4`k1!148E%%?90ESp zxEOI`n;ruqksm{Hx02g85<(W2e2lqH>XYreYKI11m#g9#<9Mr@e7#DjYLhR_1`^E*Y31B4zSN`MPIz+ckYW0K3c{)w@)M4aFe?s99S+k% z2fQ&C`f>LgpvFUgx#K-&&UfWCQiO78s&b?N_VVUg-f(m(m=PkEWq)Vs=Njb#=`pjz|zlnK73X}js# zGx}PTggOXD8ecj)xKDU~*_X4ypOUwQ<~=U8DkoLZ&iLrXO(*`2b8tWvGH1!VN=zlc zd%P5Y#GB<DuX&{OJ>jQit}8v@wUS^`RctTU!Tg2Doz5@zVCXPngB| zjus}&w{1DZlnvUNB2t?Kb}t&&AnpOo!+(}Zo<={ybH*_Ea0Qc`?!rMzV=1ED-i?u2 z&=`rS2sX4^KdPyfswHg-Uu?6?(n4>ntoF+^;?b3Y5h;44P;pSfV$O?H1H7%~&NVe?(I^P#oz$gGIcC^k?RhTOMZR+d!v_hmZRHlO1U zj=V)X(O>^`&z+(O{^!w~6|;M32IxpDQhr+**q8h(68!M2Lgb%Z96z??H zsyEeQ&9JjGFkH|ai9@)L<28vC`4)ZWl4Rrky1C$5!*iiAh0Rb#dgXb?Liu-++3$Ig zK`&zclef7Ki)^F5dFbnQuQTNF59O5O>j(Vrqmusyy`_CWeh9Y3$od<&Go;>iLSL zTRZkYGG9s&7(WnblBYO#pwygZdEKr^G3;BEZD1VqH#;=LTzDzPkIOq>!I-{jd_$eP zxFaQ^dHg7j%c)zPz;T4$uKUgdTYzx+5*iQX#6Th?w5BRs^ZDZUlEwn1n9qak3yE2@ z#-<3yicN${1A$Bx?wl{uy2_NlRgnxG3LqJXH3$0lUcQ3vTQ5Is%RWAqJi-c8;F%+t zHr4w)-v3sr=<}v`?Pxp;3SZbeC?krfC=|+8_ltbv>gP>y9hZ+`H)(193s`5I!0{aYJ6! zV=ymE^pU{4%7!>{Vt92e_GVgyf!CXAV#2jsnPT3ncL~^r^NzC!X4|8pUgHo zv1`l>OUx!G=3>$9Pf6^Ov4!g=)At6fg#|6ulY%TF?hf6J;d^!OMA121THEn;*U&K+ z&yEWd;_kx1Ek#VTLL`phjmoo_<>YacoxVB6Zx?8faFMjyN!MP&bruxkBEFr5CLkg#n;%z8iJv!_RQ2fO3`i#*x%7eS$gU+!qr zIw>hPSQ#HHJ&wj?yf`1~>-%q}An;u{Bg!RSqs~Oc&wkKxO=wRZaE+~#Q9W{;T!#Es zyk`rFa-Y#{2={S-{<&YM?ib7<3Bw4FEB=D;66aKk(S?56I6cK>d-f&%2?WC%zV_xQQlQpp^!)xOJ{Is%qz6U$K!+3iw_#y z`K+TXA&^0bj_KbTLLN=9BORRjB3($hNH$87w^{!(1aMzUNi^T(^Ou(IO}SyQ`_w<& zWJ9y{rK#t`PCQBE$^Iwa6>1tZVPtvuZ%{()>D`s)xXrmqx~MTe<_njQOT=A5kK^?S zBM7oUEOA&@1kX@qV(?%t-u8mox2|%sbmS{H$4Hykc?UnCQ`S=IZ>ibfKuo7!JD=j} z4{nckrdfB|gBmK!YO1q&ir|CLCBJrYMe8E&s!pa^H`-djedr)`*suMbqIDj3RR_~s zciOTVs_A(O=Y!BGzxD@;)&<;EL!7S@t0y}%l*{@%_ms;o)y*gtefi= z##V9g$Sidh2EHwhObM8^XU^QTQR7KP2`?Hod(82qZrP;sq^{ZUF>B$f*qO20Y1=j( zf#@>{1}Xr)f21tvuI-PHbx?9Vhh^POYHIU5?iU_uy5*Aoci+f#Fxg(YUUy8fCRMm2 zHGBI^w{5|9e1liuo}J{Ep12!xU&hyY*{(`>wbiaP*9CpkLyjklBH4Z|(&GSCOBP2YC97=9mQlG~;1x}L*R z;+J7|cp`2TZ2IX#T3zLtQT_bF;s!MGoAYR=EV;vztYy;@-xeNbti=q^SAK)mfsb1kdeP%BOYuiYRZ6pwG0mz z=L>rt!b^U-z4@c}hO4OUXLa%Xmo6FYsbTFc-zkP|nW5fut;m2Ms3?t5VwG_D^}uTJ z^&3Q;K}2E3*KUL1_v%*0%|GU+CN!HpMwGJExBfPLrpL;EcS)cXcSvAZh_`gm?*7;~ zW!MC1z-i8?T^6={tW0zocZ!EVTJkXPlH1bsuRGfEP@N8JIOU|xlL_B zPYvarv+;izZkKXq2)vvb97_=065x$5t7Lv=vNe4>F#$^aYif+F6Woni$TbIv-^K0i zCpQqobqGNp;MDIkUWDup(O}j-ELR^}ASAt%8}^OqOB;R`H-%wrl%Y-ax9SwR%o0mW zgu6d$DV>>%%mmYrWrWKDJdb^x_$1%OSMdj&;q+L3qJL77g$;T|K9;uaRWk49v_?S}))@w+c zjyU)L$N>V&KMgsCl!px=!^$Iv96!5$9AYryv{&(VQM7M^2eWNvpVZG3GY}6WTf#_8 z@>{r#Z=Qb(PLQ~0b5-cmKIt8atBuK|-*>Pf2Tj^{Pxyj!PKNRlE?n~^Z4lB4+lx9q zpB=&TSV;cq-yD9zP-kGhS>BNR+)iA=wy{6g!p4}y#vj)Ge8+${lb4V`rT;&{aJX)+* zjz8t_T-1$|mhg3m{n}8p^PbrT$2{biBO^OwSYx4>;a+}PUL&(s(|mR>idl-P0k$mR z2<84bg#5_;dB`yWt*jBGqmhedPDk8f03iK=-*?>k8n0nqBx>EME7rbwM7K<3@wqHAv)(8 zD%a8x5Jk##L}c`?pcIUcEp+j@m%^rrfa9}m?|lp)-tbT2bBtG__X^#V>MN;Voa(~Z z{0#zJj?$hjFK8V#I0hO^$Y<)NHKt_^77Z>kgfxaL|7>QK#(7>p8{dW?7V87fQWDMt z&X!yAT3uz&j1zE}gc(Zzl^aeHV{0w$O2Nw zvFs0W##qN>DuDXflCjzPPyWN}rQ9ER$M`g*I)CPSo0mjtPVh^nXCrsz0oe+}5Rf=})~DOv zv|4vi{8>!t2+1t!bX0o@&{z2YMMTYww5OI!LM=sm9z%Xo;;xx55$qP6(qwV~zINkj zr5$m%lJ{%~2n|qpDDY%P60R;VA%Vr@;Ubkd)0eFQbPoB%evR3bw5|@^Y9wZ<&s|U5bhe z(S*u->sOLLmEJ)Km@@=&uF>>eaOn&&*D))UWuD3>ou_{x%75lY1d_%OvBi^)`UPCh zbXdO1yIG8Z!fTKEPK&)j8AoQtYY4|7eggVdre^9L11T%+fdzh49jJv@{igDAtK z%CED?9l99))SP%0d3XUf8{asC(^Xjc zi+DWa=$k_gb5`aZ3*3gf$&+3o({PPbDDiBoBV^)2`Gy1HG;q>+D`3t$X}ZBRpKOwbP#IxvW6R{^dA^Emi&AvX7cW}h z`E=zRuf>4#n4d+1!2;0}+)H`IB<&*kl1wK*%aJsn3=ZYgb!mmx1ZAT(tNoJ~CoezX z_G=?>FB>60Cg?-9likL4883&n8g+`KPoxWe%W0{^5k$9s4JRV_L9X-;3ZzxtZ1SY& zxe|V&OMKFk7E%IM-)(SO`o=MdrtwjPzvq_tV^+Pa7`1VNGE#xcYp9S>A7Yk-`jKP{ zZSr;3m3pmdkg`S_^R8yo%FI8lM8&k9aIZG%w(Cr@ere!*p>ff!d7*2fV(tB@i+rXH z-N}otFY{xjY5z%DLd&uB6J0yUc)v4L+{Uq-?#{k~=(HVU)zkDXGPx9QNy}`szW07gN_Qd48YpixK6t$O9e{2*4r6^a6lI z15?}nN8~ez5zpe&5Vz;rLRcePNbtq=3Dq?jxz6|v)q|D$hX`Cm^-!^79#H~)V;~Y% zn{=vQrMJR)@9_Gr^ek(+mYXcI+y#o6zJ5$CqQ&!9J%l2fJh`q*kH(azl1#P8-wOcs z2I}`oYc01>B zMYJ@5mk58cwxHJy%ocWi`ZVaOZ{uRn-~W?$&`&Bcg{VFYQ4n3;lRj~ge!cq`843UTC>08PU~IH7rQ z_1dLkmeWFu75en&Z$o>{l6mZy*}Y!zrgjD%Biu@<4m*R?t2qDb5EuKnq%VBf`Qm-E z9KWck*qEQBTi>hUyd^nDQzekvUI#%ybsNV#%SJe&*x+oPV^$FZO)uz7VWU7qK!d|x8OSnhC+4)>F zBm!M?DFax6+9_8ETEAE8lTvcDP%n*klqD}#7#_uqE8UXe7tLf#`YV$r5P0d}nOL8_ zp7fVQbpAO5mklHns+W%I`!i+(fBd#7 zH1|?H*|=WeL0Rb^A9REpTo>F%+dzevhC%*lEUhJ-nZ+I#03}>RftP6l)~pY?zcX$k z-}QvI8;3TBE|_QS+5B`Ky?%dX@w7zoLVr>_`DMphL+t?EfQVfNN_`&AKcU^r&L zXPz$~8*8D`Y*UrEve{F7tXz4C`Fp{>>ahX7N~%1FJVCq;beN`9bVDVz=h?93Up3B| zQ)%T=Y(3O0*Gf708GE8bt*~2ewkZZrvgGaTsm^rqfQ7wzf#2-bbfweek;F6naCsLL zX_}IeIj_<>LW-^{`>8A}6?gjfIAe0AGvq`58};cpU)1`ooQ-PZ3pSC`-iQrv=mW_E ziMj*iG0IUr;*j&2Bm0@L*%^56Lr+x|5hvef1Fd%;OY?+Nb)LoDkl{GfH93>O;A|t5 z<4RK^h;Y&15Reb5DkK!;FLOYPAr42VB%xq3#9mxOZ{(@taqDD6TQc6#>Mc}w#n^Sn z5v#lr0pVLAyY6I$$eB@JaN;dJRN+0yazv0g%mym4qUbtXk5(RyAbGaI7ucpz>%n>S zL|8zZ^obH^n)3p8&f}#DO-2;}?m&7$ZMn=hU~W6-EgLsfVQS#txu6t0qpH<2rG-(e z=Pd)HSPB%MDpU}CPZiPoh?bE^zb-(!hy-ZP0hXObB62 zs^th$iT0__U11Y+j>&^Yss{6Ry6-TI;n}8VZWg6l4cC?u9YW+>;%AOUiDC;g}(+QWpPeJ(JP08=1)tRsoDp z;9mi^8)!KGdU)ks9u}7EmAmrR#|s)dvUm#t$J=0OK=44O?iZvX)Avg=k_7r6(;%@X zsT>5sL|IOPZ=#hXen9}R6Ix@JM|H0C20%GDw>^Oql|FB3{PXUaT>W}4zCjpcSGxn=J24l8d*WT>r<>&ZfKMlfsK{i+Rbdz0$&-#iUF=Wv8+~( z=yFzaUN^Iul4QrAv?xRYwqjR?a!7@I>qeTi^sf(!Lil0BEVp#XJnNB+K-h)v?TES$ zk!G-q$P`PTpJ}*ieARRBwv*lJ+VR!28&>WfDiQ_5t1EZg23IqqP_lSwBZ#|T2DVsN zP$2L$U1OWDr|)QTVY+S-(Ka>izAbIdNSpwlMR(xL&Qu`1OQX#EZS$)|0>OvCPygvY zuPOQ|*U6ho$^}fLu*FC*BClv0EFjZ{EQz+D;a!Y&VYGZj_|+l7&+{lp0x$hXG<;=o zFmq)I=#E6YRFcDb4WlxQ`}g3gWNYhLo>-0pTK@~L%(|8JE*sV{gH%N_(jt4WJ4HZ* z&@SPqngh^*7*bvS;;Ha7IQvG9>Ir_^+mdnl`&~y{ zPJ>cS*O3YMf~N`BWegbfmm$_nj3Vkz=vjewI0YYlyH2)LaTgk6uk2E#fy!D}RH{tX zGmjWjB2XLJ!a+6#I4`TLl?^3#lMDNK=TAW#h*Dz9h3&dp1c`Ee zg5J`3PD0SqZU^qVi@Mu3GzxOrwW`8fM)OwT)d9H-%u0Z!SVy=A%yBXwSC3~Cg|u}` z)CM$m1Dd0nIJDCHUAVf^y~kyMjiSFPL6;S}unzumQ1*1~I^dbQn2S)aE81J75f3lmuSB6U&_CXcKq zWW(C|i!scr%q+?xyc%`RF}Uct+UI4DqL*qc!^a1A>s{2AJ?a^|bB?2QPS#!A8}$F! z>T=gGWUt=}-urH`Dqxm{r1yXC*(Rj4LNB{-X1>bWJ8{FU^H$~`u@Qd;JEJ-|gqT*f z&}_ey&_bDW!oqd$-`+}V@@@?#Gk5D_)&rjdC zR~UQK$TQ?QF6{9&eWRiC6q3s_=vwql{qflK#h|U`Tb_Ff`?W7}^#4AS?Kz;=8n@T<+?KK6$cb$&Qtr<(wlsNT zJTo$`gy@@2N8XrgIu6u5#LDRW`kL<(SK^f%RPM>Fhy9eH4i3DT<2^brXrDDct>c*0 zMU&kqy64To|2YyNeegu2NZRkm3D4AQSc3P6E$xSp=k~M;*!#WTUMUql`TMet{yLMM zYY~oTbza9cXPCZVx$YCSg~ zaruduNyGb&Ma)GZ%}d`uSYd+;l~V$yF=ctvLxHUz6=}$>`f)qyZsj;TOa4jBo7;m( z3DHWIU)xgRS<-Rp*5ZgtBqCj?)Q#s>)~h~a`Yq%55lv3V^sz^ohlT+W(%QYBx!D@p zEkyWlHOvl-ad+nr)YIGXw7=NP^0S)@ex7N_g3Xu72#TKXJ>%Klj&kFEu8wAy@2+Pq zjW%$?8OUq$)#vSsflsowu*Z*HXxUU7{;ev!zrMIL5_)*UcNnwOzcMkD_yN*v;QZir z?C%#jXnAqO*W_R!)>!RZ^i7|(-M-W_yQzzfR4aT{p-E)zeCBHZR!8)~2P?JRsPpLt zsckPkQ;Wqcgww*K>X4sn^4TZnho@_S*(dUr%6h|R6*S)2f<>+6N&g)_yHBqxsSpvU z@az1C?aZX|_ms2X&k6T78<#gcic*i6qfX!o-QZxF___KY4L|a_7QLe?f0?}|GIWO!=IuqyB4`MwU{Or=EWK>#Nr`{pjt33Vt=@ISicqAC$dkR8vj# zE^b2vT%e#7X#xTwHGp)&s|YAnK&AI4H5BOyvC~0%C(_}i_nv@25C|YeIs^$l6hml9 zNOJT3?z-#$;s52{53^>UIcMscIp@qgd+#SE@1sP|olcpjXSZ1HZZw;PvfIfH`G7u_ zWSp+v4&#&7DvtiO73Y$1(_fG?GgfL}t()abi(QEo`{v!ySu^FzC8wcS87{-)d%Go} zyYgptT=VU8Nv;axx3Q_Ou4Q~3cNK+ve%57myLZprH}<9_cI7~7%Fm(TwLyEuhaY&giq$LhhfTJo^_e#t)xQ#v zanHjmp6*I?@V{0xdozoDZOT#E@xgWHdcv#v@~re+;bXILqhZ&7+k$`K88YO+kFbyK zwTtfz8g+A9e~;v>Zl4po$FAH?*Y4HO*79%IlTay1#x3brTP9!4rYB9ZQmQf7W+O%z z#xPD>kgh%SHtSfTv&Cx7YyTB-*AJGb!s$1?K*}J|sCfVL`Fy#G+VZYs8gF*&J@#L| z4}D-S1T+|}qH&GztW46A7%pja_Faxw(x?5yX@Za^BEl5Z1CvJsZ1ZjbjIaqocFN1T z?>6&GVpgty@PSC5^)5B7adsy0kxKSa7@~iUI+8Cw3n_FH>OQkuWq;UufBfaJiR%q7E_=!)r$)j*Wu!;{y(aK(wUt0gs8 z5nl)_X_oY3X9}ckn87NG4Emws8~~b2Sk~RYMpeg$r!Fv2uH*T|0xwleV5Y;XDkmwvyJBi?T$sYtanrN+>W}?fE54E!F`Y*~}f&S`lo{7J{y7Cho zJBeU%fqx{7r&`iQh~r`6fvV>so3D0AJ^ZdKrPD!w-7=|9E0$L;I*riMX$$le>CN>j z7B2o*j{q@$1xkolrf7^X9`}TlyR&6Ha!m9JAFRw4Jy@a9g)*K)`or^aK_!%gkilEh zk1W?tV%bT(J%1)x4;_(*Vr12439V|DYc`2Au0e|7>T=W>D<-UDMYC&~^M_6vMcsDV zN!JGXJkOC2&A?tZ%^0^O*32FvijgNs-ow;#jw5*;KaT^_he1=E1VwjvSsKwT?mR`B z@oeAZk-(b}6+BvuOp@Ispn}C;-vp)+GE%cIS2-3NS~8IxH|5{Hxk3oGhHE@*zD?Xm zQOl>Do17 zamvUce-Jwc&1sZDYTzUU>%(988?j?9Ax+mKB#>Yv`4u%p3@yJ2eZ70-ZzZNgO%VVu zo+jf=@^#i+au44x^KF8R!#^Q0%rm_&or2!3h2e$k@ES${jba%X=lFKSXwvo8cpwvoV$NvXLW?&c@{k z;U~MxJ?DzqTdc(^;MUATr+a7ylNvkW=ZKB)A@DJR<2L190L+Nj@Ea~E_n}fUAZ39& z#G??HZjp9ngwx%>Q_Xmipny-(B}*9()$q%(H zt^FB_WWgS+=k2R@F2IB7}J?nh$K$C$6>&`OjTtAZK=2iu#VKeMldm71Z|euaph0!Ex3f% zZYyJmY0PxW;pZcA%%)@u_o1ngCiRN1^xk=}GTd(JoFR%AZ8Si<<@@fRJrMv!yMl4f z<}&$;J=-39=={d0c%A2`2=2dtxqSzof5GV#V z;v^BRb78)qgB-ZI$p-$nF!3B816*tEpaoB26uRc{D)jQ~X_7zrvmgEFCrI(d|FNBl z#4(g46JueYc4%}lUMnmakfLho9jrwt{Xb{a%Yftnv;|Dw&$3^I7T$GNqVfyPjhh`+vbHZNl zy3c9QcWPX*`$8two#A*z#*<(l9W@?23@UmrN;g2!M{aEd1H8=WAiQ;#gTSzuL%Jij zy@M~5%d4O2!V~;h2n<1oPpAUlpwu5h5H7po&^E-}-D3{2dyiOMXB%R=EIDcOLnX{sUM1j15-Dz}8o8pY|>PLeqmU1sMS-S)0Lgyq_sD ze>Lam+V<^=B9tzXeJ>FO{-Q2#N5+v-Ew6P}79iN$7=wakC|@@3&e04jO?zm@VIml8 z6TCD!Ps8B&vb{(4oC{#GZ+N~=m7l2hA*0Vn0F$G;e4`Vj300*LrbOh6keyV8_7y3a zBKxOqG!^~uo}!+%4{z;O@7rJZUHQjWv?A}lcbqctWc42lw*P4JZ^uQE z*Bv704|pC#oXZKRU+{80pr~Aj?AiAg_c|)(;_jz`>gLk^(O?V_*z@3|J|VLORsTX? zxsalnP^lG9H`aw;CT4sf*`Hm;Xt?LS;OP9Y6JmHJfhJ5%mZ*D<)bwZy&Z*r?{Ohupc32xl zW$(>DXvPcny@>vEej1s?f%~@IrGqca8k`!%Sh-inS3mT9jj>_I=;-FLbaMR~ zzcTj0X6hvl(;TN$(fw5yv2y8x=B@jjd)082iFR}drQ^F2aU+gPWR5%YI*riqG-sAE z1+wBD_oZpvEqB|L$|-``AUjM_i!{L&Y}I7~T+$W-^UynAox5`HCF5kdi0-sYYxZQ^ zQQEh-jDKkXNei`+{nE2n%_93XG@RA6$wHq)8Hr`@$9oS9kVfU;K0qzwVApkh-h|M2 zz(U#B*JZ*lJH{@ap!hfd@I-PBLQhnE&+Tw_%c;s}|I2daF9ZXaI|zPzPXl&O;pv{N zb`+2)Q}yYduFi94+h@Q^*=8U7a*)~8j9!Xr9r|bHKa>w-ki(hkD&HLS?r9`f3iy$G z@$n~k&%4#P_6mRR*fac9v*-Gop9FqQx38!@+(lY_9?G{gesKq;G92s4}NTkdwFdhZ>f9UoYt-u#+5-_xIiG z6`6>SR@LSto%W1K9&^idhrR=4eDe5WwF! zz?`TobD92`Nt$M#qh1L@Tn93fIFcybaYc~bK7B5Jc>Tv0 zJ(M1Yp86iORrj8X9wr(I!tb6hJ;FVAdw88(Y@tC_C@l06l<|TWDF@#DR8Q=X3#7T& zAKW(}Nvvidhc2LFN?eh0S*G2OkV9=`q!JfYoJ+cNOK=AEf+Vy#I|;mX!MABwMxmpK zZz@i7F~d_r@1}8F2ydbb$gJn+Ea<0G@+v<7Va-gm&)471F`}`&+}a#Ty>~f67N50l z_g5}+ypV7ctb$LQ*60<_%n%Qx3%QEteyec<{xOtypT2ii*3JN{c)pB6=+h$UtPHUe zne!ABLKlDQ+;;Qi7<_}mj%Qy0y@&q12rB_zHX0U$f17EQ__KpDn*cI`)$mMjZ7yr% z5g5a4uWG;u!n&iEV51k0cFk6qGRI2;Z-K?|Ozyy|R1v&K7=_Mm5X>+NTBUKh>FhJE zAiO%LP&g!8oOb^R`4%kGm*WZBNBC;oG^w7&vvrRO6 z2W4tYPT0HN6K-Y?_R?5TG_lg>bf~haE@s;?FkrN36`$2Q8F1zNF)Cw9?K(W0pw)!9 zhR6$LQ$PC%a*PmD*Z4?HCb&#%^aRU*N+HbWOsI^>0Jd}Brr8wm>IFYa{4M#4#_+`( zf<$JhU_tHI8M(htP>6p>NhvPfz-WS{24XM&ad+`Q(F>IP!Mr zC9pvYT-J1%5e~FEB0o_8nz>LU!}3Sd!TclXU~11FI$)qJv)_*_<>bRXo}pG@og;Ek zLUA~^le8}XMGeo8n`y%O6cWrBpTRSgYp%>e3_eQX&L~%OX(ds}ClX^jJyh z59*;B7JCGU88VijtO7%ZKlj!Dx@tDaaKxo`v3wKuXIHQ1tT%N=p62hK_M;y*6~N^b zlPj=}{dD++G|ctnf{PdCvWAs*yM!acvjGNU=MH0A?zpUc?p{K!q+LhupT1m;;SB8k zSf&H@fn2_@+pvt0o0`tpH(FYsEOUA53&D_aZsVx zuk$#(zpX7?Bq&rQc=efS;4uA}bUS zABUQLY+@p7Dk~=|CnskjCo3!a15LBb#G=4s4(C%f``ze4%xw1ozH59-4u+?qZpz^! zYWp8q$F3*Cb0e921*DL|Z8yd187uv+&e-$%3@*F! zj8O)zFGWVy-Oj1wvNC>fTmDqKVm;9o1rTjgb)ptP%stN*r65E7qT5 z>#u0}h&d@|M!m@Vx|11gk@=}TGx0aXxn|gMDL(SoqFHuyiXULcfvI#*SFfHi2SAqC z@mh+1K`svP<1d9t+I+4y=Nt@kI#Qk#-c~bHVWBbH2E2T*D7!Eb3V#ReAhH$VugtJm z{W=eCoU_Y>3Xtfg=$~g4YzemTv)I2WY+|+HXhhVrW2FD!%o7hnd+}p)?LTqE-4g* zU_2%GF#s+(00&e3wXHvb)?a^{e_E`+%w2!ii9P^mFYD?k#qP*3Ht@y#!)x#6s{k%16>q&{lksYGvk+b!`rM$bAv7JD|2 zo&T?rJG4rwdeYk1vA+BYPU0PrFEBEi54xA;GzEjebBWq^@;r;N1K8xsL}o6RwIl zsJJ>vvD-6@^$oPKdip9VI5Kra{0MToBI2at>d4G)Pn%6(>yNL^BkAk7Y=qjFWoYZ` zb_#&^zhU^V9a2*LjMmXK4i<&g%U=B=URq~qJkt6-&iaG;D5SMSk7Mp9yzk}zsg^dv zr2m!}offOB6SRmPBf}skL(k+ZJBAExyFnWQ#s4PyavKZFAAlF~%{$ux3T-wzToG}& z=W5TsY0t-Qf1BM&Y^?W1kyiSb4^z^K8B|8@?Bv{hptE@gFwYB>M9oRgReK;Q2?Pc{ z_xI=kl*#O|%&y1zEAi+uUh@1(J$?mcq%$@sDP#Y4IaNHOp!ji1J`h5LTh6+Ms}Z+m zl=DYjL_5P!i2!6GFFF|YIz4Sw!t>$Ci(kXzw<|`5LB46;Buwv&y+QbioKdJ(sC7uF zwSMUNPOJaONzDeqhj(^o@!d|W9IdPBXY|d1iv%L*2DdZNT0?}R=MU(BSLYSv!-^iqbm>ySZ`() z2leEqZZ9tFL#T(!gV4QwGIX=;oxc=iZo~%)Wg7|D83~91;XI{d(<~0LMt#k_zW; zxo7mus+JX@Hw}Af5@RLj|Jc8!^}2I zknw)9%#EBP$UqM_Wf<~UOn;3!EakDVt&BQ2s`9($6@~Xb2nM23eV8%3VA@eLbIKe+ z#;W;%F=cvQM(*HX?3Vkffa7n0WPa2;pHZ*78UynlU7r`T#iYyhG5)NxE*9`Mx3-ZZ z^))H`xOYtptBo&+)SneVc*X1js=@?4O$V>ALFbr4j}3%Lr9iL8Wqd~l3jOOnm%v9Un=7G)1vicWwx6M02uq@NLa96`Wb5Qb~ATmtl%NZEdb?`!( zt+E^zxz^qyVZ`4p-)pKM`ed)=X19S?aA}Q_V#B)uHj|c`Hp1q1jOw$RnznxYy8*Je zotbqlog;n#9~>4sEB$X(?L^CVWdZNL`tRHJE%k~67O*0_JE07G^I`gXD@u@vE}+H} z7|h)E-`d|ikoXw3$>Erj!Mj*1^W0T=7=b^SXm_1xr*k}(>d*kxUw}04z=kHE7qd5J z@JC)cv$LL^;{8Nfr^uP#BR50CIy!Nw6Wwx4c#v{m5!f_m0eqOF0#rDVi}31NR#M29 z3t04{B7zq~yA7yZ#)9YpQ=j!^0@3(bS#>5E*T-ICQB|5>Ka&*1$u?@3iFDNy@D z{#cD^;>viqowvkn#Ul9d*FgKK{5V~P^xI%5CGytO@7)@eQvv^^gs%{!_d?5-@KR3W zoz>x#S;yuOnCtxbhttXxE%r71DQ&phUoB*1v@`zLD!xI>N{1+Y znuKhBqcGWKml}V^EW6XIxb2ski_kzoTdS9IE^b=gMD5dHdc3}j6f%j%I05%64j~#o zzpiX|xJ^_CjHTSBcAfjp6>C%d8`wWN-$w4WE3(KGc^O4h> zofhv>Pw$U`asz^f1FdM3e0$c8znt8I&F*#jcrrX@2`;B6njQtS z#b(r^%4>|monbq2rBPa(gv0?^QGHktDfLD0Smtx65JOq!4Cu<#pwaJzc*x+fU{S5r zSZkt2K*P@skE+aC7G*TAD-4Hm-L4EVtH&vk&M~oNu}iyaopbn)&KB0_j=$%HT$qTF zj}WI}o(e(!MyS5$kC39DT|xgKJno&>1b15mzlPN?mb&Ka%}9B>(6*%ejOkNrpak1e zEraurQZ4W42c=re)9*?}V^tdUx2`uz@>b=v^Xl%}Mk?_I>t`wVDj|tYKiiZ_o{ydJ zib5>W{3$4)7Mol8SY||qNa@g*u_mSVVhwmT@S`Gom zn&Ttyx`4dnP37Gg{Y~PZ7b>Mfml`sCCP!T?*UQB1!#XX(e+xr(jECQSvH0|R;8055 zfFv-evf4h`OPE`RM3kNd*p{OzL`xfwcUVicBzu(gMWfXO^#`$2v6-j4Q+M?{k9X4a zTVpKC^cAxMZ3f!;{9VTpa^2F;YTA=uw$~KSEc29Nj&}(9ohLh5`mx-ebW?-Y)AE5s z9bukXEBnca?%Pv^6kGKvZtEjOMMul&9Z%}e|w4`MIhb7 zWVWw^Jo}r<`7=>X=XuYsPa#kGkL&r4TIC%rFSJX(x#LvR9ZLs5wytuL5gc-f?ifY6 zweyOzcO><;l&!d+GuKUv{D3R!Ix?I4Q*KLun&~RTKXz}DA|g&Z z)LQEc?P{9Lo08#4NHK_g{m1lP902{ z?CoM4a@|(JTvLG^uk}GU&iE7gHz>_a`u(CRS3He4V%y8=lh&8xh|_7 zmbkNoX(1ZHq`{)lW^+kH=wj}#9if3B>PmjXIBIq=FQYx4(3s_#0jH_uF96bF8Kj-n4h)d~w?*WXSwZ2*q)?LihiLWk0)6c$dr zrer|8$`7JNhA#!lUUJ#Kx%1+O3U+$tE#m*UOP+-q{gEcc&U#}SIn_K((upN9G^tzNPH;k~=FfQefX^=9V)-uBkw4A23 zoQf7M)M7qA$Ew)4#mWhiv4It`lK!t~%V3SK-EJB-%a4&A0~=VmG<~r+h<-r?PXs%B zKED_C?0sixXxU6$*qO~qmaBx2;40bdbh4>zi2@0(lZGPHbvEY-w)&YJnjioDS}Mk-_?fPP0qj!1L#z#ir=PiLK%FvSbS*tSr$?}tCF z#u<6P@?wo-D-H-Z-bAwM&;jLYf zE5*kK%_r)!GiMfMh{LOfo@fhNc%oh9?xsATGDJF3?LG3w5$&l;iF8(j?HY3`V>9=m z=#3{ca29$C(hARmK?I{T()L^~(z>jdnX019>koT8(!`-%!}rIhYQV$#YpgHd*f$M1 z#e7e#+}JFoZ>LI*c$k9krcH2a0(Y&Iil)kZuIx%Db1tAhQ_PrE2kGx|fy%NBrm9+{ z96r{3Og()5EaEL*Lo~k@%dr^&5*U$?p^3+NOvmG6`?O2^zgbEegNb>U?s%iq+H>Lo>Is^ADtaNIK>2> z+SOH?)ww*o9cdmGH7f&1pDVB__bPg8B)f8Qj_FOO5S69I2HsLJgFj)>L}Fs|3AI@S zua`;II;iw2p+e_~8dXDGBCgcC*;S3sr?o97wYO_cpI(rIJ&pp4=BeriGn%rC1HtC5 z;`^fV78*ldiV^(fO_8e3-NKFCFwGf|?4njel}d@t^vi!~F74Jd_Wkdx>F zgQhr+DuY&u@q%S13z&UT%OtpjjNsipz2=#yI=vtG_BC@L^qMD@XNKH9Ab?NLBBT9& z5{+G{EWEPgS@RJ~0@xQ>`;yFA9HU+w=o*7p3j^u^1NTIhrTJ)bF)#b`ub2X z!6W>``VgPFvi{dkWYL)*Y7AIS*P44B@gyol=UbJj3v#V-@R=}>^8r3S3s-;NVthEx zDCR;;SAqg9LY=wA-#UFWMgX2c8kxFsZ4k{x!HSZfqXQwArcw1k*Og>@@6 zeG0QK>@O&2u+8DJdj!;ZwFdigG{AxM{~Wg(O<~l8DcyW#;y5Su4YwoLF55&FF&s&KV~gktewN6Ty0vwm3>owiWLS4HK#d(~K$SB34v}mh;w@5IC*E+Sc@i1v9MQ(>MhAt`*7ZzoEV;k@RUENb>Pq z8fUj#KSfYDM)-HrLr+j7LNoE0M|h^@am13;h<^f1$$eNpAi=oRG|x$)_+hhlWTu>( zVJ4uv%^bX&s}fSD9Pn*YZW$erTmC3J+jWey@K_h8-r|frejz6^mg^2q&XW!K2GS42 zRcu-t7rc4(>#-_hi+nL5{qftV5{GY~>SxVC&Ao~Zh}em5xqF_Rr3##BjV_t#UhbT0 zRvArq^!n`4m)t96uA_sB85?LB- zirbv-I?A6cDja7CfL`sxOSKxiK8c~7JvGqO>ee7{3TWK#S6bMnF5S^9V?9;93-yPq z#>dcNbi^I>P9aP3z32cl zy+iZsHE>gy^+0ci;`kk`oUVV2NpU#wyn;xka9Tr`>;jxYSW^Wb+=iWTWp)x2~aHW1fZkK&;%S7t~}%P zg7EQ8<81lml?KA1jdpiU8q}29$>f45dMh73V&jJsVQqhp9(6IFhs2Rofe-f}!FRj+ zzBAW8CeIYMidxxSW@G?gFSfFKLaolzpha3b9UYr0%Cq4(;N$zr%vOcWQM=33kMno>l03aq;3@icd69Ye1&3+J z@55buEx)&~9die7?bQdzO&!J%`JS7y_uS19v`sB%GQim}?!H`0r?Gn8w=;sUxh=Wy za6lGE)yola6KBiE3{J5JU6_Q<)Xrx+ZMZe9R*LM{T%WcmhFKu}0Y|n<$hS$Q=a{`T zp^8HW5kv8YF3*>1i*9jKW?B+@n8U+D=J=2io_8s(7v9#>e$m44Z>M@uksb|F#@BJp z*;U~wniqNoGY(?+^9zSm)Tg4LWkVej0nsCmEoR*WaMZUAH81IKjoDS=ue2m0Djx3M z`F#sfFx264(tqgLF!t;6T2XdY=hU-{JP~Y1l!jGQTdn5IDA&fflVl%zN;R_u2UvFO z-OrBIfchl?&t3_nC~t#Q$laP?T2kP7i{{KB@VyRi1D_UC$4BSxlBoObV4R|ZapLyV zwd4C1=xx#d_9qQ1cqGk?&-)wY_Zj|x9(y86a28%HhlBgE$*x&Z5s8$?KChLQ{K z?nqt(S+}ezBkhx1uKyA#&tEk^XxPurf0%f;xot`e8@1PGl-EGfmpf%j!rZ(=DT7l4 z{Bswdu2VujpWbakJRy+;j=EHC3C`A9^b=pKunS^6uEmClLz5BWw=hxYd)IbEafBb# z$)?MW5nnI7KbBVpe95G`k=2;e0zddX!;!8Vo4xfYuS$_seKlk7h=a^OQOiV>M3x-a zGN+vs22C8=ENJu_ZJ*hcR~<&YVVO6&kTh;$=_%%GK>t>ERxf`_G$Lkx}PK`)IgboRE6xiv}N=Fboo z>MqMCTF2q3r-L|mV)v3M-&VD{3#6J{NQGhtnGii7fRg^b4-g!<>kd68ErfUFv-WZv z_c8X7em(-hn6h=4E3^AI=3Kylq?f4%99klT|MVld1L`-mLg+O zTP3XTLp^JX{H)j4=YqiZxhz+U(*%iy0AG1>|CVs!${hJvyo@}4{*au{lo9xMr5G)> zaJF`tn0GVd-YwO;Y=3 zZ%fxYp4*pc24gF~tEK;)ufHfe$nA3%`l2j~Kjnn~S=ZBY4dsKoQWH&|ZXdPf-KvLQ zq~8eTkBO%-qfnBLlBI{&L4q%8WieOC{+A7JP3g#5UUdk_~1|KseB%j75lgAU1PtLz;4MhmO<^Q65 z+$k9oW@6kBu?jKv*8tMsGO;&0Lmk@OMeCF~9^o?`o75#}XOZ)AO=96XMTwR&SpTqH z10I`95}Fp86=Ln?YX@e8IOp|9Bw8P0-%^z+$q~UJ&g5QyqGT}yAXQ?QrZe+r@d={U z9m=m!h&JPE=Z}MKG^~7?TfzTzRl z|1c^fDgt(&V&3oGU>F&Nh)W9WH)Ms;9_r4u<OtiZeJr6Jd^!jx|3E zL@xKXp=D}jbP~8Hb!P6~6gv2=BUNU^-=0f>te^N9(}V)Zy1&mY{0Y|4l0Ou3QIlvr zwgmK79zRYRu^4TWmOIc!E{m*rkuO}9Sh&u_0aOt2=wufDq=Vx)4I^@zhM{!T@|>l^ z{g>(?F5N!_*X+*HM#Of+Gvvx@tFE36!u^$*ILn@*peBggSo2`Ek$K&4wh=`QOGgihDt!{2tZH%=5Gu&b zz0?UEzCzmkIiz=}UwE33V<52tiXnF5qd81Kz5qYElk4KqmF0?U>1|)bJ_YulOmlnP z2maIDtGy<&%N%parF{M8Sx(`~_w)RZZ_i$WWYU%L!#+j#4^4C5K{K%?ju)@kE9|#V zbE8D1ifK=+#2O>$vGteF{s{bs*dgECf!>$dJ^Rkx%^8c!eE%XdZYT4D#oXu7xtMz= zS8V<_BrIaj`X3}{&+h6Zwdrt~ea%?{X_6c7O4h_d?qhJ~pHu3u>G?5_4G`Kcar|+t z>T#iA*S?ZIJ(dCL<&jEUdUbcUR;_arnS71Qn|++?o5N%vD@j>|Lvx7Fz?pJr13VEOp_=*$nw=AQ$6 zZ@+Qi<@-l6x#M2u2Q4Lj@p?Wh)S#BJ;$;p8-WJE?$Ot9=NwjaSez)J)-}M<3IX-m-qkjDV(B`SCPmv6naa@`4q2`}U zXg&KQyZ0}}R!)UviNy)q-*a`~V|Nf6>(gqxS?L{kagT5xU z|95I1%i31)LSS+_y5r7lsLJzvuXX(NaHETeo$=6`ChX9OnHlS04Q^Vw{S!!?BV{eqN*XahmKZ? zv6ieB1aD--qNT#%&!~UZr6O(z!Dd{|^R3_fd-j_@+~)n~D&w;lyN#d4Rcn2d4eJeF zTb~F%Ny;xj_gd+w#OIcqVRJ&fb5KYXwU@55#_Qa767RhV`h@RI@(DoA9a$aAIeS@I zz)dBEj=sa!c3V0w2(}r+;95mag6)U`-Opn+r(0Rh>bfHHhbI*0s<=Twp0RVSR)xYJl0txbidMLoXrF8FGLm2t`+r>uj zK(=pHS**2XL9-Lj(OLHWro6dVG>-pbG2Ee0NCoHw?@$TX_1DVH;UJ#o2}griNn_P} zszT8qcx6#u%M7X$D|^UI+4qax#}Qixy{n=lE>5cbe&&3RSk(#Jv)XdRcI~&0m0LP0 z8#c(s$o<+}TAJSs0p|$4X)8PY71dY4H*`tM8`W5E?bT_vzAcY!-1b~Q1|f9Nl*+XI zv!C@^E32oG(|6w*wW+SK<&!+RbK2cpZI<6qRE_3ap%*{fI3Rz-jHHaXjSmte5Wkf? zWHoRsJL0V)t-)GS;KiT;%hr)B&tg~$=tu6g{fvEu(>I{`a0yCzS(i?`DI%a_xNpR= zKR)H^PRmkUeyXC7-wPsbo7B7hz(2z+{5N-f8}N4yuJST6H>qeT(hB(!*pWEuZ-8M!kw)z4E30ciOoD(3f3 zY#cYrV5LDFs^;}h*>T-NIykK}JT2UG7<9tf+Q#D}?C4g^$@`^U67Fpvz6sS{exdw8=f(?PawTX8tW`xs@#mn#jDjvo)MV1!X zIh1&P!D;6~VYfR;Eb-Q^mc)(-RdWyaSt3{SYaR)_y&RO$tg96xWSM-+y4GU*dw>oqSqyNlaG{g~*&i4WToYon4(~ zt!-7*q3S)HW~+Y_m@Mew6Vfl|vg(aT{Au`&{M#&c0s!ZA!@t`=ZW{Giip`KuyjRIu zGeKtaucbm&+D=kNg9lIFfrH6bWf*0b-)u1p=g8x^LH(C3PZT2W)4V?Y0~Idfr>nm@ zeB>0^?izkbG%Sc6X)mqHi!b z1QNDExNQ}brjsvei=Jn-%HI*|e3U@fu44Pk-%oIpz9#QGLSHgxCwYU8Hf`@{Df4v+ zys?wUY@AsfRcl($zaE2SJYF(m+k$QgbFkOu7icPJVpQ7hZf;wp?n{Z^ZuWH?IS#%~ zs6YFS^aIu;yZw2ICYWQx7utR+-rdQul)`>=X{yC0ue^{6WB!b;GN;;n9R*S@dGcWW~OnFQrYZpEn z2mhEKeah!|nKAU*TyaSIi)jCpAYE{z0^&=%ZVtF zgtw^J5r}|`b{fF|DJr~cojTm|{#Gf{dh5xjXKA5TqbIk>{bvc;A^Me@wOkJTXgGyU zB$l6L=;Ur1VuZ~ zd7|8tpykOs9whV2EfzL*fh4(s;JchU>#y8hR0N(=t`C-T-=4<7o7MsRq77o4Y33iN zo!+j;aG>|?yOh_$dG#}{5%3A5ghrrb#1}UnDE{I`otGUysbSf%%5PvT(qogeanw?Z z*E_acNESY)WJa}Gzqu<8ciI|{Z~MVc{T)RnP>!CAEAW~F>Is{W0s+ptePHIZDuIb+3a*D`IvYB3BEmR+NdX}>wi%2xDyiU=0H58TQVL&Z-RE*D>UhiIn0KYs!?N0}h2G;X)_Ok;%d=fy zIA{JnFn>R7u%8lD*|phmeJmnpLW{If<*CyiFmTo+*ZdF-zcH=nHKhZPWvP`m@_AqX z4DOXAzJluWL?g2^$Ih_3oK$5`kPZ734hVT5@)w>1LLC;2x1J(YwO3TvQgiIkrr+`FNO#p&jU!xjTtAD_h+{W8F(ltsk0*!CMQKWg z#*pYUXPr@4hY`(Mcj+@mHR=xYCT!O}*GgskFzz`}2-QL%EH$`JeyZyZOGEPs27H{rg?<|B@YFe}6T3flR&@yz$ zKKN)hBa;;!p76S+Ht85JZd|Vru;VnQcdD*E7OK*ZKwaGOv;s$6?8DE=jUD69Y*Z2t z!JZoe(XOMK!#KQb zSa7OW0SCcPX8bblDI1J>BFcbw9lQL8ZZrTX70krnN*CCM9tQ|YotfHUQ@IX1D9{JZ zR3!oe^f^2z5VD>N(M0a7fMN$4rFrLfHQW(`bdHHF%b43@Y&KF8W{nD~e%1u&N_Xkb zjA9>^y_zuzYNLo!93;zGaq7^HYzwryQbj;gz4T`^9W3)=xc9SRMh{@T~ z{1`pLg^gyjg~`oEae+8O1=G%X4JcoS<23FgI=T4S$7gj7SEc1W6V^ffl$Vb6eR8R7 zW#oqkV2yS0ez^uysZ#!^#f)9n z1?POStmseSnZaWWt;Tk~w1j+-jQCx^#~&#I^vo*i=bs}&yVzS99mMjl-JVc+vC9lofe9YH%_rd z36+j%1J#9rc^6z-PQ|@&jJ*`@*lmrWnTS?NTTThjMWX+=-Kjv`i^6JXJPp6vCmrv| zKaQ;8GkfG$E*W_g8kSqN{;eA&2IY1|7F}8QT`6la@*lPqf#auM7#QLs1U-H|sz1L| z_$*q>W?J)XG1FxhD+VNJV(dVjfzJZ8CY`R&QAxPV7Out08fGvtr7} z(CWcK!HfFyWt+U@fKzFk^|+db0qME5d+Pan#{S5~1r3%Y#ACoBqPaP8(I0r$Jdm-l zMnlII*|+A`{94WvUQ)4iMIukiFZRnq5v&9^%jw+R*%;{+E0bUM{7>DWsni!!$7B=#Ez}T&tn|RZJKMIf>07?{+8zU&Uffc+@Kl*T8JCq4P1%2DF>pF>Whex1v z%~cyPA*8A;Wijw%v5=BAColF4+h@4dP`iV~I zPk1oxbH3M>C0AzjD|lK)Ikvlh$)Ruh>bB}Es!ter@M~O3NNDx*j&N}NzE=S}Wtmf4 zvK^CO0q=^C+sG;d=YP*Pa&PGt)QFyto-A0e5f>AKkF<;l{x9y{JF2Pg+ZUxt2@a4B z0zp8Ubfjtkk!GQzf)KihD7{F4kWi$Tpn#y12&kwaMHGVc8afI}jigCYN)lQ^3EX^t z=bZQMJ>{SG$NS?l#vU_sGqTs(bIti#Yh}&S@Ba6d^k4lyLy{6T-A(8WM5V(<@q^R) zs9%2+jL&~p-<2NzdfI`crZhbWmea{2)Ze;Tg{=v__;#=+?tL%Iy&D14Z$AWee(k+t zl5}7llgO9wyzi2sO7y83l3Xx`)l<^0AM2IjFMQ>P`3MC%=7^PaRW|uSq}Ua`j?VHW_`2ic+N?VyBDkq zktXbbDUT8TdpViCkV)zA#n0uCK-I9Cw30ZJgPyw6&$jFOk(0+)awVvm_=1;v`bL(W zg=DE6tl0VRe(0I=;n&k%0!*AnX1)?a{W2xQ?`q9l%^kECP(dR_RGL@n`YM2FvpF$d zO~>;F&T1>lN4m~x>KLVPhZ0i$2w#g(Uzk}fo8}^^B&^M{G^{PsW}jy5ypm5`j~p&Z zv(B0-1jmF*hrtz6G=kD3oPOUpLpbQ9% z4eL45c$&8vL)W>@YY-H}+j68#IRI{4I9q>{`n^gD>t*^Sh$Xr zA=tmPPqp14O*xKtzN;!Z5m-i8P!?bfP@>)utM-NoAGShFhbbHL2-Q{vCIJk6dGZ4d zebsUi<|nTE02q5`_l)6nII(#z<^<-YhG5q!+O#?{ZmFtlvbXMY}lMGBq|VdLs}$c^)MmU zt%l&*i8_B|denE4EnZ7+)uY#!=k3FTPODC*P-VKg8%M*jWv}me)w$+%Y_IB}xmR%W zI{dxso?cjAcD_!u*@?$Dl9PVIan$6AQS&I@Zc*`?1hQX*A|&`lq2G^-)UpIK=tH5& zY{XWXdz)p)d|`%a8My`;d9uHWwQ0F@OF|^yR;Z8c@0eeF(%~XwOOz9nP7cb%4m{&n z-E6SrMzHzdZa`PkgWs>V|DsL5kerqg|p zOGKHlpuKUm{P=w6^?VR;$X*LQTi^|Q3j39-9HhN$Ika0WEEf);%iRb<`+PP|DA>6e zHo5e0-f!o!&EfTcH^`^qHrPdd#OPRLl4a1!1C=fZ#Atd%VOsFa=U786^dkd`3Hk=8$H@K@EcJ=%N7c=#Jlyg`|KQZ2YE3{&{lqgSc zhcNEB`Xl2VSE;G)S}Wu{M&s94sr4f1GvDC?(-aiF{daVDP2uQuXwc_%xXI`BD5bY% zBgZoqBbYv!)F-GDwSPNWxUEh7^58|Q^ABg;@o-Rzg8g}G;S{fcERgMZ`cs3j!_57> z-QD!3hsG};&RLif*|fUsrz>}PDC*w#Y^q(;6#51am+ld;eS;X=##c z<+j)&8r=I{4i-T0V-U>kKK1@VOsjZWHYUt*P*pD%EWGlEYRzZ+^YcV<=kuAi!9URV zgFhcPj=J&PsxiiLk-pXW;kB)cHw$J82ls`w-IiknD5mZ&F0W7YA)=SUPL>Ns;-;0u zgVRfdy<2qLTQI-eUxwUkWqdh-tuhF+SAETVf&^KhW##JtrC`UT^%CLy!O!m{blIHhBCT6 z4IIdNI2_8cTR?Q5b6UP6V4%^5lHo`ZjSBO4;X||MTT>$`qvM+DB%<_)urAbL-`dK( z{V4jYTl>E{Uun}Liy-v9i(&F>#~3-C@b>fxL$jPqH*=af!|G2B9n@LaD1n}2&psgp z@9;d7JKNH(!OP9?2SX>LI14>b-68z@kLN!IOP6~jM*E>ET{4)D%kJU1j~J76rIp-9z_~*3uIY&hxEjT|mOSU27T&<}h|JVfF<2VNNG#x- z#a(|^y#7>ni3d+uOgafkxL1;yS^rNo&*lK@Y?|uoN~6zW}A)6hP|@k3``kha{R+ToG-v$ik5OI2#{(=pAz&ImNN<#!TVMyDK#h zElGke6D5X;qX@~dKUWZc%0coaqzB-+Y;+3?DCm>L7|&8eq1K(LKT}n)7bq~-qqnN= zb!aarN$%N1x`iUvC(SEHv|$!m7+GIi-W1uM8#lkugd9-pe4#-tH~q7sZ%UU}oLb(~ zU0YDz!`7ws=99XiHOzU@4&2`F=v9q1MJ&ZC(#J@j6b~=IBub1C zEB&RqqkVv>z~NBQAlK*7M(@x=M{RVc;pqFD7Z2MSXH!?g+IE{2ElNeItYY8M@0{q} zJkiTDstA^#*Lu0K>>3ms5m07x2jHJWG3kMavgkXnf4n?z)M*tXW3_(LT15ISy3%lB zhWviH1L1Ud`V}H+S0CBXk4?^;JDD=@u$)_Nnd6Xd+F#xgY+B;2C<}{UQ*_xcD-b36 zx7*5~L+dvrG$)!}1F0VtheI_G*F^%yax`Q7P=Y)0oGyK@&RX}qpW6998Yd8HyVIi>grsA5nd(!fD zUM5`DAT_Cg=)DO4+2JL*BUvF)y%2y7PW!aDr@ITpK3xtsK@lKJmy6P~0)t`^JWaoR z4n>Bd)MGW>d3`~ekNHOaqT{C8jNi@F?_;PsE0J~zaUHh~-mO?^tOXxCBK%*?fd3lt z?6~}~Dw%Q-S*dAF3g7GH8NYk@NbPWKNb0MUyv8vJrB_`S)prz|Kl36fa6zDNujtUh zt(kWxQv8f(^gmvr;9tYrSA#eA>&m7Y<*&A^wB~PHj!IPr+|*dZ-gRX|tJ$^Ep&B!9 zMAjT0lNw!r4S#*Y4#^hy(G8-|Cj7EBnnGV|SqP2{6F{hx-3f1a)~)HOkKl{a!^9tl zEpv-M_e-U4`g@EBZ2e0p9_=NdXPLNH)1h6()=Lb`%^=@5WubOA!q<&`b~D+D9i?#p zG36`-wE+SRt|=U@&6VBoXkGT{UkgEe>X^`YE_O1oH@|+tSFBqy%b+4}SM#vsr-@YL zoaOx2PPb*$qxqUOkN4=mv!&U-IiXR-yK#$lhMRA){`jvQ8#N&4zyk zQycJsTXiuP4L)jI9PU^RjO~26O1AJd1PLM(Poj6Tx4?%#*MY4iE%LMuuk}$^Bc7_9IUX&(6l!GYA<9+qdsH1=LOe>4Pb1EtFqrD!p z5rp=(u&4T z8d}&+GHz0WX}sWs3Brw|%e6f#^#COLCynI}F%!k^(es6-71ZZc&+gH0jS_oA(ZM9T zHjFQ?={CA5 z$Z)QXA48DO!Lm}x0-!9Uw=68hlB@{qouKGnntyE~nq_m^ztO#pQQPNRvZ3bb-tXCb zqUrXch!r1r8A?{7llS2HJHiDWOIQ-Ei&8tgG-)?S z(Zv+uHX&}Z6GS|x|7s1oIYeZ0AgZ1Xo^&xp{yCvkpBtXpNKtDO=fzn<&KM7v(zt*F zwhes7y|NHN1bzh~(b*+`#BYmpn$7YcUO!@YCC45K+v1~UGjd2RMjE1}qKW0RtZuUc zy&4j~L=&EhCIi=#zl$chuV=^As}B(F&hkzS=z};W`XTOBNCch2V%5bR%H)3UBA@!e zO|pYk&q&BQ_ne`k#P|A~Qz05W-Q`6&y&?MU31Tz>i3BHadG}-|;O?8WAG@PwzjdYdN&q# zx+MJ#L}9!KO9*J=CJkWm5=VxMNkTMzqXb)m78FoOoN`W|zyYAbP6TYIkWuPw8mLzH znoMnXVTfu+)>?>RP!}9$0X_AId>iwmxIx(C;)z;{YXgr5I*`U5gw_k?*z9Ad z16~a(9!0#ojJ-g13+SSTsCOU^$*h>*ZBtOZ6yD@Wlozi65jF0&I695M*@IG$#Ly#_ zV)D&x(q)>EE^!9J-`Oqv?}Eqrh?nWsv2x5X8>QRg!=UU=xJDGe6F!{Ly#W!jIXFoj zKZ4?!A+jHF{7YH&h>uXG)35vuT!OQCNaCO|Gn~ zj&eDmJGcR0TS;?!AKFG1`{(7i8Ja(^i(>ZZRi*Lh;y6%JjBn9&nsC(F6k9geIDTZ$ z5{d=cUqEB&NP83_S&IhHco`xIQD(GA6W;7$B;7t@`lmUDN{Rfd8M5mUaDfa|Kno$e z6hg&}e8UZlvKjfcYrFhH<&Gs8FQZ#cjs|C|d+IPANtOd=suM4P5#nSi6rV@;S?JGY z`Qm@1-K&ZcS|dkdQi5>|>m%@B(s%#WV5nY4QtbaBYJ}9Kk0h-5M~DxcpiH|E)HCLs zS%(+KWJJ;~1@-EMT<%D}9HKBybVYGv2Y%6bHoK!5n6bU>5GLcEB$_6$$Cj)Cd)WA2 zEaQnY0!=IjH`C6mHSPl8x;SeH3K5`^UIm2f#sXJGxN~7 zV!X7wa6zqXC+5%@9Cm@11`{t!=cJv<5)-`O*acC1|5eM&F=7CnC3V zwmRV~lxv3YFP-@>-KlSp#P%_&{jO0|G0CkINlX&So3$hLzbb7pnj8+w@$eLYr7Mt? z0|x3S=V3{zv_Rg4xcUD5C;ziaF@$s0qfdv%|G%43otI=s&c6mU_CJgTAw>{j*ulTv zXB55r`#9x4Ix(Au#PfkN{`(FnNZe&NxK2Bk|vq z>c3Noe}>`zF3y{|OR`|4q7q zWuN!6$Ns^DxgEn`^N`N&f9xoEgyLV*=NEFyC{vk2LIIGy7yg?;{tsaI-)FJ^6S1J& zQTPRvIJVo6rlyOFMTt;}ssD#1WMtFCfZdgl)5hrkG(Wgn;X&5@CPgVpp`1MZ5fUlA zlnk{FbmW_jLra8ZSR5`7b(#SfH0?Wti~oiiQQ+hWFCimDHRV*zfJi8yI)XeV>kI8{Q1?gY)HgaK-pOcK%P zAE@~sJ4>XU(#01-SUP*|ADy)&=*=c#2}&Tz=;e;gxt}B{*eXe)Vjp-#8+l^6-2&G} zQZ2U)7=*;&VA{wP2FD;+1{bG|oMCVbGQr@W+DJ5mV~|b;7pskIW^fEr$KYbLkyQ+i zL68hCS{s>XxxEk3MrK-WM>9wggNxEezBk{FW{_|O_gEYGi19xL@nLY0+DKOh_a#Ja zF>{*?D?#w$SfHFDgkBVpB@$jhbnfF7 zM+eq4IfDDZ64}xE?AsJ!m9B;QGiV>a#hkp*3&KQgm2NTTjK&b%#q4l0uq2a80JTZ2 z5Lr=7Qa#Bu4YeN25KW_$n+#W3oB--{p^scGBZUZ{Iz;CV@hmuVErfxWXE9H{{QFEM z>5OO%(cA21$7CLc7z4YKAe_8DvcPU1h(s}&O_z8*pxbdaBTx|r_6DD<_Sr>viGJ1O zHx$iwUr%b7v<8t2(DHgk0Y2ieZ3j zD6cNg9g})UVFLD=T80F00yz68ihYJ~2@@~gz^><|8q|FWld=%XF-=s%WXIMsQwc^G z1PA#Xu;<@a89=l=C}9l3?@AVI@)pmKnmjvWd`VN#O*ADa%Z%5eQsmH6Wv^EsBtmR3 zmd7z!_1)Cq;_%jb>wT7|J3=ByOrPZ<<>6?LeNpy|56@y+i~iZ|kkiXVRp3)E^Bo9!GP8FdIGLrg(v$AaLH$(}g&Pnl6P9 zF*WoJaDsBE&>j54ngJb@@C=?Elcs~>dKAh%jn~EGTxO(v!UtiJ01Onw!$9#Ilrz8q z3s54Otgnmb3K+p^d&Bau-zy8EK07_5U)c^wDE<9YA@qON71hJOu@ZZB@pJ2%Qge=owKIu z+59|}#(U-2wV?a|7a7h|(Ql~Z@9E{MJsJ@{=VLU^w$J`+dya1rMbI^w zIXq?D6R+!^$od>D@u3r5zgreXak0mEk^sl7p3}WNCkJZv;nw7LBjYA zeX%NUO`Bf+l7u(<+JW#@P&k z50rv#;Ij3+Sk@;DO8z*TLSTjc-vk5a0|#~yHmA)+Qp&|;zbAcP?Kcw5q-*dn_KfQY zE`25e3cpoPLQ&THq7+jN$y6WqoGz=jvyCBw_ldhjNqXLDIRhYxqN>r*>4kf5e<^rdT zH1Ip&Zh(_-qs~@`0&4psQOtVYjD?yDCNUBPXeRR1pxsd7R8Q8;{y3BrFU|z?B(;GL zfzt%#SVLHfDd(GTN&)@4f*$J^|3AXOWhgiLWl{I;DPCJ@wQ$_pKi8}+j+t1%#*#9#IB3%a=4G!LnI{5rz zW>I3ICiPos+g`#$^LP6ewsx}8tCpDHzn?aC5%Nlh*FLg-yK8tVyJN3m)P>{jaOj_h z5{Wn2g36gKT6FskXWrVFQWthm2pL9OU)@PF7;{DXgShNZF-^?2Fg4lujE}E z9~CJOmSUIDs#qI;Q`0l`GN z;LgGm{?g;Bf=3FN_ZGN(kME7SbWXHQNO&8YU6^Tl$GqA!7Hi%j^?{7XS$p1|Bh zQ*j-825j0>A4E%*s}N1!sHM???-mbXgN9m{x(vSuwko(+(Cg1yFVnTOy6AtQV=hte zJGU4|LKC6)fppI07c+xwOA<{p?BNfm&&vKa>|zuktOTv>MVDrO|4B;->x(K#qVKCc zBt+~=yqiwU^l~xGAv9`yS+q6YbY;B+u{qlt*18SN?Fzj{&@=wqzVGcC0Po=3nIHc6 z`$GG9KkS?3jx4*qINoW)9XP&4_S@GM)*4sNI)%~L`){{gdSD*h5w-`<4iN`X4Trlq zj@vW#wDOq;uMV0Rxiu&UsO%Y$`$!zmLD5P=J5S)NM{aSWzlI;Vgu_r_W2qMozZ7nK zdFtZP(7F<4qc^eSTsB2CsQVed1aJlY5a#{VU%0^V&7zn$(O8y5i@$Ik`X9SQ`Q&fw zDR!+XeF5IM$FbsnD}MWjulRN#F>mia8qb#Y@Q-@lT2NAbdFaK# zNdr}m9D4gUkz{@U+35Ma>yw5`Zw_sWHxDfwZ`^%-MJZpkRDSBbuC=%PpNe;Bx9#mr z?Cinp#<$Mgx@BZy&iFIFb?b`xtt&f-jNuP&Zf?P;?XlRBsO2_2>MzFgbQuXFFmcAz zb*HYwK#V*f1!;<}N`Fjx7EtKY>flbYwWnDs9>obB^8nxi$(=bp9&+OYCLJd@=SyoDH0#~K$HbIId zHaG4nf&j@15N^@cr|-S?b)$?qp~ji2{%O7{2XuObm0oF#!+AHG%};- ziz0|U+45CLmcCT~gH9{fh`Vr4tVfuJ6r!A5sd&T*FwW}XEhi@_9x-W3dB}QVMb1xb zj7hwWOFZ<5um7VfczhlJ&x#k}IKLnS`6k|S0)PZ9ruPI};+xNGlu6Ikb|pOzKanCI zDcI@f^f-~}60AE)PaM6-Q3kZjZ{J`!5NEWXK~g2Bt_!`RGX&0(T=te(uxq?hqY-)2k4+)~w*)QXSYsLjThL0N|BgF>o>cpkCmQQybRL&fb#7gr9pL!%S$fr@q?X?U&o4D%5A}WCuzBgP;hiEUV;LmXv2H4QBn=fN zlk-yjVePw6N1xiT7f6RfTK!FEpIpbNTnA|4uzXT(F|h5Y8buaNu>9JG*vd^1`C2#p zg~>y-`vmwGraQCsxUc9TD1sm77E1L}SjVRJh)6a4?%tKKeKr2t^=!?`=iaS);`@`B zm4bHl#w8_=?GP+{JA9=Z7QnP25?y0k8)01JA*enNm_%*M`Gaq8*x}Oh>>(_GnQPzN zZ!1ce<3o%o4#o%k3NB^#R}iQEKJZ+OP@bG^SV2P{1FMCW%BpVT;s0z z9Bbmj`Q{hTWQP6x*tw5vZzNg#y}>$H>e@?+Iy1XpD4Fb>`k{jk&E4b+uW4O04gS=bY5=A;hbp?@oTDbZNQgL6rlW&gvK4*siAe~uO4 zU$5b!5~XedAOjkt%S}c)mbk|n!7nV^?ep~jTL8CD4>f>K)h&K2b40X!+i+u97Jtj- zQbuvZ?mw+w{>VYS!i4J&@>QeL9-WjA_vJ2Xt(ywn$orF2bm)Sl$5TBFIMHV|Zv)6v z56AWR_2<;O1YQnNF7A;e+oWXoT{dx#pl8UEXQSaax)JCraGL0pliRqTvlmH-IYxhBQJ~3XZV%YB0uT=AWM_3szO-t7h2xj? z3K(}aQTTp+DAu6)_#C_EUCl`o5lDGj?2j~ogK^W1alQ?<{W=ypVRiG)nAGH_1@;mc zbuC7)rqo$M4+EYJZ^8eD1S+3Fe$20uPFRs7KVFH{q=}j%JyIr#hH?M2WUUyLq)B`2HdZV}dbwM&6lxY_$ zYZ5CsapU*lM5td2N6tt=D{Db3PqH}TGCFhLUxO6=ZvCvF(W&HEgzq@DA6*i?EIAUC zXGQt#DVd76w05*@U!|g+JXsC?ebIgIJ}kO&4)W^}bGH1>%X3HyZ_G)AOnA9%bj8;8 z5#jNrr&J|gpltyg)`Cp_!09eopm*)Jb<6KJA#H1hAs|R+^e?BIUG3}lN1E8k`tJ^J zVq)VsJ2Jx^k~gOu`b@_jBReDlRY<`n=hO$XNnhB8)TOaX1Wk8Fy&bkoGMbBTQHAD< zZt)&~eJ@%4V~_3yf9AHc{*48lV`QvJZLQtYZ zm#m`fe2;dYCw?bL`zRB5$C$1ALrS&0_R=NOfBBoRuO*uJ#y$mBe z-o

J{TpL;(>x4`W%<;euC_p{dgRTl-NAf>iKdK-(#%XqZ!YuQ@L|n@rb`CxDx_) zKZZ?(8tljFVx|CfVD9lJ-!iFdv1@{HWKTEg$wTJXC-R#Q{~o`Eyu0|>>hR#0eBJi` z;<4S=W)5$4UTn)8$x_|Lfl% zBbr}dq5h+C_lpD|Estaav@{(SV{h{kHjF974aNF_Vnfim{jp#D- znDkCdJoXj2PUoaUJR_H9MNckL-`sevb%XlAW}&O@6HlYooDk{YxJOF#Hhe=+qsy(04nc5o(7SmMJCuDWZ0s1vQO%_{XTaZ~Cg&V;-|Txo+dBWwG=i^O{QRoc z;LJPxwmTpsv%JRi&bzQaXl-o#;F_Fe*7ZR?`l`e-Kx${|jwaI4B>a@lyzPCtLC5uH zRptbYXI$HbbMWeOI}~rTxPrSol%7@BgdNHejiSQ*NIK*cq%383cdN3la4n99^4j7$ z=npst?aoH#2*tX^_b}FLjhtvbSKZDZWJ!B#>OiPcyd)Kd@K5s&C5I zBUYd7+5r_o)*MB5f-nIG!ElSCA*tQG!oU6MZCqb;-mABswn;|67b$}3&xH9Jf3m2H zK6v&7_FLf$oc2)>DqY^YKN))RwZaxSu~?WI{yKb4_AbwwqmBON51*qE&D}WmHOWXT z_aL{p2+#EauVT0%p(IrSF*t@r*tOJMdmbxtAxaETXNmW>ED7FiJNRl`iihr-JCEQy zA1G)176%;Q1}kopG^JUG?kh(vyRFyCJKd@Kk(_>*nYF%3we9lodJFH8aKT;vPx~+ZCjnE1 z*ZF3rYHAC)jOF1Jvd+>=Bg6(~`H?Gj0jO>i)dr*yi$^;vgj!tZezU;6* zrAWhHP9_X7YO{uo>TM;1BoA*dru4Yl(J?IF^D2~+$W8}BCI z+{`OTXqBL7u+5#7-?~GQ?KvZ5bFMm4=5Z~|$qY$9N{`&g1&@E7e-z~q@qjr{P-n;};@OxyauJS8c;Lue);xQ3rrl^eXg zg*(*u2wq&ifPJ94L3|V@EMYSHvw&HYF4MU{xjYnv>QXm^zBF9LPpywIrE>BnL`&8{ z&p7cv%EW$qoH?;_IQsQD%vJBky3SEh%!}uH((Kd)?mpOI5*ilEw$c1BUN7xZXUZbr z?H)D|XtWzdCcmdX?x_M=VKXOt73o^}K$AbNc9#a`3KPNw9Q!J7fbP-0aV$JuKp%kWp>h6GBoe6o7fUTyqQL6V~6mMz4FlV zl{QWyB)`LXTrIpsGd}%rJSsrZb%wLtbyp?zC!dWe0Fy@fL@DO;Qr)P0{EobJ4>D?O zx@3e{+pe!Ac51c9*jzuUlQl@y)nM-G_6(>$izw!iM#d88kCa}uI*jvY{ zr_~LTdOd#fokS82H|Att_?-OYTLaS?R;XJ7KRxIPUtH$>>L9YSkFfesHnuSJwUiK{ zk(3dgmCJkPOw(K~8giA;fnKM_<->fpk9ffE&t*!ec>H-OPf{-3sy@!=?fk3NF}ZCx z(Xz9#7B#`1e(`p>@4c)1I$g7^%|U5h2~LKDPy#yWlAvrbm~+Z%+X>dmEku_)n7`amy0b@6INfB^b>L z7RJ#o@*a2FO^Z_+pLerh79bN>JG@Xx)B*4L&|USLt8d`^Kk2$pCW1HfX2iOWKa`oH zNUBCVwwH1}a=_o%FI>{ueQ-Kb5lry0>NG*odF^QM+{JC!Df(t6f;!=pR)d_r^3+&g zjKwc?GFS*@`{p@pBB>{eOh1S)j!?U40zN%DWYZ^=K)iR9EOc=B zv~77oq>qf;xCR{ReCN*z^Fco-UwLtMj1F)BJvR!v$Qgb68&v`2aIzz(O1T>o0e zy0H+XIEU8)<8E31;t^S+wfxxw=twH*rs^er5!jA0oEb~%bRg@&s<$r;Mb3^zZp&U7b5sT|Ep4t|S|l6gt$Rm5y0 zv4gXRr~lc`!rxtCbx&U%ZnT4>AewD^-mTxf2HdqKe9SXN|2|l^RO9fUXk`8Sxe9=& zO~eVM%K49`J%{OW9zWCv34E=%7&rXj7L6cyLKeDiv={yix{i(`H^5hu5QcWg=jh|g zJGbxJ>{w^*V*6Sh;COvG^G7^yPqNG9XU@7e_H6mPzdK^TOYb`899~LF(z-gnX>mxO zOximvk8@S6z4I_x8N;^l&(5XCua1t&lR_5Hh}<`|rC0o%Bp zIr&YwM-wOE=Ex?mo|wZ8hm;@j!>WZU)C)a6aM}Gutdm_!vAzB#>x_GDr5*>;1mF6! zgzR>=b=Ah~X7*$WX`$Qj+(4ArL~2}tjm#!mer*478CkOf*cZtB`S;Sh({15% zi$($K1r`-?k?pT@$jodv5B)ly0a{Bfo~THmNlz~US+~61e23qjUMseYSG&eKyL~1qn<=IygQ_s-DRvx zEFPKx%xBog0>CsgUEasSSx4PN6FMls6 z5!qSb99yUTLhs;Jn<>rwBW`zyHl;E-xz}o!a+W##Qdu3~iJN2BoM$vFXZXjB{C)Wg zjzkCcVaOb$j^lvpjr@sP#c+y!oL!h9@0ND0Y@IbamV|yxGFznJNH>|0Q)|}Q8q7B{ zA(9JBfq*!HeAbT4qRLb**R`VM&)b>tvGu@`^czNcUqEpeq@3osbc4MX5l>%EmGO=f zP5VF@(A%DB=Ejdc?Kom~X*O98Y>H>EJnyKkkz6kH64yL^*!a=yK`s^ab3%iY0eblr zAQ5RA^eo9w?ink$!GfUCi7HMd4U*y!cj;i~YAE}SuC~%)s+FuWJYf66U%}V_7Sf20 z1W6fB^hgak3VYI;FH`zd%iTC1i!*d!o_rVDPJP)5Qz554`W9zSnIME!ZGEdB7Bdp)4(@opbbod#`QAn2tw@89&c!s9REqS?s@18FTv7MC=ojr26f{`6`sIE~(I zKp4a(uELcnWEJPH_LXKtG`e(2-bvp%CC`HL=%onM_=(~}?ckEblJZI0eCD8xA*Rh+ zsMlQBvRf{kyDe-OsoQG4J)Xz!ch2cY=}Ru|@+GDu{t?VR<;CNg>3W8Kk(qqq(|1O` zsZYK@Uo@rZRJQbZ@12UWkmoTs_{wDdevtlqVa&maYf_UhlHQ`%Sj&(2YQb76VUG@M zf1&-}$s*IaN7+(|kMcDg`N>Y^uC} ztaP87qE%mhl^9LN>7|9}V(QrOL6>m;o)SD;FB#j%54gwq;8a2(8=usdQ6dbHu)i<7 zVjw6zXJ;>L_(Sv>FW;Zr=h~lK6Io%IM<%C331uO~ggeZbk0n?}0lj(+SnFqSICa;V zn+7|BOzq$si2szA-gY8$bTtJWVej1r@4pr$Qfts=Dy>c>fyZyN4gjS+@jh+FK@bZ- zQMF5#Us7zCz^mRH-z34@^QpeCRIKDrEE4^QQHz-Q?(LL?rxZOoN2+o9S5vj4Z=#5W ztj%2}Tx!Ag&W*wyMO#G6YbWv!K*kNX@A`DyHa+zSR-NijomSCek}N5HbVUmDcfIQV7ixb8sIu;FBd*-P?}8m zrsyPXU%PNBYUEDP3+@il@NOZz=p#2W=*6eH-APEP)tqI_MPDwhrH;ReCqw!4T<#8e z$H#TtIr5HsiV4N$Zo|UN?!dl&XV*^svS?nexcY_7;|HprXL^I9^d8zE9rC(c-r|zq ze%Bomwe=3{NZNKDiT2Q4jGpeb?_(8yJhFS`SZ-Z!_{<3k_zjz{CIJl>?^rVA>Mpy^ zx!4tQ3V^ml@h4Z?Ipgf~)vWr=(@DUc@0Mh>nHGUVZC8X)`lgV#vPjY4ZGJ9OPZJ7adaW0nC*VB6Bsg)N$ z;ks8l)4SjX*DyvNiG9iB4i@)@j<($gn*)v?-q6MN_wPv0BjcLeg4!cZDe=l@unFBc z9#TzPj=`OMc661K?%u7#><^CLxWjo@f{wL6!kb8Wxtpec-f4FjWPj`Je>_#k*AZU+ zQSOH^59@x2YHs(>Gh63ZElFo9)ZJsmD#1Hi=dAy{E!4bmRh^a4;e1DzmE6Yh(jxzS*fz_|a zV7eE8W1aP?C}U|LTxm76(1`sl;8pF%45Rr6GO7z=&)#EgrEX0D0?U+;2V~&bz#5nT zB8WmTxs#2nhf`&8~<*OSd=eXJ8bG(Hn?E{v5Pg!S;Jj8W;kl7KJ zH2~%H?heino6rqFd!|)(6Up17ms1Web3R~ukmthnTgZKjsUTeLvb^zrnC8qJ^m^;h z-Dl{7mGB_;FgReval~nGX9B`|fab1xa)}?io357`hEy2N&Q+wERA3&YGh&i|GtUj{ zoLRbmBY$CC#&YmZP)8=rvMJ05e2;f-c$cq@_Aou{q^|J!$~|SOPXz{A7)E4LQ{4Mg zYPRnvH{bqLQSW*MSiwFh#jNF{S<4*%(sO~OWm*yPY{gMT`eOuNSV1)ZQknFyb-p51 zpaP?v9_ArE{By9z*gmMntVNG+Y2bSPWu#(MhFQxgvla^f67cf#yS39kShMdP`HE?(Te*y#q2tNIKM1ikwm(;lt3^kx4RYbFlq64M z@$gxaam&u-iqax;>uiwd~DF@3-o)e@xcEEukCBR-rY{3 zBQMYM_JLF$pjvFXZJfUI;}5*0`rthssju#+bp&*^5C2JOw|qf1= zeQRJM3HrhEco!w#D&K$(FKutw_Nz;Q7=e!)HGmg0kI7UELQqEhW6WQ`lD!3PDOl>@ zIbXeCZy9)ZrVa~VCCMauTC#onWao|&_{FTXg$OVT$L+&Rx;c1!ThA0IMpbdwF8d-l z@k5uvA+-S;OF0_d+x@` zynkHggF>p8KMVAKcK*1$^JtGl9e3;n`mgHEA7?Ik# zE`Z;1jhnPU9YK&^hfzn{?O`!nx8_bZ3aZ9DqZ=lijj_{fw#JDceBA0lr6NrF#iEw4 zn>GBuK*@saSA%Djt*4R8oo;)Px)M9rub&jvk0J!2QLvv&7(Zp|b@P(rU(X`=2dXFJ zj?4vn7ROVA-hSA8JwR#}zB+zkXF3@vTx0rC08}mVE%qhdFco$rXBVY0%1e)TjMD0d z=NmSvE0wgP4}SYwIBznWpWO`y9HsComCflX_tbL>;l6uIkvV(QD%+E}WC7+;9w{pY z)lK&%=8fYPjn5bvR)ny3)S?QFWm*a;WdW;~4QM8?2$q4C)#Z18*+G@>iZ#ZQ?*MCH zSt_}(TO!wtE&jQLt{Hy-yq4-_`D0mg<-q>VIXWlf_6_dWQbMOD5f2h}DqmkY;8V(l z2{LY9W!&0gSw)K({OxU|ulBxWSv8FV9@ue)WxrGbg_`KaHBKOZ@v0meA)AWo*Wbh) z2i)?UyUQRco^!qJ$Lls;b5e(&3!eBIPp(Zgu|K!oIcPLY^cA5VG#V%RX2#IxoV!1D zhEb*z9rv1u#{oCJ=EjM~OR*K}Ux~-}Tr0rqDENz4iic>Q+jlEQ7NIthY1i_a*|KW49^iee;|hdzH$`!Y z>N-ltnusSu^{yIs8Lv8G)sZTmZi@m#mN{8S<=e-otkX++8KBKWK}Nkb#SWsVx<<4b z_#&sNuK(Ode=V6=ylwi9#W?Lr#nBOu2DZ1OAhkBwS5)tLnz&`(&oiN4%rFp{O+lF; z7QUzpe0opQip~10FFSI%xrDKM1kqMIIYc5M$xYAc@ z(-(N2@HZW0ZH5su!`zqIw2}$p=8F>Mi_+zb;^B)@23WVBogxd3jvuUVOGjK`Tf_a|~f2g$?I5BO( zx=%+SRMiZu%ty753F76OvFO{7Bh06xcw}nx(qaV=dAs<O`%5Hj^A8&9?o%`LT`vR2E{>jeI?xj-@Kk#a$?|e3>mcf^ zw5r!k#HsHETWJnyjty^>{@#+T^zA6$YJpShCWM~Fxqq7=Js8^`xUQ3i>|Jo7)g5Qc zT`+ha*z4he#KrKVKU>3qDJo z!E{5q)sLUqSFN|-;@QnTxkRQCI92I)N^|9EXpe%hhz~42&?WWhVw>A+K?j+g&PTRK z?hdyqu>lukHsnlV&3B#ygrUf#H3w9ppea%ALvc z6=eZ`+@WrRQ#nlZDy>&Zw|I6gSC$~`yZ3>QzU;Wh$$lQydtGEJiL!;?e^L%LqY;JI zQmCx?jMUsw+fmZGVKANm?8lBXE`_d{C2g@Npx1b-%G4z6v`cPnU~aRqeI?x`BkDBw zkiwnXdtT-^3AEipo^}gWVr!|<2uafGrWdIr9o=I9-^P~?{C3c-XZ0Q=bk6phobA7kPb>#JaIKqffYGvw z!F_V-k?K8BY~|{0oS`WfzVyIjt8*s--`QzqiBE}gcp|SLZd^nND-_+yNJ+MlK?+*8 zd(yv~Q4jARxH(qR#x37Tb#Nh9RcrKE8~;GKk&!Kv8?gTcm_TR0&WC=vXnSKG+Aeh8 z#^3FedxswD%zTJ|D>8m^uk6c>pIo8y*k51#vi7-!wm)D$24bIlo6yISS?_DXSci41 z@}pZNE8iFa?v`DBgTpHmUw9tw8-(}cbM>pzGT)C+9?$Lj=Qizm%;Nn)yzts%{d==L z+gI>;UptzgG3`1^^DL=1-q-TJh%lO@hm^@ zM>HwoXmx#s`Idp;PnUx|b_(BTn8(a?y81ZZoywby7myEo2dMA9Npsp6U4vv15s$v8 zyie<=9HpaQ%-1EH<*Ze?oHZTA*Aw>$K6BK$szrPJVIS|D;I{+r@^Q8TsO`)X>R7Xf|ZZ0B&W;7>MK zF<5T_!}kM!qbMu5voAM%qFmDBZnEIXT5jH`dLH<0EaI|Uj1N&hmK zgf5c?bRaHM=zD+9R5(X+o_iE!3^)0Z4~a5eit>}oe8`j_4zt>a+y&oL(E_*6hHDD< z`DB#l7iZ5^yQME6z!BZ z4%;ag6ffQDEA-^q{@XeTy!HyD+ZjbVpJhOIl)=mOgTRB2fxThdR~;W5Spe4Iz3y0U zb$Bb$SzhgfZ=b857$2MO_Z%Jgd5*YzOSQC}-v^H5R?d(Mxx!bY>AS4lMMritZy%m5 z85v6%!p}=MzB>`rT>p zJk#Rukd}Vu(ks2n1ty5MbK_v1Wn^}vP&&3z=`X)N7dlsPZXfgM6Sc;Jx0=n5t7!9v zK6&4w;{eXc^6vBDcNUj@L!UqYprYI?Mcv>spT27CbK%o(tG$-JYP!!4`1IE*%H7`U zU$6UJy=r>TlrLKu{pC%)YW&4%y=pwrP_KU;=wFYk>AL^ar>|U5?(XCM{1Jp|# z7qKYUa@?QqWLsu@TwVA4rDH=&_q@bK23QFCy@3MP?|m;Jb1Ow-2mu*Rgn(}$KE^2o zy-V>7yy)FhKkZFh=d@V)+oKcJ^n|!d`1^1MZWeirk2?-e~ z_S1YYk22GN!ncd^gm2eK+=I6%;-5W=HeXx%{P~9$vr!I^K&F~-<1`ZPH!>j zKlR%Mc=Iz+{rH}EA&>V>HaliNyiVBG-;A~}zcj+vI}GHhZr>IU{3ruxo!^?<%i1=wBJ`Cbd1@RFOKMur~f%p-;59`1l zrer2?yp;sssa#9@6{ybgjiGtQ>ovk-p37Y3xx9ex&vz;63!SZS&zz=cqg|$O$G;%S zOTqWVmx+5Ktf043<}*K(y;N|$xQhTBjv-w+jX0Y{9yC`O@%5s);69hRgDQqN&6R68 zMmCx(;FE?6c+haLY&n2eEyNmAb~PC1kAga6%Ii7Qhm$Q^1mqRsw-e+F_T&D3p18jU zs=bqe{<=?*j(Wc$-Ih?Kzs^+D+nud=rQPEyUFm#?^LAuZc>nm zyxoV~2H*c%iTgjKdHc|-0zbDqRoGX_+@+BMqvwWU?TG_xWzNqB6z$Ho5&HZQa8?=- z9{}2+!m~o@$YJ^zmKFXyCj$8lEKBL>dEvg0{*yVcG3~_kg;{9zKrrimMI0)n0JpAI#Jd_4;OcrsUdBX4*!njDFDWNaf@8#%w zs+P73c>VP}`Otk`zJF`-{GFqv--q0FI6vc^{$Kg=E|T~PnDV**tU zwY0B?)T{X!*SlVkAJ;5UZq+LT54&dyvF}(d{f6?km-4fI=lr{`Pxw8l0(dy(FQY

`U!)LZ*FW*8ZwP%k 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

YjJxrUwa#7vyggCo#jNt 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

uI2#>#jgq*BU?2KA-v|`4ckr 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�sMK%)Xh-1bV*n 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½<^z%FL!0X)qt( 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

2!!Iq%&7gO^^4(B6$yi-N7^QWdS14`XU$ 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

s_rTVte{LMV= zH)~?++X~E1P*Hd;;0jL$8xY%v6(x(g`FTV&Jz1T4t;t7L+`P9~d(Ehlozqfoeu4ES z=(YF~DMc14TOy5*5xvnscVP~sC#k`Kf{$yWH4n1F48g(x5wmy>=g)i>+kpc2P#m%Os-?VRfu5oh;C!r z44s`wLMz?KtU>Q>Ws>5O>a>gN=Mk(({(OKE{IfjVJZs|vKosA)11DH}HTi_D!m+-O z)1tT=P7@8+m2MwT$QaXfHXX@icgB@r29!X7-(w6b`@bQ#upw&cxtM;LhNc{Tf*Fe2 z!XcoNE?LE8u5K9Tbe`WaHwqZ#m|op6M+N9xcf!y-%OEP`%|@+Xvyd@`3P&Wpr82GAsj@1W-S3gTfE2jFXoWez zwew}k`Kg8%(hB%C$h@rffGuWC+9Ku~lP9A=zdOiIrjq4H@TtKqL-@mEMzbOAb>ip% zOP7<$asxwbeE)zBFT>|=lpiME9+(|R%eko)XU4GX%o5xElFT<6_O8maU*9!FI(wgMgY7UWI%i{PgDrM!@Z#F=@~_8F zbJ};DPSSIE=9hk#o&4qbW4}X(driWNvV^7QZ^;S)&n9P+OPLCd;gWdO#Gd1Cge)N;`%|iA&aBSJG8v8MTYiiE?^po*QWxt~dWrbT$tXp8G7R>{CXR;wx z-9|s3w2by)K7iK=CR9ffj9#$LFA$2pTa_tM>mF9kz)Fd4E}Kk7n2dpp6ctBK_&4yH zsf`BQ+$u~u2$CXirUeU7u#+;=X&mxi1c0SP0Wv8Az6M4qLmQ7=2(ZBxGnn$J45Wdx)L=_wjLc78 zb|ypVB~47e#QYAAJtV(cvAT;8p~`1bPSxUJHX#@zdX-UJMrCm8K$}S@Oe1i}F396) zyZ^oeKbI-M*RsB5@Y%vWl~=VIppuFyOL{`Fj*~INb%J8zg2G2Nq#;8scQ7O*+9|YV z;>Lrdg1D~>$V@+_GbI_;70#P5Ta9>!%90MaY}Vyr&57%B5s_Dj<8upUr9&hcW_x(nRA1fMVfw4kg?C!UZk_JWhr3$)G#8-J2IF|*k zSgVeyTGnC^jI|g7H;a_@8jed9tywCRf4ThBBI!Kb6iqE&<^=h9K2@Jux^T^HsKA8X z#DN!#@)CbQF8RT2R4dLB7Ic@fGlk4$c!p1+B+X`w*jMSaexZ@&FKb{xD8j)~P`Fii=#A9+QcLeDkg4#bOVLclbkQ%Zss^1I`SBPMp6Ek6T#mD>p zO;25UoSWYT?L-nbsa%HVDaKgjF>Dwee3cxnbK{I_Lw%IT$7P)f9&rkhRt18moi?;k z5a95-SjJ~*rqWK=@c_oCV$y3-EO=P<)+r$(d`oVL$qGMsuL8{jSrYmhfa^Hzx~lLdujut zRW=<+-~|e(|BsohNPK}X_LThco|^1r58vGl6%EAnR+m}p$` z`^jKdoQbdC*75T)K3RQody*ap`y{EVuyZdLNzf}@6x{l(K_1xY#0ultWJ1$8RWios z*Fj*(rOHtX9a1UERUusr*Z7H&z+0j6JcRKCu1W~e(-)~d zfcmrH_bL8L?7wU{`xN%y>iVNV{D+m#_rHCTKW_g~g`@rVM4Eq(zFm6^=HH|B)><(B zODz0@8}tFdOM^a~iv-m{9~6w^oNn&T02u24w2NE!`V5awnI-D|oPi@OJkKJvP@TXL z=KNNcPDUpu-EvudYgdwal7G606z==ZJ)R=r%zM*b1!vF&VXa%ndY#YOAbau4= zB!~~&hu!Ju^mLHvn2q=@ANFBqU^Ho!Zt)vY!g2lWuwe6M&qM{|JO4Q;(A~1L+y}^*B{>I0|zhrxC5b?leOT z*9t|fwzfH69vo7B*Dex0D_SG&v@=TW`oPhw$s@h&m*uTio+Qo+Rh^Nd;fWDbMT+CR zO6VZ%=c7s`G=Wq#m5_xP)*3DxY^jcE(&+K=%Gya&N0~^BC|jdzZYV&Bu4xdLXQ)(~ zbL$?YuBm>AQ&0)fCv4UzzSpdyWfN@gZV_k}_TuC|F7iTKh_)=+J4UF|R%M{d2O=L& z$;`fZZ3a}Hu?i`rWpgS#uOv9CLh;mQDReFKma{2BY@}sc%Bd2Wf%u_g@-Xid9R?wLI#$*J021+dMKw3kE+0KjGZ}@qq+4nf7WAjtO7L% zHyp7o5gL{Z@ykYQ&rsYkyHuf8YSL;Q8c?1=tvMczXJdD|>*_UC6Y6%H;N)0eokNbq zsxeevGmc`R7)qCrOdI1A)~!ifs0SR^lwzTDmmv>MMjO0Qhrurt@qrk+;NQMg_<;I@Q?$-kC&IvXlb1U1=&;ZIB8vtcotWZfCw zEp$shF)Ul9Pp4_`3~sFA(O2A#Qd{S`aDLfQf+(|+5HF_iIEJHY;Y-aHPKkr_IbQPf z&F46!NygCpVgGqLDIfHYMS?1g`P?~n7G85TNLERR*Q7lE{QgTN`#*Wn`!w;t*Vk4( z|DPwTpZ9-0#UJ1Qp$aGepSAh?f98q*y`7$)r<=3MMLaI`DI|g2=!^2`)CQ`&v-)^? z>)U(@&JyuEDM0+GH6Y!k8V1sY_no__2BXQLIsz460fuDek8wIIJ#3Hj2+sRVV>~M^ zkMfyGIBQ(AGq<5Q@}bdAqOY~F-tvJ`VW^ZE({tHEA?=&T>^!RFv#f9Kpgx^s+0Z;5 z4`%FwYL$Uj`31wF(!qD30CuBEqyq3oCHASo=HR3E>Mn5$oZ6wOV|L>?a;j**8rAMG z=@9Ic-+`ZnZ1EJM)cE({$Z*}ba0p+@EU0*DPG-FDS)rLfDzAhfOq5?X~SS-PyUq8UP)HNjJ#Y$ zb*M>cJpOL7k<{)P>|9TBg3f%-X&%_AP=3&O!fbj4-lFQ&;nBg)-gZ*x zLp^wC?1Wri&(qVqM-+a+G?Rj{2%hdilU4T>?}U$vDh7Z0=o#BXGldZ8=;3|*bRZr} zx_D0|D7D;Vq6(YMhSK^{z7AMUc);vjl%R_KD3hASY51l?q-5!&Jcx(l#F0ZR`{{Lr z;XLpH#SQ|QPTt=ZT46YmSndMap!hLvkZ%z|FNbCH_Hs;Kj0fqp++VRnkh>i4^p-|+ zDdCV=wHywWH<0wrg@mEvTPzE_qj)Hs`w2SkLxU6~)PNTgs2}^#ffWXQzG5v8i9R2e z3XgsR-HUm1%@V~uW|mk)HGQ1=cnTT%Ree63<_2uK{m~5Wo5Vw?H{odk)D&Pm$u6|Y ztHse!)MPP)p<*r;hGL#vTvKqY`k4TNdGat115Gfu8N4+~FNML@7Qpw z*&tb7Ue>0CyDElD8?emut6a#J91>h;dM6iIta6>kO^)h?GAsI6a8YcM6*{K8mLaeu zK-8GpTVY{~YBom2`T;@~W^v65>j%ow8Wb&Xh*xoCmM9=3g?W@jkmlM>Q@N_)N(D8( zXihbPjT+yNfRCkn5h6j{^FVxL+0#%FcLUrzfk@cr`Ysy_ffY_wrh%?&;rU^R(|%vy zjqdPq1N4>ikVu~SafQqS4BWL@L^2c}(DmFv*I}S5A!-1|K7nSW5vhGy=7PAE5GtmM zsou+E<0{#>HlAnh=Z{yd2E^{@XD2BfTxBIHJ_?hsb)}CnUi(R}t)$mHevzvApa|w; zPyon%E%q!SXD(QhU>j1v3WVIi^cxC_M)NFru+|h$G9(y1s>Rp*B#{v8vhQpAjdRbp zUFt0@K}(V~%yr@@3J2!T4lFOnmdr*A2^b*dNFY2|13Z}}dd5&l>cV@Bng%1CC^aJb zNQteHyFI}uI}vq-H>#KFE2IyPG4JzXzl8{T#hwDuwVeB{G#5`L5OrX?fO-sm)?KDH zzo7OZLL9w#`Rts->P)PBa{O9WK1d%fA2?o00I;MEam89J>^kTGh3*N9UqZ)vFpyh* z4(GAuD|o=y!4gCuU4oSo1xt>E@k(wNeO9A4(c;&#lH2vpL-C;y>9yb-t?EbvyW5vj z$;{xp;0BdhLbZ9@wFPSmUy8t9;e~L)ZL-0iYvw@a+!?7 z!p4fQqH4GcMugT8@j|cWQH!8DJ~OTDl=QRM$g)IieK8@>RH?A zvh7C5wFF2^PnP8_+t3CtnhJ;YhJ$4kzogbdR_T$uNN`-0jK8}yR<*;G8SEDSh~cgZ z)|7wC&4w&0j#hIuxhgUw)1`8u&$O&)SUIMDYhI46b?h8Wv|6smgS19B19xm#!CtuM zFj~0BG>ZyLiCc_(*I2)Y7$X;H;625Pnsd){|M}lKn@4~GTbpv5lSX>|NDRHLPZly$ z&dzXj7EsOPBSL&6O2#g}|EY&_Z~s%4T*(%wUBqR(pjMTbU4`4$iFhBYm1y8msT$)o z77jbfD@}-2qtg5ksrPvM7cA&SX{8?jw_BCU&LCerBVVD;i|`)HDj4vdrZrddpc1kaM+UhW_4 z{NMe(qxLQ>%Q;zUG%4)(h5Onn8E$=Nq zoeU|gv&qI)N1u+Gq?cX5SRj2vN0m`Sn(MLnHCS*+kiLcPwu1EEB&*Hj{(YTplJzK{ zT+UTF>ds%^$z{UjMvj+Pl?iwcxNBliHE4ls!=)z!Vx*NW?AQJUzy8+V-GvK(P9Ti`MBU80aVanIDF!KC8Xmu!*p=3S3t`K!-08O_sO zY=(dS<92_#zxesTz3lRCj{jA~|9<%Ju^0b)ZT->b^M9Y>kDdRc3diGr56$Vnza}e> zApGOXdU^D3@>D`sCt>tnk7lr#1zRlBv%DbtRKAdtNVsOPOL3_eXl_g0e7Og|(_U{h z>BBh};Dh8NG^ON46bo!NFMj>Bv$fs9U$1r!H{svi_Vdmz{Ah1(c6RmC(a!6`|9aCo z_ys>59PIyuNIS3E+a0uIU+?_>;Zc2kloK ze0%s>$bpZD_WaG!(LSa>+TY&Z?U?7ymz~WY&Er9PYiHj)?!P|T*$4PHB-Byo6=q4i zP`?p?zd#87;;7R;*njaty+Wkjox>yj{h-rPzkk}<+uHw$GP}EfaM;-u`4A#(?X-9I zx8XhgB60R!zd15rUhM34Gy%R4UNse!pz*ZHaQBhr`W-{oUQp zmXYS|PUolB`v+LcA`vT8MQ=U5b)M*7J4=YM-G23|z4_+gZHGWq!dK7tQIMnd(VN5P zZLIN4C^Y;5B}O^^xwC~hd;3R1`28QfY-5Jodz~%B*T3HCU%TyJ_TL=oN>SB&_)@e{ z^&ka+pM)x3jlJ@3s!wqFA@v2c0&4QhD!e z?HCMEFVrCpU+?U(#@qQBnH{{@CH^nR(jHQqY&y(_8&S zFrC-!gZ9zBOv#_#T2HSJI?zt&=l=FV=kRcWKS=nk_7P^iz4f;@hexXKLa~7^Q2p#h zdsD#vvanzWavF4dgS03xUVZ{A-S*uAY7f#&d!OOZZ78(XU@ROJ@&x|FHJkh-|8)#z zgT)v~YGR)D`!ZF5zMvA0Uw<7j#$zyy69@>4^#7PCH%sTr7z&lra`H2jNXpv}x3Sdy zoNQ;ypu0S&@KhpQ@@g{dU|{hqINKu&v_$+qlkwYdiTWc>-9D1o2=%dHO0V&Cx@6r> z&@_0_*q7=qC0?ACB;v`VQ&m4Z@2bljtThx(v0`XU zd+fpj3O#3XCgWThuE^!J;jkpFW)cvkJ(me^iN}>iFR7TOPCu71SF4J#%w7I;;a;w< z8ILw!N#tc*<#a(VQL7SNT9C3fnrgD@_hF|`C}^4Mgu;oq|BXdvyV6_9?A&k&&lyN2%dW=hu&={*pX7sqevlr!rEcwlN7r!o zg~Dike~?Hrupb^rf{Tlw7&lHPqw`in?qf856GpNy%v&TZDoeHGw9z0zp5aa2;9v@p zJfmA>HX2eAxJ|fsmJigPLxVOQ03O#}B?A;)*U^XMH(}E1mqJd(6htJrkHlS!T!JeM zrO1w#ue?&aOX5$C^!q$52HCcADw2yY&0uEt+d4X3a}jnKR&ZutMrhogl5E+ zuO$~(uY__h8=gRi;AHQtSj>`M$6;1@O|@eMm5CmZdZ$@7Wh|Pf)RN_I)sP`?PfhD% z3X%4mRr!#Q6xK>t@u^eglr&gs0Z8A&&}KMaN8WIH@`lxwH=MpqJ=0{rs=_VNV2Qmv zg}nm{NyrRm)ot!HpsH1pN%iYVqEPG#**k&0V9@^lthF_}(O`UxvSPQLo2$fJ<;1pe zg)q8QgnoM4IXK$cr1we~?HOlv8_CGp*?sPeieg;e$7?bBiS(o^pm|N9Q7wAgj})1u zTRD1`4xg50aslmO6r0;Iwi>+I_*wF6^4nJDMf=U}QTOoZm)*{X-wwt6yuJ0|x6al! zJb_aGfJ*$Gy8~fsF;|VTcC3Z!p4$4$c16WTOuIQjNWX*FzyzSLw~jE7Cv9%YflwkW za?#fpx>qIW*SAK$_Rt6EHQeGDXjHnvRN)f@rL7qBYL9w`LlJ2_Mgy7?!503! z$AKN520Owwx6VvjtZSZ`406mv2PlhrHC2}rLGisht)X;TgxR^B!k zQ)NzY+zMIS+?tD9XxbB+Gh}Yi7VC%`bf5*aEcs=fSy&2}HI<^rnle?&*{aSKN87k= zag+u#T4gEeLqM|7{3v=lbGjy5cc&l}W`&|)tnWfW1i8wX&=t`!TD?+dOrHWu=O$` z?UHD<(D&OHnB)_$m^)_V-5raAfi{91Zu4q6Wz9)U&tN<=^$_I8K9^LAgXD3!xHB#n z5iUiIytu8dH6`ITN_7a|b zvAN@XczV95>`LrIj`7Qn;8j??H?ViZmM&^teH0_@z0cx~`eXWBdK3ebl#gl_j6TeO zFFgf{7iAlTO{uC^%Zj|8wctN`{c9r~_RdC=7X71MtMoFCT}w*g1jAFQj%hvD(sCO( zk+zn$ zwlu0rv2s^KGA`fPuvTFlmNl~;TZ5_5#(&4ksw26QFjilt=}YB$Jc9~U3NNxz_S^IQ zqnCW~SxjT(o)*qse*Fqu!MdHFU$^(R-qF2xGgZGs3C(yEKPb{D8?0TXc8A7spYwi%Rn4nTE4{P1}*h%$0Z1`NdB0c6r|a898h zD?IUKGhvT@m=p`EnXpI8i~wa5tZsIy*v$_S-S=>U6iP z`}`vBTY51@C$zWR>e63W^tW7lVN&bkj{KD!?It}Q!~<@JpaPK2AoLMQf6L?2QJqb75=r!rP2mxl6i9(zA94EfqDT+qcXph}=t56?pQg zv24QT2!3ip01RIB(DMsTS(XCsW7%3-=Ds&<9k8{DiQf`%0H;WK1+-4 zl|8s6%8!DIRUH%+W7`KkWPt|?4s0Lv7>L!uP_JvE{^Fzl97dJ3H%&gGf8|FA7_ia6 zT6qR<;MD0xgX-a#_$Z#0m7>f8#C6SsjYe@c$%pUdS52czANH>|8rSSeX>O28)wHMq z(NU>92~XJ=hc6Fy_I}jng$e@@BSv!rNzoo?wR9o`&`%XG+|K!pESx$}*B;b${p^H@ zz3g0DGF;b`A()+VDBWHzd5igo3MTnT?IiiA3*n=pR|^8F{>7Jo>l4O}fPjYFY`4{k ztrkljqc2(5{QBlf|1rx7*c(kVQ3CIyhQLrID6<6=O8J771EtDX zz4nYKx|YIe|RmA+({7S%>EqFVf$b7L;vBpFXtIg8hFGdcBD-#B4hRIWuyUZ}gM zrz42m;@r6)?+K@z2J=`;5C-GBq|7FG%WgT3IJS!sh<$lG;T47-2UJw1sEY`;_>z}K z?X(z3tTG(|X=2Pub%n*q1@xD9&LBYUU9i$fVIH)Qb2nTF%jeUZj0OWV>2J+OLj~JG zX=Z9SGlOLBGQt(s-E3Hrk#cMf5J2wd#Vw&Fg4em>>XPdIR}v)B>gEc~ah-<%$g}eZ z3ttD9Y7>QKvB2vvO0rR2LYmqZ8}9J9F{Y;WN?eaHwacS!>1*U*2ar7H8VYN!xOrW~ zmjdK7!{(i5-9USJ=UjjH%tz!1Yz5To2X#hnYb(GQnAGvXdUT`h;p`X(K&G`W+t6 za$=^wYbyf&^VIvKB$faA2}}<3FF%nt(z`DrxH5a}cOaoD67w^h5ea90`pKvu@xKdq z6S-6cBE&+DMRELauM5!_;if^-n-rN*q#v8xAR*BMKL8@0a8r{3FaDuYq_PTL=F^@Y zwi>)MMFX4~l30XOgyZ26|LF67@$;VtaGTDZ8~`mp|GE0`$;ui#|M>{ce?D4&{Q3On zr}$&%KUIa}0no?t{O6-@*B-92c?!oQCT1tzy{KgV`N$K$w8{V+D8|^fU@uuVBiN^`cF@U@&HSKE3V=1rp;_zgJsm(RHX21riB| z7tEE{ZBOfTqzYG5i<8}XwDnB&y}@c|!^*g2Gt&wywl=|QSJZ`I^q{Z&GE2q8MlIyh z6JPFS{PlGy<`qwASF%cMzqJk*Yr*y575#>%vvZ}=+Hcu$7oKZ&=7i@za^}Pt6Y$K5 zRfg9sj^b>0tKsZ<$-UCL-m7kpXJ8dRnm(e}$U?Ws%L5bOR^+wjz!2cFiMMFU%tiK8 z0;Hq!X@RkUU$_42ZxF_9XYbAao5K&kZS5Rx9(0a6@2XV=a^ReNH?>^MqB2no$AeK% z-Sixiq0}MA<>#Qrm0>Z>#&^Wi!i;mg(|kIp9#`gBQdP$oeA{BciEB&5h%8lV+S-O& zYO-$TM3}W~+8^dMk-SKFU_pU<> zWrEUx5QdWlXSI5ktqPkdAOBe@J!G3#d>pnhRAL9&9up7YhU#c@D)4Jrb3%ICZw`s1 z-&^zmm`3&r&d}TLbhm`PuweNG6s$1g9(Ro3S?P@fT1t7+TD*ylp};}M)r zG=g|1Vf*=MK9$1)Le?4(h`FKnhgXQ;&!#Olbg8}1ur)|{x@C55ZTQM5?Sq{(EVK2-Uh?nFh#@rx=g9Mu6*QuoMGrx<`qwAI9PKB;^}Gu zSgJlQv5O0xqFfuuRIWyludBN+;}X&g49C?Dcf#VrWAQs`3NEqI7VI5OmxeVJhGiqn z1|?_DCiu0~Mwq$x1D+v~kMtUYG-Kv%2ikAnV75g%r(Uo3Qn?@t8jik~;7YTTd_+o1ezXlXYzBYp;z zXu#_ftJlB15y9kvQhd;dP^krY6vS6j;De^njl?6;Qc61YtVwli@<>^>kW@WeAyi}s zs$VuRPDvs)NXbWjQ6!?Vl_J7rFEj`CPV@R+Un`T4THqB@De4{UAjbFqWSrwW*Z{1! z|6%>{lZWp9-;=e^@n1j5AKU-a6^fP4PZhNI~i7K!^1ekMKB&ThGwnMHWGkUce!{DVbS^`0wb1uJgsv zsViG~}5rj%jzOXssgv}EI#RWRabkL`)jYT?xtUsFQ<&&(a%R|sT zMR~1aC2<7|i=f{d3WvgiL#yKJR0?QL$asa&YFO2;L+qy~0!<&x%HdW!HnXAd+>#NC z8jk{_=*QRUey*qp(kSs@J&^lYm?~QkEB+Kr0E`n4J|WHIqb`t*21>5aeF1AFgDH2N zoSa>>kxq5)H57L0B)b}F7ZkY4Oo+0~Tuy9YUADNEH90Ntb@Qnid=fe%45*?+@Ln|W zTblW5u(O&Gh=@a$U)GSR;CAbMJOBbt2niq-(a!|$U6SGqNh=pqE8P+;g zD`OR$_si%@ zXk`jsQ$yx5MPGxyQff3Xz)}#>fp&AYdID;Fvf4g2G7MrmDeHca9$KNfzVUk|~G zs_4(wWFy?O0p`BWQdiw5k$i-_JfnQ#vlOglm}3&y!L#Jbhto2#;#Y5Qsj#56P;@95 zMX|+z#iP3z|7+NP`E7Yr*?+4mj~)B(@rp?P+5YTDv0vk56~r`!gV8X;Tf_UiC^O>aF?7F zj1&Nd(PNQT%tzl}FJnbqI5wA1QZ1vAEn|zyd&4%a_yDEK@E5qq3bt?H^sFvQC`X9D zL!zqE1Q~vZk@@$s)BO1gfSpQpDTXXHdM~|O;UjO?ff6V^V6^`bgx&Z3o zw`&jK0;rY8t@Xzt^ACm{yrTzff%8-tSktqK7&yt)qTd-DEFTZDi)?^2Fu#$hp20|P zguj>RuAj#LvMbj9)PH6DAM51z@BgchSD$$6|Ep`C`~Ro-v--cRaP0qoop<{8N_2hH z20w`@!C5A3g_C?z;4BB{Ra2bphzU?q;OgQ9%%&jbgfPjL5?H98%y6X zR14vdpf4uLXLgC2#Y@+MmSHu`-cNp#e4!9lsF4vToQxs!rwNuTroufA25%eQ9(q4h zgiqs~W<$g44;c7L^#3Hgo8zBV=Rd{oN3Q;VxU&9P|9^@6(xWXZjD%S?u<$%bCJU88xW0OX zt3yFj;9h!(Y8Kr@V7X4|J52V0mUk$f{>mlA|GJ)C#q1d5lCj0aFA#9v_!A~)4AO}{ zfx(^1xm94>7#6$?sCOe+qIJ#{3Qz(H$Wl87j_uh zt`a*zMS;11{waxEjARj3zy7wnv)B3X8)&ciiAv2$Lxq_P@?jQgW90!bEpUVgw5o8m z*tP-o5z=LWM&+IfbV_-{6w?OF%uS;VIq3GIe?-qP*S{i(NG$X7W{SkwoBl|thC4BIYh4I9;#oa%T-8H*C1YS01!gA-dRFh-7^fJw zV<@%MMv))G7P@+&T-);LAS+s<@l+b&VhSR9kN)o54!tq%3PwfNZ*BMAFOT!9^K^`_ z&)Mtads4H(cbbqA|%qiP$-P$ zxFICFyNi0?<9Rwa&oW-8Fq)UxiGzRFHb!@ell%Q1J z%7sVH__SOa7w1Nf@=YqB%x+FRwZ_xp60z|tiONIs|KzoCw3v~NN&hGl3N9Y z*6Y!t<)OgxGK-ewJ`BZbq+D$-=+fXuxTr5VeD+GmPlqOE6vzVpm(5ELzH@QoR5kdi zfqL9Lb;(K~gG--EK%TsUW?j99VD4)2IZ?Amx0FUHKqY*zBU zC?f#E3v~1phF+eE(bBw{O-F9BD$z`g89P7^V;L+2bTBMw0vsTMeoFSiO|gO8M>a)p zGiXC^-%AMbm0({d-t@|#ZSpX3S(B@U9cyJmy{CgHY@J4e2(dmQ&&bEx@Z9&3`~4<- z-=e*=8ys7@l>uX{o)B5woleqW0Wl;XK4FNP&%RQ%b4V+4yBbb5P`_{Bka2k~wK0zm zpb}onQ(68k)qJ3kNATgdp4cLGluV=JCD&2{c647UuL?_5Y_P7q!8;=tUB#7Bf>`>^ z6Uf4s^6+;}8wNFE1O&yhAmEJwVEWTXurfms=9LxGfQ*d_QD{_&y8c+OfLN)iH3iOY zgL?2r1AJ~Ctl>p+@)wVaKx|b|1bSjI5tKMA;DHt_5H=4og=GRvbdrudpfG9 zjvis;uyW3XVO7N6vT}$>sRN+ZYl{9Is8qa{%>;jFL9c+}gEf%iTK>ePFlnh!pfna9 z<0|=hZE5ztnC_8x?P| zlmywIWHJm)!^jX@%U}exw^EEjTZ4hIS!?ZTz;&R(UHz>*9gI$+v%NljE}QKULUguA z2)eQ?z`FbUHj%7hdg)E`QrgE7vx+n*!13tHclA)Y=rU?M3>A>g4+muTt@7R(j%U+~ zLeC*hw?@%3u<`;7AgW^IpHyMq#KQ&ekP+SNBJZg_g3z+OqP{MiF4k4RPBcA5UPv=P zFPpH6ncGudNMhCs;7O#fyZYha zb3AYARfka(gVPuTj3N$S;Hcx6Q;GiCuWujoea<)<(k`7Pwz z7$`pq=10*_hcJ%c9V-jaV|SJc#&^h!!SUE?PCb>}c@=6y-qly3y0^UjW0&Ssa75pl>IIIvxf0c~(MEFHDb zSX@xfGPA*;E7+gsL(zizvbj2MVH*?nW}Ua(DH~E)F4<=5Rfjx<2)BSCJ2*LM!76{z6CrO8j${*WVM;xzpv9xvK}2I%DK+Dhm)>%+Fc<>XN58W?}2*k=CF9&g3BAAoH z&53L9VQ41=D_4}1RBx)`JA9C?$q3plH5^JnH^87z*V>4wrcKWx}%QD zf&G>Lxwzh-bJ^S%ojZXBv$(}IhL2@)KcEgc1v)(HPbs!-^- ziC)I~bphsk_S-l+f3Q@u_0~&hk_s%3S$=&UT8L( zLjMTkJ02Mxwj}loi|qOITv(OlP!s^i&)00d26m|e9%;cGaR&F}yoG@a_l*4B5)hk^ z9Ln;p(X>k$NgS_v4Dc%V{xzJT7)^?sRbvp!VRe=dz|8Lo(-b3S+?VMZe1Wo)F-1RD3~!! zaBHnVC=P@1px4D^rwiDdjWkBMXIth4ZrPSUr4vM}MlLNbxOnS2{gKY1l9){fx6!md z8cnwYU6OCa-K=CSoN&MI%_hYtqG@4%F29e)wQK;6>F|TNdr>2xMlDHthI(29HH3B= zM8jbaZBCI2Q8^Ut^~PoIK{>48YSe7lJx$Ng(=ZqJuBxzY$6(yflTA+WK=3U`Z5zj7 zG8^_r=VN(qy^ukMM!8|<@X_2-gD}%zsbszPx6+~xki+IU?RPQhWjcZAX}2gn4=OS^ zOwOr*?__LXU=BOfI_K#a??b#fBMZjM(fBNdTaA079&ec)8|nV%RlxtXfARG{VK|-^ z%NOb7);y}#|DO2ke@`BNj{o*a{@D7Tu5eoaTeZ&reb;*QUF+eK&;np~1veFdnIiND z#(M;XBGl6W8rJA4Qbm4?z@wYdJM>{WmQEY5Vy>jXm2s$=cvc75`ZN5}6 zZISc?{?k2b@8Iv3vKZ8J=jZk&a@cJj8X5UDq;?&>-ubz+dk6$Odz&vihf27eR~;eX zp+;c$rz(W~gB_8ueYCT`r_k6%ssiV2=iq2(vu(218%>60trkHx_Yd|uraJatcU4(E z-xrPGm41Xzy7=TbyCTME@4bcnTGXUM4mOW*Iz4kJj&x!Fv?E#;lF+a2rYKS>AN*m~ z$Kl|C3bVhvv-yjuwV&F*AYuEBkXjVjCaz+4MEN9vRdxw+7;QYFC`=(31hrks1v%)v z-RbBay}7@;kBx5oKu9ENrlYAR*&r9wFsmCLbar<-FBI|K{=qA%*O%?x7it}z0l+FA zg*wvohdckbqgz`0Kr|Oxo$tKCKD+bkRcC9bePmGN1sao?-D3~l=qC1J=ityZa4LqE zB#mIW`R3pdp+zqc?NYvfxxfFTsW7@M*}^~EJlGeVO6PP>s+7)at{w21tB2R^?T&sy z8w&V}(fsYrtJj9J9Xm=f@9cIqc`u^v5X_rU$CRH}LjCQ$rnjA+k3=i(n08#8rF}<} zAHHmF8C9-ww1XwG|Au;k&@7#;F1?cv@JXY>H4-+c=_&flgKw!Tc&aCYyrJwBr2`gSjKOPA402k|R)dm_v_7SPP9fdI! z_BPy^Z8iF%{r%nNZLN`ZHuv|i?;eR#*Ue2MOh&U)TZJ4Q?7!K5={F^&e%xj;8~5Fk ze)D>Z6}6DzXlL)u{+mO&XXU);?6!Yl%>mXpkMlu3y;g8?|tCR4jz?jIa!ZF?v-U=@|SukM?<&kP%Jj5>ukQ<+1=90OpL;$%h0H!@oQV?H}ibZ-rCtWj}cbjos@<9 zD)R910|5|OPt7tGj8As}D?rr0)=sC(M@XcB+CA!+k+m4-_HcCgddDd1T7v{j5EwLG z?!W3V{L06c(LKf4h>Ga*nAU)N_`lhHxB?k6z*~qX_blIET{mmacTb7|D%&@T0 zjz*KQ+`&BU{;Yrf!ba-8GdS#QbyzQE7D{~fAa_Cd3`AI=`&#=Ny&^^%In4h=#uMgL z3|IK_@FyB^u=#YzF6eLrSk5$3Yn-7brz;Z2D^jQjvQtty81>al2bs_w6Sxdb3_I6u z8G=c*w`E3;!f9dYEUy-dXtdmzlnZFdBroAU;GLYz}PUpw2&=Jpt z5l)Q+-{3d`6as`a*9ZIC!U{W#4gJlMpU-NRvYf{a5>1i|}{gQJGY43^&)o%Osq4nFOpnglEo%zKO-jxR~i?9Ek z4(@6Nuw)#2#-zWKF{okqZ8|Z+5@9+I1nve1Ym-!rm?;nY2^7h`V4%jrea1Xu@ z_JTpUJ2&CvzA&%>{C>n?`2Nr5_iy7h{Cn1ar2pgV!SWdP3U1A#qW?dB?2Z4Ao~(Vo z|NWEv?FcLQs+GJ--)C?deBs&c{}v855Ano#EBRIw?#ap8w@P7rJIO@P#@4mH`>kTS zbg?jj8BlfsZVRx*0G2acLBAgR@Nl7@pPVEQddY(cq@#ZxE-WrC>b%@r{qDQJe!KGB zx2qJt^l@wD@jV26@Zf=!>N~vX>aWSllh*oot(CvtQ&{{Du~*lY*47eyOp^Vhmz{&% zo#%(o9_;?50rRP&ABCE0CJzRX!|D5ntBH6o62Ngb@xL!I!bh?2Me=HQ|M}kzlV|rP z>E&|oe3aaqjzoWhUw;<~@7<#Z_;(jPYViSn7wYG$bZjMmmFh2f(UU)4=U4LACS1E> z5gcXe+m;kU{CqJRD%zRC(G;`2+2puTpZ{x?_QkAKJsycUy{05tpom@{QAR~UP@Y@x z<(c@;6%@**EQWjFg)&$k$saTE3x=W*zQb+h%Vj0VUm9YPvkL|NEhWJEgqjh}K>XdV zX2eUUYW^2h$Tzy-QTE|?Q#ZX&R$rl>^=N(R@rvqM!u(hxFWVOTEoHn1qVN6K5!Gpb zOCF4pzx*du=og6`z3D>rAQotIU;7co*3U)!pOAOHUrEy7Q_V{D<%L`s@STa4HJB{bQ$@ z$R@$^2iHjP3=HyP`IG|E2p-Pgi&P*M^zEI!O(AhljO3$pBRM4aJCx16*${hOnn1rN zNP|vo^g*vD*d+HK>@G_kaXJt`fD*VUb<(`g%TP<15A|@e+#3o{@>8t+$4{1?JW{oP z=f$E2jNi9>oN?*S3o1Cut~^;Rx`5Ofxv}0Hw9FcPM5ASYS^nOkyi}nq&}F z=ls2xdL$3VZmN?U%X;i9wY+Jk3a2|CcuB$1tB?d)!)mat~0U{dg%I!}z;<64URoOOI4<{ql=%kMrTT#TjXU>?-ResFQkH z2mPneNV{*gI*0$6JlKIJRh$1w8Y!fQ{<4@D-D8m`HFTd;luGrVS{eQ4ed--cS{eUN zGU~Q`J7GWN{I6{OKZRy+2Rtg*|DLRQ_dlhkK<~Y~&uEiG zrcRPsfdQ5idd~XEMK(cYHaemAqwyfSph#&+^7QF~q$E+KwAXlvVUiSQ`N>oz%tU1_ zEGV7-7s>EhA`(9}F`X6uv-`YG5m&H5M5|RE7vpP71b|*Z_`~Sm7>yOsm{x1@K?*E_S z?_0V4uPPi@{U55kf1Z51vYxCwYCT$MJ^HJ+?Eme;!k785H<1QVic;cG?o3*o$;9%L-cn`~;`7 zdV%-n+4*R49ryrO#T=(Sl-qo}e>q9VW1*s!&+fCgxc-qJ`!6Bi{GE6~dn@AY!o?`> zv*Qx|_en#{hlH|%U;xQtHkq6kr_F_b3OxWWvUxAT>?IK40X9YU-t6u|cu%3@8u*4@ zsjym<2r`3_+xlIiZh#O1do;O^!9j^TULY?I3N{u6>5>peh_Tp|Vmw{=*Fq>GJ&_TZ z&UN?4(-+_Z18kDUcK`jWk*K0Po4|`ErC|v=7jPfNd0M=u?+agwrU9o(F(K$|D2$7y zP=h2lEG>ce&X-@p`=lY?3VyF*U64xEGQb7 zUd(X*C3ApGJ;4`5@7RO`eQ<3fG|@%2S8ouKqB|`L9k;OO=aQtvoY|HrGGunsIiJaA+mxJv=oCD+bQjaJwvW={IJOe zIrxr{RswJ;5bZc9hKz12+dIr+qlu}76MRFpfERf-=o8PSm1a}H>9M^`E_ZaU;0zge zNhtcAE~_JvgoyTe*|YP0DW1^3gb7z@TzG1b8Nl4K$#OA1(Z zHrdy-h>OjJ1q@xzQtX!0Nmw>pG>@tgpLD=)<7!U{7uwn1YxNQxJ9d6q*MZ2Ho} zWYiuNWrFFb8F^$39(x=DEG1uIqNdmOdZY1mLw%#`KSDAc55#O>ewifM?PLncGlqa+ zWTYpH#W?Gg$%8t^qXjB0Lv!Jtqjp%@`_&>kEdk?U^p+AQNAFUvIkT%O?N_R8`RPfh+60oiwawo(8WmH?UZ@7RAtf|cqL@<%3=*)0>y zZ`pVjq>@E5Hyvc?24qrgSZd)Q>rK<)>43&hUZ3WRtkWx1iP!3foUqUXO-@+l8i0xV zrOI1AE?==)x@x*#ui4jY?<)n=HYq4_wVR5hV#%bK;hNWU(c0IUTC%c81$nxUIPh zA4S<6o3K^{W2rJ#IK6m$jbCDevMosuyn;Lsomfoc!K?mYfB&dUXWg}gls=LBA5{F^k^!~_<;k{K!zi09;)Y6wzOn2)RcBjL)9jS{+J zF%uPU?Ym803E)qYPq6bS0G%}SWRs!@bK1z+(T=e)D<-eEsV zgV-K>?5D7;YKw5(6GABSDJVzN&!L{oX)N9op?pZtDz)}nW)z@_nNe%<*->j@oab^P z1avehGC1V(OM-?y5Me;3~vz0XZsvXJ}fQB&w(juMLBl+H*YSB z)Hwh2Z3Xi9hqV?gqq}J-$=x>miH#A(q(6*VVMVL>`{ zv`lgeGa7WAkelAGp;6-^)W@iHw8bw?rvs z$JoVg3Unn`FmH}QIiel*NwkFcQkZR|Gu(9xcXV=6WIkN=9*(3h&V)vNKM(z?MGxKZ zI#?RCFz*#a_K#Vh_{!+lomMTHnP_S?L@tp6>L3K-RfE#``xn_{kdCF=cj54Y=|Mg| z9$nRdluH1h&9^tJ?40dQ(x|6BW8;Y5wJjW=585{d#I|n4`_PP9HpK1CfQ=$Z=q?&j z922+@5~)Sfz)V!PBbydhKyONWqQ*`}Wroohk-P-gBb4vUiG^bH2*tZnqG>MIycrQ+ zyNZw%(|kOxNx5z_EFe7AX>RASS~W;=XwY*4toZ;mJF#V#vy4jGiM3V00D>JVhH)CG zW!^z!X!?UU5!Uzixw7y+0NEvk1R5bIU!7(Nq#(=I>dZ^XIG>< zgy>W5VrM!wui?etgic^@0@A{slbcWVlagCDlAypH4|JGSCemrIbmG0e`IeFsmE2ku z6TRG0i#= zdtI&BpBg2nk>#^DnSaQMgo4uq;pQqb#l=`%k>EpX*s#Rer z+b3o9_g7XGmI~4tQ!g=is8^NW@jV-r6Jgs*74M~AT?rFhM+sH~1eozSkF^*{oQrP9 zVA?5~(@8o$%X@`Uxjx~;054Rve7~Nhf5Zx0t6GZ?L;v}Nj~SuT#X56h+>4MsVPslk zE4u#{FD$~y(isGPupKDKU`}z~Ck#8Ktq0jqsp|{1z{!+m@=fy72xFzE@L%ox3uKG% zW^|%g7@DvUc~3U#_HlueE^zP^9(qlFv*RZ7?GbCtj za{@(oh%^Jft*N>2eJOlt+h9@t+Ni1CnF>kr#FoT(zrg43m^kUAS5uHVilkJu?`+Y8 z08PK5Q=rlY$JbQjZG#v!7u@>D$(gw<l zIk~yw(&+YcYM_$diWCjN+OPuY>SndR~bnt3}iDP5F@E0F~PEoVW&RoQzDETPo561my2xJ zC-DT~(ZQQe*hvmk$iroFQCsI;bR;~1(lmwn<(KecvB^s)=vs$g+e2QM04Lrwovi?! zqu`=`DUO<4zI9xv=7cdtWi5CC%3(Ie#$@VREfu;TZrv=&16lLK@FgSV#}v&|2aL7M zfuffJEuCcPlCJD{$&{n?#I(%XLy5t>)%Q_2Q04;^H(WOY=8kLt=HnrJDZzg=(#uT- zn_fbz%FintX={L7L3YR2-Tr8HJSb_B~R$to1>ppWbV$8>h`#Dlwb@$12LxJmYpSyoKJ3FU6`YS(C4m0soN z{)9-spR09LLdg-;Xq{SPY8~Xj$ck&_!>x)nn5{{ADmv&iyOO@9eeps}NAZpE$FSZy zo*8yn8vtx;{{p`0ju_BIqz+}QX~-lX55r$1^9#z#MhLr@ot}yomi6V`W7@1Sywncx zh1@_nRppe^S`k~DfyMX6w!8okZekTpj-4!$=QXSaHGJtC zy=L>l50d_=EeX*#rb|j}y-xy>uAVfF?{{L77uf3J;sM`xiB{B zb*R8NIXin|i0NhBvX)1)3ZY-l`s^bwXnYxB;+8X=A&nJ)af0Js@A$HA4&*6JL+Ite zc&jlc^s+7!dFaRx5)+wpI~eOn4u#F9iRfXyv#j?%5o6p8uaFiUC&Y$O8U~Mu(XPq= z2gd3``O1Icc0RRR$nprU>gEuS>?k5PcR|1Z8{|*oG#KO@Ih6ilCV$(Tb#u49DLu}- z#-TToj792nZY#M7D!}BRmy1n0WZ?7w6Z33F1XODBwmjCMA^p!gTeMUoxI>Uk`ANJ+ z5qID%$s}_LrkakuxNS!-)D^@NQ%cIUiofV39E?WqXJaA6$p|AaqK<-ZbfG1#78Sp~ zd#VNOINz{<-e=c%@I#_aN8KK7{f6OiZKmm}N6S#OG^F}cw+S#3*9yf(;gykRsheW@ zqlfG}{VTEmAgbw|1OTqS|I3U23jchz|31MVxBsxh(Ewast8D<97`+$;*N?LMCkV_d zri=?r9URiUQvSO*5dT$vXpKd1rfur^ants)gTN7R(LJo{6f@Wu8KlKjzJmWsmuGM{ z1y~)I*LOI>bebBX_0m5k1^G+>8}S;%LdXX{-~nLz{9KHqLtNx9)&)mf7A2$#Sw;Aq zB^?Kz&c+a&Y0dKYLjZL6BM|SKb{93mQjQanawt?Py}mrl0Uy79p~~Z*3-?O$c25E`&1P=IIXO7 zBL3IHf@*Q}FB?@7YJ+-JMm0kkar&K#=ui@n)oLS8ptO_YzmT#=ELFVa2r zTBs_Yrt#@4-1e0;WYMr1MbIxey{J_t#A&wx7G3F;3gy~RpPN+Is`jl$2MMLXR)d4r zCWjoVc2!``{rsrfJ^!BtP!L_xRE~42X$7lwA5jpu#yOO zc;knjG>qH*39LLnO?Hazu_){J5?$4&EGdu>4y2PmEU`Q7Qim7A@vx7GOT2$0jfpAk zGZ!Udg}WDH_+>g7Vl0Dn*dK_Zc$Tb)9O+~-j=oAIO#u~6|CHj2=vexy)l!<@t70t) z%B$5Dwtl7BbQ}JwP=#74%Bs^&$Sc#4*DXp@k!~$iR--8x!DcucXtgD+07WONGvVI7 zuhM+DI~v)maq8t_v)%9WdAxLx?w*STbg0=5C7g=nPO4lKQA%52c3ORqd_|`P6{Vdy z^mm3;bSJankX$Xeo(`F!ZqPle!KQvva;5C_^|cx@e1z$n!f)Q zP(R(Op!4Y@%?EdTip4(mg~(W+8Io?X*Q8d74K3&ksB zIFD^f#w3TVIW2__BBsX#9-nd|+T%rL<4Tzqn`}`Ag{2~pZ^?%V?j@5KUa9~Nh25u2 z!@`@^(1e8HuAfiH8?Z~K+0225|P4a9wmF93H%~V*i$LWO5rbknu?`Ju)qBj`| z2B9>bBVBtsO?ziuc~_|Pq;t}c&$;wx3n$rvORvPtBAp7R5tJizE9;)9H+~A-H=oLL zbL3Yj3Vn3^-=ct*&q|^@HMXbk_c7TLP;`kzIu)8{<4&k&L3V2FYehbM-?$XBA^Tec z!iln1GFe&BC@vPJPh9adLv@ll_~&N2 zLVLDRFHTNKSwZeyWRJzYaPQtd_kGRyS~j>FXREAyJW1Su+4hx)$OhY?Y-g&(4)aqG z3sku&FLS2b3FD|Hunun%PtYoV7U?TM1RX>6o&d4-ZFQ)iLtdaGxL4QSN&T2-LLfk# z&84u}PBOZE%*ZJSQDP!0^8ws;@4@Wuo_10d*D8= zhvk~xX4OY3jMjiSMO_`ey0il2xPeB7KV<0GW^A;;cXJLDhh)Qm$jHeI#`IWwP>?`= z+(j2^ZG~%B`oxtn<;;mDty9W?53B&%l!MD(rkW^Ljz5$mLDS)pw6 zfIAf0&$I^67ElVHGQX^6+PYMYRQ)l?+nXTvaUM)=WF~x%)i0P>ny59PxW|R5~ zMP<>RzbuhP31j%duf)qcX_@_W0p491(MCC`JhnqHLdCp00wL) zs<1k_>!ifn9VmG$Qaw+uuCB14LkW9>v?y3Qy^9|NEKR<~lIOxqE{~gRHDAi2P~a)} zXq#1U9xsSB43-i}#lU#yEir8ey7xal@TNLuaJh#RSU! z^S^aAj}X8!V^kq}-A~R&NtO#Ys=If7jiaLJ@Zg8{P_PevkRgly#aoI5Hyd;1#yg+v z*Gno2hI)w$is>Cn8`O%_VoaVl;W=4snwzurp-GV(7NJb7z;wR<-?L&0bsd<_>u<(D z!xg@6FD<56o9(T?y*WIBMzM4u4@D|#-4LTy^kOhd^>N7ZpK_!MCzGblz9}u=4!2la zcCqNMOekW8|iFQM6$Pr3t<7qxF{O{g8GNa985j`sI=k9J-k>JBMqC`u4}#b|hK3PmbSHiVNJOD;oSYiWvpUR05+ zIV3cn9HiF)BHyTf7@!tE0<>1yI`_Pd#^&^O;Fa6iEpBM+7Cu8WTUYm@q?6ONrNp+a z$<@(bUbIQp>yTKJ>PyU~Y+BZcNnc3pbf~87Z1B{VDWkQZEmtbIWbu;BR;P_h3v-5N zl#(L7$ojOv4ykpU?Y`J;Zyz=;nVqW~avI34$rB$Mf+c*v+1~4JbzZdJ>>jD;f`cOC zByaX=5TSX^B>W;MVsqghE3SXcvKcHL(2bmzQIol}tWO|t%D+uXzu4b=b2wi)bCTb+ zl#QB^l(V6}%+~7To?22>a)x&R)K1$S&Y3Xt6t3}{$QVksvVjzO2PR0PXH70y z?<^nmCvfL`h)zbvuuDJ&8FkY0GqB;+UrBE5$Z&+WfsGd3bRu0fRzT|(`FJ#*`OP%8 z<`z=Nxw_Iy-_5+F{e-hLc*Q)D7`+w(YuKv#l0v82Q3DWvDfvpB8o4J`o4jU#_RPUn zOd8rREusNKjo>&f@?N|uWCO5iPABQ{d@U3y%3G*c=P&}&8j6!X7^vFe7o&Y^FWUGV zWpFBwWn?Wn005_vMGN;q0{6YFd*m~9S9$H`8iom~v=RtABWb^{k5fAsp@ZM01#)LN z-a&5%F?4v`HgtpSWI7rT1c9$i< z7B^#+6diy_Q+hx+Sk^`f4xXfAt_ObS+zxM`t$O5>UIZaRBRa)wlFdhR8Wr!WFRiE4roZ?u$E{_u(D5u%LWRK^Fu% z^_Atu7h8%{L-<(5p}z!UT6>6=t`;{T3CM0&6znQnLk%!ICUr)l_W91 z)~a)V*bgl^V;EG}Mdeq2=}GsA`k{R$Fm0xpcBLT_Rt6om2qJ>(M}ikb;BRzD}S{Ta*d1a4%8!tyy=i87_OkA@ryeAa=hojiF&EV7s%EtwiPzOgi9Ne% zPc@yUy|8Qqn+l7-_~mXtVR|uM+3NsZ}B_^K=YY^~^gJ#Zqc(;07L>nmTgcoo%WDLd_9x}qf(V1$3 zV&BtjFBCsqvZG6ex9aM92zsJ=g{!}tCAmOetXqjWsTz&|;$~T1zg3p~fkL*<&`@#y zDTWGroH*Cx#OI;n&oET**5MBpu_<=roL^^px8sGSxU_VtLzNq~cc44l33f**z3D~#mL}l(b{B@$sp;29|qa*bb6M2FZ6&pz6`Nl^ohsNqOd$$ z%psUpfb|+~p6tPfR|5{(E;jMbY)U~T767r=99SQ8N=kcl`z7uQM|zmT3tStgGddCN zc>>AHT!XvB57kvbT@rUGd9YgQr32SXhzWQ$@q62*`eb^VIcDpK@ivMK0MsvSDar9d98Ip&XdcRcPvjmV*$p3q5*vN~#Wo6E_N*Nq#Cu2`dLBb2n?fgK zY46Olfp};s7U~LLn{Ax{j@PJQzzmlNo}Lv*Uoq6`856G}dA#1*k8^6v9k&cQc#F&f z;58AmpY4!rS!d(}E7QTYk8o_m=%y{#U|ksZ(EuXb32|IX>tLVV3R`NX<9uj)gNxbQ zFyaiZK1DTEdv|Ah&vFG+u@#xB&){%>j@)p9;mF1mmRk(yW5qdCij`YREIz{g^%@+slR~_9fr6xio;wLg% zIH!JG_NF%y9rVOOdMtI8X76FS9v==hwH6nn^vpm&kV0sK(WMN)VM867PZmnRiX}X? zi^DKT(km%yrPF)`&UFY!DWGC3GU?+sx2>xP0OI9%f-a>Ao?m07r&GoY&)6&ZG&}bzZ%4e1*4xfe z=aoAW0F0bfE^z?gdc~CetbW?*==4->ySgc59w71{%ZDimjHZkrWzA?ckeFhB$WtpOmGO(aA|oqSXM0xw37VxWT{{K0AgN zOK#39_dpDc^dpKRxt+|GU_3~BnYQaKN_CcrkWI?4sbOGy>;_v`n9zn*Ja3jOcqCVT zf#3;ln1|#i*HKEfS^|wL-WoUIb7hmywrhH4O5PlJoonb|WaW7456(EV{Tj*kEmG ztD0Q^!fL<{ntg2Y2KdkvPbs)sD8GtoTifM8 zR`f-lU5-bSz`E00`6XJ>Z+ALBz1}}Ka@WTdBvtdazY^xZDp_taC8Kdq(Z04<;kdL_ zZOa03mkLXOf|)ETg$a~^JDON%*24CnWA7F~F!NPtd zi~3xI0N6Q6re~Q6IJoC`w%RBcVwN0JaQSdN zn_3E)PkF_+8u?Kxp!pyx*}#7xKI^T}_=@PxZl`$MT;sc&8 zZ?iIK)8np%c%{$xc`}wC5p>{AYrwqUh1N~I zY{oD~?h*zO7G9n$z0`q0Z@T)_$#HciYQEl-RFQs>_C*+HCD=J*lt5UEWY#HhbFLCM?X)+^czQ8@keitF-{x(mQtzt679HASl3@4zLP#p z__Xpad6sP9cdRkNqRGFnI^U76m150FaZFdLn*{5SfH@tgA~Q5gE6XdE|5LO;!fh6u zp)f(s&`vIcQ?JA$PMIYIiMbT{h-c&U2H8+nmvrq{C0$$6&7dmj`jRfHSj2$Ua7W{ls2UTN(28{sG0-s2B#u%t5>*5x~jpn+GrE-ni77W`Q=89!(Bojzw3%|u1jj3*f^Wp?41RqfiTsF(Vf z{=6{SAzX8+x?8v=Rk#oWN|ndV4C~f!7b^kdeTXTGxq6ZV9BKJJ`aIoA@~G%tK94#3 z7-tjdYCexYb%*nERIeh-yGm(Y)~m&N8TdUCq6UT5#X>CWa4>&zB&;+g5uRX^)8dgnF@WEBY&ErSE)>^*W+by= zk)IB;K7JmjeYj3spT~PGkdNT90;~m4y3xpNQK49)5^0)FP8%d5&Fhn|lzd--fZ`u1 z5dM-9#KO8Y9+pLQgHftM=<$d|mhywD>V<4Q z@<|pM6`-!03o1bQpo>vIgK418hlu(~76k`76QWfBRF`fF>ckl`_d`8XH9ozQhE}6d zVR6WEsAx1z8!k}93``!dfj_o>qso}+1lg2g1SE+`j*TjoSj($By=q}`3b-}zwQ5|7 zNMyD&2sMw^5G)HTZqk|d{0>9_DPNepn3q%vNqS6zOjzR*j)$eA)0?9sF%vL@RA5A= zQ5Ey9_8=_ar9|uWw`J#~t8u7U&-0-=%6eybGGdn8cDyxYF4|hRDva1%U{yiIs=)^7 z^=PI7ILeGNszL{VT=NjUaoI+WkIps(Wk>IY*eKOuQOZDb-Q8~h9L_M6S17;Fol>g> zXEJa0q2`v!&TKUhKX}5RYB=0q)Je_`DfmV&IL$`&%I?nLk-O}Mrxc>RtYMuFG~hXX z^g~o5I=oloF}zp5$L75BHprDMPS3}PA_m=4f|Cp6DoBa^P9X@qp&7uvltb{SGWWFe zPcV(NK812opk1fS3O)QZrr0fKZ8 zcjRW2lFr!khR`wS%NgGkK#tyg$2AIIl(L%#K1aA>DPHeefgEhm~45RZ}dhRW0hE9ijS+!2R~Sdl~>)AV~yT-^OJ6NKAv8O zV{7ouR+Xh$fxBFz%fiV|*$IjOwNMn7>Gh33L^Xjg6b~q0j^Nb`d5Ys2lS{tM50RBQ z%n_QrlF2@^!{ADeZ9pP7xxCW(ZJkY_068_Yx50H8aO#~E$7vu!%Axuc?GT4Y?V~q` z&)WxXr_iW%d;&~j+I^*{YPq`dmI)ERA#&Y?g7BOn0IeKjNS;vR(YO@IZBK@h1yYF- zyCwxy%4vFjp86HC3a>Y3lZ*Hv?CtieSMBcRn}fFCsgLIEy_}Y zX~GA~$<_(1+mQ-XJ~?tTAquA&yM`v^yoX0@0AXAdg*<>|MD{zrOg<4KPdZ2X-XPZ@ zz-uJWhH5{eMq(k!MHWe{ZVSb+0gev&6-46(oE(Z)(*A4Q%Yvg_ZcWL3Dm;}`qq=x< z_^!`y+EP^M5)M<8!Ng3JfH>0ME(+xiNv;fMIYjxt4$_AEKOOpub(|yoTG4%u_P4j; zkbJNg5&j&V$s@Swfh-G0`v0k$3+-H$3i>__JH=TGD3~vP*3w6bkJ&bgQjtDF^pqvm zU97tCz-C2l)1ljNWmD4nb?v6V$&q$Ekr>Mm9!RXn5FHui8FJ2xs=~hW6Qdls5sLV*D-^2TnI(#Ls?QGzEsDEveL(6kc zT2|pFlPvomFMr{*(=&NjWMxX~IkLZ-n?~oP)3<_#=+Tf)4&3eG&()mE2X9x&er}s-ViaHxoLN`If6H)Aj*qU&G)>)LY4EDftQ@AOb=@6z}tX zSJ=!mjJn#mFL0MP(au-A?)y7r`jlz|k>tGSkz1hpK9GtcwIlYMF#bGDe`z@rqxni& zhkIVpTa{XlWRVc{Ymy{cJjQ=b3}?74Y#>_qh0N*&C1`qnXtByvlFw0{p$b(c{gvcj zr*4Tx)vnBebP=Ovt)!uF-;!TAm5!nyUJeDl)D+KEd4#>*im=PRHZSZ(L^OMH^r8!e6U^$Xz2URRG1eB-rHz zQPUfqaFResn?UNyN!$gv(NN6Ngk~NtjpnWCkkF()E`iJuehJ z@maFi$lyncN!Vp2*eCRTDWP&&RCh1n>N8$Q5^B%r2{Q5L-*t^!?M*TthCN{bADr+k zAz~VsWgNUBDP$s;2=?3;9i^lZHt1Cz7|dN>rGxraz(Tu*u^btHCCBzU1G&xie#`^C zWULh|gX1jEe)McGZyxDjP;Z?=H-<6_y8&K`;ng^u%-{Z?AC&5g8WXAlVyRK7%(*J0 zse{Xs>O)zP0d>6zGH#M#z>)xocNMK%+lNquw6@Qe_93buHqDFB(mn^6izudgJ%f@tAI0t@pH!tFRqQjJYvsy&u_a#59?uuNnQF=V1h+;3R&;j;e{ z?Di}*ILcxZFdo2`fP~pd!U>WV+G=zwlVBzK+4Hn-iFCgy?+f#Sv*{%GBJKAlyjD)pV&~`1mUoUGNy_$f zAM%9bnFX)o%Nj{Wo4f zQt6#vKOAXAkxD#OrbZ?&-z5Wyjit-*W?<_U7!E9I?UVyn+f))Ev{T1{-Uheo7_qxo zS3X0t#Gv2tIAVT>o)yddiy2%AxsV?;Xy1M6pA z41NY^sjsj{U8yf!$ce7fd+rfSHy(|p6Gzm|&3@E}chFx#UV3Uj)G8gpxIelaI;?|9 zPi zO?$%T8_5bwHF+iHMEZRx%kZE2EKG!yw@66hophE+(!eb{6yuc_F=M-`WmV0o`x#IM z+Y;+rL5Fon|GdOq9aUGrTOIk9I;%_0!_hPo7TtTF^`86^<-NCm)Oo(Y|D(%WL6-0~ z-CQS@Hu^X{Wqzq#hDcX0RR{6Tr1?q{8u$iS2F}O10Jx`?9>e*c06_VLNEQeSf&hRa zwD>xzg+!Nj+#Z7NfxQJtZvyfD)zsof7*MoPIigBjL*NJ^^i@QN3Oae{B}y2g#Epd6 zWC9jgq*cB3mwK%{*K3RcV&FX#6X+^{=+I>H5B+dBJFo19R%YC?fD?`}Vd6zU$u7!? zVp)f_Vy;oFp*;L@SdTQpxnL_SLQ7`U)W3t!^W#>SpiE=B@l$GmyNXoB&`Epm^;On5 z7uX+9$s-Sjo!9tT?z-YDJ7Ssq9vh)vw>N+6cw-~+EcY9?ld9{d3cE-yy@QE|5XxOI zdEx=HovlvyX#cf)5Yf9AyglrljV3m6dvEjQ{y}%Mvv<@v2q93>`NbCD@_0$ri(Q!V z+@uOe% z>hON?@7@xb;+zb!sUk6x#W4lBV0EGH6@oqEouYd@81>#atadD~ zBl2@#HTR@3R<$k9CRy28X*NTQWHb8kA+cUvmoOFI7jSD@Fyso3NBoLybAq^exr)r4y|B4qa}>+K4Lp|+GtbcsSaolPN9>pUodwRgmG=~3ye z){52;r(e4{y;VSO%eD@J3BP$pL6}D0nVrb3+oA-zKKCTw_H-GGSk;@3IRv;NlSxhrIq8NTG z!mu4_0ah#nAr?|~Q%XqAqxSP%6JABOaYTwa^i&>bUg03Ld9q{)5}VJ}ciEM}$lJ6t zV@)!nU*cTCa|ABGUpU&6n%VIzgVpW|2But{Lv&_c+isIo_#`8?ZQD*Nwo|bxwr$(C zZ5tKawrxKr-#bq0Z|vRKW30w*tsB>z9N3#6rq!Yu#1SYIW=fkun}EZ~G7@}u0h!R%Mz zDJ{s8;DUlB@)&zTG6{Ja}!C-VF8b@eTl`wN&JC>YeC7d|?1 zzq|-gO_v~fsv!fHISu@lt*`eoHxIByKJI!N80>11&g0(V>FveYT(Y>7H99` zmZRgbK%nQ}=GZQjAPcm`S%Awst4T^wB(j)U-2UXO$hvh%Ao+UdMtF#~diFE}IHikZ zd(_wnr~OWDbhn37AliaOy{ltw>7R+UF;;~X`bL{x8Ju@Vnt1zM!tc`6P7ovv!~$CHaaeX{&Ay3Z{}~f?f$2Zi7Y95cte*>&xnPmDgy~S&yZ0 zcjmI+ZfRQsw>*e=Gs&=ANXaKPyCsmLOW6HSiMtQR6q~b;i&HwMuKd zd(Og3*UD*xJpPXjo-Y(<#f&5ilIUSV9byC<`$kQPws=kd^AlaS{E$^z3#D)A^H$C- z)jX^*xs_BPRi@tEjZ1do^$OC@tggUMJ^)I&0h4k|VKYnz1)6+!^tlTGAgH4!T1+4BwF>1= zV&(l}J?F39-OR8c`A}<`+*Id%5^Tc^+0vojm%qC@|K4uHO{X3o94K<1L1DIiO(KGY z;wZ+54NjcLcZkj56ur5pVlm^J@7g4m5jKR3@9wV&NQahcmfu?HayVS?#i*DhotSe8 z_N}+LRff(hMb@&X#x;IW?2R+sdwXlQFe$^zl-+CyWfw!#ZnfH|C`EDO&!*jS*U-Pj z!28%I^Aj(H^HreCE3ty}5+|c@Gobrx9Vn>55zx82cQF?fkeE zV`9mgEaC*i88nkwNlk<^j4141;DuzYq{-s($(*uki5<-wDY!v=EpMgbo(yWVt%=-K z6R%(HU1aldc+{+SATO#3u3W8_97Oh0R=02V9vdAfqL~#=A$J8ewsMWy$yeG>k#@xnjOJR(1sd_NBl7u{iV{Cb^FNh$`z^t;CPCPoqTFLm))C&zb&2cL%FW>N z%&jepHaa@2p{a|++JRZDjI=G>ux@2xRzEJ>mNm+$$3g2q8M}T?tQunT1QL3NDJLlV zu>E1D4G;Y?`|mtDgyQYY3K`v!9!+uCtjr(MeRV@vm;*A!Rmf;WWn1yY>?V!1Vs(Qc z;rQ<=qIhDDIY6pn{>f1+;`i}+d<{>L_!%0z{b2~6fNvLc@d;_0hKf$DGVCca2r36X zld^}AL@Jns@`OC4urE^4izO%qKi>M^57n*!l}%{Z1(wGA48Llxv>_qI$B59(=?ve6 zWEQ2$d5ng>Q;x0V8Xx(`ciJH3#71K-v0S;=erebgj$d%kkV!Tu!gBW=&PnJTxPw%| zxN3DRf0a-hNvU$5BH?J;7rgIk7Axa9Fo~9n(^|*RjH;HvO^qY~3DY7qF+s;-40iY` zUD4Ei>O7&DHT6)8MZA!2X9_qn0JC!LigMT?TRB!nMNi&YS0pKdf+a+C$^uJ zpSo^Tb9j+uWUVBLEo{a2O?5S7Wscj50QYq}Fidn1QxWH(uMvZoWR?3jwK04XC7WIK z9G8H+{4bhVo?GsW=4|z=tC&nS(F78w9gtTNMPl1%$AJ@x6A1IZWV0N%@<|+B*Z#He zM~5s3V#UjWi@$f5ExE2PTR5bM;Sr_ZI+&uy)hK_LkCeSdxa9iHT-;a;0hm5l$f?7S zFN{_^;rWZ29mJR@f}$uBzv6Az8UmR)AME{G|3FpA-JSK`f?bxKwLiSqedyV8e{&=C zjc+tw{E;$NS{T6o*1Zpc#)QmrV672qJ4PAkaOB1uEnJ4*a~aC^<_imi&;hpti z9%nbUI=tk~9p^#oz5<_9T$4oW+@=qX9yiZDO9B7t9KwXw%oQiK4qPuD=G3&8wgoSt zE{@Up10(KDLNLBda&KzZ4ebg$Ni-?^kG_EW+n;C_>_ounZ__Pk+z)c9S+BDY(*Mk0 z5TTMU_nH2#zE!KhSUZi7%wgW2M}s-6sYoL7<#RR(uFabYL3S;jeM2j2u-LmLboXjg zm;cp&+j1~f(GObMrA5pGwaUkGWq^Lofq`rOg)52}h z`?VWx(tg;Jxrze&lGD!Gx^ZE3sv{(TUU6_` zhwU02W_r%ER(6klVxTiR;}$!kLC>lj{}UENB=vRDRsPFE0S71s1TWwZxO-9-jq9G1 zG)>9c>vZ3>IQxoxubg7c!1agPq)#N$hV`wev$MEi$Pi4MN07}MZVIg}Zqv)^eMk=< ziUb%>3N}rPreqQ*+6?8yV<*&sEr7Xb)F+RhBr^ne3VzSIi5I?~X;}a&Q|bh@=dHp{ zY8`h+7SZBnI3<`v}BzaAi|-m~i`@=0g+%W9`UM9K0T{(t*y6 zNub^tdcDj+n$WrHVMKTfT<~dVjSx190qT}}8)fIxrOVMEjFiMkc1f;fL{mz4Z)0}k zf&>HPBT3qJaV+atN#BZG%|hQ)2C`6E1FG!LUJTge$iW6ErfXBCk>78CYzeUohN59D z)5bbn-xV8e_xW1>BDEJdSuF~G0dcWaQE!e;7Y%cpiS*&tBjK=|Z^dwfxJ9!_((yRQ zX+W(~Uo^OdxA3GKeOG0ln!W6yuox+p9FZo2d&=qytX>}|-~^db2;f{|(-E)}P~-oI zbEqvRFD?1e)^|LMR>It7)%26~8Hv#H;Ph8ZfL%{6mCW&qMGn*3@mffdI|S)Y3dCrC zUT#C2F)a^jctc}SegUIp@7=!#Rg~#TZVy6k@$hljdL2hL9ZP9G+g>c5Nbl@0Q-5P+ zoh|>_A9e$XWxH?NQ@23JQdqDdb1!rHPjtj;uwT4GdLtl~F$Q=NUR#lFLsQpt^%^sda!V(u| zoAQfTn%MkwBl9$df=o$+eE7QG!f(ZbG5D;BMng=^2-V4{6LUF;UctM_dUd8o<*Xuy zfh7=7@v4evm{)X@VSs;1MgxZ!8U2fv?Dx|BE>u)45(Mmi8V(VTta>L$$%(%<-Vye5 zkNZ}AkaA!YCX{h7nxV%wk2H1~VZ3@k ziI}(<9)!2+gULr;u`nA58MVp7zSpE&2*}dL^ED2!rM_t<`Q06<^o{_4@uw-!d%>*f zoKCqk)&`>EP0!=`ySndUdOK4+|HYR0Oz*O#6+y>*MR?xuf^iI_vQZlDg>2wH2$P_n)#bcCmtq zhk(azOJ`&B>g!_4EchBrx=-Lzvq6|qYG=;2%*t~v6U_RwIi0hv3u36n z#ikh4?oZkSKT^qG$cNjaUI~6$QdboLi&NGw^PHA7R$<1N*cX_ngIbq*boSFAJZUc@ zWO6Fo09wG4?q3np!#Tycyl|{h_Cq3dtTY(b+4)ThGD0b=x$W*+F7ZKmy}cS7^x9)q z)h-z-@@uTpPI3}zTo&&-#H~!i0N~ki7oKK$ntuDDrKo(PqpP2RO>zpT6|_rj2OLTL z>1(JKW!8CH#_tRQ2ila|O+Z0POGz(<3>ovB6+3*>97}?1JPW~Ml%5k!IO$IP`dVEf zI>HWwp+17fiDi1gmFed}!gu;d7nJG{WIdmDYh3u&K*Od*k02lJ8~z4#;pvsN_C=Oz3f7XZ>9QJ zgYP#K?t9{X!BfQ%Rpsm7sni)U3%h$QVJCPslvzvcqr@icFdyx^>J8HL%B4|L6blZf z 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

KvXrZ9*vT0+pdYBYf{lZi2F8l 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

<^UE#a!m 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

CrnX& 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 diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0-1.spec b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0-1.spec deleted file mode 100644 index 4b579e852..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0-1.spec +++ /dev/null @@ -1,25 +0,0 @@ -Summary: LablGTK : an interface to the GIMP Tool Kit for OCaml -Name: lablgtk_20000829 -Version: 0.1.0 -Release: 1 -Copyright: LGPL -Group: Development/Libraries -Source: ftp://ftp.kurims.kyoto-u.ac.jp/pub/lang/olabl/lablgtk-20000829.tar.gz -%description -LablGTK is an interface to the GIMP Tool Kit for OCaml. - -%prep -%setup - -%build -make configure -make -make opt - -%install -make install - -%files -%doc CHANGES COPYING README doc - -/usr/lib/ocaml/lablgtk/ diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0-1.src.rpm b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0-1.src.rpm deleted file mode 100644 index 7ebeed110136907efb8c313187c03fcd156f73d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 421518 zcmb4}1yEc;x94#gDBOd)4({&m?(XhRaCdiicXx;25Zv9JKnSwry?k3+uWGAyd#3OI z{#wpCeY>yB)V->@-T(&y0R;iIF*LF<~9V5v9djbW4{GW|u zYfeG`m4SUJ8VCsZ>6b$MEBmSgzx>*V{#S+s0%d!l(X9jQmt$lvQLYaDSBCjp_m%$I`D+*IEC2QLm(Tt&>OVgJ$Jqb)uV2`&{OuoK{bR*{eEp?= zLw0`qzHLKYsnvzwwU!Nhfxbh#1 zf9c=;Q(yXbJQDwS=^sme>EC!a|MA~>`P+W?OaIz8`O?4k5C5_0KR)}%X8-u_Jc0^? z{Ll3b@?Yy4gb_sMYvGHlNE31q8rl(B+PRoInHd_J61vzEx>%SJic88W5USYQ+Ym}y zx)7S#I}yqY8`|3Z?_QS9|3BS;U$KC2?iGm{I)C}G^Z+_om;jBPfv$FzM)p8Um#-07 zLdu9M$bg8Lx|!P8JJ_1qxzNj48aWv{S(-ZkXApG%IZ1&ohE70pFAy0^J68`7OJ)wX z|7(-~IsX5g-#}*vQ{ykc=2BmWsVks4p!mOIEcD^r%eQ4^=3r!CWMg7B<7DAvGBsm2 zW;HQ3W@9(uU@$Q>GiC!}=VUWtHDqUHXJ=+-HDY8lGG#L1WM=*9$8KiE#`s}kQLh^EZLJqzcC~z*n1YwA%jXdv#s+cmLs?^~sDqX@s{;X<~~U{_^V+ z4G#}rJ(Yc#{h1IDG#?(a_o*8_m0cPgDswsd>B+|ChB5Sc#r#R1@xgD6`?<1)g|n94 zrLp*tCx}2U$Au|O!R1W<<@C)01|+KxTn=Q{x`yV2uA!Lo!G7sDc1%mviqwM-WkyYv z9?+5eMBak7iJH=>B?N^sEZ~pjAXVMaN6?37h8V)4a@LEq8y?ONUabMcKNJ$Kh&xO>fUvpwwOD(G&oZI=7G$xjcup2s}&!_5w! zFe6r|9X>sl>-o5j2dm=y4z1Ws$zM?n(t=HYFZd!j}h+n?$Yll@M@jv2~T^YDdLYF`f|bPnUxi^F?ppW}($FyPZ#1Ki!+{}~!Q*PRpLvmNHW zkKV6~-}$q)+Ps4>iJHELcbNIfCTj~Kcx8g71BIPPq^&0z|y9Zq>O_wzMm#f4~&6px~-uYLiM=F zuf2x~!&et-E?%XvVZPu)>@wN}VWyl)JNFUC$de4JmD1!K^ApYuCz^_0!#Z)3bWIaWXU1eI)Vt7NtNe0dxcUNPq8UjDl93`GZ;?ZD{?!D1vfYbT7~PcAC8-)W(KTS>z^AYp7LuO#ME&$E}5dRvXh;&qqTG1pd-%QOvV zq6x&yBT1s7oeTW>$+JU7q^{V14`!97gA&)x|UM(*bmDXryE`a|I88nyp`2UoT{mLk~PF zvkV+#ewI@vLw=^?%c3r(!2aOIobmm3_fKM$IJTB^zNiSRhUBM65` zO@Fuj8ag!j#6DsTO4_-y;W*+o$R|`?e0I|acO{4t2W|FY@3o}p_L(TaK9H^Pe!+>K z&-bDJR`cXmKhQR4YOK1-<$N^5HS8`L7rI03VOZA#Jg(|?-ILB2{k2-mnEC@!*FM}| z55N&Z*~;uuFsx>^draNhAdm$&=LIqU87xGn%v&WykBdR;P_0-XR#O@H8+ehO7iJ3%MxMhje%naU^+^FnWl8E^LL3L6iS#T7?>2) zP^;5$d{xp>)tJ<3WOk7Ky1k8qI18gHXOH{=|Ez|qA-=gG$QkI^8B<0^l?Hes7S5GM z@c(LXQDnCv;rP*1XIo?&u2>Z`^+=ls0tISq7DHzYOwF>|+YiS|ymwm#BJX5K~-~>6L_+)H_Akq{6GK?z{weYm+AR_RtiT%)qgSL|65DJ-@?gF=r-`?s1us+rEBh zh>Z{F0oPtC7Kcs1JY%Dxpd3cNMa;QiBR2C{1f__p`qp+#6s?3WPfAlSPo}85e$`qW zMp;mXr~<*v@6TIv_z7GV%GNH)1ua4D5?wfA*IF~<^<_^;aZo*_?7gsv|jbF{MRh!d9dvXJ8Cs!fbGtKt3;b7nt_EiAnUap{eZK}G60?n54?|Z%H zuu9$$;E*NyAD)_XxLLVnp;c(wQ=_(|A6f}XG>(9&H(jgJF22&q6jcwW5Ht%>z@g3p zdA+KmvZ3~G43nzs*j0o8c;}Xp;a*K0%~G+?mHI(`AJB`D1vY`}?oOSNg9p_7+KPxh z93&hedZxp3bg`V05vNk+@B_2M;et%BB3}B&_7}1o8C{)>1r94r%0a54{#5qgVRV`5TpmR|O%$AC+h&YXy=*8qOC}ecE-9q&BdAX*< z>=T{6b61?jaO;R_3Jrfri3DM{%d}|Npd@d}99{Cj-~sUt!!0IXF9l*8!WnH=YWlh} zN0DE4_`=c928q`1EK^X?PN(-BGvqOmnTiY><=kRMZvg2a<8c_4NKwY+az#Nfmz4^T z-h*8kb;8X3C+r&E0*m9U#jXL~Z;sWD(K#_@ zIMd}VN`Lgb;z==uN_0qP+gJxU>=nv`CnA#^ zSc=j8`O7mMYWy+&boPoZA95Z`h3|qa#oIg}Y=?+UucqWqYNlS$GQa=|07#*0b-Cfd zLz20bno1#IbVdwi!0*xhhct+^d+)3VSi68tU*m=F6?L%(TB+GLCsG2vXU6tfaa2~E zR=9$M%$8kHUSEPtlLA!Gd5l2-zVUY>b1;XwA$D@F>eaaf-jgFefKQ?jj9KO#sU;L? zJ`WX+pum~B;tE|=&M!Z6Z%;haRL1zYr*i9Hut~E?Ex#!Mh)BRs2g3lZNlGGc$)+m@ zl`5_v57lCF%i21Cfh>$WXu5k!l-FRmFqONU^4xEs*$iy(-#067d@^23_p^~XhDV(Q zd-N*;cei+N={Eh0g#x3g>#0$%?-C{-pLT`Xp^;RNrN>=S)cwNV__7^^!(&?Qi^Ubm zOQjq+pxtZc)9E)SazWY{Lu*E(jOB-G{ZT1~>DK`5WDZ(5*6~Uj0zwujYU5AKsqlw_ zJ{-k2)_jjrq&9=M%hrO-#dMjgd^wKG$@gv%|CF@ibAr2{(N?k{OQk=OHm6cUx<{~> zl5EZ$A`_}Px9W>&ZKv`T?-oF%(51O5B5;}9Wn?yUx(i18V3D7l*?B_vKUyGZ^O_Z6 zPt|6y2$l+4L_QvXH!KkBZv=VL-CzysJH`vL9VEU9M#q8?JlwC6h@EB>G85D9xtjYD z8(f=VCV?jM#a8y2>UoM)p`sv!#X`!j1-~q9%Y1nx3%&Mx5-o}}sw%}Ae@1X77(p}E zftW**O>?FS7M7D@Q-ox?3(hlLJ0~i-vsYNx8Y}q$z5}6>nD`(4g z^t=2(<(CV42A!q|_Ls4Vg;!E%6BOMDw~fm3+m}XL8=#OSNA3^-g1j)s2;y!Q;=BjE zPA|g07Fi&K!rB#qqF9c=HrCo6v3^Pg2+U^JsYm2wTgnT9T4hyPQI=u04j1-cr==|0 zzl_*}wjK^p5;rY2j#@-=XlFn%3X;NY6Bb1AnN=Hx&!Egorql-zkjR{)6gjXpUB9b6N|jN=BnRZ?>hJde z63V)C+qNK|)4C;{M%xdGx&pw5McpG(H1+qOA`9r|dk(mvrIl1b31uDe#buD+zVS=l z6V`i|{3WhW;o7WwWk@+~p*Eo^<}W&my^t3(A4Q%uS#nE#6gMUeCL*mj*$|RsqJjhn z4LSi-$aA)KK}%CV2gDcB}J1qEu2u|3}aayd;&g6!zp!ckwXV${cSOIFUq;3j< zfO!WWWckpt`hqUng|^B?o2K$d6UsJ2i^9m>Z@&&R;RoR{PefdYYnT*9_RunSy^a7{x~r3FO!=X_VsfCXA>zDxgS`@(c3}LN3tWrF2WBqifhv`$Y-; z>;;TwhW^qWpM=7BC&^AIisKWM4~%+8T;4q~t#MK+eI!rRN6+7;hExC?YpiC5i@B!@ zxniQIlZL;9LAz!H9&2|J%K06%jD6`=c&jH~<;WFQ-PkT`XcpLH7!?6U<@w&@k>2T? zZj1wN+EgHV=T3c%pc~L?4^WV@c_iYR7-h~mA*<`sAj+;=GEOA2g()?1q%Hl;a+EDvguLE=|IX?oJ?BJ z&mQvyjHZ}(Ht|TXj-9`azip(bP3gDKE^KM;4I2Y>3U`$(xpt~fM22;5%my0vy%_-w z!hGWHZ@~pL4=tWf2{NU)Ip!CmjopkLI>NJRa~VU)zCU7swI8A`@7nV@cly7}vF7Gs z1u(AlQ0x|Jb3)NG7@tk?mI_`Ka~7Wf-y73=9}Ugw1&}|Sx@|KZp*>@9!9KHrZwwq| zuFlq26p~J~-9?r>Ir6GfT0eGj>4#(FmldCSkj4SJhO*vZ@@F8?;%+HwW}joRuGLTe z6a(eArc`EdfM1@;o3kY644w$SKRo^QKC7H6NEbDELZ|*HW|Dd8tZxNx2h4}G1!)`{ zo;tkUl4Gs~%ra1TdAp8P9aF!p0uFvSetK#=c}v6#D;6=L);1y!_ekn*-C9O#IqE@L z>3U#=K1fs_Mr(33y1VP2Mqnd!1~oJIK%CcRMx9>zx%_nXZZ?8vD0ygr-(_ZQZjVwe zy@=Z1>XFdlrMONi%+-1wX?m0&jP7^{MZDHT8sPgH?ma-;BNA?LMrUxdFn1>B63m2J6QD6-=F+O{)8M8hZ$(=fnjWuG5Yo$Z*lxzG z+>rO~S$B!Ya_;LGXEe+sEE&;rQPf2o-Ga_Q3bS*!^<1;KAnzLylCX-yUzg42U=p5^ zXkDxVsO#NmxSq}mwA1R+BK>-0Yv`;qSS>d5Hkf~5qCdIn{0exFsmFqg)dKTC7c|KF zMM3jtE6Q4lrzVLwB6bVC*~`>-RTi2TKiLLox4z1=-wJR~WGe_wH%A16e1G(k%n6SGh1JiP=_5(=0H~?Mh2ZR)wjw zrbOK4*caKFh|PMIP4G8KoHD!z64Nhxs*4A(ac$u+j|z%f%-bTv=4Epg;CD{h-|i85 z-R?&bh}ydPORhp2+!I|72hH!v@%3DBms%uI*tVOexdV1)2WYRG{KA^#M!mAY!>XQLm~8-(b6g@T#g zD^a*;1dD2W29=SmE2q7J#qCKoaae(&L=#!j`V#$_OM&HIY$B!fEzezlIuQjH9BPV+ zmH`66&Ke^YrUdIJ0{C*imO+CWvdHgdG8PIT*URlCA4uiZVMsyWV>Db#N1eGc>q(s( zg4Oyd>U)%_3sTU~f&r193hQf&h9~nL%&F!R*2E>xXO5%(o9@XlY+?YveMexNur97^ z2-DWMz`}k&r)D~`!U9Y){8*;4XHYy^-GDU@3v-G)?Im5?#N3Qo#3czl+vZ zm{AMi;5ffYF!uEQf#R@?D{d;1II?sqXqL9Zs?es~QNu`M=NFWUC)&v=3#iQ*Wc9LF zNT3%G6B0*t;&)kpe+4bc9|(OnVZFH@Z7bz%;mcrP3ezE}WO_b%UT!q1A+^dOtU5nC zAYNsoH^`W%+amGk^VU%(td80aNs9uz*BgKBS;HbYKs%YU_)_E%4n+C z%sUN?JIn>u&QU@YE2)FL&=8N9V0~_Rxs32ImhvyBo1$dHBp^);l!Q(LIckaV3Ipai zDz76PQCbMVY{_#4$V^`h*np7exxP(DA(j?8WKV2_VIbBVlTa>H8dD(J-$uQsT^*|evu$yy}ko1gsI1o^-Ne}O(L4&iYvuF zsK4q6pkA3kW-`Q-EOCoSk}Q9)q`bvdXd-=&ofe>=ys5jHlG|hTn<(!PyTPIubiN}L zuxk9MUTkSg#_N%KBvyV27A0*|NKwo2Vy!b>5zZ3jy}cM?$T6`Z!a)qs#%lG_XkvPQarSg zPnB5q1<4-u;tOD?Okpu{bCl|!{ftKvcft@z#_3UN)?ofIKF*RKR8v%GKZZDwwLh=R z_w`i><6`AmH`i0dVcP(3r3*{~WX3mw3{Xo}WPSj`eFnN;4{23kzmsGWy@JZV0ksY8 zj$ifls~M}-@o(Ms7dpqG@p1u!<~KF&Os2k$Pt3{~0H`hAA8z|UrNGyU7kbh~Lp2Ay z5h?H&u&Rs#g5q`QRym_pC1m^1+owA_1SZ)wMvJz9jP0>=p?G#VekjD0d8I#=<4Nf? z=_pOq>D0An5=765Z*j{bg*cpLP)+#i)mvqBts-m9dT^o|H;aM`p}>fXmwK}Cs0pHwTpbou6sT5P*6o%{t30%Hmjc@rF-Q(~nBYS=e8zMkWlpNs`6Bt}!4HAl(AdX~*0kv~G%E!eus5S5p) z$``t=gvU+~x64bDT+qGI3edafgxfF|@*xK^{B``RvAqR>)%O8L!l{bZ1e2CWs^)6yL;A}lz|+{qcB=MlmO_9MYWa)xxTbt$XplS zI_ph`Xtu?zcZZ=T@lo7jvz-XDTCT3(MWId0IyY@0Et;N~%qM@-$dh_D24CXE+Jm{e z9e0DIbCK?H#oaLuN=zCS={juy6cqA;n z(X3Y?4siYRqh?XkSbZ!63fC*@*S2}~c}i)-vA0D@=T2WB>C%u8q}M?R4$B0ccFrAx z*7mj>=7#VGeLlBIYg|a<43kngM{cGTUv_?CV7ss7N9&v}2Z_n)sY{m>wU*lJ!b2)>S&Eoi0Z~REx8^MI_DFnau=B!i=yZgklhBCst zfWa9iqM^<#L3!Q)i5BCb>>gNGluld*R6IiSvO$G5pvxL&$4!5mUS(2t1GY5nksIdV zfjsq)XSGNp-nUlOn}7P(aw$ID`t82ru~+wly?hTR^1Ec)^wPFlang=yKkppm;s>z9 zRRcQQz`CD1R3_;atk4bZtdE?{P|nYu`0l&4{H*PIdjvJs^k#MQTNK@X4id#{FsesB z9v(T;Gm@j-|ITaQ8F6c#IgWgLXS%_l^*g68>?Ulrb`Nv9YELtqYgPFZWCRt??Mk8D z@Sx*=`Y!5HQOz=6^bz#1VbBuo<4#Q1New!>xTz<_(65W^%O3Ze9R~VP@%ik2lilsJ zUb{YzjQ<^>D1QEv?SlH-p~rmO*FP;uE^>6zf&}I0zZwj=Lq0gORrG|bZ%hE>?N>hv zkMy6*&bOi>k(&p_RBYGjqEWQ)*I3j>U{~Ij5_#!aB!kDD*q7#5K|^N1-E@PE3I9;L zj?bR?b@E7zCcBSpS>O{ax?ndsU!=FI$3_9CwU5X`B+$sY#L}~OnA`O2CiS*~!sY}L zddCuGFqx+bY-&3@HCQLekUtAeD4sYy&C{2+GtaYKRe`Vx)ss1pufYIxIPUzG`-?BX4$l7_Tro zbE8Yovvt}aRa&lLd<yP(8NgqVA6*Q|xm?gT6pfDt9)P@Zb)&>n=5%&h^L-&ga z6*!OgBw7fhHbiQqo?nj~sS>xRsp8e~l=WIAvr4|f?~utY0tB+bJPEZs+G2}==5GmR zAC3w$mkGR23H@+H%IU~)0~NpUZe&;Cw464M$I987+AJz$*Mh)~P4dMz$92VXG_@!%A9jw9?9oLbFRYR#cBetmt*{Z*$&Lc?imQ!4LP}Sf%TaD^m^)4rVJr$}vN}IW89wWwF5hfI#q2F(8Z| z`mq3K%Q%Wxg1fEGj1Jp9Nvu^uyLj}oPNbV9 zI7A-Bi$ii zvPGO9ROM+QlYwsZgaRF3tmTI1?Vz;#_VW+xuM@wwu4-yO4$oX~%fpYVHZxftr?U6B z@0Z`*Kf>I>`F9d_2k;MmHLQ%%(>=QX7?iX}^sMIgGWrH#d6w!|G5b;<78{4A{YI76 zIKjUv)=Qh<7{_jXt^>H%Y#xTt|I8C zZ6R2R zhB8-;*iciXpAR~D3oxK)16A>t*X4T>SrcyN^g4d7_cdeHLm1-C4(2$gyfsO&*usBr zr(?{cUJT>`5NdRQZ_mnoNN}_0jpP-;vzS)813uPY_8fQOt3>re?+Lm!E0u z=&R>iG9K?+W6)#xQPSV_WtZD84(@Y4nk0K^o{G6Qy8l+0kT6IeUfp+%YlC)Sj4J80L=Py` zFhQ{uR3Twh2`b5r9bCUZBet1NRW4k9Cu8f4$-3NJkF+~SW& z4pUexN&1#!w>MW>p>EI@K%CMEuod(X=Y@X9k%|M*&rLRQg;u{#q9BH%L173F48xnP zZSB<{zeGsAj!C^uoH>tU`bN~>z4zO167XgKr^fPm36%T?r|*c4o%(*BZW;yeL29P$ zQAkZ8>FqVX29i9VM|4N3UHPGoKlU~q-j6<|A>bTFGK7k!lW4jDV?&@niW|>R|6Ej* zA86luvbhZffw6lE*%Yq67XLOjM8-=XD;=)|ao+gkTw>?SNe|AGmQo7HADj~2N=jt$ z%UDG&-EUnU+InupP}DlhwURUQqqiypa!ujplgu8_m^|cw*(MX{m;kyJVl&Da=HBq7 z8s)GAe@~Nx4O=4U*%`$t)Y!bx;+Ie!`uAHJ3F4a{9s*w6p+77&LW(#O3x61dNv#-eTB}~4wD_Q_nmzja7MiI6vn}oF&`8| z;!J*?Wgn|;x?{+m$|L%l)6huoP2yVFUt%LG;e#Yk3iq;f1?s$wB)=;0K$Hr1w#BV$ zhm)fkDnT*jJy?Y;{0LS!6n;LQtvF>ZSiE>H5sN1nlm0lDnGTmS86SFNHpi%k4YAB>FyzyFooKK4CcT7bA!%59(?uNmk6nHGTar-g9|zZp6NAOac~4l zyfVd(&QL)vp}7JhRd})lW#LL!)k7zg@dU||0GmNf%cj36GAqR+&kD)JA}<1L&MBLs zN;tC9`q;UenI2d4yR|Q=G_uDEU26g{yKCYwN&WATUbK6pEVs$P67GAv2oC}h=Xj}c zrWcif7=2tPjrH3pX?U$@IfDe|(P`p>>2;^QkjlGpb6cpp%wr@(&vKLxG(V`^=;!zH+y zuQ1#Y_g3EysTES4mtK9|gq-7B3#7q7J0WBi$bt#{$0uqWIj$=H1)jLb(#ODwr3z2K^!-jq`3`Y!+ult`FLU z1YQO_Bjxsrw{$8%z)`=4rK=T%mRXuqQdJCsj_3$@*mks-3(92Uoy6ZW1;oEh3xN5> z7gav*=p^SSEo+iONH{>1eq#b1pxK);~oB;GMBJfo| zpypd=xs5gJ%J{BYbA1}T@Km^~w4!OJCLfqd0c#FGp@m6K;mh(w?7U(1X+wiz;1$o) zQ)07o{59-1|2+B;uIsDznDOruV7s&o-w}hkhbNb)rGn5}jtGiZ#33v*4Y)!R_7hpn zQx}unj$3$4qc3_+5r{x;f&AZcIkC+7MpvGH=#DXa~( z`+6Wx@%`|Qy6G5UBmw8Ah z%E#w@@0A+$&#{N@`@F?&_%~(RD|IR*v~ABjNt~N;>RU}IR4yOak4-vHo8CLjDSG(V zUD=zx2eL1uE}aM9eB_l%#!Kn}VwIboCQep{Mx{NFU`CIV=4A?3c9yR51;CuE@}J}3 zyKbV&_~(ED&c)_6C(3U-7a%`V8Xq++aHlE@3e8?y z&@~U5xDoKJO&7(`T}@vz>CnXdXwU*A-u0Q2_-!sUy?;vl39o$!I$g++p2x00_nrTU z(xz5iF1%N*fps4Y={|9Zo$21Ym|0m9rGH*_(Ar$nUHkeK5rmzsFIaBYf#9tm-39Fo z4fin#-pYVyHVD1CSJ$3_Ci*pI}HXd-^MxClH_197jJS4!)R8Q_xqVjI-lQ1Wu^ zU<)doWu=%NfgD(hgfkIoDPJeX{)Z*ZTRjbCReq{yiC0YQOu`3x<|p40W_%1c^AkqF zKKM`LvRDxJ;n1w3@?BF+-7t5hgSrBHvK z*=@FngPB-c|5CzFhcBJZf*#%s82sP{+#=ALLMGV?>4a;po*~IxHx49`&`pZ5h%ino z;W2MiS>_WG-1^he5(6o*!DuV*c<$+#qZAZNcRjFRb0z2^;msseiDh~S4LZ1EgdcJI zBDe&tg_9$DU#VauVwxSYV!s>5_^)pkyC@T4AoQ#^ekmql1$(T_3!! z3NPK{Zl23>)Esb%eQ`v3n7$igZU20t4mzce;rwhR*2UrA*MYLbM_dgvMkX-Ti%)Sq z0&xyELJX#dP)h@5r~6C>gYm&xz}lx<^b$>!CG;nR&hqSb4wX2-`Q)7!Y!)6S_14$B zc1c?a*775i#7fM#H?`Vhe{Yaut}*%G?Llv-s(cpn+Xnm+CfHyYi1%nU9?29y z1i5=)F%VvquMKHee9o$TeLp?qeCk2ac38!Qh#6BE>t=K-LXu^@1i*fMhr}g4K$#e0 zCgsOH#5M4vA=9DE_H*yTv3Lg#V&e>)LjRW&=*!_FNn$=^ws4VuljJ=Re^F{zSjkBt zvuNx&euWqd*A~DvHS*-h4a4)y*Af`7@ZEfsGTwgky$KN}?OoOMbilu@uLSRv0dNfC z=0%g7+nQk*Rt}&VfGX6+fTyg`ZDmEx@v$VSKpx&`>QOTFO&A?o#k?@ucV72OdVRWr zV4%~J$)CSNTNYj5K_uV@d#?9Gt{E~3p3o)!9_w3)jN4>A;|WTQFZ7W)$dwfKhhHB> zu82ibFXaKTfj+)L5voUzs6k`ImEo@ZFLpzmCkhZ+y(T@X7(za)bW8s1hQwpQjy4nuUOX@TEX5GDD^2T#}YLwR(0MkuB#ccxoh zNiw-wVQwp_l@9)*X>WS6VP#c4=K?jRqEyL3s=8*B4x*(@{~yvmjX7)yxL6PiTR3Qj zt3c8pdgM#*V|UQy!3I;j!oU8^@;OkftRkrTA;6kT*i_*PHx+uwS~N_u|3doKCXdEB zp#9=a|GUIx$eOs-0G_9Fb$Rd{Tt8PwQMH0Ezp{OYvH}Gt`T%2u_(;9HLQhUW8`HSCF zx<`P|s}XzGRJ4!ZS%gS7mi<$e^{Kgci+>jD_gu2IoKWpFocx@+lX(Fnpt<+e+X8t{ zC8JQk-K>|M?v47*K=jWBT`jKt&*~o)30EyONT0^P18#WxzSmxzZ}wvAB$6h(fWHm0;C}JaO$f@nP*GJC_d?3ijJ~bTl9pKqO@WG^jGi{5Rd zDn@Is&_dI^VxkCu9>vWG61830WfjTzZ9D?+;C6hlFP_(|y_7jNCyx8L z*d`&`i5oP)ocC*;+YGs)!2J-md$61UdZr1LUuq4Z=K?e90~A)^0?G; zZAU??Bb`15Dyo{VGgmT3jjh(Ty#yFd_Y;0pt`Y}YGGlVE3gU1d0b0RV) zwPdQZL28`zIqHizV!c1fyXpDM0pYl9);H^sbs8x_1g})nK~!}lhvPMj6~~*rIq>-) z_RlQk6OTw}@reMMJ3UoApm zCB-z2A{J4gU*pN2zuk&Zr6fvHS~$;8-{*oIfn@cYWH4_}Z~U5f?e* zuykSzksHG3x_23oR-S27qv=#>6}8lUZh0mgfP>-pV1w>(rOENmUl0 zGx2+0iO1gXOEl$jgg>ci??oV?0I|GLuEGg(6`(d6nTQ~`YHo)u5q5T*B}i&kniquu zr#)PEgH*8LWj9=fUvG~RrWK+rA6D|8=>^LMRhR^$y-`;5oukFYr>yn1oOv^mx3EIe zfThw$?fBBO-xrx^!B5IO|4iXQ;^juGUfiD#yv>#w*8)-JnB2_ogKE4$Kv#%M#?ex| zC%``YK!wD&Y1%YPi-Z$+089OTzBktcHjI-wnk-R*<6%eGBzEPLa&hmy!bllu$Bk{z zfn&$n1ty~rNA-rE2epH&14Rro!-E%9BLa|K8BJc>prW{8F~sQ^qwm5q25W-%2dQFi z6vKTXW*U(tGV0wbiMSz2|MNzmm)6Q&aF{`LlCi>%4pFb1OJoO65&z*fU?jy@1;`-nVEBy&t5E)< zAJ|VwtJxi0=FRDU)p5fJ*!0s=s$uM7IHKpj-(HGzSu*n9ALKTovL<*EVJ?ULhL1|a zQ4${Td)$yL-odB)wktNaY7{O)pEenQI4ca+%IwBdGC^k*nTS2lG+uo!yDi%$Py{MCZQw4nIgsH$`n%TBS+$b zd7`v6CAmsW1t8drAmc}M7p3vV5_%rB#im_r4lRkhFm?xb4}iO_wdg4}F5WtYd7^Uk zMd^g4UEkeMhiujeY82G+SzO~4r!Myra9K~)HxTci?uN|QW@nJW7<$}hn$9ZPzXbKa z>7_hf^Jl;zCL!?NtGjioc~!wDRB%f*yhHpG>H$U8qTI8_**j^M&TU$e?2V+yZk!|# z{v003EMf{O8LmNE>kZ#g?Bkf<7l5AtjzDV;k)t#n=}LH|V+^y-a)^3&EGme6n`b>X~Ls@Ggct|(tv zN_N~4qP1HH%EM=Ur zDp|`H%|(flXOl3#HoQuwW*I+8t$Lj;o&oaaDN0qgp@J1B8r~y-CnElefI|9VL-`3A zoAd7JYMeB^3_3Tpi-8c%v&H(Hq7HDjg>8v)JD`i)=U6xx1z6~+1Rg`YMC4O%SZGnr zoAClD0|xKQa+92=!9SHP-jt`bDyGjIMM^J_x(qukun7`!N)6H0C>dP;xRyumnYjg4 z%%q3UhFr+hnpQPuF$V8Q*tn<)2n8!KY4-lQap)62FHm$=z`M`wkg#Zp${sN79HgX4 zPv{6pY^eYXcd^;1Dy9C$rrYUBbfkO>#b2U z>pz}Q`D1Y(jX2gX2M$W>5^=S7obayl6jvbVS(2CDYM;}zO4(IHUCJhJ7=c#UHd+MB zYwV*t2-7#6*`=K78as;gsv@z~FxEO4ab03(#-c5b-5vF?a zd2fLX@LaJCF{4b42ti;~je{R&hd2N_&o^KBeb}(jt#Dnt{1E(#!dMktl1l$0>8N4s zZVC2iT;_a1q`>8Z86!-ZNRWeA1OBW#Q$c1&nHl6-q8r|!{tliaQ3A}dLH%Hr>j9si zLM?>i$BFti;I2*xIF5~#@L09$`bfK_uL2J$+$nZw`}l#6Q7n}{Rc`b`g9r}_WDWLs zpw`DcR*HO{Q;Y90P*qVZS!T>Q&0JYzD(RQgDmW;~dZc^MEo!-1RK5}~@jlJ#P&(n; zEV~_a@9Lh*HDXth<*s;6aHy!4IaeVzdF=Qd$o{?&y`Rvq@;uG=t3#K!S=lte@FZBg zuY0Z9v=Q^nyFE%@b+?8_F*t~#R|Ew!caT<1+jrjil*|Z@IwAr1k3haF|D+C3b|x$2 zT8COr$1TWpVzh4Ei+dc8q@wpYDaTeg%AV!wceJGGUOQo39t%z{zU*= zC3KR~<5ln%NliV2U_N*=3+3@cUT!o%{MEi(Qbi6B9l($g+AD%?+R6{LdI44Dd~&D8 z@s$JO_9w0Ulnhes8G;Pzo0qF`mV@8ggi2ueb!^7DAYlMjxWQm|{z6lES>FNQNuea4 zC&p@2cf<=?r2g*07@p2-T^c4?rBvBXLRogW^%hMF7`h~S1 zMlczax$g>`TA@x}UV9sqwC;j6@MippXDH8ezaf(}sM2@TMiS=)md!)}B{tUzwxKfJ z>GTss-W6ah0O$k&(TbVX34k|&PN`tbIV6orS35Y}btDs_-v0m~K;OTqy|qwa%!vm- zL>pe#Zia>ozBdAn#5*B;JNrDkxryPx;(2r|{>^2$vUmg*d%C`XyaXW9s?$k(qnnBt zOyE(7TQN*9Mo@$g-nY}{pBAF|-O)hw>ViuNn#PnYPgQ^@*;jZ~G7z1H3FNCh} zilLSU6|6!UsnIOgN|HXRnAr$pMGuk}I?9NeoMiG7n#v0uP3>E_DRAiZ+60Bp62RI0bcJMDnwwVqV)!tL|(FzFRd#N z-@frmN6QCa?y+ZxXZzVm@CoXYuu~PIC%Oe~3ekCt3RNp1<1uV@gw}H#ZOR#!b&&Po zAa2x0Bh-9Mm#k&{tpPjvRM^!Pav@CAvTa&c&4VKrd6yi_yU;13L%Mj4-L*Ttf|HdM zW%s4|A$Vd)L_tx&h;BbfY|H2oU9nCGA@!+w@vAn#!)`(7G0*^Ys0yxOcz`07zGf`F zwNW319s>cB=CpPSFXrGLm4%1Sgn~zt%Dfp>BXShL{i)PPv*(hSpNNlW{8y*r2|q>tzhql~m^#Mz|1WKFe;?z69$_j99XN-9f!>%TN4=IbA06x+A5`YRpe?OOXlOVGNg_mP|5izBfTOL6 zedu1n*sz$3N)c&M=vRW;lGNAH0#Bz)85dV+Z%)Wtm64*2XIDmA(TXdB5JiV9&Vy2z zq?<7=b(#2n`+N>+023VSn&HkQ*e<|CkoNL^DsL!Tmd)o<oT9T@8EC1ZhosT)I##@{4~#3~9t z4Dc6df`tYaW{A#+zHcM&>Jhk45(s)RNE;)m$@j<_Ew-Icp=|!N5=C#*9^*gwBCl3T{Jigw%-h6!2~l&g$F~_Zf!h`_dN{ewceA z?NGb%2&}`=_ZRrP(#GHaCPpJ}Wm%;?5TJh@^&-+G@CM-b;&+99|6AGjP8=|N;nx%`Kh?p*o5wzRnV zRsKK5=UIe|rQK72v(^_SYpuUrT#FVrs%xv&rFHiT$TOo@<6c$17AB_d*2!M&>@<24 zsf%Qhyhs+ATVoNwKo*$`Wa{hOoDeG2=+E;Ko6s+_{;;aD#rHXRX9`}-oqO_cgKqSq z9r0^yPyX%C^B=a}*A}7|FM8Pv-0Qv2a@Rl$1eLC+kZ!^mT>s`_0!Ca%$7ecM zd>@Of1b*)9==h-aW9mNry!jF5-#Me3-R-T)XZv$X*LCB(KFD<0mQ7AEyPlDqPG%;<|ulxBhb_jkLug+ zYTNJY+gqn%Hc;Zu{;6nQtqw!6byk08S1Gt9ZHo!?P9q}|nMiTlB5h~9Js(d6-tD<< zn`HzGyl6%*_H|c6qN)!mXYe?TO)St93eGTks)3&>>P%%~JXA+OFYUu{slns@N1h)@ zsvN$*=<$>3+d5efp~#8n_S7KiG0?dt34aPu!J%*e3f*?z*+b6AMB=tgBP)bJn#~1T za(MKi<`UP-x=ENg%n`&vDO0I(ZikAa^LN8;he!Y@n~Iz61>|OmkY~{eMiQ!=e%#&N z|G9QrjbIln{+~vOP5gu3Zp1%PMf?^5HL6@ha48A|PJ6D>tYkvEz<|r)6a)SJT!o0B z948|Mtic?pNoUZk7wMwT%7sX-yj0@+dyyXf5dHbzD6^?EQRtgo(ZI8Kfak_`M~J4t zmzMe>I#_&D;lxD;ncjsPK-jVBq6Yqe0{EqMss5smi~1p5&hY1d%snB2fu?UfMU&s@ zju!)hV`Y_zP6YBhx`e27iuGU$!SSHVBxex%F3tb)7o5zh?|8S*AQ0-d%ApG#^qt&H z6yn$b9VXYhG+vQYKfsEDFb3MRh&i;uPtzo)L8dvTF}x|JA-Wmoss&KqG=Vh$y&_;% zoV_#C#@uxfYs3DT$QW>Z(`(THS!zj_ zhg5|f(^s%$pzQW#E z6oT?C$Dill?jI6>?$0(;FmGbnoy1kFDb5&LiLshv;u9WTFEv{TjSr)V3(FgyD34X# zv|t5uTx~{1l`=)>7=tFsk8LexPPPt3BNt%yFcrLNq^~t;Vlgws4m;~I!KlS=bG1L*H%U1dFGo~~44wP6nB{;Gh z3)=*3_Yqox!&YFcYHs3)7;iKIuSg5<>dR%c055M;SC=NX0M~x5 ziTzk5xk)B42LE|pfG?xWSV709B&^+3#hhg%}EocN&t{QvUPR5dG*<| zXOVojEA3rnm;6bwH15rP0PW@qEO9S;StmQsqL;0tF*-;0$L$}Zm)U4ootyhpz)D+z zYeGRoZT01w|5*4BWvnH|*~_j}{-Ytbe&wdz2Qir*>?kZ;oeNt~(MBA$p#CX^HJB`@ z3(=c5(b6<_)IUvUNd1#E`4 zW(;)W*c8cm2QHOb<|1iE9B%;pBKE^6yE=ry?u^1J3RF^0AGHdH)L~W+TU3kRymr?6 z`a3NioT@pSW^SGn(;4)g1#Y1G!Zx|bHOk%J{9?(@Dift87%ZT21I~DRj7`E#m;@Jr zO~D`Cm?K#BTV&`WgAVt9arYQ7>FgwXlP6thD%v*(RX6bqWr-9hKNz1Iqp01>e1yek zFd)flXE7m}ZP=GL`mj%d{fDjqJWw5D;y*91tS!6#-z&?DU+q7S@tJ$_L_J~$Hy6z< zadjJfZ~wz_bOtY`y@zYkbBFi_m70k!Aoe0^?s${%MtsHd-+9aVT3t<%cdA;cd@5@} zzdJ53hr`>}%*DJ15g8$%2k0Z}#-4N}R;H)CGWUeu62hyzbiG^q&_&vu~ z)M-3OM7wFX|7Pilyq8Fud@I0Hvnk>B4hT+NVkZZ8F-`Xlbm$+vJA?0E!W&X&V77<5 zx{NLeYam~^;E%uK-Axt5u>#MN^`c#|v3PsB^Bmo&RnsxNBUUYn-t^B`D|v>U`qvoZ zl;omS*=X1wK~Naj;lR}+=u!|i-OiIIf;jmWnm^1CqB!nEJMtnJ3^wi+$Cb0#;|X8; zp5U$RPL}m$h$={jU_BIDM*x4?dhxekL54qZuQ^%u2yos z&A0h&uX!N=(tjoc510D^HU|W>Mj*acB6icryC3nkF5U-(I}@_~FCd~TycbJvZ{nQ+ z3?q>0sK^j%9WI5a_c!rMg9^hWuXzguI)s`G@>Pj`O5kDyNC*faK1drfLZuKKDtzb& zqP#+=9eUwCqOhM)H_3B|Wp$lm`~`Se45nK}UxQVb)$QPrbSFl~!geBat7wqw4j!c{ znCCK#E<`A2$R$cEez?4G{|p{cG?kqy86yKxP@5?bjJhwWgE&yI7mRTU{>1WvX*V%J zq9w7FXupS-S>Syeu^dwDqegb~45A^?RUf=)Dx=7z!`uYMQ`lt8Tnrve=P)+xNvV;OY(Y;VPh;kV7=OkuXa2UK40#|-O5Xuz>%zgZ_ z5OCwZon-DE8NprE!bIEdwIJEt+(ZgJ5)|Y6QgROp9ia+=_{Q!7$)C`zY!#aq+$Af@ z?-^|S`g8z~3ijbqGF69cg%0owo{>?U;KuZjE|B$-=Mbt%r^xCB$#^LW=!U3S3hJn) z>?OFwBkI!kVu3}K>3lzeQxUNheCZAVb`Q4(FiV*1FxbzCZ@S-P+*-2;sf7WS$N#HG zOP&@mVK;AtIC&H`+@W4jPCk(vW>!fr(vjw#Ji|`DhW@pm7sJ@ZwQC8%|kXsdUtqC^P< zY0d*cL3DtQjDSejwdhr=3bMJGnCzMt-B;G(96&+Ade!q|S3OBs$#D0^B3E0pBu zn|Lr_781J4ruO0(w6hW&(FCTr(-2Yw!)k$00XCPBJqleSs{sUnETFj#H{Nb_XhYM7 zV&y>n<`!?p0Wow_5zmq$7Vb$1m{TQSl>nX>I@AL2wGKp7otsl3yj5%x=tx-mGJH~` zP4P!Z3OR2uL?*-)!srFi_wtc*bCVHnPpUXg@j&+0seY#b;s%*0f?E+q9|=8~jj=$0 zY1MV{j0Hl~H`YT6-6I9Aq?K?59wK+Lz!|XTrLa`-wG&DND1E0C1QWANmsSCBFwiY_ z57mPeV?=g6Z{b-LigL%}vO%P_Bs*!MYmY5uu+)+J)G z^PlMOJkOnYO#ns{{0Yt0=Q7If^Ma5z&ru6A$6+};js(^1T)D>B%n-EG9kVoK!mHoL;H)#>A({Bt33VP{t z`3?XgMyj3=anMue=YU22#NZJ67Y{l9oQ3h(gHx6#PfTob6>UfUA}lQ1jb%P33u7d$ z=NP2uxr~liryrOtY7=dXafQcfg}U|RiIk4n0Hg5_M>&G2K#tET}6y&nbqdAYbrGU1;co+vlD(?Qj6So@{;tU2v!*HU#2d)g9t1WWX7d*o}#Q zWd?i|)nkxH0D!}$Cr=sUx6D5DTz@3AN#Uk1Pw}2_y1gzKK~I7REFfAb`lrD( zpH_ryevt426FvPeH3Dc&4 z#uyU=Vpm4dF$Uqp*rm@&u5rN^;oWY%QdDIWHY6gEajTxoh*4^rD&vw6Ov`%dQoT=u zSbFS1+%P5(s%$t%xeT%_-!HX-UdDk?KP=ECEOD>^$k>8%A)`%-T({;?c@+O$gT?@x zJycX(4iWun#=RoLz~Py=RkK*tP|MWo8bAmU5%*vRsn(tt9{GYx{Ay1Ecg4|k%SS=7 zL}cyJOl7)1)q6^Y3h1q$DOqVdCK}N^J?GJOLv&umsLTIMl6pbbF3}g)AHi`jv6xq!8IXD}w~Eg)>zC^a0I@86{-W8o8g*}FgdY=!o<5(c z^7fEfNGOdU>lmh}YTn$Pho_)L#o`aX%e<$ZEYcRM8kx3=e;}%mi~9mrnTr&nPVl$2 zIQgI5CIBjz{J%)XtjaatuS#s)%JEV`A2G6A75@a#mSMyq`cX6)E}Py`)2gjd&p&_P^9#R1Js&VEgnH;H9-NOT{t{Z8TJ(fV1-DEc2wnxx9TA^) zpX(Qy=V&tEo=i$FT)H5@AZ_m`yeW({n6Z=!o5=tmxcd-D)c!-MnPlb_tl0#O_*zEh z%_x>H1nXd%FnDP%!)f={#Ni4&x20q0sj%4dQuCCW@dDbqqd=Tre4Cxns$PPY?_#`V z+#l-KQ6fES3hZ-D6^8qw9+ujE3sr40D0eUrOPbr@eD@&+SZrUZdv2A1L2N>Co{{zU z8!!PivEo>n34qWK2O5jAXg$})z5spFY=IW4=h5Qx=uj+4u$>!3^070qRAhsev}BQO zs85?=SUaKK{Vu4$5P3yEj7Z4uXs%vgq+quUg+lOF*+ekJkQ|I&*2r47 z6xCh5k={j19T+dk;sgslJZZq55(KiP9bO$*^<$8e0t%y_!;4@tUO5E+k&($`rv(@- z9iLklYS~qy1Yxw_rg%p13wIK8k?Ex&YDQ?&=XPgMM+L^#sM}YDG6-V{5`WJGa|c}^ z89>BCRBXhuA^HyN)p&G(TtYGw&zUent6=QwL~UizRIKz0>?`a>RnQz9a4u-c{%59P z{$iVczyKSr*TU-!@!K)2bfK`7nC9I_vWFz;ZDa(y+Jo(t|a(q24NVI89b=^Boq*5$5DJwHc|&(UJ# z^(vk%k(xXl_Ny;nUSD5}Ww;WG+w?Ne+QXL^98^9*Qh|Fo!79*O1NQlJm|YphgUb0o zL$y`%;Rs#_s0a=mRodyxyT5m`_DhZ6rI6;yjj0KO`>S9z-WjzzV1CNGYA6LGw}b7W z+xB?}Z4nXe5ac2BwT`@h3fo+Lq#-SX>cu9Q^8cCk>D4U=R&1r}QE^7*T&zr$Y;gYaPIUfD`1SG{hZ=InJf?{s{kWV3I2|0(>W-0vW#0dn$ ztx&qfrcVzbcAFCQNP&ug*B3GvbjkDH2tomODlK>gR`;;j%;Fd?RaPM9xl~ovZ@EmL zld)Z=&O;d}+PdVB5uGk87{MiEQrVZ$a$71uUV=B8UMwz)|MbZW3Sq7<%_L}o-lmwp z`j8@53tOHD=?)f*Y;Z}_$h?yX;e9DK-y9y1ck}4zy>qUrO<;He!DDVemvQyd4z!*7 z9{h(q%8zr>Z2yI0*s0j8Z}rRVGqr(2;gRlkzY zb8%(Oz5lr`{`b}Y?=e1ft?W&+`tqGv(_X4M^AbZM^eolIEzd?U)0kMDuU!F5rPcHa&wptgQJWM0!=C}A&0E9lJ^Phqc-n))5^M83`Y1O^|y|K3Zb^brb=ULR{cevHKD;Fkk zy_|a%DN~`;N&+qe*s0=3YAG9Y$N6r*f* z>-H-89GwdaBYOIur_%TMsYn7V(>M9c|EzpljlO;P@|!tbkgAu}{5Gdap=-rDN8)&q z2sEETIKKS!pD%y?_RoL*{8H>=KYzn=bQ&O|=qUmjS@Z^R4+Plq4==@D<7ICo^gxcd z^6g845IFv%kiPuSPyhKRsOn|)rAqpfgcB|CVi}5o6BX+#)*u;aY@-)1n(a<}p8xh# zi1DYtVcZjwryiD12Xi_S3UrVI270^+YVjLIk{n;B3V2A661N2hh|G2ig|nVxhnUvyr|yJ-LK<+++*FFqZd{51IW(|<<4e*02hb)rSKBBf(*W0jg&I1@Z0t65&=rf~;Ke6`)?O^x>A%+CtukW2o zEYd?4Tmg7d8|l^TNUsW!=1!I3t3>XgaRH$#=4Iu1-NxYHznT>P)ol1L$d^A-f8T^~ zQ{Fd-_fA4OWXj@K6Qj8bp}`kGX^?^lbT&DWs3X)Cu+s3NuKXUsbvx8gJ|Om#aa6g+ z(B5-%9eh&N=F&|*f}6a%H&y3tnnp#@rlEGTfhP7kc}H!^Kk^0bP3g`MZK8j{`~uQ0 z9neFqkd7Dg$_s}RR-Nz0w{>_j`mS9HaR7tW<*%kF&tMnet(OolM%R9qu`<)=kZ}$XLPO?qC3@*c)+iumG+#SUQSs>*}NeKoi`*x;I5nY)Iq+~ z9AwJR&HxdHh@GzjqHB>I(ZV@EqvaPGo?l$C?*ur&W)K!x*1SyVG|Ch{27= zm2x?{%g=k&cUV2NU3$w`96TsUxTn{haq4Q1dYJ#>2XixFp1qh1L%QHn2-o8tfai=?13sXb*Hrz%c6xB#myet%IA1ud*9#9aEzOp`aFNmCed;-B6``*N3|MhWRqEf2TPG|lmcFpBIJ*YTzDYdK#{$$3UJ zLOjzpn+0u_#H+3r6F{V&PJ3Z8qogj*8DW^jp!}XjF!jk8(ne9 zSwc1XCZ4cQ_+@6g@EQYkqWqia(+|H9a)JBvZ@SFq--y^>oxY?xc?UYD3jAt#puOJp z@bC%3bXdYx{*e8Cd}jrC$3`)Zc|22FH86U%cu8D$ZkR8&fz2^3eO zrU38H$DISF=71%Ba^^2$dPFu8!y7Ap6)tpw3SZFC+^Am_d&H_}N4MX`Hs7)zUhsxl zh8RYS+w`ltmA{tuluVEon6ZrlR0&BN#YB>zIb~6;>Ta8JjI5?pOwMf}hjl?U z&?k?}so1=r)jn*FFCU7)D7Xk*9x+?}S-FhalB*GKp9@H~=W1l5Wn*o(zhKBigB==X ztgYJaWU(3@L#P^t{}C+2d(E?!`zG+&^&pOA;+5<%b_uqe15zhl&ZgJ=C)VT55Imd$ z|A*o`)j;1I9I)}u&UF@=G13d*EeU2Pl&+O%dz}G`7G8!F6jOF7lu~|@v`G7)1?i6{ zRaA5A#*v-48hvjCnIc8!JBY^ngI(A*5xWN8dss3w4r?IMOk72q?@ihYjrEPOt`Lyg z1K{3Ul3CEzc1J(VPL{$%{@ymOub<*iq5YTML3@xZ0AuXGi)(8euKjoQ>-!&%^D*{c zHQ;CgURs~d1U$hV0K`AuP%OjTdTwPUhi;DVUMI!44|qnZp7WDw79d8SQ-QkVAy*Xr zMBy=E)ojK+oe!iy^sVnWkcGkVA5-nPpM$HU`%RIjsBE8h6P57f8*1a~LsZu(a4Gl@ zF8TPv6<5i`cnF%|@dmGG&^U|ED-Ij)|L1eWoU_Xq??NgG zQw~tGpW-UAEr+THJIs}27CKj0VWP*)k+OaxM6Ggn>N5m#hF_IruGEYHECMItgA(`Q z!p52c6je;XTcpB?zRdBx4}&H0k`fTdx-Qg12rQEdLM6LdE3w(l?gqtmvW86?(R zNGx)QFY8pl%bqUbz@cH99>iD3?t}nOLkoDM^WUMPu=+oGKhf0UQQ(VamW_(J)3}8l z@2c}bHtGw6CjiDco6?=tpFlBOn#J^19h(IAWk-~gt0b~j@9#9CR!@`&a}4A^y`LN_ z$i^}4<;h^Ew%?ob?FId%-XEk_*hBp+*G|G`gsNf}&fIHwW6;fcR46WhX!&J@(=UuyMNK6TfSwkh#d8dJF`rL^TX;puF`|<4T=#VHO zdgq>u>pf28g5P*Y`u`4nU{PSYg3G@+hlY;tpR=RAy@Oh?mw@0YIx5gpw#fJ$I*JpZ z`pJ?ilXla|*3SOX7wV@dt3_xVDB~o`2EP2xs`aqfx zb*8^${@&&u?=#l^_W&-SW8!~ptiyNP{crwT2DpMN8~%w=T)-z;e;3%m~!vJQG+#;3&D)?>RGZo8uSZ{mf5GoT_Lv<5ZO zYh0l}PNTSy#%GMTqtx$=%xp6iCCl1OMU~NUro!6DI8ABa>IXxpJHFgSh;ek_7|&=| zR>w}}8fWtrJBnpghCE0f?+{gLo24ebNvDI?+TdKEIsy}Z@;RZ*elxO&y(OAJh`AgR z5M$G~$`fbO20$K4VSWmZk9E9kY=`BZPL3hb16GXc_f?2rsY>p%WaH;KkH_2g#uHj& z8TkH{8xu0aL3={xwL-S`H|DnJa}n7qD_FJyaG2q8TRC)q?YxGODXm(F;9qJit&P58 zfK#K$3UV|1pfDtSNbD`7^t+{Bb+bPV8qw5S(`Znz`kLDo3Nw_g!3O{{MOF78v#e-e zmJ(U-tY$v-9zXqY+u&J&LiU%cg|igBhf%yAhM&8tfr>MRhSYUJlDDqxa2V4>d-eFQ@2 z-N5X-VF4l3af@Xgu4C;w3=;&g!H4riuBfn)-6Zk`-$e0UL#UldG;)m!RHFm006sb= zVxd+h3eOX&|LURYXS-<2bFak1&m7|#>f=^RpZW^seFw))@D|=xmbU20ReFuG0q@IU zZQn{$Lt8Oq<%k|NP6dTX!BdJ+{51N1|Bv+nj@uxijnMZ$M4x`e*Sus8h&_Csh<*^N zatdD_d>Xp*^-Pdkjp7bGBXt{rs{K?(?l8d6BJZSnj#;(3nb?zGTTCw#ONwdg-$d|i zd_{)jVUZvgqWN%R9bU0cKb+`-cBVB@G%v{o%FNLa7mRZNyS83r_Ss>=sG5dwg$n5G)C4;hy)MT2W|aA_jfqQT&~&bTEWh^FDnO{~D#kq+7qQ^gs%~i5EPfr`Q3>fU3OVEiB50FHl;YlB>2{ z4`OA~V4f;sWWR|66Br799WjSxt$aFTpdUo{JIrNsZA`X{Hd;imXpOVYWTVi>Cp}DW zQotfv{5raWlJhT?7I+sX6O>uxQvjLee*V{@3YrH6^LSrWp{K9}wx+Pe15eCOfk}gh za7mxY$uLP^$H|rHf0O9{_dNn0r~famF1h;u^77aCKacVW>i={E{95b(ON-IsVs&++ zx>ln9TPMJlc3*N#5;zW-<`h?N2&8p_-j))2zP=ah9*E@0(A^UhSuw_3*DWtR=I*Um zIH(;@aK1z>8QYgr93{2brYX=kwk$~?SeiJ5Tno#PNWP%Ip6QG)L#{QeRDYbfzs3cA znYrI)3h|;lY{t+oj&}7Bt`)O{yU|CDMG-IP9L-i2IhQzR5<)aVXi(Z{eF9}^8(&V6fi_~1C*evz+RzdY1aiNEbGl?n4L(Ea%YcJ zpNg`5#gXSutgCsdS5bYMeZ$$a&-EGg=OPtwnt3sWfPgwCpCwwgo5{oFK4qmUIIZKu z@2#MG{e00+k^YYg%L6?CH%9+oS=sRJe=mN$|NS^0t^dmbC)5A3RQ)$zE^kDOuR!%* zo%Z%OTKT;lK})2L+ms7_6lvidc`MDOqEQD_O*%wR62yXXDtYwV~V75z-Yjyc>ICeBErn`(~6TnntQw;aDdqyFs zhsfflVJ6we3Q=V0{rKDgXXzGvC%eWA=L{4!1(a+-j)bZefTU#G2If2mryZ%-Nl5AXAcp~V@uvFRus^Fr9tVMps=HQu~&2Z7R zdj5p7@I0JaRT&sq7{#w=78v)qQnz+Wri^pfQI%M*<`KIXR5D?TMNZNaOL#)zF3u#b zicEAxX8=;Adee{YdEr$y(!Z_CmRMGSdB;$8K^t!?>BP630+VPlpShqznT$(@LtfsA zM9=X8Bo+T|PTeS!SchUT=e}yUWAwiV2>?G%|65w|;=eDgf7SmU<>Tsq^7hZtbPAwQ z`$GEN1UqgFc48}hMSE^QJ;4UsQ4nWz^baT~6SRi6zNi@n^XCbhq!hTBw*9sac<v|K6uG2~%iDls$t6p0DW7NDV>2^9YDk*U6r)w+IMoWLdeUm;YAl0Z48L1``fM<}h z63DPnTJ_mFU;x6=^ok&)OQ_1!@f=z2&S7{?L5LMk*6v40vAc2(y)q@0R;s4Vbo-{J z#U2Xy%e5s0-f-7l*>F;=Tvu`h@Kw3`7x)zFe}nk?aqNFf%WLcFp8aoi z^{f8(7$2km(SW1+_eyJji!0IMT6Jx)y0$)v`L8APKss`_w@B}>q81aNgh$!$=+K?0zvbw`FHMD+9}Fg+I6fH z9HZW7Pfr!75e1|QCB4^>(9L;P)bhCt?G;Q;giL5V^c%bL-hu1aLe9?bf~$LU1O+o|nteLOf*J*q3;G@Sq) zpwf%_K%#;69cI0Rx_~f=mNy|C<895m*qi$F7Ef*ArX8+%;|B(e60Qdzo->>dk!XCm?MNYb?A1Rd`BmQ-r z^n`jI!oku@ahx|vSIw!YHbdqj$F8Z_N&9s{82F;dKe{%aC#s`wcJWTyOW=WxJFk2vXpbZtlLG5bi?P4uGq}0zzkOvQ39c<>N~-qRs5Uix`d$Hffp$pT>R9)&^`wmk~ld0=B|w3IWPJEB`*EAwnhf1Q~CJa z&IT7Jv775?7?WTF#)GB;fv_A`Hz51MZl!5Dn2zumNwd?*vuS1L}-gVj+2)fU8k2dJaFTl^PM ziXZTYpL+Du8;}Y{0Bv^T{4(lyL)P3+pME3wU%6z`MMa@lVU)6@kq$}ps5=pe{jRO< z9yY{e>P70BiAr7u3sd93AxILhF6wk)Rq0NP&YO>SH-b%U3R%Xu+8OAAGm#1L z-A(o88}X%j`;A>m7-n33;Zh4BAt9lh2`J~aJ17$u8%N;8h!$*lRSLZcy1MvDh+W#J zF7CELiFCUqQ=>(^#ZuPhFeiIFpE(5<0)qLjorM`X1Tl7A1faXoOA=Ba77l|I7vPUwr9A@*~99_|Tg?+rs!_o6Dl3;8<#36MuY8XZVAtPy9 zR3}s5>LYIIqD1t8R^}U^F}+2}p*K|2aHj{Q22-Ts2s{!ZsNdk$_B)f$mzU}ytbU80 z9!Mgx3a>V3VUN4dMi-U4IXV%RJv)Dlf6E(jhdsK$HteW3au%z%2U)j%Bb35Bg+ma+ z^~KHMAnxUI-u!N?Wa#8PW!RwKea=|{YPEXEln*y^?g?*aRo@QgjaN%eQ<_X*C%dpv z(v-9(6xp;@j|b<`d|`8*M*kTBF$>-xi)=FvcZEY&Z<)cvL&QJq;MH4`3SW5W>RMnr z&6JwZtRpy4zsvLDL41z>`QR_2{yL!mOtSpOb)I-Q5{mx(FzqI=UyRXXW~aAPLCi8= zVSwB_0A(0P=jUQ`n6xnX8SaL3X<4l9!FY5C3h+D`=AptWOO^R!IaQCb|38NR$NJ)i z7yos6as8|P|1mzU{h$0lHl{lOaLxW=UVQpe_Ud2dH6pC3YQ#!a%NH$)w3U76+0?%z zg|;bN(yOa3B3T0%s?|;-Xc;fU&UY2?y*H>wz2Rms#uyH-GLuWRb^cC9#OjnS03)N> zeDNP>ax_`|7gZJV907AqRd=rL)&Qe-&R(c~G?=U1W^m&#Qw~ri!MSGIsGz-{|%elpwgJsY+{*_$>sb zG=G;%mNIj>7Bv!W6|mBGCeyTK#WGl1#%kUhM8OYZ5`C`+R-JD6xS7QuVQ<<>F z7_lZWW6f;H8e_^DZ_Jv;oK1AYS6fwL(Wga=>x>zr17~e|d$WKVMgu zOCEn2|N1jv_b&q{A{CT`dj$Z5Fzpl*wBTZFP1a(<{;49N8@FR`@OtRV?(eEF+GxH+ z$vP=kUNRg~tdqbCsncWTCBt`u)wq<8N7;47(8w~ID~7SCYmYNcqMc!tv3k;!aJs3W ze+<0Scmod%CPs3Qb7+%jw{=8Y$wn3rChV{mTprTfIcsT20WVA9Q>RIUCzM@XwTU;r7q&!ZU_(8N^YkP zqd}lBG(7=*P~y4EiU1)dhRUb2DL4Qn|5iR{da#Wtm@whSjCu6izPlm$7;35L1X~hf zSRfmcr`ZEVL49m!E78A?4||!klMZh!LRhj_q#NJVJ4x>x52#HMmTVQVh&c~75|30I zlswJ4LTvHTrujCn;$Oa424_QgxJy5;rEBx888kTL3iIYQp7IGMB!u6KeZ_M0`Lo%o*>mYfPn)R}7$eb}pP56u=^_O~LnAM^#PwO#)XAj+) zp{;iFd8dwl7LgiP_>OSiPkUqDg(eK_TD?<-JCm79VsGdy(hI^je=17zx7MwDWek^! z?cl%%Vmr`nO9&i>^@a+lTzj$zKpP%YoLCes(sLM;O!FpQFuXU%?lm`>m;IAFg&pVg zR(hV|L8pUFrWZ!>aKJ-xF)*+Ov`2{BPTIWnOWE08>E5U-*re%~QyE?fj3nlPW2y(6 zU&O8Knj%YjMR=xPvKRO3!>m3`o0oyEv$Jgp#`t@ahvOLF43?cv*EivYChH!O4yxsw z*rrWR=B8Ee^umO-LP-=(l``lVs*MYQkf;URrlW5tiDdT`h@1y#Y)F!gmtTA^3Z+;x z>o&3?`NeNmGAX9Zu(?K}PHNL6_O=16q7@3u(Ky$N1crx(ghZ9V+{}vw-Ou`>dq4vM z16YpXpaDFT=TFpJ2(rN-ySB@jb_Le%k!$F*nwmmoR@JRP3K~^i36^v;e}v);kS+lZbGKxcyGF$ylHxGPM#WB zy|QVybu+uHr|o*u?GGjY&;GtLwZMs_qMHTN;{l0%kT;g84-2QE-rW|*hu4#zhv|{U z7T`)pKI-!wx7iHdk;k|All7~K*@{r|_t7HgfJyX2bSBVIXeq6oQr7npmhDiuZ`;#7 zG{*on&vdm<$%PTAdR9ctY`Y6}B?;*@2_9Vd*%DpK(J1aNvO)S!80b#5P`eP^=1%pg z>bMfy|Fk((3fF?w)XJ~%nnbVFbid4jH;ESfg{60f)lSV77bP0!6lksr(OBbp9v)Y{ znF=tgfoczuZ9$yj82kub@Nm?6C)k6RWLx3s3(jt*!z*^rE_Is$d3DpU;Z*V-`$da;)sl-TbTtO6%U?}V{)#JmI9jmhHZ6m03rtSh zaRaDnxdm#H3G_Z2RvZ<7iTS;4_7C|PbN=%P{+~;WYk~M*8(;lDALZko|H$}X8`B*C zh2DPfjsU6;6PsV*o$_^TdL?3p09yBozQvCll#7c&LvD}q3?KD3=G0P(mmhnC@G9>x zC#?IJFkf0WPB>H#H$)~(lFK$Wlyyc@>~>=x!W6@K#~))srHe-C$nj!EPcJE?eTu{5 z8wJPHaSL)!fr?wA&tg2+BK!DlidOOtpyNC?C%slQ$033qqgjq zkN}4+s%0={MeUO3E>+**vnZmYb@t=V7K`KNY@>N#m;nMz?N-=D8fG>N{Fshb?^eTo zJ7?_Z)|?X^$A7bNuLc+aLHM|T;rYut&^E+72KGr58hh&MqLwn?T93b+KlG=v=FjWt0Kh{n@tD8@sC3}@mSZyHI z4&a02AER`@ZwE2cana2YHId|?BNN#zs@m7dE4mJvVa8MiqzTdm+30jlR7_33!* z3(FpE+qfswmYjg7#vx-e9Y~r9ORh6aya1{ftBmCiq+{!{B5%J0EPCAT2K~fLbxv0C z>~Itu$F>^Kp~t=)SU3eW!s0123u0qED;FWgbXKAaUc_bBD#{6D6IJhAEu&+>T6Z-b zB&a8_(P?f>4kok>1L_P=+-Zs(ESe_CGl?|(0@e)a!;l#jOm$pJ_6 z--@yRt)umCvAVW20E0k$zq|W47zI`G&)s)t9}d*2bkn^M)s8u*m1aSDIb1JAgs5UL zaNmguk3Qw%^d>4i%z6{~hgf+w8Z@Dl{NkM#!g>U55$b!r9e2}C$UhPx>+SRg9nM{N znc+Kk^_myiK&rc{A}6t^P;)fMF^Z|5R#Zf+mdQZIqzok&I6X-)*w({+qXH~mb~!e> zkW_@s%`Lz+%=)aX`ehHk201SR!L6;(8k%6>OXz&)O)%9f)`(kmVB7k2Jm^W^n{c}C zl>%4D;l3MQDSZ=2v;4>8^w^ZFdJhi~&o^W`{|Y#+>Kw-#|b-_tCuw1_1&BQEOoyES0ubhfgY9U`Xg5&sODGCrpf^sf zGgQC|vntquHU{}>Dqr@oyJG7WL4lvY#lmlF7Pm7krkZs5v==RpoeH43EP(w2+bT?O zZ~-gYP%6#dxo6E$P7K6AP3qJ>xdzGooN@}DVy|56cigATkQ=7KfviF|Tq;rShf6TN z3WGYeK1_#r^VaQcnGq@?`3@f@LH37!P|WDzF*n7XH%jEF*5lDI%Tv2aUY^?x z4y%FK8jA)qt>WG6Dj8-%7ZPkzk2``<S|5WZFo`Wl?C1%D&TBFeWg4wOGEM z=5-YXNKxq|+ubY{33bPeb*D}W0Mo5m1MJ_LMK~E9$ZnY(E0!UV(7draKr=b^LWpCj zy1^?Jaze0R)%2#u&4NP*y~g0sp$E> zpaz!eV&3uwG21PnQxjUAI_+nSf+{A+`#`p5QwVyI^=|?*%ghe?8QP4Q{_uBLNFJEgcfZ{8%(fZ)Cek#%3iaW!sKa65SNYNW~pH%+<~{!ZT#19zizFdCdFN4>vngl z1jmRy7+REOgNg6^7@l<2%1Q4Khp+e;v{$pCwJ+%MnNxB%cgBS{u!FFww6naTg9P=i zn6CpGN6);d&+H^^Evi$l)`*oNDR-H-qt>mBrX+&lyiO{-l(flK2>G6nb44jKuRU2&(Y3G_ zx=AC0108uCNJsotG4J7-28r53HJ_6YCcINd{tB?UmcOZxCB;>Hl&^+!(}^lJDGT;B zCdxJ``i76!3(oMs4p+vFP)a~9Ho~-ZcY2KgtT6SFd{a=C#l;e@bICRGxmqdV^I0yy z81tVi9t(PH>vx~2TEtiVD%L}HG&UQV&Tcxk%;^AsUSjC|o(#e7av2_(2)i+{ zvWjI)K5_m{%->Nuw-Hy#%^3=zFtrym2RWY-!R@rYtxdYAn5qa!NXBlh$M2_St-&B- zH?8UN@x0tpyjfa+z=B!?vBWMYj3(-wmG;YGS zhs56|{HtXi{s4Li#mq-}b7r2&uCV5r)QZTO2Ai6^Dtm8^%{p1qfv*E5De9y7EeNSu z$=c-LN2z4Om}4w1NTLSa>-OQycMqo?ZEK{dbn$4Hjr4cC7ihq*Y4od%1*q?<7ALgQ zK~-~uG=bm$LOqVs*OS)&U7s=MzmIYMb9puJ{>Sp#*Yn@U__*i4=}ZT}*8R`1hr5Ae z+d^Mtee!{+wllJYVUBsBmfy=0+kvhvg9Zptmd>`WOIt3hV(WH(AzcbCEoh zwXaRx+n?OJBrwLURm0kctN8I_;8joZ0N z>yNVHsuDo^l(iJpI&P*8VYYN@C~R(__c3{K$lvezR1u#Npt^epvqUgWx8I&@7@TeELsk+#sCABCXSidgicY?Wkrm#% zrR7RMcJ8AumdHQWQH_65o1M70CFQ|JxQM)H4pi_d7t8#kyWpFc!%TlQ zD>71L3}?!-RCDW3oujf@xT#N6S)$D>Zg&LFe>sQQYiu&nERqLOR_nayvFsz=s>RLb zYP(xRB9_3dd{~B`8DDh~_gNWp@K_x;UFE$^_x_qIKBLLR3aCsU&}^mM~_|ijnD9Uqqv4#&Y#c*tm|-79;+4 z861jeolO%5GSjCHlcl+e-Iv2WkOOHurMIz2!L*VXXfU(`P5T7Ir*m-+bI=4v*>0Bo z98@>$)t!|1#!e~epxLf!a$9ftol35J`8QM9qmK&4yP_I^F@nJDnlOVD5atMfd&0k=B@(qM z*1wouaynYhINWYLCT50heJ%%{;RZ4GNO8Ng8^Sn2J?84LcGnn($8wT*fUC$&9e+TM zFb|?Z!w?7_@G#ewCkUfqFGf`vUa4RyTHqv3Yy)88jNgj38H?u_S>Sb5o$viwvbTts zb1o~ch&ktAsPzo}O<3d9k4vzzM=g7?4<;@o>s<`L&g7QCfA$ZpAR zjZjron&-fmwhWN`tuImWy6gBtoryn{UJMQ>tP^Q6US{)(G8l9|pX_c^Zf`vxC;$kW<+zHAOyE%_n65h1Mk7Qw7x4>_N7b(td36=a` z-|Me%@htk`zy0wnd}~eita-W2j5Rhva1=eP!#IlUWz)7tzR%Ol5_6^ho~?^}B`uTn zsg{v#6-v;R5PNv#I^P%Dp}hRkNf517yafM1=muh<&R&B;5UN8UX$$Ewm<7El8^TPH zIcGpC3x;t@&YS@$l?-7`zz?wA%fu#m7SvYpApVfr zUJnETO!8U!%*PR`iJpI-ZZ=REhKcP@Sqk73{^Db)GKp(kjdOe--N1oLj)?$yhj|>ieptjn>qLhVj4{XoF(Kg5 zEvh4?rOQ;nD|c;WP*fh~f{y1+a#Kfyxlbp$-ev>)?U3ezb7jFID=#C`rJ-6~)TCO#6u-%Wlu0g5^#~uwh-nsJ8-~)x zCzC8Na=d3iFus`RR6BI4Bs{Fk&{{U_*5ga;JsQb*+Uubcukw4CN|s_n5Q!~5;d5s^ zDe#hu;5az*7tE}yLWg3+p>pM4&cCAH?nxjBx-Ui^FhE^x5oV{+Li43)McwZ{R7wP2 ziat{K?n9u$@Wn=3sEhX+W-R|jc@b}~-IEa!$Ana(1e}c2xhIia;P5uIy>P%kUSkGH zGfA(K*1cO~5KY*uyPN3lcBaNr$&x10QUJHh5YepapsndyYl>&2sKY9>Ip6LGP45as zbU*kNf*HuuqBoz!FIqy?Zg{7+Q_%(SLKT)3-6y>r?j(HGy}v`r3r_uT8YgcOYt)qH zSx&L5Hs^KGtw zUa_-XHX!>|mnskpz$Nc5^8s+cRGa283Rm#HGlHvO`4T+g)S)Ht1bm^#8BS-6O08vl zXsF$zjF4RyBBYLAa`Z)0f7!WK3yoP`WN(nV3`@-baJ=|o?ui0{CFH-N8`-rd;Jnj2 z7hA9!0{t$!^|Ed;>pNO}RFE4Rgi;xpzTt1f$z-hRza_EIzlIs;j{js!F9L^bDi+3E*Z2l#sjnlO{5?e z@is>?j>B;Y0-nQ5!;z&(;R^jH@|y6qtz(&pIVGa;dO-^qn@hn!anD9F90hGeT`}uB zN;*UnghYrEpacFas25zdoC;`sj&Q=m=6O%~vm#@0?avZ_HbbeK-P$bYMdTRuXizOM zo#U9l6~-2(vC-+pa|bSq*;o2+@s!R@i| zb3NNUdY@QUc}(%(lueugQj!m;ADgnFb+T8Y8TT{;SY>!duoUr`S0=!IkaeDjr2~Sl zZO(%l^VKz7A@;vW ztOdnYpu*^mXt~qjKCF?zIC1KNhKwrXjEssJhu?JY8G&g2Ti8bH^%tYaYV$KO(m^78Y9m9v-g0LEOss($M=A*b{L&~%OoM6Si z)}VjFsw-B`d=Ltc|4gm3D^!V&rbkCrEHEG|qQ`f^qEW_&lz_p=kQag#oJnJn0{Y;r zqihzUX~q|y;pq44eYlPrTdnc4>{YZQWL+%Jh?M9yY1Xcv-GMF+jca@gStYsNo|l>4 zP(5Rsmly383<=yY2LPeYbagtciUtJfjjBIH-)lFcYE=JDIW6LMLoWVAvf!IkQuPPP zK@eGm_#XYRpuOY3-CRuj2;U+B4}4`1(XC7IrNqAIYZw?DX`LtJ3&aeniw5JtC2aPe z+2!#N6Ek#*It-%*xZ80Vu=vvtk-C|UeT98fynz>Ov9X%L3n|-%P5d!1{jZE7&{^NQ zWaD!~Q=#W-yVG{f!_b{(Y#qgjYd{FeWAq@=c4!{#v$9C~ZcBqv^}m;~((ss))-?>) z>BiWH#Q!mF?_WRiQ{?~uLCESydjD-{X?fLq|7B_8tN;IFe6;_+9B{kLgn20f}DSh(!fPE$hi`GVDpgtx7Lk#$ZvN>`Gs4Q;ud3rR5SL(b{CzL z1|wV#sG%Zpj)Lof9~a8>XGW+)n!U9JNO`5)1(wM^JT7^ofidQAUCz#wi@zlKEbS)X zJg7P!on$bU1$vmYK;P)X(if5TY3%yM4Uo>>;e+E?gpN3L6Wc1!4M1x7$T@YNa{d&h)x9X0->25E0&`W zLHHHE6t%=#_?&%7HPC+sDimzUvO8DhB_Xv^fZK#~kKVw;yX%Dnp)~;PnsqXbRwMq4 zttf^OD1@8C3GVY~p$_(*Q1eaqg=c$EGd}302H!I5BYiv+lp1GA*JV<;do)juxfTlf zB$uu^WT8MC;i!T9fa=3Hv95c87v_N4z7D@U8@EPhm3K1T&91u4#i><^C5I#$y5N`u zY^HUJBXa8!WaZg)xW@#{QV*^+`hZ}v^MT@_mw44#0erM$jzG^vfo6sxKKP^|inyon zP%y;*?qn`}xhX^=RrzKNP0T8R3cHt0LZf~Fvjoy*I()iU5kpVP8K!=a=MYVo&0FIK z;g)Ses42rF9%SvdY|R5SLm|B9E56gTL&kXo!()A7fjx$^DO~Cp_la$&(woAnXn5Ur z$ee&YZ;H~orry1AlVO>)saY}}9I=O>E z`JK*I(^Un)XHCX&zQ+Wx8(J`#-9E=K>^?0sM_D%$#%+1wv>C*$G#k&4EH!&aGl0yr#gq#SEB-HJBl8u{f0)h0^{s#WdpFt%<#1jbhCvz{u8O8F#e zg7ajpedrf@pq89CRqYR#61Jp&eapO$Srw30^U>@8BM2IKAJW>sNI#kKBScS}Q5 zha73t7DhL%qEcLq-QA&SLW=i05~G`J%_+p?@ZZ>lKJ)^vg#uJDi^=Vfi1Y$(hiS=XoSwq~Mfw>(i++EMDb9 za1Wu*s(J_|mA`DlDGa~Nj4bvx9w2Awy+lJK+*A1$I3K(@OsbW%W><(|7%MYZ&`i;$ zWLkpfnE-mT1>g7JtD$(of`g6jn@_)OA03{Z93A{>XQ~@WKklFIzdfk^x zuy20Tuc)$XnvdsQn`F+sza_Z8WHkaO}I%nZ+ zr0`B0I{F#MVHxS4ZFcobXS%LuGMYE!D-RElwSWrbEIxT(VB)w_)(33T0xzzK(9hAS z1USwCoKo^V(<`?2hF-ARFRCWh&TibMvI>#Tr5XnOFD+R{{kXIBGWekI$4(0%=L(ru z^;G3*kMnr}+J((vmM&FHYAaR~NLi-3lnQ7!sIVQbo_%L4x8YXFv9~N8P~qH@O>@qs zUaIm2s|r}fK(%S8sHTO5vIdd{YANAUw$s&NRXc5Le~{+p;4+PK0arIhwTkQLPqBHA zu@!G&7d;pwf5#@dp~vM`sqk3zNJ|Q}$+82LHw)I|8P0#koc}$>`%f#&>)!dF`1|$z z?=e2^`5(Riw6rqa0pKL>KLxgYLMv#X-pgLhh~|Z+fRkeKw_m_1#tv0EK zj(@PH_~^6nTu5E=!u70bpF3K|IXZX}{A#DkfW=itC{(v78nIC+^=kl7T&x25Z8u1j z^#Yk?qT^uZJgpirQ%kfq47bpjs65+d0Q8?kxL!t^6$oM_0ifl)k9roRd3qk~hn>_Y}T%R%p0$DCO83?&ai!#$vKZf=W?@tyosq zz@uw}q-SBmDA>jQ=lU5;2>SVjuQ))xvBJO;uK zfr}x{$P~OL>h*oW4E5h?26N0H6$3o_c$oDO z&&Oo76RwbCfDfGTjUD{JSzpnp6J9|3`8NWe>DAZ?7lZJrq9sGrAs&ryUz*%Fr>M$RITeJoOjH$n8wv{RX6GiFf{7N^FVA-We>XvH#lqxce*?JZxcXTX*0c{7o@M5#!c)OiBvD1`bV_A15F0C! z^?8XoM`^WSWl|7a=tiRM&G}Z+iErNsfw8zC>BEHpeX??hyn=`AhJ1MlFRz|gV z!Z;xc6hA1$LGz|hDHe*!g7OQ-InUI24@Wjr+e5pu8S)C}5QG5ewc^3Jne%!dTEz;xczc3ZXU5A42kE^ndj)9>xwq#1BZt}kB2>ONvcB(7P$no#T`Ao zF3N5}Vnx4>!E;#*H!NvqqSfOD+Y)Ww%D*>)TJa12okr&(D&%lm_0Y(x-TRx3KrcWu6XFX_-5(TnHEfOELKM8eVf8tqO zX?%!qr^?OR0Ti$31P@HPZ*j5@XJ1x{_e60n8RNbQGsvLeqR5_C>h+|XQL+b@S$V-ZK$X~`9{V2 zOjQ2wP`B2+9YmSA^e^{DmPLS`BE+{0W`4;)zFJ^6#O&+t+Y*iGv6{kz8tJi}WU?AH z%Pz+spBcsj8OP2vm=bNVGgJmA4wm(O;RLNoyh!t`l!3{LV$I{Trri|Ok?Z(2_sa7; zUpitBq&?}*qrbRF5RT@?odODB>ScA&eUbcAhJ`?iBw~188mY*}Xj693CU5Ab)38lW z-or{s(?mzhmAjt~M&IT)i0Exqvguio6a{~CAw_7cE(AF`b$cIH5VNi?wthkE^SXI1 zwaETxj@Z4;P5_1T4%Da*d)InD>!eNGWzmNA3?`rNTG^3K5vlexxD&XGs+60O|=lvRjs zUWLS0fVc_(u#!mk%&2ZP>zUoI5}82Ka(0`IBv!IdK_5-CoB8gGo{&lE3b_$psva-d z3WS;NQ!=#aAm&%NDEUK^QM2kzgxu?L=BcIsb6@P4@ff*jCdX*&%U+_XpalyQ} zAlR(aXnhUHE%O*eA4iYod=R6{K@y{bH* z8KH9z;r~1_uj+~meILd;z}p%*W`!<=NxYN0xm!*O)7<=;z>`6FjLv}6cFdTGF6K}$ zdwD$LpQ$+WlbF5y)YXUl5PTUW)gUwxd#m0Z$qwuI- zdgg1SZoaz8@6sdB?~A3V_Dm?bgrU76#=$7gz`shq!*Cbf`9Z&dV&a(Ngj=<~B&Znz zq?qiE>O`IOh2)~DHhA(MKG7d1APW`~7tO>xtla^sk#&#SYQ5Xjc00aM=kZFcgZl~B zlA<*Pa7?~_*r)tLVY#WcJ6TM3&2P>3vdc~C+#gG;d+N8mZ^McQ9dM7oXACaN1&u`% zpJ!>ateb8D!H+sV5do_`p61iUqVGD3w*jB&AuJ*Z90966GLch^Zcf|ibw5MWt)B#@ zA;xUC_RlZCoY)B4)8Jm?geYbiCsjAu(%{-kBOQYI>IDUJq5Qzm$bzteU|@4m2-6>U zAdv8Yi^9D|1M$o<8YTt`vNQcmn`)~Vln&iQU#%^Y1mFfB)V};J`?nhGT>#LX$!~(op0iQ?LHQY*Z#sfJ z8miIv*2AijwZDrhmFNdks@S99fwo_O84*uDD;$3Yf6Ju&?fPaE?GNVy3MH@Z`RUHB z%A(ze>zpv2t}q=QwMBFZd0GSgt0M1HbIj_gx-iXQe}<5w!fX@O#u1*aK1;b$M;=M5 ziCrX|_=$D7xO0xP$4NcQ`JfaSy){a1qYp!-CMBKt2+T$5B)zBe@u|TVzWk zPX51yoH8BZ9MW26u=3rn@r$s{l6L7ZOLEVF08bif*eR#Cq=tY3qpsjY(lZD24?IM& z%>@n_g+3ND?mz>Wcy}9T1qSX35dx5MP^=ebe}!HW<|lYdu#K2>o0x1nrkpg&<&W(+ zA{9EB7})NRDc$Mfxkt6aI@K2(R~H>a&p7NpBHodurU!knU3E^nIS`&zQ#=Vew#HS{ zg`h)bE%tpN>qwaCzM+$069_=>S+NcrbvK%3HtMwow@PF?xz{wP;mo`f_X_ipAu&in zHgK@ujc{)BA|40?PHtoxLhW?9xZqrW+`=2|*}&v*+3<1ahF$yrw6pO4jh~|Pe^3h^ z==guk`Tz3L%KD;v{=c~V_5A-)KKlG$4mckFuPo{C-%D%o0Q}l=b!oBm_#fZvp^ygV z#Sy_+xWvsBMv5*yb4-L3%*rAW!-AT&=p@75;!(|J;|}5uo#wSj^9hRPziBKKQ-y}u zHm+=5NJy3bO(WcZnNH?p8_JFKtS4|G3N6Ylfx#&JtiDj6Uc|kY*o)O0ove8|1^lQt zri6OYm%IrXmylLdGE_Q7pJzuivDDpxu!CXsV4wNKjDn7-6m8=$C1cp+!vW_{m-z?6&PemgizhOxV)ork~{ny;j4#2@$ok<|wbHy)dd>$ejvP zHX7a^)n#&9#JP+n zIT+rSqdb;SlOw%JyJ91boK}R9K&D2CEcYNd^`@bY?j8kLjbHDySWCNfcC>@!AEP8M z>V#?Wg7<~Xm>&-(XHBLY7-#ir$@*w5g7}(%v-07Ufg)EIqcm7cwB1v^0M_t&>KU$eqstwK^rQm*zLlmCXvA^Nh&~$i-_t z6{p8UlC*`kq;<|Qm^QQit*4+k<{7uAfL9>wr0(nMv&Eco-|U+8y!TnJWG!AjbpK0JNn!AXcg2K7p4GK|4D~L-pXIV$@i6N;`BJ40<%(S+og#*d;&IPyzp8S{dIE%K*A-|@ zHE8HDeop68O>r|}v1su1jT{U(Lt~v|;cqdsm9*ngXPCR@u((N%V0xlr6_lzuhdKq0 zDF?TO?1a^fdelc{TRS=2oBWXu>8@MF+KoeY#QNFWp`_;*9lTgla$J>-2F=9onaLgk zdboZuG}O~3a^oljnP?f& zLE~X`LQ{Q!o}hr>L{(y)mwQug5I5BHFPoVFhC7lHpbN3EDj0VRFVa?-|14zJV+?6s z1cFjNm-Y;&eX{%gCR+&ddfaO!IfYO*=5Lo&uxN08D{C^1S5dBY2w*AO@qi9@EKdmw zLau7nuw%1&*hu?CS}u_sa*)KGwA6Q5Mw*}W$+U5^Wz0kvByQsil#jUIulK=)CT^5I zfI=P=J;uc2AUTf~!A*32lY`Pa$xALn5^xjhZAv*+I&Ki?Jjui_=}Up)Dc~P#9S1pw zLB-4BMONlbj!%Y^PgSb{mj0CWJ3_2F=e7%B@c=iB2Qr9xqwT(Jn7=V^gt`+A7>uhxw+BfYzn&2n?eF$7Fp zkT{++)iOW3v53sPn1Ko@7-lJnGEZOGk`l`vgaY9>2Con>Ubjq4mT#Jw=%fZX+}esL zPjF{{;%|7_El&sBQS&B%YNx%Fu5OOR`kZTbIk4L6?`2ON%I$)d5Aut<(7?8&&b+vA zt(ka_a*+z_dSQYeg^G%<%Oz+!EO?#L-9VP^(>xTT^K+pkCM^Y63YPcn0?MR?TT=OE zi_I{zio{9IyBf)P+Uwz68E<~M8|Sez19stcb^P-{=+4aP7*0;ubmY=-Kk={ zjH_En_(bSwA=%>+;HlJePa^r5lD1N+23da=Vys%qouAopS?ht=0uOB_Kr~fX(2>g* z?hIyOa{?Gu$2$p>=p!>KXg)a@?B<@=^Cr~_$6O_$>t}gL5IgD?dHAw$Dl~}m%BMTd zMeTY}3SG~P0%IJ|OqvvP^WR2iSv1Na&Yt*B?7L8v5!>@&2B%k7pq9nP!A)WKcHyhb zn)500|3XjFM|uBed1-NJ-Shtvf4=&EJ;F!(f5`!-@Gpzn|7&q0T3o3vy{ayk_Q<47_^nWCKayZ!J>{qQwkz7UqRj*g!t{p+R54e_SOMrT(FFHM<@G#J32fQS*r8N zp=^>dU}5#_QiX9J!$V`Sa3{V6=Mm^h#h5CoY-UV2HRQ_+Z*88}k1qsDq~;+3r_yCFdIHB^vlSJRLrOnX*gAvnhB(Y5KwNKX{&bP=ES7Y55?N0*2Dt8_X#DO$SlV=8 zVF*aF=Z_QiUhqdp>0&dyiPIm+2%UhV0>6CyfNk}!5(ceb1`MbZ7(W#0x=+|p ztmeVPg(6uckA0xbpL!HbxqA%50V0`r93*(bK-jZ5Zb8%tjO8P~N=YdZxB!T258b*1 zM!Teg_i7y8tJ(0w>Aux@$uZ+EA30I-lf$hsuQH6RmJgaeV96ux^{EEG*S#@)2{&%xlg8TXnO z*}&HHl=@}2Lg-xe8~P)(-n1@%)0bPV`*rk*DrhUmSijgKfx@ic;Iq_9wXWd!SyjGy zL&Nm{{$E6uISIEcLDHT(n_cs^1ghbLYF3ZRE0?=7xmQ;HwWh(Yn|S3LMNm#kN9@9HjZM z(n)&fq9ya}p=n@&K|+ro2&~Iy35duke!eysh&l9h4;n@kJrlUAQQQ%|E%y6B^i%ob zwLu)5`WAIdnmq72OV4}RAQ3~<0|gtXT0)w>bEr7Bs918zKz#WAMjeiN2pv{dPR#Nc zVwNW$W_eO#mdC5ca2-||sHmKq?oGY(5kyw=3-NT@QcAtdUtx*-0dU}#i{Y0Y_)sef zTM(k&rJP9)m=|PHWe7J}f&1!qvR#g$O!q1XiK40>NTT%0_Jk@t%eZ&)f^W))?X7}Q zn-^jVIZwtvQhg|^*AL9`(*85m{Mi&uWi+2Bo%X^QVr?R4d!{xE7ak$>pOh%cVGg#Ei57$bfCs?n{^2;>`S*L@xLARL63HC|2GM3|&qN@k)uwtTfKzp9l zd!sIjXEUNIwPZ;J)`AfKIFdbQ0karTLjks)gThSGYxZbZ5RU=%$a0XfDf~cK^{glm zW=z6&l#mjAVz42A+<}4$t4|rkazRj0-o-wA*y25vdM*erz(X-$d5DuX>?d=4@Gbi$QHDr=6(q#K0KZA4EUV z-TOcOajUPNv7a&iUyt(s*ZSJ3_x{)7(pUel$N0GZUlagrX=6GEu=4l69OteHZanEd z1f~YuTLrSuziFt+<7lI~*xY>wPbhTeM1khJH0_yR^4MOv92Z|;v`u#0 zgBH~Bk{b}VneuUocF*L;TxygixzLj`#usdYaaTO@(8JEcpOx&Y=a|p4BDmnCI@UKl zHnoZLTp;*U+D??9)X2XuVuW`45H#`CW&p0xMeM6dGv zq2wEL8m!KEJ$foBDGx@g${)IdzIzIkd1cqT%cLucDw|UaB$hv^n3tfJ>ct9XeuKf( zTb4=+trjR+?z#5OHc_x)w*R1-BgUI><~gEK@J=s{Y%kxJ zHS~`Uanc_OCo7@jsq1DwW*Bv-)bSBiJZ8*)2e#DXclB5<4HO3 zFuvq)7P=?;q!yN9WEa6)&4igua)pS;JlR=ZCx>M9%<-4NG=FhlyJ~=X0J$0u!X3%H zW#3mF9&cU|1%(H#W3SYPc7(xws6su{W|SYe@_-X#E=h+DWvkKrryn9&bM!ef;M8ZKh0=f@*v`;_Y|~cUm*#M^%e&h92Vw&JQ};_DS&AfMw-f z8a!|v_e$hLx5ylgjckXOYmX6BbCEs~ ztGcCB9@WiO08Kd8p52kOEJvnKtYqD%)_ayP8a(0g7ApNjlkF0%bU@}IJ+lsIaM-h& z8<@b)RlXPuK^L9P+!!Qfc zke%aeGzCu3*DNBI=YANxEqW|5Rvd^au8We|36aL$*yv1#M+?RFugf68PB}Z%cfN$} z7`}8XZ+lvWom{^cAZj{1*3!*diCfst^vVj6IP%I+qVMbpfnkNPJogH)9M_dwK0(C_ zm_!TKqvSkHNtlZBGAg7=z#UNTwd{}S1h;Q3Oz!ntX01^?UT?&Ow;uI8;8%#8ax>f{ zg3%GB<-wb2{M(rBQkgveI#?=pP028!hv4!+VHcv9GxK564`2OE3YinQke~U1^w^xO8);o1J-$D@y@pMTrgKixjTmz#@>{m#~|v>v{VQb&TU zKkBxT)w9T2BQj^NtpyG!x@Fbkb^)Bz3}%A0x-pdQl|ZJ_42ou4Jw2>sYZ7~hllXWc zOSERBc?uG;*yh8kfbBzUdZsrkv%a_YCl4XA5z`lt*E35$Tc47wDifVYxV%k@vjr*a z7i@GuLg16j1eam~_X*#&Kbojez2?y(tTU z1H|kL3_1jkEF`1fu#G{d6Zi9EN^H8AA5BL$u&81844xC`gk9cB@oTdVXIPw_V9z_J zVxtB?Mf2dS4Bx>7rwAN$MEpjAo}WoDfL#~*w9Wmg>_gb zue{6N1R))w?vx+$Ow}kPss{Mn8P8^j3xcoJ>q_P=rel5GjB^Z%vJe?U;T7u#Ak{_l zpu}23Zwk2|EbEiT^(#rT`_FpfWMuh@e8STLA+KW5t~;`1BcM#w(-m8HM<(fFDG}t> zW+xGQGC-iQ^P~W0Q*9EKCt0w1%s8~2XwyN?dP>98vI;>LG-)=J)d8Noq87-eA-fZpn##YCaGV`P(K;O`IU{dX+QV=9$QKK4|A2HKRN zlkO4uU)MsWe~EF{xbb)@A^OE#ZADQX?o=D@WoNdbGw0h>jy&Kg08`qg=U2b~flg)H zF~se~Ai&u7@Z#<>*(iXAMAJi}y*3kV8vfWcBadBw&kl4WBq;{Nw@M}<;$hxNfJT1` zbyV;fv;TX9_&;CUCKJNa{JN_{nz@_`e|M9mNV~va)y2#21XaUZ; zibn~PM~9L7gPC5AmK%|&pN@8SgrPlKQOAU$*aWOu7P5)YBuX}s1-({uT4V0)d4nJ9 z!7;bI)IO{jkncjN(jb%yK{4Ft*aOX$o@=^chP$Kwc=$G8wkP3CWIBElF7&s1Gd_cU zKYHwK(1cxAydRpd567`{fEbHS?d<^L*2ur}$hS3cfEo{Un3&uI^cXi40<%Ew#+=$q zE+<(#5MHeCHFLIWs+M1SQu?`z)|+g$8YfR3oYbPj3bV}^bE=_rLpaDh*gvd&{%!xP z_91wDX>Sfon`vz~s{XUw`%dG*N}glc$T z@OVabZ`JKwor|M%->Z_WfoRQ`JT3{C5r1z*>3`^_NdNyhOgoQs{s;=(fDDQ z7lHWf#^-4>n*Wo*j6MVl)<{q$9}8oShK}!!D4LZb0hZ!d>Md$i$0~T=j!*b^r+Q5 zOIoN_H8jOD=fezHQ9L;3CeGwW{F}2n?%L`SbR#)Wdl8y>>(AQ@k-qLM9}nx;N0I$e zeo;5)3c7vj1gZ*Ef5!`CeFHDBX=pr!N^W|#4(@`>S8o7NmJ|$0jh<(ASMZaPgCypV zW!)9pxL~HNi5aE`pz%=oYG^;f7j`r*HIS;h5sT`uRp_yM(2&GHsBuQAwtk$j3so(M=DvTL+V zy=^FruK@%)2%dFgodiN?(vEth#F0=`Cv`%6j;dEceWi@*QkO*zaHMJ)}IORo|Z3V$a#r;PWg) zAEu~{(M`z+o4WBjfD-vSpX&4Tf@gewuR`%VS%=3}H`K9jq8pC#9BaHOXml)n2AyqK z@(81pn`r*cLa2n$6U2xK#D)(+>fS6u7<4*cdeUPjsy+68DI;Sxw%~+Ref}Zz}tpAPC z{~yEtFS7jm|Epi)|3Avd)&Hgae{qHifIxM2k&yDQz3s2kR+2|?FG}M4HoAs4X)@5I zlWv1_H=M*0K5N4)ilug4fgk&16@w{9sQ@Lx#RP|&t9jZx7m{d*H9wEQ`gog-gx=B9 zFCq?-rcg?-zH|^}q7f;`!4C&YqM|zW3^o9jxo;Qz&5SlV+Y3kWuEy+Z#7ZmjpX0_w zZ5G^+EL!ThCMw*L@Ng~P#J&kI6wd`^i5wBpOey%g2?((???Q*dbN2XhaE2u806##$ zzn#5*(Md0pND2O7hNCfPq@sy~TiNcMItZhCxeB{6%v)yRz=j0$=U|V{zA3Smw0o5- z913H^C5f&KRmMopaF?0cnSSH!_T-u;M^FslRxUlx&fcq$d9L|;Bo>rUraTy+>q$2q z{tDJ)c*GXDMehj2NJC&fyxc3M!hrP?L|qrV88Bi(V$!NaW*!98^m6@?jVkoFtF>2E z8y%&+>acfdH|fEdQOTX-?^6`$+49K>unbF+@Pw^?>{j4Zr+KVrdyX?ZIuIy*oeU@`lY~)FW3R5;W&_tP^NbWVU`PEg4+4yLuMlpQ`+e?rG#@3r<){* z>YQJs&=J)JIj!fd72id0#Xt8agPN7ol=^8)b6K!HL$y<>DH-_tdm zOl&8UiEZ1O*tRjj#I|kQww+9zE4FjRwyh_>`@i1z%RW`Rs_WD~YjyWIU%H!*fl|lv zmZ^6%3C2GCK5=mtKLouKi}yp$)cv(7)4NG6!cAe2&q*b7TOv=cF*8V(`Y@eDSgmebi$kqM|!u^3SEbm@cOk;8x_baUyhZ_@r8WMG^(Hg@rST4yye3{L> zEtrjpOnh9FJzB{sBoLkZB=X`b;_*u$JX+l4gOS3|c=JnJQ&-F7>HqF4zA5pmuLr+G z(Cr5&B#@XMP_gHSX(VB}s3+{-`F7D{Cl`W8^wFJPH3Nt`BGY{P-PHXw2BzY{Hk#Xu zwrzE*QyGO>avP*=i5T=HDN_bQ-8F0W`C1Qct1{dVcS0eyOqE7*AxEzaO+jtO+p-Bz zR5T^M6>6X~0Gd*~iYn&!rCRQc$qM?6l2@g1U+$DvcwX9tnIvF!;PwzvN zO+M_nwSzZMwa5cuiO{?p@ak)gkwK#Z%~&T`CC@#Xh`|OK%g4dvyZ8cN((yQD zopUMIQ*iG#yG)_-9?5CESmX%~#>Y4qhPF=MuP1H)hy$RS39O*tX33dGON=69`9?A$ zuHvaUs)^Q3y8n%O+9aCoAIdgK9w8iHF(2kvZf-LQ1b7mNH0S8hgg9OQ9flyN`ZQ{q zc8C?(aOf+5ni`MD#==yFW??hE z?dQgph=+!elg~|hlR_rg8x%GX_R4{ub=<@@=UZ-NXrPrJ{0rq*3im7}O^o580d;|& zqz9k;Jpae>L0WMyaO6ahM?b;7*Sn+*! zk93hP2_pSX0t7YRL|n4m!yg)3nU{e+rnZgjl`gnojE-?DiV;5?3Ns;aA69GS#}B`N zEv=oO=W$SCwRNFt&>0{`P{a7H^x6XjG=B9GUBe$fM=n23ehFG&WGk9O%|H&epfvSa z+yFLsq1GwDM3859@TPiV7~v7aQo=u`j)5NOKYRw_BK|Rz{CsiwvA>~c`9N;HQMeup zLA^NbXHhbPvxgIl{$+~*&Gh(w1j;K2$oitKsqy^GwK~(E_QgNg%l#^{ffjTGVYL7c zE11XOoXMf9@%Nk|`Lvhw_?rd^5lZNbdX#LouyVgs*QL5-#}Mp!L_eemmDQMyDtM$& z^6N%_o`3icV)4R;DP8!5vZc*70h&ryt+=t^>JL>!i)>U?5+8BS1_tO*srfaI!)854 zXM$QT=_zRN9y(sT1TuFeMR-S@Yrv3P>vTp05WLDU&z>@wT@ltb9%3`$NnWmkmB;)} z=~pIE-GKd}9McukR($WEnGYs)LQR1j>Ff$DfgC0T7NGZ^6N4u}deCgWJc6MDVuJa| z-0Xd~GhIrpA|0L=+dY+{jzf{dw$xK{u2Y7fi<)7Y`2q?B_wVZ`VW4$OeG0ltDUPaR z6cd_&3^~Y+!C;LPQ-bA-x*3%r=4lZV0DDi4;&NPOD2;Ba-X&4>50vFyTGNsG02Ij6 zp12AxZDIfUJeWd+WTeMC&3p=@b=y2F?WZW@`x|q0ti769b_yt+qwjHYI@He0b@&h` z#1NO{wG;c$(a^z#c=O^{*I48%#pA?w67JdhBEPYhrxONG0wI{9AWE>}MUj^p;j4!U?e&RQM z-VXP&Yx%uPUxpg@tFP+*#B2Qv-`MNfM}c2<3Lld5TWjN{9&fhAy-(Wc{QcYMv!XyN zXF(|;=9Md=f(Kpgkm|fYp|enl7gFWms{d#a2tVHf^|djgg(b@f!W zjW>cyEB!qI-YM~EUtGJaPny$9KxOK9ZQ;8Yi&bNBlt0Qc9Coh|tx^+$))ogy&* zDsUfnf%4sFv#4il5Ty$XQoV*!NWcEMNH&pOP@o%B5(MOa5yHGk1VT_>7i5O%SbHsc z+SG`5V%s`g#Z;HP^`$zQSV9yI{R5S9nn}#sfkZi@P$&oC_zD4%1x-{v<>)XW(@Yq( zf&FK1abU|@1C>Q9-POKoUgT}Qf}%`%sgVjQ1FXHHHw?#Jy*>)JFxyp(unV0QI$)=(GZ z@+xA#m0)^maC$Fs?SzUrod3(^ab7XIG&0GRqFIX%oMv9`x3jk2r}qUG4hX7~&Bb+< zOTigtxWLkV?MC56Z0W;=t9Ga-o2uK}v7M{$)gH`DxAXf;Yi#KA(ewUsn~TF^B)um! z^~$h|HCz!zMVlml`Ny01EE=z5GRBC{=2sm<-338K0QtpnA!UxN%kR=mJoTxI#p`ewl^0NyD?N2(dh`_WenA+2Zo~p{ z1P;@iCVU__{wttbz$TZ-%G`x8Ea7tB_#*oD1kn1coVw20PSDtC3~Jjf?cQOfbz5QI z>s3fXS5X4~8jv_&h^8hLHqsRDa!jOT=QvZ$kB{HYhjHDD1qjf5Z2kSR5eo$sz?j~5 zUDW+4ah~0P0yLW8j`2j4q6=zs^~)X({Cw%eQxI$zM2A>N#j3qK`=N%g z2nB7Umlv#!l3&Jw_ogUBU6w!r*Wv8Zj+Bx2!sS#$?A%#ELc`7X?gZC;_V|_x>6FrY zgI_V!Clv2B`*h~2PUL3G^xYNWOLxe3`Cq2zEvZuWcR=pJRMcBjRe#B39~|!ovWV9D zxDQR2CbO3!?E;=4tHt2Rn zd%`|d1uE3jql@MB4(IT|P`a)P)jUn@{dT-9!5{)CZI0y;PaKEUE`#*0q2rlP;g+=KutLibFwKpYW++)}OptRIMGaQ?(%TiiV~>lJzKa@Z}G4 zR62Nx995uGJ5`8+TD#C(f$3izMTq0%DTcX6yMkTlljJL;gu~xMpfi_j`vu`;9C@Jd ziOqg}kajW)uwa&k=Dm*HXlx=PuLl%XL7)#zG7I1c7V_)fGnd_(k=#9{c=OawuQqU4 z>l@YcEcK7057Nq{wNoPqAq5f2p|d5cFfeL@hoWSi#qNq9za5BejZl-j_qCQD7fMBt z{aA8ZC8ibR7J`1G&u>QrONjEDb#kz#n+LVNu1`EfcvN`^wWHwh^DY$2(UhV1zn3=Y zzW>UlxF@d=?S@7ry2s_{_T?sTb8qYC=Y)TC9XiXsNSKcYSCe2O;_v{$J~!Sbn&ZwugMPD9kvAh9^wa zJe(fWuZXPw`&7J7^8K}c_k0jrc=8Ejy)2O{R}lhb;BRGUM+=ZX!wO_LS_K3Bpyb6A zRS6d@DNyO^bM=DtHq05)2JWxMQxt^XjzbXrn_~z`(v!To)GqCx{-nxZFAcyM(Iel?TCZ{!jRA=O(NGp)vXwshvrrBpPE3dK}3 zm}|4|MO9TU`T+>2?{S{h9ZZc04?o=QHO$3B{}|+ zeJlE@e?UmQ4?vb}$m-S~WnSW3hf%p1n0k91ot@Rp7Mr0)l;io?sUE{gAxVxs0A}Qi z7JTe@y;6zSm1<^~5{8Qlee|#t{ix1IZgLlYa=J z6dq!bxoudtkTe7dkeEt#WABW+F17QC?+kTBuv#x!io}$5N&!)0e{lt?1z-6!A!dNg z8c_Yqi8L)LG}9N48NrbYo(tvXESp$Mch-84o5TEB$OCPwrR(%Jp%?RxW7^i9c$L=R z`Q(zkqw@pN;H!ZYLtd1vHw@{DB8iZTD?i=Gr3d3)PH%ardJ1bGNLN3quB_*dJEi#u zuPfkJY<}I(d}^CYNw;NFOec=jURx`?ph^(?u!UDyQ_dEKGeqLbgsKYi6Jxv7F}#qJ zh&8+ldJ);!=m@Qq1RG!TX{A3bw2{PFx=O>i2nZseF}`h5Xp$>U93^aFHEuCzh=BgJ z`)lq!3+aC1bJX}!CRQGc+{<8ewY*6N&?b0@@=5Sg)6Y#8h0R!x+cfAw_H6hIf=`V= zkX{DjPqVt-xWZiqvj#q z;53cK4zBc`dt&sOJ4=y#Z+2%8J4-QNRHT(cz3fqNL3BiRBc&RT*BeBZCYP@Z-a>UDF!Sefyd1H=k^a)c|x0P(o98#_)3 zoI=Bdvqa>6%hfc8I7e0Kr2s|7OZ9f-#aPi#-LT;bGGYMhGSLtd!;_G$`N2TN`M6nI zGsv?FjCn*FQYVjQDVcC_lQL4d=IzXAVt;f$ay|~u_^i=5G;KCbG4d!uGBreG5+pl6 z33I@zm)L0gev&$Gp^aasOldgsX?gmKQJChiH6z#=VrpNNUHP35uty@ZeWNJc!TP|dt%K6%(Xr&MZ(NG$}kwu8PBP7%6Tz{&;cED8LK1k;Z z{Yo*T(pH=L*a5!~%2_B@w1k2wOC2p@c>lKH>G~nksL2Z+Bd}llF02mV9Oa3& zNO^>s(&tn}YB!@y^2%7Ja30<}XMJYvi&hL_h&J- z_Z+F6wn8N5v7tYT-i8Ge!CxinZd-lrQiKXK0>G>z0I9TgS!UroJ0Xx+Zzi_1=skJ* zTDGHM+fD)uZ=dq%BbO??7}Rc|6-C#HqLm?fw#GF@}2tE z;)l4ruWt&^4|L60#Y~g#GOgH-In@i%@4ba_okwVE;E*sJhh98?(|2TVw%x~zj*ui? zxjLkMrQ-}q=yeNZC6&MTx2~d%4s39-Qb;-UUz3nc0DZST*zE^`3>j2@3aRYp6i_O^ zwt(;8(;V)?P;MpN8z^=mhL+}`)cp@9L>(RQ=rfQ zLPjNn7`9$Ul41%$x%tKP96+T`4#R%xdi}Kns^Dn%=!<(9=n1RpE;9e@)l7JXO|3c{ z(s~POQm&6UVzf_PD#Xffndb9vl@GsWEV4lFBUUw37~ozFq_Wr+9Z!;mv?`f|E($}Hv`BX&)yOn(Tg90GTCBR>)o$dfL7u8X>>`4l4B?>nZ!Df|1zmf>U=jglDe&2ZqJJjJ9IXH{@$QQt1 z!B32&H$-(0ca3Q$zG)}}9t3iEL>6p)IKqQTARFMv1fB9Ht0-c6f@6?S{^Bh{fT!|i zx?l*;OHVVq{cyH*Nw0VV`v6OkP=RszFY<`Xbcky#AnC`?qfcl^ifbSyrI~-n)RUyk zsI9>ANkrXix3h!8ed6nl%UM&4GN9=7dp8xDe;*6relS0q@Y>?x-Vk^jdgtfic~uZ7 zyXeQ|;;PE#&N z$-zZI02x^8lWTK9aGh@didmYV+bZFuj&u_|(#!9J7LLmCuvedYZ~XIuN2u{+fBvKA zg5VT}&}=?tCu4puv0A@nl2VWs?%@OeS+(_iVmG?6a1Z2!dokxE4mSZLZVC#-r}0vN zr~D-Reb$h)@0_AJFp%zJ-LNXRWvXS%f{GG+80v=PJbqA=;%{`a-(rdF7z2;13jUKu zzP*e8PHC60ab3;qlzr&#~ZN2wjUuR7GF7FI4kASrz(B6My9~sQ2sTf_AzYb1bfXgGg zUo<4H-Uz^lH^@ussC8BJ#!5z$<^7$GfZ2{=vD4RE|Bin94k;t2k4vHsVU&)N$SG6t zmAp8eyy!%U5`{xr)KryPrqdR=ls}yQE2_BjQGJzWi29~zq+lBM0kFgxve*Nb6_jdf zj`)O8i)n&tNGM~Lj|OT_2!EWv{JsZ^2V|jYeDbPA5%87{U-QaPXdCCPYqiIw5)k#x zsza0-1MYEiwcKn*^~)%y0_{;r@&QRMq8jpBT0At>2+JmHCOv0+g=Uz1%Z}g>#2{>ZpWlJv;n$};=pZw$si_a@+dhR~Sz{tNCIy4kf z-S;McSID$RtFI-DR_%r9u+`?$CbNEJ)KUv4oRecU~S1KUu8ab2Ujo zR=wX6-T%ysX5%_}zob#G`R{58|P2f9I_ zHQl}UKxv_l89DMtx)Bi*yynJKY>;GmJG*5yaM?VeP?BWXt^Y!Y&)ZDVo!|OAt-JsL zB=MQ>CK*wP#U{9LpFD(HTfXb!44S}#sk)uXSN$hrmmCUTdn*B|hR;1XCIY3|E}xbh z3e$88AyVzNV?d+N2#la3erg%mwGU9Bc|vHpCEQWF#IQT?AyO|v>|pj>NiGMgb<0AA z?_qWZNg-}>`I+(tWt2{YE^Qd8DVPEUGkS|Gq=`>YJDv(Zaa%0X$otnWMI3sX+1U@% zh6_gA{H1|O3!hnPoYh`y-}MMv;aTQaoLCaOo#T{E}b|;S`s}qfs?*CUPsEfT?Towm@{V_97T6{*a;hFk<8(#m*uyMeaqHx z>1^W>cgqI@`mSlkPi&9P%%fzgEi?o&6F!gLR14vMBU^ox)YJ^P(g$$hKI!!L<9rfd zN}vXR&3vt<#@fbvX_*X4Oo0q&z#$v_5LcL~{qo&TUcsQ$(8!xxWJNuE=Be?4-yZHO z8VpDn7YF{k-4nlVOqbFa9!Y!482TiyuL||MdKpkZX9s%Xa5JeN$5oDOGUZ4Suh?;N zyko*EnMH;y7wsyxia1HFiEP4nBRC6up+@Ij&KrarEMYaf*pwJH#gOY|23K%wjuBc( zOlG2?!rBVa(kuaq!mrQJia!w#@bW?sh;20r9jug0C=nO&KaER}g%40Tvy9X4#N7VL z;|J}5_S*qjkV8oZJa~4jPZwFH|<#`2Knpfar>P2 zp)X|y3bE!00!L)D3fRM@=4sq4X)O3s@$pZm+Ca`88}Y01H1Jz}X5UMPq)ff7txYeM zA!hZ%RL?^|spYjL$zF@XPGi6UI)m!3`6BPv$>QeUs6sk@rNZu7Oes!H3?ZH z{!({72~E8api~Bi@`M(QN)`%@)A^y?t=Ic7F8lJ@6rrk$DhudOq7e3X#Hd?4y3GCz zIHUtAPWne`2H4wF*iOkp(s%)7x#H19*s-^y9dZTuGfw!fo%Pg|8Ggy!K*BwQwtpxL zZ6f}+5Oua$V6Mr!Y)4sG9o8|meNMMBgt3nysRTwhPwNo6q+av9c9p=6f!hbE_Roh0 zsh4G%1O3`0-)^PP|2e+<@;4t>zks2YPCQSwh3}tFbEl_c6^>t?*4EAsXCGI9=eoBo z%ibHrwvHeF9v$5Iv~~Ze<%K(hQpkYwBakk}yz!*u?o-1Cxq8V=B&XWNHd zX6q;K7n{!Ijx*%i?K_CSdAcEWSE8yyP;=McazrnZhd5_lYeIw*&JKm(D7Gg7|E|oh zWGM;zFww@}_b|#G&0vMaf!~%Uvs&sgtr(cN(96<0r>dq`y|izr)2i`T;3$zs$Zwn! z?zn3_u6p3 zcWR!#P;X@?7fXba2Ye;=b^=Ke;0qqGFYrzb;uwZaqVxmH65W&e2$ zvfBMflo%7zhu7}fHaP9_zWIZE!^XjmlU-G396GCYXaEm673Z9-I0 z5%*+}-9;_sPGN}c}$agat;{yMqY($(CLxo47x(`n6O?Jsw&HnescBt z3O|NNHH`3xVpNH2qDzOf@%BNrCTo8lLoN|hX=F@PH&d;w67j((N+X~IJy@Iu5gzs5^upZFxY zNdL7X14ZZo7f)8@h-A$hmaQZ_3h=k!JBbz<${7Nw%-o5L2DlL{<(Y)U^Th%dL*Ykr3vRb}aBKPB|3@11bhYXDLI3Jb`I}UH zr4?7tuiKD-dFx%xVcNRfh%nmj9UfQ+47XeR)BYp&Yi!#w?Jl8hgIShioJh{@5q()_ z4v5ZvNnw^x*fF2Eb8w}6`uXvcHBpQ)#%qn(AXn-W$Hu@HrwZec8TspT$Fx?_h0b=^ zo1ll(TD%HZghBmbB~U&R@x_FSOX3sVVZB%e2IWtliE7`x&P?_ZSSYG7zR?c*JP$6yt2rSr{3jy@ zU)fpyCr8HR zIjga1)Pt8j@Se1iW8YW{bHrcBjD{3tb+n&Fc5v|tD7)xikXyuf5!KPZ+4ZCvznf5~ zyX*q=#&M<}*vR6++#9k95^?|+XA1e9m4tZ#uTFL#_}2Wdagt*hm)Dzj~<`m zI}zoR=9B7eR-bOu+X0qzp&;_RvsU&1LKNH8ICtQ?hxQTVp9d?Jyq%M$4zmuzGMz4V zc=g2ms;c+a63B86w^KmMNpN+_auD5o?|cyf(*7hC&M@oU0=R6Wkc);$hQ)HJQzRQ( zx0JWF(KxH~tW`<6`sSdU6?q5;!)Av2j%;MBnU-7QZgo0_m0nId>e)9S;d}#PZ5J;K zhMuRp1O7AdPW8ExK7LoS_X%8}^=jfj(v_5twzFn8?Z@4k?mD`+%RI(EuA^sp*3GI^6DXaq4AN6Yf&IAk)7J|7;5?My z6w)`<7TBM)LFUW2kIPFrv8sCuki4A{GMu_h5C}@>Muc^AN$r~5P^306j9H;_*Oa!j zgKHd=8y;8kF#cvX-83zGl+s9ASoKm&?h?O?&)+m88L56V0(vP~xD>%$M)LcnqZW?e zNsr>+6#IYF^8ZgM{eP75t|^s>kRRDXl-3HAk9IQk#G3AnxR3b%jL?52QW$0zHP6O9 zmH%hB1?p?76vH;!31|phH>A2fhNsf~fz>I&GszZw!NBPS)Kxfr_~0*;SXp8E6G3-R z{u~B{W!I?D?>1SgmMgodl`YX%V%|C_%Z2}8x^?@vr^%$$wRLBXhj*QU4%_7Go^pYt zd5A0}SBEV7;8p1S%EU5q91$orL$9E%bF~015*ETNt)zE5CY!U)az2nk9 z_!P*fkavVu2K7J+jv@BE<`)oO3bLaHO&xVz3c4W+<&F}*E>y=jhR2R?Pc*Fc&D*6S z)uqLLLbjC9ri0uObxO_5o!NF-j!P4@^?p{gOsw2<;=|9kDTg@~gRq9VEfAqW_+b1__Sv4iVJo? z%3-0qM%1N1ns2}hK|pIjgG7XPr-R4FwIA-OBQ5S$WFPCRONOV^ibd$@cXOwh%uGZ# z{HuHR$YAs`?1wPO>A?faBL7i#K zWjWRofjsFngX_GWy*~`5ZDuggw0ALOHMSOkywS!r(uJb2ch4U5`#!$P-UCONxrw<} zKM4lIU&|s3K7se4O<7YJf%-(yT%>!qtwB+w&buyC@6IMdBzk=pS(4_$30N4iwx$Z1 znEj`FFtNdE9iDVDgg*uk(k{7J){R9561*AI3Z7BE!-DFXo*<(rQ5T9^Pcz-(Zut%5rho`AO9hN^8p4Wnu=;L~kvPNx|7r?2K zwFt#cwU3vQcjNkh zET@s6cW0Z5o~}V_vWariWt%k-b%idM(7`M~yimMm3vpy*O#VUYKoEU=Uyjzo$5Uu! zoUjkU3-e_#Em!}?zR_v0_3hsj=mJY2ZbO8h-bt?@wb;EkDdYJ(mOXTLALKpFx4Qp; zn)}91Vz%pRAUyB}R-8@;pD}B)Bp}wJn=Z%YI5;+`B&YDsxb$$A7V$zbCBvGRp!O** zXJuzK>O9g}+K<}dM+9|^gXs_iHV&YiwSSdIAaMLx#_TB`K{*q{tZV*+t!Os96s9BS z;5q*ZXBl}E1@g!TRBTP5{z2zv|DXzry_3EmKh~^oykEkZ`yn{RcO0rHi2J8trp4xu zBp2~BB6#FjZvv2&$9{P-sp~pcksbZi0x+49HG|`fGfF5w?Md&q)^BQb#canyhIUT` z88-eqa!e4_Rn!N+6DLa46eau$dl2MQ-wI*fpb5#VSrp8m>N=+MiRw?#0=2j^(U!Q6JgBK3>jf&)JiF5#rXL^t7Cj_;w=7mj043K1F(zzfa?e=a*VWo zzhvBB-(`Lg=sJHOSle;p5VZ_+;_5iF>A+n?;Lwd(r1^$fD~^xm)9skfdOe-^y&pU) z2LEugVpdYyH68w`B|05#?@AT4Dbj+K>zCr@t{l{>Hp@EAAAoc_&o5#} zWY*~XS6YybLl+P3dm_Kb|GX=pld0iw$2a&oeY;=ZNM z_mP?e4>}Xn+u7K^TP%^~(5<%lUJvD1dae@d@8vjY&!h(|To@kArhV&>`MN9_XL80W zb0#|mIyL|JZg)jzr2k6fi24_Z9_IkIlXbBihh=FYwv-PE84gVT8qp0Y6LJ z@%-*KjEc%ss!)tg-M|`Wh8Egk2MQ4Yab$g#Yc+U)3r~8qXkl`Q%0vk6`Hpi+tirU@ z+dm?Jmm5(XR^Ny}60SEb`+k}0#>=Y4JgjTfl}Y={na-Q_u4L*mOEkhzl|NYGPzdfz zmAb@>)ncQ&<37PC9Xl`{iAkX_zY-;5w^tnsM;5^j#T5vVKWoHCi{iGoPnqQJz8>dQ zhoME9DOC@Tps38;r#AbtVf5c9am;#fY>Oe=TVmo*_XTcUUmhc`liWlV>dV91B+GT( zY+!ZJwj5BMETTtaQ;mDCWf-{ccLhb08rV%xr4#euV}IaK^aMwfx~IeA*nE|OyT3M* zElqvI$m&DK^)8;j)U-cB5Ue$yK;o;il97V@T4*rja2^|xv8JWoK(g=tZ$+t8RI@NK zB7Mh9n*RCc-_-qp*gh9Y$Y%;5{U|5_oMfubwKQ_ien6wEIK^d3F&W_NoY>Kp>a>fu zCk(14XHhA0Ou-SY7(8@DG9~Gm-qMD+oe&YhxS+^aQJ*vcX1DiUK4}LqKnnPWo%0or z`$oE=#dVwC_&oGG#!CsP#q}=vE$O(lZ|q>?e=w9h&LsDrqAa(@E;^`otY5_~xcjuf z9kpX@F$>!1030+$?Q~F_aB8&ToHUjS+AqdM$hGtHwrdVWjWdspbmAW9f0J=f6zfzS z;>3rl6AF2$Np)iGt&w~57C+p9DaKyfVVczkL=>@P#raS=1}RAqJ|Jdu(hTZ|2SU9N zrjiyrrT&MsR2c898n?}3@RN&V#r(Mt<70ZC+I4EH1HN!6GAg5ah0_U2QF{gy?Dt;K zrek{N;GT-*o!Q8$Qq_|p7mD20b$R=DylF35rjVW*<>dngnyUj}@JghfZ8NSGlI5je z@Vj#8m)Acji|hY6UYcgSNCnu8xz-}MB7Qr3_QLZQj@G%e8m^CYA6sa-all$qaUA^Cz zVkshBSEqHdg@vx>&l=!#R?N%lVM*=_zg!vQ#i&lVYf-1w3de9v-;IU1XH%KXv|`k4 zjDV>|b7U%HxT;%7xZ&~V=P5lIo7j%W;?1(^F(ROX+uvV8=;5)9#05FsxLi|}hNNF` zpSGTH{7xCmAzg@_M^g{Jy`RWiJWg+_RlDtgyW8F{C*_HJ+&hpA;tYnabdq*ubM9B%3I!8BYoxo3f z%zX|PSf!x~#TjNaKDi&&bYw{EquB}fqd;+%qiiJlNxCT>0-Xx2EH3^wmFDMTU%PV4o7u0S;))^h zFRWTU{?{J2w3p-D|G~vUq3`bExcJwg6$8NsS}ZmHtAM-8%?h6r%fa>BWLw z!=`z+3d=R21+MLU4;HK@2&8t;3d?3OR0OI4d8!$CYJI;ySi5ywIE|e)EF^X}8G=!U z{x^VK>{4`sjjRqn3l4c51dBh2FTqznp$2Z&Y3(B4ToWV}G;A=yygjGRYO+P76e`~& zImoVc&5ABF^b@<&e`-l<9MP(ipY@xtx{U-0n`CqcI)E-^m3V-#d%|~5Sz2?_-GKbP zgl<|ei@f_z82EW}&22A&S3~BK+sbz+c`o-Qe(vC5^z>4UWZ>HFnrlE;&(n2w_s8hT zjp43Hwc*mPF4Oj@O+XSCL_dbKwu@^kn&B=UP!i6^`tM%i+}{FVL=V5w)@&s?u)|C= z3Z@`i`gA7*U2(8{9ME>Rtk0RyqMr&jr{`3HHR6snd|2k?#N}{e&2!i0RL&y{8O?gR zsO{_O;(2BX_CbURXSpQ3_u7tBsIzAaWl>5(EzN=@tf@i|Wt1Q!TOMk%=tmf&KUpCy zH6BgSUDGmNMT}*%QC=B)rZbgbn=Q@W{)v~jxIV19Ar

DEoX@ghqm%#{)MXhVH+!M^w)_jde!5P9bTU&V0`0r;&OTaM96 zal&O1mGObI5qL4kj)(Z}h|m`21f$w$tjQm2GR6evQ8vfkU_eIt9TU*a>%7KrZ!MDPechc5d zVec)o>piRaJ4)9zqo+hvCOPsvTU8**PN~Xkyy^zim?tQ+l#U{;w}hWO#Z6{t6EV_s z0ypC)F2#@&QNl!sG3BDphauBR^i&)<9K=mU(9e0k=7H~eQEN8ro|C>GAaD6dIz#=2 z2e|95&(9XK}n?ClThqLb!u0+&R z0o9^gJ!@?owDL!NlsUU#D!~0WDBv%Eny+Dq-$QVJtj5;V)z?(wD&eSF0OEBu1kgZi zXuzSt7zBny$53$q4i7@5;0Xc(lnfzAh)@Zox)B3vXVrGG09_Xe2-k%fW;4x*;`eQwiB@1Z;Ohx4RL0 z&6Jfk=+XpeuMfG_0oZS?*;9Pu=y+pqs}AxQO_YKjf2QZ9&6KE~5kDbk?U-vH ztYpDI>QN8RjlhEXVn)7o5WYBY9|P#OX~_36_}dKdU4&4|LZ1?tyCVKPMu}#SaUU_8 zqo-5sM4shNO07ku<@`C%H792Z!>QDfSDoDOPqJ#;sm4*1oZL%|cjEO^;X#qMbV=EG zlJ4B{ci-|3A2f&e@`EeY(x;xqx5|}|t?M5}b3ZGWevs|{C|iG&F8!jM{!Tmhi+bow z`_N}i|HtOuU!*<%+ur?;_NmXR?qB$0|%%KotI;dUtvSyr|1(#?w!q`ZNM#7Er9{E(LdD125 z3-d=pltn-L-+_PrOYPVHRbBt*O5h*g0AIX>ysU=3tj4^0gK2m}tgWCzf$;hU1OkP? zLy-(Hodx1>fOsL0z{4RWSZE8Xwh0PoAp$g{>J9=xLw%{{RkSne+60hJ9=wGQl5-p6 zN}QaBQi|Xj6;vt&%GfoX{MUo3${ulT2Ol^js-6`gmXwg`_J+9@(4vO0s>Lm}lGeHr zE4}dDUdVP|)k(`6ciStcyfV~U5o@hY4!kN1)Sk}4Q?rO?&JP|y{U<>CJ|waV3T&aH zt3byV)H#O>F2F3?Xva1(uut&sqg=-j^GT)I_)2$JYcjmi9aZcbYESGyqY3GEqTCK@ zNXLyEISI2UY?nmzyqt-jGKx~iqVTpnw5p763*(3E>>j&pR$l1jWefktEPL`u?meRG zp!n9$fAof>AC{*}y_Z?%;g9mQ_jMXTXXdvGqzet#d*!og^-;a~u6_Hdarp<;Jegl7ja;OAKU8=9M#88z)|?w0?(`JI8d#N zp%0RTT{mJgM4hvf2ffVEFk`|mnDI72xHo8pvNNVbyiDRWD$5Rp8eE3a}FYrV0hB#MU66X8{BZBQbzP3XDcV zGgv5;2!-W7Ge5Sng;uFxftoNiN@{&43(&*{v}(X|xY1lWtFzr;C^)Ghz>s`lSn-A$R1B@P&&5E-c1b#a| zW8?;n!r(DG?V{%#s)SCQ+81YzS)pA?ZikmOF_Sj#)rmB(Q{Nc`H-1I=Iqie;LRxn2 z=j3DbYdhn{&OAR6C!DN&P<&Fh`c((ypQ9q63llg+HH(o@=;P5QY_0#W@U+@)P5%R+-c0$ zs{MyX%ah#jS$6P|XSjJ*ezQFzKP+i27wv}`$!3wadnwpBldZjH?cHkDZ)7`9S+>x_|z})NW3%r2#?_Ba8-J6meAhMqOV9G>_NC9y->QaxRQG?cYWh*z z{kNXJzjd{KY3ur}wd=99>lbC)4{bd^G^!rjG&h`Ya{S&Rq3a6MbB&)&LPnB=={$Hkj+{#XccX~KB4IayT}%LHQkd}+U@-(- z@l`E^>lPy~7tDYiTji1wxZ;BD*$9Uo*pVM};sI=BV8$5W(Enz~3pZte>tW(%5VvVV zZ<+9;G3I21)E{F_*<^DO@k~&-k`S*&Wiwg+j9)#Q6-^a*6KUm0O1hXP&Bw`q0KWdF zzV;8V0WT^b74^VZ71dvTgQ$Fosjov;)`7v5xQ2Q{6_^69B~Ytz>>3)Yo3|f7v5@F(|DZ;x~*)DkmC2;|jp261C6)Ssj2a^h0Oc8`e8fYc0gRF4SHt)I3mY z?Wzj&S7#<_VTL{|;)NzP#903mXuMhOEcQ+f3w*X!n%x?!dTm*|9V+vBNUZTUuO&>6lN0g9( zn)WJ+epNCkkD63*8zXs0E9eDj8^7RIo!iA1R%KQ%jM>F`Kkp*W%EmmVlI z9OHYb?NMsKklRjM%$fGhf@{;1siNptYIckSuiJJKkeBR%% z9)Git1}yk07QOYGdeD}EIP0RVSmCQy#DN{Nm#RMr0(Lz0Cq9@i4m-*dH&dA9Abit@ zpY>7)6Zp;;ejvaaOp+&3)WryWIxZcHi{}#Do{Y3RCmT2y4rh1^=j`Pifiuc=v9M! zK(F|9hxpqr@td~h+A;N;ZgEwg6xg9g^|XSfRN%2T%vc9tN8;SwV#Zyzi?O>j*T({q&Y0x3L$O05Bn>tN?*gKZV$Sb(~9H1iH3d_ak; z!hOrg&@#ens5kCco$Mm?hma%NYs-FxeH&sl*8BAsQ-FMA#n}pY_X#d}h)I}fX%jE3 z7oR$$xu`hqQ3Z~d~nV5gImy9oAe2>aI4@G%E@pMky0 z5k5zdk8${|pL7vse4oR8PEju1%)C#M_XtX1S<0o#CzP3pFcPPlFX_Gus^y+-eJ9sH zu?m;!!&`;%QKB!a5A*V^l5jn#+PvT{mPLC7{@%TI|6X?RR=R)Drax^lUTNL$)JNrx z<0p~so_F$~Jo=#6|JOTYqg``Bk;@i>&*n#*Xir`hJpk{itYpuNe8E zeehZ}^wc>1u5+6+d*zhnuya)-0$+FJwQ_pbLTyQs6aT?QsmU5Fu>1QS(9if|oEK#|-3& z-2qldgg+1!PUmQYasE_HI^$<7q$ndv`fys&pVLg`B%>MXT#E8vZ)*QgQ}v$;wf_OE z_;>ir-`Cgur3P97z}5q);A(OTgbsiZKu`=44yDvVZ~!Q=rkV?{WkKo~H~=4BA;Z^d z`M@SILd_?12w`2khBh&{NnF>#sOu$yyUCaVMtw5|*oAIrXI8fh!NdHzK3V;+>dm0) zO;0OiM2qZeg%5Nf+nNYXE!e(hc#j%0p(M;|aGNdAgHG69AMs?8d^C!-^iXVF=s+7G zHUM`|;yja-z&PhQ`IF<=^dc@c3-?b!Jd;@aBHpz_^6W7q+vLCs%(0FN?tzp0HNmY~ z%T|NM1oxWjoyP$C2E@HvAGY9~)_=WMJ@E@oUY^Uq^c=AgC)l8Y7q#%y27b{kPg=Q2 zi!fwoMFX^W5T7yNF6{VgGv(ArNJpuuEF&2e#Ju7}j9!S6a!FSDT#!GdC-Tg2QkL;^ z<56)ap~@r`nV>l4 z`WvC4NYh;~_bw@GY5sOpx>=ANo;4mkYBnAk53f{5S8C^DxAn2Zb=qVsYYaDH%Ll3b zi^BeYT1@}bt@~%=$uBKCf9+ZQt!44=qS24yv7fa4pOvi-lI~BEf%ocxTV?lk^WaTu z@9p#FZC&5D^nPmTf7?9tQQ7rL-29QF`H`o6EAF{vx4mZ$ea9YoPZ_zR3KlV)=TuFe z*jPX{l?c5BY)_dyk|PeJN#icqupQbJf%p2+V{XW30<`!nd;gmSbM2WNkZHn?cfw7q=CM?Zgl(0oZI1x#*$Id+-Zc+Iot)5W)9_DLpCHNRl>^ ze5SS#Uq0hMTI7pqb!sP7X2`&IQF;_4m|XrLW9)zL87hVAcww`j21 z9(Y$bVPufB)Q+2zk+vJr^9tZf3wWy?W$uRV&Oi>kVcu@IzXKZUL3xG=?mlR4h?E?| zjBcLha2|mjrv-{0nD`u zwrxYLCt$mcYV{G1tU{NOWwNuw`Soq7IkpLaZ1dBiQ5Qq z12v}?CT!%A1z)ns&f@ZHjF$>?d0{qPIKQUm}fa=IZeBAGO`{~I-$rU z6c@3^Q?EGdmn2GL?*-MJq1bPD-m=1VC9@P|wrhpuPV2l9>=o2UH~fP~`9V>-kY+8F z1j_~4_Ko!DQhI!;I(byspE_OV?Z$U)&f6aMb(8Bs;{DiU`Jr3)e_C|^zm}7~bshYp z<=~nBf7Gu1O}_pQ>Ecg{k&o)p2TjL=Wb#flaG~sZ*RpWa+I^?#dDIMiY47^Aul<*% z(Vyib50cLB!~;KwdLDT#PrU9g;?8@*#24b=1$pou+fhbzCy8A#YDWw;6vcF0VmeCr zwiKhwN9wfKkC|(SBCw$ZWGdCL;07+bL0bXXY5+ZFM=ph6V|LQ87c&~84u{y=5z|Pc){Y*Y#%5soA9U+frm_rf#RFc{e<_?4fy*_4hh%#iO^m^HyHhNo# z)0$KD2AIQP*+`1h7iWK4@$x@jeEV;&8~y+U|D_sG0RjOLbqZi;1r|{SLseEG;dPj2 z0K#E_6i5}T2FQTdVSx%n0t~|h;aNZ`qmDzY5YmCo0z@+x(9f^yWP!SgU6-Tk=nKH_{kbEB2C zrY5d7B3FCC`@N{+9*BMdX&FbGI>6C3XuKVt?ZziMfWbCss+XD@<0J;jkugMc0v%W& zWL8n}O}zJj9@LS2J5dFja@Jsl>*1C)Z5P&9H2PDaYY%=o2e zPEFRq&nGy!lpr3VrgFS&TIP$$JrQ**AV>r`evdF37ZhXcY*JLt$T9(8G0IGM@i7Z2 z;>2VF%v^$YTBN-{rM}DK-$yC8aq@MZf0w4@Ld>jNlypA-{F$cMDJM7W()#n_P>JTs z5bOoIAuV*41lBU!Run!P!Eq_qmE|X=>Z4PQ?n<&#;;a|B`$fU(g?#-?zJD&aT{hXy zIz8uY=9@m_P5;Sbi>0Ktm(-T0PSa0arr%m@|LijT(yRZu|M-XDwO_jTe{Eg=Z}H-L z$^4UO@RMfbPCfD1H29zzf8R3y&@=sgclW2}j<<~?-?vTtt*!gVwvJDoqfd&_pOig6 zvRi*+^?%~^{6HK2z! zdLmT2;0G-RYv#>$GbZSqA35p9k6UR2Zpwt8G!;Phr|_d^l+6--I!7P%VV07RwLE+) z2A_{WW&?=HG^Ouf8;7~WK2cwk-WQ^%9F#@}uRX$P^$40>;y#CK2{O$_uPr%wY3h-A|NC3PN0R`5AfJgud1BX#DU`7Lm(@-x!z?jGe z92AYkBN-eVLx9He02DHu$*ygd!n6{2zqq!a59;KinsC*<6hspP*+s8y#@7yrVJ-67 zCJMY?h3ry8`=kmJYT%?8KcvP^YYAgoYD+hwXMj08jGpfxt@aaEd!b88%!v}TuZ5Y~ z;Kp98tq*rFfb@3~LfwSmFf!TN;O_^=+fmUWT4|7#8e*4v@v%X~*&->mLJMvS0=tah z1}-q)5Zi>>)__NQsKX_|;Zc?GxMAl2W!!+7)=|6bScjRQbI@%%NyyA~I!PWKBcsDd zjhwU>d+x<29D|}zTi}4@N zC{Ho*`;_D^BrF$|H#vGSNk0nm5-wIM%=CpR!K5^4Z%(CU-k89APCh9REf+l9Ekk!I zHD61Q9{IK>x#LQ5a% z`D4rC2j$!c)y8Gl*hBm9_pM{!^-TY$>iey`_ow#JUmHi?38%hS^?s5M{45-P&lz~4 zjootxN+eAl*LXqE7Eo<*#7L}REDP#LfQAC({s_9uhMTt6&xER{6BU!;+NC&rDporY zsGIg$$|I7<=SKm<9JL(W~mMw8@$1fefNn<+B~ zL%fj`?OEFc9;Vts5cyfn0l73Rl&5*EQLWb3+!|A;60DYhsL{!6O0xe{(eRfF!0+EQ z{N-EV>(}5np!!-!O?^W(0)&9$U|2Yaj=%^(V0ImngupSOXc7j-p^(@-5|xK#vanPZ zgvm#U1hpDri68gpo3ySKNZlytZAo$o9Wd(Y*4=h*Dpu(s32X6`aV@{UlVjt zf*+CKW+lvNExo^=(cjG+8DtFilBPNcE8WC{HvE1wLa)V{o8TvHNc{j_*N-~sAP0xw zp<$G7gy98`-{;MUV(W>&$>PwMFLXN9|Pc>^wQqo3J{ zMHlrpio1x@F4F8&n3{{QN@2=nf>-p?(lJ`eC%=q}^RdRVUz?1H<4JxjF3g1ap@h(x zp!p*lZJf3Nn*kM&89ekMPeE;!;?6n~|R-n$8od zLX3M=;ND~<**GU2VaHO;u%Dg?OY$*ABqTM*7{)U7piDlvU|AkTC-2u!z}gG<4|x!iCj(C7JkW%Y4Zq0h*4m-3@?jpMe(@X)L~6Tl3Jbt;4^mhyKwr^OJn|2gTq=QQIT4^MTWR%IZ6(XiLoI1h(CeX^-Q( zbLfE*eDEAOk^+x-QGG7djF&Lsfh{I5b1~3}4=^5R7;&Qd!?;l=dCZO-H(^E!)bD!F^KrfD+%Yh4-{pbPHe;&9E*CVyuxoDA7bJOz-|0ct=P4v&>!V@6REY`e@HSdA;j%&6yK-M|3aS3H# z=NtFfP7~XI#MjwmKBwGkqIvb)u!&zfqLz&KxSNqPa#BuO!o|qj84q53F^D-!GcyU? znUfv~ic>B|!luaCROJ{yACX7X>WoVk{g*Fz{uIZVl7;i~P@El!D5Iy+(1kR7PL32Q zg)?!sAS$JK$)GS%poP=aR7{x8uyYZ1Imtas3Qtd^r=jMnh#-BcN~O5zh^P=322=8M ziRUhIk}**4sHZTPt=oJsqulk_aJbVrIt&D?v86IHSXOj%@?Ab zwCJQPKZrLTmL-n&O5<(U$&=PmZZq9!ET5aL_k8zTrR^=>_FJR(zg39 z`)lLLUqzc==qFz!J3k4xzesn!6K{PdpZMG~_pxQ;gL3A5|MYjgLl4cp9~;MiZlC>G zHu#x0^I6gNSJ`s~X!>3_^u+Bf(+2X)-ZEO7sqalfTRiBYJa{05n$2QHld#DoV#<%0 z@dK8F3R5Y>oVRW`@@CvzJsg1dXPzy98i}I&ounZ>q1T4*@!{tTu+NpCIVG&$l>p56H`u)%k^nVJMu?Ncj!TyaXo_sJybR$i=8U{^N< zKC=3%8KgxDkQQ3jrtbNtf?b5AW29R zy#b5|gK!W47Xu^G;S^CVT8t#KAart-nE9reQQ6F>@8SbBB51n^qa}beXm|?|si9Rj z@v2&Qh>k}5cq?vP-7u|rIl!-&kf4W~vBNU-f(SV+M9(RRiyh>tR?Kocc&Qb++*7|e z3fmba9`sNT`Y^^WjB^;O@5Z=?$*vKEwFl#91SO@gl!_4Q#ia%*u}(&zgOce+MJG^+ zF>GQ|;9n9rH>vSuTzC`}TSYlGkoG<7?h)){jbK~BS$9yj9h!HQ<=JO@juTv&EdJ?=uEm(YSm|2?Kf)cQ=9cl zsVg@c-m7&V+iVYF`*-5NcT(RwY2bgF0{>SN{!QrmO>X~1Y5k#H_m;o$k-7YXVC(OU zg@14sew2-U*EIgvI{l?-@nhHI`@ZS>uD=SzSm9ZO)!Q}8IuL^Kw8pYmW}4vBd7SjGPe7U)N)B` zJmYH5Xxa>|CCu!Kuo|PJ#*|PPmI_i_ah$_TDa4URVOXmSio`Cp*4@5YgZi4uBzV zAc$(XR2ZH0O3tcpq5~Ugl}aX5!vIRTwGvu|f(TVp8yY3hMs{td3^k&Kk4PYMnz||R zw^Q;LlQQ6#3_8pQjw=Y$D#VN$Ki-U=?jWvrA~)Ny8-v*G8NymCX0MlNY^3aVu=Z38 zODoAU2nx1iyv;ac2RPJ*^Jz)pHkz}Q5*bCuhw+Ias(lO}9VPo_7}j09bB_>RC%b3K zt|@|d0ioAZw~wfnEwXP4XI~+@7wGO~LiCX5)3F`L5|2p~u*manTGm8N9x)4cN!&oq zyEvyV%7vS8ZQ(rwe=5q#dj)4^R%D+R)$@~PR?@{!d4zd8GZ^7zy!?bioOSb(0gXG( zu_Rf^q&O1elrF`IGeM>-N$2>5m@1fWjOJDGm^>a5lrqxXxgvF?ir(;wm$Kq5JA22; z-^k9hjp;&jD&G{3H{~L2;esNT<0KQpNRc1NO06NGInJ@i>5fy*c7b9^@hxWxQ<;67 z=bGU)B87>^Z&}+-)X%cyG);D%U>8PKT_6y;ZJ@iTKq{g`-6J?v&$yeK(;m4jWmKLWq=Vu#hCQZ-7(p8 z%Ta2VxaAsf^tm2ekkZ`dBK7QQH4%#_M2Q%;Dot>(|LBSRvpe|T zEusHzcK)x#{12`3d!_Av1)Kkr%>J)z{x`<@-z0NC@#lY(%{>YyZUw`4n#s3~Q`e1? zZ?*038oRH>omZ-nM`qtAX4e;d&l9EphTd^UXf9x$v84AB(3JxW<`Cn4;G`Qi6GI9G zA%h&}3u3t@nR&#Z0(aMG3>y2pboU?AsTtDYS&BQ>15%74dp~r`5Pcu4V^sX#@ zu*4a^)-e0~tfOs`cTZrM$NCqL zfo*pDNSHq4rgoU+gJ;dlGcHL^&r0Y->3vcDSP^jW(kG(KKDTtlztXb`R$53W$k><> z2P5O6om+U(h&bd?B<*s)LEtlsLT*hkER6cu&NMraB>Judp=)O7Tzq+}&Ru9Pi-LSw z><{qbaZx1F6wUJk8A14-pSuzTo&@PTMedHBy^@{26{cU&hX(0ZjiC#Cm%PQOZA?ssv=%;4aJGJAl&5<8ejvutXpB0(^Z%g<`q2d4X zj(%d=KPb2UE?)Xy_QDV1g?}&>|1Mbijxql|XYpP*_q}rVUOoR_Irh{x@m4YPC~3dY z^cU3qPt49ULgyo{`-a+ijqEMsTk_P7G^{;~o=gG8W1zVtV9ehz>_g0@;9~*GR1mP3 zfXs#}=1QQ=^s8y_H&eDZ%YN938@U_?4uvs2F8Ht;-4(}mr@8$_;c!Ycm}a(KDMqi_ z`peB-cf77MS>JnZ`+G*q6J7g3puQG~&Z)dpLE{CDpX6zBlI9RwlMyJ>D&eV&8xzY5 zB2i2t^lP|r)wB4iR&M2=p|!sQy!cO0#kUoe^%cOHuj{H`0V=;iSN{d^Z56zx4*BLA zZ1rmxs0sqFgCbv{;0j1Gn8vCiu`3DETDGK`qN$?D0AvP8#C|OnenVlul1jf;NvpM- zDiyC*LIpN5s@eoKqx@F`g0BZ8uZKBrrkQ`45!TEqAPbG4`9{oQ8(~9%UF#ssci`uH z8S`!Ql@`Lb26m)G?zZBW<@8k*b5B9u?xO59A}vi2U1Ni;3u@}X`CAC_evH2p865`r z2O*JhU~sYCKLv@*f>Tov-!v+;jB{F`B1@dZpsl}X-*nX~j)3`n>p7B2Xt~>r+oA2X*<84>; zZAbKdPxQXoRa9BeTWmMIwySQ-gUs=<#rH+ydeDTP$;)$XIcGOOltwv8G{cL;N$6r(X)oRJYXaTnD*8WCjOrTIO4E{Q0;u8Ztfg7 zorcbbD`%Wl<37;La|Q4K=e^M30D2@!?2F*L6Rg3EpernHO-Y*z&F$x!u9CRxQqXhB z>v^Yceo}Q_^I9Ioswbi5RKz)z$ZurQl0Z}BiZd)$lE+E$Wl1$ZqG0*tq9l)<;E*yZ zdO$?;C;`8FQT?Y{_#a=^z4)f;+uwt${!m@>N95Npu=SOox*8O;3IO;Eu=YRE*st)o zKj0`;2wXLo`HDEOO@<$pUado?Jmm}>m82dCVUN2}wvKvBKiJX*wYB5@gZO9h+nQm{L3nJWE;{nL7|>jpCT2F=dh^ z97>;89<(9$FOK}8_Xau;~1gfy36Wv`T_0^{<6bDkDw&zQL~sa%%C3bOo} zGI_>|UZ^8)Wsxgo^qLcS;)H(WMXq_lCz0=5tk20^sU~Bg-JVrB(`}x!CQn*y$jNM8 zxhciljBBlhCTpVcBqlIsRl2M~muI-1WZs7+=abs|y~6WTWA^8E--E{W)E)WQ6@3^A zT{i}j9iCH-y{L6ub$LIjZI4p#XQ}Q2)Km`i`^qLACS`@%|U~ z%1`vI-#AnM6fXWIo%$zb@o$`kpLmNui$;D{&3)$g{vaIsi8uJfn7Cw47X^bwQqLW6 zvSZcTNr7h5wKEskg(PG(3z<3xPMrbf&uV59 z3RAg?v3Tu53^wTiFS;Sq8S+d5-&;WUq$mR=Sy!GlloIq`$p@~~gKt&+chZ47arbA9 z=2M&MtxWnsCVXm=T?%Mr1@nq2Da&YQVqTuX&+}FJZrXQ~$@Wf&cXf*jN7s`u%?(EB^$m_y!OC0~-7Si~3Ix;&))oU*PEfs7L)C zfqjWbzC@E>lZCYyJ`gT|V<~k6YBiBpO;fz2sH$k{Z%C@I8T{Y#*}oGCey0@tS3C8O z-LyaSivOcs@O2;ek7LTOrv)!3m6Jn@)FB>0?#Fpe`Rb-|5x&=C*TZW5%t{S|sHo?)izdpl^ygv@v~0 z*r16WYr__8%KB^piQlL61*MTN-J4^EqS9PilrJ+2=iFR@m%U)6^W5?&BYDHlohhRi zlK71x_(>air^?(Za}Tok2UhG8EAmM5K5@MdBEy~7Sd!?oQp(u}pSauqN44=!>C$hqso#X-|KLyjT`>DuIPpO^`@L}JBV+23KY30cKVyuS&@%WTtwiShHBJUoS$o&Kvfx>X!=Dqp8=U zL>xa+#Lu2mCko7=g0Sa8)SuyWUhz8a6ayc$J>Ru=eQIfa z+pPNBEc?`=yj5^+)Z7Od@0`Ob3P~9*KE}Zpx%3MzzrdHpxT4r|7nV{Jd}4{gE(wGg z2`8KX^^o}Wn5t%4f?t*4rp4&R7UYHkGOfl>Hlvo?Xj5I} z83k;*nJ}wHZ%V0~E!0gF@<>ZrZ-$*H5eMyLYcI~)fwXlZyqz%5EY3OE5b1j^zjc8L zq-%nhSi~nL$@X!UVf#7xNyj@3;}*}LXE}D7+B~Hz$vp3nt}_uJO{PzBVW>jBN>{9h#V4 z6*VgpKCL$*^f=VEh};|C`cqO{R+_tD#A1TnB{y@SDx9*?Jk2E4lSXcygi87v$C= z?Z7KC#5pH9(Q!g?Qj%>a<$G!MUg}>sWPaOWyp;vd#rFFS?_HbyNfkfSdhXhNg)VEk z*`;ou@g}3uFf9Y4r z{yXu`590Oz%UJk9w(vzV`9(DRn{@C;`rJFk^gG7%J#GAgK77jREigwfi4&K!-YZn^ zDSjf48V=M71u)HdVtbL&6NfM73G;dAatgSauH8I`%$(IvUw{@qm};3F8UYQc5yWU`>@oLn&r!LEK*K)D+cCj~&hLS_VE#+ukWv zpF6mh?ZUT>^qh*F=MYZijD(ySSCMiWQ9;E|%auv4IL2c8d2~OOlaSyuYC)ut5mQ3H zt%d#hRn33Z)qh0w+753r(2WM#N+*ex#i`)rMMCAy?#x zJtcBWf0wXkNL(uq3uB9U2C%JD9y{V;D#u1zzpwj%6r_43S42Go-;5n^s@Y( zI(Z~b*&9oymc+3vtrMMERC!NR(W1@nx0iI9lulJL2+vL!aUDH(%+1(TeiPs061i*& zcc{sl6+6?SNJ;6-iy|3yx+FV0Q|2z7Z-m8!G@no;PKCid*InWV?p3KfY4S;(dT5S+ zl*aEF!4Fi|3fX?mJb9!W&e`_U=bo$D&!~?tw0q~`<0AjCEIv9FSaZCCByZc#-0}-I za-976 z2kO#0>hh2L;SY?N2hqf5>F|YY;+#EnLmDWNJI@$BZ!w*>wElDAKms%s1CB-j{Xyio z4?GaZ3WeYcA=F9~wNyrJm2s=thSBqyp$k}71~Hfi51v*|6alkw=yH^_nq@3!_%jLC zqKmxY;mrkjOKI^$fXWW_gN%qtZ5&nWnxi9`SqjwB&oGtm_o)VDZ1m_-M$1XVG_zjxalUP0*0&139pY8>w$`+3UiNBUbcnwlQ&&th z)s9I}vs&mxCw{pdve*Jz?uO5($ScjH)gjPKD{N)}yWR<3>!hzVW0#va+Z~MU9^^?I zet!^u)Jb@@fVmxI@5b4N37!FhcMf(uMsQA0ZA-ZD6elvxbc{;f3rx$J$h0A}?TE~K zOqWUJG>L=TqQJ2vwkY==GQ(T4=q5M5O3yCAu8v7}I{uYToI4hzEXue`6Ld8vEbU>p zB4}47PFmwf>bOl6KT*dl;`Bbfs3Rv#MzNL z63dih9No~Z8Hu6HHQWhLuEhEq{$5#SD6qGa99@dKm8S1SMe8NTPKLV`VyuQ(TSd)I zUVc<))19lG*9yzM#Qjd;dQ!(qD&Iv@=&ava8V;tqgE>_=+w6)fA{ntO!wQ92?gZVM z<=8UJ<08p-&oq6{cV9Ct-^;e&iPnD>&;80>`dPgAt7PVR{Y+VVj~%H;!&MjXE)j^%(eDd21p(&IyqyRqE~;;;`o7bDI;vrU9L zmj+E_u%qXQ-g8XvIe4Ogn94&2%ix(Tey&X1$}qN4(#1G;!Y!VTDktK?#gJs=ls%Rc zOk~B)@z$1PuQsY~FDP41WsO(O!aJ?Fq@+E_1a~q*SwXxMU`r}oSj&hjId+B2BhkcJ zs+dTTle4@OdX&OXNEjhCH!k4@HJGm(5U+u#*9geV`pQahZN=+`iZ}JZhN@>by!jdk z{2EjLH4OGgBJf)p?g|G96cQ?#h&K#WH3j#AOM1yCRk8`SGGTVWi>Y}anGFEy?s~Yxl2YtJTy*JFzcTx&%1Y0}V(S>t#lDwTb z%K*hP&d@Cpju+_eb%A4A?3@wlr})-I`SD_-Wk&5i zue8g|tTQ4zjQGAFu4l(|Ot+iu_p@vcxydK>$25V0#-EdgN`lO(BAscB7v#QjlcmsT zDk`l(jm0MmWW<4@B5bYqFIb57D<(T(>4(+bOQ z&N(deO&RrbBiPEb*OI)AJaZ+>+bXfw%AD;OdowE7D)84&HOI+L%UPG>@|kTKJ=f}3 zSrfcaT5{d?LU**(8Vq+P@;%A4I-M3qGyG_RX^jd^S+V()c3foYPjTjZmgi1jdQjRP z#3y&Ml~262pV(7Bu~&Z(FTE44d?ru6qfOk=M{k(@p9GWd6yq1-xhwhLTWS9tbM%@% zS%%LPzzdh~nIvTXxyc4ACwX_9IP*pJe2BRimXG5iYoxK@FcS+fk zQ#Y5IUwMa;91FRYjeT}XKf$Lu*DnQW67wGDjWK<;?*uX)(;h<_c zsMkD9gM|E2jQa};QNzT2BcTFC0*Fim5edOU4v@iz2`TlBRGPHr1RfAJ460r=$*X%hiQ}D!Q6+Z1g|*m4Skj;to6t)w#Pwd{+yH8N1U%n{n`ncL zw_)cr^(d~FVi@{^bX=Y?HJ!E+dPDEPtvUmEbkgWu)q(D^Xx+s z!#LYBEz_;?4rU~lWv$i3wduqzyUb%2WC~)>hQPc|4{q^t^OVdHGqp!O)3Hm3)XWa+ z+$hi3v?)tt($k*Q^#t9Du(`u;PzF5mq+XId5*3dai6u#5pOf2U1*{^UQxdRpoeqi3 zq%s>@3WgSEKv?ZC4#tOnfsM(&?IE!L^OzaLdJL6(+To#RTV`mEgr6%&o zw4W&oarsG#Vh;)QA*L=#JUpXrpEAu4oWn58MfmFdo#?0JR@o*faDY{po75tTk6F~qgHbCo&S>^#+)-nNJDTfA@Eqp5CJV$c=uNQJwyK}{qh z&qc(kJkJ|pniG6?g6O`Xouts_6#np*=6K>bAI0`}!u2QC)ED96Ptwuv*>iW)xl_u@ zEp7TEbM!4~>P$3q!=C<5KJ}#7yj4t;IO8S4$R&3C3^{#DoGikZ3g`tlaK?!l@InW| zzao!4!6$O8^^$VNFPsT0`z`zl zCwtPY8FL9|lH#!vx5KM$i%Pm2+Ft)idt#tFuI|V@j{uc2-pos?#c3h2Oe3cGv?~!M zEh8nHxSNsC>z$ zz=hg**XX|Lir)12a=qbXpD)=T3b%$s&6%_~8RDfGp8Q=~7I@hj)Jr90Z_19S3`wQ{4_cv9?~DVNT;^9B0& z1#zOxp1!26o|6|-kQFa}$&XlxU?;rT(Kul$PTCCM)@<+z2VyipSO_3CGQ{NsX();v z384ma#EEO-)FpnRL|;rOW>VT7x1`m=?6&b*oZJq#WGK!b3yDVD(oV0iKh!pC@9%JT zwuHM|W8Ko2LQrlN6T=@g7L5hwZtll{bzN!rpN zeWDvX-9(=4r*1Z}_mnifl4=>?9gHdp|9=ktvb&W%%hN@_$31fKLS^@ zK}$cvACQX6xMY}?-NhAWDf^tTUM8LAfO!;Gk7LRvA@61sy^^+DlHPPIk0br0C%LJ} zF1pe|UNXt5ud?z_9pO(?(XVaUFSFD4ZPBNW`KL?i&B$^))qU=}K9240+qzE^)$J|+ z<4pFsd3x2+-qlo}2jX{K`BhJTH!)9pu8X?0F$#?a&Thxm>{^#@H#(MRu^OwIV-~DL(^qGJ2S#fd8 zd;jbHGV)-H&TQVL3LaaK zu_1h6agR;mb9-d2g%%dz!a@%N!E4Zex+ZaZ;pR)&jYi{)$NcCd%)F;_TBpbx>2_io6s`f&<6R+mbqvVAQ2LUq=Q}AKc zDXdn~7FFEtAT1W!q)NKf3?PrWH8HO+h90GHehTNMg5p%@pc&q6dQO@aUdyeY1`Jco zHUMn{+|b0#!?amc-`c`J3IbyD1CP!{B$P%yf8e@w4WD}>xuHimGa?2cQcgS4kb5NC!goy zt1J2KnEyBwJ$5zkI*R+LY~I&i3Jk-Jv)2xk=APA7p1U(sXXV^eyVUmPmfplXzOZ#} z3d0ZP){SIzsUEyjG~NmNpM{ejq_Z38>`^sZC|Y--;-xCT6gAJ(jazBqN>jR%$3Dua zzl)QegrQ65}NX(!I z2j%?-$8SZxQurip{Hnpgk13H#Ub%=)%LfT51Z(_)66|D`;lLKzr!sy ztJC%D<#FV27Zt>n&{pUvK z%m7{($)z(g^$<7i$hi-gS{)Zo*PY97>2=&dmXALDk6!K17W+HB^@G)TWl>)%HP>dz zl}YuWRn7|XzEVDsi7%C^N1ggYubN0rQ=VcWTYLHT+1?k2hffX;zC1kr`f&4ihkJh% z@4gVMzY?u~tyz1f*g4W}yyhQn2zOsdj$Ro=Peq~%#rAX4)>GNx_bSPT{PeX$zG;zc z8BIHO+YV@bf$G)?)dnEj0*t%3anEHCg38UHc;Bx&wJG)>BhPP0NZTxQCvB0Z{bKuJcVOhl4Eq!gs2yn+-a&BBMxptS7}bgbH{UtNwlMwsd>ZW^TR z9YWP7H5V!OS<*I3dM+^gEaYghx_VmEpoI!f(JTtPm80{%;Hsye6$-t!aoH2kr`nsU z)#Q&;eK5244tLlHT)&8a${j0nE-aGr* zJNant{p=e2)pPN0(Ck0{m!NRn??W5ZTn!fKB`PhrS+Xv zaibB89m=UjvvA4JP4b>rcPAEKD^*L8VWKu&sl}I;t@UqSAAI$4@1J%Lf4{Z<_0HxW z`Fr0U9egJ~eIY!0a>{$E*xyoZt|`}F>NdXDh`!TGzZ9K56C6C(@SZCUp9xQ%DD+=y zjZZb!*9Of_(0LqmZ~4vp5ydM;e;m>AgF2yCvuhRZS)`jf*`~v~=QaxbHj&pU03E_e zNJn{fs9%fwv=O(3LL4wI2O|P7APg5H~bAZ@1m zyF8QLj#Sf;_P%d_I5%GR)z>rWhjZNzZPmwt^!-f!X<)oQw=ZY5_qWD}iT-h-dhDCt z4~@Sx)jzBxqNBU+ST0(c#hHG*RP?60;hnK`XJ>Cc>7lVPH+L@8^?|9~llP{k`h&4J zH#V1s@r``&DDK=S&gSyPE&qJ6H@Z5QJsdS=+xgi^_Ijr@KP=x0vJWceBaitgC|sSC zZxz`)UhcE7_^TrJ-(~dwEl&SG^1^>Vt^7m8{<|^ti?#4Kd-1cb`Zs;^S6lDr;O!%@ zeCJwxa^L-cT>XMhe)0_N&Ew^7w~6k(*K~f;wLZ&xKdoTNIKDNU-HR?h2+uzWx=VTg zgKY2vzy67rxjSus-f4Z_YyHZr{;Ra}-}%LVm&X5xoc%=*|I117!$IydKlOvCdUsm9 zmp6V=wmu)`?hfNOM~Qd*!lSToahez&r$)laM2O!WBtP>~m;2;&16ypTyX)lHY2xlM z@$-7((~I$8Uj;P7{QTTdn1 z-)T0!SMTg8_Fot_x0J_Ebc$zs$u}DLA4RG^$%RjOC(jk?Z$;AYWUf~R$4jkd+hyJN znNI=h>xf~~rQN~o{D@)Or`&b$_guntpK2qhKZ#g&0=^T%BVb&|aX=26^{`hD`OTzP z3PoHIpAIGzc$klPq)Q&Pur5=HnYEIFwNY1OWv-JKj!|PT>%kt^CtUvDxXC?Ktr@tTSuZN21*l@8> zFIN5kOnlKhS@vZ=7PX&7ipLrM>PmTYuf1F9KR#%0ZtXV{?Zch)@lyMFu6#VVEqbbp zmg}ZvTDDaEwy`xf`EL6E)M zFa9bnd_3-a<~9Gjxc3in>$9ZztEBqVQT6(;dCRN)qO9NXY72hz(?R?8xb(wz{O+)N zx!?G-8@~|HO&->jfPGPTddU9Br*HV&n3ghz^ub#i&dj9g&+h<>GJbALd_J_UoKkOd;@kH+xm|qzTFJ!hicGp{*{jJBd2D^@(rUQp_*Y4T$8IFST zBS0+jt54kO1HVDwbsU1h9Sjn%VPzbYC154yGNEoO8nn`WHv*c%9tQ#0f~ zIA9Ei%*n8}<`vfgc{`-7`OH1iQ6~x+(wL7~N|dz`cX3%OmvdBe#s;S;Q0fL@>BKDk zf^3nJ&hnypU4Gsajw|F6`seo1*fhJ53K!bJrF<|^4=z^Nb8>cf)Lm}3E_a4^ z+wFIU?d4JZf|pqe5|8`kp9IAp_>~XB@}nmI%TemrL*{=8Gym67<^S3){<^o{yH%?fM}|_me}bH! zpclf_^-=kJr+#@*ygsg+9TzS(*z=9d=e5+&8`P)m_>VjEr!D5M8}R=)f&O~r{mAp( zYP{Dff#|{+y7KvE9_y_|b8panFi1W+ zB#%Dny;pb!>MnwYiBs0ME5|x%*CJ@@v{kugB-dRi^;3~~D$)!k+OF0-G`xPf_xUusX*wZgY@)eD7mSI>K)JbfZpe{E2F zWzc?Q)P5sTztkBv46Zkpz*~oVJ#63bIV3I{-)=Yp^d~`$08xtou^7<`9fm!~b`r6l zhW#QG5>lXs3i4>56*cK%VI={}F_$wGu@Z& z@mW&ZPHC^|>S@6=7|NID+T|I4G_Z`u_M47mIx^n3ls}H7?+5ambM?*Ac>hlKX<`2H zM)TvX{quYM?Tuvqpue7Lf4EU!Ewq!NVl+`+3Y4?)$|>BPsgqm!Yu!M#V(nKwqn^Fn z(|69TjWhRI&(OM7H?QTjD`n~Sq%x5V?~jJ#lg{N%_iDGc*s4$0CpT}qi?#Z4tFk;v z|FD~T*e=~D%h&SO!%6O5mi}~-_}e!3zxJtr-(vp0$^Avr{Z~cz7hU}aYw}-JxnJz9 zzd9QK!`t`(U%n5HK0BsAK(`N`vrFjm1{i&?&pz4fKWj#p#@2^%UXJRW~ zD!cD3`ClZpdw%AZ?ZW%#nZ<5-xskg)Za(tzH#?K}hs_@j$B(=1PY0Eoqt?xOWw~BH zKOA0e&SrZzlg-)nVQ02kS?skwt_H!I!UI1&J)q`$;R|7AzLmIKLEUNnT3EQ*Dc|ka zhP#Qgoy`0=_tP%BDuKVgN&Mq5^^e!F&wI%Gz0fa*fgi>AwJtI@AUD$RLPspz(0M3) zV+_65BTEB0^N}+PdE;WP-M|HeE$z^`-*e$|y>lopL)x2w`Vp2c1A;|BGIE*vR`pD8 zXc)y)6K`Y^jU|SW#x#;^h9}mk(0Z+O_N3~bdUtL8&8xNTjX&(Z{O7e-|FU)RWKH^f z{q)P-o!^Of{;c18qdnP`$Xj~x&MXZvbo`)FsU>6T?2t8&Q=#s#Y7zb2{OO1x)h|dzU+LK-b zjVPloC+M-mupWi=I3U5iO4McwxgB^ALPJ0*h9wz*hQe9MS;XB{)Lu+mOG!^HVJqj2 zje&>Z;#8@ zd-e0v?!|t7AuNu0g$r@_LNJ_ebZ2j>%U9{g_0*3qbC0j{?*-LcX=R1kA5R>+E%Ru~Gl9 zUcBF{O^>;`2)o&jUF~FshxNsJ55ldo)#B-spU@Y2VU&22igC&oA~=% z>eo%=^QQmDgV2L8dasFIDg*Czp+_C`-b9`Q)NL5Kal$`X=y&GGwT8H}CEo=SOFw&Q zi`;pUE4%g5>0AK%N!T=l9!p-0r4a4%{6G zhaCvu1}TUJ!ijJYkGrz*NFH{SlkQa9Q6Q}KqAgz3vL#ch_ZsU8;-sN52{3TpU+N z>)Gj>_SNh1`DXIdPVW8N!g3|T2jx$K!pB4MlZ^Z%rv82q{|AryE06jhPyDQ9KU=ta zJNp-9_3!TLkH+B#p!I`q`gi~3&!Nec=khLaG4-z${%We9Tsm6U*2Y9#n>xBf_u$Oh z8>@?LZU0K&cr@ic2)KuX+Qnw+(|YmUcI9%d_4uZ7wbgxhd^TEd+`TwkzB!w3bjF9{ z{qH&^;tB$9EU9~a?4t*}^Tcifu?G;p^G81fofC)U9Pti7{TXQJ5V~+r$?E z{VXJETU9fwvTIY+6ryt@Z=pNwo+=hn^SQ!u!`I)6)#sAq@4tNe;?L`EzuMXR)9aJp zukHW-?an_P^S?aSe6go^b}WA-)V@(@UKmWz)Y@-!vS&`^TN7``tT=G1HY}Pwy>3%u zdSmjvbO+X4#(k&p&~4gt*p5Ti^^kKfj(l+j#%B zdHZ_sZnHgqJ)6AkoxkX=`uu!-I@(;0pU;rAX<>Gdx;;r;o|f*!>043Z>a_S_CwF(8`f$kJ9y9MYQ`ZO7!xs5r5C8QL{k$9f z*Q3Z!BJ@!myq5siD(tf?{evO-lPdLSBd%QVwH>?*;x|F^#z9}`$)y>+c7?A4!ArYu z>2?gTP$%lI(5^bFZ$^!^fVyXuo!K>0i+1D}k3-_AQ`xa9>vmOB$sbCE1D<>))?bLM zmpa>>(KJ)6|LKdD&;P)C`{ZEz>H6vKPNe_!;P|CX_=>OiQYL>cQ+%&duWRIM2Kjde z(QBDy{5^Q}Yo+NgNxlDxKPcQw{EEBc)+_{wJ556Sm}>bF7jc0jiqvc5(mE9}{h zxQ!ev-q2#S4&1G)ozs9qQ zalvY)RsFnd=#+%*!oeUZ>~Z2jT+t|L#~DeprEb*pP0l#WNzdEbX~**MT>q(Sxf$6m zdZve-=6Yeg7^$y^md6Lv^+erU8VBc&>R39RnTO}TPRlkZy19luUvjf;YpvpMR($!U zp<4+QE7n2JJsmmwGk0UAZ7kI3r7SZRRxYH~tCPw(ztGt#&9}>EN2^X-xI9jeUKA&< z%JZH4?W@#uEB$UK@tzm?X^;8~Kl+m}{pld~@ih8r<)p`%dpUlq%71jkuN3+Bmedcf z^50CQ54Q0~|M}0s`CozlyTI_ub#?6=&%Mhl-=b;j59E`!ay&4Wt}XS2rZSZmhMLAu zSLn-XLrLLGP`lj9k53cVN5z}n*4;+o!`sI7TIu53$@%lnV!b+i)#$EuF5V1h-wI}L zre`mfov&}szPYTgU3GRQ3vp}29}Ko@=Ys0xVdYv>y*R91^11_AWqeRxZs%`TPH~)B zY^KI*@r$ka?N;LMBz}GnyV@o1Mc7ZW=r0Q7qaeH#MQ&v1Pg?S$CjRJPKN=%9R(2jF zJ~RZAlonlzV6^H8Agi%c_(XDAO$bi60u?|u1X_p7h?ufE*lKR=Ls%NKns zP`u^wpJ`5>NCj`?ytn#;7mA}N%B`33LfvJ0#xI6 zz1QJ^{0_up^4UW^cgSfagAO#{1A|BaMzMG(k_n&$h$fH#&VeKs;z+DW1WGASG94ik zFcXi&SQklo(iv~I9LQ#Uy^5n(wF=|zS;BUeaLqH?PF>Kh3j1mPFn%;k9-L*wotnDc z(Uhw4dR5&jtIkW3+oIvIulk`U{WuVQ?1-+%hH2k5KQm8y&gs~)yz!phxY}2N>e$j< zSQ=Bupab+uo^r*NYqs%nk=oT{-%#}5Et1P_JRDZIxKe#&|+^swN__J&DtF80s>EF8N_kn)j z-fwHi1^HP`Iv6Wjb6Im>%G5R0j-=7jHfGZHR8$)5WY6~4i(_`Vn|atQ-#x3`d|NvI zE`Rf^bn&z`cvBy}Y%HEO&%Uf(d@-JUH=TWT+5h^s^WviV`kFf!RZqqvLBG3SpPv*K zC(R3S`}SZoId1fL)k{Hrxu2a2vh(A_@-TP4m6{wBriZzKFgX)OFD20{S@M&W{b)+O z7c+O_>_U~ew&RaJ`reUxZ%fS0xl3>2F@W4z(JLo3vtd&!G4@9;Lct}7EG?e7(?5Z& zJ-@vXbaZU0fuYvSsynt@qzVU|yv+JV(Flxjz6P1WFRi@jah z_E%3g|L~gs?2Yi%Q{L_q>ESDxa$O|fHL0GPbZ^wsXFSQ8Q1FeK|E=Ws8`H^4gXo39 z@OvHq3n~APa@ki7!Lt?4;2?(?fFoDKT_TF zo_5ZYE1D8DOTOXGa<*K-R%xlqMPIjO8+Lq+ zk+s|mwF;irz*{-jH^<`qxw1A~(f(2EcD*+{EiH~qv+elpY3%$UyEx!3d6|o&)D1ZO0yX@t^tG53=;Vj(cZMe~{1*zpa!ge$uyo^;UjzoPBnl z-+B6v*5P&N?7=!(ddFAxZq?A~%V!<&xFhM!6}67G(zFytvT{>Z>4>UbNp`x)UaYYX zo8$_*<}Zr#Z@8;xrS6OR{B^7KO=b3`)p*+Lf8A())j#`w(s*{+dbyl@d)`?)FT9=S zw&v~iUQ5_(?G?+ST<@qn-D;lkD#Me^+tz94ImLl$ahv^?Dmpj}~f zn7Pp~4>s!FMt?RWS0%92;5R1jy(zZvAn$FlJ6H1B9ed|UUIO$af($`y5n?7m;5GuJiZVt}PzH!i%_p3W*ZQ5a}+ANiTzU8xJJ=U^a+VtxOe*H=ThBil6=jt0B z1BGd1^mhvOF3(>Uy?wfI^xekp+Rnk77pF(-D*mQM{8p#fRZE|%bl>YmUyB4^iKTy# z3;$>l|G_NyRw?>IC;eKb`ckR<(%^XJw7qh>*6q$$4&RpB{yJn|^EmfB&I%aV3c|-2 zu#bBV;_wL>;3I$zjyMUgnSiVbpBDw7u-lJ%J$TR?c35zmC1B8dtTwwl7<2{#dJkj) zK_^AH@f?6;yrDegW$_S_B#<J>*^Xgf|1xb%%FT zmM_}M^M&zdDgS(?{xDHr44s#A$MW3P@B8~LXQSb)H3RjMzngKCine^!o~&tzq9vI& zW^;yg)5Hp#)v7aB2CG$HzYI4T{%Q-Vj+~{Yy53QA=e*M8UT3+{zum6SH;R{s>AREI z&362wfVr2WAH>Y1lDp6)ujSE&lD_8=vpw!|zw)q`|9Fu4SyZ`~RF*B*V%dQmEGH7l!Lcp7V=iCvT*_~%D<4A8B7%gSHwQbjx{pOm>opo7L0cSB}&jE@8 zWZ?X&y2sAh+y$e(Z3=cYk)|kE;XA5wUqyWK>doehx9i*MTgR{Ydwa_51G(bRs@M}5 z4^*UQC3+^2{a2Ol3$6Z{TJ)twy=Kl5+6RNX5&s70I;0)@xc!)bcGG|e30fGZf^eu34mag8uiz$R22i&n=`rFi3v9E6 zoKC=G0BmkdYw6nh-few z0chMxGoCyg$f4FeY3eez8l#!v&SBCxN~y=0(_us1uF585@p)Bp){zP;CzFPx*F2ic zcIFeoymETeIvsWQ&$^0v|8#aOez%moAE>SehMS>leid8{-1C`#TKD#c&Pp0CvEf$U zn=J%W6)RIx=j+x)K~EJtxtgn-Gjy`9Vkgk3`_gToSu>~WmP*}U>KM7fY2jMXxRsW# zcY3$`#fOvX#R)e(AR!SvmE2gGy%VOc<@DoD?qNN%JSbe7 zGWSyM2S@2vk-V4H?zQcArs~3)esq=>-r+dV9NN1><78p0Pc5yfw%5_k=B9aHRU6y5 z3p+c|aCKvDC`|W{>mzyN`k-^Mle*kbEH_f`zGtsr;>#!W`Acs2qR`u@*Pmo+e~#zA zEpY!bOaGx$`KmJhvORk`m_MC&Ud-BGUsTrS&AobSr&u`c<<^_EwR&T}TU~E-cDU(Q zsj<&i`1#IZv$J379>m8R#o0-&E6WO`t%0G^*Oo^9@-$eO_)3>nW*DNUj`X=LxeSmC zKYQUOAH&QC8~qRn-vCTM0ChdlSpc5-A``Q3>UH+?!J*kaG@1rhP06U^ES8$rUUE2c zCP&3($cD5nP?`_xN?t?GpzB&gJ$qnaataJ!OAi$^zLMNlksiEwvAywnW9|9z=}YnM z_lkoZqi|azuqa3 z>ub0DiOu%XYkKJk?AtwiF3TZqImYZeVe3{b$WM5VaLWm8*2K;7tXW=l7&)Ug;q^v5 zLDFu=jfSXE7P4s}mD#N{_$-#F$sEwQgE|;@22c-}bomQmknu)n0AU#jFVS?Cic~P7 z7>#BbBmpGiAv)+I{9X=raS@F(utXVE^Gw>L)p!-vKG!v*jDQh9qJnO}=16V-XH9wx^NyRgyr34%awOqo`*yrg&p}jjZuyVR{vW&jXOqGAm!ofPM$fOSZ+p${c6qN>*s3>Q_A76j ztv9X8cB!zN>F$;qhg?}vt;p-;-E{dVUfW4lr1iGGST%7ydt#!=k4=>;J2wj?#!$BJ zWc!ZHB2c&o^VdLf=3B{c{MJuA+UU6j8`!|19=S2#Qx`EY0|ULgZi3s6VAJO7SuAC% zGjDaW9!){7W6ipP$6m6y3r5l29y* zk>vzb$EZRkoTsQv4$LLkC`^NJG~{FPaEuJb2uB67WfP`yLR(Ck^J(KCryA$v?X0LX z5HAX+`r@k0V=M~kwv^%XF4?Fwq#?fMQ+-)CBI^yYt@bX;x>GJ6PTs<2Kr!(bz zpt)H3&w7FLx#w&MjEdF{2Mm&6C+El~Liwz>ln!Kz_Eg4OV#?2D`3q@r$?JDzof~oaVz+U(QM!DaxY$cv9ME$q^}&ceN~04Vai(VO z4D6+r9w_lk1O1aYd96Snd8s>D{6R_0mBo*`@~tXysa>UA2zA zS=SERo^HiCsr&jv?|7si4$QS{dFf0OyD%pD`t(v*9tkq<#p#cN+WWoI)mCP4oVni3 z-fnX9qgeZSs{M7j@-|WWbG-EjuJor-`m0I(Uk25$2K_&DhkqIh{xt8ux~e^0Hou=& zHd?vY8^=%^I)9h!`!PBoxxSqZ$CW!kIug?EyK+ zpG3VB>y2{}I)$S}0!=3YDiukwIF?877#5odpoxqUkJbq8R#Z!_S zqE<&$t*ZKE-LU2yHa(qDaD3*TT^gF_#`KLXd8LZa)Wo%cxiWGKReGt)embsxI;h-l zRvwQs%cJaQw{*UjKHJJQzE1X^=KEi#s^3+rf3D`9&dPtDRlZtuzn%)dxUPJ?%>D7A z@%5zhWL$XDt8a|6&(CtNs?C#9URtdR3k80zp=#EI<$}1~IIOi!+e2ZcwO^=;a}`ak zqUGv#u4vA;oLn!|sD>&nyqb#^a(KFlbHhk>5=~zESK)_lobbX1UTMi23x4CoFRkd@ z866tIh6?FvkeV2+s)Aj!wQ4kT9&^#^D(k#yt3By=R^9%#7pfV&En~222Wx6~O$XFX z;ieR>OI<@na3l=W)o-`Gh`??Fxa`g`x_Hbwgo)EirFM zzR$oL#LZo%HCao2v@eGqpa zWgW+PFRyOa=M18>qwoQv}!y$4`#K5G#Zas9#*ITu`wcdf<_PQ^+b$; z6y&9Yp#teElHMfk#o16ai2_6dOUA-P4#~tYmPTU~PBZZ!5@QH1>5nDhJQPS0x_n$& z;w<@$wpo&wio!uzGwGk4HIIj7!L%VB^yJ;CX3^m-`l4}NI6RXzJHk#&(Hg1l2g=8x z_`b<|9Bbb-`FCa2eM_-C*DVH~tBGUKvXz?7QPVd_+e(b1kg!)$#$nMvh+A55e=B85 zRMkw~8s{A0tOG6En2H;3fU$|CFp{Kt!g5EL86I|Kd-*#_`ca;~Kg^u-n7d=@K>(hg z#xCUeLPKAv=?gP_W{6&>*hf8fp$Pme!7p{#jUYJ_5cfRnlPr6$OFSA2@AUYMp1#tj z&s8g&NDnlfuCy~$cZY_4!`^NCR>IpFIVU4!XC^C+_2s!JwKOp2%G|v%d2t%MR;C_~ zGw=6`7rWWzCVPESoU9c_Z%du$#rBuQ&UfkjpF7R3`_1S5(pRnQlk?VB?;79UwZ51) zzqo0Af7STIb@uhV`C?LeHY-1^6n1N6exYz&sz|wvrkIyyTKsrnr^+2RtH-_SUX491 zWaQ$kqMDth-$IbJbur2c`=lstm`+P~sxUb%W>vqkG}N*cqMJse2zb zaS`Vr(e))p%4k!8HKpO6Dq6Fk1)H@fHD(mXqEXA5^{m$#Gug{tPth8vxLi4Hu&)oa zErEtMRIo;iLZl&eca)BX)m>5TY%11w`J4Mk>)ZTw!9HJdq?8<3WCsfMzDBvLH|{HR z>te;LQ_c2??kP|Bok;wx!u(95eQD7?G3Yk!mSdY~Pv_pW0>^;+B<$OQEbDR0o0x5b za351TQPe9SU3*#oNyV=yn-w{eBIc7Z0dv%3Pgt~3r^cr@ui8GUR!3!`ph^WR9DpI{ z^&o%`h}&HWkB9ZbS=3)dz;t{Sd?XshFcc3ntUFA(v2-|;!4L)qV>pb*NtC3~4CZ5_ z&J^R!<&_CWn@w8ttU8xd4_eYuPuA@VYfb5(E9eRp-I21<)3$rI$w1exX@*Vlu%I5* z)R%e1`?B)Ky7GsC;$|kg@5(M)@@ZE$Y3jyj##Y~6FZ(M^Z?9mRWL*PFHzrigoMlk; zc5~Kd!%?l6vMD*1(x6p4)3CCASA5`Qhw9{5QaC^5I-=}UP`W%!y;tUM6~!A>elAFz zox)d#q3JQO6oej3*oD=`m8WO9ucnEY-PD_L?yLLa zSJU#-v*LHx$>-PXA8(3(xG20Bm7etqZ%eKHYW;-G3bGkhBdx6$c#Yg9TivZ^_NqBq zi{aH`{04c_%$(-Rl3dlA%>?sBPq7jz6;ZZ{CM$j-6OLzsxqLWz1|=>D<_sr#P`Dc= zrwDQpjE;fic`(^=W!na(XNK!Cq@c#iHn?E)Hl*IN#1K;%Qc8Wwsl)9~O7BgZtreT4 zWDDhOzN+3)F#8*ZP+b$ss==(o%~{->>*WrA>sYpVB!7D%-V*HZ3wSE=q4s!3rrQ*% zH$~!IiDp+Q+TGN>J(0iK<*n^XU#N^<>*Y_ChPM{mhF32(Sx=nqL%&vlSdPPvlaPKl zrafc~l9XGNG9PmmA#LAg1EQ*%&-rDnOO`0FDw^6lNJ}<-aj9PJ#>yq(M3cgex8-MWl-ml>-QxNT*gW zhY3F!^%1O=VP!E!Ss)xS&R9z-^9o71DjZgY`LZ!Ts?~z&ia){VsDwM!uqJzUw(nus&h+K`C49_Xp2`X z?2!eR3V5ahCIWJ#j*p#@sU27t;9G6v!2vIo=&d?%ryyoJ>{0=}Q$;@rfzP7oM{(!} z19fG9-xJ)s+@L;@>)$%Xm~1RYrW}fuu!o9mvTX>9?qu0R2?Qq1Ubg(E=BYr;1me7 z0^kfwoO#njglt;!bqCth<8?J$Q2TOjsH}4qG>*Kb*{JLkt#@|$fgo_q;k|K!A%O(#z$-- z+%6|I+MG#J)E}o^Cu#UN1)S!Q1J2KjheafyMQmo;=0V-T|4l(ATJ0rtPTXq>SuJ6g z2Mi!s7z!ge9Y^C)5GOGLixGi1>5dUFiJ=iP#Q3px-P#oK9kx_xK6rEND1^|bUXt?FiM*>PjYi{ZX(96 zRN*@XawiJ@#EX31NdEXXefJ{s@T_|Nq&j%gY`!Vwwma-bFY&C$KJS;G42y5i>u)a# zudmaum*k%>$bXvP|8$o9VwQV$mioSv-RhNgiWzY?C#+Y+)%Gg+vJ@vT=2t~=oMjH$ z%x@*o%$v?Kx=vi(;}o5$t(y1LOP+QKY1*-(Ws&8jw|77d%a7S{mD>~uJcmlOdq>%DN`lD3}Y#CJB zs)K!=;N^k*HBYv=e<~0ucK2oLO7X5<^U5hd)R|7*`XdTY?NFWujmMya2U*3GS-@)f z8M`=c6tHe($)zee`FW3+3G48HoC(W(w93xQ81o{h-8!kaXO4weW?;g#bF}rh1dXBgmW2xfd~=- zlyd@vJIeZVu$!Xo`Ha0(H*hsoJg+O2)TyGTUb8hCzI;hjYH2!c!(^x&3iZ>j{AwV4 zEQ^<2@l{>T%&oSz+1B)`sye5u#iY}Wwbu2N8o^r8 zm1zRmN+?~j)QXN3=w_S7O3lVJ%yiF?t;^ZA5vcL0ArBhJ5{s3$+PGVF^1{H~>gh8H zH8gPNX1rqrFHOkEPAqldM`P%d1i4)0T<@OQ{7V<~-T>Xpfgg3yoiuc#1uyNsYdQSE zM&8(wD}VIb!jAN@zA!ZruoXSiH^$ngOhcVrC@Xi8(o|f&7E~|A$%!<-km5Hh>6X$D zJIo!QxH};}?lALb?8V#4*{kN++jjZuPU%gzvC&Gr9i*StQ%^_bR}=dCUV7)6{^o{# zdX9d175H73_}!%Vq{6N>@ZENNzn_=qSZSwz*y`}>C0Q}8t+JvtCuHKhJgdux#qES~ zM%!9hRf{!Mlhy*OFULGX*3>T{wJMg60WE6v?%@=Rrdu@AXW%m!DPhqH8O<;>7bNT6 zQr(`ac=3jZDVjo@-rlmn6{DTi8(5u=vFHeeC#H8%Qe)hziR;|7*&TP9k}gBkXvXXo z(qLK@0_w2m15nxq6wpn+XooM|-sHXAQ5x6l= zv}lvp?7C7wP1$UOOOII9px1!;tcl-F^*b4xEnx}ZhCsw=qFrXnXG6U%(i35VDCL21 z*hiw?1PaRB4^{%GZRi4*W!>0VACA+BdZ@cn$ zUFmIEG0ExrImKl`bI~x2vx-?xdRA4=TB1?gIO>_YbyY2^ZZy@+wyj!m7i-R9+0`uA zS03GLDY>?_&@rT1hJ00;9ICjsA~xos9TC#uVMA$rCMT~<*gH+?R*_mN$g|VfkRKnL zn28P<>wumLU+Lbx8hB8mb8BE`LzhnA)`#2#ytj7iC#&bP6uwu0@3pQ=d*D*J5) zFEZB9Q#I3(#arrl+sJh^sev*!GG+$S!c4*TM6rRqFqWq;h3un*y*f_a^Qp&8aIpj5 z>@yde$?3Dy_+@VTDm7cnbieC#zVFo6>#4O~Vq-||wvule>9t;LXA*rrBc5GHznBF6 zWdwiKq`#_#zbq0jJFz#N)Jdasm@o3{zs*^7yCkaSRY}Sai|Q%Fmc{i2MA3=pyHQh( zRTXJ{F{Ww6t=*Vulyfz5K(UClWo{+7VW1DZ7!h+F+A2Y&Ib#J?yo| zf))~hm_WDy?i}(Cc)|m|Wb3VZjVI%ss!n-I;jT!q%Kxd5e!NI!eYdB#(IVuq#CY z@nj?eQ`tx&nTS$!lELdSrsQK9Bwj490^A1|w4d zTX7O4d$OP>>e`i)Cd>M4!_Jlcr8d-RTH8feqhvX6+h+sAeO+@`)4uE49vj++vg9J8 z>2s$SN$pKZc~uqOa3?pM__}sHE-R;FQ+Ft@6_kyxs$bW3de&CmRpP9JnzCAuRBDDs z)tH_rxSFWeQE_=mzO11dCyCxsq_fJT9Jo|QCo*cT!Y4{>EXO8da-@tbH2B1Z-Pi*Q zJGk&bQxCFGMdv2?>VIGKeHr$j`%F`P@J{1s7n{x|@D8No<|5oAu0gE%9o~KAkdO570kMeSe;le`<#R zSOve!V$VzH!H_=e634mZb~7cZr-WHf#nI*@CQIXrEUieO_ENx9_DXuBw1eoHNm~kX zmPuzNq3z_H#e}1kf;t#dj|K_^RY)<(T$CwB(s7VUpec&TC-4Fb$5|+sgJP`PU-E`3 zK2H`2x4hnh$5k*m7(K+8Jz=#oBDKa0cG&0)o7|vUg*mh#gEInIBR)+CPy(1G6855z zNHVy8pnA=h?j38kHnpd3bq9x{-6OtuSA2SWAlf_7og8Zqcjc!?V)43C_(mw&6CAGV zPIj%kZ&ar{rc=x0$lLxq#E zXbdCB1RhD}$Ye1V&BAzKDSrjzWtniFGILq^< z+{tZ9{E$1i$sRsr4zHWMS?^@pmGp)u?d}S674^QhT2(djj$&0=?@GHveyb&IRK=B^ ztU3^sYpQgapDXhdrPJgYC*{)Ndsu{y5&_NB$Juy}6Wo_DU$y*+qq_gy)HOAmGK!xz^0bs&1k{iV zWT#E;cZtIWd0I*AH}U;aOju276A1&6FjKTXgBeq>F&|adf~p3fYNDoA)R;#cW!hMe zS&NLL5c4&$NC$-*7*?c#QhHSa7{}7-43&>FT%0NviFg^N>J(eR$r1!7g1(sFpO5%b z0cRm#FSr76YY=g)aWEgKO0uzWMN`;tgIK=|75<(SA zak3Ln6mV#SBpP746N1YjqG!Pi00%($zoAIZ4sm`m;{+0Z2qkGC%#t{bqj>^ne6gZ~ zteEhGl}-ku8E=)fmkQoW%af@A{eHMN3Xj{NY1T32>=VW_&&%&~`U_UxW%n<#(vLa8 zc~bJOcr;20mbueWUC}RUdL4c{FI=_yZo`^xnc12yQ;=tBf^0!nt7_{VL#1WpD$+t# zlWu5g^}SR<7Ox*u<$bhsinLF_i4i-KfoB$EF2EMj*hmImIg#@K^58*k{ooKr$9CeK z9lX_8@70!DgYg2g-dG%GKHH-cTq53Ez<=%muPvT=0GWEhu?xAdyB7}f#!p{*!d)HS z6({F9dZ>(bl+l`m?jDgte&+fxz2N7r_vkr4G2O)GN7(QfZ>?v$uT#^f#BiIOY{Qx7 z*~C*e^*WW=Yd3a=xvfrPqgXoXP@CP{_e1RIB=Pkn`iCX*U(TU#tI!|MB2Vhj`Uu~y zldlHYMv*)KNkF#0C@|}V^nNNS#$kOTYUE%?8dj8Wc_pOG!m=i$EtA#)p)JOYO*YU& zeRalNCPO(Gs8Eq|7^$W`H7Zms(B)XFO(eNwyns{L3{%O|#T=RCNS1+UCP3m4nL)kD zpsVNwih#f1_0ak-W^v$d59)*<3rMQXA(K6>He(^Z6V!P?Ti71}NIR7bAF<9d7#}su^h`y#}fU~iiP+>!7lG)UvYA1RLL|-vF7Mh z%U5XiB9+r%uxqqBo6T&rcr0G0F=$lAb*hw7l`$xiHZ$(=Kt5m8;Pl&VAyX*gT-B&2 z;iLqTvvY(NPQw#$l8UQH&F$El4gv7Nc~9h7uK& ztYguB5}%~WDV}PCiKdNd*@=n+j#+Wi1*cbkpr4F}sR+S>WDJes2ti@FN`S6fiIgir zTZp)~z=kTNaJd3yJN`l=+^hx$IbbEZ6Uwt7t+SZwiqMTP{v>;PS2}p8h|lZt%e;DC z687UKeNHlFHRY_llvS+6w%9OMnyysVSgsm!ZB?=$&*d~6rzmGt9ahyWI&vjNzR8Of zgj8;y;skX4m>C?S9Zh&_##-ud+d$65%vgz?S^QI{f8h1aJno4Xy09`!b@*Q4xiNY# zUDl6o^93Bb458m4}eOXVf z_X^v!@>VOqQ7Ww0xtBBM?Gk!<2L5>*{KFaWe+wQSUyB}`37UdPlO(v^=n>vX6ab=MGIIT6W*!4eGj z(Lgul>y-WV65Y?S-58x^h*TI#5qLd|l{qHC#c?7=U=WkS*c3>oeGn6jR$#pBhN_NG z${fOMKE&w>Y8;@-1Zpje+8fo{Ljhj^u@Imm9))QfNJP=Be?#cllPLH2N|{KlJ3Z0w z^CVkh{)S4uC)XTGt@|qFu}mQ_SospZLN1n`sAR_ut->Z2spLl%iPR`j7%Vcq*O@Oy-^MO&&_ zXQg0Cao%LXRLsc|DS4`8ujDj&PFYB*S=N|s>04z(tFFqA1=;)wm)ybX!dP{ODk{Sr zWvDAgD_WqbLh3@KA;CHdpys#rL(ab6IniThPWna+{N9$4IG7HZ_gn?}4ZMn+OHuS4<*ye-aF`NV8D*I&zx zj|$_%m5k#z$B7GRs&<+!Z?fe#cy}A^Z3WBQ6uU=pdu(bu&%SBKUlg*t<;G@?dpcsC z4k9U_}v74*#Vx`gD<P@ib!0-0e?Yv*b7 zJgZUYG0IH_wLvTrC{Fnfp2)8gI5l#UQD#+Y-DaiJZ3x>%kXD2$cu|8QV%LENXGkBU zG>(wm1nNzoCV-m*uo{kxn0aFz+K4Q2Dlv@PLJ#V7qO=iGYI>04DEE^=42$CRz z$q1B;hNDR`!X?2X2V@IGAxWfG4n_Oev^zn#**HX{J((()?KrubH=A%&W1%MP86d_X zrI>}~3q~-AOFIe4SwVYVl1&Pyjm&9<5tcIICN1scwDp2BS2dMV_Eb@yFRAMV6PGc^ z|ve)9NkOvt@6@~EfY*}}^}4C8_g7a)8qHDAJ4uYf)b|8RX~?OCyOm zUWtWs2{=!Lt1OZsA-3Ql%7#Qy%g`OzQ~F3g_);A`nZ2 zljU%#M64Y`!h^uE)T&mgEGngrr`L;DeO)6wFl&Woxm0gg+f5>^QK>XaH3qq1#XdHJ zM6WTr3L3jh>C`IhX1OcqK)rUaOHLZJDT4^{T0m!ja2aw2OI+&;stgg8BcO-;wn)f8 z111XAkbWhI8pD(wN?C!3jbiL{9P~4wj|#$JzaN2sAQ&|)#bsQIGjV>1$K-!1pts%k{Asmr{C0sC(w2dwVsVrR1#5SbX<71QR*rivS z9YU3XZ&WMH617byv&v*vz20n;8w_%VglE*8SassnafRNZvRV{+k39rv0gnbk6=Bqf z`dvZ4od~-Uel_CPqjneJwB<~8%w&q{-9a7bGlT(k3{_H)jPdH|pqhr980n0ndLV2I zM!-lgf+3Mr`U4o~^Ak`24tS!7KZC)AuqPJ<87dlM@Kg~`l!#ObsC0w%DwXbm+&Ell zgOy^qTnMKb4@tQR8o`(-Lj}E36Gzvr${&*73 zagjtK%EZD+%A3JFWx~^;9rd(*NE^#Bdo^ipB-JV0l!p~*grD^(aZrXvR2U^;Qc65$ zrxWHhqf4c2v7(JDn{uqOUKEr$S&7xh@}^SFR&FVC3SEWMRPr(|wXy&nUfl~f_UZ9X zsZo^ zgH2?(9`A25xuXcT8|F@;v0XaxI)*=q6EC>TekFdGMUD&bVG25EBz6bjM#H~dcWm^% z-_FcW=C1GFdw&1Ux7z;co%O#g41b>5zU|nbbVJ{_;r%vt(2bpx@SQp)XaxjS@U##Y zvxJz#v{h8t2}ws$d5u<;5m_r}ZX<>??y5lc93E&#(K-Y*spv2RH40F@fK*aohl1NQ zGLJ<%;aC;K%LH5u2jc+3hJ7g*Dbhdzvn6OlrshsG9C+D9#a#?$OUCp}#sa0>P$9%* zgV9U`jt5{GAz2@t0i$UbSwPDff_E6=Np)hG*{F3(v}U>3sWmy3Mz2{9>9vqV9@Ht_ zCZk^@^=id#xzsPSxug!W-RakP?IDjF08JQfq(a(g(2fI6(x;F5O-Zi<^SP5|OI{DB z)FIRiLRuVjB5pMv)W#rX%BRP114>#lh#N+1FklWcK_Y^=qhUB22E$1(O4?np%N+yY zJOC9*IDrRAEX0urS)y_ZB-a4AVK_5_3mrV!!eiML4n@)_XO8e?Xb(+>f4gHA3gb8h z;aLcv15^x(vRSN=BvYw4S%OpLXd)Sjrb(>Gq$)rn6DA5_lmPKeh>k+JgrypHv>4MQ zrpZO!ENad(CKi#vvvQJ9kx?T`DVew-nl&U?CstG@W0rK)oX;8Q zf->7tb4?l76s7aJM)fpblf|>AY>uDq^3(m(?BpO_If630L|MdUx7eBxDG2=;v9G0Y zcBJ@F6}izRZ>8+WNMGoPnH8VuLg$9a(17;cc*P2~?8r<<_Fd!{Ks#QjVguU-wC={5 z)@VT&&6~iYFj6{&QZg_hM_5&i)e|K}y2B&72h?yK8a)qHUq#rhNa7Gni<#7El6{j) zy+~lME971oJZ%C;mFRKS$16m)isV)se$@-Sy#Q9N{>8oX)gAogo%IhtI{xV|?*H?B z@Sm32KV0Zvw2j})yt^H8uZ|tmqer#yUJE=PMCDalSj82YxS+}KdI?!RA}mJ~C9kUN z*KlD|F<{O{tZl@VqkS#RUyVlw8LAuudpT&F0!JJ)VuI&kteXU81kw%#dWbuZyRtE7 z9`kW=SDElN(w=zUkj^`DWlNDTQ5jo~vL}+hXwgn*oQaYPE%?F(Fp>$PIXICDFcoV& z=PM-$?TJOhbIVnrTIrKoY%0Cq>JF5xCpo^-fR*{vdGGZ*dmqU z;A|^WsYla8n$F>Lh9Q`6HVUWmzEs?jin}8*(1&|NARb2JFhu%^BoeOR(F#YEIWkp3 zQ%Q#A7&f29^Kr18#&Q^0z)+e<5Dbw7lZ2m1nrf7*ftiY!Debpryw+G)&PLT3C`Awn z8a5_i6M>m%R346~F~E!>#wg(-Icqp!#WngI*sM_6Q$iuSweGSgcZ69qCiCmcXiNMhfcNlNQL+9;eiLd z)JJ-1x@nJB^jO16^mSy*!F0{xwl~nQB6Sm;w-5z4(ehIzZ#ZctdQS30A66E9ih4@}Awq6RaRe{}f@E{jBE+M>f z@F?p$s=_a)p(k_CcQePcOX!VUWir%53th(CJ;pnTdisQ`OSy{?S3YLolAdN}MVQ7y%29{~ z3vox1HD?mWa@LV6gz_9h6oXjGOmH?LX^SO%sjRI~u~#@(EeGoOuuAVyn|&5DYHSc+!z!B~#T6p>g9tkjT9K9Z@CncPZf zBPH6O$c57h7eIKBWEdbKQ5cV`QjHfPXf=U1(oCroXKEOcPmpvB|}p zz~FBo`jm(qrK6{1T#`(0)sy@ty4J$hn&>VE@Y4Rn3clAt*9WdwXTh&#o^L1qug}qM z7OpRTaDVj}`rRk*Kd)G5Vfkw8_~WhN>zQGFp*?Pk8E_H=79*QvOUP zlr6gAlrNqOl!}&O!QW1L3Z!ih3Q6@BTFw^V?t#b_oU;0oS!GL($@(^-&>14Il3V+@K%B9SN_ zB`7wHX4zP*o}jY~8%-5JEQMlmEKA|(7)@hXJc1^HXdZwo1d*hvh#vzjk)R>zchCW6 zlF@}J5d?@);3!NBnb0W(N{FxyW>oMBeuC;KC=215C@aO2l4wyKKf5zh+X++n21 zgQ~({U54c)XhKF%vP_(xt{)Z}Z}IL1R@fx#TX=pq(Kx`0$KlKoR@)Ee_TVBvSmMKN z36@jhd3|)~K*pxXRF4l7^h}P-#Ar)K_T+d;A1_!FO*>l!n4&vb2g#BP$@%E2C6Tpq zw1)}Vvy^uwCUn*WWwmrg6tBuKP7dcKL|sai_L zor8B$(d`n+Yrv;vVy}zu^!#g0>~%Bx#VGLAGVo8c@YhT4SGUgJKUn_d-t_wi^Rv0> z?X~au*!^Z^+3h$shQMweJ?#NUO=`QtoOF}2T1ME6$*PF11{(UXap3oiLf#RA)`CbS z;4O!N4&)i(&@h4yF}TA}vlw>4QlkQRg+n(Ouz*~55$8GRT|&?l3H6ikDCL@BwsY7q zAY9XoZJ5$G(q@kI))0FUaup~~Iqj?`>{SjZkzkq$Fhn4gu-B4cJs#pHsK~+6(}Y$Z z(_3ksJ*Nw-{?l=bldw1vra;VK2XrRfs}I>+UY9*Ab$A4Rm)r@PJ%}GhU3kDA3I-?y z!UC8dh+{5l74C326{lDJomhFgJwjRWuq=WpQ;;Ga(qWJ)2I?tVhXC$CScAl^WYn`# zkr)zW0$~J!VVqg*`h4X`q>fOPD3bAGEaT=7UnL6FW8NI;&az&dagb>wm4_<@e||Oa z5<#v6mEyiaHdsm9IT}ik5sHo>$yhv^j>Z|5PQd9HnJUo9QaTYQ(+N6F&=r8FkYE*O zI3UUrQ5?X+2p6R=Hp(){>bF2m6kz8p-0L&i%DH%{R1abnTa7=TD1bI}5Z=~uw+2(Gt z@)|DgV}+e4CyI8Cz^ugII0~0e;j$F1Ny0TruquaGgRg7}l$Fp(f{vBc880#uC!0L3 zC647S3}+`R&ceV;b>URWOH|BI+KqF1jP+8WD-U{$s6E357*>O176Op>M~;lRofO z$M?-O^5?Pl+gsP4F8tq3eP2ErpWWEsUWe8m1Fy!W^>h8nz<1aI)_YEV1K~G9$|-R? ziJi=1qES*%4hsjcz6Ls*QJ@uccY|;rg3iLe9vK}(kQNG@qp>kfTxQrwEOAzVXG#2; z1?P115wTyygG|e_AB2X=p+j3KbhIWcmK5N$J$pqYt14vncxWUaDjY++Zc3Lrq zEgbMgJx<6L^k}?pUBs;e5tpCxhhZcdi7*h1MMyl1$3h$t;Mm`m8!#AyL}GD!l(0r4 zDjJlhLh>A;Nnr*uYK~xf5U@r-JxV)h$`Of%nQ%Df4|g+O#p6i5_T_O3_~UikzlASOdsQBvG&p^Fm*igJJx`ch&f zE{ss8QAQF>No*ChCnpEX{BTQw%(Tdv0PV?BEd^b*F*RGE3T1mCu5D*ZZaQfR$Bl4A z6N_5&n2TG@SHI`CWmlLll{e5OQ#5OiB#l(b5zjc&8AE}V=aIugNR*4p(+LrsR1gJT zCNHcc<=KQdPpg_KaVsew5Qh`+RU3XfihS8dp4NaDL;sfx_>ULh@0Ni-oPkfzLfRr=^qpBdeq+zS!%Fm0Ga2geh_n?F@X;48>XUF1};T|rEs7S3pYr(nnFA5 z3U6q?JPIjk$VQl~1-&oj05cwc#_CM#3bfsdcwiLpgj_+tEd;ndkP-5G!DtZ0d<5;n zf4k@qr&tV);|ZEc(JOtVsb~yOAOMRwlei;A+S8;Vi5gZrS=x$YdJNPBF+Yl1$%Ktg z05}oC7(W~Up(qpz#zSZ#9F9lv1V%PPXc-|((Qs?!5^i?}0cseKB3#+Hv%vaT)ZECK zIL4k!1ZqVWn-3*wUXHa_aa(GI?-?Yv>g73_`EAW0m!u-u3>hnvY$ZeFR*nUe1rSd} z;1U|)f(#d>2?U9+CI{$EQT_x014)OQ@%j)z?S{-QPy$kF3>Sq`B8U-qaIx2O008`m zU*!WdK*Zn+>3yUEB2RJT$VbUS5dn^#Qmgzkhpvd!$VzotzAJSSU=%=Fl#B1;$>TUD z#4{&g=@4t5f;jQ1tMGkVbEFCtGq>#cTv5Y8_<7YT=Z8aJg8OKVS^vNV~)B|>F_Ty z+%U=WBywI1-(*AQuxpy|^-%9D2|Q5lD+;`2E%U5pk+)1D{!0WLlisPv(Dr(kVf__p zUqnMQ463YJUesO82Fr1{fq)9u(@kS#I@%!6poI#U@;+0^t&Le+tUbWm{EXAXxy)s| zGwF0v5JLI_WDxdSF}EWCT0@9GikUFN5~HkKERf225;-tJQ%sggr6V*O&5&3+3E{C- zD@PnGX=4x|5Bs@@jR`oIuz{d;D|kX;fh6XQQ!tBrQ4|joI85TWKSBUunjk4z9! zBI!%S;1rp_Nt#Z^V#!#hM5XglqO`*OM2sXDnhYnwa4ZC{V1%JUH0dTGC*}_l(NGxi z_;IfT@;F^#jgyjs5mkg%qO2&8 zl~jIONT%g9sg4su2;cK%Wk`C}nI++dXf-LQmNCgGiku=-R;21?uIniez*0AqC!`Rn_$NCuznuZ&b^M?D7Zv|ivZ9Hgd0Jq@!Pp0s2&HaT%^mc zK#S>OlwD4{Elk)R^Qj6!UD0o6Y>rd_Oa&ZCZ!j7F5}{xMg~Q<_>Yza{6b3Qal4BgP zv^iVUC*p3l?kgmNBnQ#)P^}QmWgsR-#c(*BphGm}qQd|i3gsg1Lat_Mr#7koV0(T*3kVc|36j(XM>Wd6VFe>j!mR!+71g(dI*&tAd1Gxau#)Hj7xJH3> zBHD`Et0_YzXD^p+xq^qSxw%$^E%{4iD9+kp9H66ShW5syQ6$bpi3F3N$#jzBl5CMd zs02wf(KrfcU?2kkB#JRnXJVzyZWw`_pvU0~`rQEHf>ECr(>h`rIHrOUMrTG4NQuFO zEQB5ef_w-yMgTdAYcWg=;u45bIiO=O%n$kH04ayjO(3#sfsfpYBX?BoLfy{oix{qe|9nC|3@f7AXU`psu$|9r`;S@whf~I(JMu;-v7%Rss za;~aM)C{E+mY3wks;OSp*2?B)+g8uGGpn~G;Yvf!8tMCOijuYp8R9?(7V(D(HO81D ztb-&S4DBQcTM99yQ9~9}60nd1cvw`JPN*1Im_YbBOkTkbn_*!I+$jeS+JTc%cz;Oq zhmoDL=RihDSqm5=~Gm9f+nv;3~mf(47i7@}P(H`PhJ&irUj*M~rgd;Z>!0XfTWgA%Mh? zFz%r;0X7H6N@zS4#BvbSK!S}pSV{WZ@jx33wBw!zYp>+YEzVS{1xkfLCJQIH5Swu) z7!MWmggF}$b4Al&m|F zkI1TsNgrdJIFdPyWaME^on%g__(7W6rxMacR#Ht`$}!uD_;Q>jRdH0y#xCcqQz35xcVL7qiu;mOkfc{b-4nrFD5ys~<~SfDVF?~o z#Suv|BBe-03YE7gMKf}EMjZA+TXp=njjl>S*b42R18e8to5#@BJN(rxy!8maxQ(pM zJR4VmH*@FnEBp41Yhz(Lyl@}f1`g()^-FNA=RIf!ciRMSk`xL^{v<3L;hHY3DHXNV zsxQy6>6FK^plXj@6nHfo*w17po7;KG^RtB zxNkuqmjrc2#{=r5Ta*SBMV~!}IN~95$sI_z-332fz(QOAi=kLJN+u#P!jq2snWQzB z^j9+OY#FNM0-1)7?%LuR4^x9mX>Y9(W#TKYA<{`?#WcU2*vT?jKEjaxCleeQ-~%@0j>;ld5|iavy?p%3t(92tMR)Yji9IUQ140`l z420w%LgZz(0csy31R?YgBV?iELAY}0O$wc~5R4yE`O`?6hsI7oO+ z1ZW0GB?;IHVP7h2W&Fl?*hF}(E5}bdrJ0DBfq6yfv=rRWhow}2UkZ!*z){C9o`4%w zaJNP7jgZ|jusQJ@O?@w>;Io_XS2y6=qksF>^WuYJec{|0c%NRlo?JS%E}XA#z57es z+NJmSJajnr?w$LOy0M+r4_QE}b3$~^DEf%H$*EgO^MJBWGDs~3wd3R{#dKM`m5Sxl zFo!~YF4`BiN-=v5=+G43=!dC?o7&?in%hJE5||{2Xo~hSq8Bd7%zuoHIOTi z2?oLA2$jVWxmY|O1+xIfhR{qfiur;l;%3kgjRH(GRDyj4cO>RRS!V?Gtg;B<5q}(8 zl}!MNKoJ_ou#_*Faif$A2oI5Ss(>3cwUYNivuy(#b{&?cqc(93LT(21Ya~oF##{KbQmjQI|6U2g7gx z3Ap{{5a{q@rYPV=?GS2kL}gY;t%=EuNtGU1?W@dTgCEv zJT0!WFggn=@gv*8@V156G7?87&#~Fgce#}&Qsam!eCUaTQ38a5K&4S!5hqj_E5>LM z7}EsfIxH=Y<1#8L3ga>)s*0gPJas~IdvR6>A$%wzq|H#=xu4lBQA7qJ;x3 zt7j4lJlv`GsONaqSHBo(4zKY)+%mtv)qnTF@aAXTckgY_@69hJ`e(PMSGUv;OT)7{ z^TWjSY^*))+E1qzVb^jxb)W4lvYAG@HOsbM^v+JNJ@`7R>HFzc*fCB8H^I=#lbQre z<6yGp^VUPYQYco5C+D%mD(+e*e9KT|QS=IHnt4e*jZ^!g`Z{ACNA#npt>?3ig3P7U zd}lRo0>s2mJp{FHefZXB9+_<$hkI@_P2Ad*-ZD1Y7H;3n;TyX{&0wM$idf*P6=`eX znn7E4>Yq?Mt#xN@&Zlij6|5Pe1&b}{3gj7I*`ACz(-C7ftw~0Vkzz0w_jsy)XWs1Y zx+5cdti?RVZy>ApMJ=9WIFa+a@(xSX=*=4)NuU1-NZfX#!=v%rJt?oPZ1)xH!I;Sr zw?spBhu7l_Mtm-(GaPc617V{tVh{Mu-jp*K_e2w3Z`l&ddjrX==OS-tMOC$ee$dhm z8oF-9)GujAF>SSJtCzJGbz3^A%hz=EvOdx9q#EH=DiqBnQjKV6^u&zuKsV?gTdWwE#|n@7$vkmmEECn1`2Mo%4RgV&DwB~^!o}vqa&d|N+5`X$sSYb>-+61Qc zP|g5si3hQ9hCs z8bbogBQeLIfJ+v0bKOpb*#p_)Vy|E23=91!AeQ6?gJ9N=ro(W|jfFCDZ$cE!%G`E1 z5QL*nkuNR^XP}}NEk@9Ui+K3ykI3S7anOTDOi0KoDOeRXTzsJhs+#kHS6Flj+orR!ky|th>T1PQCtDlD3pHnJ ze!XN~jI`hGt>0ZcUR=>X+*qI8>7IQuy#8Q5es6p6NPV|dzg&}l*x^SD>dhVYazlSN z)*Mf1-h$-sbfPOOd#UAZw8)hMy0eIO9@Ujzxi&FtyXrFPoBNUrUvliuFJ19jG%*ea z2jOtj@4pDdC&A<-;$OxSleBAAj?Bu2ZOkx^s>T8Hx@cVmEE~UN;9@2gW^dQrSS(8q zKGxAIgYMC9xbhl@X5&`loSIE5r(@&@&U}uYKQ?rQFMQ!{+Eran)`9qApoyVg+mD2_$ort*G@@^_jY@oOP8`rbI;NPdURGUnK2z=d8)LBR+7t z+ZumCAI@0fX;V7j3Pfztg596-x(ar0%5Q$+8i&~&_2@zlOW1BJ=|e?_KjC%-jUl%s zkesoG^- zr>Ptiuw_F%YgPsbqgUhbFp;o2=(T%HmY7Ku#+fYsw55WGI;}RwXp2kh^kAO2 z$Pp9kVqBe9iUuWEfUB_aF^>@O@fqKV&3|sR@oBqI?Su4AF=diIA&}h5CjvZWLS~A{ z?Jj{k$d5RLPLIUq6KEYuQwa5Y;b2@I@yTNWK{6`NMUZd`NCwbgjEIKifw07DlY7hp zr&H*(ATbXb(-Sch?lsd-n`TtA@>`ErN+@sc@MYF^#wzq?a?d&j)mBG0GD z$(H6m(%^$xzPF&)YVp<}dsG8ElDspj-n(@-cH71uT{vSSYkC+=FQe(XH{6ZHT9M#| z$JGpkCUNi77g#2p%XIKE@4rp@H#x^XMbDD-JZ9T^d@Gx4V`Nqq?ZU0yn9UnTeWfAZ znN?R#&9&2TrP5r|^h{+L*qj5aZ>V>!?A}p4(vAk|VOK34(J@mezO(2DPUX-+4phdH z!`9LVvj%(9>aJL96|*g;_aq&myr+`(=c-ITVaX+)N>f*iThf(?x9ah=EwO<%H8iJl zR3fF02CTk}J`lAALvB~n=1IC-MVBLL^?C!2u$A&zO+lln!FZ|;f85{>s2v{K`xLfM zqT%&996p~Z8Mb_S>e53w>$oDsIhB-P+2BQ@K#A9*p&4o^~X5;cyCq;h8?xFxxA1yr%Q#s7OTb z3Rvw?(r0_xFO9{mGso3W(BRP9BU)43%ETE%$wbF>OdPg`b6ng*S(M2TQ&;;z4QN2^1qhIxHyq&tn#_ zV1(kNC`HIih_sG#I{Krw<)H3hbx2Ohz^f_1Dl8e3tcjdA#ZJ~X)|KYjjQVCne1A>< z{$BkbpPA=xjeq>@J^E}1|N9E~mo51pm*9V1DPG)T-+n;8*{Yu16MwwL-;4~Wmm1)X zX0J7Zg+_8mORucZqZPa{<4Xs%XADzKXk~IQypfSDKJ&x}o=`6k9=pRGPpadKc0I0% z-M@B)Cce-x8(R4cml^XaP0d{PecXQI_1Jw~s~l6LCSNmD-Ii#lwjkfG^wc0;yS74Md@UP;}0vY-ah>}cCPU8iH5HC)qy zt=X~+7OwUxSZz6KEqiC^FZbQWc`!DPdPYv~(B!<(`X-u4OO>kVA{jDK)VPXTcZBi8 zEN-XW8PR(J_K4jO(CGXYd)jCYJJfNV*2_>4jP~IUtJ-a4Y%#>)R+%i2)dFfgTy=;= zJ0!SGLR+~i10Pd!aJ}4Ok*n2WO3NlJA~eWj+!DeoVq%~=AflpN#>EeKf4iD4;*o?S z5>HU98t4xqY z&V;44bV_4LsF{S(8rGV8CR5mB^w_O-pVenlc?x7iBaJ#_i6{_{NJ<_-(a1@XaGF6& z2B1NTb2z)86*i30isrOJo>euxJj$(LoDn7N6K4bC+17BfvL0^Kf4C&SS%Uxm6z`A3 zA8yet>ypn5&E|;;D3HZ|LvCgX2%@N4CgbGWUJ=i zYXw^hYpY@3S{3j0#HE3`)fqOlVQ;eUto|!sYUxPMT#2bSHg`EL%&v~!*KuSPCjZjm zS_FNakhhz3jRV?g*t7^}CsEDDX}Yz!FZH$^?U<+vD;2X-s_)g-jo!JisBbCFPVc%? zMc$$DYdCsCM&^dZP8GXWd)G#P%N}ameLYv)pqc53sll={*j66X$P#UNc$1Y-wc#mtZTSkBYtqfOs#7;qE4Em}7MU{f-!8+_KLM2|rE%uT zP=;`Y9lof|8`jyPYHRQ*H=oen;0!u#DTld;M@qE!iL5e4Tfpdvsr*Te%VSB$j8FEF z%Bp-mvo~QaC2f_MDU%9C0`6SQ-|)D~8EYx0t)EH*7_7e#vB*4EqfsA}kSoZUuX z(69`9!SO!OScj`i`$Z>`8Ad8wS7hW03ZMGN6r1RCLu0vVNp^p`J0)Jw1(LKcr;mp% zLBA^!G;Phtf=(_I0JILd#t)iIxWz4Je0+v#RZ?DrOsUZV z{N&tJ2-D|CZOlM9t=fP`_Zt-Xj8?0`?I6R9GHN0HRxs*96Cr8d$ZEMIH8YenDN0&# zmyvc!sHBzlXkJatE#mAEE@~^}3W7Bu&!?)h3+>U)@M@zyo}n*q6yNU@-|Zy-@=p4@ zOZfkMl>Xs^?047Df4i6d?vwI&AMpR}2KqlfLI3(A|J$F5A3i?K2=dhx{&K54+^TpV zOp=erCksaRUfJ4)ZEf_OQNN>YmyG$dCh%ypFHDi8F)#~y=2mCd9UOY2!(g%J%0B(` zT1HRL^+fNwmESS)Y9?OC#9`a%EfcMNt1++b+Pz9UM>IR7`A%! zdym9c%G^Sm+-Rd?I(Q(Ho>zcbO7KFi$cod)AeceZPfx4p@hH$C$O zhfZ(T=xM4WO^bWzh>qRSjx$mJZPC(liK$n}T7&8oY!_`)rR7SNEQzW*RMvzFCU1f= zXBbyN>+o585w$bI=tGRfZ?-3`hP2Ba(YxcgH%s}mv@b;k5_)Htc895O(h^9~;S`-M zGR3kXo6(j_j!M>6>gg@QrM0uNw-%&6Kd&BW9gXrExJ1J8g3-ZB~`RNzx|NV3yNfQX5Cf0HwF#q*qRB#0Udp z45HHklv!$G(039aGVZ?)GrPCp_Yq>U)&})&Hyi$7z z3dFh5GUzLywuJKOWr!&q0eQp>`Sfs_)}~N(7$K7?ZQ5W8YAL5y>4%ws6pLZ1G{mGx zCd;TZq}oH1 z25QMbCG5)iT|_=aqys?OlLAAWKfqWct$3vs4zaTx&DmlH52B-M$v5wyXE(gxUqiot zkpAmWvj6x|_P>3S{=Xij|K|tU|Na^I?_a@hK8nBjEPeJFe)Wksyd}TCF?|1yIsIr7 zzNdxvI(To#?`-6~jrwS%-x(cuhQMdN>#a5PpmyCFEtgLBCg4~)JsVGc>MTwy#i1e8 z^|>!R?y=uJvza?q!_Z|K>2!UaZDFP7Hfm;2u4&yuL2WT+{}lUL{hIPV5WYJ&_W{c7 z;lvg#&an87j$fHdGi`CCPc6L3O(50tr(L?0&V1uFkDQKO$bDh=)~&&dK=i^I8+ju& zd+0*tXy_w-TcYptOg({-xz@9^d-_gI-{>*@DwVC-N(0Zu)K%?kLmi{PdGZX>BHLsn@mRoVuOYFC*Gjlb)4yPe!!vYS&#~XY3qK z!rh^NyYtN!uHMkxU%86cw$j$s+&T(VUGmbFA5*!ts?Z}#U7~t{77ChT-kgh@LRnM7 zr3?AUxP{92(X@fGS(JW*(r09BTFOU0O#!XLVz8-F&o3em0EVspQpHCdIfguW%gjHcm9YmEewJAfX{S@Y-G;uW+S1SA>I7N~% z!k%U5nubYW#*p6nbfklRb6Q7-3c8p<7h=$iTAeh>iZoQwaZ@&7$BI|YNY*T_t7JtC zZ7Ss#6f{-CeNsM#;2AF5;))e1?`nAyy|Az2PL-!u@Yz;$a0S1-WdFz2={IxPzwPD! zv6cOgd-1=1=KuQ_;J-hx|KC4}|J$|jUv5O-z88M`MfCko@}qm%n``>pYxLwT@%l%U z{gYPsKp{64@E+IRYM2Lu=|-n{v>X3y(|^&p-s7GRWcafyx?-Gjb9~_S&yB^Qt~j=M zJH}AY>K)kv3!81Fb8alAy~RDjoi{qi9j)5X$_KfAi<{pnE%%_~0RRd>^1ssUA=51q z*aPu3n%qefw{T%W6jn&FXUdKWrJ<`f(Zq+L?808u>+YYV+3DDNgKM8}>-P0Lj%4PIU}XxgyrFq8F*fB!Or@)?jkTk;vDGo;pL${8tdF0(z?Q67!&$Sh zY>pR9si4-IVxDmNx8+NG=15qdbm`n-gFQewyr?gt3S`WYh%@;l3lVLystnW#f5YZ% zhWvd`v}?^2{oSmmQgg&EG?|7zSJoAp+IHK}E34aO6?cm=dkA)EIjkAwzXF`R;KF2U0OM-6I)|v=xi;ynLWET#%9Lq0I3z8nn+zQGuarE zkE!!%T{L3IM9E|nOa&AHEA27RRwJo5Ayy0Jcba@Qm(y*2GGl|rX))1HRBhGh?PiOa zwps|QMq;n4F->B&JQE#RRx? z!k|&&_DQ2YX)q*o#-v^^<_w?#m(Xn$dvJLI$DOFkMN5M^C;(kRqQ5~h_ z;zUra3`mp-jEt&GIi;qA;7KLw*69OICT3O#2z^qeOjEeuL4_Gbfr6Swq^1+KERupA ztJuXAov02;s~}b+gjHJHA;d$5T%hD!rC3A!3e2CNoC(F56YOjJ>{9V&E@fRxkLIV} zu1^1RA^Y8x^j~kG|Kq*rKOXsiyg&UPpU?i=!_mLpa)0>3{^s-9o7tny#Ye*Qk<@)O)4v$3UyO#YX3w9A@OvutQ5${0Ju4=( zQKvVK?2L-{=tzh5cWj}SA=o#&)+W==VOZOAS1Q|DuDw@i-;3#6kopAB?=kZS%zr8M z-pX7vsbdFvSFn3e1>Y0-TOvJyl0$vr!dU8Qt4k)oaunu)ibHc{aBXb*`>6BL>A!Tj z`@X=1FH`qAMn3z%Yww%9Ls#n3kegZK^GJSd&5kvVv87knHAk9Sg(y@_&9<(*u%w4f ztVIMX+NS`I$4veR<&LYoF@r1WiUcenyE7Kk$DHPfk4(mu;h-|%H|vPm7YW+kg40FPq@-C)EjuULNpV~`G^DNt(%DK*b!gA7&vpirdcL`qEMK|Cra z%3@VfhUFl21l5<7h73j*L{yT{r_iT-q5V&92t~n2M0IeAR;3C=oWiRnux7>UI`Ap{ zYZhgl6c1_nOss6mz%GgP30chm^>JijKo?5>1~^>tb1C}o*WkbY$ou#A$A5U_|LI=v`kmmLkNl&b&)J{Er$5RMZxyd^ zdCwn32Op&DcOd7H3qH!QM*#bU(*KNFKbqBlu~C0DX@A9?AFr}?Y>dwx&XL`<(3xg7{jJ*k*=W6`Y&WR(QL1}O*x!<-&xHM6VcGG$ zx7^TP;=6=wE7GyWJlAk!rcAGaz)G9$m@^}~&?QqteQoA$Fs_Zou{Sv$1D2bpZ5@nk zf|;E!If=OT5%)G4nA_Y7eRSx|FRi(2Yi;Q%EsTXGby33GZDqTLwwidOtFH?6*{U*8 z!YfTWU$Z1zx=5Bz6d89?7s)tML4Dk9E(FaIm&cj~Z1&s5PtVx#4z&UtQ`iuQbzZ)oRUjC)#G;SXnX6t*NzE_SeeVTG{Ra)d8CAK)HgjSQMo) zK)iybOQKj>7R|${I2cTdd@-5LDK-XVj9sX53snK3Ap+a|fGI@iLRPcaZnNqgK8?d^ z@wqKdtJ_LE)ttp7QfmQ>_=L+ zz+hxst!GXZ*QSK*YSLrD-4=!4tn|920S_AWD#H%7PX}AI0;f_O1EGWj34*#9U@VF? zd6BWmvlakd5ww;Gri~aIfTa#;GMJ%^X%b3ZPDv(ovLGpr;o^u2P2q|p0^~J#8N+Hc zRMknEYM`eg=b&nh;1f_$BdG?V?5dFk&A*g$uNCKya^8mE?`hr&esn25nMwsKK(Jjo?3S#Q*(0`(J)M`om}5H($@b{rl0$FWl2F(t}U3(+4j5t?>1h ze|CLzcKhc1Elc>3Bl*muewNTbVVa*|<3F{w|6A$&U!?JWDx6uZ`A6t?4~ueNUO*iM_wbeP40s2hje3u;1aj z8_04iwJq79drtfs^xp#UdueEnyJvWKjF*OFp{M5CP`tqE~%`DYUsMHVT+s4e&P~2LFGrBxCmKvIFMSU@#W(xJFOs(45Pc`#H zlf3M}AA7{7HGaEO?bp=<25qB(Y9CA#SX466wMu-zDBAOBsW8P!>68oIt*AY zhowqSyCKh)Wx2AZ}OuA&p5n5kRPfS|89Ejg;A< zvS`gNi^)ct&A3Ak+3m2=EYi^uF|LFtNT#L)S`c%|6(*TlCxdKHM!=)2a*g_o(w>>E zLZji-qB}AZVx2~A(;^NEYBIo9TIw?6ZWCxV$ek|CVS@ZR*aL%JT9(CCWq^r5DvumX zf~o}Uh{2W$>_~&e6a17xQw22UWSR!5%qp1-tcz;o35Jy;fd~TS6_TWk$jj&!OtuMf zKm!V;s*9)=Dr~@44-mx?lg-r15(;!kXiD?8GWLy_b1URNpsW>m@&Vx8VyqkX$qG+6 z^q6{_6Ym4g#L^0_VOL*f7FFcMbePE$ZUK+A%P4P3*A zU8%~KSZc*2CU|73%yo5zhALS`eKk6hB9m!FCP1d6STqHPbFx$s55^Ut3=k_~(IOIR zL9DA1*y=+0{O6~@8_D?j=7!Ew+m*m1&5d7_b4D!)K#Jw>BM6v|M! z24+%7C56|DP^lx!7WnqGz+RQvb5d`HXY)%vQH9YDxWfXQ1F%PwWE{}tFfxfFb{%2U zE9^$fXeF%{quQpzObn$p$qHJKAR!1t5v5Y9q){ydSRlv&kwyh!1=TvSN+UNjJiCfT z8vw1AYjUx)Hm-?8tt4%rU>A5P!$Qf8;8^iVXh+nE%12z6kYS5#2vf!{4O7PlDt-Y2+j1 z|1%uARmZOI{Ch0>qayofJo{FiyQdRxHNjhz=SmT}mBuc4-U`ooduqF8TdrXLdpPlk zM!!h>A7z0%z%w~Z?D)aA^7K#Q*k@k!Es?rWWoK|{sOU^(*(sV`;N@%jLgU_PyjwCd zS4Q?~|5R^$XLns&{Yz))#ua+23cOXPcgpgeuC-<|cc$j0s(we-?#b2_IQ$^)%)#M} zV!AZ7M|63F=0@t+PFq}I(I-tP!R0EIX;Ya3-Yh9ISwksB=hH;Aj%JGTVwsE-uuN5& zD8l)UCQ;I*tLj=$og7isnWj3mRA$b~!qk`>Cqq?tubE6tgRx~evs^7~tA^pSW4vi= z=S}N&sCl?hznf~V7s_{!(B($@cB|aY6#Knox0h{h!OI)j`d(Zg2`X!8Wdha*it1F^ zZUV&%FjZ1S^JuXkOjMqBNt7%DwkF_f0@l*0xhS#4g^VB3y8*jLMn)B6N=pU|oM!EMzWOd7&UGqldC!fCafQqvFyBPJDLQa`z{(gdJ539Aqi7wB|C zi-v0?`9_CKXA{yIu7eaCbqcpqVx?dQp>TtU9|L_DU{lNNkk}y+yTpJCRk~3y0w7^I zmIbi@7w}1xF}cRWGY46gFx!*_bOBTsqOh7$nMUaXNL37~3?VP#U{WP0isdN~t3q@M zgWG`WLaLhcG?x;3kCI!i@|FuPB+v)}*D|mt1-2-%l#8$VtQ`RE&VdgS?t_AJCxx#0 zvd5FthcnUQ^k{$h>W26Ip8M?W@v}Yf{H^%e7vAY#_%D9pAN^It{;TxtGxy}vA?w5W z$v-%FipSTOf%!otrBQJ$0p~t6Y$k%5P;~FDNs4s*qAA3P`dj&*v3| z0$h!Q*|a!Ue_{_honi8MZLMV}^;Ok@uF%sI*3SOSHk(r0sqVU`UMu{@rQYkc~lu#iE z4q-H+H^5r0lwkly$200VM!i^zi_NsqjtQMA#HEDwO4NcW>ie;d=r1J(qQRe){?B)jPrScY+rW-0yFAXE&^q_nf0o!13Ss2Y;1t|0x&! z%o6@|2>x^m{7;tjuW#62Ui1IVdGncj_R}fn&jR@;zVzoq#jnT8zn!T5mr(Z$SNB($ z=ARPsZ!+VLJoQgf%iq|JKMNy2i4*UX(MzgykLMq-;?GFxXL;i9aQgoOqQ6Q4U&XFF zq4(h=bbsRb%yWG{cf31_J_y2JWd661?^a;D7J074j!U6^&GX&~qqoA+9 zK9wwW@ql!$RSI4B-W1;%<5yThs%iPvw|$ zR$EPC>7=ZXg;G^XrGckQvRo6%mw{}FOl9bJPLpZk?FrFoS(+=$sIA>z=%*8M*<eKTJ_07_LJv83+ndKFEKURL;DeedG`?Ykpl59udWWrkxB%=v9 zn+gUKq(753yI^++w?|}h4CV4@sz4WuK)8&=>Oiaj2lJr2D=}wJ9FjZTTG2^9*_jDj#KTJlp-*LT1F`)Y6Gg&K^o#jqdl?E9G4QbA~K5>@~TJ=0T>C$gA!&E(ouvF zk{dx~>=^WNG0U;q#)opKHY}j>fHKIY!+azsG88z5JZOpushj|-g7PdODH+h5T9QZ6 zj0%rnXaW<|6_TeJnqf8{E;j8!sgwxS=WbxhttKFOp z-_J#VIhFpGO!h?}_$p-og9HBai2v)^$^SY#`E-2#k#+F(O!SwRte;r&pSg;!uZh2N z=)be!pXJIwOLZTF+Amz=TcPcf%=Jm+{)~9PDxDvJ_)ZykizaTd_#=?|isb%*Cw>;V zKfvJ+3i~I(_ElhfJas+13I0XkzCUw)mIXfnv5#!ednk4ZM6N}_OTcp{PrMan9tFug zkX|D79+uxS`Aed?)pZtzjxBiQiY{%bEgjydV^f=F;f}3LiK!+vHw1S2*p7;B@${Xn za4*Pj+4UPiZHx3a(D3eQ5a>pG&GgDPTALu+Riyx=JO9rUdUE1YO_c3Pp4cN*BGY*^Uc%~i)nKHVPc`G7YC6+$A$80Nj}Wwi#E9ENH1&B zO$S|EK$EVhKb2l|72P&Cyg<4wMQtL_*Qi1jE|u^^5lb~dUjwse#hx6?l|Bo^53Es+ zp~zF^AtEbP7lr05XeiTIQl*WnG=5qY!O;kV+V!N4hDj3+YZwStJL z`bPeh2YqIvKk`%$Qt}I1`@l2p&aF2R?+1zb9bmhZTW*lhE$F_HN3LaoMT6_huc=?Dch|<@!aBV&3UBbnjP9(p#W5Xgk-3&GGobQS zO*(JMbxhH&GM&LoO`_UVCi}8fTUM${!wEs6D$Mr;iHWusml33koKQ&+YD!{hAP^VC6Krc3 z@&*)^pp;I^(Wr<{^2~V=6;o-#l->)d0Pf&ru~iD00hC)ofdhu^6qbPH0VN!jD&0y& zh`_uQVU=JGITk%v#6@885KeGaLB1-&Cc;l9`((a6q#`$^6jT*3ra87M%Ua~CD?&*M zN8@Tm0)rD28iTR85{<$@lAt0IED9rKM3$9ceI+90r9pN@GSMBv}fPyW9w_E*mFUnOV%;ER71NI$)i{_}|U<)!@ZJn63- z;h$fFzrIGla?tlI=1$Dq@~mHFy0?7KJ?h(vgI99PHSFD}GFM3O1`FLF`8!$QXCU}l zl6-{YcZ%d!x#v;o`3a2wBy+qwPyF>&4u~^42)p*)Dgc#oDx5t4AAMd7;a8?4_nIT2yAL zWVUL_*3I#XHP_Wge|rw7veXAVb)ec%)JlR>35?djbX$>bgOM^Gu9AfkebHbhP4#ww zEEe!~0l%FX_Y33w%y@Tg++7jNm1=aUT#d=$+&mi^W-Y_2N3YuOrU_ro@XN7cF+ux1 za@N8wJBmd`-fK$xEwta23a6S;SJ$7aCu^oXrE?Q9(g(slZX$c^&9VJCR=gpI7es-$ z)Exv(E=23WH8F@ui8NV>#t$$Ng(ZPG{ZG<~(G~>OV@eAlS0k8))F29#KqlrXL8(F@ z5rZNbB2qj7j~Y_Zq(MvSbRexqbhN^tR$5e`1{5ge5?Ud&Dj^dn4m{Z|F7d!f5K{Q0 zXj~=qa{`3npBg@=5RVQ)F6+cVQ=k?{lOzE=2dL*U{ zy&!bWi9brRH(2Qdmi|OUf0af4CXakQtNeqN{`su@^LhUERq^I^_Wr5(kKK0y|2t9o zS`vShhVQts6&%?q5>q0((q-q&U}c!7ix2kNl`4N_4_{j=*Vg=w&QA2@3E7-r>5aO0 z3TLlm;RRN_K~j5RZH*OX(rz1QkEGQr&2VP!TpOlq&2Y*LZgdxGra0E57r)(j=o{!# zV<=gp0z+-|f=-mESXUpfV%dqR*}>8?BsqdpRerpSm&>x;g(8?mQaMe!s;Ua%+7#_K zz>5jI-U9on=6dGdUDDSJ{br1J$@rFFtm1mo0p$acrmH5M~R6^uU zD;zP<5>e^>pf;o;Yp60RRVCzj3Q~n-h7hPV$S^IaVPKG!f;1r4Fc?l_1SOD4G6(KedkqhHIL7c-&v%w0WN()s*Inz{_Dm=0bsj8>?GDvhltSJNP z5=j|_Vi1y5^8zp@ipV3dIEtfD2^I(O0!U;@vc+&aTD)i^J0v=iK?9L;fgp2OmrL;4@$H^&I$7ihMbi|M^(*Gl%t6BL9hl zeE?-&0L5Q9^sgM{XNmQmNRQp6ycP+46i3K;$0I&V>0LP}%bHcf#DYIKDg0 z+zKN<3UhZ*@-q_qAPD^hOZx-9`i>0&uWCk0oGFMbL%ES%| zU*o}@ICF)SCs1~Tm8bGRIqEZWea%dF&cVuESUDmyLvX^xCr1BJAD=5z zb0*qWMjAli0!leF#gz_{m=TEq5bXi+4%n;%wI-G;!I6qO`6R^(xG_Zg18K7d zU5xOj$uizrm)DNbj9&D}aR*;7sQDJYoD-`H)vUv;#+th!blZXMs?cp+xx7HvHDJ-> zjVj`PQ$DN7XI15F3{MC6v}eAkYX*I+*|C(mme7EV_t1D-60Dzw^9P{}ClG>canupS z%u!MuB;;WVDoCJ^gbd1+UO5>AXa}IxsW2N(nGuy$M3YinjUWn2qM&$6fC_>fp<2wP z#bOcwRWL-82#QJ&Eu>)h2EE*-5qfdJjdAn@M+-}66{1sOPmu3cgH}RnWu$fna4|x! z8L_D`H!V(!#Yqm36p6EtpoGZUN?A!L%R^XMq)v17Wg$^HLkb+E3rQ|yP(uM!6v{LN zXDA>7NwXL~O>;9O5Wz)B5Xj=H5}~fcsuCt`YGf6Ss;0m$Aao&BOhIfdkPlh>!7*pd z;SQey|AlzKIvuf2W@ntsW9j~deDwo+`AoccE?lv>D~_bk=TCU73mI=H;1BuWwFG!~ zD*SpV{h5V-J|#XJ$$u0oKAuP(59D{Jq8qO0MksnG0NqZv4mQ;8A%9NiSvnxAMeZ|htPNG|G>X9G% z$cub9&3)!3|BfX8iH80v3I08&v_wj_tPz@CmRO#ZDV z)T84qG&@GpQ#jjECn{8Ep~?=x>_Xrj5V|wqY~Dmvdk?q3#FhuF32g_`E~kSEzjxyvq?+EoM^%<{fxng%=%Q z)kH@rXkCUTC1t-)UX(1Iim}kpcP^~iw$)oxM*7Tei!A5a)|^~lQn+KVrlPdvA!`)D zqBxi`U}-rLu zse~3oItgF^AROmo8Y!+7x>YO}3Ar$Z5e3zh)B*xl0`}=8IznP10GCc|re!`#Y$y3H z3JRzJA0tZRvW%3MCRqwhRuoEeY*9mmT(IG$9BavxO#zkx#TA9355avxbU{lCgrsf~ zr?hBBAqpe>pa#uqz%VT@&}4?di@2(b^4mCcLCAa1Q*UD}3Al!crHH@e@;aik-idI| z=FPuj?~ab+!|Y6VatuadiTI zI3+*7(SA8s-t*O;&(L>VrT-~T{v8heU6lHVxOmU6{3K0&mBc>*nGcf2U*zQnrt?wNc%(~Tw3YX| z=3j~KSAFHZaq#{r|J9=hw2e=nKw@E?UD*eFXZKz|zteUf?ftExJ*Rssq`d`7S6Fec zXw3M-m8jj5jJr^;P8Kdqg_=Ft(`38OcH7bIn>r)9GFO&&y6{Gwo~e^pMB>H}nCU!A zeRQBsG^s=fFN~l>hm3WRcV+bFvmEHgfA&IXHaX2rs@RtQxY_WD=-u#AwEosAdD|Zq%wjnHnKz-Kx!59 zHDVzp0t{lA9^sIfzytz1RN!D_E+u3jq(&670tzP#yL5m_E3)Vij~cP*L{@{$XaU@m z%%uUnMkK0(Dx|ci;?_Y|>$Xy+=uYZ89{)8=FNp{b9^Fz+ym1Oirx_*s~&(O)CbjFsi+2X4M`Thsx z)hpe*1N_4a=JA+#&t|?HsNbC;*Qdz)WBL12$=gHWmlOUMj_hY4|0j|3M?P>Tl$Av+TNtq_Eq1bTUYi`%t`CY=g5sSl{ve3| zB#iw6)P6xKKZ}aL$ZCHR6+Q^+A9?w&Q0y;Q_D87pD_;1Ou71(>9>~r|ZR;&l|HU}| zYV7}P>Ag3N?wIid-MphZ^n9!y>@9;!&*08HxVJ8szR|`$zVw#2s_sslN+WmfAVNDxkr;LIKKgX6F7FENDhc}6)s1~SV56&L8+#w*F_o^lHLff^ySSp zv>3_P3+C-e``Cl8Ti}O@WZRVAMB)^ zmeh=@G^NNRLXQgfL6`-m>?m#^l{!=hBD7pC0wf@gaS93Acp@#ol61qM1A{Dt!b-tj zBNj0N1x%LGo@M3o3(k2epZ z<7J()L_GcaQ|2>Ky)r~GWe1(WpfoP7phzdg}?IUqj20B+C0&usLLCwVv(d^`nyK1cp~fbCA?S0a3WuG)*# zj{tGQf%mUMHTpn&u~c?UQl* ztA74Kb~nUwgSI{>TdMv>HD6f=m)7B z6}L8%4o0eJhnV)YwZ5h`($9wa{=hz6GUK_nu_AMGO=RY9uUzhxJ+jh!yEb=E7i*c) zbA54R$}ZLAC0e`%D?3Gcjl`c6dkST`SfPW*ii&iRh*W@NSz5Rdl{;W(ChW}Qg9SFf zmR?^;KFpEF4*FPu-*$xeE#Y+u+BSvD9RDFBe#}WPE9%Q4{?LVP+xTNoc3py(W$nCa zxyq{d1$dc-t0|&Yr!G2lrv;bGKt7LT8br8AxHE()3G0Fooq&}|1)8Ps-|i__V^OU% zp$F4?*rS$uA;^o$jWGNK|7Jpp!k`ewcmOCy36T=SV5v+dKP4q>mF$#Zvo#!m0zpJB zK@cG$I=2eXjS`MoBDA5XONj?)nM*CVz&yVi@)L+pK?LNeUjfIIY9FFxzNcNx}{JnSjiL!JCWg>(u?haqz$ znKOYU94w(!O0SKWRSB0OuP4hYNt%$AP6#dt5`%u+Cg8PSL?UZO8(v>r;cYv-A=^0nK zI#u7D>)xMR-mx{0Ed1^Ta&t=G9-&{}$UgAlyC)qug1#OqKfc!No@r;N^y34|5~+srM-S*n;cmuuLHxQOzW&(=e1X?;pVh^eNeqTZ#@F7J8ANYUw-188(#TF zn7k3Eev~GE6;!_}8uw83JraEjmw&|bpYZl0*n7YhpXt$CYwxXo{K4M6vo~(EtM{7q z2mNegSX>daTV)E~O~CO?z1eGe@2S?6xwW=*$KK}5*j$@CV|8ajc6Q3&P845?n+r*O zLabKGeP6xl)BPd2xX>*lgE@qnv~=W zKu!aM%%lf~%oJe47>yD#(Fg=crE-}Ng*g(jgpdHBK+eaGAXG$%d6f9j$l>WE0+m8c zD>ybj&y1dVgghe-8flf6f^9013IyKN2K4!q1~1gowq4QC!g)&4 zuwZ!%tph}fKtehyrNf#=xTuy!DOpWUbs)S3$ZCkNE##FTRtgZ7c!za9x57Jb@z@HE zu=1MII~FvKgl(3*eF}CD6uoEI@Fg(&0qVR!rfk*t3R*eEE2m_Q3$@R|r&%x(z$+fT zKGtjwsLM0r>b2_qYvkc2v3iZHkCgj!XiQR75e1`{>V{oPmN2qVb3S7h3ZF+ z_3^dt{jqQJ!nl6nnF@k)R$(bD_c-0oQD@Dn@6H=H?2C82?1LPeq1KR&AU3`@HAF%$Ve*D(FxX~}Jjr}`nx}m2x#B@t- z-Z8B^MPI(}D=s(c%WHgjOJ2;#&cfPUn?`&6d}*3onHqQc&PLam>-$r@Jp;#cbUIV) z`{1SuEhf}(g-++pXkr;myzQPfJ$7YA`smCVY??xCcWhvZv@NlTHZim3hQ`>+klC1H zeRFk)RYubK0?zlCLSK~|>Z=#pT#JeJ)X5H!9m~sYLG?mDn1b7_aJQ1ZU5OrMyr=rV zZ7A>R$h#K!wk`gpDSekd`w%<3ukrUa^rnV9QQ5wSuWQ6CM_%RW%dCEt!gm#Fk~8$9 z#zsotjMCL2T+Kt}1es5unUXA)!a_NPsVGsWQ6d4Wq8cDx2t;zRSjNX?hlubLh1jIzOoea>M68knR)}Z9 zc}|%kBqKZ|7<@{8mDETIwIoatN}~!e$q*j^gtsKLS^6fgIL?U<%W_T;IBkjfJ+`p) z2F$Z~Wft$^gwr|!@&|DBNZdS!1_xOGRM9$B_fGNh0XaC<^jJtk2=}B^lcySSm3zK! z^O~8Tl2@+`_pemj6XN!e+P|W1|D^f!%JBJ=`Se<|f1_NVsJCo#d91xXH9Q_$FWI*H zgTM+ausI3uIFT(cIuOKqC#BBo}6~m5XJeSR{ zp#2744wQ?5d3xcf^exSaHnq@4MxMaP=x*tvEkm}WPF?8zJ8O1tj$S&_LuYVlE{t^T zu_iUtl(xG3THl=M%RObhs)%105=$mG5ViYQvnLz0z;O?nPb4>8&ij$zVJLfF5q!=YEmNCUVs=tU6rKG-{ zLAx=gSwrJ>Wul2CGjJ$F2dlU(r=(MICQoWJDl};agL+X;BaWzLiQhbu28>F%@!ifsmMUWp6f&soL1&KlcJ1G+75Mcs7s>%3a zR91kwb&06O5*NUuy5zh?oFtjUnwcFpv2yC;-_~>RN_tx1g-%g2NJ|>9j*8njURA(3 z3a*22R-@>n+#;kX%8@20>nX@AET~9E?GcWCaNuyQHLY_awhtlvti`{VXT(0Gs)uAYX1 zxW2%XBPzXyFP?<=Ue&v!2Div$f=+LB!)xnmqg{=S7em!*f-L9M@>+fQC~bejYVhik znyvMdDLI(xhg;j`+OWQ|Z?=xX+T35_%>~)pYP(lVe}hhY(4Y^t`;y^QG8ifsTX24f zEf%`joa!{xwWh5;)a4hJz`*6Nc>+yybZ(E#T*00pJTZ9J-pE3i9UBr`RboRGw)*sv zj;spFEm@i{$uXR4Q?)5soN0=Eq(2n*>fAvJYE`7;E^E~~zZ@QXtaBdo=eI42OXe>^E)Maf3Q+Xb%hcQI(1IX)`d~nG5}?oDr!^;LY`B|S}LT%;2lg= zRzW2O>?&AA;5@64)uqyg0<7RrLMhDy#|hC%5_!>p54s9|3gOk|yt?E#f5^@sa0`dR z?m1XugEcl%XG2o~b0H-z1geX3vdh+%*<|Lqq4R^S^~PL#ZL0BI!`Hs)fvL~3&ED8{ z&#miI{q+HH_e%4?LKj?o{~TX@r`{ei(^vY-L-(HJxIc4W9y_-OhRvTWs{`xw)V4i! zjala5E8qONxAh{}Im)#Us?($DUeJC3syjhz3RdSpZZ0Y9g^d-bvlBN~aB?M2EG5;U zEHj2nQ)F<1buY>0)>xgX$`iV?)pjmziz~W6rn+5bHHB|i^6M2eyCZt<6n&<@V^(`Z zZ=r7wbXPO$)xBeW>zrL#XG_QYQa`_E)|dL_44bdP^@_ThipPEKY6flwlKmQ9Ea|~W z)9qvBhABU=HW%7d)9P;;LIb=1!sr@WoJ(hB;|_IfiKQH{wd9Um*RY^9eqij ze9G}Z#ke<7{=3x4P5EeD1RkoVn+*43mUZ8hK9r@mS^Q%e+2s_IoUT!TdqritLbvNo zqDkf&s$@nN&NJpVXucqwDTOwSnPa5h&nVq4(4&>R%xKj1q@<)P6t|zCasyK z^+v>wN@=ZJ%OH$gVV6NRRHVmF%_0sV;gUiYA&~0%5`#>t1|&Lxlz~tSi0PHE8De`O zzEJ@hIjBzpdo_R&L#$GsLw;t1PlHl^mCug~_yq|+#RnovZbr(<>5l5aNly7PN(i$; zeqGM0%h*NeuqJuYlN{ACR#nTX8s6lnqk^8_xAB?=Wlu#^DP=~DNt9MXyH#_z1-m<&5kDgxFuHK$m-r!er;&!fh7+{w(@V*N?45T+>V7C;lpITt1 z=&sd`p88^>Ee?soL=*1e-U;Pt+G8W9f9Ug$-SM$Iv~&39&fwUT9qXbCGPh!KeJVZF z6lYALrwdIA@s2*(BO4=CZvr-}NI5NOZ|xWYs$%sQ?M^5?GRD`WGuqs_AnxaL0Bu;kb; z#F_zH+kI(RAE?JX_2x{s6zC@>w()Urc<$RD+qTF4=}}_!ZFKuAJpRTp{SSNlJALaL zUH_%6cWhg{wyut?vzM{EXQ{jM@J5ioVyAC-l`U9V%4=J3bqXd%yl6)ho`_O?S!t~* zE%Dlxs%%ZUTXW^onBQ8e8(nAQ7|!gYv3@+FryEQ6O26HyHcM)^qwn{M%?{cdHt)6l zy>@Z!n(geniD7eNzI`9q+?rP(&EuVQ^1;;EtA=;h>7DBB9KE?#yuXy+?Una4Vtk`n zuhhN0v9Y2mBg1dY>C_CV4(Xj6GF6SMZ;DSX$${Cs@Fv#A?AVrFY4TV4+zc!3b%hF6 z+iOchV{onu3QdtdoowpzGjnT#b!&=xoov=5r7~w$77r_;Nr}I$NZ#hT?=ph>!s~~? z`JaP_KV^{3k&bm(V*6H(If`5~htuyd_iCCq8Nt_s!P4x=iNodP0 ztdhsG&8HEdaTiHzleW}geF|1LDMO0X#GFjTL3&L3kP3FwXxN4rtul=f)VOe?i!^%` zD1$#Cy;3KYxG{lVDYekB0RpWU&yJj1ggol}M8#w2IWmSTbDl_@ES5p>)Eb~&AhIci z4l&PyNOgSJ&8B@qxf6$M2xx?%fK=pCp7~H#QE--%9wm9N($HC40;a^Wru4KRd0hq1 zD)4z$%g#cttE%Ts{8?4;A_wyF5@AJiR@Tds25yc#$*cHz9nexEbsbb=pfaM&Qdrdh z)znClR#ZrN2~-qFaY-dB;o=;0oB__`7(1&x&A=xG;B^K&EP~vcKvrh+8@wkqIPIMC z(n3*&i$3j1L5}sRK+NwouI#@zTNlGuQ` zORzj*awD{IrOCh5*Kbtat-5x@j5qq$*fidn+n3DXR^QrEvrFW5i{9-umv7PCPI7JA zUD_sl%V_1^3>{b3y8WGHy$fvbO*c2p@{Yc^wD;~D{dd;+z2S1J{&-1!S}Wge@Y^f( zSnpijBJ?zCt0ACCc9O0 zx29{9;dCC&x8PV)ovLdi3e-`On>r}fq)k=KT*K(B8IC%%X$Kv(5g|h1Rf8rgs?n*8 zCdllPFfN(eDnv9Aks6Wc5Rn_?xj?Z)0XPY%Nqnm39+KQsNP40Zi|pqz_vx93dmdo% z&0>*7zz?9X1>x%@LK|0N6Cr*D8UVqtRBi_lGmiQ&ZcxNdNlwbZQB88#mP&IFQU)YR z{y_>j$f%yhaaN8#FB%Wh>Nkz2{Kt+e(vzf=m4W0Xoh+>u$JA#@oh*-uixgPU2+|fP zu7?ULQB^H(npH(T+SGtmN|ME;MM9pUBq8|3kH3nm&Qs9KIPfaOWygiGI14HYc?p1% z;&9?;@;p}-6G-DMECv8+30e^8dgt_jMfSMNL_qaV=z&Pn6*^liM}_TbiER^(Ve&*o z2hsZL;F#kaoCYT%`}o+kIn<8NYzme!C-#sv?)ES>KgkSb zrIDh(mt1VY@v59!OqLz zBL6G}oyO$HCFI+v;vi#USJ2}EdRWDeiu9`laTpSdLoy(xh2s6q;=y_1f zDQabTt01G5)wKMw4yoG7stzt{@H~x|m0+0QB~Wfca~ji%a+DygWW~g9p41}>a6%G( z0^%o7Nk#@_j=4#$G|7>s#8^TikAqMS&~_w5M`j+fm@=CfNK6&L))fXDd`n-Z>u{Xy zV|(>wx_O?SpGW!ve~<6#iR=r3Wz4g6xVD1KlM&cQBHNH3?4H|4fAoz16z;r^Y+t6w z|C-$WOLp@wiNPQJ^*8Ru%h2FFHvi7I{ysGSKD>XGTD=ZjA0=kO!saZwJxy(nnv;{l z6s)df*|Fqe36y4{%nB_pwTV8GzCvqzqH#-Bm#Wqp@7!zJ*F^RKsBa|AM_}}zTwcQa zOZnrq{ANkL53N3W_n)kfd(VDr+032GnRB%9jjn?0d*^O%o8OpcTf=teewaHyUz$GN zY9AhScXzs*kGlDzX0)az6Wyp|to91^HF+^rHb+RK3Z_enM41fNi9}Z#+{#lsBzlWv zuF>KK&8+kn8>V}0EZ@PxyaLt7JgK4F$)dfi3F3gw^%FLKgpTsBLIr+NOq z#9LHEo3!F4C*FqS_c7!yt+*>fHyL160rz?Cq|90+kG7H1L4w^%$~t*$P*>IK>Q0I7 zmGD9i$=0DzQys|YLNPj)Qu$+qr>HjNNNW}{WpSd6GBv#}M`;oot>3~}Y=~V=*)*yr z{xKOLgIS`o$r!UpWs*rK;FyAsHBzo#cIFhFdt^M5M5vMq7^wi~yrHv37#tNsF|NqZl}7=&PbQ7a(SndnE10ZU+mahP5~eI-DtvQU;V3FiRjK`g@4Mi* z8p2@fG+93iwNIl{v8OL{j)bO;*wzF>Jt))@#cE)%%#Sqqkv_-Q`QF|BE9X*d- z{V{#_r}+9m1M_c^tvBHYFWNp2kKQB}FO#bus_W;)=}~!q7~j7x?0ALwX=!s(-<;*I zc(tjbw!~^nv@wRVODr{HQhiNqjAZu8><(zH(aavqt%>4JS=*tNJ79E+_wJy@hIpKz zZ>O5u3iaT+yw`5t+Hc>w)?3?rYQNk2w|m!MX&&x;!$-?vZJa)suC8pi6XVsD`lnBp z>$jTA2V(n~9(`tdkLKYe*`C>RU8XbvYYVKi!SY=o)*|A4b*f7g>R@s$O%LGooX%X! z8%v;mhm^Le_EKBAHCFD?_EtX{D_d*vY)*`}y6sTCT&PA0S-XgiOXw&i9pvF@UAjv{ z)3|66hjt<9brgBXKvzlCWeI#pDefwg`||lsQMk>YuEMf@NYwN5F8oL_sH{CfR1q0w zu~Z$-74T%n5-aK)89Wp-+0yn%+UBaNwMCUKi86I9meQ-jN+Pb;`)G~duCtK1i83(= zqg5(Ul~|#Z0R&8#`EpWzXqCJ+NuKK!Y@3|t6`!g>4$eJR%UOowmlpP+ng6|;f9jPU zgpQ9xN9@FbD0L)tabXi*ZUdw?fy5(0EE2IFl33YXzwp3^pQM%iG|3LjjwABZl#o|u zvm#P6>y@UPYu~eG}HVQFl#bs>;n(FgQ32 z4>`UG*FShsES-ghN5KWh-Z-}oLH7kVq#ZofG7^-dzy@4c;)MDH-M zI*5;7WY&L(51*yS&qKrKPhC*BI4!MyD9@keCa(&k=c(D6w%G@Q?xyOfBaA!%5w!~_x z{4~b48)j#nT{GLg<8o!&u06ABmJKk@YDzV_NOxOcCw9P2yd_1?H%J%vB@<45Z1 zQG5NKzPg8px0>mr?&3jH*_j(dqPjuzPk(=hWwv-^3S@>%cEsfSc)qVFjPTMGTD_I$ zckj}19gM$IsDakGp;#NX9%ZNv5Y+Hqg zacGj_kCM_&LUI+9??S{niQE(fy9)QdcJ#h>wyUuA71=Nf4B}^HzoZf)`XOaA57z2< zzN}9+P2RFDRA+1#dV5(P&f9}ki>YKa6i6zAAvFpap_Oh*WyC2ft@NvPZl%_uG~s|s zgMms+u2cd5Emf#NKrIlO#V>U1S61GE?&PKB>|D=g>G`i5>{mAK4*|}%?&BYVf^Ti? zSAp|azBl~X3wi2|B+XIy_<&cc@QP(tDejU&UOqp_J4uM1N1)d!1uG+Cg{5a9@mWN4 zlI3wqJWf*ns;Fe;u(JyJx_}&}8Gg~guNe3V!&#INmzA=t0*EQ45lR}+h{7gCSS=3I z!nj@>Va`&_dCem&M2MtI8T5(WCPCN)1vIjl8Ok{n5kEiT5f@ZY2^Hj3k~l7QqI@gK zvqK^$AqvBa;8SynrBMMKl8Qqhp68)07%yX*mdaRBstSxIPEb)bRY5dO#Bu>UI%3cC z*xTp0M#r(iL8$&F*W~0z9N&^_9*Auhn5P6VIn1eoZ7Nc&1I&`e1!2tzQv? zJQ8m6%3K#bFjO>r-)dbzn!0jbGnUZ%Gs_jUz=qTGoXptmGNpROBMkRXC zP{(SgjLHW=QQIx4#lS)mP9>$) z5}s)3^9n<(iiL_qut*v^I#br+EqV+Uvp#L3V@k59(?!&{haqg3)v2~SAe&#IaZ*+t zq*aKe6v%~9K&TLMKrVy}j|!}F+u3U;@7yMRuH_w2hi?e(3p4MH`Rp6R;Ww6pZ>(>= zGao*Wo*a5#3DYn6;Uh`#Oc)RegECQ=bspq!d_vSK7sk(cA=wj+zsw3wlRRONbC{Q% z=VY%^yu&p3tSD#Yki$HBn#7Omy2GN8m7+K~Gdrp~DH~4f3^%Ujrd6V#QIw*gD8osZ zq(K6TT10+3&!-m$9pYpHaXW-T$5YvJ{1%>53&wSD(8|w5MNyYDVTU3Hs9;otaCY$N zg~;3zmK|dI5qVGuTSZVDle=U{5LU(bcvgy5#Z+FTX~>uoPDde4QAww8TOP8tWWgb5 zSxUUq^Ket<9-M|p2kH8YaGxI>^GtP?xyyC-QFBM)9}wON>>G*@pevJy`#wL zB)of7njfcoFOuWK;Pg1R{bOPJtUdXCzV*jm{UG0anVmgvj$YR$C)L4uc5;;4{SaS1 z%gxS8i__d*n3)JlTe#7~I%BXt#oG&@F;jG&SY)M`ZdDg=)zdB6zai_FME4FJ?UcQ( z{Nfh6oGRxN^-h2PV7$GuzJ05?x>UW}8E%*Mt83qCuY3lPi=0L{XN{Gh zD>4Z*oma+kxHqlx)-;Y5<7udk1)IHMvPT@&h|d9 z*J))8EtW!vKmZ9Oaxnx8`G!-zfp=z?yf6q~8Mxmwtk=Yw1Lo)t=ELu;=g)M)V-x?C z_2iZF*fZC~8ssf{s@)vkIm+N$WvQd!9D25+-p>1;+?U zzzBwoLMJ10X+&O&$m8S2lDt4zVe<&QUXI;;>NbhOPEODui5kJIQxSEdF`v-q2SY}o zLoab6V!KrCfiwf1kX5mEWI4?w*x)ugc5kz5X9s?H7~oH^bh`X6;$Eds-SCTueFb>2a&i z&d*=PW}MXcyf!+%*m4^SNpT`?t_9tRyfGzvOSrp2t5em*RK3{IqYvol5$|6U7jKo# zD`|b9=v-l=OK`d-mox2Lb^Fn>zt?Z?RjW(=_R_q*Hcl6w@!q@K=ynUsZsWY(nXeyB zZy!xpm-zix)$9}6yMYEDfaWb-zGA97s`!YP-b+%K^7=xVx+J43ab+b7@1XJ&PHu?Y z5^vtgs@FteC2!m+TO(!XM%}qq_ivT`fp)egrbGPlw~LO{^NIHDPQC5wmLq0f!6s$J zWlcS5k?S(JY|GXKU|qr2G4#I5UzdPoS#;kaKlj9MTjE_sc2!_cv+%4SSmrr{q_pXV zNoHoD-|?wd?qmz0n>2pkw{uK6x4kf3%(* zc)5QFzJBfzy>y))r%zeIJc}_J1B5DX&xtidg49iyU%%+qwk`?ORw~` zUwjr~v;4rzIQRD{**8V_-{P_t8Tceb9#r5z#dN0`C%2+zl}UcVdR!*X%G8?>`aG`Y zMha&s3qM6GLMpD;Aa-j{gL=SjK1sUxF}E<2<-466r&s3na;*l~XG7c;QP?jF21GHh z+-DKEZ6dc>Zet)XDhi?^FUAXyupI(|5I;aEoU}Bkz7l1pm!c`vVE1q(Bv>s=j(c)V<`7rAcit%Z%EC3 zSl<=<+I&}ym*|{Cn&+8|*V*N9;ffQxJTA?jH5-3yjQ{&Z^Ixlz|LiuOl?Ko2qi6a4 zX?6CdJ$O}^eP0?MM2Dxb-9dA4R9>BTMvC?Xs9cD<3#_q|R5$YeLf*WA`+KUh#{z_H5#V?ks&KAC$LGvg6#~=R2y#0&u`e*g#&a!y4?KY0xk-1ak?x55RicRps63@(_ zTpui7Aeoi2y;U@>mD!ate~lI}xVo0jXV_+fO=kFLOs!|;-KFMgVZ0ft zuP@NW1-59Rvj(=Q16L*Bwk=s#v1Jas$pLqH_+1;mY`}L4>}^MS+m>CI6zja;G9jIn zMAJNHo@6!sP&K41N1$YwjF!Pb9g1Y+o+24-rhtY(K( zML7yuk4o)SKx#S4$PqK6wo@bp;`nb5HIfjtlrW%>Rmk_B9T{IASx(PP;x|U#p+kJ^ z;k=0PzYFlb_q}-)Id~oso=5rY&>L3bIV<}8QRewc?cjO&^i}fN4~bW=BIgH*<0Jp! zGYjV%C-=K3?<6EVj0jFrlGi@jA0yE3a_H}p^dJ4?3%~khmiRVJ9%S^ql1fn2O3M~O zkrwC3(+K?BhdvLRj(m(XV3xVGtSE63A8B&vD+%Od!zy1 z6D(oAklY&*=tfy zRT(UzuCmJA1}$B&wJSCE#DUIvvdc@gB=H_Qu@q*OC)v&qjn<1!^WVqK-?hiTZ*>1q z8~?u2|6_OXO{IF6YaS*>N14vc;Pho|aumHjN{!A7V{U#3wT3`%#O+Td`3gHV`@ypLh%Ili?IS$=MYa9ROdgT$15kfY*FKrc8*}Bsm|jE4 z1r!>C(Va50mBrSQ!dev{qRlHhb@^2AKz4?e7hq!xRtJK{Q|5obhPUv11?|`J{T#kq zllw9H{)YN6LG~Nv+l_iLd1?V_Q9x!F?6M}iOet>5(sh;Emf?q{?6FNe zk-PT_%q*p&eyNzl_Fqb1sx(t7hwYfNiO z={y0e*P%08w0ak&XVhw1qq5O@TES>BgUO&Wt7$Whs+F{g#4)YnsXP=$L>%MrBceBs zV^LV}+J12C;GO%94pQ8g!J{_;;rGdtmyxsc$njzEM3nsgxby?3{NhF7hd*tR1KR93f&VBrQ_u=c%;c<+27CC%rX8pTM`0r8G?<0zTkCWfU;NNGM zH)-@wN%PC3j+fDh5-Ltaf9})qyug7Qe;%by!(Ww!@o&0y&|l1!f0;x5Bm8c&tD{O}Nas{E_Zp4E@O+aK+_PnzW~)buMp{Z%>oFJSSL zZ22QPywkL=^~HNldTB|`mAM5LS>T~5lpiUxTUl}n*Y|jBM|3uL;gYCb0+kWiZVP(@ zPHzH?_waTko{zD~64|X}*DLVD2K_WwzT45eTV}UHHw$!9#aB6cTcjUr$W5QR8Yp%J z`P&BcwxHamh)os0D?^uU*|;R1R}_;hG>O9l54RQI_p*{oS`tqvBU#KH!-84L8wG7y zvAYiYi&|e!>ra{NX`LfxwkM2XugYbl-CBiDuQaJm1Y^Q!J4NaBMuWkkW{es}%V@P~ zGh@;qRtwLl7KFglAi&Pb#R(2S`1;s$coKhemU+dFoUzkvR{s2DQgoP*y)LlNa%X3` z16G;yrg8MDcKk#0^&iVeKNJstNdNGy_r;s&^OwGt-#8DRSr7i?KY8wd`Mv%8TgTb& z+=Bmzg8%LV{v{~>mxS`0H1RA>zfS006wtE_F39M3aSGp03H-#XpoSOFaIE$Nr}5OQ zedREn`RwOTE6*7{h=h-QF;+NqlJfH+-jkSD8gwes4m9i*#Ztmx0<=UqX1Bof1WS5} zgMy4oft>_A2owcDFNM1(+KH;2D%_zZ-5QmFp%_x7k!Ts%W|jE7n9qvZ6Utx`_eYsP zo{Hu)(S{;51XE+c*%1UU&Rv~jPwP#re3a^NGJSEpiusyQsDV4Ph%+O#k$ z6uG`OFV$zoTind>q*8lcZ+zRW{o5q-FWvN?2Ib#ZEC1Fk{%1D#eX4R$uCXrqC-wPp zd-<|CJkE}ur+bH$1+R1kwf2(gRM4JrD_cQ&%gNrIXE*HpB~*Q?{|m`{jI0LeV9Q+W z@a|gMUg-Nf`*3exT-zt^_kXwl@~iRdKb`MBxPSbj`Shdn!>91CKZQSh4qp8jyZ;!v z`MYNOXT#)2-Si)Z@h{lqCvg4&ZQN^qTR`irwsLJO@9g;-O<~6*duV>7&35qU2CprZ zrTuTqs+4Yt))my4iu!wAZ7%E1d4nf$-YHgBcyBJ;tyQZ9vf4@CujLOb@@@iOO;x)I zd|TJgFLbM}{-Mo$=qlgU!H2fwz9!jMdDk`3z9GKNz^giNR}x<~74syyNaBl(c%G9F zBVeJ3rSnuOqw{%bPl9&kz(h#t$OGY$I2Z-IX+mkS4v3(CH{WO6v)YgVH)Rw96p#tHln2?@|cd3U-3ea-W_DPDFuc=aE01 zr+*N{Uh`ty=h4IOQ-|MI509$PUX%}xlgF>>&z?12{m^>$P3H9{7(~s^}pwY|CW;fx2O7dqrZ2Ne6KJ&q93SiuSvMW&%hmxYniX`p%W>F!cdA;EV8m~AaWs#6$P2WQLXc`UjM#P|L*_K-hTkL zkz|R%@O{6}{ylSH^Mu_A7*c^0MT$WZMN-T;fyg;^1RCf@18C%&6G0NpIY^@NNRxBg z2|Ia4lXqtGZN9MQv(IP$_8XRA*w)J-n6OfGdKF0>~ubtW$flPlfvvwhR& z+f%2S6U-c$AbYMaGs_#DSDc#S-@hn5y9%ycgvQoXvzPSq_v_Y9n`STB7p+gdVSVm< z)Z;Iio_rO3#@5l{Wo>3vK5|Jqbs8Ey17{bdlk0=o zGXrxM6ss2%(+{anKPp?jAfKZL;%nSfm*w|AsJyhMdFqtlsde##bCO3Vkjqp0$5vF2 z&r7~LEqro<_xJ?w(K*4@siE`Z-RqMBS5llOM@5gt6&FIXm6&KQsW_dGuZ0y8e#xju znM|qTeofd4MI9QKUmuTvk+3)%6#Ifwhg)PNF_W7hd@w<3bXuv?q;cqVW|>|uBN3rq zBSkeDsaB=LL<&TPONFFF<5FR68Q=!hUbV=tmihQ1*C5Bl?>7&z9ravK{ZO>7FWK4e zY3>ZwwWjK7Q^DIw+|M@mjOowh^E?qo@h0PS}xF zFW%%ZwY#BOld{K-_PMnjkFmq5?=e$Ngs;is?(sQ#oPhzCW6*By^SdOzfY2Z6v4;or z{w^ccV{i;<9Rk!MhV{J$EnBCTVUUc_(Pfu{Djup-YV>-gK?^915N1-C5glZPMFzdh zVH~1tY=?2s<^f1M3IwTq)iCMRmfG9@#q!^6|{ z>6zB-c-QFY$;^CvVySoRe8=+X6Dt=Rr`Au-oNJj~8;GA}k6h{>J>Ne(-#2oG8@tdQ zKF3d=n!e_zgDSY^pCVfE{pCc2ev=g(2#GHQolq&g_hO^tJ^Ib!cE4s)s_@_MVRDI{(4@=qqTO<`4A1g^Ie$0$RK z(^P9U9XI2hE`5s`Zwc$09b~=P-su*8Z#+1VPWHv7L?g+8i4np`|hT`m|zZUNw6PT|Q@CTqfsFTSutZpLM_bobTmVoiDv* zdh>hMm%eLy=6lW;zUTbjYk_B9vAp=c?TL3C7e92bzi(cA$FTC6WBm%}>WkimS1j3Q z3R73inM=mhI*_?YOkCE^UPR|FVB@PqY@Ud%BEw6{^d)h8i62`Xnplxcuc#Jhlw&Jk z_M9|(S)F|VSv-%-Kd3%`6}$W}_~1p^17}rNRy5~MDK4!l9$ip8MJxQQ^znJl15-nf zuJE5-9(W`xePmL8bzF3LO!DB=;KOmw)fDG)K(-VXGfSQ0;xz{_?$Xb>ktv^Q)Gf+* zI1!&bV&!=(Vy{JQH><2R*z5!ls|K=x7zP@3T9Xpj%W+br2jps4p}`=H0pWwNSS<%t zYB?ZR!BUGzWs=G5a?lC@%m)AfjaMl4E2K_tzqeNuXy!-i`y6!xj*~s%rp937318!3 z+sUK8>LbbO>fy?&Y*o$Z(bDmwM^Y6BCXbb5YpbTJ%My+I<0p$E^@n0*)$a1@@ZrOO zn!|w;mCm|-wz?zkj*>uEX{_r|va`a=J{D%zczJbxuq6rA#kI%7K)oBOcblplSe1`z z3fY<+jyAuw)njjQ2b;aF=Aff95a@D5d(6&GN4VGSXWQKUcw`WEcIxb{nqVjF>P5+Z zxk;*V2oXvwGl?~3kqi|;un^EFWClQJRscAl#|RLn^co+CyCK+URGCbm7gN|RVAKRg ztWe4$3i)^m7cZ9Nrc%nlgdjT7?@tRIVYVmK>qxdc{5`fn9~JH=Vgg%0=JWBQ9(LT@ zoAPo}k)hFv{^2ohIw>1X^QKe$$tZs*(tSGHy*xRzJl4IOX<14)&PMxZMh0glda~pF z6C>T(dEWB0aDAm~;e6Y|>9))gclPYi#Jrfc^T!waMpk>GX9iMh9a9T^qicfcQ^Kh; zyrmh=(gbI5YG^&9KE0%zUDPcvA!n9>)g{&X8U3v9#dka}zUzAan)CIST(3T7d-)aj zYcCORyybb}P16gnJ6?Xp_}Ht?$G=ZK^p89kvW5e*VMyj<)df8xq11-nj|?2C6**}>*|G5 znu%55?0MkA8R3JM1XmVC4=yOqUl5;Jm!4mcKfS1Wct!l&H1P0g;Um++XD0`rnwC8| zqIz;d`D6lma8`O{nEybg`@*>5LQ1xnP+W9Lu7)Jj9(mfKOMA2nA)uv|leB za!Z5`xzr|7c{Q*Fl$$j|i-v0vi7AfA)i&sC5m0^ombOM`TdS+1HPTS+ZYU2mRRxYV zrHOH;~q5%2Mlg_C>6Hq^-+f?J&7|32!GD>{hu1pnb^T=mczok^oym_Q|~x$i&kT zB8`PBcSsPkLZg>TP?eliC^V=TCzKGZ)e&kPDa1WmwG&a`CN-|tcu}R*48-iBU{Dv^hc7k{I`2!gTY{%JIc3Ndt7dw$IT8}`N7CQ*e{4Cc=6a! z)-Oqgq_ZRa*${6sB%Ji{)iKe`DymdsiF8Op=+u)G9?^c-g)h5Rbo$Km3mF>IdNc9}$;d)jj;W=Hkovsqc|<&s*l7)X#m_H1>>b>Pge` zL)N*guK6qE_$5p9A!G6}ee66QJp(f4&}Gf=Y2DbGVt7>?n*q{mz|1MZ!g=xhs%G^Z zaOE`rsZ*lIW_gzul^4&d))#>XCg8`X;l~%j2bbgzttua1;66JieP&*B|D5LOap3V` z*%K+vl~MNDbpM4E?`%MJ%E!OrQC@Yz>qdCeCY~Xs<5pSLh=vG7$gE0}QlAd786lfZ zWF{n9LWw{S0s|0^;(!Lzm?@3frZPC>xE<2@3@Qr<;R1l*D!@J&+K1yj6F6v44>=Sd zAr+ILPz#F)InS(+5<^^y+v(}g)#{Ke$n-jD5 z+o@hhKxhkdf?i%A*d6os`n-J}_n<2{;Ieb0PM+Tk+36u!j2DVYVxGZRq<4m3EnOX0hUZ9%*cX?ehdqy@j zt;sIPvh%Xpi~6PW#IpUlH*K%K=zQ(X`1f9qz4e~=m21R%FWBCC-SE+xk`WnFq}?4`GW> z5DWK%=|`!=B|Lk{F>=YAJi}~9OP*1W&TEF3fbm7;^eVbAFFQ4kE-YZ@POGo1i659p zA2ayyYdDW#U-h(r;m*)fzXGKp>XdfO?JP`w*3`!pf2_6ac zo$-j)ys}f2=(1bzuv>D;x>mWhS?KM8Z9Q@~Pvz}`%$*94P+;XqTzsuvp!JDWR*8vF0cMfGpin7f zFrwxIuu6l&d@WaImTA0z$cD-sfX0F-C@mPYDV+`|EG)GwPxUS=3&+<5 zbEo*p1yO8*9UC9;kFg`mlEfU_KdTN+@~7AOSJsBs&Im4^9a>vcEvyQcX2G#Ds?35s zyJTRtgT-Ec-TnG2-uGXLzjMv?$!F&GKd}DbRrC9=60g1GeDPJ+V=tMX{+{Wn*KAkb z)IRtTa`i*xXKKF=y?h#`Cad7r3I`=5G z{1`cLRX@CHA6+s|t`dnALu?&P%_+y%kjVwz=)7@0gPcmB=O^LQ%i2o|z=aw4qig63 zE9$40C6A1&9-9_Fo)JBiRb9=EA|kUSjXU-k}Out@GV z%O7(H9-xHhZO}9&S=6htdN2v1F||Gl=wg^6u2TD9l?vl)QL#=ls8eutpjf9;LmD+E zMV&BaSHq+P!vz+Ki{U&9tq)O-O4ScZ`%UlwiS%Lwt@s3}ic8A+EUH#B+zUzDP-Q^iEW(%pO1GtdxetWVS*b$2$pJDa@hBe9Ns!TwTvSCN}t?Cz@acT}bO z52iZ~1Uo9i9hH&pieST0XG>+M?x>@!*4I=P?ys_QORfBByR14cs7uM~eZm%xqS*zv zdB9d5e$q=GcUkIuSd*PeU3UW)oL~M*w79FYN8B17IUu&J&B^nwB}ma zRWGx5E4@83k5K7nYbd_TELOVNLf;TA`H)+LTjT^GH;^I}<{^Mgjc8;FNFb3b#GnGQ z%9VDt+^!b7wGxL(>9%TpIPCQ5%|6m>0n8@QN^xz*K`+`9#`>N1HjlGAZtWT)dXv`9 zjD<7i9>|)-F^fFl);L@er$-+1!4a=Kn~;tqdd5TTsd!&D(mUg2Pr7(3zK%tI&#JTa zRH$V-e0(a^u;Oo;3U(~pIwq{0Sy$~sp!wYJ$oNnR;a_%YJ=u`OIWh#4#OfFEF zIahcNO;78`M&+3?#o_|IFr}NHQ=gmDU&@)GjkobKsU=#>fc{j=!R zG5o=V^zjM07f?SwjXsu9KH)Pw7SvpcOCE|!AB%}E+c=j^q6ch)S9PMZZs{dExMoo= zAkr+P8i(*WTu8kdS77}No@5|`jInF)ju3SkhEgj#K7LpB*i z3K=lA7LkF<4n5cosXO#gzfIm})(=|HZrsq0YKFAPkO}J4E4hT^q+ZkH=F|t+P41yu zs;j~@Smos+nJz3ju`j-!c&!###D>OPGg-G}v6S1>BzW%78+ixBSxdzi-PSz`(2+Mpnk=G)z zM})BmHy#5*DP!zc{)0yD{Z{e)lyKcB8waIhT6xN%8=|_g+o0*T=z5Gqw?RJyfW2xy&mib^2|66Y26JDBt*y~DRBh}(Wb3Iguihg0qck0-F>KCm{5b%coqCvh@ps&SYa0?rn%rQK!gFj~6`RHw<; zU<%g5<~GpWt+S)OQAtO(S3QZEkBG$SQ zi4~ApWO`U=QPY+WtX8T}jaV;L>lJdjQmfOrbfCu|_o$&TDGU*O7bT}0TCWxLTlFNa zv+C6$6E|S#^EtZ%W^TgJo3e9bl-y&KheE1sm^TtoCBuq%2uiv&;h4}J=ev{KKwKUh zR;8l+Y)Fud45XdC!_JWv>KUjIqx)lWk2zwi3^b@%&kTHkux^v27s@4iTV z_nq)_FZiB$g?Rd9{Nh{So?Z~IO`}UI*rj>+>Vot_ zMt5$BxR}AuOyCzsi3=0pLzCt!5$FAB^FsmKqZ#89LFmy@?YTJgP!M=J0zDO$KjV_W z>=Qgjv7dMHpLB2^vHLUot92db@u#~l5A#-T<#r`92>O$bkT z25Q`*I)8UraHwo}pe!^{9qT9`uCEW*R;PQboNZ;!`r1Hask^2k)JU5~rLoTPsIbhh zZU|^9eQ0w8?M#}RBS@{!(jG9h1x-y(SVz;X;KGa2M%tpZFR0hprw?!OAh9+=n z+&+-jb4FaeajP&MQIDqJq(|d-LCFB(iwl!kk#|BB8wFyc!l@W&eE~qX__De88av0LXr`Y zpIPjsNCjoVv?M+v9g85*5!y83PtV9_=lHXixRaOJOH1OZQ>v*4WK;Lc7S8kM&q7m6 z%F~JO|0r?oqtJWbkG%Dx@XPPG-gwjX&MWTsUyZ%_ivN{YZEwBp{qF1L2Vd7;`p~@o zF>&q_^4zDo%Rj`<{*+qzD6(=bwE9|L<(0_#i}8z3#h0E5PQDl(dm=J-#WQgxoStz< z7Kq?7HZlbyCv_up!2AfU|0PRV_3DCVX$rbDt9oo%esx^>@U;5!sP^Kt>HGw7Ib^vM zq?Nz(iHP|LFZF25{E*M|K-m7E*YZ%r@KgwSBm_U=7d~s3JY(cMW#&KP<38!=f7Z%> z$N^lot1mj_r%d3aNw$P*CM`h9sgGC;F@xG?1lVhM=Hfl-n@Ue`KorNVd0Z zqN6U+Q0wci_qEnK+o~fc564eb1R4)UTdER0HKD$yw4^qrXz(ElVSRnX&=Nq7`SDsS zR^!$;xS(E}q1%Qu8BJ{#TPtpAroeh!)uI#E!ss2~TttVjAskhiPxKTk6Vml}^ zYg9&9;X@@Jm>09if@a*|FuA=3hZ%M_01s{9nT1e(`X=lh30qypb}VVAO5(NC zhNda3X#(n4z&lpR&Pj4`*4ny6buQ=zX0g6ek~2&xMx3G%ha~FfMf~!VL!I8CU1 zxfr~*h%YZ=>$Bj+1;hPW{OYLgTn1c=;HOfKtCQA;v$h8!!~;q4O44-6M_%-pANP`v z2B|9n^937m)r4O$!;gBQr@WE}?DDI|p=T)JgFgN<7SWSl=$s2Y>q2KKI74DHBs`1g z!zMIhfTOU+j~GZuXG8%QQWywOi^wTdYr+6nqrkLc3Jjt~vC1UWqiPU_K?uY6N^PIU z*a5(72=7y>hhUhkkhV!QZ8CKqVC>PTnhfGDP}XkhIze<)+jt6S^KrDl0180zzf8|5 z_4l7J57pQ?b?*Mku;j3tR}&G|#(SGX0~L{>{bK_qV{O%$-XrP8BcX<)fups)n!0qy zk#t>2q=n_`+wbMa!B}vhtsHV;)Z}zL}B5+m2R^c%TLQ3%GgU-kE`KhsP3pzcMJlK$u-9n>MB4}C&k-DNV5zY;!~ZVeo$p^SDJbNgA_7w z%$%>%Zx(tesm&s^VoIkO3K+#+ z0&&_27l~N?DvH2jIwVD^hxO77p-5Y~ahw;&l#@j`^4cg z;P9w4loOHmq7|mmGa# zj*b!g;1tok>}VTtc8?S6F$$P=@iJcih+mYob4UEL>8K(zqR3A0r&9d!5%$z-&*??+ z^6b#eCH1Kl_1q=d$a(SNn&{M7(c+rq9QDHwoIn0J{Mog@o7Y0u-m$;^w)+R~**|&1 z@&0@6Yo9va|1k9CM~>I8Ii7ph_4o(I%O5+hyluYtmgW9Wyr;hJx%_7I((9QsFQir; zOP+pmbo$Y$=?lq;bFuh?slfe_)TNQkS~4~6n3;6Vj=Sc@1M}1NY}#~s(sFK&dUy)E zKWjKWY&<_oo*$)FwG5rPNe63`$8VUlX*%k_;aMW;r=#s)g6?k197r*Esav=-BLzKvI58!Gh7kOmZNg5YC>?zlzYXtcJ1WU~fu zkZLNVno0#)C0AC+C6%D&D1_Fjv2F@FBqRIO#xBUvM^J;PSqNcDEv&{6p~XNe0JX^s zn`{K3)f%)`9HA(!Ne93Nt)4)P4yD;D^E>GQtk`7~dkm7GRp_>8oEYXM(1eSKctE#F znZeO9N}0t}0khI=9*7ym5fdlkkwv}IkWUzL3Zo8TC?*&VDMDUeILL{|`cuO#iA0+> zd?J`S;Y&2dqFrHoo8Q*swKX{Pl@Yjd7&|ztZDkhz>jFUeZ5X_umuU(+K z1I_Fy+2VQG+PdoWykb56!Dq2gKMH^Hf%~nGsdqjweekaN-M2iSUJHKkuIu|h3xDv_ zQ{>Z)Yw%6}<3#V*ZgaTK=;SC#Np> zr_Kgb>k0ElIoPb1H=4yq?Hwg}+Yw7|m4&m<&#j>bjt2%x1H9v2UZZoU%FC-r zcb1H`AB?h(47VJbIB}G21^)K3aQ(4N{o!m^Ri>L25f`Thiv7ZSywXEq;oSjwSwvYG zkQIA?BNSY2qU!91W0bE3vK`ZCDvkId+*n~UlxwIurKt(AG}2~22$aZ)3K%}DHI(Vl zdcbm0Vr`OG`eoRVn(P6M1F)@wBnJqK64NT3AY?QHxDGQL^+qLThfy;`SqYgWB$Pz8+*zv zoAh>_8Xj1W%U4JH=lwm4!$S)b9j7yWOT&WsslN5Oj+HU#nPt(`8P(i^R1 zUi(q-`yYhg`M&GJk6a&r;{MUcj!%AI{rD%=AAan5|3}t$-wVF;k>|}1$=BZ`pZb7$ z^lj54A6uV$*ZbTDk;mT%JoV!6{SPJ2Umjk*>R-L;pMAuez7k4Z^pCH_GwaFBa%T8c zB0lFIU-FF1yBCsy$xLK=GO@JiJu^<7PT4PIi1jFOI%rysJI)F_FO9pdq>Wbs)`z0l zdH_5hMJ`!Q7tN;2n0`fXnX{0qBzewCo-AZkYVCryeP z6TgIDm)ZI&h`wTT-+p(0iK(y5&Oh#!9k&RMI^;+Eg5yz9O|<`Dbm;D}?tRRRSkr+} z^O11N;b2Eaf_-SX_ugUQcSifZ85_LEHgLeoFLh`R*wy>Y*g+F|$gQum=#QX=3WKdw zLmh^RQoZFcXekEqDz&XjXR1+ak7*25a_wOST%|DYQyR)4(-EEhq=smelieuU1)B$q z+CHnf8zXyhUBAsB@sfOtQDp|TewD=rnCxoGuClpx4m(QPKnDfJa7n}}4qG_^yVQfJ z?6A(E)jKqxMUOZLG;J_v%{Zgq-4J z6bJ=nX*&}0s?v5z+`*4nx`(O$kiEqpY`6Ivz3%3izdl1XM#$QvxiVs?93jf4jP;|s zhBVX|CmS3$f^klTWVL~)X4lEgYv+ki4k8IYdSc(drj`d#h44w}4t_J$2 z)0~xT-*l#HZLEJWF|;(?yF~W_S@Ghmbafg$wFsSFmanAV`!xRZpLpK;EbzexzH2{l z|L|wjJHK?l^BeoSzw})Dsq5PN{trHLzw@sB?eCGVyz6}I6Y7ySoiD!Uzw*-LmFLrs zKbpGmMDWbz*tsj-xeL*m2jZy*yd$fD*pe@CF*CK49i9)Q7Ch;t@MxS`@kQn%zQuTG zX)L-rZe5x3Jvd=Lm$Y1n7|y21OT&iy)3%3V*n@HM;V`y744sSUSIyKJi+PdMO_JI( zdSK3Am@~W9N$8XgJcY^6$aD)*)j0@W)*4sL+7*&KWkY9iD5+CL5y-EFGAbmcx1=yb zoG{qTbYG6(MhOWkG;EGe$dT}5pj4>Ar2wwN2~dxMMo0o8Vxvl<=SsC)g}tZW$mJUQ zIJzc@xw#MHbCDrA&@O^|M1~%LqML&>Y2@uPO*@x#ph`tC{mzjwZBwR`$RhX$MD7_HJ)i@?~=>QK* z`Usr|@!2#sliX>6jXua`f!uCk2Yx#^p_B>H`bmR>G=%lG6hw?s zhAfH&tx&`Sj+zV^NSe{`#y~|99tzOShg3WD!lX%%^@vh&S=uX!I%NUdU<@A!`?yZ$ zpo40osAjLd-EZymTRKD5_NeJ($X=H~%7XU&5&f|-b6b??8#nhP3F)wi7NKOGTIrp3!6qLnmv zc>-9S0nU#@XR^vu7sXTQAOEfQhd*@x@S5w>cbuPm;C<&8uFw9?@$oO?pMIEleJz~_XjRt7@j|q96uY6 zT=GTEB!?HG>D6c=J3KiWpUS4DX1pT_*KE+S?u(vIrq@S8r?T$F5zG3B>wMI5CT2Y! zFt5k4wWRU>B)*=;E~e0{Y4c^jY00je#_%bMn6_feMqn8O=S}8QD72u}tZ1QA3eCI_ zUXdVcdebGN@hkx^AlN*v8O7m%k#rM80JMfNN5brK;}$CcTP(D7tHhNmqlAlbxeBQS zQOgPlhyW@b4nw3w2lF9ViAp6VsnjGDT73E?5BvV{k?3(;Oa z(xcSW3$!gVWt|8-E&=Pcs-q@Nu~As27wj|e59tT*u?Y9M1`md~)$W0EzvzHZUgicW zLW=UB;$XUuHQ8J;(s*dJqkOpcaI~XpgnekVr#QwtnCUN$v%eV_x--Pt=i%LD<>94gpw+06M}0Dmmye5pNFD7;B1wLvhqUR1%Kq7*UI-v+D@ELo3WWU+duk#2zw>?co6zf@rQUmo9te0}doB6uYwp+HbG-6t z=!v&ek9?4L_@(#*&u1<^7P$ZE%tKea=gtN$UJlGIx<}49hi5_)*=T$`I+f1MjE$v+ zQ&aQFxnyi18l4Kn7UGVz(dhbcWG-%73|rSC*0qpxJ?WZt8P7+Z_eX5=A=^yUcG~J# z@!~5cWX6atV%QX6Tm}lufMFifTms;;w85iMElRcLLFlyHaNcBJM9DeCLW50^x|j*` zo17t&+is(L2B+KR@ta8xs5heq1X2(HKqBDm8RGwKH@6H6L*dh2ca*L8SncXb(+l5iP++`L-F_j#W18qly1FKu zysVv*Hqq^*6eLWqRmb@RvXLefl%|wO_hE`6T|%PebqiDEiKC z{MY^_@$N5@AO14^(NDskd=&fm!_4b%$KL!n^2W8;D{p2W`(W~k*E09Nn11Yu=!2Ic zkKG@;u%5hdKC-;xn_BZ_r>OL-J2M)IXVR%`WFj$~N~b3iv9Y*gYSg`w@}EtGPWhZG zF84yfw%~WnhAmSbD(i4AMa;`V%bL|bWpz#)Ez3633`s2-s0A%LuGfzO_@YvO0Z^ZT z!8N`1G(?=15$j6Zg3h?6cdaAV1(cXYEg1uzFjymmKZtwn4nJkH_>F|yU^6K!dO2)V z%W+7ABXR;1=+#3eu}G)pt6`Z|DT6@1TGEGUxO#;Y5sOjI0M$L<7##9<_6J*K;dZ&J zSE?UWqs<^bAVK^`41T6fBgX3_BJZ^>0qwrEHmmaa3(V$zKvKTT}-6XD0!cato1rR6< z>f#1Gss|#7z=w)MuskN`2GzY`3MXcgI!sCzf%qtm9~XJdLmn@OuyJsQ0JjcVP_|1W zwMe9dnyu9eTChelSYw51%-ZUZt~Nw9r%Zh#6lc`lKWgosCOfCCytI!?4}|A}J##+x zcywqnFfboruSK})cEuUH=AuKk?B*;d*~=51r-!>PXS%M&*jJLmvk}gjz~GtW(5cCu z^|`)Nt3xYuqVvJO{ju|Bzm5Iq`@SFj#QE7ze4qRx_|eb2@BPg4{U1f%|7qYSwEh2D z=+lpq?|rpH0klpheFGd;C#?N6Y$Q3J!=ta+-;q=*-ix= zr-S&o$vj25rcLCymt3>MtFU%XjZLeO6&*Dz0~gfD9I9VHHK!H2S^8OooYCpmV9T`3 zJ}-CA0p^&Nib7_$(d0BbEjEMO>hxK3F2X>Fa9pI<%Vjz>pixM0K&e&p%yN+#;GuvT z(#Ua{iewMzIWkSZ6kv;}cCn>%z{%!X*`2-?j;j+i)+?ctAl3t@>Sd}niLQ4LuNyQp zu<=7YY`;LePc1J6)Q1Y9dkL^iFJUQoCBV=@Qhd8-@OB^jE|>IP59eN|^lq=LIwHC^ zB-|HjFY>n?4hj|z_uZZ1m-+>z-ogET`F@-B+ji~UM!~n;!n=*!y9wDHm}Wl#-VW%C zIEJHAtVXV=QW=hlbRBB2UMD{$M~+L$S|QpX(w4zMIcliZkTqiLC}2IJK{~|N7L;Uj z9gS?Noln(^!EONMnMkn)p@%Mml7t5{+jXc-ul9Qpn@QrQ#8&3O z6RpoL3sTCc2MAi#!wzED3MUA2z=$VNGKJzvz!cQrV;CCLsZ(ZI02F5R>|tehKrM2r zB@wN}MXEgpx!z*(QWoVhVinEkp+RM#21v5VOyuWKPIW!gJEJl^5T;OGg>Wp1`-ltsh z305NFMK6CfB{~xvJR9kIJj%bC5S)oiPA55QBiyS=@wv&q^Aqwl+mCfYPYJGHgw3UIg6JLQ6_!kE-y10k;si9l~9x z)vv>yDv$y+Mie7t1~a5V6iO`*&-#I}C9r4N9+rC^5wKgqRr^38*T zu8z)7>!53pYiN-p3QE;U70{$pfcfE)w$EvTji22Uc| zcBQ2iG}MXICs4Q%wbV+XdIaVcrJ-G-V{5fMRLfH;`LISQ zQ%IE>SYgn@R=dUG^*G&jyURe@?WolYIIV!&Eq3@2ryYn|v7iU?$5gR^GGoIsPBcZ} z!!RCHQy!RzVPHT9$1zpND2s}|d>B7rk@!e3=u*XOlB81_ zFbUmena8dqEh^k7cS3SMBC+T=6xirfwgq&p2~BefY4U12TvTt!-ZrA|9d@zD{nAO7 zc*QX|9~O-S*{M)pVpNdHC}#cYQ(n#Kh;BWtJsp>yiz?^5(m6MOF(_Y4^`9E+e=x|q z65^}`glE#C`!kC582>_Q;KHbAG5V9gP5k;FB0u;YE&uV)ejEJN&jUaIh555z*njw8 z^!@MKKKwBJgKMGpUK{=J9nYt4ldr$yc+;3GBlGUd z=iRHPLkmlh;rUE@A-z01JU)@0j0d8b*i<|`=N*|0h3CELF>i3rmRydf&Ia6zzT~Pu zbSmOs3Jx!uVrSgmGr0Yf1s`=%6FT=P6F#retVnccCFB{9Jf*hH33b!3c0r1cafxXj zG{-~FbF_0j;#40tEpUwh_7Q$CC^Fa~y7Fu;z15`Gn-n&`$Y25WxYod|^HiDu#3Gl0 zkVvN+k|Au!Edoq3G0s*v`n3k0)YJ}X`$VPznZ8+RZX9yAijCa^zILIuMXWvnY8&`y zi$d8hku>)pja;OmUsof-t7P&rKzINV9Z)-Dlx+B(J6yY84%2+P;y?*gQQgFb=yBC!fq1rof=ys>_ zZjAqRTy~odxm~BdLkyMmX-kKYI*qgn0jp(jGoWeI>)X{-EkJb1bSEI9K}FOUyfsq$ zQKh$1VyqQedZokwgtjS69ROS}zz5Z;cA2hQ3DHKMREu)7s7h%d0NkRZhe;07)%T|mU7O*`PE3l0axsepm8d?0MXpdCiYAZQ)Ij9G<#M5msC z!AXdlggcTTXBh4ABD}b^-%arSCS}G6rL~%*K{8^IXRPudC5aO}KOuG-A*)VmgVhdz zXE$_Pw5@()pOa{e6ADS9HcYf9t?g0mP=e?kAvvQ~(IPc45fm?Z`X>|0g|K8a%ul4{ zV^R5BTyr+2x|jkk2V@uBs?#aWd{nR&5v+y8mqxm-WO%28ob_SR11ZTvDcNdTww#u& zW~DQufBz4oKmW&>zx(CbZ+?^h`=7*r^~3Owe&GD^kF7uZf%p6GxIg?b`q^v4AHElQ z@6GrRUUPl$Zv3?u`C{tgL$OQe-51v*YY#*wuB1}uGh?UIGnXc( zPS2zl63NkcIujTV1Sg!aHJ|6SC%oiMtOt^3e1ZG@kxQPD(}B@5p7~DUAEx-IS*4_; zIxich1~s~zg%7lXNFQYDmpM8V#x|a%jc2MC15HAtL8Pqfl{OBF>U;QYY;}`JdQzaQ z6e{-#B*mb*2+`aItG8ulgkSd#-4^73%cuEj7`#0u`I=Att$^g9gLBY3 zcwcge6&|7^zvWkc%O$6W3HRBdI|{PfG4*}0`W_VBN6L$J(*0Wb-AZK%43UnAd??ZC0DjVs)GC5jzoeYC~Qq;DvmYHf4sQ z9{sQjiFphuFEHZK3=`UE5Sj!GX;?df8AgoeX#k%@fk{BMpjM0<*jbPt*RkW)!Gwh$ zcgR9c`LI_#ZPJb#iG&LX_|+ksAZ(S{jG)7bhRv!V&huhIzqvn*^E~E0r>)0tKM^$4 zr7TTjSYO7%iR-x;(?HVBo$!dpJp8$sVAZFXcfuo4*@Rm?;@3{u^{0HuN(5L8182S9 zrI=zlqqrO!x|A6_Gt9jd<6iQMF2w{7Mb+ms(Ak)LH7P$E=dOZ|@$hec<@xz%;g5dk{@_~j-8YjTy_%ve|M%Xres<0M{&yX(z3O`F-Ow|y zB_De%bLH{WV^_nMAGBP)8ael1XnH-oc*ZxfoJgO|%q@;iE=DFt1DVP3r9@~ho?Z`) z&csI7UD5S$dOeyx8w{Rt#x9sME8frrQ*g!ao_E_$JE$3xW!CJR1p}uMY*uGkli$*UutVZ03+Da=O-4JT+#_WRzzgS`v%02xW17B=vSDNe8>SndNR}Qy} zO@mURj&Et;lFf3Ug{!FNKrI5%i6P~2DZ8pieqsQw=PRrDP{oj>gd;!17w$)8_n@*n zjo{ZTf_o_T-A3s*+`KyjvcGmI|AOLwJtVu^Hh8C#d$(VD$UIaU=)W%@x+^sFE&I?n zz5Kgyqx5!!Tcj72>fl3C(cQ4H43-?yLi>5(LAj1&nv zF`1)Lt?fj0JqX!?6TKRu4y5X!V4En=t8&)~?I)E$H= z@CigA(9*Q5-BSD=aNdOV8$fxUbLW53{=P~i(*3J;t@3D7=@SdP`C~WE zTnuVXMO3u?b2-I7?NM9^^UsDArz5<%z>oi<{};dW{PG_nfAfRUpZ+xU_dkyP^oP;! z|4raWABI1@7Ww$~@JAn{uDu<7`&#sqSFInv9C+-4(N&CZ3 zcrH8?UA!7xJe!=j?9ZGDBo@4x>DcsmWPEgNd1hj1BDppZU(LkVLfIuxX3?HKyKBzkT6EYK43SkJIt4{ml$O&f!-~{=f$vxoJC_GcQv&P6 z5Sr`)$JqLDAu%Py(?hyZE)wBD0Ul!Rv|BsvrdGn(2UGnR)vI;ONRP~Hm77Su6M!9R z$O)+(c7fZ&x0pLkzCMkUE4K?|?ry%Vn}>9X^>qT|C|B1k)b>KUZjGT?L3WExjS|gq zp{hm%AMKOZ42f#_oXR0_^`P_^kCuF0ai6k$5ZJF2--n8CBf-Bk$iIs7zGfEQhD-m- z1bo$re$}q{iii7GChlEk(S1%a%iC8%u@5@A2SOs2h5a48?;d0CH%-EC5c0cp(r-iZ z@4(#q6zpQIqDZMIRdNq%WCvu5a*m>c2i8d7BST;r7d$S|)d`43xw#%9j{({y0`1r0 z-CAp%jH(Bn-AYe8=;@VNn-pZ78tD`wEmHa|#)hx~80|w~j#0_SV2ugGY*v^e>9G>( zG=UaM>mo7AOb?q30mKzG+TEDNsR~kxFr^7NF^^53uu&PeHtWPP2J4*0IH534>MWBQ zeO9GkpsR|IO_A(zdtb~XPdMapN}ja|ChfdYqcmfKlTPKhofiuT!rsAnfFE)KE~7Gl zE0Z>9N;}|#*iJ)Vz`%)^1u=pX#k!niug}ySwTKc1VH%YWoB2~_?zmaCKq)7Df-yID zIoLlP99oVlR$QvNi0V`lT}z?Me#5lKI`1)@4(Qgx>Qh0<@|b#cMzJ)kJQbFm4@%Zt z((@kih2h@ik-pOtzxrw7w|^V{?JooW_>08vei;1OPXj;r!2j6?fnRiu_U`S-u^QtbKfdY*pD{p5@O$6g3M{-A&L3D3&a=}quE zymNXzH9g}^jl@!uBjefh$V_}8J~lnUtbLeG%$;|PoTajt@WhHUy5I^fQPEj4x@3#Z zx_z_GlX6W` zfH}n))1cPahTD5>u4c;ILAeLK#x}QA;I+#fPBDq|t%S@DDBakA6%&}8y||+f@o-^R zFXCs5sAe_MDaPA5rlwv)?I6-QVCWFzbpTnX(HtLA(MHa3w!V&omUSyCyCf%i_+>&> zd8gz=mw10Cemht9ZJ}hJLUR`&{5r(D17+VvcLYYsT?WDJpzsc>{NEGe+pV12%!5Uy z{@e9Kce(rTGY@=+|hkf#Czih&x%97$K3pD0ePPuubK3UQ~nDX+ScAm#5auK39A@UjeBOpHj z^k<0v5w$pG5rxTqpPm!6%R{I-OQ=&eQNrFkPD-at@?}yn?-x(`M5p7D84ob+(k=z` z%i};cW0-VV)?Cn;sPTN9T#D$IgO)L+6sR1-od)!o3*ftc>(7P5t~w zlfV4Q*snf~{fD2W{^3{gzxg!r>mMe6`BCB*uRDM9ruDN|?Vr8jc=vVZ`|tTad)fEF z_skzXZ~Nfc;I)^6uRrU5=GFLP&xbEO7CHZTeC46xxvS}kwa~uQ8(i(GY5tf=NFD>~8YMrCy?P}wRu%vRKP^N#e0%KPE69{4UU z`W=Dvn}foy^Mzjr+4pET_ei++0K$7<{|a+-#^%Pc&PJue^(W!y++hk!edwQ z_=h;k8kO=0-%usOYWZj*plR2D9cn|9oNS@nuM}@k*-zr$lbEjqGq(e_E~9M_vv=vR zHZ|NS)OARaUY>kFsFcBK834gLwbTg9aa=_i2#3RFcMujcs5hc^#6-bnJMJ>TCb!P- z06h-9*=MxdOd%)bw-`eXGVY|tFxNCrjcBlGt#Jv!=23VW){dFrF+w_G1;+i-*$^=A zg%>06gcF=|YDPT3cvLd!6O2Z<;|_M(Dv8;6Zky0W4EarcVY16-;3pt%MAMT1hlWkP zA>&X85=V5hm|2y!sS-BLjEytzlT6ygbEIa$qMC8YRz1>X2e9NbtYz?tG%+5w&V}@g zas6VDTuSTDkLgZj3`--L#Yto|iDtd{tY0%7l*~Kji(%<&3_1FFoUV@~O}>&jlWQJn+y}@7n$0xl5k8EAhp}$lNLa+GKobEIc_Ho}L=W~j>GQ#f%htpxb84Q9E?Y*kRAho2o^wu}v5$@0rpI)%Q|Ro9IyI|y zuOfjJscn`YSd|lNTwAu!HYzn`IJS`?EIg!)f`)`r?H<(o`8rFtftG)~6(+h&M304P zB7=h-V!&k-n#oR+vBL!QdX4=yXb`jX8@%mMa1eKPBCZaese|um^5R>%B+IWkLO4QFnb6l>C)VdOJM$9ekiz+x;C2Z=Ye{4*kG=8uor| z-+tB5Ju3DAwEbRQ2TRPpPuW{0;+AlFiv^tf_-#kJduq7@kK#eCrb z1$Z139a8`ma=bx<)u5U-0Be&P8)ZZjmui=o+AzExp?dY&HVAJrXxr452CcSTgEuR% z9zG%v=@ep6B2~z=sFB3wE(78;>76#jN0}{V(oTS85=M-uRZie4Ck(nBDyLPQB29ju z&S7`Nt(F*RaU;5b&YsW_vjDtCs3vgbidr>`sD_QYEH0nc1H*)9%qJQ*igUB>oDnxKVjptR*1l5|anWOet}rGD%R4>Vp<#j(G)gjN`Gj5& zL zsg!PR1X@fBmb379T(IH=7M#LK4}aFrp9}ELBzWi3|NKwMfBE~!|NEz@|MH8`fBJOz zKYtee`=3RA`=iLOei8nsPh-D*C;SgDgn#+H)X(3G|MacVYcC|;e%Al;E8aJs_r3b4 z?X~CJ&%cy>^4aL+M7N?Wh`RIHmemXmIHa$1*pPmYj zuDM3mZHaT9(M!&;bt`ALV)uyL zv?#VL_c#{%i4neaibti`WJCZCgN6)*`-CQUKN95PA&J(;wY%FXdz0QXp!Ez|y**}g zzt+@@=$mZN2@l#}p?WYg8+7#G?lzsT6?AlR%+3Aonn8EdkiL;;s#ECdhm0+3UEL6I zTtuGeGc>dlHG@!bpSnmuYkr_)5UTBm>e#|kuBep5-`^qrX0PBYoWZZLMR&*szakX> zrH1#{Q14yZfxA>)cgQ+#SF^uq6n~Q(xKlk?Y!uvW5brZ6iy=Ns+sA@AEET6%)3jgH zRwC`bN7Z{bkH25gTg9erp3ahPekq?_Chj|~Y^&z>9TwBC6lEZIR3kmg6_oSEWpe1K z*mzV!99Qd`lXm^5&Qxw+fq{$}%#z9(opJ(Djp$W#q-?M77}KH%8`(KE`ZD@wc}IBRMtF}HjetqIj3RPPfbM3i)r0#TsuE5Sqcg) z`niii;dqdfi71x+(v_I({*3&>@W1?1@SlD+@-M#~{^wt({?o6<|MSmd|NXO(-~BrE zkAD;UhYw=Ec_s8u-y8nvi~b+HIsAi{XWoB3^1bK%&%YLW?iKGFPkUZ?%>U|h!AD=o zJov)Mxrbwyu8v&3IJ$HuGPg85HIbN_3N5Y0R~9`NMziOA*+u{Ok|}=5nqIKSmwe$> z`@|)3a@{&Qk0$3$!>hW?lzno_JU3!qo<_6t(Buj>GA#^_3x-pYRCXXbEwE1u+zY+7 zNg*1KCaT12&FYL?r}hTLdrQJ0xML;dZndB z1vaYbak{QSi8d;*76IHWSGB8&lPX<@j%d;->oK55hzx3s3cg;X#!v`>)h1ABG7uzA zArhxW9sl&pusWBMQEcsXv7MRliCbLjvCw_lai=k~xEH){11E zs;E(s)OAO&zOYW7Fb{drjxg5g(b1Z}f5b8{>`>0Q_@idcm`*!Pg3~^2+$Bpzfw8ze z;nalV>XC$I+Aqx{)C(DC%m>Pcd>u^Rs28xHu3-bN#wu&JoaCI9{hj( zEcj2~5B=9`iQl~({plNlkKc}7`!Ms~yCZMD9em~a*vpTFUVPT~!jqowzT|)QyOF1# zOT73*`pKtK7cY)oSf9K+Idgh4y*83spZ1^4_%4rz&j;d{-I+!2$gFvIg^0|VqD$Jy zX(+w|&#vkwmXNsx!$ig~JW8Zv*4cz*F+q%tLkmgK)bL;?%FYb;M<@8c1(9W8&^*I6 zEUM5^C6wVI2??0ws>32E!O?mJM&FRx)9v>4+iZh`yOprCk;YnxtVb;!Cc{Y_Y@m=j zJ8)F5tI+66wdP|eaRf0RQNstgXqiY?rN&ECWR=QU&o!Ow#TwXHeGgJOC_cm$mn$R( zg^GQE_K*s!RBI2&fKs{cJ_)d&ulY7l_6n}-&n2>dqg4DEfAG)6qCe+w|DBNc3b6MZ zaNk!!-d~~pUsDf!l`sCbg!c-8@D4z5uUc_fE;@g? zf2j*qn+z(aUTrlS3Yb9(=mF;Qmlgnz;kvM0Gh!fSb>?xEB?jAL3RgmnkI9K?03U~x zE4X6GCR-#llc;h66--!oi#YutjG6gi7cXp;$4$bdjX&&>&RAuu2I*-NIB(UZC@|oZ zW$Z%$CQSoqZ9vVARG>;qnPepCzg%@2dW{k8AE|2Xi^pL+iL&m#Z%qx3)jBKA)| zjQ+1QJ!e|Pxp=h81eHvGM3W3N0PfA-PHqfdGtd?xeo z6RF28jXZmP^x|CVQg-2i>Cp@0Q!PJf& z5RR~E`8UJ{(6|_g$q9d-)g>~yIa*t<)zs^<4^r-Sj5uL&bV7#X7;;>%Yk^ITxUP~S zk5ak@f~W-w$5C^+*mNJyd|<%v9T8G0!&nMexg=c2BP)gshkK#JJ?0WIe2^n6=cx|$ zsc&avcT3fW#fH1IhI?iDdxoH5uHtKK)n7_Px2h$7HpKh4yutrVDEzlWLw}|2`zj## zYq{|2I@w>+_K&*j>&Vd8M3Q@j!XhRAPGSGO&_Eg3eL&mtbxq4Rkz@N+bq91!_o2Oa zf}LOCioew*zkO(^xMyI$ps#wcsa(b_Rmcv(s>4#W0hS(xImaZzxOO%L$fyB8euqP1sApGB%v6!>Bfwj7_5lHno$fICg7AqId0-k;o=piaF&v;S+x^h zV}_7sNJ+xL4r$qOUH>q}$&g)1Cnw?J2HgW`CwsyLCv1`tJ31N^rhU?QN|6eI@fenl ztKtzXW*288!pXE`G7686DOOUZ@vLQb6iLsb*_1gRL&v?)xXo}nrJfrHR+7TSVb0kp z>G+svB-K4XEm(^3)@2r?nmx_`XKb*KS}<_zsdaW zhtt3Qc=DI;&;8>o6Tf*S`LowEpMDho?2XL3FUMYgI`hKQkyoFKJpXv;;m5;|KA3s% zLh`u_@t4lUpO{TQIX?67*!0Ep*aM@J7t+ILqlt6r$a)~T>`$K$Bu_gtv)1StEOOR3 zyaLT-b=ehoeg&J(YA1(*>69WfsT-Zd(j)TOw0vevIW`K7XC&z{aVEs^jS0vpg>FV_ zjCX@EHX0j%ToQt||9t}vXTRRg!wSr2Alzm)J^t0(>ulNvBiu|{j{%lCz+MWG)h1hw z*?b(aAH!@FGFyqrRLr;ECf45xQMaqD2bA7&zUM%nZC{_Zj7wGVP30VPpImp43*9xO z`%1t5YhwK!km)uEy-$qp8-#A_N59Td-YS*--z44tM%wvj%Ar4#_WikH=-+GlzN!-5 zA`|>I!ns4wy#wsIOUBy=$nRBhishnv%$57Xu{XGY}+wNm`-YwvKTRm`4CaqL3GhY>QMYU9Wf(kYE0j+GPSthR) zE9(G54?uK@EZtIbw}j|b0SanmD@I#HnsyO7Br&p;da)86fXG1<17sAUF{ltDOyUZo z9dg(;W;kI~i(O@;AgawBYScedV33n65VLdPo;z`sLCkzt=ISOM_pe2h~$JNFW zttCNFqZa#w)v`vKPV4j&dTPWM>L@i44Ule!w&kxAbLg{V9AXZR!gV+_Y7mvPrW}$z)KHjR}S$qKU9JF-#`n zSR|}WI)S)Lo{dYhW71ScI+;*UjhZILpve(nGOWsm;1RES+>4!#YA&Ya=QI4(kl^e% z|J0;tW>Gpj!CRcxTpCebwEdTV@&AWkg#Ihz|F`_(-#Y%~SDyd&Y4ksR68rlPGynL} z-0waf`^B}1-+VOp%eT{?y*T;(x3ZtSJ@(d1!>_+K_41QrFFhD|;yK^L55}In-~aH1 z*o)_eAH5WLc53wM#O&j#%!8?sbBT%bvC)-ia5b8IV0idaYaamu_jtDH{D<|pN|)5_^AFgmMFM8Sng_3W@c+!uc&dlCb}Yee6UjDF96ix%r?_@)hr`&YC#w)^vz9mpkVjzXCGs3a zAp==t&>ldv#d=+t1}=h3cS`YZN~pUO*glQ!5YMj-eS6u46*yNxgU3!(V0rJP%6`B!&*MLPIblEFV0iT+H)|2J~p zzf}qT3e|jD%DD$+e@oGKn@spM8UG&M;B6Yg9Rl{(g&kiN*M3V}_Z4N^UjQw)sZZP` z>Azjt^R+(SH`&~;b#{NNzkAC*ueAY2BJ=J!Y)gZ>^TQ-WKeVUrMel$AkB^HAvfBo9zFJ4Ul`1R<=ZzSJ)b@+{^Gp|1uf8)8x3y+3g zelq&hW1(jsj(zu`kw-2jpIFE~k)3-iGx>0O>Oy+{-0;-d)cB=j_+lb_ArXGS8-K)_ zq>Z0NM|RpZnKh=Ti0mvhKdqk|)h&)|7UtmjdFA{fFgmWz#?WjW$R<@YasI@xBog9< z!<=ADm~_h{E{W60cZGW?SD)YC?YFhrOD{`|Be#9TY=rK zG_Z#7JA1U>=-2-{9{TU3=6^3Fzp7DxRiyi>9Q-Sd=4%@9S5%zah3vl;aQ{8O_f~HI zts3rMOXUA|f$HB06@MWY{{w zowD_7qQ<|HbpMrv{a32?uPYnBC1|^y&%TY@`yIi+o!p_@#C^9Zy6=^DlxoFY#w zU3q0iRYm0y#0k)SA3_~502o0U$qEAhvp@K%tg5U$e*Ea4(K#HeI(nS`TU~YZSS1r? zuG*U8wSQJwTXnp;=4f?w75!XQTYbFx&sddzc$PPR*(fVuVX^*<0wBZ!lhzx-=>TLv zo4*j8_*2mHC%#G!vG(=C^{lOWK5S=IRn)Q=fjClmoc_nEtf@a%RbP3Or3EY&Olw0} zolX;LAL~%*t+z5?(P4ED0+=!X$gyBXD|+j#IAUd?7>=l648Tb(%WuW3IKuKn0FE=~ z%CVZ6w?=?KSS6*b##>n|CIyAytVUM17^6)yM@23@9fd$vj5KbdAV?U%>#Y`=jvYv7 z5?Bm|VhAuo2(AWgRx4>NhDf84#!w957-T@;EfVS(SQw$K7Sh#FNJ<*MI2j7cVu6Sj zGqO;dk;%EdDHoS7Lynxr95yXtRc}(5BagYZWlJY+D8z0uh5^pS(e~*ES(J`+(6D*7 zI<~RMk^56%O?}Z&p&E-AUGQb=fZ-pHsoh-kJe#DI0dPgw;!<#4x#ApNQWMqB~emIyErG-TmDld+nzfw|bCE*hXH z2a3R$^>aZxX@H_Uy;P0|ZJ4owf-EGCBd~gd6FLOb>a6v&`0gN{#*|~KUuPoe8g0?J-s^DL~`khQ4+FI#S|@D zb^zAX`io|dl~uwgX(6LiZHp|_u9aj;VL?z<<*k4brll0MZbmQw44bW_I!_iOUz>RW zRx1GMSbio+{e8KFei~iNOIUgOOCs2w8H-a{-iOUtbbwA%K>#L}{AgtZUF!<; zpW~IvLaXwl^(9Or&D9y*PFdZI6jkIAZ1Q?X`SbNlXIGjl(st5lg7Ycs>sj}0#oxNE zigM&&R>V@xk{7XU1c+FQ8j9F-o2LJ?lQyH3{!1%K2q{wTBAFp}mu|5lPU|M^g(6{E zBWa-(UUyqgQB~yi6Oc$(<~RNh4Bd zb0!?4QB#PCMQzput=s6dd@HT>wH0(gOJ_^vRUPx%f

vgDWcWjdj%~(93w$@@KygSm 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�u2jl4vX&rG7mh9`UE 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

2^D2 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 S_b27?C1@oHbb_=^g!F%x#RHZA diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/.cvsignore b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/.cvsignore deleted file mode 100644 index da3c3c514..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/.cvsignore +++ /dev/null @@ -1,11 +0,0 @@ -.depend -config.make -var2conv -var2def -lablgtk -lablgtktop -lablgtktop_t -lablgtkrun -*_tags.c -*_tags.h - diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/CHANGES b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/CHANGES deleted file mode 100644 index f5afeefe0..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/CHANGES +++ /dev/null @@ -1,358 +0,0 @@ -$Id$ - -2000.8.29 - * bugs in color selection reported by Nicolas George - * changed the license - -2000.8.21 - * correct GtkStyle.set_font bug reported by Patrick Doane - -2000.7.27 - * changed GUtil.signal and GUtil.variable for better usability - * suppressed obsolete color settings in tooltips - -2000.6.19 - * patch by Michael Welsh for Gdk regions - -2000.6.15 - * add CList.set_cell_style/set_row_style - * change set_usize/set_uposition into set_geometry - * return an option rather than raise an exception for null pointers - * map empty strings to NULL when meaningful - * Gdk.Font.get_type/ascent/descent - -2000.6.14 - * add GDraw.optcolor for functions with a default (Jerome suggested) - -2000.6.8 - * apply Jerome Vouillon's patch - * changes in GtkSignal and GtkArgv.ml - -2000.6.7 - * create #misc#connect for widget generic signals - -2000.6.6 - * move notebook from GMisc to GPack - * #connect#event, #add_event, #misc#event, #misc#set_events_extension - transferred to #event su-bobject. - * #connect#drag -> #drag#connect. - * #get_type, #connect#disconnect, #connect#stop_emit transferred to #misc. - -2000.5.25 - * split misc.ml into gaux.ml and gpointer.ml - -2000.5.23 - * add GMisc.notebook#get_{tab,menu}_label. Rename nth_page to get_nth_page. - * modified ML signals in GUtil, to allow signals without widget. - -2000.5.22 - * Incompatible!: Change default for ~expand in Box.pack, - Pack.build_options, Table.build_options. Now defaults to false/`NONE. - This means that all options default to false/`NONE, except ~show - (true for all widgets except windows) and ~fill (always true but - effect controlled by ~expand). - * add GtkArgv.get_nativeint and GtkArgv.set_nativeint. - * make offset and length optional in GtkArgv.string_at_pointer. - -2000.5.10 - * rename GtkFrame to GtkBin and GFrame to GBin - * move socket to GBin - -2000.5.9 - * add arrow and image classes to GMisc - * add list and set_item_string methods to GEdit.combo - * add socket and plug classes to GContainer and GWindow - * two new examples: combo.ml and socket.ml - -2000.4.28 - * add GUtil.variable - -2000.4.27 - * add GtkXmHTML widget - -2000.4.26 - * release 1.00 - -2000.4.24 - * merge in changes for ocaml 3.00: label and syntax changes, autolink - * added better visual and colormap handling to Gdk - * GdkObj renamed to GDraw, GtkPixmap moved to GMisc - * Initialize Gtk in gtkInit.cmo/cmx, start a thread in gtkInitThread.cmo. - These are only included in toplevels, link them explicitely or call - GMain.Main.init and GtkThread.start otherwise. - * install to caml standard library - * many other forgotten changes... - -2000.3.02 - * move locale setting inside GtkMain.init, since it requires an - X display - -2000.2.24 - * add checks in add methods, to avoid critical errors - -2000.2.23 - * add dcalendar.ml (submitted by Ken Wakita) and csview.ml - * correct bug in GdkObj.pixmap#line - -1999.12.19 - * release lablGTK beta2 - -1999.12.16 - * upgraded unison to version 1.169 - * radio groups are of type {radio_menu_item,radio_button} obj option, - otherwise you could not use them several times - -1999.12.13 - * added GtkEdit::{insert_text,delete_text} signals - * better syntax highlighting and ergonomy in the browser's shell - -1999.11... - * switched to Objective Caml 3 - * constructors are no longer classes, but simple functions - -1999.10.29 - * changed GtkArgv.get_{string,pointer,object} to return option types - -1999.10.27 - * added radtest/CHANGES for cooperative editing on radtest - -1999.10.21 - * added a UI for unison - (ask bcpierce@saul.cis.upenn.edu about how to get unison) - -1999.10.20 - * corrected CList signals - * moved initialization out of the library, in gtkInit.cmo - -1999.10.15 - * release lablGTK beta1 - -1999.10.13 - * improved gtkThread.ml (no timer) - * modify Sys.argv in place (gtkMain.ml) - * add set_row_data and get_row_data for GtkCList - -1999.10.11 - * bugfixes in Makefile, radtest and lv - -1999.10.6 - * added Gdk.X.flush and Gdk.X.beep - * Gdk.X.flush is exported in GtkMain.Main - -1999.9.9 - * added font selection dialog - -1999.8.25 - * re-added connect#draw - -1999.8.10 - * reduced the number of methods in widget - * moved disconnect and stop_emit to object_signals - * moved ?:after to each signal - * more functions in applications/browser - -1999.8.9 - * Major change: created one set_param method by parameter, - rather than grouping them and using options. - You can get previous versions with tag "changing_set" - * corrected examples, radtest and browser for these changes - * a bit of clean-up in radtest (treew.ml and Makefile) - -1999.8.5 - * corrected a bad bug with indirected pointers in caml heap - -1999.7.15 - * add GdkKeysyms for exotic keysyms - -1999.7.14 - * moved Truecolor inside Gdk - * added COPYING - * prepared for release - -1999.7.12 - * clean up drag-and-drop - -1999.7.9 - * corrected bug in Container.children - * added ML signal support in GUtil - -1999.7.6 - * added DnD, improved radtest (Hubert) - * small corrections (Jacques) - -1999.7.1 - * added some gdk functions related window and ximage - * also added applications/lv, "labl image viewer" with - the camlimage library. - (JPF) - -1999.7.1 - * added applications/lablglade (Koji) - -1999.6.28 - * added applications/radtest (Hubert) - -1999.6.23 - * improved variant conversions for space. - -1999.6.22 - * updated olabl.patch. With this new version you can access fields - of records without opening modules. You can also use several times - the same label in one module. - * examples/GL/morph3d.ml uses it. - -1999.6.21 - * moved event functions to GdkEvent - -1999.6.20 - * new example: radtest.ml (Hubert) - -1999.6.18 - * added GL extension - -1999.6.15 - * grouped set methods into set_ - * added width and height option to all classes - * windows not shown are automatically destroyed by the GC - -1999.6.14 - * added GPack.layout, GPack.packer, GPack.paned, GMisc.notebook, - GRange.scale, GMisc.calendar - * added 3 examples - * #add_events only available on windowed widgets - -1999.6.11 - * added CList widget in GList module, and examples/clist.ml - * improved pixmap abstraction in GdkObj / GPix - -1999.6.10 - * suppressed almost all raw pointers from the code. Pointers are now - either boxed (second field of an abstract block) or marked (lowest - bit set to 1). - -1999.6.9 - * added GtkBase.Object.get_id and GObj.gtkobj#get_id to get an - unique identifier to gtk objects. Nice for hash-tables, etc... - * GUtil.memo is such an hash-table, allowing you to recover an - object's wrapper. - * added a show option to all classes, commanding whether the widget - should be shown immediately. It is by default true on all widgets - except in module GWindow. - * moved non-OO examples to examples/old. Do "cvs update -d old" to - get them. - * changes in Gdk/GtkData/GObj about styles. - -1999.6.8 - * updated olabl.patch - -1999.6.7 - * split gtk.ml into gtk*.ml - -1999.6.5 - * grouped Container focus operations in a "focus" subwidget - -1999.6.4 - * slightly reorganized widget grouping - -1999.6.3 - * disabled gtk_caller - * subtle hack to have GTree get the right interface - * switched completely to the new widget scheme (including examples) - * added olabl.patch to apply to olabl-2.02 to compile new sources - -1999.6.2 - * integrated changes from Hubert in Gtk, GtkObj and testgtk.ml - * added G* modules to replace GtkObj. "make lablgtk2" for it - -1999.6.1 - * added experimental GtkMenu for a cleaner approach to OO (Jacques) - -1999.5.31 - * GtkObj: list, tree and menu_shell inherit from item_container (Jacques) - * Argv.get_{string,pointer,object} may raise Null_pointer (Jacques) - * Support for creating new widgets (Hubert) - -1999.5.28 - * a few stylistic corrections - * added Packer in gtk.ml - -1999.5.27 - * new Gtk.Main.main Gtk.Main.quit and GtkThread.main (for modal windows) - * added x: and y: to Window.setter - * new methods: object#get_type widget#misc#lock_accelerators - widget#misc#visible widget#misc#parent container#set_focus#vadjustment - container#set_focus#hadjustment (could be container#set_focus#adjustment with a dir param) - window#set_modal window#set_position window#set_default_size - window#set_transient_for - menu#set_accel_group - * new classes: handle_box_skel handle_box_signals handle_box - bbox color_selection color_selection_dialog toolbar - and the corresponding modules in gtk.ml - new class type: is_window and method as_window - * new param tearoff: in new_menu_item - new param x: and y: modal: in Window.setter - * Widget.event and Widget.activate return bool - * new example: examples/testgtk.ml and test.xpm - (Hubert) - -1999.5.25 - * upgraded to gtk+-1.2.3 (all examples work) - * suppressed deprecated function calls and corrected examples - * added a patch to use toplevel threads in olabl-2.02 - -1998.12.13 - * upgraded to olabl-2.01 - -1998.12.9 - * replicated Main, Timeout and Grab to GtkObj (no need to open Gtk anymore) - * moved some non standard classes to GtkExt - -1998.12.8 - * added the first application, xxaplay, Playstation audio track - player for linux. (How architecture specific!) (Furuse) - -1998.12.8 - * more widgets in GtkObj - * refined memory management - * all variants in upper case - -1998.12.7 - * after deeper thought, re-introduced the connect sub-object - * simplified GtkObj: use simple inheritance and allow easy subtyping - * updated olabl.diffs for bugs in class functions parsing and printing - * add ThreadObj for concurrent object programming - (Jacques) - -1998.12.3 - * pousse.ml is now a reversi game (idea for strategy ?) - * solved startup bug (a value checker for ocaml is now available) - (Jacques) - -1998.12.2 - * added GdkObj for high level drawing primitives (Jacques) - -1998.11.30 - * removed cast checking for NULL valued widgets (ml_gtk.[ch]) - * module Arg is renamed as GtkArg because of the name corrision with - the module Arg in the standard library - * Makefile : native code compilation added - (Furuse) - -1998.11.29 - * renamed widget_ops sub-object to misc - * various improvements of set functions - (Jacques) - -1998.11.28 - * switched to object-oriented model. GtkObj is now the standard way - to access the library, but not all objects are ready (see README) - * removed inheritance in gtk.ml - (Jacques) - -1998.11.24 - * added inheritance in gtk.ml - -1998.11.22 - * added gtkObj.ml and examples/*_obj.ml - * various modifications in gtk.ml - diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/COPYING b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/COPYING deleted file mode 100644 index d417b8b7e..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/COPYING +++ /dev/null @@ -1,28 +0,0 @@ -This library is made available under the LGPL. -You should have got a copy of the LGPL with Objective Caml. -The LGPL applies to all the files in this directory, but not in -subdirectories. - -For the examples subdirectory, there is no specific licensing policy, -but you may freely take inspiration from the code, and copy parts of -it in your application. - -For the applications subdirectory, stricter rules apply: - -* You are free to do anything you want with this code as long as it is - for personal use. - -* Redistribution can only be "as is". Binary distribution and bug - fixes are allowed, but you cannot extensively modify the code - without asking the authors. - -The authors may choose to remove any of the above restrictions on a -per request basis. - -Authors: - Jacques Garrigue - Hubert Fauque - Jun Furuse - Koji Kagawa - -$Id$ \ No newline at end of file diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/Makefile b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/Makefile deleted file mode 100644 index 23157f267..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/Makefile +++ /dev/null @@ -1,190 +0,0 @@ -# $Id$ -# Makefile for lablgtk. - -TARGETS = var2conv var2def lablgtktop lablgtktop_t lablgtkrun lablgtk - -all: $(TARGETS) - -opt: lablgtkopt - -configure: - @rm -f config.make - @$(MAKE) --no-print-directory -f configure.mk - -depend: - @rm -f .depend - @$(MAKE) --no-print-directory -f configure.mk .depend - -.depend config.make: - @$(MAKE) --no-print-directory -f configure.mk - -COMPILER = $(CAMLC) $(MLFLAGS) -w s -labels -c -LINKER = $(CAMLC) $(MLFLAGS) -COMPOPT = $(CAMLOPT) $(MLFLAGS) -w s -labels -c -LINKOPT = $(CAMLOPT) $(MLFLAGS) -TOPLEVEL = ocamlmktop $(MLFLAGS) - -include config.make - -INSTALLDIR = $(LIBDIR)/lablgtk -LABLGLDIR = $(LIBDIR)/lablGL - -MLLIBS = lablgtk.cma -CLIBS = liblablgtk.a -MLLINK = unix.cma str.cma - -ifdef DEBUG -CFLAGS = -g $(GTKCFLAGS) -MLLINK += -cclib -lcamlrund -MLFLAGS = -g -else -CFLAGS = -O -DGTK_NO_CHECK_CASTS -DGTK_DISABLE_COMPAT_H $(GTKCFLAGS) -endif - -THFLAGS = -thread -THLINK = unix.cma threads.cma - -ifdef USE_CC -CCOMPILER = $(CC) -c -I$(LIBDIR) $(CFLAGS) -else -CCOMPILER = ocamlc -c -ccopt "$(CFLAGS)" -endif - -ifdef USE_GL -MLFLAGS += -I $(LABLGLDIR) -MLLINK += lablgl.cma -MLLIBS += lablgtkgl.cma -CLIBS += liblablgtkgl.a -GLLINK = -cclib -llablgtkgl -cclib -lgtkgl -GLMLOBJS = glGtk.cmo -GLCOBJS = ml_gtkgl.o - -endif - -ifdef USE_GNOME -MLLIBS += lablgnome.cma -CLIBS += liblablgnome.a -GNOMEMLOBJS = gtkXmHTML.cmo gHtml.cmo -GNOMECOBJS = ml_gtkxmhtml.o -endif - -# Rules -.SUFFIXES: .ml .mli .cmo .cmi .cmx .c .o .var .h .opt .def -.c.o: - $(CCOMPILER) $< -.ml.cmo: - $(COMPILER) $< -.mli.cmi: - $(COMPILER) $< -.ml.cmx: - $(COMPOPT) $< -.var.h: - ./var2def < $< > $@ -.var.c: - ./var2conv < $< > $@ - -# Targets -COBJS = ml_gtk.o ml_gdk.o ml_glib.o wrappers.o -MLOBJS = gaux.cmo gpointer.cmo glib.cmo gdk.cmo gdkEvent.cmo gdkKeysyms.cmo \ - gtk.cmo gtkArgv.cmo gtkSignal.cmo \ - gtkData.cmo gtkBase.cmo gtkPack.cmo gtkButton.cmo \ - gtkMenu.cmo gtkMisc.cmo gtkWindow.cmo gtkTree.cmo gtkList.cmo \ - gtkBin.cmo gtkEdit.cmo gtkRange.cmo gtkMain.cmo gtkNew.cmo \ - gDraw.cmo \ - gObj.cmo gMain.cmo gData.cmo gContainer.cmo gPack.cmo gButton.cmo \ - gMenu.cmo gMisc.cmo gWindow.cmo gTree.cmo gList.cmo gBin.cmo \ - gEdit.cmo gRange.cmo gUtil.cmo -THOBJS = gtkThread.cmo -INITOBJS = gtkInit.cmo -THINITOBJS = gtkThInit.cmo -ALLOBJS = $(MLOBJS) $(GLMLOBJS) $(GNOMEMLOBJS) $(THOBJS) \ - $(INITOBJS) $(THINITOBJS) - -lablgtktop: $(CLIBS) $(MLLIBS) $(INITOBJS) - $(TOPLEVEL) -o $@ $(MLLINK) -ccopt -L. $(MLLIBS) $(INITOBJS) - -lablgtktop_t: $(CLIBS) $(MLLIBS) $(THOBJS) $(INITOBJS) $(THINITOBJS) - $(TOPLEVEL) $(THFLAGS) -o $@ $(THLINK) $(MLLINK) \ - -ccopt -L. $(MLLIBS) $(THOBJS) $(INITOBJS) $(THINITOBJS) - -lablgtk: Makefile config.make lablgtk.in - sed -e "s|@INSTALLDIR@|$(INSTALLDIR)|g" \ - -e "s|@LABLGLDIR@|$(LABLGLDIR)|g" \ - -e "s|@LIBDIR@|$(LIBDIR)|g" \ - < lablgtk.in > $@ - chmod 755 $@ - -lablgtkrun: $(CLIBS) $(MLLIBS) - $(LINKER) -o $@ -make-runtime $(MLLINK) -ccopt -L. $(MLLIBS) - -lablgtkopt: $(CLIBS) $(MLLIBS:.cma=.cmxa) $(INITOBJS:.cmo=.cmx) \ - $(THOBJS:.cmo=.cmx) - -install: - if test -d $(INSTALLDIR); then : ; else mkdir -p $(INSTALLDIR); fi - cp $(ALLOBJS:.cmo=.cmi) $(INSTALLDIR) - cp *.mli $(INSTALLDIR) - cp *.h $(INSTALLDIR) - cp $(ALLOBJS:.cmo=.ml) $(INSTALLDIR) - cp $(MLLIBS) $(THOBJS) $(INITOBJS) $(THINITOBJS) $(INSTALLDIR) - cp $(CLIBS) $(INSTALLDIR) - cp lablgtktop lablgtktop_t $(INSTALLDIR) - cp lablgtk lablgtkrun $(BINDIR) - if test -f lablgtk.cmxa; then \ - cp $(MLLIBS:.cma=.cmxa) $(MLLIBS:.cma=.a) \ - $(INITOBJS:.cmo=.cmx) $(INITOBJS:.cmo=.o) $(INSTALLDIR); fi - if test -f gtkThread.cmx; then \ - cp $(THOBJS:.cmo=.cmx) $(THOBJS:.cmo=.o) $(INSTALLDIR); fi - -liblablgtk.a: $(COBJS) - ar rc $@ $(COBJS) - $(RANLIB) $@ -lablgtk.cma: $(MLOBJS) - $(LINKER) -a -custom -o $@ $(MLOBJS) \ - -cclib -llablgtk $(GTKLIBS) -lablgtk.cmxa: $(MLOBJS:.cmo=.cmx) - $(LINKOPT) -a -o $@ $(MLOBJS:.cmo=.cmx) \ - -cclib -llablgtk $(GTKLIBS) - -liblablgtkgl.a: $(GLCOBJS) - ar rc $@ $(GLCOBJS) - $(RANLIB) $@ -lablgtkgl.cma: $(GLMLOBJS) - $(LINKER) -a -custom -o $@ $(GLLINK) $(GLMLOBJS) -lablgtkgl.cmxa: $(GLMLOBJS:.cmo=.cmx) - $(LINKOPT) -a -o $@ $(GLLINK) $(GLMLOBJS:.cmo=.cmx) - -liblablgnome.a: $(GNOMECOBJS) - ar rc $@ $(GNOMECOBJS) - $(RANLIB) $@ -lablgnome.cma: $(GNOMEMLOBJS) - $(LINKER) -a -custom -o $@ $(GNOMEMLOBJS) \ - -cclib -llablgnome $(GNOMELIBS) -lablgnome.cmxa: $(GNOMEMLOBJS:.cmo=.cmx) - $(LINKOPT) -a -o $@ $(GNOMEMLOBJS:.cmo=.cmx) \ - -cclib -llablgnome $(GNOMELIBS) - -gtkThread.cmo: gtkThread.ml - $(COMPILER) $(THFLAGS) gtkThread.ml - -gtkThread.cmx: gtkThread.ml - if test -f $(LIBDIR)/libthreadsnat.a; then \ - $(COMPOPT) $(THFLAGS) gtkThread.ml; fi - -var2conv: var2conv.cmo - $(LINKER) -o $@ var2conv.cmo - rm -f *_tags.c - -var2def: var2def.cmo - $(LINKER) -o $@ var2def.cmo - rm -f *_tags.h - -clean: - rm -f *.cm* *.o *.a *_tags.[ch] $(TARGETS) - -ml_gtk.o: gtk_tags.c gtk_tags.h ml_gtk.h ml_gdk.h wrappers.h -ml_gdk.o: gdk_tags.c gdk_tags.h ml_gdk.h wrappers.h -ml_gtkgl.o: gtkgl_tags.c gtkgl_tags.h ml_gtk.h ml_gdk.h wrappers.h -ml_gtkxmhtml.o: gtkxmhtml_tags.c gtkxmhtml_tags.h ml_gtk.h ml_gdk.h wrappers.h - -include .depend diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/Makefile.nt b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/Makefile.nt deleted file mode 100644 index bdf5b6cfd..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/Makefile.nt +++ /dev/null @@ -1,147 +0,0 @@ -# $Id$ -# Makefile for lablgtk. - -EXE = .exe -TARGETS = var2conv var2def lablgtk$(EXE) lablgtk_t$(EXE) \ - lablgtkrun$(EXE) config.make - -all: $(TARGETS) - -opt: lablgtkopt - -CAMLC = ocamlc -CAMLOPT = ocamlopt -COMPILER = $(CAMLC) $(MLFLAGS) -w s -labels -c -LINKER = $(CAMLC) $(MLFLAGS) -COMPOPT = $(CAMLOPT) $(MLFLAGS) -w s -labels -c -LINKOPT = $(CAMLOPT) $(MLFLAGS) - -TOPLEVEL = ocamlmktop $(MLFLAGS) -### How to invoke the librarian -MKLIB=lib /nologo /debugtype:CV /out: - -!include config.make.nt - -INSTALLDIR = $(LIBDIR:/=\)\lablgtk -BINDIR = $(LIBDIR:/=\)\..\bin -LABLGLDIR = $(LIBDIR)/lablGL - -CFLAGS = -O -DGTK_NO_CHECK_CASTS -DGTK_DISABLE_COMPAT_H $(GTKCFLAGS) -LDFLAGS = $(GTKLIBS) - -THFLAGS = -thread -THLIBS = unix.cma threads.cma - -!if $(USE_CC) == 1 -CCOMPILER = $(CC) -c -I$(LIBDIR) $(CFLAGS) -!else -CCOMPILER = ocamlc -c -ccopt "$(CFLAGS)" -!endif - -!if $(USE_GL) == 1 -MLFLAGS = $(MLFLAGS) -I $(LIBDIR)/lablGL -GLLINK = -I $(LABLGLDIR) lablgl.cma -cclib -lgtkgl -GLMLOBJS = glGtk.cmo -GLCOBJS = ml_gtkgl.o -!endif - -# Rules -.SUFFIXES: .ml .mli .cmo .cmi .cmx .c .obj .var .h .opt .def -.c.obj: - $(CCOMPILER) $< -.ml.cmo: - $(COMPILER) $< -.mli.cmi: - $(COMPILER) $< -.ml.cmx: - $(COMPOPT) $< -.var.h: - ocamlrun ./var2def < $< > $@ -.var.c: - ocamlrun ./var2conv < $< > $@ - -# Targets -COBJS = ml_gtk.obj ml_gdk.obj ml_glib.obj wrappers.obj $(GLCOBJS) -OLDMLOBJS = misc.cmo glib.cmo gdk.cmo gtk.cmo gdkObj.cmo gtkObj.cmo gtkExt.cmo -MLOBJS = misc.cmo glib.cmo gdk.cmo gdkEvent.cmo gdkKeysyms.cmo \ - gtk.cmo gtkArgv.cmo gtkSignal.cmo \ - gtkData.cmo gtkBase.cmo gtkPack.cmo gtkButton.cmo \ - gtkMenu.cmo gtkMisc.cmo gtkWindow.cmo gtkTree.cmo gtkList.cmo \ - gtkFrame.cmo gtkEdit.cmo gtkRange.cmo gtkMain.cmo gtkNew.cmo \ - gDraw.cmo \ - gObj.cmo gMain.cmo gData.cmo gContainer.cmo gPack.cmo gButton.cmo \ - gMenu.cmo gMisc.cmo gWindow.cmo gTree.cmo gList.cmo gFrame.cmo \ - gEdit.cmo gRange.cmo gUtil.cmo $(GLMLOBJS) -THOBJS = gtkThread.cmo threadObj.cmo -INITOBJS = gtkInit.cmo -THINITOBJS = gtkThInit.cmo -ALLOBJS = $(MLOBJS) $(THOBJS) $(INITOBJS) $(THINITOBJS) - -lablgtk$(EXE): liblablgtk.lib lablgtk.cma $(INITOBJS) - $(TOPLEVEL) -custom -o $@ unix.cma str.cma $(GLLINK) \ - lablgtk.cma $(INITOBJS) - -lablgtk_t$(EXE): liblablgtk.lib lablgtk.cma $(THOBJS) $(INITOBJS) $(THINITOBJS) - $(TOPLEVEL) -custom $(THFLAGS) -o $@ $(THLIBS) str.cma $(GLLINK) \ - lablgtk.cma $(THOBJS) $(INITOBJS) $(THINITOBJS) - -lablgtkrun$(EXE): liblablgtk.lib lablgtk.cma - $(LINKER) -o $@ -make-runtime $(GLLINK) lablgtk.cma - -lablgtkopt: liblablgtk.lib lablgtk.cmxa gtkInit.cmx - -install: - if not exist $(INSTALLDIR) mkdir $(INSTALLDIR) - cp $(ALLOBJS:.cmo=.cmi) $(INSTALLDIR) - cp *.mli $(INSTALLDIR) - cp $(ALLOBJS:.cmo=.ml) $(INSTALLDIR) - cp lablgtk.cma $(THOBJS) $(INITOBJS) $(THINITOBJS) $(INSTALLDIR) - cp liblablgtk.lib $(INSTALLDIR) - cp lablgtk$(EXE) lablgtk_t$(EXE) lablgtkrun$(EXE) $(BINDIR) - if exist lablgtk.cmxa cp lablgtk.cmxa lablgtk.lib gtkInit.cmx gtkInit.obj $(INSTALLDIR) - -liblablgtk.lib: $(COBJS) - $(MKLIB)$@ $(COBJS) - -lablgtk.cma: $(MLOBJS) - $(LINKER) -a -custom -o $@ $(MLOBJS) \ - -cclib -llablgtk $(GTKLIBS) - -lablgtk.cmxa: $(MLOBJS:.cmo=.cmx) - $(LINKOPT) -a -o $@ $(MLOBJS:.cmo=.cmx) \ - -cclib -llablgtk $(GTKLIBS) - -gtkThread.cmo: gtkThread.ml - $(COMPILER) $(THFLAGS) gtkThread.ml - -threadObj.cmo: threadObj.ml - $(COMPILER) $(THFLAGS) threadObj.ml - -gtkThread.cmx: gtkThread.ml - $(COMPOPT) $(THFLAGS) gtkThread.ml - -threadObj.cmx: threadObj.ml - $(COMPOPT) $(THFLAGS) threadObj.ml - -var2conv: var2conv.cmo - $(LINKER) -o $@ var2conv.cmo - rm -f *_tags.c - -var2def: var2def.cmo - $(LINKER) -o $@ var2def.cmo - rm -f *_tags.h - -clean: - rm -f *.cm* *.obj *.lib *_tags.[ch] $(TARGETS) - -config.make: config.make.nt - cp config.make.nt config.make - -depend .depend: - ocamldep *.ml *.mli > .depend - -ml_gtk.obj: gtk_tags.c gtk_tags.h ml_gtk.h ml_gdk.h wrappers.h -ml_gdk.obj: gdk_tags.c gdk_tags.h ml_gdk.h wrappers.h -ml_gtkgl.obj: gtkgl_tags.c gtkgl_tags.h ml_gtk.h ml_gdk.h wrappers.h - -!include .depend diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/README b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/README deleted file mode 100644 index eabc247ec..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/README +++ /dev/null @@ -1,238 +0,0 @@ - - LablGTK : an interface to the GIMP Tool Kit - - -Needed: - ocaml-3.00 - gtk-1.2.x - gmake (there is no standard for conditionals) - -How to compile: - - You should normally not need to modify Makefiles. - First type "make configure ". - Options are - USE_CC=1 to use $(CC) rather than gcc - USE_GL=1 to compile with OpenGL support (see lower) - - Then just type "make" to build the library and toplevels. - - On FreeBSD, you need to link with libxpg4.so for Japanese - output. - -Contents: - - gdk.ml low-level interface to the General Drawing Kit - gtk.ml low-level interface to the GIMP Tool Kit - gtkThread.ml main loop for threaded version - g[A-Z]*.ml object-oriented interface to GTK - gdkObj.ml object-oriented interface to GDK - - lablgtk toplevel - - examples/*.ml various examples - applications/* applications using the library - radtest a very experimental RAD for lablgtk - (by Hubert Fauque) - browser the begin of a port of OCamlBrowser - (by Jacques Garrigue) - unison a frontend for the Unison file synchronizer - see the README for details. - -Upgrading from lablgtk-1.00: - There are a few incompatibilities between this version and the - previous release. We do not describe them all, since usually a type - error message will inform you. - * all signals are no longer under #connect. #connect#event changed - to #event#connect, and some signals are under #misc#connect or - #grab#connect. See lower for a description of the new widget - structure. - * some defaults changed. In particular GPack.box#pack have now all - its parameter defaulting to false rather than true. See lower for - the new default policy. Beware that this does not cause type - errors, just changes in the aspect. - -How to run the examples: - In the examples directory just type: - lablgtk -labels examples/???.ml - - Before installing lablgtk you have to be more explicit: - ../lablgtktop -labels -w s -I .. ???.ml - -How to link them: - lablgtktop contains an extra module GtkInit, whose only contents is: - let locale = GtkMain.Main.init () - You must either add this line, or add this module to your link, - before calling any Gtk function. - ocamlc -I CAMLLIB/lablgtk -labels -w s lablgtk.cma gtkInit.cmo ???.ml -o ??? - -How to use the threaded toplevel: - - % lablgtk -thread (or lablgtktop_t before installing) - Objective Caml version 3.00 - - # let w = GWindow.window ~show:true ();; - - You should at once see a window appear. - The GTK main loop is running in a separate thread. Any command - is immediately reflected by the system. - Beware that you cannot switch threads within a callback, that is the - only thread related command you may use in a callback is - Thread.create. On the other hand, all newly created threads will be - run directly by the caml main loop, so they can use all thread - operations. - -Structure of the (raw) Gtk* modules: - - These modules are composed of one submodule for each class. - Signals specific to a widget are in a Signals inner module. - A setter function is defined to give access to set_param functions. - -Structure of the G[A-Z]* modules: - - These modules provide classes to wrap the raw function calls. - Here are the widget classes contained in each module: - - GDraw Gdk pixmaps, etc... - GObj gtkobj, widget, style - GData data, adjustment, tooltips - GContainer container, item_container - GWindow window, dialog, color_selection_dialog, file_selection, plug - GPack box, button_box, table, fixed, layout, packer, paned, notebook - GBin scrolled_window, event_box, handle_box, frame, - aspect_frame, viewport, socket - GButton button, toggle_button, check_button, radio_button, toolbar - GMenu menu_item, tearoff_item, check_menu_item, radio_menu_item, - menu_shell, menu, option_menu, menu_bar, factory - GMisc separator, statusbar, calendar, drawing_area, - misc, arrow, image, pixmap, label, tips_query, - color_selection, font_selection - GTree tree_item, tree - GList list_item, liste, clist - GEdit editable, entry, spin_button, combo, text - GRange progress, progress_bar, range, scale, scrollbar - - While subtyping follows the Gtk widget hierarchy, you cannot always - use width subtyping (i.e. #super is not unifiable with all the - subclasses of super). Still, it works for some classes, like - #widget and #container, and allows subtyping without coercion towards - these classes (cf. #container in pousse.ml for instance). - - Practically, each widget class is composed of: - * a coerce method, returning the object coerced to the type widget. - * an as_widget method, returning the raw Gtk widget used for packing, etc... - * a connect sub-object, allowing one to widget specific - signals (this is what prevents width subtyping in subclasses.) - * a misc sub-object, giving access to miscellanous functionality of - the basic gtkwidget class, and a misc#connect sub-object. - * an event sub-object, for Xevent related functions (only if the widget - has an Xwindow), and an event#connect sub-object. - * a grab sub-object, containing drag and drop functions, - and a grab#connect sub-object. - * widget specific methods. - - Here is a diagram of the structure (- for methods, + for sub-objects) - - coerce : widget - - as_widget : Gtk.widget obj - - destroy : unit -> unit - - ... - + connect : mywidget_signals - | - after - | - signal_name : callback:(... -> ...) -> GtkSignal.id - + misc : misc_ops - | - show, hide, disconnect, ... - | + connect : misc_signals - + event : event_ops - | - add, ... - | + connect : event_signals - + grab : grab_ops - | - ... - | + connect : grab_signals - - You create a widget by [. options ... ()]. - Many optional arguments are admitted. The last two of them, packing: - and show:, allow you respectively to call a function on your newly - created widget, and to decide wether to show it immediately or not. - By default all widgets except toplevel windows (GWindow module) are - shown immediately. - -Default arguments: - For many constructor or method arguments, default values are provided. - Generally, this default value is defined by GTK, and you must refer - to GTK's documentation. - For ML defined defaults, usually default values are either false, 0, None - or `NONE, according to the expected type. - Important exceptions are ~show, which default to true in all widgets - except those in GWindow, and ~fill, which defaults to true or `BOTH. - -Note about unit as method argument: - - O'Caml introduces no distinction between methods having side-effects - and methods simply returning a value. In practice, this is - confusing, and awkward when used as callbacks. For this reason all - methods having noticeable side-effects should take arguments, and - unit if they have no argument. - -Memory management: - - Important efforts have been dedicated to cooperate with Gtk's - reference counting mechanism. As a result you should generally be - able to use Gdk/Gtk data structures without caring about memory - management. They will be freed when nobody points to them any more. - This also means that you do not need to pay too much attention to - whether a data structure is still alive or not. If it is not, you - should get an error rather than a core dump. - The case of Gtk objects deserves special care. Since they are - interactive, we cannot just destroy them when they are no longer - referenced. They have to be explicitely destroyed. If a widget was - added to a container widget, it will automatically be destroyed when - its last container is destroyed. For this reason you need only - destroy toplevel widgets. - -GL extension - - You can use lablgtk in combination with LablGL - - * get and install lablGL 0.94 from - http://wwwfun.kurims.kyoto-u.ac.jp/soft/olabl/lablgl.html - * get and install gtkglarea-1.2.x.tar.gz from - http://www.student.oulu.fi/~jlof/gtkglarea/index.html - * reconfigure: "make configure USE_GL=1" - - You can then use the widget GlGtk.gl_area as an OpenGL window. - Some examples are in examples/GL, but basically any LablGL example - can be easily ported. - -Windows port - - A Win32 port is provided. In order to compile it, you will need to - get and unpack glib-dev-????.zip and gtk+-dev-????.zip from - http://www.gimp.org/~tml/gimp/win32/ - Do not forget to get also extralibs-dev-????.zip, since you will - need some of the DLLs. - - Edit config.make.nt, then, using Visual C++, - nmake -f Makefile.nt - nmake -f Makefile.nt opt (if you have an MS Assembler) - Then install with - nmake -f Makefile.nt install - - Since the link is dynamic you will also need to have in your path: - gnu-intl.dll (extralibs), glib-1.3.dll, module-1.3.dll and - gthread-1.3.dll (glib), gdk-1.3.dll and gtk-1.3.dll (gtk+). - - I checked with the 2000-02-02 version of these libraries. - Currently threads do not seem to work, but otherwise everything - seems OK. In particular, you can run all examples, and build - applications\unison as usual. - -Authors: - Jacques Garrigue - Hubert Fauque - Jun Furuse - Koji Kagawa - -Bug reports: - Jacques Garrigue - -$Id$ diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/browser/.cvsignore b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/browser/.cvsignore deleted file mode 100644 index bc09d7470..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/browser/.cvsignore +++ /dev/null @@ -1,3 +0,0 @@ -olabl-src -browser -.depend \ No newline at end of file diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/browser/Makefile b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/browser/Makefile deleted file mode 100644 index 8822e4738..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/browser/Makefile +++ /dev/null @@ -1,41 +0,0 @@ -# $Id$ -# Makefile for lablgtk. - -all: browser - -CAMLC = ocamlc -CAMLOPT = ocamlopt -COMPILER = $(CAMLC) $(MLFLAGS) -labels -w s -c -LINKER = $(CAMLC) $(MLFLAGS) -COMPOPT = $(CAMLOPT) $(MLFLAGS) -labels -w s -c -LINKOPT = $(CAMLOPT) $(MLFLAGS) - -RANLIB = ranlib - -include ../../config.make - -MLFLAGS = -I ../.. -I ocaml-src/utils -I ocaml-src/parsing - -# Rules -.SUFFIXES: .ml .mli .cmo .cmi .cmx .c .o .var .h .opt .def -.ml.cmo: - $(COMPILER) $< -.mli.cmi: - $(COMPILER) $< -.ml.cmx: - $(COMPOPT) $< - -# Targets -MLOBJS = text.cmo file.cmo lexical.cmo shell.cmo editor.cmo - -browser: $(MLOBJS) - $(LINKER) -o $@ toplevellib.cma str.cma unix.cma \ - lablgtk.cma $(MLOBJS) - -clean: - rm -f *.cm* browser - -.depend: - ocamldep *.ml *.mli > .depend - -include .depend diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/browser/README b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/browser/README deleted file mode 100644 index a6f01cee8..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/browser/README +++ /dev/null @@ -1,18 +0,0 @@ - Browser: the beginning of a port of the LablBrowser - -Installation: - -* make a link from a directory where the O'Labl distribution is - compiled to olabl-src - ln -s /path/to/olabl/ocaml-2.02 olabl-src - (actually only the directory parsing needs to be compiled) - -* just type "make" - -Use: - -When you run browser, you just get a customized editor with lexical -coloring. Nothing very fancy. -In the file menu you can open a shell, running olabl as subprocess. - -Jacques Garrigue \ No newline at end of file diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/browser/TODO b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/browser/TODO deleted file mode 100644 index 0c8bb5357..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/browser/TODO +++ /dev/null @@ -1,4 +0,0 @@ -* lexical coloring (done) -* hyperlinks (call signal with position) -* keyboard popup -* protection diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/browser/editor.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/browser/editor.ml deleted file mode 100644 index d4adbfbc7..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/browser/editor.ml +++ /dev/null @@ -1,101 +0,0 @@ -(* $Id$ *) - -open GMain - -class editor ?packing ?show () = - let text = GEdit.text ~editable:true ?packing ?show () in -object (self) - inherit GObj.widget text#as_widget - - val mutable filename = None - - method text = text - - method load_file name = - try - let ic = open_in name in - filename <- Some name; - text#freeze (); - text#delete_text ~start:0 ~stop:text#length; - let buf = String.create 1024 and len = ref 0 in - while len := input ic ~buf ~pos:0 ~len:1024; !len > 0 do - if !len = 1024 then text#insert buf - else text#insert (String.sub buf ~pos:0 ~len:!len) - done; - text#set_point 0; - text#thaw (); - close_in ic - with _ -> () - - method open_file () = File.dialog ~title:"Open" ~callback:self#load_file () - - method save_file () = - File.dialog ~title:"Save" ?filename () ~callback: - begin fun name -> - try - if Sys.file_exists name then Sys.rename ~src:name ~dst:(name ^ "~"); - let oc = open_out name in - output_string oc (text#get_chars ~start:0 ~stop:text#length); - close_out oc - with _ -> prerr_endline "Save failed" - end -end - -open GdkKeysyms - -class editor_window ?(show=false) () = - let window = GWindow.window ~width:500 ~height:300 - ~title:"Program Editor" () in - let vbox = GPack.vbox ~packing:window#add () in - - let menubar = GMenu.menu_bar ~packing:vbox#pack () in - let factory = new GMenu.factory menubar in - let accel_group = factory#accel_group - and file_menu = factory#add_submenu "File" - and edit_menu = factory#add_submenu "Edit" - and comp_menu = factory#add_submenu "Compiler" in - - let hbox = GPack.hbox ~packing:vbox#add () in - let scrollbar = - GRange.scrollbar `VERTICAL ~packing:(hbox#pack ~from:`END) () - and editor = new editor ~packing:hbox#add () in -object (self) - inherit GObj.widget window#as_widget - - method window = window - method editor = editor - method show = window#show - - initializer - window#connect#destroy ~callback:Main.quit; - let factory = new GMenu.factory file_menu ~accel_group in - factory#add_item "Open..." ~key:_O ~callback:editor#open_file; - factory#add_item "Save..." ~key:_S ~callback:editor#save_file; - factory#add_item "Shell" - ~callback:(fun () -> Shell.f ~prog:"ocaml" ~title:"Objective Caml Shell"); - factory#add_separator (); - factory#add_item "Quit" ~key:_Q ~callback:window#destroy; - let factory = new GMenu.factory edit_menu ~accel_group in - factory#add_item "Copy" ~key:_C ~callback:editor#text#copy_clipboard; - factory#add_item "Cut" ~key:_X ~callback:editor#text#cut_clipboard; - factory#add_item "Paste" ~key:_V ~callback:editor#text#paste_clipboard; - factory#add_separator (); - factory#add_check_item "Word wrap" ~active:false - ~callback:editor#text#set_word_wrap; - factory#add_check_item "Read only" ~active:false - ~callback:(fun b -> editor#text#set_editable (not b)); - let factory = new GMenu.factory comp_menu ~accel_group in - factory#add_item "Lex" ~key:_L - ~callback:(fun () -> Lexical.tag editor#text); - window#add_accel_group accel_group; - editor#text#set_vadjustment scrollbar#adjustment; - if show then self#show () -end - -let _ = - Main.init (); - if Array.length Sys.argv >= 2 && Sys.argv.(1) = "-shell" then - Shell.f ~prog:"ocaml" ~title:"Objective Caml Shell" - else - ignore (new editor_window ~show:true ()); - Main.main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/browser/file.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/browser/file.ml deleted file mode 100644 index e9c0cf34f..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/browser/file.ml +++ /dev/null @@ -1,13 +0,0 @@ -(* $Id$ *) - -let dialog ~title ~callback ?filename () = - let sel = - GWindow.file_selection ~title ~modal:true ?filename () in - sel#cancel_button#connect#clicked ~callback:sel#destroy; - sel#ok_button#connect#clicked ~callback: - begin fun () -> - let name = sel#get_filename in - sel#destroy (); - callback name - end; - sel#show () diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/browser/lexical.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/browser/lexical.ml deleted file mode 100644 index 9acb9c060..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/browser/lexical.ml +++ /dev/null @@ -1,155 +0,0 @@ -(* $Id$ *) - -open Parser - -type tags = [`none|`control|`define|`structure|`char|`infix|`label|`uident] - -let colors : (tags * GDraw.color) list Lazy.t = - lazy - (List.map ~f:(fun (tag,col) -> tag, `COLOR (GDraw.color (`NAME col))) - [ `control, "blue"; - `define, "forestgreen"; - `structure, "purple"; - `char, "gray40"; - `infix, "indianred4"; - `label, "brown"; - `uident, "midnightblue"; - `none, "black" ]) - -let tag ?(start=0) ?stop:pend (tw : GEdit.text) = - let pend = Gaux.default tw#length ~opt:pend in - let colors = Lazy.force colors in - tw#freeze (); - let position = tw#position - and text = tw#get_chars ~start ~stop:pend in - let replace ~start:pstart ~stop:pend ~tag = - if pend > pstart then begin - tw#delete_text ~start:(start+pstart) ~stop:(start+pend); - tw#set_point (start+pstart); - tw#insert ~foreground:(List.assoc tag colors) - (String.sub text ~pos:pstart ~len:(pend-pstart)); - end - and next_lf = ref (-1) in - let colorize ~start:rstart ~stop:rend ~tag = - let rstart = ref rstart in - while !rstart < rend do - if !next_lf < !rstart then begin - try next_lf := String.index_from text !rstart '\n' - with Not_found -> next_lf := pend-start - end; - replace ~start:!rstart ~stop:(min !next_lf rend) ~tag; - rstart := !next_lf + 1 - done - in - let buffer = Lexing.from_string text - and last = ref (EOF, 0, 0) - and last_pos = ref 0 in - try - while true do - let token = Lexer.token buffer - and start = Lexing.lexeme_start buffer - and stop = Lexing.lexeme_end buffer in - let tag = - match token with - AMPERAMPER - | AMPERSAND - | BARBAR - | DO | DONE - | DOWNTO - | ELSE - | FOR - | IF - | LAZY - | MATCH - | OR - | THEN - | TO - | TRY - | WHEN - | WHILE - | WITH - -> `control - | AND - | AS - | BAR - | CLASS - | CONSTRAINT - | EXCEPTION - | EXTERNAL - | FUN - | FUNCTION - | FUNCTOR - | IN - | INHERIT - | INITIALIZER - | LET - | METHOD - | MODULE - | MUTABLE - | NEW - | OF - | PARSER - | PRIVATE - | REC - | TYPE - | VAL - | VIRTUAL - -> `define - | BEGIN - | END - | INCLUDE - | OBJECT - | OPEN - | SIG - | STRUCT - -> `structure - | CHAR _ - | STRING _ - -> `char - | BACKQUOTE - | INFIXOP1 _ - | INFIXOP2 _ - | INFIXOP3 _ - | INFIXOP4 _ - | PREFIXOP _ - | QUESTION2 - | SHARP - -> `infix - | LABEL _ - | OPTLABEL _ - | QUESTION - | TILDE - -> `label - | UIDENT _ -> `uident - | LIDENT _ -> - begin match !last with - (QUESTION | TILDE), _, _ -> `label - | _ -> `none - end - | COLON -> - begin match !last with - LIDENT _, lstart, lstop when lstop = start -> - colorize ~tag:`none ~start:!last_pos ~stop:lstart; - colorize ~tag:`label ~start:lstart ~stop; - last_pos := stop; - `none - | _ -> `none - end - | EOF -> raise End_of_file - | _ -> `none - in - if tag <> `none then begin - colorize ~tag:`none ~start:!last_pos ~stop:start; - colorize ~tag ~start ~stop; - last_pos := stop - end; - last := (token, start, stop) - done - with exn -> - colorize ~tag:`none ~start:!last_pos ~stop:(pend-start); - tw#thaw (); - tw#set_position position; - tw#set_point position; - match exn with - End_of_file | Lexer.Error _ -> () - | _ -> raise exn diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/browser/list2.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/browser/list2.ml deleted file mode 100644 index 0d7798a6a..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/browser/list2.ml +++ /dev/null @@ -1,25 +0,0 @@ -(* $Id$ *) - -let rec cut l ~len = - if len <= 0 then [], l else - match l with - a::l -> - let l1, l2 = cut l ~len:(len-1) in - a::l1, l2 - | [] -> - invalid_arg "cut_list" - -let rec chop l ~len = - if l = [] then [] else - let l1, l2 = - try cut_list l ~len - with Invalid_argument _ -> l, [] - in - l1 :: chop l2 ~len - - -let rec iteri_aux ~f:f ~i = function - [] -> () - | a::l -> f ~i a; iteri_aux ~f:f ~i:(i+1) l - -let iteri = iteri_aux ~i:0 diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/browser/shell.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/browser/shell.ml deleted file mode 100644 index fbe0f92a0..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/browser/shell.ml +++ /dev/null @@ -1,255 +0,0 @@ -(* $Id$ *) - -open GdkKeysyms -open Printf - -(* Nice history class. May reuse *) - -class ['a] history () = object - val mutable history = ([] : 'a list) - val mutable count = 0 - method empty = history = [] - method add s = count <- 0; history <- s :: history - method previous = - let s = List.nth history count in - count <- (count + 1) mod List.length history; - s - method next = - let l = List.length history in - count <- (l + count - 1) mod l; - List.nth history ((l + count - 1) mod l) -end - -(* The shell class. Now encapsulated *) - -let protect f x = try f x with _ -> () - -class shell ~prog ~args ~env ?packing ?show () = - let (in2,out1) = Unix.pipe () - and (in1,out2) = Unix.pipe () - and (err1,err2) = Unix.pipe () in - let _ = List.iter ~f:Unix.set_nonblock [out1;in1;err1] in -object (self) - val textw = GEdit.text ~editable:true ?packing ?show () - val pid = Unix.create_process_env - ~prog ~args ~env ~stdin:in2 ~stdout:out2 ~stderr:err2 - val out = Unix.out_channel_of_descr out1 - val h = new history () - val mutable alive = true - val mutable reading = false - val mutable input_start = 0 - method text = textw - method alive = alive - method kill () = - textw#set_editable false; - if alive then begin - alive <- false; - protect close_out out; - List.iter ~f:(protect Unix.close) [in1; err1; in2; out2; err2]; - try - Unix.kill ~pid ~signal:Sys.sigkill; - Unix.waitpid pid ~mode:[]; () - with _ -> () - end - method interrupt () = - if alive then try - reading <- false; - Unix.kill ~pid ~signal:Sys.sigint - with Unix.Unix_error _ -> () - method send s = - if alive then try - output_string out s; - flush out - with Sys_error _ -> () - method private read ~fd ~len = - try - let buf = String.create len in - let len = Unix.read fd ~buf ~pos:0 ~len in - if len > 0 then begin - textw#set_position textw#length; - self#insert (String.sub buf ~pos:0 ~len); - input_start <- textw#position; - end; - len - with Unix.Unix_error _ -> 0 - method history (dir : [`next|`previous]) = - if not h#empty then begin - if reading then begin - textw#delete_text ~start:input_start ~stop:textw#position; - end else begin - reading <- true; - input_start <- textw#position - end; - self#insert (if dir = `previous then h#previous else h#next); - end - val mutable lexing = false - method private lex ~start ~stop:e = - if not lexing && start < e then begin - lexing <- true; - Lexical.tag textw ~start ~stop:e; - lexing <- false - end - method insert ?(lex=true) text = - let start = Text.line_start textw in - textw#insert text; - if lex then self#lex ~start ~stop:(Text.line_end textw) - method private keypress c = - if not reading & c > " " then begin - reading <- true; - input_start <- textw#position - end - method private return () = - if reading then reading <- false - else input_start <- textw#position; - textw#set_position (Text.line_end textw); - let s = textw#get_chars ~start:input_start ~stop:textw#position in - h#add s; - self#send s; - self#send "\n" - method private paste () = - if not reading then begin - reading <- true; - input_start <- textw#position; - end - initializer - textw#event#connect#key_press ~callback: - begin fun ev -> - if GdkEvent.Key.keyval ev = _Return && GdkEvent.Key.state ev = [] - then self#return () - else self#keypress (GdkEvent.Key.string ev); - false - end; - textw#connect#after#insert_text ~callback: - begin fun s ~pos -> - if not lexing then - self#lex ~start:(Text.line_start textw ~pos:(pos - String.length s)) - ~stop:(Text.line_end textw ~pos) - end; - textw#connect#after#delete_text ~callback: - begin fun ~start:pos ~stop -> - if not lexing then - self#lex ~start:(Text.line_start textw ~pos) - ~stop:(Text.line_end textw ~pos) - end; - textw#event#connect#button_press ~callback: - begin fun ev -> - if GdkEvent.Button.button ev = 2 then self#paste (); - false - end; - textw#connect#destroy ~callback:self#kill; - GMain.Timeout.add ~ms:100 ~callback: - begin fun () -> - if alive then begin - List.iter [err1;in1] - ~f:(fun fd -> while self#read ~fd ~len:1024 = 1024 do () done); - true - end else false - end; - () -end - -(* Specific use of shell, for LablBrowser *) - -let shells : (string * shell) list ref = ref [] - -(* Called before exiting *) -let kill_all () = - List.iter !shells ~f:(fun (_,sh) -> if sh#alive then sh#kill ()); - shells := [] -let _ = at_exit kill_all - -let get_all () = - let all = List.filter !shells ~f:(fun (_,sh) -> sh#alive) in - shells := all; - all - -let may_exec prog = - try Unix.access prog ~perm:[Unix.X_OK]; true - with Unix.Unix_error _ -> false - -let f ~prog ~title = - let progargs = - List.filter ~f:((<>) "") (Str.split ~sep:(Str.regexp " ") prog) in - if progargs = [] then () else - let prog = List.hd progargs in - let path = try Sys.getenv "PATH" with Not_found -> "/bin:/usr/bin" in - let exec_path = Str.split ~sep:(Str.regexp":") path in - let prog = - if not (Filename.is_implicit prog) then - if may_exec prog then prog else "" - else - List.fold_left exec_path ~init:"" ~f: - begin fun acc dir -> - if acc <> "" then acc else - let prog = Filename.concat dir prog in - if may_exec prog then prog else acc - end - in - if prog = "" then () else - let reg = Str.regexp "TERM=" in - let env = Array.map (Unix.environment ()) ~f: - begin fun s -> - if Str.string_match ~pat:reg s ~pos:0 then "TERM=dumb" else s - end in - let load_path = - List.flatten (List.map !Config.load_path ~f:(fun dir -> ["-I"; dir])) in - let args = Array.of_list (progargs @ load_path) in - let current_dir = ref (Unix.getcwd ()) in - - let tl = GWindow.window ~title ~width:500 ~height:300 () in - let vbox = GPack.vbox ~packing:tl#add () in - let menus = GMenu.menu_bar ~packing:vbox#pack () in - let f = new GMenu.factory menus in - let accel_group = f#accel_group in - let file_menu = f#add_submenu "File" - and history_menu = f#add_submenu "History" - and signal_menu = f#add_submenu "Signal" in - - let hbox = GPack.hbox ~packing:vbox#add () in - let sh = new shell ~prog ~env ~args ~packing:hbox#add () in - let sb = - GRange.scrollbar `VERTICAL ~adjustment:sh#text#vadjustment - ~packing:hbox#pack () - in - - let f = new GMenu.factory file_menu ~accel_group in - f#add_item "Use..." ~callback: - begin fun () -> - File.dialog ~title:"Use File" ~filename:(!current_dir ^ "/") () ~callback: - begin fun name -> - current_dir := Filename.dirname name; - if Filename.check_suffix name ".ml" then - let cmd = "#use \"" ^ name ^ "\";;\n" in - sh#insert cmd; - sh#send cmd - end - end; - f#add_item "Load..." ~callback: - begin fun () -> - File.dialog ~title:"Load File" ~filename:(!current_dir ^ "/") () ~callback: - begin fun name -> - current_dir := Filename.dirname name; - if Filename.check_suffix name ".cmo" or - Filename.check_suffix name ".cma" - then - let cmd = Printf.sprintf "#load \"%s\";;\n" name in - sh#insert cmd; - sh#send cmd - end - end; - f#add_item "Import path" ~callback: - begin fun () -> - List.iter (List.rev !Config.load_path) - ~f:(fun dir -> sh#send (sprintf "#directory \"%s\";;\n" dir)) - end; - f#add_item "Close" ~key:_W ~callback:tl#destroy; - - let h = new GMenu.factory history_menu ~accel_group ~accel_modi:[`MOD1] in - h#add_item "Previous" ~key:_P ~callback:(fun () -> sh#history `previous); - h#add_item "Next" ~key:_N ~callback:(fun () -> sh#history `next); - let s = new GMenu.factory signal_menu ~accel_group in - s#add_item "Interrupt" ~key:_G ~callback:sh#interrupt; - s#add_item "Kill" ~callback:sh#kill; - shells := (title, sh) :: !shells; - tl#add_accel_group accel_group; - tl#show () diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/browser/text.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/browser/text.ml deleted file mode 100644 index 729f3105a..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/browser/text.ml +++ /dev/null @@ -1,16 +0,0 @@ -(* $Id$ *) - -open GEdit - -let line_start ?pos (text : GEdit.text) = - let pos = Gaux.default text#position ~opt:pos in - if pos = 0 then 0 else - let start = max 0 (pos-256) in - let buffer = text#get_chars ~start ~stop:pos in - try start + String.rindex buffer '\n' with Not_found -> 0 - -let line_end ?pos (text : GEdit.text) = - let pos = Gaux.default text#position ~opt:pos in - if pos = text#length then text#length else - let buffer = text#get_chars ~start:pos ~stop:(min text#length (pos+256)) in - try pos + String.index buffer '\n' with Not_found -> text#length diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/browser/useunix.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/browser/useunix.ml deleted file mode 100644 index c4860a8ca..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/browser/useunix.ml +++ /dev/null @@ -1,36 +0,0 @@ -(* $Id$ *) - -open Unix - -let get_files_in_directory dir = - try - let dirh = opendir dir in - let rec get_them () = - try - let x = readdir dirh in - x :: get_them () - with - _ -> closedir dirh; [] - in - Sort.list ~order:(<) (get_them ()) - with Unix_error _ -> [] - -let is_directory name = - try - (stat name).st_kind = S_DIR - with _ -> false - -let get_directories_in_files ~path = - List.filter ~pred:(fun x -> is_directory (path ^ "/" ^ x)) - -(************************************************** Subshell call *) -let subshell ~cmd = - let rc = open_process_in ~cmd in - let rec it () = - try - let x = input_line rc in x :: it () - with _ -> [] - in - let answer = it () in - close_process_in rc; - answer diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/browser/widgets.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/browser/widgets.ml deleted file mode 100644 index c27ca9fbb..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/browser/widgets.ml +++ /dev/null @@ -1,34 +0,0 @@ -(* $Id$ *) - -open GObj - -class multibox ~rows ~columns ?(row_view = rows) ?(col_view = columns) - ?packing ?show () = - let sw = - GBin.scrolled_window ~hpolicy:`AUTOMATIC ~vpolicy:`AUTOMATIC - ?show ?packing () in - let vp = GBin.viewport ~shadow_type:`NONE ~packing:sw#add in - let table = - GPack.table ~columns ~rows ~homogeneous:true ~packing:vp#add () in - let buttons = - Array.init ~len:columns - ~f:(fun left -> Array.init ~len:rows - ~f:(fun top -> GButton.button - ~packing:(table#attach ~top ~left ~expand:`BOTH))) - in - object (self) - inherit widget sw#as_widget - method cell ~col ~row = buttons.(col).(row) - initializer - let id = ref None in - id := Some - (sw#event#connect#expose ~after:true ~callback: - begin fun _ -> - may !id ~f:sw#connect#disconnect; - let height = table#misc#allocation.height * row_view / rows - and width = table#misc#allocation.width * col_view / columns in - vp#misc#set_size ~height ~width; - false - end); - table#focus#set_vadjustment vp#vadjustment - end diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/.cvsignore b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/.cvsignore deleted file mode 100644 index a2d75da3e..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/.cvsignore +++ /dev/null @@ -1,3 +0,0 @@ -.depend radtest -*_parser.ml *_parser.mli -*_lexer.ml diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/CHANGES b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/CHANGES deleted file mode 100644 index e87fc0a9a..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/CHANGES +++ /dev/null @@ -1,16 +0,0 @@ -$Id$ - -2000.05.15 - * suppressed treew.ml; replaced by ti*.ml - * new widgets - * less known bugs (Hubert) -1999.10.28 - * re-objectified property.ml - * split it into common.mli/property.ml/propwin.ml - * undo is back - * restructure menu code in main.ml - -1999.10.27 - * simplified property.ml, and corrected treew.ml accordingly. - undo is temporarily disabled. - (Jacques) \ No newline at end of file diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/Makefile b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/Makefile deleted file mode 100644 index 175eca980..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/Makefile +++ /dev/null @@ -1,86 +0,0 @@ -# $Id$ -# Makefile for lablgtk. - -all: radtest - -CAMLC = ocamlc -CAMLOPT = ocamlopt -COMPILER = $(CAMLC) $(MLFLAGS) -c -LINKER = $(CAMLC) $(MLFLAGS) -COMPOPT = $(CAMLOPT) $(MLFLAGS) -c -LINKOPT = $(CAMLOPT) $(MLFLAGS) - -RANLIB = ranlib - -include ../../config.make - -MLFLAGS = -I ../.. -w s -labels - -ifdef DEBUG -CFLAGS = -g $(GTKCFLAGS) -MLFLAGS += -g -else -CFLAGS = -O -DGTK_NO_CHECK_CASTS -DGTK_DISABLE_COMPAT_H $(GTKCFLAGS) -endif - -ifdef USE_CC -CCOMPILER = $(CC) -c -I$(LIBDIR) $(CFLAGS) -else -CCOMPILER = ocamlc -c -ccopt "$(CFLAGS)" -endif - - -# Rules -.SUFFIXES: .ml .mli .cmo .cmi .cmx .c .o .var .h .opt .def -.c.o: - $(CCOMPILER) $< -.ml.cmo: - $(COMPILER) $< -.mli.cmi: - $(COMPILER) $< -.ml.cmx: - $(COMPOPT) $< - -# Targets -MLOBJS = utils.cmo property.cmo propwin.cmo \ - load_parser.cmo load_lexer.cmo tiBase.cmo tiContainer.cmo tiBin.cmo \ - tiButton.cmo tiEdit.cmo tiList.cmo tiMisc.cmo tiPack.cmo tiWindow.cmo \ - tiWidget.cmo main.cmo - -MLSRC = common.mli utils.ml property.mli property.ml propwin.mli \ - propwin.ml \ - load_parser.ml load_lexer.ml tiBase.ml tiContainer.ml tiBin.ml \ - tiButton.ml tiEdit.ml tiList.ml tiMisc.ml tiPack.ml tiWindow.ml \ - tiWidget.ml main.ml - -radtest: $(MLOBJS) libgtk2.a gtk2.cma - $(LINKER) -o $@ lablgtk.cma gtkInit.cmo -I . gtk2.cma \ - $(MLOBJS) - -radtestopt: $(MLOBJS:.cmo=.cmx) libgtk2.a gtk2.cmxa - $(LINKOPT) -o $@ lablgtk.cmxa gtkInit.cmx -I . gtk2.cmxa \ - $(MLOBJS:.cmo=.cmx) - -%.mli %.ml: %.mly - ocamlyacc $< - -%.ml: %.mll - ocamllex $< - -libgtk2.a: gtktree2.o gtktreeitem2.o ml_gtk2.o - ar rc $@ gtktree2.o gtktreeitem2.o ml_gtk2.o - $(RANLIB) $@ - -gtk2.cma: gtkTree2.cmo gTree2.cmo gToolbar2.cmo libgtk2.a - $(LINKER) -a -o $@ gtkTree2.cmo gTree2.cmo gToolbar2.cmo -cclib -lgtk2 - -gtk2.cmxa: gtkTree2.cmx gTree2.cmx gToolbar2.cmx libgtk2.a - $(LINKOPT) -a -o $@ gtkTree2.cmx gTree2.cmx gToolbar2.cmx -cclib -lgtk2 - -clean: - rm -f *.cm* *.o *.a radtest *_parser.ml *_parser.mli *_lexer.ml - -.depend: $(MLSRC) load_parser.ml load_lexer.ml - ocamldep $(MLSRC) load_parser.ml* load_lexer.ml* > .depend - -include .depend diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/README b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/README deleted file mode 100644 index aedd81fff..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/README +++ /dev/null @@ -1,24 +0,0 @@ - Lablgtk RADTEST - -Author: Hubert Fauque, hubert.fauque@inria.fr - -This is an experimental R.A.D. for Lablgtk. -You can compile it simply by make. - - -When radtest starts a new empty project is open; -you can add new windows to this project by clicking on -the window icon at the top of the icons window; - -by clicking on an item in the tree window with the third button -you can add or remove widgets; -you can also drag widgets from the icons window and drop them -on the tree; - -when a widget is selected (click on it in the tree) you can -move it up or down (if its parent is a box) with CTRL-up_arrow -or CTRL-down_arrow; with up_arrow and down_arrow you select -the widget which is above or below the currently selected widget; - -Save the project by Project->Save, and load an already existing -project by Project->Open. diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/aspectframe.xpm b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/aspectframe.xpm deleted file mode 100644 index 66b9ca14d..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/aspectframe.xpm +++ /dev/null @@ -1,33 +0,0 @@ -/* XPM */ -static char *aspectframe_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 6 1", -" c Gray0", -". c #7b7b7b", -"X c #d6d6d6", -"o c #b3cece", -"O c Gray100", -"+ c None", -/* pixels */ -"+++++++++++++++++++++", -"+++++ + +++++++++++", -"+...X X X X......O+", -"+.OOX X X XOOOOO.O+", -"+.OXX X X XXXXXX.O+", -"+.OXXXXXXXXXXXXXXX.O+", -"+.OXXXXXXX.XXXXXXX.O+", -"+.OXXXXXX...XXXXXX.O+", -"+.OXXXXX.X.X.XXXXX.O+", -"+.OXXXXXXX.XXXXXXX.O+", -"+.OXX.XXXX.XXXX.XX.O+", -"+.OX.XXXXX.XXXXX.X.O+", -"+.O................O+", -"+.OX.XXXXX.XXXXX.X.O+", -"+.OXX.XXXX.XXXX.XX.O+", -"+.OXXXXX.X.X.XXXXX.O+", -"+.OXXXXXX...XXXXXX.O+", -"+.OXXXXXXX.XXXXXXX.O+", -"+..................O+", -"+OOOOOOOOOOOOOOOOOOO+", -"+++++++++++++++++++++" -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/button.xpm b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/button.xpm deleted file mode 100644 index 62ebc3074..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/button.xpm +++ /dev/null @@ -1,33 +0,0 @@ -/* XPM */ -static char *button_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 6 1", -" c Gray0", -". c #7b7b7b", -"X c #d6d6d6", -"o c #b3cece", -"O c Gray100", -"+ c None", -/* pixels */ -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+OOOOOOOOOOOOOOOOOO +", -"+OXXXXXXXXXXXXXXXX. +", -"+OXXXXXXXXXXXXXXXX. +", -"+OXXX XXX XXX XX. +", -"+OXX XXX XX XX XXX. +", -"+OXX XXX XX X XXXX. +", -"+OXX XXX XX XXXXX. +", -"+OXX XXX XX X XXXX. +", -"+OXX XXX XX XX XXX. +", -"+OXXX XXX XXX XX. +", -"+OXXXXXXXXXXXXXXXX. +", -"+OXXXXXXXXXXXXXXXX. +", -"+OXXXXXXXXXXXXXXXX. +", -"+O................. +", -"+ +", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++" -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/checkbutton.xpm b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/checkbutton.xpm deleted file mode 100644 index 314ba97ce..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/checkbutton.xpm +++ /dev/null @@ -1,33 +0,0 @@ -/* XPM */ -static char *checkbutton_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 6 1", -" c Gray0", -". c #7b7b7b", -"X c #d6d6d6", -"o c #b3cece", -"O c Gray100", -"+ c None", -/* pixels */ -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++OOOOOOOOOOO+++++", -"+++++OXXXXXXXXX +++++", -"+++++OXXXXXXXX. +++++", -"+++++OXXXXXXXX. +++++", -"+++++OXXXXXXXX. +++++", -"+++++OXXXXXXXX. +++++", -"+++++OXXXXXXXX. +++++", -"+++++OXXXXXXXX. +++++", -"+++++OXXXXXXXX. +++++", -"+++++OX........ +++++", -"+++++O +++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++" -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/clist.xpm b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/clist.xpm deleted file mode 100644 index 2dd61e709..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/clist.xpm +++ /dev/null @@ -1,30 +0,0 @@ -/* XPM */ -static char *clist_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 3 1", -" c Gray0", -". c Gray87", -"X c Gray100", -/* pixels */ -" ", -" ...... ...... ..... ", -" ...... ...... ..... ", -" ...... ...... ..... ", -" ", -" XXXXXX XXXXXX XXXXX ", -" XXXXXX XXXXXX XXXXX ", -" XXXXXX XXXXXX XXXXX ", -" ", -" XXXXXX XXXXXX XXXXX ", -" XXXXXX XXXXXX XXXXX ", -" XXXXXX XXXXXX XXXXX ", -" ", -" XXXXXX XXXXXX XXXXX ", -" XXXXXX XXXXXX XXXXX ", -" XXXXXX XXXXXX XXXXX ", -" ", -" XXXXXX XXXXXX XXXXX ", -" XXXXXX XXXXXX XXXXX ", -" XXXXXX XXXXXX XXXXX ", -" " -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/colorselection.xpm b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/colorselection.xpm deleted file mode 100644 index 0bb0914d0..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/colorselection.xpm +++ /dev/null @@ -1,35 +0,0 @@ -/* XPM */ -static char *colorselection_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 8 1", -" c Gray0", -". c #7b7b7b", -"X c Blue", -"o c Green", -"O c Red", -"+ c #b3cece", -"@ c Gray100", -"# c None", -/* pixels */ -"#####################", -"#####################", -"#####################", -"#####################", -"#####################", -"##................###", -"##.@@@@@@@@@@@@@@. ##", -"##.@@@@@@@@@@@@@@. ##", -"##.@@@@@@@@@@@@@@. ##", -"##.@@OOOoooXXX@@@. ##", -"##.@@OOOoooXXX@@@. ##", -"##.@@OOOoooXXX@@@. ##", -"##.@@OOOoooXXX@@@. ##", -"##.@@@@@@@@@@@@@@. ##", -"##.@@@@@@@@@@@@@@. ##", -"##.@@@@@@@@@@@@@@. ##", -"##................ ##", -"### ##", -"#####################", -"#####################", -"#####################" -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/combo.xpm b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/combo.xpm deleted file mode 100644 index 3b4055b6d..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/combo.xpm +++ /dev/null @@ -1,34 +0,0 @@ -/* XPM */ -static char *combo_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 7 1", -" c Gray0", -". c #7b7b7b", -"X c #d6d6d6", -"o c #b3cece", -"O c Gray87", -"+ c Gray100", -"@ c None", -/* pixels */ -"@@@@@@@@@@@@@@@@@@@@@", -" ", -" +++++++++++++ OOOOO ", -" +++++++++++++ OOO ", -" +++++++++++++ O ", -" ", -" +++++++++++++ ++++++", -" +++++++++++++ XXXXX ", -" +.........+++ XX XX ", -" +++++++++++++ X X ", -" +++++++++++++ XXXXX ", -" +...........+ ", -" +++++++++++++ +++++ ", -" +++++++++++++ +XXXX ", -" +..........++ ..... ", -" +++++++++++++ +++++ ", -" +++++++++++++ XXXXX ", -" +...........+ X X ", -" +++++++++++++ XX XX ", -" +++++++++++++ XXXXX ", -" " -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/common.mli b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/common.mli deleted file mode 100644 index 7050f9f94..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/common.mli +++ /dev/null @@ -1,27 +0,0 @@ -(* $Id$ *) - -type range = - | String - | Int - | Float of float * float - | Enum of string list - | Enum_string of string list - | Adjust - | CList_titles - | File - -class type prop = - object - method name : string (* name of the property *) - method range : range (* range of its values *) - method get : string (* current value *) - method set : string -> unit (* change value *) - method modified : bool (* value differs from default *) - method code : string (* encoded value for the ml code *) - method save_code : string (* encoded value for saving *) - end - -class type tiwidget_base = object - method name : string - method proplist : (string * prop) list -end diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/entry.xpm b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/entry.xpm deleted file mode 100644 index cb9004135..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/entry.xpm +++ /dev/null @@ -1,33 +0,0 @@ -/* XPM */ -static char *entry_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 6 1", -" c Gray0", -". c #7b7b7b", -"X c #d6d6d6", -"o c #b3cece", -"O c Gray100", -"+ c None", -/* pixels */ -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"....................O", -". XO", -". OOOOOOOOOOOOOOOOOXO", -". OOOOOOOOOOOOOOO OXO", -". OOOOOOOO OOOOOO OXO", -". OOOOOOOO OOOOOO OXO", -". OOO OO X OOO OXO", -". OO XOX O O. OO OXO", -". OOOOOO O OOO OO OXO", -". OOO O OOO OO OXO", -". OO XOO O OOO OO OXO", -". OO XOO O OO. OO OXO", -". OOO O OOO OXO", -". OOOOOOOOOOOOOOO OXO", -". OOOOOOOOOOOOOOOOOXO", -".XXXXXXXXXXXXXXXXXXXO", -"OOOOOOOOOOOOOOOOOOOOO", -"+++++++++++++++++++++", -"+++++++++++++++++++++" -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/eventbox.xpm b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/eventbox.xpm deleted file mode 100644 index 73da445d2..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/eventbox.xpm +++ /dev/null @@ -1,34 +0,0 @@ -/* XPM */ -static char *eventbox_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 7 1", -" c Gray0", -". c #7b7b7b", -"X c Blue", -"o c #d6d6d6", -"O c #b3cece", -"+ c Gray100", -"@ c None", -/* pixels */ -"@@@@@@@@@@X+@@@@@@@@@", -"@@@@@@@@@XX+@@@@@@@@@", -"@@@@@@@@XX+@@@@@@@@@@", -"@@@@@@@XX+@@@@@@@@@@@", -"@@@@@@@@XX+@@@@@@@@@@", -"@@@@@@@@@XX+@@@@@@@@@", -"@@@@@@@@@@XX+@@@@@@@@", -"@@@++++++XX++++++ @@@", -"@@@+ooooXX+ooooo. @@@", -"@@@+oooXX+oooooo. @@@", -"@@@+ooooXX+ooooo. @@@", -"@@@+oooooXX+oooo. @@@", -"@@@+ooooooXX+ooo. @@@", -"@@@+oooooooooooo. @@@", -"@@@+oooooooooooo. @@@", -"@@@+oooooooooooo. @@@", -"@@@+............. @@@", -"@@@ @@@", -"@@@@@@@@@@@@@@@@@@@@@", -"@@@@@@@@@@@@@@@@@@@@@", -"@@@@@@@@@@@@@@@@@@@@@" -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/fixed.xpm b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/fixed.xpm deleted file mode 100644 index 2e0481572..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/fixed.xpm +++ /dev/null @@ -1,31 +0,0 @@ -/* XPM */ -static char *fixed_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 4 1", -" c Gray0", -". c #7b7b7b", -"X c #d6d6d6", -"o c Gray100", -/* pixels */ -"oooooooooooooooooooo ", -"oXXXXXXXXXXXXXXXXXX. ", -"oXXXXXXXXXXXXXXXXXX. ", -"oXooooo XXXXXXXXXXX. ", -"oXoXXX. XXXXXXXXXXX. ", -"oXoXXX. XXXXooooo X. ", -"oXo.... XXXXoXXX. X. ", -"oX XXXXoXXX. X. ", -"oXXXXXXXXXXXo.... X. ", -"oXXXXXXXXXXX X. ", -"oXXXXXXXXXXXXXXXXXX. ", -"oXXXXooooo XXXXXXXX. ", -"oXXXXoXXX. XXXXXXXX. ", -"oXXXXoXXX. XXXXXXXX. ", -"oXXXXo.... XXXXXXXX. ", -"oXXXX XXXXXXXX. ", -"oXXXXXXXXXXXXXXXXXX. ", -"oXXXXXXXXXXXXXXXXXX. ", -"oXXXXXXXXXXXXXXXXXX. ", -"o................... ", -" " -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/frame.xpm b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/frame.xpm deleted file mode 100644 index c8c8b5782..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/frame.xpm +++ /dev/null @@ -1,33 +0,0 @@ -/* XPM */ -static char *frame_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 6 1", -" c Gray0", -". c #7b7b7b", -"X c #d6d6d6", -"o c #b3cece", -"O c Gray100", -"+ c None", -/* pixels */ -"+++++++++++++++++++++", -"+++++ + +++++++++++", -"+...X X X X......O+", -"+.OOX X X XOOOOO.O+", -"+.OXX X X XXXXXX.O+", -"+.OXXXXXXXXXXXXXXX.O+", -"+.OXXXXXXXXXXXXXXX.O+", -"+.OXXXXXXXXXXXXXXX.O+", -"+.OXXXXXXXXXXXXXXX.O+", -"+.OXXXXXXXXXXXXXXX.O+", -"+.OXXXXXXXXXXXXXXX.O+", -"+.OXXXXXXXXXXXXXXX.O+", -"+.OXXXXXXXXXXXXXXX.O+", -"+.OXXXXXXXXXXXXXXX.O+", -"+.OXXXXXXXXXXXXXXX.O+", -"+.OXXXXXXXXXXXXXXX.O+", -"+.OXXXXXXXXXXXXXXX.O+", -"+.OXXXXXXXXXXXXXXX.O+", -"+..................O+", -"+OOOOOOOOOOOOOOOOOOO+", -"+++++++++++++++++++++" -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/gToolbar2.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/gToolbar2.ml deleted file mode 100644 index c2ad0a854..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/gToolbar2.ml +++ /dev/null @@ -1,65 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open GtkBase -open GtkButton -open GObj -open GContainer -open GButton - -module Toolbar2 = struct - external set_text : [>`toolbar] obj -> string -> int -> unit = - "ml_gtk_toolbar2_set_text" - external set_icon : [>`toolbar] obj -> [>`widget] obj -> int -> unit = - "ml_gtk_toolbar2_set_icon" -end - -class toolbar2 obj = object - inherit container_full (obj : Gtk.toolbar obj) - method insert_widget ?tooltip ?tooltip_private ?pos w = - Toolbar.insert_widget obj (as_widget w) ?tooltip ?tooltip_private ?pos - - method insert_button ?text ?tooltip ?tooltip_private ?icon - ?pos ?callback () = - let icon = may_map icon ~f:as_widget in - new button - (Toolbar.insert_button obj ~kind:`BUTTON ?icon ?text - ?tooltip ?tooltip_private ?pos ?callback ()) - - method insert_toggle_button ?text ?tooltip ?tooltip_private ?icon - ?pos ?callback () = - let icon = may_map icon ~f:as_widget in - new toggle_button - (ToggleButton.cast - (Toolbar.insert_button obj ~kind:`TOGGLEBUTTON ?icon ?text - ?tooltip ?tooltip_private ?pos ?callback ())) - - method insert_radio_button ?text ?tooltip ?tooltip_private ?icon - ?pos ?callback () = - let icon = may_map icon ~f:as_widget in - new radio_button - (RadioButton.cast - (Toolbar.insert_button obj ~kind:`RADIOBUTTON ?icon ?text - ?tooltip ?tooltip_private ?pos ?callback ())) - - method insert_space = Toolbar.insert_space obj - - method set_orientation = Toolbar.set_orientation obj - method set_style = Toolbar.set_style obj - method set_space_size = Toolbar.set_space_size obj - method set_space_style = Toolbar.set_space_style obj - method set_tooltips = Toolbar.set_tooltips obj - method set_button_relief = Toolbar.set_button_relief obj - method button_relief = Toolbar.get_button_relief obj - method set_text = Toolbar2.set_text obj - method set_icon (icon : widget) = Toolbar2.set_icon obj icon#as_widget -end - -let toolbar2 ?(orientation=`HORIZONTAL) ?style - ?space_size ?space_style ?tooltips ?button_relief - ?border_width ?width ?height ?packing ?show () = - let w = Toolbar.create orientation ?style () in - Toolbar.set w ?space_size ?space_style ?tooltips ?button_relief; - Container.set w ?border_width ?width ?height; - pack_return (new toolbar2 w) ~packing ~show diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/gTree2.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/gTree2.ml deleted file mode 100644 index 62c38ac57..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/gTree2.ml +++ /dev/null @@ -1,78 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open GtkBase -open GtkTree2 -open GObj -open GContainer - -class tree_item_signals obj = object - inherit item_signals obj - method expand = GtkSignal.connect obj ~sgn:TreeItem.Signals.expand ~after - method collapse = GtkSignal.connect obj ~sgn:TreeItem.Signals.collapse ~after -end - -class tree_item obj = object - inherit container obj - method event = new GObj.event_ops obj - method as_item : Gtk.tree_item obj = obj - method connect = new tree_item_signals obj - method set_subtree (w : tree) = TreeItem.set_subtree obj w#as_tree - method remove_subtree () = TreeItem.remove_subtree obj - method expand () = TreeItem.expand obj - method collapse () = TreeItem.collapse obj - method subtree = - try Some(new tree (TreeItem.subtree obj)) with Gpointer.Null -> None -end - -and tree_signals obj = object - inherit container_signals obj - method selection_changed = - GtkSignal.connect obj ~sgn:Tree.Signals.selection_changed ~after - method select_child ~callback = - GtkSignal.connect obj ~sgn:Tree.Signals.select_child ~after - ~callback:(fun w -> callback (new tree_item (TreeItem.cast w))) - method unselect_child ~callback = - GtkSignal.connect obj ~sgn:Tree.Signals.unselect_child ~after - ~callback:(fun w -> callback (new tree_item (TreeItem.cast w))) -end - -and tree obj = object (self) - inherit [tree_item] item_container obj - method event = new GObj.event_ops obj - method as_tree = Tree.coerce obj - method insert w ~pos = Tree.insert obj w#as_item ~pos - method connect = new tree_signals obj - method clear_items = Tree.clear_items obj - method select_item = Tree.select_item obj - method unselect_item = Tree.unselect_item obj - method child_position (w : tree_item) = Tree.child_position obj w#as_item - method remove_items items = - Tree.remove_items obj - (List.map ~f:(fun (t : tree_item) -> t#as_item) items) -(* method set_selection_mode = Tree.set_selection_mode obj - method set_view_mode = Tree.set_view_mode obj *) - method set_view_lines = Tree.set_view_lines obj - method selection = - List.map ~f:(fun w -> self#wrap (Widget.coerce w)) (Tree.selection obj) - method item_up ~pos = - Tree.item_up obj pos - method private wrap w = - new tree_item (TreeItem.cast w) -end - -let tree_item ?label ?border_width ?width ?height ?packing ?show () = - let w = TreeItem.create ?label () in - Container.set w ?border_width ?width ?height; - let self = new tree_item w in - may packing ~f:(fun f -> (f self : unit)); - if show <> Some false then self#misc#show (); - self - -let tree ?selection_mode ?view_mode ?view_lines - ?border_width ?width ?height ?packing ?show () = - let w = Tree.create () in - Tree.set w ?selection_mode ?view_mode ?view_lines; - Container.set w ?border_width ?width ?height; - pack_return (new tree w) ~packing ~show diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/gTree2.mli b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/gTree2.mli deleted file mode 100644 index c288e157e..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/gTree2.mli +++ /dev/null @@ -1,73 +0,0 @@ -(* $Id$ *) - -open Gtk -open GObj -open GContainer - -class tree_item_signals : 'a obj -> - object - inherit item_signals - constraint 'a = [>`treeitem|`container|`item|`widget] - val obj : 'a obj - method collapse : callback:(unit -> unit) -> GtkSignal.id - method expand : callback:(unit -> unit) -> GtkSignal.id - end - -class tree_item : Gtk.tree_item obj -> - object - inherit GContainer.container - val obj : Gtk.tree_item obj - method event : event_ops - method as_item : Gtk.tree_item obj - method collapse : unit -> unit - method connect : tree_item_signals - method expand : unit -> unit - method remove_subtree : unit -> unit - method set_subtree : tree -> unit - method subtree : tree option - end - -and tree_signals : Gtk.tree obj -> - object - inherit container_signals - val obj : Gtk.tree obj - method select_child : callback:(tree_item -> unit) -> GtkSignal.id - method selection_changed : callback:(unit -> unit) -> GtkSignal.id - method unselect_child : callback:(tree_item -> unit) -> GtkSignal.id - end - -and tree : Gtk.tree obj -> - object - inherit [tree_item] item_container - val obj : Gtk.tree obj - method event : event_ops - method as_tree : Gtk.tree obj - method child_position : tree_item -> int - method clear_items : start:int -> stop:int -> unit - method connect : tree_signals - method insert : tree_item -> pos:int -> unit - method item_up : pos:int -> unit - method remove_items : tree_item list -> unit - method select_item : pos:int -> unit - method selection : tree_item list -(* method set_selection_mode : Tags.selection_mode -> unit *) - method set_view_lines : bool -> unit -(* method set_view_mode : [`LINE|`ITEM] -> unit *) - method unselect_item : pos:int -> unit - method private wrap : Gtk.widget obj -> tree_item - end - -val tree_item : - ?label:string -> - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(tree_item -> unit) -> ?show:bool -> unit -> tree_item - -val tree : - ?selection_mode:Tags.selection_mode -> - ?view_mode:[`LINE|`ITEM] -> - ?view_lines:bool -> - ?border_width:int -> - ?width:int -> - ?height:int -> ?packing:(GObj.widget -> unit) -> ?show:bool -> unit -> tree diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/gtkTree2.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/gtkTree2.ml deleted file mode 100644 index 46d1e0220..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/gtkTree2.ml +++ /dev/null @@ -1,82 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open Tags -open GtkBase - -module TreeItem = struct - let cast w : tree_item obj = - if Object.is_a w "GtkTreeItem" then Obj.magic w - else invalid_arg "Gtk.TreeItem.cast" - external create : unit -> tree_item obj = "ml_gtk_tree_item2_new" - external create_with_label : string -> tree_item obj - = "ml_gtk_tree_item2_new_with_label" - let create ?label () = - match label with None -> create () - | Some label -> create_with_label label - external set_subtree : [>`treeitem] obj -> [>`widget] obj -> unit - = "ml_gtk_tree_item2_set_subtree" - external remove_subtree : [>`treeitem] obj -> unit - = "ml_gtk_tree_item2_remove_subtree" - external expand : [>`treeitem] obj -> unit - = "ml_gtk_tree_item2_expand" - external collapse : [>`treeitem] obj -> unit - = "ml_gtk_tree_item2_collapse" - external subtree : [>`treeitem] obj -> tree obj - = "ml_GTK_TREE_ITEM2_SUBTREE" - let subtree t = try subtree t with Gpointer.Null -> raise Not_found - module Signals = struct - open GtkSignal - let expand : ([>`treeitem],_) t = - { name = "expand"; marshaller = marshal_unit } - let collapse : ([>`treeitem],_) t = - { name = "collapse"; marshaller = marshal_unit } - end -end - -module Tree = struct - let cast w : tree obj = - if Object.is_a w "GtkTree" then Obj.magic w - else invalid_arg "Gtk.Tree.cast" - external coerce : [>`tree] obj -> tree obj = "%identity" - external create : unit -> tree obj = "ml_gtk_tree2_new" - external insert : [>`tree] obj -> [>`treeitem] obj -> pos:int -> unit - = "ml_gtk_tree2_insert" - external remove_items : [>`tree] obj -> [>`treeitem] obj list -> unit - = "ml_gtk_tree2_remove_items" - external clear_items : [>`tree] obj -> start:int -> stop:int -> unit - = "ml_gtk_tree2_clear_items" - external select_item : [>`tree] obj -> pos:int -> unit - = "ml_gtk_tree2_select_item" - external unselect_item : [>`tree] obj -> pos:int -> unit - = "ml_gtk_tree2_unselect_item" - external child_position : [>`tree] obj -> [>`treeitem] obj -> int - = "ml_gtk_tree2_child_position" -(* external set_selection_mode : [>`tree] obj -> selection_mode -> unit - = "ml_gtk_tree2_set_selection_mode" - external set_view_mode : [>`tree] obj -> [`LINE|`ITEM] -> unit - = "ml_gtk_tree2_set_view_mode" -*) - external set_view_lines : [>`tree] obj -> bool -> unit - = "ml_gtk_tree2_set_view_lines" - external selection : [>`tree] obj -> tree_item obj list = - "ml_gtk_tree2_selection" - external item_up : [>`tree] obj -> int -> unit = - "ml_gtk_tree2_item_up" - - let set ?selection_mode ?view_mode ?view_lines w = - let may_set f = may ~f:(f w) in -(* may_set set_selection_mode selection_mode; - may_set set_view_mode view_mode; *) - may_set set_view_lines view_lines - module Signals = struct - open GtkSignal - let selection_changed : ([>`tree],_) t = - { name = "selection_changed"; marshaller = marshal_unit } - let select_child : ([>`tree],_) t = - { name = "select_child"; marshaller = Widget.Signals.marshal } - let unselect_child : ([>`tree],_) t = - { name = "unselect_child"; marshaller = Widget.Signals.marshal } - end -end diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/gtktree2.c b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/gtktree2.c deleted file mode 100644 index db37a1f9d..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/gtktree2.c +++ /dev/null @@ -1,1385 +0,0 @@ -/* GTK - The GIMP Toolkit - * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library 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 - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -/* - * Modified by the GTK+ Team and others 1997-1999. See the AUTHORS - * file for a list of people on the GTK+ Team. See the ChangeLog - * files for a list of changes. These files are distributed with - * GTK+ at ftp://ftp.gtk.org/pub/gtk/. - */ - -#include "gtktree2.h" -#include "gtktreeitem2.h" - -#include -#include -#include - -enum { - SELECTION_CHANGED, - SELECT_CHILD, - UNSELECT_CHILD, - LAST_SIGNAL -}; - -static void gtk_tree2_class_init (GtkTree2Class *klass); -static void gtk_tree2_init (GtkTree2 *tree); -static void gtk_tree2_destroy (GtkObject *object); -static void gtk_tree2_map (GtkWidget *widget); -static void gtk_tree2_unmap (GtkWidget *widget); -static void gtk_tree2_realize (GtkWidget *widget); -static void gtk_tree2_draw (GtkWidget *widget, - GdkRectangle *area); -static gint gtk_tree2_expose (GtkWidget *widget, - GdkEventExpose *event); -static gint gtk_tree2_motion_notify (GtkWidget *widget, - GdkEventMotion *event); -static gint gtk_tree2_button_press (GtkWidget *widget, - GdkEventButton *event); -static gint gtk_tree2_button_release (GtkWidget *widget, - GdkEventButton *event); -static void gtk_tree2_size_request (GtkWidget *widget, - GtkRequisition *requisition); -static void gtk_tree2_size_allocate (GtkWidget *widget, - GtkAllocation *allocation); -static void gtk_tree2_add (GtkContainer *container, - GtkWidget *widget); -static void gtk_tree2_forall (GtkContainer *container, - gboolean include_internals, - GtkCallback callback, - gpointer callback_data); - -static void gtk_real_tree2_select_child (GtkTree2 *tree, - GtkWidget *child); -static void gtk_real_tree2_unselect_child (GtkTree2 *tree, - GtkWidget *child); - -static GtkType gtk_tree2_child_type (GtkContainer *container); - -static GtkContainerClass *parent_class = NULL; -static guint tree_signals[LAST_SIGNAL] = { 0 }; - -GtkType -gtk_tree2_get_type (void) -{ - static GtkType tree_type = 0; - - if (!tree_type) - { - static const GtkTypeInfo tree_info = - { - "GtkTree2", - sizeof (GtkTree2), - sizeof (GtkTree2Class), - (GtkClassInitFunc) gtk_tree2_class_init, - (GtkObjectInitFunc) gtk_tree2_init, - /* reserved_1 */ NULL, - /* reserved_2 */ NULL, - (GtkClassInitFunc) NULL, - }; - - tree_type = gtk_type_unique (gtk_container_get_type (), &tree_info); - } - - return tree_type; -} - -static void -gtk_tree2_class_init (GtkTree2Class *class) -{ - GtkObjectClass *object_class; - GtkWidgetClass *widget_class; - GtkContainerClass *container_class; - - object_class = (GtkObjectClass*) class; - widget_class = (GtkWidgetClass*) class; - container_class = (GtkContainerClass*) class; - - parent_class = gtk_type_class (gtk_container_get_type ()); - - tree_signals[SELECTION_CHANGED] = - gtk_signal_new ("selection_changed", - GTK_RUN_FIRST, - object_class->type, - GTK_SIGNAL_OFFSET (GtkTree2Class, selection_changed), - gtk_marshal_NONE__NONE, - GTK_TYPE_NONE, 0); - tree_signals[SELECT_CHILD] = - gtk_signal_new ("select_child", - GTK_RUN_FIRST, - object_class->type, - GTK_SIGNAL_OFFSET (GtkTree2Class, select_child), - gtk_marshal_NONE__POINTER, - GTK_TYPE_NONE, 1, - GTK_TYPE_WIDGET); - tree_signals[UNSELECT_CHILD] = - gtk_signal_new ("unselect_child", - GTK_RUN_FIRST, - object_class->type, - GTK_SIGNAL_OFFSET (GtkTree2Class, unselect_child), - gtk_marshal_NONE__POINTER, - GTK_TYPE_NONE, 1, - GTK_TYPE_WIDGET); - - gtk_object_class_add_signals (object_class, tree_signals, LAST_SIGNAL); - - object_class->destroy = gtk_tree2_destroy; - - widget_class->map = gtk_tree2_map; - widget_class->unmap = gtk_tree2_unmap; - widget_class->realize = gtk_tree2_realize; - widget_class->draw = gtk_tree2_draw; - widget_class->expose_event = gtk_tree2_expose; - widget_class->motion_notify_event = gtk_tree2_motion_notify; - widget_class->button_press_event = gtk_tree2_button_press; - widget_class->button_release_event = gtk_tree2_button_release; - widget_class->size_request = gtk_tree2_size_request; - widget_class->size_allocate = gtk_tree2_size_allocate; - - container_class->add = gtk_tree2_add; - container_class->remove = - (void (*)(GtkContainer *, GtkWidget *)) gtk_tree2_remove_item; - container_class->forall = gtk_tree2_forall; - container_class->child_type = gtk_tree2_child_type; - - class->selection_changed = NULL; - class->select_child = gtk_real_tree2_select_child; - class->unselect_child = gtk_real_tree2_unselect_child; -} - -static GtkType -gtk_tree2_child_type (GtkContainer *container) -{ - return GTK_TYPE_TREE_ITEM2; -} - -static void -gtk_tree2_init (GtkTree2 *tree) -{ - tree->children = NULL; - tree->root_tree = NULL; - tree->selection = NULL; - tree->tree_owner = NULL; - tree->selection_mode = GTK_SELECTION_SINGLE; - tree->indent_value = 9; - tree->current_indent = 0; - tree->level = 0; - tree->view_mode = GTK_TREE2_VIEW_LINE; - tree->view_line = 1; -} - -GtkWidget* -gtk_tree2_new (void) -{ - return GTK_WIDGET (gtk_type_new (gtk_tree2_get_type ())); -} - -void -gtk_tree2_append (GtkTree2 *tree, - GtkWidget *tree_item) -{ - g_return_if_fail (tree != NULL); - g_return_if_fail (GTK_IS_TREE2 (tree)); - g_return_if_fail (tree_item != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (tree_item)); - - gtk_tree2_insert (tree, tree_item, -1); -} - -void -gtk_tree2_prepend (GtkTree2 *tree, - GtkWidget *tree_item) -{ - g_return_if_fail (tree != NULL); - g_return_if_fail (GTK_IS_TREE2 (tree)); - g_return_if_fail (tree_item != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (tree_item)); - - gtk_tree2_insert (tree, tree_item, 0); -} - -void -gtk_tree2_insert (GtkTree2 *tree, - GtkWidget *tree_item, - gint position) -{ - gint nchildren; - - g_return_if_fail (tree != NULL); - g_return_if_fail (GTK_IS_TREE2 (tree)); - g_return_if_fail (tree_item != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (tree_item)); - - nchildren = g_list_length (tree->children); - - if ((position < 0) || (position > nchildren)) - position = nchildren; - - if (position == nchildren) - tree->children = g_list_append (tree->children, tree_item); - else - tree->children = g_list_insert (tree->children, tree_item, position); - - gtk_widget_set_parent (tree_item, GTK_WIDGET (tree)); - - if (GTK_WIDGET_REALIZED (tree_item->parent)) - gtk_widget_realize (tree_item); - - if (GTK_WIDGET_VISIBLE (tree_item->parent) && GTK_WIDGET_VISIBLE (tree_item)) - { - if (GTK_WIDGET_MAPPED (tree_item->parent)) - gtk_widget_map (tree_item); - - gtk_widget_queue_resize (tree_item); - } -} - -/* moves the pos child up in the tree */ -void -gtk_tree2_item_up (GtkTree2 *tree, - gint position) -{ - gint nchildren, i; - GList *children, *tmp; - - g_return_if_fail (tree != NULL); - g_return_if_fail (GTK_IS_TREE2 (tree)); - - children = (tree->children); - nchildren = g_list_length (tree->children); - - if ((position < 1) || (position >= nchildren)) - return; - - for (i=1; i < position; i++) - children = (children->next); - - tmp = children->next; - if (position == 1) - { - tree->children = children->next; - children->next->prev = NULL; - } - else - { - children->prev->next = children->next; - children->next->prev = children->prev; - } - children->next = tmp->next; - children->prev = tmp; - if (tmp->next) - tmp->next->prev = children; - tmp->next = children; - - if (GTK_WIDGET_VISIBLE (tree)) - { -/* if (GTK_WIDGET_VISIBLE (GTK_WIDGET(children->data))) - gtk_widget_queue_resize (GTK_WIDGET(children->data)); - if (GTK_WIDGET_VISIBLE (GTK_WIDGET(tmp->data))) - gtk_widget_queue_resize (GTK_WIDGET(tmp->data)); -*/ - gtk_widget_queue_resize (GTK_WIDGET(tree)); - } -} - -static void -gtk_tree2_add (GtkContainer *container, - GtkWidget *child) -{ - GtkTree2 *tree; - - g_return_if_fail (container != NULL); - g_return_if_fail (GTK_IS_TREE2 (container)); - g_return_if_fail (GTK_IS_TREE_ITEM2 (child)); - - tree = GTK_TREE2 (container); - - tree->children = g_list_append (tree->children, child); - - gtk_widget_set_parent (child, GTK_WIDGET (container)); - - if (GTK_WIDGET_REALIZED (child->parent)) - gtk_widget_realize (child); - - if (GTK_WIDGET_VISIBLE (child->parent) && GTK_WIDGET_VISIBLE (child)) - { - if (GTK_WIDGET_MAPPED (child->parent)) - gtk_widget_map (child); - - gtk_widget_queue_resize (child); - } - - if (!tree->selection && (tree->selection_mode == GTK_SELECTION_BROWSE)) - gtk_tree2_select_child (tree, child); -} - -static gint -gtk_tree2_button_press (GtkWidget *widget, - GdkEventButton *event) -{ - GtkTree2 *tree; - GtkWidget *item; - - g_return_val_if_fail (widget != NULL, FALSE); - g_return_val_if_fail (GTK_IS_TREE2 (widget), FALSE); - g_return_val_if_fail (event != NULL, FALSE); - - tree = GTK_TREE2 (widget); - item = gtk_get_event_widget ((GdkEvent*) event); - - while (item && !GTK_IS_TREE_ITEM2 (item)) - item = item->parent; - - if (!item || (item->parent != widget)) - return FALSE; - - switch(event->button) - { - case 1: - gtk_tree2_select_child (tree, item); - break; - case 2: - if(GTK_TREE_ITEM2(item)->subtree) gtk_tree_item2_expand(GTK_TREE_ITEM2(item)); - break; - case 3: - if(GTK_TREE_ITEM2(item)->subtree) gtk_tree_item2_collapse(GTK_TREE_ITEM2(item)); - break; - } - - return TRUE; -} - -static gint -gtk_tree2_button_release (GtkWidget *widget, - GdkEventButton *event) -{ - GtkTree2 *tree; - GtkWidget *item; - - g_return_val_if_fail (widget != NULL, FALSE); - g_return_val_if_fail (GTK_IS_TREE2 (widget), FALSE); - g_return_val_if_fail (event != NULL, FALSE); - - tree = GTK_TREE2 (widget); - item = gtk_get_event_widget ((GdkEvent*) event); - - return TRUE; -} - -gint -gtk_tree2_child_position (GtkTree2 *tree, - GtkWidget *child) -{ - GList *children; - gint pos; - - - g_return_val_if_fail (tree != NULL, -1); - g_return_val_if_fail (GTK_IS_TREE2 (tree), -1); - g_return_val_if_fail (child != NULL, -1); - - pos = 0; - children = tree->children; - - while (children) - { - if (child == GTK_WIDGET (children->data)) - return pos; - - pos += 1; - children = children->next; - } - - - return -1; -} - -void -gtk_tree2_clear_items (GtkTree2 *tree, - gint start, - gint end) -{ - GtkWidget *widget; - GList *clear_list; - GList *tmp_list; - guint nchildren; - guint index; - - g_return_if_fail (tree != NULL); - g_return_if_fail (GTK_IS_TREE2 (tree)); - - nchildren = g_list_length (tree->children); - - if (nchildren > 0) - { - if ((end < 0) || (end > nchildren)) - end = nchildren; - - if (start >= end) - return; - - tmp_list = g_list_nth (tree->children, start); - clear_list = NULL; - index = start; - while (tmp_list && index <= end) - { - widget = tmp_list->data; - tmp_list = tmp_list->next; - index++; - - clear_list = g_list_prepend (clear_list, widget); - } - - gtk_tree2_remove_items (tree, clear_list); - } -} - -static void -gtk_tree2_destroy (GtkObject *object) -{ - GtkTree2 *tree; - GtkWidget *child; - GList *children; - - g_return_if_fail (object != NULL); - g_return_if_fail (GTK_IS_TREE2 (object)); - - tree = GTK_TREE2 (object); - - children = tree->children; - while (children) - { - child = children->data; - children = children->next; - - gtk_widget_ref (child); - gtk_widget_unparent (child); - gtk_widget_destroy (child); - gtk_widget_unref (child); - } - - g_list_free (tree->children); - tree->children = NULL; - - if (tree->root_tree == tree) - { - GList *node; - for (node = tree->selection; node; node = node->next) - gtk_widget_unref ((GtkWidget *)node->data); - g_list_free (tree->selection); - tree->selection = NULL; - } - - if (GTK_OBJECT_CLASS (parent_class)->destroy) - (* GTK_OBJECT_CLASS (parent_class)->destroy) (object); -} - -static void -gtk_tree2_draw (GtkWidget *widget, - GdkRectangle *area) -{ - GtkTree2 *tree; - GtkWidget *subtree; - GtkWidget *child; - GdkRectangle child_area; - GList *children; - - - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_TREE2 (widget)); - g_return_if_fail (area != NULL); - - if (GTK_WIDGET_DRAWABLE (widget)) - { - tree = GTK_TREE2 (widget); - - children = tree->children; - while (children) - { - child = children->data; - children = children->next; - - if (gtk_widget_intersect (child, area, &child_area)) - gtk_widget_draw (child, &child_area); - - if((subtree = GTK_TREE_ITEM2(child)->subtree) && - GTK_WIDGET_VISIBLE(subtree) && - gtk_widget_intersect (subtree, area, &child_area)) - gtk_widget_draw (subtree, &child_area); - } - } - -} - -static gint -gtk_tree2_expose (GtkWidget *widget, - GdkEventExpose *event) -{ - GtkTree2 *tree; - GtkWidget *child; - GdkEventExpose child_event; - GList *children; - - - g_return_val_if_fail (widget != NULL, FALSE); - g_return_val_if_fail (GTK_IS_TREE2 (widget), FALSE); - g_return_val_if_fail (event != NULL, FALSE); - - if (GTK_WIDGET_DRAWABLE (widget)) - { - tree = GTK_TREE2 (widget); - - child_event = *event; - - children = tree->children; - while (children) - { - child = children->data; - children = children->next; - - if (GTK_WIDGET_NO_WINDOW (child) && - gtk_widget_intersect (child, &event->area, &child_event.area)) - gtk_widget_event (child, (GdkEvent*) &child_event); - } - } - - - return FALSE; -} - -static void -gtk_tree2_forall (GtkContainer *container, - gboolean include_internals, - GtkCallback callback, - gpointer callback_data) -{ - GtkTree2 *tree; - GtkWidget *child; - GList *children; - - - g_return_if_fail (container != NULL); - g_return_if_fail (GTK_IS_TREE2 (container)); - g_return_if_fail (callback != NULL); - - tree = GTK_TREE2 (container); - children = tree->children; - - while (children) - { - child = children->data; - children = children->next; - - (* callback) (child, callback_data); - - if (include_internals && GTK_TREE_ITEM2(child)->subtree) - (* callback) (GTK_TREE_ITEM2(child)->subtree, callback_data); - } -} - -static void -gtk_tree2_map (GtkWidget *widget) -{ - GtkTree2 *tree; - GtkWidget *child; - GList *children; - - - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_TREE2 (widget)); - - GTK_WIDGET_SET_FLAGS (widget, GTK_MAPPED); - tree = GTK_TREE2 (widget); - - if(GTK_IS_TREE2(widget->parent)) - { - /* set root tree for this tree */ - tree->root_tree = GTK_TREE2(widget->parent)->root_tree; - - tree->level = GTK_TREE2(GTK_WIDGET(tree)->parent)->level+1; - tree->indent_value = GTK_TREE2(GTK_WIDGET(tree)->parent)->indent_value; - tree->current_indent = GTK_TREE2(GTK_WIDGET(tree)->parent)->current_indent + - tree->indent_value; - tree->view_mode = GTK_TREE2(GTK_WIDGET(tree)->parent)->view_mode; - tree->view_line = GTK_TREE2(GTK_WIDGET(tree)->parent)->view_line; - } - else - tree->root_tree = tree; - - children = tree->children; - while (children) - { - child = children->data; - children = children->next; - - if (GTK_WIDGET_VISIBLE (child) && - !GTK_WIDGET_MAPPED (child)) - gtk_widget_map (child); - - if (GTK_TREE_ITEM2 (child)->subtree) - { - child = GTK_WIDGET (GTK_TREE_ITEM2 (child)->subtree); - - if (GTK_WIDGET_VISIBLE (child) && !GTK_WIDGET_MAPPED (child)) - gtk_widget_map (child); - } - } - - gdk_window_show (widget->window); -} - -static gint -gtk_tree2_motion_notify (GtkWidget *widget, - GdkEventMotion *event) -{ - g_return_val_if_fail (widget != NULL, FALSE); - g_return_val_if_fail (GTK_IS_TREE2 (widget), FALSE); - g_return_val_if_fail (event != NULL, FALSE); - -#ifdef TREE_DEBUG - g_message("gtk_tree2_motion_notify\n"); -#endif /* TREE_DEBUG */ - - return FALSE; -} - -static void -gtk_tree2_realize (GtkWidget *widget) -{ - GdkWindowAttr attributes; - gint attributes_mask; - - - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_TREE2 (widget)); - - GTK_WIDGET_SET_FLAGS (widget, GTK_REALIZED); - - attributes.window_type = GDK_WINDOW_CHILD; - attributes.x = widget->allocation.x; - attributes.y = widget->allocation.y; - attributes.width = widget->allocation.width; - attributes.height = widget->allocation.height; - attributes.wclass = GDK_INPUT_OUTPUT; - attributes.visual = gtk_widget_get_visual (widget); - attributes.colormap = gtk_widget_get_colormap (widget); - attributes.event_mask = gtk_widget_get_events (widget) | GDK_EXPOSURE_MASK; - - attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP; - - widget->window = gdk_window_new (gtk_widget_get_parent_window (widget), &attributes, attributes_mask); - gdk_window_set_user_data (widget->window, widget); - - widget->style = gtk_style_attach (widget->style, widget->window); - gdk_window_set_background (widget->window, - &widget->style->base[GTK_STATE_NORMAL]); -} - -void -gtk_tree2_remove_item (GtkTree2 *container, - GtkWidget *widget) -{ - GList *item_list; - - g_return_if_fail (container != NULL); - g_return_if_fail (GTK_IS_TREE2 (container)); - g_return_if_fail (widget != NULL); - g_return_if_fail (container == GTK_TREE2 (widget->parent)); - - item_list = g_list_append (NULL, widget); - - gtk_tree2_remove_items (GTK_TREE2 (container), item_list); - - g_list_free (item_list); -} - -/* used by gtk_tree2_remove_items to make the function independant of - order in list of items to remove. - Sort item bu depth in tree */ -static gint -gtk_tree2_sort_item_by_depth(GtkWidget* a, GtkWidget* b) -{ - if((GTK_TREE2(a->parent)->level) < (GTK_TREE2(b->parent)->level)) - return 1; - if((GTK_TREE2(a->parent)->level) > (GTK_TREE2(b->parent)->level)) - return -1; - - return 0; -} - -void -gtk_tree2_remove_items (GtkTree2 *tree, - GList *items) -{ - GtkWidget *widget; - GList *selected_widgets; - GList *tmp_list; - GList *sorted_list; - GtkTree2 *real_tree; - GtkTree2 *root_tree; - - g_return_if_fail (tree != NULL); - g_return_if_fail (GTK_IS_TREE2 (tree)); - -#ifdef TREE_DEBUG - g_message("+ gtk_tree2_remove_items [ tree %#x items list %#x ]\n", (int)tree, (int)items); -#endif /* TREE_DEBUG */ - - /* We may not yet be mapped, so we actively have to find our - * root tree - */ - if (tree->root_tree) - root_tree = tree->root_tree; - else - { - GtkWidget *tmp = GTK_WIDGET (tree); - while (tmp->parent && GTK_IS_TREE2 (tmp->parent)) - tmp = tmp->parent; - - root_tree = GTK_TREE2 (tmp); - } - - tmp_list = items; - selected_widgets = NULL; - sorted_list = NULL; - widget = NULL; - -#ifdef TREE_DEBUG - g_message("* sort list by depth\n"); -#endif /* TREE_DEBUG */ - - while (tmp_list) - { - -#ifdef TREE_DEBUG - g_message ("* item [%#x] depth [%d]\n", - (int)tmp_list->data, - (int)GTK_TREE2(GTK_WIDGET(tmp_list->data)->parent)->level); -#endif /* TREE_DEBUG */ - - sorted_list = g_list_insert_sorted(sorted_list, - tmp_list->data, - (GCompareFunc)gtk_tree2_sort_item_by_depth); - tmp_list = g_list_next(tmp_list); - } - -#ifdef TREE_DEBUG - /* print sorted list */ - g_message("* sorted list result\n"); - tmp_list = sorted_list; - while(tmp_list) - { - g_message("* item [%#x] depth [%d]\n", - (int)tmp_list->data, - (int)GTK_TREE2(GTK_WIDGET(tmp_list->data)->parent)->level); - tmp_list = g_list_next(tmp_list); - } -#endif /* TREE_DEBUG */ - -#ifdef TREE_DEBUG - g_message("* scan sorted list\n"); -#endif /* TREE_DEBUG */ - - tmp_list = sorted_list; - while (tmp_list) - { - widget = tmp_list->data; - tmp_list = tmp_list->next; - -#ifdef TREE_DEBUG - g_message("* item [%#x] subtree [%#x]\n", - (int)widget, (int)GTK_TREE_ITEM2_SUBTREE(widget)); -#endif /* TREE_DEBUG */ - - /* get real owner of this widget */ - real_tree = GTK_TREE2(widget->parent); -#ifdef TREE_DEBUG - g_message("* subtree having this widget [%#x]\n", (int)real_tree); -#endif /* TREE_DEBUG */ - - - if (widget->state == GTK_STATE_SELECTED) - { - selected_widgets = g_list_prepend (selected_widgets, widget); -#ifdef TREE_DEBUG - g_message("* selected widget - adding it in selected list [%#x]\n", - (int)selected_widgets); -#endif /* TREE_DEBUG */ - } - - /* remove this item from its real parent */ -#ifdef TREE_DEBUG - g_message("* remove widget from its owner tree\n"); -#endif /* TREE_DEBUG */ - real_tree->children = g_list_remove (real_tree->children, widget); - - /* remove subtree associate at this item if it exist */ - if(GTK_TREE_ITEM2(widget)->subtree) - { -#ifdef TREE_DEBUG - g_message("* remove subtree associate at this item [%#x]\n", - (int) GTK_TREE_ITEM2(widget)->subtree); -#endif /* TREE_DEBUG */ - if (GTK_WIDGET_MAPPED (GTK_TREE_ITEM2(widget)->subtree)) - gtk_widget_unmap (GTK_TREE_ITEM2(widget)->subtree); - - gtk_widget_unparent (GTK_TREE_ITEM2(widget)->subtree); - GTK_TREE_ITEM2(widget)->subtree = NULL; - } - - /* really remove widget for this item */ -#ifdef TREE_DEBUG - g_message("* unmap and unparent widget [%#x]\n", (int)widget); -#endif /* TREE_DEBUG */ - if (GTK_WIDGET_MAPPED (widget)) - gtk_widget_unmap (widget); - - gtk_widget_unparent (widget); - - /* delete subtree if there is no children in it */ -/* HF supprime */ -/* if(real_tree->children == NULL && - real_tree != root_tree) - { -*/ -#ifdef TREE_DEBUG - g_message("* owner tree don't have children ... destroy it\n"); -#endif /* TREE_DEBUG */ -/* - gtk_tree_item2_remove_subtree(GTK_TREE_ITEM2(real_tree->tree_owner)); - } -*/ -#ifdef TREE_DEBUG - g_message("* next item in list\n"); -#endif /* TREE_DEBUG */ - } - - if (selected_widgets) - { -#ifdef TREE_DEBUG - g_message("* scan selected item list\n"); -#endif /* TREE_DEBUG */ - tmp_list = selected_widgets; - while (tmp_list) - { - widget = tmp_list->data; - tmp_list = tmp_list->next; - -#ifdef TREE_DEBUG - g_message("* widget [%#x] subtree [%#x]\n", - (int)widget, (int)GTK_TREE_ITEM2_SUBTREE(widget)); -#endif /* TREE_DEBUG */ - - /* remove widget of selection */ - root_tree->selection = g_list_remove (root_tree->selection, widget); - - /* unref it to authorize is destruction */ - gtk_widget_unref (widget); - } - - /* emit only one selection_changed signal */ - gtk_signal_emit (GTK_OBJECT (root_tree), - tree_signals[SELECTION_CHANGED]); - } - -#ifdef TREE_DEBUG - g_message("* free selected_widgets list\n"); -#endif /* TREE_DEBUG */ - g_list_free (selected_widgets); - g_list_free (sorted_list); - - if (root_tree->children && !root_tree->selection && - (root_tree->selection_mode == GTK_SELECTION_BROWSE)) - { -#ifdef TREE_DEBUG - g_message("* BROWSE mode, select another item\n"); -#endif /* TREE_DEBUG */ - widget = root_tree->children->data; - gtk_tree2_select_child (root_tree, widget); - } - - if (GTK_WIDGET_VISIBLE (root_tree)) - { -#ifdef TREE_DEBUG - g_message("* query queue resizing for root_tree\n"); -#endif /* TREE_DEBUG */ - gtk_widget_queue_resize (GTK_WIDGET (root_tree)); - } -} - -void -gtk_tree2_select_child (GtkTree2 *tree, - GtkWidget *tree_item) -{ - g_return_if_fail (tree != NULL); - g_return_if_fail (GTK_IS_TREE2 (tree)); - g_return_if_fail (tree_item != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (tree_item)); - - gtk_signal_emit (GTK_OBJECT (tree), tree_signals[SELECT_CHILD], tree_item); -} - -void -gtk_tree2_select_next_child (GtkTree2 *tree, - GtkWidget *tree_item, gboolean descend) -{ - GList *children; - - g_return_if_fail (tree != NULL); - g_return_if_fail (GTK_IS_TREE2 (tree)); - g_return_if_fail (tree_item != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (tree_item)); - - if (descend && GTK_TREE2(GTK_TREE_ITEM2(tree_item)->subtree)->children) - { - gtk_signal_emit (GTK_OBJECT (GTK_TREE_ITEM2(tree_item)->subtree), tree_signals[SELECT_CHILD], GTK_TREE2(GTK_TREE_ITEM2(tree_item)->subtree)->children->data); - return; - } - - children = tree->children; - while (children) - { - if (tree_item == GTK_WIDGET (children->data)) - break; - - children = children->next; - } - if (!children) return; - - if (children->next) - gtk_signal_emit (GTK_OBJECT (tree), tree_signals[SELECT_CHILD], children->next->data); - else if (tree != tree->root_tree) - { - children = GTK_TREE2(GTK_WIDGET(tree)->parent)->children; - gtk_tree2_select_next_child (GTK_TREE2(GTK_WIDGET(tree)->parent), tree->tree_owner, FALSE); - } - -} - -/* we know that tree is not the roor_tree and that - tree_items always have subtrees */ -void -gtk_tree2_select_prev_child (GtkTree2 *tree, - GtkWidget *tree_item) -{ - GList *children; - GtkTreeItem2 *tree_item2; - - g_return_if_fail (tree != NULL); - g_return_if_fail (GTK_IS_TREE2 (tree)); - g_return_if_fail (tree_item != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (tree_item)); - - - children = tree->children; - while (children) - { - if (tree_item == GTK_WIDGET (children->data)) - break; - - children = children->next; - } - if (!children) return; - - if (children = children->prev) - { - tree_item2 = GTK_TREE_ITEM2(children->data); - while (GTK_TREE2(tree_item2->subtree)->children) - { - children = GTK_TREE2(tree_item2->subtree)->children; - while (children->next) - children = children->next; - tree_item2 = GTK_TREE_ITEM2(children->data); - } - gtk_signal_emit (GTK_OBJECT (GTK_WIDGET(tree_item2)->parent), tree_signals[SELECT_CHILD], tree_item2); - } - else - { - gtk_signal_emit (GTK_OBJECT (GTK_WIDGET(tree)->parent), tree_signals[SELECT_CHILD], tree->tree_owner); - } - -} - -void -gtk_tree2_select_item (GtkTree2 *tree, - gint item) -{ - GList *tmp_list; - - g_return_if_fail (tree != NULL); - g_return_if_fail (GTK_IS_TREE2 (tree)); - - tmp_list = g_list_nth (tree->children, item); - if (tmp_list) - gtk_tree2_select_child (tree, GTK_WIDGET (tmp_list->data)); - -} - -static void -gtk_tree2_size_allocate (GtkWidget *widget, - GtkAllocation *allocation) -{ - GtkTree2 *tree; - GtkWidget *child, *subtree; - GtkAllocation child_allocation; - GList *children; - - - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_TREE2 (widget)); - g_return_if_fail (allocation != NULL); - - tree = GTK_TREE2 (widget); - - widget->allocation = *allocation; - if (GTK_WIDGET_REALIZED (widget)) - gdk_window_move_resize (widget->window, - allocation->x, allocation->y, - allocation->width, allocation->height); - - if (tree->children) - { - child_allocation.x = GTK_CONTAINER (tree)->border_width; - child_allocation.y = GTK_CONTAINER (tree)->border_width; - child_allocation.width = MAX (1, (gint)allocation->width - child_allocation.x * 2); - - children = tree->children; - - while (children) - { - child = children->data; - children = children->next; - - if (GTK_WIDGET_VISIBLE (child)) - { - GtkRequisition child_requisition; - gtk_widget_get_child_requisition (child, &child_requisition); - - child_allocation.height = child_requisition.height; - - gtk_widget_size_allocate (child, &child_allocation); - - child_allocation.y += child_allocation.height; - - if((subtree = GTK_TREE_ITEM2(child)->subtree)) - if(GTK_WIDGET_VISIBLE (subtree)) - { - child_allocation.height = subtree->requisition.height; - gtk_widget_size_allocate (subtree, &child_allocation); - child_allocation.y += child_allocation.height; - } - } - } - } - -} - -static void -gtk_tree2_size_request (GtkWidget *widget, - GtkRequisition *requisition) -{ - GtkTree2 *tree; - GtkWidget *child, *subtree; - GList *children; - GtkRequisition child_requisition; - - - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_TREE2 (widget)); - g_return_if_fail (requisition != NULL); - - tree = GTK_TREE2 (widget); - requisition->width = 0; - requisition->height = 0; - - children = tree->children; - while (children) - { - child = children->data; - children = children->next; - - if (GTK_WIDGET_VISIBLE (child)) - { - gtk_widget_size_request (child, &child_requisition); - - requisition->width = MAX (requisition->width, child_requisition.width); - requisition->height += child_requisition.height; - - if((subtree = GTK_TREE_ITEM2(child)->subtree) && - GTK_WIDGET_VISIBLE (subtree)) - { - gtk_widget_size_request (subtree, &child_requisition); - - requisition->width = MAX (requisition->width, - child_requisition.width); - - requisition->height += child_requisition.height; - } - } - } - - requisition->width += GTK_CONTAINER (tree)->border_width * 2; - requisition->height += GTK_CONTAINER (tree)->border_width * 2; - - requisition->width = MAX (requisition->width, 1); - requisition->height = MAX (requisition->height, 1); - -} - -static void -gtk_tree2_unmap (GtkWidget *widget) -{ - - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_TREE2 (widget)); - - GTK_WIDGET_UNSET_FLAGS (widget, GTK_MAPPED); - gdk_window_hide (widget->window); - -} - -void -gtk_tree2_unselect_child (GtkTree2 *tree, - GtkWidget *tree_item) -{ - g_return_if_fail (tree != NULL); - g_return_if_fail (GTK_IS_TREE2 (tree)); - g_return_if_fail (tree_item != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (tree_item)); - - gtk_signal_emit (GTK_OBJECT (tree), tree_signals[UNSELECT_CHILD], tree_item); -} - -void -gtk_tree2_unselect_item (GtkTree2 *tree, - gint item) -{ - GList *tmp_list; - - g_return_if_fail (tree != NULL); - g_return_if_fail (GTK_IS_TREE2 (tree)); - - tmp_list = g_list_nth (tree->children, item); - if (tmp_list) - gtk_tree2_unselect_child (tree, GTK_WIDGET (tmp_list->data)); - -} - -static void -gtk_real_tree2_select_child (GtkTree2 *tree, - GtkWidget *child) -{ - GList *selection, *root_selection; - GList *tmp_list; - GtkWidget *tmp_item; - - g_return_if_fail (tree != NULL); - g_return_if_fail (GTK_IS_TREE2 (tree)); - g_return_if_fail (child != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (child)); - - root_selection = tree->root_tree->selection; - - switch (tree->root_tree->selection_mode) - { - case GTK_SELECTION_SINGLE: - - selection = root_selection; - - /* remove old selection list */ - while (selection) - { - tmp_item = selection->data; - - if (tmp_item != child) - { - gtk_tree_item2_deselect (GTK_TREE_ITEM2 (tmp_item)); - - tmp_list = selection; - selection = selection->next; - - root_selection = g_list_remove_link (root_selection, tmp_list); - gtk_widget_unref (tmp_item); - - g_list_free (tmp_list); - } - else - selection = selection->next; - } - - if (child->state == GTK_STATE_NORMAL) - { - gtk_tree_item2_select (GTK_TREE_ITEM2 (child)); - root_selection = g_list_prepend (root_selection, child); - gtk_widget_ref (child); - } - else if (child->state == GTK_STATE_SELECTED) - { - gtk_tree_item2_deselect (GTK_TREE_ITEM2 (child)); - root_selection = g_list_remove (root_selection, child); - gtk_widget_unref (child); - } - - tree->root_tree->selection = root_selection; - - gtk_signal_emit (GTK_OBJECT (tree->root_tree), - tree_signals[SELECTION_CHANGED]); - break; - - - case GTK_SELECTION_BROWSE: - selection = root_selection; - - while (selection) - { - tmp_item = selection->data; - - if (tmp_item != child) - { - gtk_tree_item2_deselect (GTK_TREE_ITEM2 (tmp_item)); - - tmp_list = selection; - selection = selection->next; - - root_selection = g_list_remove_link (root_selection, tmp_list); - gtk_widget_unref (tmp_item); - - g_list_free (tmp_list); - } - else - selection = selection->next; - } - - tree->root_tree->selection = root_selection; - - if (child->state == GTK_STATE_NORMAL) - { - gtk_tree_item2_select (GTK_TREE_ITEM2 (child)); - root_selection = g_list_prepend (root_selection, child); - gtk_widget_ref (child); - tree->root_tree->selection = root_selection; - gtk_signal_emit (GTK_OBJECT (tree->root_tree), - tree_signals[SELECTION_CHANGED]); - } - break; - - case GTK_SELECTION_MULTIPLE: - if (child->state == GTK_STATE_NORMAL) - { - gtk_tree_item2_select (GTK_TREE_ITEM2 (child)); - root_selection = g_list_prepend (root_selection, child); - gtk_widget_ref (child); - tree->root_tree->selection = root_selection; - gtk_signal_emit (GTK_OBJECT (tree->root_tree), - tree_signals[SELECTION_CHANGED]); - } - else if (child->state == GTK_STATE_SELECTED) - { - gtk_tree_item2_deselect (GTK_TREE_ITEM2 (child)); - root_selection = g_list_remove (root_selection, child); - gtk_widget_unref (child); - tree->root_tree->selection = root_selection; - gtk_signal_emit (GTK_OBJECT (tree->root_tree), - tree_signals[SELECTION_CHANGED]); - } - break; - - case GTK_SELECTION_EXTENDED: - break; - } -} - -static void -gtk_real_tree2_unselect_child (GtkTree2 *tree, - GtkWidget *child) -{ - g_return_if_fail (tree != NULL); - g_return_if_fail (GTK_IS_TREE2 (tree)); - g_return_if_fail (child != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (child)); - - switch (tree->selection_mode) - { - case GTK_SELECTION_SINGLE: - case GTK_SELECTION_MULTIPLE: - case GTK_SELECTION_BROWSE: - if (child->state == GTK_STATE_SELECTED) - { - GtkTree2* root_tree = GTK_TREE2_ROOT_TREE(tree); - gtk_tree_item2_deselect (GTK_TREE_ITEM2 (child)); - root_tree->selection = g_list_remove (root_tree->selection, child); - gtk_widget_unref (child); - gtk_signal_emit (GTK_OBJECT (tree->root_tree), - tree_signals[SELECTION_CHANGED]); - } - break; - - case GTK_SELECTION_EXTENDED: - break; - } -} - -void -gtk_tree2_set_selection_mode (GtkTree2 *tree, - GtkSelectionMode mode) -{ - g_return_if_fail (tree != NULL); - g_return_if_fail (GTK_IS_TREE2 (tree)); - - tree->selection_mode = mode; -} - -void -gtk_tree2_set_view_mode (GtkTree2 *tree, - GtkTree2ViewMode mode) -{ - g_return_if_fail (tree != NULL); - g_return_if_fail (GTK_IS_TREE2 (tree)); - - tree->view_mode = mode; -} - -void -gtk_tree2_set_view_lines (GtkTree2 *tree, - guint flag) -{ - g_return_if_fail (tree != NULL); - g_return_if_fail (GTK_IS_TREE2 (tree)); - - tree->view_line = flag; -} - -void -gtk_tree2_item_up_1 (GtkTree2 *tree, - guint pos) -{ - GList *tmp; - guint length; - gpointer data; - - g_return_if_fail (tree != NULL); - g_return_if_fail (GTK_IS_TREE2 (tree)); - - tmp = tree->children; - length = g_list_length (tmp); - if (pos <= 0 || pos >= length) { return; } - data = g_list_nth_data (tree->children, pos); - g_list_remove (tree->children, data); - tree->children = g_list_insert (tree->children, data, pos-1); -} diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/gtktree2.h b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/gtktree2.h deleted file mode 100644 index 291a1d1b3..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/gtktree2.h +++ /dev/null @@ -1,139 +0,0 @@ -/* GTK - The GIMP Toolkit - * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library 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 - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -/* - * Modified by the GTK+ Team and others 1997-1999. See the AUTHORS - * file for a list of people on the GTK+ Team. See the ChangeLog - * files for a list of changes. These files are distributed with - * GTK+ at ftp://ftp.gtk.org/pub/gtk/. - */ - -#ifndef __GTK_TREE2_H__ -#define __GTK_TREE2_H__ - -/* set this flag to enable tree debugging output */ -/* #define TREE_DEBUG */ - -#include -#include - - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - - -#define GTK_TYPE_TREE2 (gtk_tree2_get_type ()) -#define GTK_TREE2(obj) (GTK_CHECK_CAST ((obj), GTK_TYPE_TREE2, GtkTree2)) -#define GTK_TREE2_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GTK_TYPE_TREE2, GtkTree2Class)) -#define GTK_IS_TREE2(obj) (GTK_CHECK_TYPE ((obj), GTK_TYPE_TREE2)) -#define GTK_IS_TREE2_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GTK_TYPE_TREE2)) - -#define GTK_IS_ROOT_TREE2(obj) ((GtkObject*) GTK_TREE2(obj)->root_tree == (GtkObject*)obj) -#define GTK_TREE2_ROOT_TREE(obj) (GTK_TREE2(obj)->root_tree ? GTK_TREE2(obj)->root_tree : GTK_TREE2(obj)) -#define GTK_TREE2_SELECTION(obj) (GTK_TREE2_ROOT_TREE(obj)->selection) - -typedef enum -{ - GTK_TREE2_VIEW_LINE, /* default view mode */ - GTK_TREE2_VIEW_ITEM -} GtkTree2ViewMode; - -typedef struct _GtkTree2 GtkTree2; -typedef struct _GtkTree2Class GtkTree2Class; - -struct _GtkTree2 -{ - GtkContainer container; - - GList *children; - - GtkTree2* root_tree; /* owner of selection list */ - GtkWidget* tree_owner; - GList *selection; - guint level; - guint indent_value; - guint current_indent; - guint selection_mode : 2; - guint view_mode : 1; - guint view_line : 1; -}; - -struct _GtkTree2Class -{ - GtkContainerClass parent_class; - - void (* selection_changed) (GtkTree2 *tree); - void (* select_child) (GtkTree2 *tree, - GtkWidget *child); - void (* unselect_child) (GtkTree2 *tree, - GtkWidget *child); -}; - - -GtkType gtk_tree2_get_type (void); -GtkWidget* gtk_tree2_new (void); -void gtk_tree2_append (GtkTree2 *tree, - GtkWidget *tree_item); -void gtk_tree2_prepend (GtkTree2 *tree, - GtkWidget *tree_item); -void gtk_tree2_insert (GtkTree2 *tree, - GtkWidget *tree_item, - gint position); -void gtk_tree2_remove_items (GtkTree2 *tree, - GList *items); -void gtk_tree2_clear_items (GtkTree2 *tree, - gint start, - gint end); -void gtk_tree2_select_item (GtkTree2 *tree, - gint item); -void gtk_tree2_unselect_item (GtkTree2 *tree, - gint item); -void gtk_tree2_select_child (GtkTree2 *tree, - GtkWidget *tree_item); -void gtk_tree2_unselect_child (GtkTree2 *tree, - GtkWidget *tree_item); -gint gtk_tree2_child_position (GtkTree2 *tree, - GtkWidget *child); -void gtk_tree2_set_selection_mode (GtkTree2 *tree, - GtkSelectionMode mode); -void gtk_tree2_set_view_mode (GtkTree2 *tree, - GtkTree2ViewMode mode); -void gtk_tree2_set_view_lines (GtkTree2 *tree, - guint flag); - -/* deprecated function, use gtk_container_remove instead. - */ -void gtk_tree2_remove_item (GtkTree2 *tree, - GtkWidget *child); -void gtk_tree2_item_up (GtkTree2 *tree, - gint position); - -void gtk_tree2_select_next_child (GtkTree2 *tree, - GtkWidget *tree_item, gboolean descend); - -void gtk_tree2_select_prev_child (GtkTree2 *tree, - GtkWidget *tree_item); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - - -#endif /* __GTK_TREE2_H__ */ diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/gtktreeitem2.c b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/gtktreeitem2.c deleted file mode 100644 index 7e6f8116b..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/gtktreeitem2.c +++ /dev/null @@ -1,1110 +0,0 @@ -/* GTK - The GIMP Toolkit - * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library 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 - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -/* - * Modified by the GTK+ Team and others 1997-1999. See the AUTHORS - * file for a list of people on the GTK+ Team. See the ChangeLog - * files for a list of changes. These files are distributed with - * GTK+ at ftp://ftp.gtk.org/pub/gtk/. - */ - -#include -#include "gtktree2.h" -#include "gtktreeitem2.h" -#include -#include -#include -#include - -#include "tree_plus.xpm" -#include "tree_minus.xpm" - -#define DEFAULT_DELTA 9 - -enum { - COLLAPSE_TREE, - EXPAND_TREE, - LAST_SIGNAL -}; - -typedef struct _GtkTree2Pixmaps GtkTree2Pixmaps; - -struct _GtkTree2Pixmaps { - gint refcount; - GdkColormap *colormap; - - GdkPixmap *pixmap_plus; - GdkPixmap *pixmap_minus; - GdkBitmap *mask_plus; - GdkBitmap *mask_minus; -}; - -static GList *pixmaps = NULL; - -static void gtk_tree_item2_class_init (GtkTreeItem2Class *klass); -static void gtk_tree_item2_init (GtkTreeItem2 *tree_item); -static void gtk_tree_item2_realize (GtkWidget *widget); -static void gtk_tree_item2_size_request (GtkWidget *widget, - GtkRequisition *requisition); -static void gtk_tree_item2_size_allocate (GtkWidget *widget, - GtkAllocation *allocation); -static void gtk_tree_item2_draw (GtkWidget *widget, - GdkRectangle *area); -static void gtk_tree_item2_draw_focus (GtkWidget *widget); -static void gtk_tree_item2_paint (GtkWidget *widget, - GdkRectangle *area); -static gint gtk_tree_item2_button_press (GtkWidget *widget, - GdkEventButton *event); -static gint gtk_tree_item2_expose (GtkWidget *widget, - GdkEventExpose *event); -static gint gtk_tree_item2_focus_in (GtkWidget *widget, - GdkEventFocus *event); -static gint gtk_tree_item2_focus_out (GtkWidget *widget, - GdkEventFocus *event); -static void gtk_tree_item2_forall (GtkContainer *container, - gboolean include_internals, - GtkCallback callback, - gpointer callback_data); - -static void gtk_real_tree_item2_select (GtkItem *item); -static void gtk_real_tree_item2_deselect (GtkItem *item); -static void gtk_real_tree_item2_toggle (GtkItem *item); -static void gtk_real_tree_item2_expand (GtkTreeItem2 *item); -static void gtk_real_tree_item2_collapse (GtkTreeItem2 *item); -static void gtk_real_tree_item2_expand (GtkTreeItem2 *item); -static void gtk_real_tree_item2_collapse (GtkTreeItem2 *item); -static void gtk_tree_item2_destroy (GtkObject *object); -static void gtk_tree_item2_subtree_button_click (GtkWidget *widget); -static void gtk_tree_item2_subtree_button_changed_state (GtkWidget *widget); - -static void gtk_tree_item2_map(GtkWidget*); -static void gtk_tree_item2_unmap(GtkWidget*); - -static void gtk_tree_item2_add_pixmaps (GtkTreeItem2 *tree_item); -static void gtk_tree_item2_remove_pixmaps (GtkTreeItem2 *tree_item); - -static GtkItemClass *parent_class = NULL; -static guint tree_item_signals[LAST_SIGNAL] = { 0 }; - -GtkType -gtk_tree_item2_get_type (void) -{ - static GtkType tree_item_type = 0; - - if (!tree_item_type) - { - static const GtkTypeInfo tree_item_info = - { - "GtkTreeItem", - sizeof (GtkTreeItem2), - sizeof (GtkTreeItem2Class), - (GtkClassInitFunc) gtk_tree_item2_class_init, - (GtkObjectInitFunc) gtk_tree_item2_init, - /* reserved_1 */ NULL, - /* reserved_2 */ NULL, - (GtkClassInitFunc) NULL, - }; - - tree_item_type = gtk_type_unique (gtk_item_get_type (), &tree_item_info); - } - - return tree_item_type; -} - -static void -gtk_tree_item2_class_init (GtkTreeItem2Class *class) -{ - GtkObjectClass *object_class; - GtkWidgetClass *widget_class; - GtkContainerClass *container_class; - GtkItemClass *item_class; - - object_class = (GtkObjectClass*) class; - widget_class = (GtkWidgetClass*) class; - item_class = (GtkItemClass*) class; - container_class = (GtkContainerClass*) class; - - parent_class = gtk_type_class (gtk_item_get_type ()); - - tree_item_signals[EXPAND_TREE] = - gtk_signal_new ("expand", - GTK_RUN_FIRST, - object_class->type, - GTK_SIGNAL_OFFSET (GtkTreeItem2Class, expand), - gtk_marshal_NONE__NONE, - GTK_TYPE_NONE, 0); - tree_item_signals[COLLAPSE_TREE] = - gtk_signal_new ("collapse", - GTK_RUN_FIRST, - object_class->type, - GTK_SIGNAL_OFFSET (GtkTreeItem2Class, collapse), - gtk_marshal_NONE__NONE, - GTK_TYPE_NONE, 0); - - gtk_object_class_add_signals (object_class, tree_item_signals, LAST_SIGNAL); - - object_class->destroy = gtk_tree_item2_destroy; - - widget_class->realize = gtk_tree_item2_realize; - widget_class->size_request = gtk_tree_item2_size_request; - widget_class->size_allocate = gtk_tree_item2_size_allocate; - widget_class->draw = gtk_tree_item2_draw; - widget_class->draw_focus = gtk_tree_item2_draw_focus; - widget_class->button_press_event = gtk_tree_item2_button_press; - widget_class->expose_event = gtk_tree_item2_expose; - widget_class->focus_in_event = gtk_tree_item2_focus_in; - widget_class->focus_out_event = gtk_tree_item2_focus_out; - widget_class->map = gtk_tree_item2_map; - widget_class->unmap = gtk_tree_item2_unmap; - - container_class->forall = gtk_tree_item2_forall; - - item_class->select = gtk_real_tree_item2_select; - item_class->deselect = gtk_real_tree_item2_deselect; - item_class->toggle = gtk_real_tree_item2_toggle; - - class->expand = gtk_real_tree_item2_expand; - class->collapse = gtk_real_tree_item2_collapse; -} - -/* callback for event box mouse event */ -static void -gtk_tree_item2_subtree_button_click (GtkWidget *widget) -{ - GtkTreeItem2* item; - - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_EVENT_BOX (widget)); - - item = (GtkTreeItem2*) gtk_object_get_user_data (GTK_OBJECT (widget)); - if (!GTK_WIDGET_IS_SENSITIVE (item)) - return; - - if (item->expanded) - gtk_tree_item2_collapse (item); - else - gtk_tree_item2_expand (item); -} - -/* callback for event box state changed */ -static void -gtk_tree_item2_subtree_button_changed_state (GtkWidget *widget) -{ - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_EVENT_BOX (widget)); - - if (GTK_WIDGET_VISIBLE (widget)) - { - - if (widget->state == GTK_STATE_NORMAL) - gdk_window_set_background (widget->window, &widget->style->base[widget->state]); - else - gdk_window_set_background (widget->window, &widget->style->bg[widget->state]); - - if (GTK_WIDGET_DRAWABLE (widget)) - gdk_window_clear_area (widget->window, 0, 0, - widget->allocation.width, widget->allocation.height); - } -} - -static void -gtk_tree_item2_init (GtkTreeItem2 *tree_item) -{ - GtkWidget *eventbox, *pixmapwid; - - g_return_if_fail (tree_item != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (tree_item)); - - tree_item->expanded = FALSE; - tree_item->subtree = NULL; - GTK_WIDGET_SET_FLAGS (tree_item, GTK_CAN_FOCUS); - - /* create an event box containing one pixmaps */ - eventbox = gtk_event_box_new(); - gtk_widget_set_events (eventbox, GDK_BUTTON_PRESS_MASK); - gtk_signal_connect(GTK_OBJECT(eventbox), "state_changed", - (GtkSignalFunc)gtk_tree_item2_subtree_button_changed_state, - (gpointer)NULL); - gtk_signal_connect(GTK_OBJECT(eventbox), "realize", - (GtkSignalFunc)gtk_tree_item2_subtree_button_changed_state, - (gpointer)NULL); -/* HF inutile - gtk_signal_connect(GTK_OBJECT(eventbox), "button_press_event", - (GtkSignalFunc)gtk_tree_item2_subtree_button_click, - (gpointer)NULL); -*/ - gtk_object_set_user_data(GTK_OBJECT(eventbox), tree_item); - tree_item->pixmaps_box = eventbox; - - /* create pixmap for button '+' */ - pixmapwid = gtk_type_new (gtk_pixmap_get_type ()); - if (!tree_item->expanded) - gtk_container_add (GTK_CONTAINER (eventbox), pixmapwid); - gtk_widget_show (pixmapwid); - tree_item->plus_pix_widget = pixmapwid; - gtk_widget_ref (tree_item->plus_pix_widget); - gtk_object_sink (GTK_OBJECT (tree_item->plus_pix_widget)); - - /* create pixmap for button '-' */ - pixmapwid = gtk_type_new (gtk_pixmap_get_type ()); - if (tree_item->expanded) - gtk_container_add (GTK_CONTAINER (eventbox), pixmapwid); - gtk_widget_show (pixmapwid); - tree_item->minus_pix_widget = pixmapwid; - gtk_widget_ref (tree_item->minus_pix_widget); - gtk_object_sink (GTK_OBJECT (tree_item->minus_pix_widget)); - - gtk_widget_set_parent (eventbox, GTK_WIDGET (tree_item)); -} - - -GtkWidget* -gtk_tree_item2_new (void) -{ - GtkWidget *tree_item; - - tree_item = GTK_WIDGET (gtk_type_new (gtk_tree_item2_get_type ())); - - return tree_item; -} - -GtkWidget* -gtk_tree_item2_new_with_label (gchar *label) -{ - GtkWidget *tree_item; - GtkWidget *label_widget; - - tree_item = gtk_tree_item2_new (); - label_widget = gtk_label_new (label); - gtk_misc_set_alignment (GTK_MISC (label_widget), 0.0, 0.5); - - gtk_container_add (GTK_CONTAINER (tree_item), label_widget); - gtk_widget_show (label_widget); - - - return tree_item; -} - -void -gtk_tree_item2_set_subtree (GtkTreeItem2 *tree_item, - GtkWidget *subtree) -{ - g_return_if_fail (tree_item != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (tree_item)); - g_return_if_fail (subtree != NULL); - g_return_if_fail (GTK_IS_TREE2 (subtree)); - - if (tree_item->subtree) - { - g_warning("there is already a subtree for this tree item\n"); - return; - } - - tree_item->subtree = subtree; - GTK_TREE2 (subtree)->tree_owner = GTK_WIDGET (tree_item); - - /* show subtree button */ - if (tree_item->pixmaps_box) - gtk_widget_show (tree_item->pixmaps_box); - - if (tree_item->expanded) - gtk_widget_show (subtree); - else - gtk_widget_hide (subtree); - - gtk_widget_set_parent (subtree, GTK_WIDGET (tree_item)->parent); - - if (GTK_WIDGET_REALIZED (subtree->parent)) - gtk_widget_realize (subtree); - - if (GTK_WIDGET_VISIBLE (subtree->parent) && GTK_WIDGET_VISIBLE (subtree)) - { - if (GTK_WIDGET_MAPPED (subtree->parent)) - gtk_widget_map (subtree); - - gtk_widget_queue_resize (subtree); - } -} - -void -gtk_tree_item2_select (GtkTreeItem2 *tree_item) -{ - g_return_if_fail (tree_item != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (tree_item)); - - gtk_item_select (GTK_ITEM (tree_item)); -} - -void -gtk_tree_item2_deselect (GtkTreeItem2 *tree_item) -{ - g_return_if_fail (tree_item != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (tree_item)); - - gtk_item_deselect (GTK_ITEM (tree_item)); -} - -void -gtk_tree_item2_expand (GtkTreeItem2 *tree_item) -{ - g_return_if_fail (tree_item != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (tree_item)); - - gtk_signal_emit (GTK_OBJECT (tree_item), tree_item_signals[EXPAND_TREE], NULL); -} - -void -gtk_tree_item2_collapse (GtkTreeItem2 *tree_item) -{ - g_return_if_fail (tree_item != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (tree_item)); - - gtk_signal_emit (GTK_OBJECT (tree_item), tree_item_signals[COLLAPSE_TREE], NULL); -} - -static void -gtk_tree_item2_add_pixmaps (GtkTreeItem2 *tree_item) -{ - GList *tmp_list; - GdkColormap *colormap; - GtkTree2Pixmaps *pixmap_node = NULL; - - g_return_if_fail (tree_item != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (tree_item)); - - if (tree_item->pixmaps) - return; - - colormap = gtk_widget_get_colormap (GTK_WIDGET (tree_item)); - - tmp_list = pixmaps; - while (tmp_list) - { - pixmap_node = (GtkTree2Pixmaps *)tmp_list->data; - - if (pixmap_node->colormap == colormap) - break; - - tmp_list = tmp_list->next; - } - - if (tmp_list) - { - pixmap_node->refcount++; - tree_item->pixmaps = tmp_list; - } - else - { - pixmap_node = g_new (GtkTree2Pixmaps, 1); - - pixmap_node->colormap = colormap; - gdk_colormap_ref (colormap); - - pixmap_node->refcount = 1; - - /* create pixmaps for plus icon */ - pixmap_node->pixmap_plus = - gdk_pixmap_create_from_xpm_d (GTK_WIDGET (tree_item)->window, - &pixmap_node->mask_plus, - NULL, - tree_plus); - - /* create pixmaps for minus icon */ - pixmap_node->pixmap_minus = - gdk_pixmap_create_from_xpm_d (GTK_WIDGET (tree_item)->window, - &pixmap_node->mask_minus, - NULL, - tree_minus); - - tree_item->pixmaps = pixmaps = g_list_prepend (pixmaps, pixmap_node); - } - - gtk_pixmap_set (GTK_PIXMAP (tree_item->plus_pix_widget), - pixmap_node->pixmap_plus, pixmap_node->mask_plus); - gtk_pixmap_set (GTK_PIXMAP (tree_item->minus_pix_widget), - pixmap_node->pixmap_minus, pixmap_node->mask_minus); -} - -static void -gtk_tree_item2_remove_pixmaps (GtkTreeItem2 *tree_item) -{ - g_return_if_fail (tree_item != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (tree_item)); - - if (tree_item->pixmaps) - { - GtkTree2Pixmaps *pixmap_node = (GtkTree2Pixmaps *)tree_item->pixmaps->data; - - g_assert (pixmap_node->refcount > 0); - - if (--pixmap_node->refcount == 0) - { - gdk_colormap_unref (pixmap_node->colormap); - gdk_pixmap_unref (pixmap_node->pixmap_plus); - gdk_bitmap_unref (pixmap_node->mask_plus); - gdk_pixmap_unref (pixmap_node->pixmap_minus); - gdk_bitmap_unref (pixmap_node->mask_minus); - - pixmaps = g_list_remove_link (pixmaps, tree_item->pixmaps); - g_list_free_1 (tree_item->pixmaps); - g_free (pixmap_node); - } - - tree_item->pixmaps = NULL; - } -} - -static void -gtk_tree_item2_realize (GtkWidget *widget) -{ - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (widget)); - - if (GTK_WIDGET_CLASS (parent_class)->realize) - (* GTK_WIDGET_CLASS (parent_class)->realize) (widget); - - gdk_window_set_background (widget->window, - &widget->style->base[GTK_STATE_NORMAL]); - - gtk_tree_item2_add_pixmaps (GTK_TREE_ITEM2 (widget)); -} - -static void -gtk_tree_item2_size_request (GtkWidget *widget, - GtkRequisition *requisition) -{ - GtkBin *bin; - GtkTreeItem2* item; - GtkRequisition child_requisition; - - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (widget)); - g_return_if_fail (requisition != NULL); - - bin = GTK_BIN (widget); - item = GTK_TREE_ITEM2(widget); - - requisition->width = (GTK_CONTAINER (widget)->border_width + - widget->style->klass->xthickness) * 2; - requisition->height = GTK_CONTAINER (widget)->border_width * 2; - - if (bin->child && GTK_WIDGET_VISIBLE (bin->child)) - { - GtkRequisition pix_requisition; - - gtk_widget_size_request (bin->child, &child_requisition); - - requisition->width += child_requisition.width; - - gtk_widget_size_request (item->pixmaps_box, - &pix_requisition); - requisition->width += pix_requisition.width + DEFAULT_DELTA + - GTK_TREE2 (widget->parent)->current_indent; - - requisition->height += MAX (child_requisition.height, - pix_requisition.height); - } -} - -static void -gtk_tree_item2_size_allocate (GtkWidget *widget, - GtkAllocation *allocation) -{ - GtkBin *bin; - GtkTreeItem2* item; - GtkAllocation child_allocation; - guint border_width; - int temp; - - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (widget)); - g_return_if_fail (allocation != NULL); - - widget->allocation = *allocation; - if (GTK_WIDGET_REALIZED (widget)) - gdk_window_move_resize (widget->window, - allocation->x, allocation->y, - allocation->width, allocation->height); - - bin = GTK_BIN (widget); - item = GTK_TREE_ITEM2(widget); - - if (bin->child) - { - border_width = (GTK_CONTAINER (widget)->border_width + - widget->style->klass->xthickness); - - child_allocation.x = border_width + GTK_TREE2(widget->parent)->current_indent; - child_allocation.y = GTK_CONTAINER (widget)->border_width; - - child_allocation.width = item->pixmaps_box->requisition.width; - child_allocation.height = item->pixmaps_box->requisition.height; - - temp = allocation->height - child_allocation.height; - child_allocation.y += ( temp / 2 ) + ( temp % 2 ); - - gtk_widget_size_allocate (item->pixmaps_box, &child_allocation); - - child_allocation.y = GTK_CONTAINER (widget)->border_width; - child_allocation.height = MAX (1, (gint)allocation->height - child_allocation.y * 2); - child_allocation.x += item->pixmaps_box->requisition.width+DEFAULT_DELTA; - - child_allocation.width = - MAX (1, (gint)allocation->width - ((gint)child_allocation.x + border_width)); - - gtk_widget_size_allocate (bin->child, &child_allocation); - } -} - -static void -gtk_tree_item2_draw_lines (GtkWidget *widget) -{ - GtkTreeItem2* item; - GtkTree2* tree; - guint lx1, ly1, lx2, ly2; - - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (widget)); - - item = GTK_TREE_ITEM2(widget); - tree = GTK_TREE2(widget->parent); - - /* draw vertical line */ - lx1 = item->pixmaps_box->allocation.width; - lx1 = lx2 = ((lx1 / 2) + (lx1 % 2) + - GTK_CONTAINER (widget)->border_width + 1 + tree->current_indent); - ly1 = 0; - ly2 = widget->allocation.height; - - if (g_list_last (tree->children)->data == widget) - ly2 = (ly2 / 2) + (ly2 % 2); - - if (tree != tree->root_tree) - gdk_draw_line (widget->window, widget->style->black_gc, lx1, ly1, lx2, ly2); - - /* draw vertical line for subtree connecting */ - if(g_list_last(tree->children)->data != (gpointer)widget) - ly2 = (ly2 / 2) + (ly2 % 2); - - lx2 += DEFAULT_DELTA; - - if (item->subtree && item->expanded) - gdk_draw_line (widget->window, widget->style->black_gc, - lx2, ly2, lx2, widget->allocation.height); - - /* draw horizontal line */ - ly1 = ly2; - lx2 += 2; - - gdk_draw_line (widget->window, widget->style->black_gc, - lx1, ly1, lx2, ly2); - - lx2 -= DEFAULT_DELTA+2; - ly1 = 0; - ly2 = widget->allocation.height; - - if (tree != tree->root_tree) - { - item = GTK_TREE_ITEM2 (tree->tree_owner); - tree = GTK_TREE2 (GTK_WIDGET (tree)->parent); - while (tree != tree->root_tree) - { - lx1 = lx2 -= tree->indent_value; - - if (g_list_last (tree->children)->data != item) - gdk_draw_line (widget->window, widget->style->black_gc, lx1, ly1, lx2, ly2); - item = GTK_TREE_ITEM2 (tree->tree_owner); - tree = GTK_TREE2 (GTK_WIDGET (tree)->parent); - } - } -} - -static void -gtk_tree_item2_paint (GtkWidget *widget, - GdkRectangle *area) -{ - GtkBin *bin; - GdkRectangle child_area, item_area; - GtkTreeItem2* tree_item; - - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (widget)); - g_return_if_fail (area != NULL); - - if (GTK_WIDGET_DRAWABLE (widget)) - { - bin = GTK_BIN (widget); - tree_item = GTK_TREE_ITEM2(widget); - - if (widget->state == GTK_STATE_NORMAL) - { - gdk_window_set_back_pixmap (widget->window, NULL, TRUE); - gdk_window_clear_area (widget->window, area->x, area->y, area->width, area->height); - } - else - { - if (!GTK_WIDGET_IS_SENSITIVE (widget)) - gtk_paint_flat_box(widget->style, widget->window, - widget->state, GTK_STATE_INSENSITIVE, - area, widget, "treeitem", - 0, 0, -1, -1); - else - gtk_paint_flat_box(widget->style, widget->window, - widget->state, GTK_SHADOW_ETCHED_OUT, - area, widget, "treeitem", - 0, 0, -1, -1); - } - - /* draw left size of tree item */ - item_area.x = 0; - item_area.y = 0; - item_area.width = (tree_item->pixmaps_box->allocation.width + DEFAULT_DELTA + - GTK_TREE2 (widget->parent)->current_indent + 2); - item_area.height = widget->allocation.height; - - - if (gdk_rectangle_intersect(&item_area, area, &child_area)) - { - - gtk_tree_item2_draw_lines(widget); - - if (tree_item->pixmaps_box && - GTK_WIDGET_VISIBLE(tree_item->pixmaps_box) && - gtk_widget_intersect (tree_item->pixmaps_box, area, &child_area)) - gtk_widget_draw (tree_item->pixmaps_box, &child_area); - } - - if (GTK_WIDGET_HAS_FOCUS (widget)) - gtk_paint_focus (widget->style, widget->window, - NULL, widget, "treeitem", - 0, 0, - widget->allocation.width - 1, - widget->allocation.height - 1); - - } -} - -static void -gtk_tree_item2_draw (GtkWidget *widget, - GdkRectangle *area) -{ - GtkBin *bin; - GdkRectangle child_area; - - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (widget)); - g_return_if_fail (area != NULL); - - if (GTK_WIDGET_DRAWABLE (widget)) - { - bin = GTK_BIN (widget); - - gtk_tree_item2_paint (widget, area); - - if (bin->child && - gtk_widget_intersect (bin->child, area, &child_area)) - gtk_widget_draw (bin->child, &child_area); - - } -} - -static void -gtk_tree_item2_draw_focus (GtkWidget *widget) -{ - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (widget)); - - gtk_widget_draw(widget, NULL); -} - -static gint -gtk_tree_item2_button_press (GtkWidget *widget, - GdkEventButton *event) -{ -/* HF - g_return_val_if_fail (widget != NULL, FALSE); - g_return_val_if_fail (GTK_IS_TREE_ITEM2 (widget), FALSE); - g_return_val_if_fail (event != NULL, FALSE); - - if (event->type == GDK_BUTTON_PRESS - && GTK_WIDGET_IS_SENSITIVE(widget) - && !GTK_WIDGET_HAS_FOCUS (widget)) - gtk_widget_grab_focus (widget); - - return FALSE; - -*/ -} - -static gint -gtk_tree_item2_expose (GtkWidget *widget, - GdkEventExpose *event) -{ - GdkEventExpose child_event; - GtkBin *bin; - - g_return_val_if_fail (widget != NULL, FALSE); - g_return_val_if_fail (GTK_IS_TREE_ITEM2 (widget), FALSE); - g_return_val_if_fail (event != NULL, FALSE); - - if (GTK_WIDGET_DRAWABLE (widget)) - { - bin = GTK_BIN (widget); - - gtk_tree_item2_paint (widget, &event->area); - - child_event = *event; - if (bin->child && GTK_WIDGET_NO_WINDOW (bin->child) && - gtk_widget_intersect (bin->child, &event->area, &child_event.area)) - gtk_widget_event (bin->child, (GdkEvent*) &child_event); - } - - return FALSE; -} - -static gint -gtk_tree_item2_focus_in (GtkWidget *widget, - GdkEventFocus *event) -{ - g_return_val_if_fail (widget != NULL, FALSE); - g_return_val_if_fail (GTK_IS_TREE_ITEM2 (widget), FALSE); - g_return_val_if_fail (event != NULL, FALSE); - - GTK_WIDGET_SET_FLAGS (widget, GTK_HAS_FOCUS); - gtk_widget_draw_focus (widget); - - - return FALSE; -} - -static gint -gtk_tree_item2_focus_out (GtkWidget *widget, - GdkEventFocus *event) -{ - g_return_val_if_fail (widget != NULL, FALSE); - g_return_val_if_fail (GTK_IS_TREE_ITEM2 (widget), FALSE); - g_return_val_if_fail (event != NULL, FALSE); - - GTK_WIDGET_UNSET_FLAGS (widget, GTK_HAS_FOCUS); - gtk_widget_draw_focus (widget); - - - return FALSE; -} - -static void -gtk_real_tree_item2_select (GtkItem *item) -{ - GtkTreeItem2 *tree_item; - GtkWidget *widget; - - g_return_if_fail (item != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (item)); - - tree_item = GTK_TREE_ITEM2 (item); - widget = GTK_WIDGET (item); - - gtk_widget_set_state (GTK_WIDGET (item), GTK_STATE_SELECTED); - - if (!widget->parent || GTK_TREE2 (widget->parent)->view_mode == GTK_TREE2_VIEW_LINE) - gtk_widget_set_state (GTK_TREE_ITEM2 (item)->pixmaps_box, GTK_STATE_SELECTED); -} - -static void -gtk_real_tree_item2_deselect (GtkItem *item) -{ - GtkTreeItem2 *tree_item; - GtkWidget *widget; - - g_return_if_fail (item != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (item)); - - tree_item = GTK_TREE_ITEM2 (item); - widget = GTK_WIDGET (item); - - gtk_widget_set_state (widget, GTK_STATE_NORMAL); - - if (!widget->parent || GTK_TREE2 (widget->parent)->view_mode == GTK_TREE2_VIEW_LINE) - gtk_widget_set_state (tree_item->pixmaps_box, GTK_STATE_NORMAL); -} - -static void -gtk_real_tree_item2_toggle (GtkItem *item) -{ - g_return_if_fail (item != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (item)); - - if(!GTK_WIDGET_IS_SENSITIVE(item)) - return; - - if (GTK_WIDGET (item)->parent && GTK_IS_TREE2 (GTK_WIDGET (item)->parent)) - gtk_tree2_select_child (GTK_TREE2 (GTK_WIDGET (item)->parent), - GTK_WIDGET (item)); - else - { - /* Should we really bother with this bit? A listitem not in a list? - * -Johannes Keukelaar - * yes, always be on the safe side! - * -timj - */ - if (GTK_WIDGET (item)->state == GTK_STATE_SELECTED) - gtk_widget_set_state (GTK_WIDGET (item), GTK_STATE_NORMAL); - else - gtk_widget_set_state (GTK_WIDGET (item), GTK_STATE_SELECTED); - } -} - -static void -gtk_real_tree_item2_expand (GtkTreeItem2 *tree_item) -{ - GtkTree2* tree; - - g_return_if_fail (tree_item != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (tree_item)); - - if (tree_item->subtree && !tree_item->expanded) - { - tree = GTK_TREE2 (GTK_WIDGET (tree_item)->parent); - - /* hide subtree widget */ - gtk_widget_show (tree_item->subtree); - - /* hide button '+' and show button '-' */ - if (tree_item->pixmaps_box) - { - gtk_container_remove (GTK_CONTAINER (tree_item->pixmaps_box), - tree_item->plus_pix_widget); - gtk_container_add (GTK_CONTAINER (tree_item->pixmaps_box), - tree_item->minus_pix_widget); - } - if (tree->root_tree) - gtk_widget_queue_resize (GTK_WIDGET (tree->root_tree)); - tree_item->expanded = TRUE; - } -} - -static void -gtk_real_tree_item2_collapse (GtkTreeItem2 *tree_item) -{ - GtkTree2* tree; - - g_return_if_fail (tree_item != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (tree_item)); - - if (tree_item->subtree && tree_item->expanded) - { - tree = GTK_TREE2 (GTK_WIDGET (tree_item)->parent); - - /* hide subtree widget */ - gtk_widget_hide (tree_item->subtree); - - /* hide button '-' and show button '+' */ - if (tree_item->pixmaps_box) - { - gtk_container_remove (GTK_CONTAINER (tree_item->pixmaps_box), - tree_item->minus_pix_widget); - gtk_container_add (GTK_CONTAINER (tree_item->pixmaps_box), - tree_item->plus_pix_widget); - } - if (tree->root_tree) - gtk_widget_queue_resize (GTK_WIDGET (tree->root_tree)); - tree_item->expanded = FALSE; - } -} - -static void -gtk_tree_item2_destroy (GtkObject *object) -{ - GtkTreeItem2* item; - GtkWidget* child; - - g_return_if_fail (object != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (object)); - -#ifdef TREE_DEBUG - g_message("+ gtk_tree_item2_destroy [object %#x]\n", (int)object); -#endif /* TREE_DEBUG */ - - item = GTK_TREE_ITEM2(object); - - /* free sub tree if it exist */ - child = item->subtree; - if (child) - { - gtk_widget_ref (child); - gtk_widget_unparent (child); - gtk_widget_destroy (child); - gtk_widget_unref (child); - item->subtree = NULL; - } - - /* free pixmaps box */ - child = item->pixmaps_box; - if (child) - { - gtk_widget_ref (child); - gtk_widget_unparent (child); - gtk_widget_destroy (child); - gtk_widget_unref (child); - item->pixmaps_box = NULL; - } - - - /* destroy plus pixmap */ - if (item->plus_pix_widget) - { - gtk_widget_destroy (item->plus_pix_widget); - gtk_widget_unref (item->plus_pix_widget); - item->plus_pix_widget = NULL; - } - - /* destroy minus pixmap */ - if (item->minus_pix_widget) - { - gtk_widget_destroy (item->minus_pix_widget); - gtk_widget_unref (item->minus_pix_widget); - item->minus_pix_widget = NULL; - } - - /* By removing the pixmaps here, and not in unrealize, we depend on - * the fact that a widget can never change colormap or visual. - */ - gtk_tree_item2_remove_pixmaps (item); - - GTK_OBJECT_CLASS (parent_class)->destroy (object); - -#ifdef TREE_DEBUG - g_message("- gtk_tree_item2_destroy\n"); -#endif /* TREE_DEBUG */ -} - -void -gtk_tree_item2_remove_subtree (GtkTreeItem2* item) -{ - g_return_if_fail (item != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2(item)); - g_return_if_fail (item->subtree != NULL); - - if (GTK_TREE2 (item->subtree)->children) - { - /* The following call will remove the children and call - * gtk_tree_item2_remove_subtree() again. So we are done. - */ - gtk_tree2_remove_items (GTK_TREE2 (item->subtree), - GTK_TREE2 (item->subtree)->children); - return; - } - - if (GTK_WIDGET_MAPPED (item->subtree)) - gtk_widget_unmap (item->subtree); - - gtk_widget_unparent (item->subtree); - - if (item->pixmaps_box) - gtk_widget_hide (item->pixmaps_box); - - item->subtree = NULL; - - if (item->expanded) - { - item->expanded = FALSE; - if (item->pixmaps_box) - { - gtk_container_remove (GTK_CONTAINER (item->pixmaps_box), - item->minus_pix_widget); - gtk_container_add (GTK_CONTAINER (item->pixmaps_box), - item->plus_pix_widget); - } - } -} - -static void -gtk_tree_item2_map (GtkWidget *widget) -{ - GtkBin *bin; - GtkTreeItem2* item; - - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (widget)); - - bin = GTK_BIN (widget); - item = GTK_TREE_ITEM2(widget); - - GTK_WIDGET_SET_FLAGS (widget, GTK_MAPPED); - - if(item->pixmaps_box && - GTK_WIDGET_VISIBLE (item->pixmaps_box) && - !GTK_WIDGET_MAPPED (item->pixmaps_box)) - gtk_widget_map (item->pixmaps_box); - - if (bin->child && - GTK_WIDGET_VISIBLE (bin->child) && - !GTK_WIDGET_MAPPED (bin->child)) - gtk_widget_map (bin->child); - - gdk_window_show (widget->window); -} - -static void -gtk_tree_item2_unmap (GtkWidget *widget) -{ - GtkBin *bin; - GtkTreeItem2* item; - - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (widget)); - - GTK_WIDGET_UNSET_FLAGS (widget, GTK_MAPPED); - bin = GTK_BIN (widget); - item = GTK_TREE_ITEM2(widget); - - gdk_window_hide (widget->window); - - if(item->pixmaps_box && - GTK_WIDGET_VISIBLE (item->pixmaps_box) && - GTK_WIDGET_MAPPED (item->pixmaps_box)) - gtk_widget_unmap (bin->child); - - if (bin->child && - GTK_WIDGET_VISIBLE (bin->child) && - GTK_WIDGET_MAPPED (bin->child)) - gtk_widget_unmap (bin->child); -} - -static void -gtk_tree_item2_forall (GtkContainer *container, - gboolean include_internals, - GtkCallback callback, - gpointer callback_data) -{ - GtkBin *bin; - GtkTreeItem2 *tree_item; - - g_return_if_fail (container != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (container)); - g_return_if_fail (callback != NULL); - - bin = GTK_BIN (container); - tree_item = GTK_TREE_ITEM2 (container); - - if (bin->child) - (* callback) (bin->child, callback_data); -/* if (include_internals && tree_item->subtree) - (* callback) (tree_item->subtree, callback_data); */ -} diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/gtktreeitem2.h b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/gtktreeitem2.h deleted file mode 100644 index bbbb364ad..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/gtktreeitem2.h +++ /dev/null @@ -1,91 +0,0 @@ -/* GTK - The GIMP Toolkit - * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library 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 - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -/* - * Modified by the GTK+ Team and others 1997-1999. See the AUTHORS - * file for a list of people on the GTK+ Team. See the ChangeLog - * files for a list of changes. These files are distributed with - * GTK+ at ftp://ftp.gtk.org/pub/gtk/. - */ - -#ifndef __GTK_TREE_ITEM2_H__ -#define __GTK_TREE_ITEM2_H__ - - -#include -#include - - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - - -#define GTK_TYPE_TREE_ITEM2 (gtk_tree_item2_get_type ()) -#define GTK_TREE_ITEM2(obj) (GTK_CHECK_CAST ((obj), GTK_TYPE_TREE_ITEM2, GtkTreeItem2)) -#define GTK_TREE_ITEM2_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GTK_TYPE_TREE_ITEM2, GtkTreeItem2Class)) -#define GTK_IS_TREE_ITEM2(obj) (GTK_CHECK_TYPE ((obj), GTK_TYPE_TREE_ITEM2)) -#define GTK_IS_TREE_ITEM2_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GTK_TYPE_TREE_ITEM2)) - -#define GTK_TREE_ITEM2_SUBTREE(obj) (GTK_TREE_ITEM2(obj)->subtree) - - -typedef struct _GtkTreeItem2 GtkTreeItem2; -typedef struct _GtkTreeItem2Class GtkTreeItem2Class; - -struct _GtkTreeItem2 -{ - GtkItem item; - - GtkWidget *subtree; - GtkWidget *pixmaps_box; - GtkWidget *plus_pix_widget, *minus_pix_widget; - - GList *pixmaps; /* pixmap node for this items color depth */ - - guint expanded : 1; -}; - -struct _GtkTreeItem2Class -{ - GtkItemClass parent_class; - - void (* expand) (GtkTreeItem2 *tree_item); - void (* collapse) (GtkTreeItem2 *tree_item); -}; - - -GtkType gtk_tree_item2_get_type (void); -GtkWidget* gtk_tree_item2_new (void); -GtkWidget* gtk_tree_item2_new_with_label (gchar *label); -void gtk_tree_item2_set_subtree (GtkTreeItem2 *tree_item, - GtkWidget *subtree); -void gtk_tree_item2_remove_subtree (GtkTreeItem2 *tree_item); -void gtk_tree_item2_select (GtkTreeItem2 *tree_item); -void gtk_tree_item2_deselect (GtkTreeItem2 *tree_item); -void gtk_tree_item2_expand (GtkTreeItem2 *tree_item); -void gtk_tree_item2_collapse (GtkTreeItem2 *tree_item); - - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - - -#endif /* __GTK_TREE_ITEM2_H__ */ diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/handlebox.xpm b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/handlebox.xpm deleted file mode 100644 index e4d792cbb..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/handlebox.xpm +++ /dev/null @@ -1,34 +0,0 @@ -/* XPM */ -static char *handlebox_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 7 1", -" c Gray0", -". c #7b7b7b", -"X c #d6d6d6", -"o c #b3cece", -"O c Gray87", -"+ c Gray100", -"@ c None", -/* pixels */ -"@@@@@@@@@@@@@@@@@@@@@", -"@@@@@@@@@@@@@@@@@@@@@", -"@@@@@@@@@@@@@@@@@@@@@", -"@++++++++++++++++++ @", -"@+OOOO.XXXXXXXXXXX. @", -"@++OOO.XXXXXXXXXXX. @", -"@+O.+O.XXXXXXXXXXX. @", -"@+OOO..XXXXXXXXXXX. @", -"@++OOO.XXXXXXXXXXX. @", -"@+O.+O.XXXXXXXXXXX. @", -"@+OOO..XXXXXXXXXXX. @", -"@++OOO.XXXXXXXXXXX. @", -"@+O.+O.XXXXXXXXXXX. @", -"@+OOO..XXXXXXXXXXX. @", -"@+................. @", -"@ @", -"@@@@@@@@@@@@@@@@@@@@@", -"@@@@@@@@@@@@@@@@@@@@@", -"@@@@@@@@@@@@@@@@@@@@@", -"@@@@@@@@@@@@@@@@@@@@@", -"@@@@@@@@@@@@@@@@@@@@@" -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/hbox.xpm b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/hbox.xpm deleted file mode 100644 index 7363317b6..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/hbox.xpm +++ /dev/null @@ -1,31 +0,0 @@ -/* XPM */ -static char *hbox_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 4 1", -" c Gray0", -". c #7b7b7b", -"X c #d6d6d6", -"o c Gray100", -/* pixels */ -"oooooo oooooo oooooo ", -"oXXXX. oXXXX. oXXXX. ", -"oXXXX. oXXXX. oXXXX. ", -"oXXXX. oXXXX. oXXXX. ", -"oXXXX. oXXXX. oXXXX. ", -"oXXXX. oXXXX. oXXXX. ", -"oXXXX. oXXXX. oXXXX. ", -"oXXXX. oXXXX. oXXXX. ", -"oXXXX. oXXXX. oXXXX. ", -"oXXXX. oXXXX. oXXXX. ", -"oXXXX. oXXXX. oXXXX. ", -"oXXXX. oXXXX. oXXXX. ", -"oXXXX. oXXXX. oXXXX. ", -"oXXXX. oXXXX. oXXXX. ", -"oXXXX. oXXXX. oXXXX. ", -"oXXXX. oXXXX. oXXXX. ", -"oXXXX. oXXXX. oXXXX. ", -"oXXXX. oXXXX. oXXXX. ", -"oXXXX. oXXXX. oXXXX. ", -"o..... o..... o..... ", -" " -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/hbuttonbox.xpm b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/hbuttonbox.xpm deleted file mode 100644 index 77d73dc46..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/hbuttonbox.xpm +++ /dev/null @@ -1,33 +0,0 @@ -/* XPM */ -static char *hbuttonbox_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 6 1", -" c Gray0", -". c #7b7b7b", -"X c #d6d6d6", -"o c #b3cece", -"O c Gray100", -"+ c None", -/* pixels */ -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+OOOOO +OOOOO +OOOOO ", -"+OXXX. +OXXX. +OXXX. ", -"+OXXX. +OXXX. +OXXX. ", -"+O.... +O.... +O.... ", -"+ + + ", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++" -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/hseparator.xpm b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/hseparator.xpm deleted file mode 100644 index 41ad8aafc..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/hseparator.xpm +++ /dev/null @@ -1,31 +0,0 @@ -/* XPM */ -static char *hseparator_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 4 1", -" c #7b7b7b", -". c #b3cece", -"X c Gray100", -"o c None", -/* pixels */ -"ooooooooooooooooooooo", -"ooooooooooooooooooooo", -"ooooooooooooooooooooo", -"ooooooooooooooooooooo", -"ooooooooooooooooooooo", -"ooooooooooooooooooooo", -"ooooooooooooooooooooo", -"ooooooooooooooooooooo", -"ooooooooooooooooooooo", -"ooooooooooooooooooooo", -"o o", -"oXXXXXXXXXXXXXXXXXXXo", -"ooooooooooooooooooooo", -"ooooooooooooooooooooo", -"ooooooooooooooooooooo", -"ooooooooooooooooooooo", -"ooooooooooooooooooooo", -"ooooooooooooooooooooo", -"ooooooooooooooooooooo", -"ooooooooooooooooooooo", -"ooooooooooooooooooooo" -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/label.xpm b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/label.xpm deleted file mode 100644 index 013e13a96..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/label.xpm +++ /dev/null @@ -1,30 +0,0 @@ -/* XPM */ -static char *label_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 3 1", -" c Gray0", -". c #b3cece", -"X c None", -/* pixels */ -"XXXXXXXXXXXXXXXXXXXXX", -"XXXXXXXXXXXXXXXXXXXXX", -"XXXXXXXXXXXXXXXXXXXXX", -"XXXXXXXXXX XXXXXXXXX", -"XXXXXXXXX XXXXXXXXX", -"XXXXXXXXX XXXXXXXXX", -"XXXXXXXX XXXXXXXX", -"XXXXXXXX XXXXXXXX", -"XXXXXXXX XXXXXXX", -"XXXXXXX X XXXXXXX", -"XXXXXXX X XXXXXX", -"XXXXXX XX XXXXXX", -"XXXXXX XXXXX", -"XXXXX XXXXX", -"XXXXX XXXXX XXXXX", -"XXXX XXXXX XXXX", -"XXX XXXXX XXX", -"XXX XXX XXX", -"XXXXXXXXXXXXXXXXXXXXX", -"XXXXXXXXXXXXXXXXXXXXX", -"XXXXXXXXXXXXXXXXXXXXX" -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/load_lexer.mll b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/load_lexer.mll deleted file mode 100644 index 46aa5acc2..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/load_lexer.mll +++ /dev/null @@ -1,46 +0,0 @@ -{ -open Load_parser -} - -rule token = parse - [ ' ' '\t' '\n']+ { token lexbuf } -| "" { WINDOW_END } -| "name" { NAME } -| '=' { EQUAL } -| '>' { SUP } - -| "<" ['A'-'Z' 'a'-'z' '0'-'9' '_']+ - { - let l = Lexing.lexeme lexbuf in - let s = String.sub l ~pos:1 ~len:(String.length l - 1) in - WIDGET_START s - } - -| "' - { - let l = Lexing.lexeme lexbuf in - let s = String.sub l ~pos:2 ~len:(String.length l - 3) in - WIDGET_END s - } - -| '"' [^ '"']* '"' - { - let l = Lexing.lexeme lexbuf in - let s = String.sub l ~pos:1 ~len:(String.length l - 2) in - IDENT s - } - -| '\'' [^ '\'']* '\'' - { - let l = Lexing.lexeme lexbuf in - let s = String.sub l ~pos:1 ~len:(String.length l - 2) in - IDENT s - } - -| ['A'-'Z' 'a'-'z' '0'-'9' '_' '.']+ - { - let s = Lexing.lexeme lexbuf in IDENT s - } - -| eof { EOF } diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/load_parser.mly b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/load_parser.mly deleted file mode 100644 index 09c7b7bf7..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/load_parser.mly +++ /dev/null @@ -1,56 +0,0 @@ -%{ -open Utils -%} - -%token EOF NAME EQUAL SUP WINDOW_START WINDOW_END -%token WIDGET_START WIDGET_END IDENT - -%type window_start -%type property widget_start -%type <(string * string) list> property_list -%type widget window -%type children window_list project - -%start project -%start window -%start widget - -%% - -project : window_list EOF { List.rev $1 } - -window_list : { [] } - | window_list window { $2 :: $1 } -; - -window : window_start property_list children WINDOW_END - { - Node (("window", $1, List.rev $2), $3) - } -; - -window_start : WINDOW_START NAME EQUAL IDENT SUP { $4 } -; - -children : { [] } - | children widget { $2 :: $1 } -; - -widget : widget_start property_list children WIDGET_END - { - let classe, name = $1 in - if classe <> $4 then raise Parsing.Parse_error; - Node ((classe, name, List.rev $2), $3) - } -; - -widget_start : WIDGET_START NAME EQUAL IDENT SUP { $1, $4 } -; - -property_list : { [] } - | property_list property { $2 :: $1 } -; - -property : IDENT EQUAL IDENT { $1, $3 } -; - diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/main.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/main.ml deleted file mode 100644 index cb150e086..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/main.ml +++ /dev/null @@ -1,393 +0,0 @@ -(* $Id$ *) - -open GdkKeysyms -open Gtk -open GObj - -open Utils -open TiBase - -let main_project_modify = ref false - -let main_window = GWindow.window ~title:"ZOOM" ~x:10 ~y:10 () -let main_vbox = GPack.vbox ~packing:main_window#add () -let main_menu = GMenu.menu_bar ~packing:(main_vbox#pack ~expand:false) () - -let can_copy = ref (fun _ -> assert false) -let can_paste = ref (fun _ -> assert false) - -class project () = - let project_box = GPack.vbox ~packing:main_vbox#pack () in - let project_tree = GTree2.tree ~packing:project_box#pack () in - object(self) - val mutable window_list = [] - -(* the selected window *) - val mutable selected = (None : window_and_tree option) - - method change_selected sel = - match selected with - | None -> - selected <- Some sel; - sel#project_tree_item#misc#set_state `SELECTED; - !can_copy true - | Some old_sel -> - if sel = old_sel then begin - selected <- None; - sel#project_tree_item#misc#set_state `NORMAL; - !can_copy false - end else begin - old_sel#project_tree_item#misc#set_state `NORMAL; - selected <- Some sel; - sel#project_tree_item#misc#set_state `SELECTED; - !can_copy true - end - - val mutable filename = "" - val mutable dirname = "" - - method set_filename f = - let dir, file = split_filename f ~ext:".rad" in - filename <- file; - dirname <- dir - - method get_filename () = - get_filename ~callback:self#set_filename ~dir:dirname () - - method dirname = dirname - -(* method set_dirname f = dirname <- f *) - - method add_window ~name ?tree:wt () = - let wt = match wt with - | None -> new window_and_tree ~name - | Some wt -> wt in - let tiwin = wt#tiwin and tw=wt#tree_window in - let project_tree_item = wt#project_tree_item in - project_tree#append project_tree_item; - let show = ref true in - project_tree_item#event#connect#button_press ~callback: - (fun ev -> - match GdkEvent.get_type ev with - | `BUTTON_PRESS -> - if GdkEvent.Button.button ev = 1 then begin - self#change_selected wt - end else - if GdkEvent.Button.button ev = 3 then begin - let menu = GMenu.menu () in - let name = wt#tiwin#name in - let mi_remove = GMenu.menu_item ~label:("delete " ^ name) - ~packing:menu#append () - and mi_copy = GMenu.menu_item ~label:("copy " ^ name) - ~packing:menu#append () - and mi_cut = GMenu.menu_item ~label:("cut " ^ name) - ~packing:menu#append () in - mi_remove#connect#activate - ~callback:(fun () -> self#delete_window wt); - mi_copy#connect#activate - ~callback:(fun () -> self#copy_wt wt); - mi_cut#connect#activate - ~callback:(fun () -> self#cut_wt wt); - menu#popup ~button:3 ~time:(GdkEvent.Button.time ev) - end; - GtkSignal.stop_emit (); - true - | `TWO_BUTTON_PRESS -> - if GdkEvent.Button.button ev = 1 then begin - if !show then begin - show := false; - tiwin#widget#misc#hide (); - tw#misc#hide () - end - else begin - show := true; - tiwin#widget#misc#show (); - tw#misc#show () - end - end; - true - | _ -> false); - tiwin#connect_event#delete ~callback: - (fun _ -> show := false; tiwin#widget#misc#hide (); true); - tw#event#connect#delete ~callback: - (fun _ -> show := false; tw#misc#hide (); true); - window_list <- wt :: window_list; - add_undo (Remove_window name); - main_window#misc#set_can_focus false; - main_window#misc#grab_focus () - - - method add_window_by_node - (Node ((classe, name, proplist), children)) = - if classe <> "window" - then failwith "add_window_by_node: class <> \"window\""; - let name = change_name name in (* for paste *) - let wt = new window_and_tree ~name in - let tiwin = wt#tiwin in - List.iter proplist ~f:(fun (n,v) -> tiwin#set_property n v); - begin match children with - | [] -> () - | [ ch ] -> tiwin#add_children_wo_undo ch; () - | _ -> failwith "add_window_by_node: more than one child" - end; - self#add_window ~name ~tree:wt () - - method delete_window (wt : window_and_tree) = - let tiwin = wt#tiwin in - project_tree#remove wt#project_tree_item; - tiwin#remove_me (); - wt#tree_window#destroy (); - window_list <- list_remove ~f:(fun w -> w = wt) window_list - - method delete_window_by_name ~name = - let wt = List.find window_list ~f:(fun wt -> wt#tiwin#name = name) in - self#delete_window wt - - method delete () = - List.iter window_list - ~f:(fun wt -> self#delete_window wt); - main_vbox#remove project_box#coerce; -(* remove after test *) - if !name_list <> [] then failwith "name_list not empty" - - method save_as () = if self#get_filename () then self#save () - - method save () = - if filename = "" then self#save_as () - else begin - let outch = open_out (dirname ^ filename ^ ".rad") in - let f = Format.formatter_of_out_channel outch in - List.iter window_list ~f:(fun wt -> wt#tiwin#save f); - close_out outch; - main_project_modify := false - end - - method copy_wt (wt : window_and_tree) = - wt#tiwin#copy (); - !can_paste true - - method cut_wt (wt : window_and_tree) = - self#copy_wt wt; - self#delete_window wt - - method copy () = - match selected with - | None -> failwith "main_project copy" - | Some sel -> self#copy_wt sel - - method cut () = - match selected with - | None -> failwith "main_project cut" - | Some sel -> self#cut_wt sel - - method paste () = - let lexbuf = Lexing.from_string !window_selection in - let node = Load_parser.window Load_lexer.token lexbuf in - self#add_window_by_node node - - method emit () = - let outc = open_out (dirname ^ filename ^ ".ml") in - let f = Format.formatter_of_out_channel outc in - List.iter window_list ~f:(fun wt -> wt#emit f); - Format.fprintf f "let main () =@\n"; -(* this is just for demo *) - List.iter window_list ~f: - begin fun wt -> - let name = wt#tiwin#name in - Format.fprintf f " let %s = new %s () in %s#show ();@\n" - name name name - end; - Format.fprintf f - " GMain.Main.main ()@\n@\nlet _ = main ()@\n"; - close_out outc - - end - - -let main_project = ref (new project ()) - -let load () = - let filename = ref "" in - get_filename ~callback:(fun f -> filename := f) ~dir:!main_project#dirname (); - if !filename <> "" then begin - !main_project#delete (); - main_project := new project (); - let inch = open_in !filename in - let lexbuf = Lexing.from_channel inch in - let project_list = Load_parser.project Load_lexer.token lexbuf in - close_in inch; - List.iter project_list - ~f:(fun node -> !main_project#add_window_by_node node); - !main_project#set_filename !filename - end - - -let interpret_undo = function - | Add (parent_name, node, pos) -> - let parent = Hashtbl.find widget_map parent_name in - parent#add_children node ~pos - | Remove child_name -> - let child = Hashtbl.find widget_map child_name in - child#remove_me () - | Property (property, value_string) -> - property#set value_string - | Add_window node -> !main_project#add_window_by_node node - | Remove_window name -> !main_project#delete_window_by_name ~name - -let undo () = - if !last_action_was_undo then begin - match !next_undo_info with - | hd :: tl -> interpret_undo hd; next_undo_info := tl - | [] -> message "no more undo info" - end - else begin - match !undo_info with - | hd :: tl -> interpret_undo hd; next_undo_info := tl - | [] -> message "no undo info" - end; - last_action_was_undo := true - - -let targets = [ { target = "STRING"; flags = []; info = 0} ] - -let xpm_window () = - let source_drag_data_get classe _ (data : selection_data) ~info ~time = - data#set ~typ:data#target ~format:0 ~data:classe in - let window = GWindow.window ~title:"icons" ~x:250 ~y:10 () in - window#misc#realize (); - let vbox = GPack.vbox ~packing:window#add () in - let table = GPack.table ~rows:1 ~columns:5 ~border_width:20 - ~packing:vbox#pack () in - let tooltips = GData.tooltips () in - let add_xpm ~file ~left ~top ~tip = - let gdk_pix = GDraw.pixmap_from_xpm ~file ~window () in - let ev = GBin.event_box ~packing:(table#attach ~left ~top) () in - let pix = GMisc.pixmap gdk_pix ~packing:ev#add () in - ev#event#connect#button_press ~callback: - (fun ev -> match GdkEvent.get_type ev with - | `BUTTON_PRESS -> - if GdkEvent.Button.button ev = 1 then begin - !main_project#add_window ~name:(make_new_name "window") () - end; - true - | _ -> false); - tooltips#set_tip ev#coerce ~text:tip - in - add_xpm ~file:"window.xpm" ~left:0 ~top:0 ~tip:"window"; - GMisc.separator `HORIZONTAL ~packing:vbox#pack (); - let table = GPack.table ~rows:6 ~columns:6 ~packing:vbox#pack - ~row_spacings:20 ~col_spacings:20 ~border_width:20 () in - let add_xpm file ~left ~top ~classe = - let gdk_pix = GDraw.pixmap_from_xpm ~file ~window () in - let ev = GBin.event_box ~packing:(table#attach ~left ~top) () in - let pix = GMisc.pixmap gdk_pix ~packing:ev#add () in - ev#drag#source_set ~modi:[`BUTTON1] targets ~actions:[`COPY]; - ev#drag#source_set_icon ~colormap:window#misc#style#colormap - gdk_pix; - ev#drag#connect#data_get ~callback:(source_drag_data_get classe); - tooltips#set_tip ev#coerce ~text:classe - in - - add_xpm "button.xpm" ~left:0 ~top:0 ~classe:"button"; - add_xpm "togglebutton.xpm" ~left:1 ~top:0 ~classe:"toggle_button"; - add_xpm "checkbutton.xpm" ~left:2 ~top:0 ~classe:"check_button"; - add_xpm "radiobutton.xpm" ~left:3 ~top:0 ~classe:"radio_button"; - add_xpm "toolbar.xpm" ~left:4 ~top:0 ~classe:"toolbar"; - add_xpm "hbox.xpm" ~left:0 ~top:1 ~classe:"hbox"; - add_xpm "vbox.xpm" ~left:1 ~top:1 ~classe:"vbox"; - add_xpm "hbuttonbox.xpm" ~left:2 ~top:1 ~classe:"hbutton_box"; - add_xpm "vbuttonbox.xpm" ~left:3 ~top:1 ~classe:"vbutton_box"; - add_xpm "fixed.xpm" ~left:4 ~top:1 ~classe:"fixed"; - add_xpm "frame.xpm" ~left:0 ~top:2 ~classe:"frame"; - add_xpm "aspectframe.xpm" ~left:1 ~top:2 ~classe:"aspect_frame"; - add_xpm "scrolledwindow.xpm" ~left:2 ~top:2 ~classe:"scrolled_window"; - add_xpm "eventbox.xpm" ~left:3 ~top:2 ~classe:"event_box"; - add_xpm "handlebox.xpm" ~left:4 ~top:2 ~classe:"handle_box"; - add_xpm "viewport.xpm" ~left:5 ~top:2 ~classe:"viewport"; - add_xpm "hseparator.xpm" ~left:0 ~top:3 ~classe:"hseparator"; - add_xpm "vseparator.xpm" ~left:1 ~top:3 ~classe:"vseparator"; - add_xpm "clist.xpm" ~left:2 ~top:3 ~classe:"clist"; - add_xpm "label.xpm" ~left:0 ~top:4 ~classe:"label"; - add_xpm "statusbar.xpm" ~left:1 ~top:4 ~classe:"statusbar"; - add_xpm "notebook.xpm" ~left:2 ~top:4 ~classe:"notebook"; - add_xpm "colorselection.xpm" ~left:3 ~top:4 ~classe:"color_selection"; - add_xpm "pixmap.xpm" ~left:4 ~top:4 ~classe:"pixmap"; - add_xpm "entry.xpm" ~left:0 ~top:5 ~classe:"entry"; - add_xpm "spinbutton.xpm" ~left:1 ~top:5 ~classe:"spin_button"; - add_xpm "combo.xpm" ~left:2 ~top:5 ~classe:"combo"; - - window#show (); - window - - -let main () = - let _ = GMain.Main.init () in - let prop_win = Propwin.init () in - let palette = xpm_window () in - main_window#show (); - main_window#connect#destroy ~callback:GMain.Main.quit; - - let mp = main_project in - let f = new GMenu.factory main_menu in - let accel_group = f#accel_group in - main_window#add_accel_group accel_group; - prop_win#add_accel_group accel_group; - palette#add_accel_group accel_group; - - let file_menu = new GMenu.factory (f#add_submenu "File") ~accel_group - and edit_menu = new GMenu.factory (f#add_submenu "Edit") ~accel_group - and view_menu = new GMenu.factory (f#add_submenu "View") ~accel_group - and project_menu = new GMenu.factory (f#add_submenu "Project") ~accel_group - in - - file_menu#add_item "Quit" ~key:_Q ~callback:GMain.Main.quit; - - project_menu#add_item "New" ~key:_N - ~callback:(fun () -> !mp#delete (); mp := new project ()); - project_menu#add_item "Open..." ~key:_O ~callback:load; - project_menu#add_item "Save" ~key:_S ~callback:(fun () -> !mp#save ()); - project_menu#add_item "Save as..." ~callback:(fun () -> !mp#save_as ()); - project_menu#add_separator (); - project_menu#add_item "Emit code" ~callback:(fun () -> !mp#emit ()); - - let copy_item = - edit_menu#add_item "Copy" ~key:_C ~callback:(fun () -> !mp#copy ()) - and cut_item = - edit_menu#add_item "Cut" ~key:_X ~callback:(fun () -> !mp#cut ()) - and paste_item = - edit_menu#add_item "Paste" ~key:_V ~callback:(fun () -> !mp#paste ()) - in - can_copy := - (fun b -> copy_item#misc#set_sensitive b; cut_item#misc#set_sensitive b); - can_paste := paste_item#misc#set_sensitive; - !can_copy false; !can_paste false; - edit_menu#add_item "Undo" ~key:_Z ~callback:undo; - - let palette_visible = ref true in - palette#event#connect#delete ~callback: - (fun _ -> palette_visible := false; palette#misc#hide (); true); - view_menu#add_item "Palette" - ~callback:(fun () -> - if !palette_visible then begin - palette#misc#hide (); - palette_visible := false - end else begin - palette#misc#show (); - palette_visible := true - end); - let prop_win_visible = ref true in - prop_win#event#connect#delete ~callback: - (fun _ -> prop_win_visible := false; prop_win#misc#hide (); true); - view_menu#add_item "Properties window" - ~callback:(fun () -> - if !prop_win_visible then begin - prop_win#misc#hide (); - prop_win_visible := false - end else begin - prop_win#misc#show (); - prop_win_visible := true - end); - - GMain.Main.main () - -let _ = main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/ml_gtk2.c b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/ml_gtk2.c deleted file mode 100644 index 49ce27bbe..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/ml_gtk2.c +++ /dev/null @@ -1,124 +0,0 @@ -/* $Id$ */ - -#include -#include -#include -#include -#include -#include - -#include "../../wrappers.h" -#include "../../ml_glib.h" -#include "../../ml_gdk.h" -#include "../../ml_gtk.h" -#include "../../gtk_tags.h" - -#include "gtktree2.h" -#include "gtktreeitem2.h" - -#include - -value Val_GtkObject_sink (GtkObject *); - -#define Val_GtkAny(w) Val_GtkObject((GtkObject*)w) -#define Val_GtkAny_sink(w) Val_GtkObject_sink((GtkObject*)w) - -#define GtkWidget_val(val) check_cast(GTK_WIDGET,val) - -/* gtkwidget.h */ - - -#define Val_GtkWidget Val_GtkAny -#define Val_GtkWidget_sink Val_GtkAny_sink - - -/* gtktreeitem2.h */ - -#define GtkTreeItem2_val(val) check_cast(GTK_TREE_ITEM2,val) -ML_0 (gtk_tree_item2_new, Val_GtkWidget_sink) -ML_1 (gtk_tree_item2_new_with_label, String_val, Val_GtkWidget_sink) -ML_2 (gtk_tree_item2_set_subtree, GtkTreeItem2_val, GtkWidget_val, Unit) -ML_1 (gtk_tree_item2_remove_subtree, GtkTreeItem2_val, Unit) -ML_1 (gtk_tree_item2_expand, GtkTreeItem2_val, Unit) -ML_1 (gtk_tree_item2_collapse, GtkTreeItem2_val, Unit) -ML_1 (GTK_TREE_ITEM2_SUBTREE, GtkTreeItem2_val, Val_GtkWidget) - -/* gtktree2.h */ - -#define GtkTree2_val(val) check_cast(GTK_TREE2,val) -ML_0 (gtk_tree2_new, Val_GtkWidget_sink) -ML_3 (gtk_tree2_insert, GtkTree2_val, GtkWidget_val, Int_val, Unit) -ML_3 (gtk_tree2_clear_items, GtkTree2_val, Int_val, Int_val, Unit) -ML_2 (gtk_tree2_select_item, GtkTree2_val, Int_val, Unit) -ML_2 (gtk_tree2_unselect_item, GtkTree2_val, Int_val, Unit) -ML_2 (gtk_tree2_select_child, GtkTree2_val, GtkWidget_val, Unit) -ML_2 (gtk_tree2_unselect_child, GtkTree2_val, GtkWidget_val, Unit) -ML_2 (gtk_tree2_child_position, GtkTree2_val, GtkWidget_val, Val_int) - -/* -ML_2 (gtk_tree2_set_selection_mode, GtkTree2_val, Selection_mode_val, Unit) -ML_2 (gtk_tree2_set_view_mode, GtkTree2_val, Tree_view_mode_val, Unit) -*/ - -ML_2 (gtk_tree2_set_view_lines, GtkTree2_val, Bool_val, Unit) -ML_2 (gtk_tree2_item_up, GtkTree2_val, Int_val, Unit) -ML_3 (gtk_tree2_select_next_child, GtkTree2_val, GtkWidget_val, Bool_val, Unit) -ML_2 (gtk_tree2_select_prev_child, GtkTree2_val, GtkWidget_val, Unit) - -static value val_gtkany (gpointer p) { return Val_GtkAny(p); } -value ml_gtk_tree2_selection (value tree) -{ - GList *selection = GTK_TREE2_SELECTION(GtkTree2_val(tree)); - return Val_GList(selection, val_gtkany); -} -static gpointer gtkobject_val (value val) { return GtkObject_val(val); } -value ml_gtk_tree2_remove_items (value tree, value items) -{ - GList *items_list = GList_val (items, gtkobject_val); - gtk_tree2_remove_items (GtkTree2_val(tree), items_list); - return Val_unit; -} - -value ml_gtk_tree2_children (value tree) -{ - GList *children = (GtkTree2_val(tree))->children; - return Val_GList(children, val_gtkany); -} - - - -#define GtkToolbar_val(val) check_cast(GTK_TOOLBAR,val) -/* sets the text of the label of a button; creates the label - if necessary */ -value ml_gtk_toolbar2_set_text (value toolbar, value text, value pos) -{ - GtkToolbar *t = GtkToolbar_val(toolbar); - GtkToolbarChild *ch = (GtkToolbarChild *)g_list_nth_data (t->children, Int_val(pos)); - GtkWidget *label = ch->label; - - if (label) - gtk_label_set_text (GTK_LABEL(label), String_val(text)); - else { - label = ch->label = gtk_label_new (String_val(text)); - gtk_box_pack_end (GTK_BOX (GTK_BIN(ch->widget)->child), label, FALSE, FALSE, 0); - if (t->style != GTK_TOOLBAR_ICONS) - gtk_widget_show (label); - } - - return Val_unit; -} - -value ml_gtk_toolbar2_set_icon (value toolbar, value icon, value pos) -{ - GtkToolbar *t = GtkToolbar_val(toolbar); - GtkToolbarChild * ch = - (GtkToolbarChild *)g_list_nth_data (t->children, Int_val(pos)); - GtkWidget *vbox = GTK_BIN(ch->widget)->child; - gtk_container_remove (GTK_CONTAINER(vbox), ch->icon); - ch->icon = GtkWidget_val(icon); - gtk_box_pack_end (GTK_BOX (vbox), ch->icon, FALSE, FALSE, 0); - if (t->style != GTK_TOOLBAR_TEXT) - gtk_widget_show (ch->icon); - - return Val_unit; -} diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/notebook.xpm b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/notebook.xpm deleted file mode 100644 index 77ac20d6c..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/notebook.xpm +++ /dev/null @@ -1,33 +0,0 @@ -/* XPM */ -static char *notebook_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 6 1", -" c Gray0", -". c #7b7b7b", -"X c #d6d6d6", -"o c #b3cece", -"O c Gray100", -"+ c None", -/* pixels */ -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+OOOOOO.OOOO.OOOO.+++", -"+OXXXXX.X.X..X.X..+++", -"+OXXXXX..X.X..X.X.+++", -"+OXXXXX.X.X..X.X..+++", -"+OXXXXX.OOOOOOOOOOO +", -"+OXXXXXXXXXXXXXXXX. +", -"+OXXXXXXXXXXXXXXXX. +", -"+OXXXXXXXXXXXXXXXX. +", -"+OXXXXXXXXXXXXXXXX. +", -"+OXXXXXXXXXXXXXXXX. +", -"+OXXXXXXXXXXXXXXXX. +", -"+OXXXXXXXXXXXXXXXX. +", -"+OXXXXXXXXXXXXXXXX. +", -"+O................. +", -"+ +", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++" -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/pixmap.xpm b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/pixmap.xpm deleted file mode 100644 index d76a5ec81..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/pixmap.xpm +++ /dev/null @@ -1,39 +0,0 @@ -/* XPM */ -static char *pixmap_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 12 1", -" c Gray0", -". c #007b00", -"X c #7b7b7b", -"o c Blue", -"O c Green", -"+ c Cyan", -"@ c Yellow", -"# c #d6d6d6", -"$ c #b3cece", -"% c Gray87", -"& c Gray100", -"* c None", -/* pixels */ -"*********************", -"*********************", -"*********************", -"* ", -"* +++++%%%&+++++++++ ", -"* +&&&++%%++&+++XX++ ", -"* +++++++%+++++X@@X+ ", -"* ++&&++++XX+++X@@X+ ", -"* +++++++ XXX&++XX++ ", -"* &+++++XXXXXX++++&+ ", -"* +++++ +++++ ", -"* +++++ ###### +++++ ", -"* +++++ #o##o# +++++ ", -"* ..... ###### ..... ", -"* OOOOO ##oo## OOOOO ", -"* OOOOO ##oo## OOOOO ", -"* OOOOO OOOOO ", -"* OOOOOOOOOOOOOOOOOO ", -"* ", -"*********************", -"*********************" -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/property.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/property.ml deleted file mode 100644 index 829e40b7c..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/property.ml +++ /dev/null @@ -1,175 +0,0 @@ -(* $Id$ *) - -open Gtk -open GObj -open GEdit -open GData -open GPack -open GMisc -open GWindow - -open Common -open Utils - -(* external id : 'a -> 'a = "%identity" *) - -class virtual vprop ~name ~init ~set = - object (self) - val mutable s : string = init - val name : string = name - method private virtual parse : string -> 'a - method get = s - method set s' = - if s' <> s then begin - let v = self#parse s' in - if (set v) then begin - add_undo (Property ((self :> prop), s)); - s <- s' - end - end - method modified = s <> init - method name = name - method code = s - method virtual range : range - method save_code = self#code - end - -let invalid_prop kind name s = - invalid_arg (Printf.sprintf "Property.%s(%s) <- %s" kind name s) - -class prop_enum ~values ~name ~init ~set = - object (self) - inherit vprop ~name ~init ~set - method private parse s = - try List.assoc s values - with Not_found -> invalid_prop "enum" name s - method range = Enum (List.map ~f:fst values) - end - -(* used for radio_button groups; there is nothing to do - in radtest when setting a radio_button group, only when writing - code or saving *) -class prop_enum_dyn ~values ~name ~init ~set = - object (self) - inherit vprop ~name ~init ~set - method private parse s = () - method range = Enum (values ()) - end - -let bool_values = - [ "true", true; "false", false ] - -let shadow_type_values : (string * Tags.shadow_type) list = - [ "NONE", `NONE; "IN", `IN; "OUT", `OUT; - "ETCHED_IN", `ETCHED_IN; "ETCHED_OUT", `ETCHED_OUT ] - -let policy_type_values : (string * Tags.policy_type) list = - [ "ALWAYS", `ALWAYS; "AUTOMATIC", `AUTOMATIC ] - -let orientation_values : (string * Tags.orientation) list = - [ "HORIZONTAL", `HORIZONTAL; "VERTICAL", `VERTICAL ] - -let toolbar_style_values : (string * Tags.toolbar_style) list = - [ "ICONS", `ICONS; "TEXT", `TEXT; "BOTH", `BOTH ] - -let toolbar_space_style_values : (string * [`EMPTY | `LINE]) list = - [ "EMPTY", `EMPTY; "LINE", `LINE ] - -let relief_style_values : (string * Tags.relief_style) list = - [ "NORMAL", `NORMAL; "HALF", `HALF; "NONE", `NONE ] - -let position_values : (string * Tags.position) list = - [ "LEFT", `LEFT; "RIGHT", `RIGHT; "TOP", `TOP; "BOTTOM", `BOTTOM ] - -let combo_use_arrows_values : (string * [ `NEVER | `DEFAULT | `ALWAYS ]) list = -[ "NEVER", `NEVER; "DEFAULT", `DEFAULT; "ALWAYS", `ALWAYS ] - -let spin_button_update_policy_values : - (string * Tags. spin_button_update_policy) list = - [ "ALWAYS", `ALWAYS; "IF_VALID", `IF_VALID ] - -let button_box_style_values : (string * Tags.button_box_style) list = - [ "DEFAULT_STYLE", `DEFAULT_STYLE; "SPREAD", `SPREAD; "EDGE", `EDGE; - "START", `START; "END", `END ] - -let update_type_values : (string * Tags.update_type) list = - [ "CONTINUOUS", `CONTINUOUS; "DISCONTINUOUS", `DISCONTINUOUS; - "DELAYED", `DELAYED ] - - -class prop_bool = prop_enum ~values:bool_values - -(* -class prop_variant ~values ~name ~init ~set : prop = - object - inherit prop_enum ~values ~name ~init ~set - method code = "`" ^ s - end -*) - -class prop_shadow = prop_enum ~values:shadow_type_values -class prop_policy = prop_enum ~values:policy_type_values -class prop_orientation = prop_enum ~values:orientation_values -class prop_toolbar_style = prop_enum ~values:toolbar_style_values -class prop_toolbar_space_style = prop_enum ~values:toolbar_space_style_values -class prop_relief_style = prop_enum ~values:relief_style_values -class prop_position = prop_enum ~values:position_values -class prop_combo_use_arrows = prop_enum ~values:combo_use_arrows_values -class prop_spin_button_update_policy = prop_enum - ~values:spin_button_update_policy_values -class prop_button_box_style = prop_enum ~values:button_box_style_values -class prop_update_type = prop_enum ~values:update_type_values - -class prop_int ~name ~init ~set : prop = - object - inherit vprop ~name ~init ~set - method private parse s = - try int_of_string s with _ -> invalid_prop "int" name s - method range = Int - end - -(* NB: float_of_string doesn't raise an exception in case of error *) -class prop_float ~name ~init ~min ~max ~set : prop = - object - inherit vprop ~name ~init ~set - method private parse s = - try float_of_string s with _ -> invalid_prop "float" name s - method code = - if String.contains s '.' || String.contains s 'e' then s - else s ^ ".0" - method range = Float(min,max) - end - -class prop_string ~name ~init ~set : prop = - object - inherit vprop ~name ~init ~set - method private parse s = s - method range = String - method code = "\"" ^ String.escaped s ^ "\"" - end - -class prop_adjustment ~name ~init ~set : prop = - object - inherit vprop ~name ~init ~set - method private parse = get5floats_from_string - method range = Adjust - end - -class prop_clist_titles ~name ~init ~set : prop = - object - inherit vprop ~name ~init ~set - method private parse = split_string ~sep:' ' - method range = CList_titles - method code = "[ \"" ^ - String.concat ~sep:"\"; \"" (split_string ~sep:' ' s) ^ "\" ]" - method save_code = "\"" ^ s ^ "\"" - end - -class prop_file ~name ~init ~set : prop = - object - inherit vprop ~name ~init ~set - method private parse s = s - method range = File - method code = "\"" ^ String.escaped s ^ "\"" - end - diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/property.mli b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/property.mli deleted file mode 100644 index ccf265077..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/property.mli +++ /dev/null @@ -1,96 +0,0 @@ -(* $Id$ *) - -open Gtk.Tags -open Common - -class virtual vprop : - name:string -> (* property's name *) - init:string -> (* default value *) - set:('a -> bool) -> - object - val name : string - val mutable s : string - method code : string (* encoded value *) - method get : string - method modified : bool - method name : string - method private virtual parse : string -> 'a - method virtual range : range - method save_code : string - method set : string -> unit - end - -class prop_int : - name:string -> init:string -> set:(int -> bool) -> prop - -class prop_float : - name:string -> - init:string -> min:float -> max:float -> set:(float -> bool) -> prop - -class prop_string : - name:string -> init:string -> set:(string -> bool) -> prop - -class prop_bool : - name:string -> init:string -> set:(bool -> bool) -> prop -(* -class prop_variant : - values:(string * 'a) list -> - name:string -> init:string -> set:('a -> bool) -> prop -*) -class prop_shadow : - name:string -> init:string -> set:(shadow_type -> bool) -> prop - -class prop_policy : - name:string -> init:string -> set:(policy_type -> bool) -> prop - -class prop_orientation : - name:string -> - init:string -> set:(Gtk.Tags.orientation -> bool) -> prop - -class prop_toolbar_style : - name:string -> - init:string -> set:(Gtk.Tags.toolbar_style -> bool) -> prop - -class prop_toolbar_space_style : - name:string -> init:string -> set:([ `EMPTY | `LINE] -> bool) -> prop - -class prop_relief_style : - name:string -> - init:string -> set:(Gtk.Tags.relief_style -> bool) -> prop - -class prop_position : - name:string -> - init:string -> set:(Gtk.Tags.position -> bool) -> prop - -class prop_combo_use_arrows : - name:string -> - init:string -> set:([ `NEVER | `DEFAULT | `ALWAYS] -> bool) -> prop - -class prop_spin_button_update_policy : - name:string -> - init:string -> set:(Gtk.Tags.spin_button_update_policy -> bool) -> prop - -class prop_button_box_style : - name:string -> - init:string -> set:(Gtk.Tags.button_box_style -> bool) -> prop - -class prop_update_type : - name:string -> - init:string -> set:(Gtk.Tags.update_type -> bool) -> prop - -class prop_enum_dyn : - values:(unit -> string list) -> name:string -> - init:string -> set:(unit -> bool) -> prop - -class prop_adjustment : - name:string -> init:string -> - set:(float * float * float * float * float -> bool) -> prop - -class prop_clist_titles : - name:string -> init:string -> - set:(string list -> bool) -> prop - -class prop_file : - name:string -> init:string -> set:(string -> bool) -> prop - - diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/propwin.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/propwin.ml deleted file mode 100644 index 2f8b29151..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/propwin.ml +++ /dev/null @@ -1,180 +0,0 @@ -(* $Id$ *) - -open GObj - -open Common -open Utils - -class type tiwidget_base = object - method name : string - method proplist : (string * prop) list -end - -let prop_widget (prop : prop) = - match prop#range with - Enum l -> - let w = GEdit.combo ~popdown_strings:l ~use_arrows:`ALWAYS () in - w#entry#connect#changed ~callback:(fun () -> prop#set w#entry#text); - w#entry#set_editable false; - w#entry#set_text prop#get; - w#coerce - | String -> - let w = GEdit.entry ~text:prop#get () in - w#connect#activate ~callback:(fun () -> prop#set w#text); - w#coerce - | File -> - let w = GPack.hbox () in - let e = GEdit.entry ~text:prop#get ~editable:false ~packing:w#pack () in - let b = GButton.button ~label:"..." ~packing:w#pack () in - b#connect#clicked - ~callback:(fun () -> get_filename - ~callback:(fun name -> e#set_text name; prop#set name) (); ()); - w#coerce - | Int -> - let adjustment = - GData.adjustment ~value:(float_of_string prop#get) - ~lower:(-2.) ~upper:5000. ~step_incr:1. ~page_incr:10. ~page_size:0. () - in - let w = GEdit.spin_button ~rate:0.5 ~digits:0 ~adjustment () in - w#connect#activate - ~callback:(fun () -> prop#set (string_of_int w#value_as_int)); - w#coerce - | Float (lower, upper) -> -(* let adjustment = - GData.adjustment ~value:(float_of_string prop#get) - ~lower ~upper ~step_incr:((upper-.lower)/.100.) - ~page_incr:((upper-.lower)/.10.) ~page_size:0. () - in - let w = GEdit.spin_button ~rate:0.5 ~digits:2 ~adjustment () in - w#connect#activate - ~callback:(fun () -> prop#set (string_of_float w#value)); - w#coerce -*) - let w = entry_float ~init:(float_of_string prop#get) () in - w#connect#activate - ~callback:(fun () -> prop#set (string_of_float w#value)); - w#coerce -(* | Adjust -> - let wpop = GWindow.window ~title:"Adjustment values" () in - let vb = GPack.vbox ~packing:wpop#add() in - let hb1 = GPack.hbox ~packing:vb#pack () in - let l1 = GMisc.label ~text:"lower" ~packing:hb1#pack () in - let e1 = entry_float ~packing:hb1#pack - ~init:(float_of_string prop#get) ~set:prop#set in -*) - | CList_titles -> - let wpop = GWindow.window ~title:"titles of the columns" () in - let vb = GPack.vbox ~packing:wpop#add () in - let titles = split_string prop#get ~sep:' ' in - let n = List.length titles in - let rtitles = ref titles in - let rget = ref [] and rset = ref [] in - for i = 1 to n do - match !rtitles with - | hd::tl -> - let hb = GPack.hbox ~packing:vb#pack () in - let _ = GMisc.label ~text:("column" ^ (string_of_int i)) - ~packing:hb#pack () in - let e = GEdit.entry ~text:hd ~packing:hb#pack () in - rtitles := tl; - rget := (fun () -> e#text) :: !rget; - rset := e#set_text :: !rset; - | _ -> failwith "CList_titles: this cannot happen!!" - done; - rtitles := titles; - rget := List.rev !rget; - rset := List.rev !rset; - let hb = GPack.hbox ~packing:vb#pack () in - let ok = GButton.button ~label:"OK" ~packing:hb#pack () in - let cancel = GButton.button ~label:"Cancel" ~packing:hb#pack () in - ok#connect#pressed - ~callback:(fun () -> - let tit = List.map ~f:(fun f -> f ()) !rget in - prop#set (String.concat ~sep:" " tit); - rtitles := tit; - wpop#misc#hide ()); - cancel#connect#pressed - ~callback:(fun () -> - wpop#misc#hide (); - List.iter2 ~f:(fun f v -> f v) !rset !rtitles); - let e = GEdit.entry ~text:"double click here" ~editable:false () in - e#event#connect#button_press ~callback: - (fun ev -> - GdkEvent.get_type ev = `TWO_BUTTON_PRESS && - GdkEvent.Button.button ev = 1 && - begin - wpop#misc#show (); - GtkSignal.stop_emit (); - true - end); - e#coerce - -let prop_box list = - let vbox = GPack.vbox () in - List.iter list ~f: - begin fun (name, prop) -> - let hbox = - GPack.hbox ~homogeneous:true ~packing:(vbox#pack ~expand:false) () in - GMisc.label ~text:name ~packing:hbox#pack (); - hbox#pack ~fill:true (prop_widget prop); - GMisc.separator `HORIZONTAL ~packing:(vbox#pack ~expand:false) (); - () - end; - vbox - -class ['a] frozen lz = object - method get : 'a = Lazy.force lz -end - -let vbox = - new frozen (lazy (GWindow.window ~show:true ~title:"Properties" ())) - -let init () = vbox#get - -let widget_pool = Hashtbl.create 7 - -let boxref = ref None -let shown_widget = ref "" - -let show_prop_box vb = - Gaux.may !boxref ~f:vbox#get#remove; - vbox#get#add vb#coerce; - boxref := Some vb#coerce - -let show (w : #tiwidget_base) = - let name = w#name in - let vb = - try - Hashtbl.find widget_pool name - with Not_found -> - let vb = prop_box w#proplist in - Hashtbl.add widget_pool ~key:name ~data:vb; - vb - in - show_prop_box vb; - shown_widget := name - -let add (w : #tiwidget_base) = - let vb = prop_box w#proplist in - Hashtbl.add widget_pool ~key:w#name ~data:vb - - -let remove name = - Hashtbl.remove widget_pool name; - if !shown_widget = name then begin - shown_widget := ""; - show_prop_box (GMisc.label ~text:"No widget selected" ()) - end - -(* -let change_name oldname newname = - let vb = Hashtbl.find widget_pool oldname in - Hashtbl.remove widget_pool oldname; - Hashtbl.add widget_pool ~key:newname ~data:vb -*) - -let update (w : #tiwidget_base) show_modif = - let vb = prop_box w#proplist in - Hashtbl.remove widget_pool w#name; - Hashtbl.add widget_pool ~key:w#name ~data:vb; - if show_modif && !shown_widget = w#name then show_prop_box vb diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/propwin.mli b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/propwin.mli deleted file mode 100644 index 6636a4f6f..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/propwin.mli +++ /dev/null @@ -1,10 +0,0 @@ -(* $Id$ *) - -open Common - -val init : unit -> GWindow.window -val show : #tiwidget_base -> unit -val add : #tiwidget_base -> unit -val remove : string -> unit -(* val change_name : string -> string -> unit *) -val update : #tiwidget_base -> bool -> unit diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/radiobutton.xpm b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/radiobutton.xpm deleted file mode 100644 index 0f5fbbd45..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/radiobutton.xpm +++ /dev/null @@ -1,33 +0,0 @@ -/* XPM */ -static char *radiobutton_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 6 1", -" c Gray0", -". c #7b7b7b", -"X c #d6d6d6", -"o c #b3cece", -"O c Gray100", -"+ c None", -/* pixels */ -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"++++++++++.++++++++++", -"+++++++++...+++++++++", -"++++++++.. ..++++++++", -"+++++++.. X ..+++++++", -"++++++.. XXX ..++++++", -"+++++.. XXXXX ..+++++", -"++++++OOXXXXXOO++++++", -"+++++++OOXXXOO+++++++", -"++++++++OOXOO++++++++", -"+++++++++OOO+++++++++", -"++++++++++O++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++" -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/scrolledwindow.xpm b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/scrolledwindow.xpm deleted file mode 100644 index 44e59f610..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/scrolledwindow.xpm +++ /dev/null @@ -1,30 +0,0 @@ -/* XPM */ -static char *scrolledwindow_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 3 1", -" c Gray0", -". c #d6d6d6", -"X c Gray100", -/* pixels */ -"XXXXXXXXXXXXXXXXXXXXX", -"X.............X..... ", -"X.............X.. .. ", -"X.............X. . ", -"X.............X..... ", -"X.............X ", -"X.............XXXXXX ", -"X.............XX.... ", -"X.............XX.... ", -"X.............XXXXXX ", -"X.............X..... ", -"X.............X. . ", -"X.............X.. .. ", -"X.............X..... ", -"XXXXXXXXXXXXXXX ", -"X.... XXX .... ......", -"X.. . X.. . .. ......", -"X. . X.. . . ......", -"X.. . X.. . .. ......", -"X.... X.. .... ......", -"X ......" -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/spinbutton.xpm b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/spinbutton.xpm deleted file mode 100644 index f3a313b19..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/spinbutton.xpm +++ /dev/null @@ -1,33 +0,0 @@ -/* XPM */ -static char *spinbutton_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 6 1", -" c Gray0", -". c #7b7b7b", -"X c #d6d6d6", -"o c #b3cece", -"O c Gray100", -"+ c None", -/* pixels */ -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+ +", -"+ OOOOOOOOOOO OOOOO +", -"+ OOOOOOOOOOO OX X. +", -"+ OOOOOOOOOOO O . +", -"+ OOOOOOOOOOO OOOOO +", -"+ OOOOOOOOOOO O . +", -"+ OOOOOOOOOOO OX X. +", -"+ OOOOOOOOOOO ..... +", -"+ +", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++" -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/statusbar.xpm b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/statusbar.xpm deleted file mode 100644 index 8576d88c6..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/statusbar.xpm +++ /dev/null @@ -1,34 +0,0 @@ -/* XPM */ -static char *statusbar_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 7 1", -" c Gray0", -". c #7b7b7b", -"X c #d6d6d6", -"o c #b3cece", -"O c Gray87", -"+ c Gray100", -"@ c None", -/* pixels */ -"@@@@@@@@@@@@@@@@@@@@@", -"@@@@@@@@@@@@@@@@@@@@@", -"@@@@@@@@@@@@@@@@@@@@@", -"@@@@@@@@@@@@@@@@@@@@@", -"@@@+XX.@@@@@@@@@@@@@@", -"@@@+XX.@@@@@@@@@@@@@@", -"@@@+XX.@@@@@@@@@@@@@@", -"@@@+XX.@@@@@@@@@@@@@@", -"@@@+XX++++++++++++@@@", -"@@@+XXXXXXXXXXXXXX@@@", -"@@@+XXXXXXXXXXXXXX@@@", -"@@@+XX............@@@", -"@@@+XX.OOOOOOOOOOO@@@", -"@@@+XX.OOOOOOOOOOO@@@", -"@@@+XX.OOOOOOOOOOO@@@", -"@@@+XX++++++++++++@@@", -"@@@+XXXXXXXXXXXXXX@@@", -"@@@+XXXXXXXXXXXXXX@@@", -"@@@ @@@", -"@@@@@@@@@@@@@@@@@@@@@", -"@@@@@@@@@@@@@@@@@@@@@" -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/tiBase.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/tiBase.ml deleted file mode 100644 index 390749337..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/tiBase.ml +++ /dev/null @@ -1,671 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open GObj -open GContainer - -open Utils -open Common -open Property - -(* possible children; used to make the menus *) -let widget_add_list = - [ "vbox"; "hbox"; "vbutton_box"; "hbutton_box"; "fixed"; - "frame"; "aspect_frame"; "handle_box"; "event_box"; - "hseparator"; "vseparator"; "statusbar"; "label"; "notebook"; - "color_selection"; - "button"; - "toggle_button"; "check_button"; "radio_button"; "scrolled_window"; - - "entry"; "spin_button"; "combo"; "clist"; "toolbar"] - - -(*********** selection ***********) - -let selection = ref "" -let window_selection = ref "" - - -(**************** signals class ***************) - -class tiwidget_signals ~signals = - let name_changed : string signal = signals in - object - val after = false - method after = {< after = true >} - method name_changed = name_changed#connect ~after - end - - -(************* class type ***************) -(* the ti classes encapsulate the corresponding gtk - widget which will be in the gtk-window and a tree item - labelled with the name of the widget which will be in the - tree-window. - all these classes have the same following interface *) - -class virtual tiwidget0 = object - method virtual widget : GObj.widget - method virtual connect_event : GObj.event_signals - method virtual parent : tiwidget0 option - method virtual set_parent : tiwidget0 -> unit - method virtual base : GObj.widget - method virtual tree_item : GTree2.tree_item - method virtual tree : GTree2.tree - method virtual children : (tiwidget0 * Gtk.Tags.pack_type) list - method virtual name : string - method virtual proplist : (string * prop) list - method virtual add_to_proplist : (string * prop) list -> unit - method virtual change_name_in_proplist : string -> string -> unit - method virtual set_property : string -> string -> unit - method virtual forall : callback:(tiwidget0 -> unit) -> unit - method virtual remove : tiwidget0 -> unit -(* method virtual add_child_with_name : string -> string -> pos:int -> tiwidget0 *) - method virtual add_children : ?pos:int -> yywidget_tree -> unit - method virtual add_children_wo_undo : ?pos:int -> yywidget_tree -> string - method virtual remove_me : unit -> unit - method virtual remove_me_without_undo : unit -> unit - method virtual emit_code : Format.formatter -> char list -> unit - method virtual emit_init_code : Format.formatter -> packing:string -> unit - method virtual emit_method_code : Format.formatter -> unit - method virtual emit_initializer_code : Format.formatter -> unit - method virtual save : Format.formatter -> unit - method virtual copy : unit -> unit - method virtual connect : tiwidget_signals - method virtual disconnect : GtkSignal.id -> bool - method virtual child_up : tiwidget0 -> unit - method virtual up : unit -> unit - method virtual child_down : tiwidget0 -> unit - method virtual down : unit -> unit - method virtual next : tiwidget0 - method virtual next_child : tiwidget0 -> tiwidget0 - method virtual last : tiwidget0 - method virtual prev : tiwidget0 - method virtual set_full_menu : bool -> unit -end - -class virtual window_and_tree0 = object - method virtual tiwin : tiwidget0 -(* method virtual tree_window : window *) - method virtual change_selected : tiwidget0 -> unit - method virtual remove_sel : tiwidget0 -> unit - method virtual add_param : char - method virtual remove_param : char -> unit -(* method virtual emit : unit -> unit *) -end - -(* forward declaration of function new_widget *) -let new_tiwidget : - (classe:string -> ?pos:int -> name:string ->parent_tree:GTree2.tree -> - ?insert_evbox:bool -> ?listprop:(string * string) list -> window_and_tree0 -> tiwidget0) ref = - ref (fun ~classe ?pos ~name ~parent_tree ?insert_evbox ?listprop w -> failwith "new_tiwidget") - - -let widget_map = Hashtbl.create 17 - -(* list of names of radio_buttons (for groups) *) -let radio_button_pool = ref [] - - -(************* window creation class *************) -(* an instance of this class is created for each window opened - in radtest. It contains the tree window and the gtk window (tiwin) *) - -class window_and_tree ~name = - let tree_window = GWindow.window ~show:true ~title:(name ^ "-Tree") () in - let vbox = GPack.vbox ~spacing:2 ~packing:tree_window#add () in - let root_tree = GTree2.tree ~packing:vbox#pack ~selection_mode:`EXTENDED () in - let project_tree_item = GTree2.tree_item () in - let label = GMisc.label ~text:name ~xalign:0. ~yalign:0.5 - ~packing:project_tree_item#add () in - - object(self) - - inherit window_and_tree0 - -(* the params of the window class; because the class clist needs a param - I suppose there will be no more than 26 clists in a single window *) - val param_list = Array.create 26 false - - method add_param = - let i = ref 0 in - while param_list.(!i) do incr i done; - param_list.(!i) <- true; - char_of_int (97 + !i) - - method remove_param c = - param_list.(int_of_char c - 97) <- false - - method private param_list = - let r = ref [] in - for i = 25 downto 0 do - if Array.unsafe_get param_list i then r := (char_of_int (i+97)) :: !r - done; - !r - -(* I use magic here because the real initialization is done - below in the initializer part. It can't be done here because - of the call to self *) - val mutable tiwin = (Obj.magic 0 : tiwidget0) - - method tiwin = tiwin - method tree_window = tree_window - - method project_tree_item = project_tree_item - -(* the selected item in this window *) - val mutable selected = (None : tiwidget0 option) - -(* what to do when a new item is selected. - this method is passed to all the tiwidgets (by the select_fun - parameter) and they will call it when they are clicked on; - she is also called when changing the selection the arrow keys - (see in the initializer part) *) - method change_selected sel = - match selected with - | None -> - selected <- Some sel; - sel#tree_item#misc#set_state `SELECTED; - sel#base#misc#set_state `SELECTED; - Propwin.show sel - | Some old_sel -> - if sel = old_sel then begin - selected <- None; - sel#base#misc#set_state `NORMAL; - sel#tree_item#misc#set_state `NORMAL - end else begin - old_sel#tree_item#misc#set_state `NORMAL; - old_sel#base#misc#set_state `NORMAL; - selected <- Some sel; - sel#tree_item#misc#set_state `SELECTED; - sel#base#misc#set_state `SELECTED; - Propwin.show sel - end - -(* the tiwidget tiw is being removed; if it was selected, - put the selection to None *) - method remove_sel tiw = - match selected with - | Some sel when sel = tiw -> selected <- None - | _ -> () - -(* emits the code corresponding to this window *) - method emit c = tiwin#emit_code c self#param_list; - - method delete () = - tiwin#remove_me_without_undo (); - tree_window#destroy (); - - initializer - tiwin <- !new_tiwidget ~classe:"window" ~name ~parent_tree:root_tree - (self : #window_and_tree0 :> window_and_tree0); - - tiwin#connect#name_changed ~callback: - (fun n -> label#set_text n; tree_window#set_title (n ^ "-Tree")); - - Propwin.show tiwin; - - tree_window#event#connect#key_press ~callback: - begin fun ev -> - let state = GdkEvent.Key.state ev in - let keyval = GdkEvent.Key.keyval ev in - if keyval = GdkKeysyms._Up then begin - match selected with - | None -> () - | Some t -> - if List.mem `CONTROL state then t#up () - else try - self#change_selected t#prev - with Not_found -> () - end - else if keyval = GdkKeysyms._Down then begin - match selected with - | None -> () - | Some t -> - if List.mem `CONTROL state then t#down () - else try - self#change_selected t#next - with Not_found -> () - end; - GtkSignal.stop_emit (); - true - end; - () - end - - - -(***************** class implementation *****************) -(* this is the base class of the ti hierarchy. - all these classes will inherit from tiwidget, but without - adding new methods. In this way all the classes have the - same interface and we can use them in lists, pass them to - functions without caring on the type. - All methods needed by any of the classes are defined in - tiwidget but if a method is not pertinent in tiwidget - it has for implementation: - failwith "" - the real implementation of the method is done in the - class (or classes) in which it is needed (or sometimes - in tiwidget anyway). - Additionally, to workaround some problem with recursive types - the type of the (public) methods of tiwidget is defined in - tiwidget0 of which tiwidget inherits. - The parent_tree parameter is the tree in which the - tiwidget#tree_item will be inserted at position :pos. -*) - -class virtual tiwidget ~name ~parent_tree:(parent_tree : GTree2.tree) ~pos - ~widget ?(insert_evbox=true) (parent_window : window_and_tree0) = -object(self) - - inherit tiwidget0 - inherit has_ml_signals - - val evbox = - if insert_evbox then - let ev = GBin.event_box () in ev#add widget#coerce; Some ev - else None - -(* used only for windows delete_event *) - method connect_event = failwith "tiwidget::connect_event" - - val widget = widget#coerce - method widget = widget - - val mutable parent = None - method set_parent p = parent <- Some p - method parent = parent - method private sure_parent = - match parent with - | None -> failwith "sure_parent" - | Some p -> p - - method base = - match evbox with - | None -> widget#coerce - | Some ev -> ev#coerce - -(* this is the name used in new_tiwidget for the creation - of an object of this class *) - val mutable classe = "" - - val tree_item = GTree2.tree_item () - method tree_item = tree_item - - val mutable stree = GTree2.tree () - method tree = stree - - val label = GMisc.label ~text:name ~xalign:0. ~yalign:0.5 () - - val mutable name : string = name - method name = name - -(* this is the complete name for the creation of the widget - in lablgtk e.g. GPack.vbox; used in emit_init_code *) - method private class_name = "" - - val mutable proplist : (string * prop) list = [] - method proplist = proplist - method private get_mandatory_props = [] - - method add_to_proplist plist = proplist <- proplist @ plist - -(* for children of a box *) - method change_name_in_proplist : string -> string -> unit = - fun _ _ -> () - method set_property name value_string = try - (List.assoc name proplist)#set value_string - with Not_found -> Printf.printf "Property not_found %s, %s\n" name value_string; - flush stdout - - method private get_property name = - (List.assoc name proplist)#get - - -(* the proplist with some items removed e.g. the expand... in a box - used for saving and emitting code *) - method private emit_clean_proplist = - List.fold_left ~f:(fun l p -> List.remove_assoc p l) - ~init:proplist - ([ "name"; "expand"; "fill"; "padding" ] @ self#get_mandatory_props) -(* method private emit_clean_proplist plist = - List.fold_left ~init:plist ~f: - (fun pl propname -> List.remove_assoc propname pl) - [ "name"; "expand"; "fill"; "padding" ] -*) - - method private save_clean_proplist = - List.fold_left ~f:(fun l p -> List.remove_assoc p l) - ~init:proplist ("name" :: self#get_mandatory_props) -(* method private save_clean_proplist = - List.remove_assoc "name" proplist *) - - val mutable children : (tiwidget0 * Gtk.Tags.pack_type) list = [] - method children = children - method forall = - fun ~callback -> List.iter (List.map children ~f:fst) ~f:callback - -(* encapsulate container#add and container#remove - they are here because they depend on the type of the widget: - e.g.: gtkbin->add scrolled_window->add_with_viewport box->pack *) - method private add = failwith (name ^ "::add") - method remove = failwith (name ^ "::remove") - - -(* removes self from his parent; - will be different for a window *) - method remove_me () = - let sref = ref "" in - self#save_to_string sref; - let pos = list_pos ~item:(self : #tiwidget0 :> tiwidget0) - (List.map self#sure_parent#children ~f:fst) in - let lexbuf = Lexing.from_string !sref in - let node = Load_parser.widget Load_lexer.token lexbuf in - add_undo (Add (self#sure_parent#name, node, pos)); - self#remove_me_without_undo () - - method remove_me_without_undo () = -(* it should be enough to only recursively remove the children from the - name_list and do the tip#remove and tip#tree#remove - only for self *) - self#forall ~callback:(fun tiw -> tiw#remove_me_without_undo ()); - parent_window#remove_sel (self : #tiwidget0 :> tiwidget0); - match parent with - | None -> failwith "remove without parent" - | Some (tip : #tiwidget0) -> - tip#tree#remove tree_item; - tip#remove (self : #tiwidget0 :> tiwidget0); - name_list := list_remove !name_list ~f:(fun n -> n=name); - Hashtbl.remove widget_map name; - Propwin.remove name - -(* used for undo *) - method private remove_child_by_name name () = - let child = fst (List.find children - ~f:(fun (ch, _) -> ch#name = name)) in - child#remove_me () - -(* for most widgets we make a child with new_tiwidget and then add it - to self; for toolbars we use toolbar#insert_button... *) - method private make_child = !new_tiwidget - -(* adds a child and shows his properties; - used when adding a child by the menu or DnD *) - method private add_child classe ?name ?(undo = true) ?(affich = true) ?(pos = -1) ?(listprop = []) () = - let name = match name with - | None -> make_new_name classe - | Some n -> n in - let child = self#make_child ~classe ~name ~parent_tree:stree parent_window ~pos ~listprop in - child#set_parent (self : #tiwidget0 :> tiwidget0); - self#add child ~pos; - if affich then Propwin.show child; - if undo then add_undo (Remove name); - child - - -(* adds the subtree saved in the Node *) - method add_children ?(pos = -1) node = - let child_name = self#add_children_wo_undo node ~pos in - add_undo (Remove child_name) - - method add_children_wo_undo ?(pos = -1) (Node (child, children)) = - let classe, name, property_list = child in - let rname = change_name name in - let tc = self#add_child classe ~name:rname ~undo:false ~affich:false ~pos ~listprop:property_list () in - List.iter (List.rev children) - ~f:(fun c -> tc#add_children_wo_undo c; ()); - List.iter property_list ~f:(fun (n,v) -> tc#set_property n v); - rname - -(* only a tiwindow can emit code *) - method emit_code = failwith "emit_code" - -(* some methods for emitting code *) -(* this one calculates the expand, fill and padding parameters - of a box child *) - method private get_packing packing = - let aux name = - let prop = List.assoc name proplist in - if prop#modified then " ~" ^ name ^ ":" ^ prop#code else "" - in - let efp = try - (aux "expand") ^ (aux "fill") ^ (aux "padding") - with Not_found -> "" in - if efp = "" then ("~packing:" ^ packing) - else ("~packing:(" ^ packing ^ efp ^ ")") - -(* this one emits the declaration code of the widget *) - method emit_init_code formatter ~packing = - Format.fprintf formatter "@ @[let %s =@ @[%s" - name self#class_name; - List.iter self#get_mandatory_props - ~f:begin fun name -> - Format.fprintf formatter "@ ~%s:%s" name - (List.assoc name proplist)#code - end; - let packing = self#get_packing packing in - if packing <> "" then Format.fprintf formatter "@ %s" packing; - self#emit_prop_code formatter; - Format.fprintf formatter "@ ()@ in@]@]" - -(* this one emits the properties which do not have their - default value; used by emit_init_code *) - method private emit_prop_code formatter = - let mandatory = self#get_mandatory_props in - List.iter self#emit_clean_proplist ~f: - begin fun (name, prop) -> - if List.mem name mandatory then () else - if prop#modified then - Format.fprintf formatter "@ ~%s:%s" prop#name prop#code - end - -(* this one emits the method returning this widget *) - method emit_method_code formatter = - Format.fprintf formatter "@ method %s = %s" name name; - -(* emits the code in the initializer part for this widget *) - method emit_initializer_code _ = () - -(* for saving the project to a file. Used also by copy and cut *) - method private save_start formatter = - Format.fprintf formatter "@\n@[<2><%s name=%s>" classe name; - List.iter - ~f:(fun p -> Format.fprintf formatter - "@\n%s=\"%s\"" p (List.assoc p proplist)#get) - self#get_mandatory_props - - - method private save_end formatter = - Format.fprintf formatter "@]@\n" classe - - method save formatter = - self#save_start formatter; - List.iter self#save_clean_proplist ~f: - (fun (name, prop) -> - if prop#modified then - Format.fprintf formatter "@\n%s=%s" name prop#save_code); - self#forall ~callback:(fun w -> w#save formatter); - self#save_end formatter - - - method private save_to_string string_ref = - let b = Buffer.create 80 in - let f = Format.formatter_of_buffer b in - self#save f; - Format.pp_print_flush f (); - string_ref := Buffer.contents b - - method private copy_to_sel selection = self#save_to_string selection - - method copy () = self#copy_to_sel selection - - method private cut () = - self#copy (); - self#remove_me () - - method private paste () = - let lexbuf = Lexing.from_string !selection in - let node = Load_parser.widget Load_lexer.token lexbuf in - self#add_children node - - -(* ML signal used when the name of the widget is changed *) - val name_changed : string signal = new signal - method connect = new tiwidget_signals ~signals:name_changed - method private call_name_changed = name_changed#call - - -(* this is necessary because gtk_tree#remove deletes the tree - when removing the last item *) -(* suppressed this in gtktree2 - method new_tree () = - stree <- GTree2.tree; - tree_item#set_subtree stree; - tree_item#expand () -*) - -(* when full_menu is true we use the menu else the restricted menu *) - val mutable full_menu = true - method set_full_menu b = full_menu <- b - -(* the menu for this widget - This menu is recalculated when one clicks on the 3rd button. - There is nothing to do e.g. when the name of the widget changes, - it will change in the menu the next time. *) - method private menu ~time = self#restricted_menu ~time - -(* the restricted menu for this widget - used for containers when they are full *) - method private restricted_menu ~time = - let menu = GMenu.menu () in - let mi_remove = GMenu.menu_item ~packing:menu#append ~label:"remove" () - and mi_cut = GMenu.menu_item ~packing:menu#append ~label:"Cut" () - and mi_copy = GMenu.menu_item ~packing:menu#append ~label:"Copy" () in - mi_remove#connect#activate ~callback:self#remove_me; - mi_copy#connect#activate ~callback:self#copy; - mi_cut#connect#activate ~callback:self#cut; - menu#popup ~button:3 ~time - -(* changes all that depends on the name *) - method private set_new_name new_name = - if test_unique new_name then begin - Hashtbl.remove widget_map name; - Hashtbl.add widget_map ~key:new_name - ~data:(self : #tiwidget0 :> tiwidget0); - if (classe = "radio_button") then begin - radio_button_pool := new_name :: - (list_remove !radio_button_pool ~f:(fun x -> x = name)); - List.iter - ~f:(fun x -> Propwin.update (Hashtbl.find widget_map x) false) - !radio_button_pool - end; - label#set_text new_name; - let old_name = name in - name <- new_name; -(* Propwin.change_name old_name new_name; *) - name_list := - new_name :: (list_remove !name_list ~f:(fun n -> n=old_name)); - begin match self#parent with - | None -> () - | Some p -> p#change_name_in_proplist old_name new_name - end; - self#call_name_changed new_name; - true - end - else begin - message_name (); - Propwin.update self true; - false - end - - -(* moves the present tiw up in his parents' children list *) -(* does something only when the parent is a box *) - method child_up = fun _ -> () - - method up () = match parent with - | None -> () - | Some t -> t#child_up (self : #tiwidget0 :> tiwidget0) - - method child_down = fun _ -> () - - method down () = match parent with - | None -> () - | Some t -> t#child_down (self : #tiwidget0 :> tiwidget0) - - -(* get the next tiwidget in the tree (used with Down arrow) *) - method next = - if children <> [] then fst (List.hd children) - else begin - match parent with - | None -> raise Not_found - | Some p -> p#next_child (self : #tiwidget0 :> tiwidget0) - end - - method next_child child = - let _, tl = cut_list ~item:child (List.map ~f:fst children) in - match tl with - | ch :: next :: _ -> next - | ch :: [] -> begin - match parent with - | None -> raise Not_found - | Some p -> p#next_child (self : #tiwidget0 :> tiwidget0) - end - | _ -> failwith "next_child" - -(* get the last child of the last child ... of our last child. - Used by prev. *) - method last = - if children = [] then (self : #tiwidget0 :> tiwidget0) - else (fst (List.hd (List.rev children)))#last - -(* get the previous tiwidget in the tree (used with Up arrow) *) - method prev = - match parent with - | None -> raise Not_found - | Some p -> - let hd, _ = cut_list ~item:(self : #tiwidget0 :> tiwidget0) - (List.map ~f:fst p#children) in - match hd with - | [] -> p - | h :: _ -> h#last - - initializer - Hashtbl.add widget_map ~key:name ~data:(self : #tiwidget0 :> tiwidget0); - name_list := name :: !name_list; - parent_tree#insert tree_item ~pos; - tree_item#set_subtree stree; - tree_item#add label#coerce; - tree_item#expand (); - - proplist <- proplist @ - [ "name", - new prop_string ~name:"name" ~init:name ~set:self#set_new_name; - "width", new prop_int ~name:"width" ~init:"-2" - ~set:(fun v -> widget#misc#set_geometry ~width:v (); true); - "height", new prop_int ~name:"height" ~init:"-2" - ~set:(fun v -> widget#misc#set_geometry ~height:v (); true) ]; - - self#add_signal name_changed; - - tree_item#event#connect#button_press ~callback: - (fun ev -> match GdkEvent.get_type ev with - | `BUTTON_PRESS -> - if GdkEvent.Button.button ev = 1 then begin - parent_window#change_selected - (self : #tiwidget0 :> tiwidget0); - end - else if GdkEvent.Button.button ev = 3 then begin - if full_menu - then self#menu ~time:(GdkEvent.Button.time ev) - else self#restricted_menu ~time:(GdkEvent.Button.time ev); - end; - GtkSignal.stop_emit (); - true - | _ -> false); - () -end - diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/tiBin.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/tiBin.ml deleted file mode 100644 index 5ebcb3e2e..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/tiBin.ml +++ /dev/null @@ -1,185 +0,0 @@ -open Gtk - -open Utils -open Property - -open TiContainer - -class tiframe ~(widget : GBin.frame) ~name ~parent_tree ~pos - ?(insert_evbox=true) parent_window = -object - val frame = widget - inherit ticontainer ~name ~widget ~parent_tree ~pos - ~insert_evbox parent_window as container - - method private class_name = "GBin.frame" - - method private get_mandatory_props = [ "label" ] - - initializer - classe <- "frame"; - frame#set_label name; - proplist <- proplist @ - [ "label", - new prop_string ~name:"label" ~init:name ~set:(ftrue frame#set_label); - "label_xalign", - new prop_float ~name:"label_xalign" ~init:"0.0" ~min:0. ~max:1. - ~set:(fun x -> frame#set_label_align ~x (); true); - "shadow_type", - new prop_shadow ~name:"shadow_type" ~init:"ETCHED_IN" - ~set:(ftrue frame#set_shadow_type) ] -end - -let new_tiframe ~name ?(listprop = []) = - new tiframe ~widget:(GBin.frame ()) ~name - - - - -class tiaspect_frame ~(widget : GBin.aspect_frame) ~name ~parent_tree ~pos - ?(insert_evbox=true) parent_window = -object - val aspect_frame = widget - inherit tiframe ~name ~widget:(widget :> GBin.frame) ~parent_tree ~pos - ~insert_evbox parent_window - - method private class_name = "GBin.aspect_frame" - - initializer - classe <- "aspect_frame"; - frame#set_label name; - proplist <- proplist @ - [ "obey_child", - new prop_bool ~name:"obey_child" ~init:"true" - ~set:(ftrue aspect_frame#set_obey_child); - "ratio", - new prop_float ~name:"ratio" ~init:"1.0" ~min:0. ~max:1. - ~set:(ftrue aspect_frame#set_ratio) - ] -end - -let new_tiaspect_frame ~name ?(listprop = []) = - new tiaspect_frame ~widget:(GBin.aspect_frame ()) ~name - - - - -class tievent_box ~(widget : GBin.event_box) ~name ~parent_tree ~pos - ?(insert_evbox=true) parent_window = -object - val event_box = widget - inherit ticontainer ~name ~widget ~parent_tree ~pos - ~insert_evbox parent_window - - method private class_name = "GBin.event_box" - initializer - classe <- "event_box" -end - -let new_event_box ~name ?(listprop = []) = - new tievent_box ~widget:(GBin.event_box ()) ~name - - - - -class tihandle_box ~(widget : GBin.handle_box) ~name ~parent_tree ~pos - ?(insert_evbox=true) parent_window = -object - val handle_box = widget - inherit ticontainer ~name ~widget ~parent_tree ~pos - ~insert_evbox parent_window - - method private class_name = "GBin.handle_box" - - initializer - classe <- "handle_box"; - proplist <- proplist @ - [ "shadow_type", - new prop_shadow ~name:"shadow_type" ~init:"OUT" - ~set:(ftrue handle_box#set_shadow_type); - "handle_position", - new prop_position ~name:"handle_position" ~init:"LEFT" - ~set:(ftrue handle_box#set_handle_position); - "snap_edge", - new prop_position ~name:"snap_edge" ~init:"TOP" - ~set:(ftrue handle_box#set_snap_edge) - ] -end - -let new_handle_box ~name ?(listprop = []) = - new tihandle_box ~widget:(GBin.handle_box ()) ~name - - - - - -class tiviewport ~(widget : GBin.handle_box) ~name ~parent_tree ~pos - ?(insert_evbox=true) parent_window = -object - val viewport = widget - inherit ticontainer ~name ~widget ~parent_tree ~pos - ~insert_evbox parent_window - - method private class_name = "GBin.viewport" - - initializer - classe <- "viewport"; - proplist <- proplist @ - [ "shadow_type", - new prop_shadow ~name:"shadow_type" ~init:"OUT" - ~set:(ftrue viewport#set_shadow_type) - ] -end - -let new_viewport ~name ?(listprop = []) = - new tiviewport ~widget:(GBin.handle_box ()) ~name - - - - - -class tiscrolled_window ~(widget : GBin.scrolled_window) - ~name ~parent_tree ~pos ?(insert_evbox=true) parent_window = - object(self) - val scrolled_window = widget - inherit ticontainer ~name ~insert_evbox - ~parent_tree ~pos ~widget parent_window - - method private class_name = "GBin.scrolled_window" - method private name_of_add_method = "#add_with_viewport" - - method private add rw ~pos = - scrolled_window#add_with_viewport (rw#base); - children <- [ rw, `START]; - self#set_full_menu false; - tree_item#drag#dest_unset () - -(* we must remove the child from the viewport, - not from the scrolled_window; - it is not mandatory to remove the viewport - from the scrolled_window *) - method remove child = - let viewport = (new GContainer.container (GtkBase.Container.cast (List.hd scrolled_window#children)#as_widget)) in - viewport#remove child#base; -(* scrolled_window#remove (List.hd scrolled_window#children); *) - children <- [ ]; - self#set_full_menu true; - tree_item#drag#dest_set ~actions:[`COPY] - [ { target = "STRING"; flags = []; info = 0} ] - - - initializer - classe <- "scrolled_window"; - proplist <- proplist @ - [ "hscrollbar_policy", - new prop_policy ~name:"hscrollbar_policy" ~init:"ALWAYS" - ~set:(ftrue scrolled_window#set_hpolicy); - "vscrollbar_policy", - new prop_policy ~name:"vscrollbar_policy" ~init:"ALWAYS" - ~set:(ftrue scrolled_window#set_vpolicy) ] -end - -let new_tiscrolled_window ~name ?(listprop = []) = - new tiscrolled_window ~widget:(GBin.scrolled_window ()) ~name - - diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/tiButton.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/tiButton.ml deleted file mode 100644 index 174c6ebff..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/tiButton.ml +++ /dev/null @@ -1,372 +0,0 @@ -open Utils -open Property - -open TiBase -open TiContainer - -(* the button inherits from widget because it can't accept - a child; - needs to add the border_width property *) -class tibutton ~(widget : #GButton.button) ~name ~parent_tree ~pos - ?(insert_evbox=true) parent_window = -object(self) - val button = widget - inherit tiwidget ~name ~widget ~parent_tree ~pos ~insert_evbox - parent_window as widget - - method private class_name = "GButton.button" - - method private get_mandatory_props = [ "label" ] - - initializer - classe <- "button"; - proplist <- proplist @ - [ "border_width", new prop_int ~name:"border_width" ~init:"0" - ~set:(ftrue button#set_border_width); - "label", - new prop_string ~name:"label" ~init:name ~set: - begin fun v -> - button#remove (List.hd button#children)#coerce; - GMisc.label ~text:v ~xalign:0.5 ~yalign:0.5 ~packing:button#add (); - true - end ] -end - -let new_tibutton ~name ?(listprop = []) = - let b = GButton.button ~label:name () in - b#event#connect#enter_notify - ~callback:(fun _ -> GtkSignal.stop_emit (); true); - b#event#connect#leave_notify - ~callback:(fun _ -> GtkSignal.stop_emit (); true); - new tibutton ~widget:b ~name - - -class ticheck_button ~(widget : #GButton.toggle_button) ~name - ~parent_tree ~pos ?(insert_evbox=true) parent_window = -object(self) - val button = widget - inherit tiwidget ~name ~widget ~insert_evbox - ~parent_tree ~pos parent_window as widget - - - method private class_name = "GButton.check_button" - - method private get_mandatory_props = [ "label" ] - - initializer - classe <- "check_button"; - proplist <- proplist @ - [ "border_width", new prop_int ~name:"border_width" ~init:"0" - ~set:(ftrue button#set_border_width); - "label", - new prop_string ~name:"label" ~init:name ~set: - begin fun v -> - button#remove (List.hd button#children)#coerce; - GMisc.label ~text:v ~xalign:0.5 ~yalign:0.5 ~packing:button#add (); - true - end - ] -end - -let new_ticheck_button ~name ?(listprop = []) = - new ticheck_button ~widget:(GButton.check_button ~label:name ()) ~name - - - -class titoggle_button ~(widget : #GButton.toggle_button) ~name - ~parent_tree ~pos ?(insert_evbox=true) parent_window = -object(self) - val button = widget - inherit tiwidget ~name ~widget ~insert_evbox - ~parent_tree ~pos parent_window as widget - - method private class_name = "GButton.toggle_button" - - method private get_mandatory_props = [ "label" ] - - initializer - classe <- "toggle_button"; - proplist <- proplist @ - [ "border width", new prop_int ~name:"border_width" ~init:"0" - ~set:(ftrue button#set_border_width); - "label", - new prop_string ~name:"label" ~init:name ~set: - begin fun v -> - button#remove (List.hd button#children)#coerce; - GMisc.label ~text:v ~xalign:0.5 ~yalign:0.5 ~packing:button#add (); - true - end ] -end - -let new_titoggle_button ~name ?(listprop = []) = - let b = GButton.toggle_button ~label:name () in -(* b#connect#event#enter_notify - ~callback:(fun _ -> GtkSignal.stop_emit ()); - b#connect#event#leave_notify - ~callback:(fun _ -> GtkSignal.stop_emit ()); -*) - new titoggle_button ~name ~widget:b - - -class tiradio_button ~(widget : #GButton.radio_button) ~name:nname - ~parent_tree ~pos ?(insert_evbox=true) parent_window = -object(self) - val button = widget - inherit tiwidget ~name:nname ~widget ~insert_evbox - ~parent_tree ~pos parent_window as widget - - val group_prop = - new prop_enum_dyn ~values:(fun () -> !radio_button_pool) ~name:"group" - ~set:(fun () -> true) ~init:nname - - - method private class_name = "GButton.radio_button" - - method remove_me_without_undo () = - radio_button_pool := list_remove !radio_button_pool - ~f:(fun x -> x = name); - widget#remove_me_without_undo () - - method private get_mandatory_props = [ "label" ] - - method private emit_clean_proplist = - List.remove_assoc "group" widget#emit_clean_proplist - - method emit_initializer_code formatter = - let groupname = group_prop#get in - if name <> groupname then - Format.fprintf formatter "@ %s#set_group %s#group;" name groupname - - initializer - classe <- "radio_button"; - radio_button_pool := name :: !radio_button_pool; - List.iter - ~f:(fun x -> Propwin.update (Hashtbl.find widget_map x) true) - (List.tl !radio_button_pool); - - proplist <- proplist @ - [ "border_width", new prop_int ~name:"border_width" ~init:"0" - ~set:(ftrue button#set_border_width); - "label", - new prop_string ~name:"label" ~init:name ~set: - begin fun v -> - button#remove (List.hd button#children)#coerce; - GMisc.label ~text:v ~xalign:0.5 ~yalign:0.5 ~packing:button#add (); - true - end ; - "group", group_prop - ] -end - -let new_tiradio_button ~name ?(listprop = []) = - let b = GButton.radio_button ~label:name () in - (* - b#event#connect#enter_notify - ~callback:(fun _ -> b#misc#stop_emit ~name:"enter_notify_event"; true); - b#event#connect#leave_notify - ~callback:(fun _ -> b#misc#stop_emit ~name:"leave_notify_event"; true); - *) - new tiradio_button ~name ~widget:b - - - - -class tibutton_toolbar ~(widget : #GButton.button) ~name ~parent_tree ~pos - ?(insert_evbox=true) parent_window ~toolbar = -object(self) - val button = widget - inherit tibutton ~name ~widget ~parent_tree ~pos ~insert_evbox - parent_window as button - - method private get_mandatory_props = - [ "text"; "tooltip"; "tooltip_private" ] - - method emit_init_code formatter ~packing = - Format.fprintf formatter "@ @[let %s =@ @[%s#insert_button" - name toolbar#name; - List.iter self#get_mandatory_props ~f: - begin fun name -> - Format.fprintf formatter "@ ~%s:%s" name - (List.assoc name proplist)#code - end; - Format.fprintf formatter "@ ()@ in@]@]" - - initializer - proplist <- List.remove_assoc "label" proplist -end - - -class titoggle_button_toolbar ~(widget : #GButton.toggle_button) ~name - ~parent_tree ~pos ?(insert_evbox=true) parent_window ~toolbar = -object(self) - val button = widget - inherit titoggle_button ~name ~widget ~parent_tree ~pos ~insert_evbox - parent_window as button - - method private get_mandatory_props = - [ "text"; "tooltip"; "tooltip_private" ] - - method emit_init_code formatter ~packing = - Format.fprintf formatter - "@ @[let %s =@ @[%s#insert_toggle_button" - name toolbar#name; - List.iter self#get_mandatory_props ~f: - begin fun name -> - Format.fprintf formatter "@ ~%s:%s" name - (List.assoc name proplist)#code - end; - Format.fprintf formatter "@ ()@ in@]@]" - - initializer - proplist <- List.remove_assoc "label" proplist -end - - -class tiradio_button_toolbar ~(widget : #GButton.radio_button) ~name - ~parent_tree ~pos ?(insert_evbox=true) parent_window ~toolbar = -object(self) - val button = widget - inherit tiradio_button ~name ~widget ~parent_tree ~pos ~insert_evbox - parent_window as button - - method private get_mandatory_props = - [ "text"; "tooltip"; "tooltip_private" ] - - method emit_init_code formatter ~packing = - Format.fprintf formatter - "@ @[let %s =@ @[%s#insert_radio_button" - name toolbar#name; - List.iter self#get_mandatory_props ~f: - begin fun name -> - Format.fprintf formatter "@ ~%s:%s" name - (List.assoc name proplist)#code - end; - Format.fprintf formatter "@ ()@ in@]@]" - - initializer - proplist <- List.remove_assoc "label" proplist -end - - - - -class titoolbar ~(widget : GToolbar2.toolbar2) ~name ~parent_tree ~pos - ?(insert_evbox=true) parent_window = -object(self) - val toolbar = widget - inherit ticontainer ~name ~widget ~parent_tree ~pos - ~insert_evbox parent_window - - method private class_name = "GButton.toolbar" - - method private add child ~pos = - children <- children @ [child, `START] - - method private get_pos child = - let rec aux n = function - | [] -> failwith "toolbar::get_pos" - | (hd, _)::tl -> if hd = child then n else aux (n+1) tl in - aux 0 children - - method private make_child ~classe ?(pos = -1) ~name ~parent_tree - ?(insert_evbox = true) ?(listprop = []) parent_window = - match classe with - | "button" -> - let t = try List.assoc "text" listprop with Not_found -> "" in - let tt = try List.assoc "tooltip" listprop with Not_found -> "" in - let ptt = try List.assoc "tooltip_private" listprop - with Not_found -> "" in - let listp = List.fold_left ~f:(fun l p -> List.remove_assoc p l) - ~init:listprop - [ "text"; "tooltip"; "tooltip_private" ] in - let b = toolbar#insert_button ~text:t ~tooltip:tt - ~tooltip_private:ptt () in - let child = new tibutton_toolbar ~name ~widget:b ~pos:(-1) - ~insert_evbox:false ~parent_tree:stree parent_window ~toolbar:self in - let tp = new prop_string ~name:"text" ~init:t - ~set:(fun v -> - toolbar#set_text v (self#get_pos child); true) - and ttp = new prop_string ~name:"tooltip" ~init:tt - ~set:(fun _ -> true) - and pttp = new prop_string ~name:"tooltip_private" ~init:ptt - ~set:(fun _ -> true) in - child#add_to_proplist - [ "text", tp; "tooltip", ttp; "tooltip_private", pttp ]; - child - | "toggle_button" -> - let t = try List.assoc "text" listprop with Not_found -> "" in - let tt = try List.assoc "tooltip" listprop with Not_found -> "" in - let ptt = try List.assoc "tooltip_private" listprop - with Not_found -> "" in - let listp = List.fold_left ~f:(fun l p -> List.remove_assoc p l) - ~init:listprop - [ "text"; "tooltip"; "tooltip_private" ] in - let b = toolbar#insert_toggle_button ~text:t ~tooltip:tt - ~tooltip_private:ptt () in - let child = new titoggle_button_toolbar ~name ~widget:b ~pos:(-1) - ~insert_evbox:false ~parent_tree:stree parent_window ~toolbar:self in - let tp = new prop_string ~name:"text" ~init:t - ~set:(fun v -> toolbar#set_text v (self#get_pos child); true) - and ttp = new prop_string ~name:"tooltip" ~init:tt - ~set:(fun _ -> true) - and pttp = new prop_string ~name:"tooltip_private" ~init:ptt - ~set:(fun _ -> true) in - child#add_to_proplist - [ "text", tp; "tooltip", ttp; "tooltip_private", pttp ]; - child - | "radio_button" -> - let t = try List.assoc "text" listprop with Not_found -> "" in - let tt = try List.assoc "tooltip" listprop with Not_found -> "" in - let ptt = try List.assoc "tooltip_private" listprop - with Not_found -> "" in - let listp = List.fold_left ~f:(fun l p -> List.remove_assoc p l) - ~init:listprop - [ "text"; "tooltip"; "tooltip_private" ] in - let b = toolbar#insert_radio_button ~text:t ~tooltip:tt - ~tooltip_private:ptt () in - let child = new tiradio_button_toolbar ~name ~widget:b ~pos:(-1) - ~insert_evbox:false ~parent_tree:stree parent_window ~toolbar:self in - let tp = new prop_string ~name:"text" ~init:t - ~set:(fun v -> toolbar#set_text v (self#get_pos child); true) - and ttp = new prop_string ~name:"tooltip" ~init:tt - ~set:(fun _ -> true) - and pttp = new prop_string ~name:"tooltip_private" ~init:ptt - ~set:(fun _ -> true) in - child#add_to_proplist - [ "text", tp; "tooltip", ttp; "tooltip_private", pttp ]; - child - | _ -> failwith "toolbar" - - - - method remove child = - toolbar#remove (child#base); - children <- list_remove ~f:(fun (ch, _) -> ch = child) children; - - initializer - classe <- "toolbar"; - proplist <- proplist @ - [ "orientation", - new prop_orientation ~name:"orientation" ~init:"HORIZONTAL" - ~set:(ftrue toolbar#set_orientation); - "style", - new prop_toolbar_style ~name:"style" ~init:"BOTH" - ~set:(ftrue toolbar#set_style); - "space_size", - new prop_int ~name:"space_size" ~init:"5" - ~set:(ftrue toolbar#set_space_size); - "space_style", - new prop_toolbar_space_style ~name:"space_style" ~init:"EMPTY" - ~set:(ftrue toolbar#set_space_style); - "tooltips", - new prop_bool ~name:"tooltips" ~init:"true" - ~set:(ftrue toolbar#set_tooltips); - "button_relief", - new prop_relief_style ~name:"button_relief" ~init:"NORMAL" - ~set:(ftrue toolbar#set_button_relief) - ] -end - -let new_toolbar ~name ?(listprop = []) = - new titoolbar ~name ~widget:(GToolbar2.toolbar2 ()) - diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/tiContainer.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/tiContainer.ml deleted file mode 100644 index ddf04d31f..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/tiContainer.ml +++ /dev/null @@ -1,92 +0,0 @@ - -open Gtk -open GObj -open GContainer - -open Utils -open Property - -open TiBase - -(* for containers being able to have at least one child; - not for buttons (can't have children) *) - -class virtual ticontainer ~widget ~name - ?(insert_evbox=true) ~parent_tree ~pos parent_window = -object(self) - - val container = (widget : #container :> container) - - inherit tiwidget ~name ~widget ~insert_evbox - ~parent_tree ~pos parent_window as widget - -(* name of the add method: add for most bin widgets, - pack for boxes, add_with_viewport for scrolled windows... *) - method private name_of_add_method = "#add" - - method private add child ~pos = - container#add child#base; - children <- [child, `START]; - self#set_full_menu false; - tree_item#drag#dest_unset () - - method remove child = - container#remove child#base; - children <- []; - self#set_full_menu true; - tree_item#drag#dest_set ~actions:[`COPY] - [ { target = "STRING"; flags = []; info = 0} ] - - method private menu ~time = - let menu = GMenu.menu () and menu_add = GMenu.menu () in - List.iter - ~f:(fun n -> - let mi = GMenu.menu_item ~packing:menu_add#append ~label:n () - in mi#connect#activate - ~callback:(fun () -> self#add_child n ();()); ()) - widget_add_list; - let mi_add = GMenu.menu_item ~packing:menu#append - ~label:("add to " ^ name) () - and mi_remove = GMenu.menu_item ~packing:menu#append - ~label:("remove " ^ name) () - and mi_cut = GMenu.menu_item ~packing:menu#append ~label:"Cut" () - and mi_copy = GMenu.menu_item ~packing:menu#append ~label:"Copy" () - and mi_paste = GMenu.menu_item ~packing:menu#append ~label:"Paste" () in - mi_remove#connect#activate ~callback:self#remove_me; - mi_add#set_submenu menu_add; - mi_copy#connect#activate ~callback:self#copy; - mi_cut#connect#activate ~callback:self#cut; - if !selection <> "" - then begin mi_paste#connect#activate ~callback:self#paste; () end - else mi_paste#misc#set_sensitive false; - menu#popup ~button:3 ~time - - method emit_init_code c ~packing = - widget#emit_init_code c ~packing; - self#forall ~callback:(fun child -> child#emit_init_code c - ~packing:(name ^ self#name_of_add_method)) - - method emit_method_code c = - widget#emit_method_code c; - self#forall ~callback:(fun child -> child#emit_method_code c) - - method emit_initializer_code c = - widget#emit_initializer_code c; - self#forall ~callback:(fun child -> child#emit_initializer_code c) - - - initializer - proplist <- proplist @ - [ "border_width", new prop_int ~name:"border_width" ~init:"0" - ~set:(ftrue container#set_border_width) ]; - - tree_item#drag#dest_set ~actions:[`COPY] - [ { target = "STRING"; flags = []; info = 0} ]; - tree_item#drag#connect#data_received ~callback: - begin fun (context : drag_context) ~x ~y - (data : selection_data) ~info ~time -> - self#add_child data#data (); - context#finish ~success:true ~del:false ~time - end;() -end - diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/tiEdit.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/tiEdit.ml deleted file mode 100644 index 4b0977bb6..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/tiEdit.ml +++ /dev/null @@ -1,153 +0,0 @@ -open Utils -open Property - -open TiBase - - - -class tientry ~(widget : GEdit.entry) ~name ~parent_tree ~pos - ?(insert_evbox=true) parent_window = -object - val entry = widget - inherit tiwidget ~name ~widget ~parent_tree ~pos - ~insert_evbox parent_window - - method private class_name = "GEdit.entry" - initializer - classe <- "entry"; - proplist <- proplist @ - [ "visibility", - new prop_bool ~name:"visibility" ~init:"true" - ~set:(ftrue entry#set_visibility); - "editable", - new prop_bool ~name:"editable" ~init:"true" - ~set:(ftrue entry#set_editable) - ] -end - -let new_tientry ~name ?(listprop = []) = - new tientry ~name ~widget:(GEdit.entry ()) - - -class tispin_button ~(widget : GEdit.spin_button) ~name ~parent_tree ~pos - ?(insert_evbox=true) parent_window = -object - val spin_button = widget - inherit tientry ~widget:(widget :> GEdit.entry) ~name ~parent_tree ~pos - ~insert_evbox parent_window - - method private class_name = "GEdit.spin_button" - initializer - classe <- "spin_button"; - proplist <- proplist @ - [ "digits", - new prop_int ~name:"digits" ~init:"0" - ~set:(ftrue spin_button#set_digits); - "update_policy", - new prop_spin_button_update_policy ~name:"update_policy" - ~init:"ALWAYS" - ~set:(ftrue spin_button#set_update_policy); - "numeric", - new prop_bool ~name:"numeric" ~init:"false" - ~set:(ftrue spin_button#set_numeric); - "wrap", - new prop_bool ~name:"wrap" ~init:"false" - ~set:(ftrue spin_button#set_wrap); - "shadow_type", - new prop_shadow ~name:"shadow_type" ~init:"NONE" - ~set:(ftrue spin_button#set_shadow_type); - "snap_to_ticks", - new prop_bool ~name:"snap_to_ticks" ~init:"false" - ~set:(ftrue spin_button#set_snap_to_ticks) - ] - -end - - -let get_adjustment () = - let rv = ref 0. and rl = ref 0. and ru = ref 100. and rsi = ref 1. - and rpi = ref 10. and rps = ref 10. in - let w = GWindow.window ~modal:true () in - let v = GPack.vbox ~packing:w#add () in - let l = GMisc.label ~text:"adjustment properties" ~packing:v#pack () in - let h1 = GPack.hbox ~packing:v#pack () in - let l1 = GMisc.label ~text:"value" ~packing:h1#pack () in - let e1 = GEdit.entry ~text:"0." ~packing:h1#pack () in - let h2 = GPack.hbox ~packing:v#pack () in - let l2 = GMisc.label ~text:"lower" ~packing:h2#pack () in - let e2 = GEdit.entry ~text:"0." ~packing:h2#pack () in - let h3 = GPack.hbox ~packing:v#pack () in - let l3 = GMisc.label ~text:"upper" ~packing:h3#pack () in - let e3 = GEdit.entry ~text:"100." ~packing:h3#pack () in - let h4 = GPack.hbox ~packing:v#pack () in - let l4 = GMisc.label ~text:"step_incr" ~packing:h4#pack () in - let e4 = GEdit.entry ~text:"1." ~packing:h4#pack () in - let h5 = GPack.hbox ~packing:v#pack () in - let l5 = GMisc.label ~text:"page_incr" ~packing:h5#pack () in - let e5 = GEdit.entry ~text:"10." ~packing:h5#pack () in - let h6 = GPack.hbox ~packing:v#pack () in - let l6 = GMisc.label ~text:"page_size" ~packing:h6#pack () in - let e6 = GEdit.entry ~text:"10." ~packing:h6#pack () in - let h7 = GPack.hbox ~packing:v#pack () in - let b1 = GButton.button ~label:"OK" ~packing:h7#pack () in - let b2 = GButton.button ~label:"Cancel" ~packing:h7#pack () in - w#show (); - b1#connect#clicked - ~callback:(fun () -> - begin - try rv := float_of_string e1#text with _ -> - try rv := float_of_int (int_of_string e1#text) with _ -> () end; - begin - try rl := float_of_string e2#text with _ -> - try rl := float_of_int (int_of_string e2#text) with _ -> () end; - begin - try ru := float_of_string e3#text with _ -> - try ru := float_of_int (int_of_string e3#text) with _ -> () end; - begin - try rsi := float_of_string e4#text with _ -> - try rsi := float_of_int (int_of_string e4#text) with _ -> () end; - begin - try rpi := float_of_string e5#text with _ -> - try rpi := float_of_int (int_of_string e5#text) with _ -> () end; - begin - try rps := float_of_string e6#text with _ -> - try rps := float_of_int (int_of_string e6#text) with _ -> () end; - w#destroy ()); - b2#connect#clicked ~callback:w#destroy; - w#connect#destroy ~callback:GMain.Main.quit; - GMain.Main.main (); - !rv, !rl, !ru, !rsi, !rpi, !rps - -let new_tispin_button ~name ?(listprop = []) = - let v, l, u, si, pi, ps = get_adjustment () in - new tispin_button ~name - ~widget:(GEdit.spin_button ~adjustment: - (GData.adjustment ~value:v ~lower:l ~upper:u - ~step_incr:si ~page_incr:pi ~page_size:ps ()) ()) - - - -class ticombo ~(widget : GEdit.combo) ~name ~parent_tree ~pos - ?(insert_evbox=true) parent_window = -object - val combo = widget - inherit tiwidget ~name ~widget ~parent_tree ~pos - ~insert_evbox parent_window - - method private class_name = "GEdit.combo" - initializer - classe <- "combo"; - proplist <- proplist @ - [ "use_arrows", - new prop_combo_use_arrows ~name:"use_arrows" ~init:"true" - ~set:(ftrue combo#set_use_arrows); - "case_sensitive", - new prop_bool ~name:"case_sensitive" ~init:"false" - ~set:(ftrue combo#set_case_sensitive) - ] -end - -let new_ticombo ~name ?(listprop = []) = - new ticombo ~name ~widget:(GEdit.combo ()) - - diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/tiList.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/tiList.ml deleted file mode 100644 index 770e19b73..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/tiList.ml +++ /dev/null @@ -1,66 +0,0 @@ - -open Utils -open Property - -open TiBase - -class ticlist ~(widget : 'a GList.clist) ~name ~parent_tree ~pos - ?(insert_evbox=true) parent_window ~columns ~titles = - object(self) - val clist = widget - inherit tiwidget ~name ~widget ~parent_tree ~pos - ~insert_evbox parent_window as widget - - val param = parent_window#add_param - - method private class_name = "GList.clist" - - method private get_mandatory_props = [ "columns" ] - - method remove_me_without_undo () = - parent_window#remove_param param; - widget#remove_me_without_undo () - - method emit_init_code formatter ~packing = - Format.fprintf formatter - "@ @[let (%s : '%c GList.clist) =@ @[GList.clist" - name param; - List.iter self#get_mandatory_props ~f: - begin fun name -> - Format.fprintf formatter "@ ~%s:%s" name - (List.assoc name proplist)#code - end; - let packing = self#get_packing packing in - if packing <> "" then Format.fprintf formatter "@ %s" packing; - self#emit_prop_code formatter; - Format.fprintf formatter "@ ()@ in@]@]" - - - initializer - classe <- "clist"; - proplist <- proplist @ - [ "columns", - new prop_int ~name:"columns" ~init:(string_of_int columns) - ~set:(fun _ -> true); - "titles", - new prop_clist_titles ~name:"titles" ~init:(String.concat ~sep:" " titles) - ~set:(fun v -> - let v = Array.of_list v in - for i = 0 to Array.length v - 1 do - clist#set_column i ~title:v.(i) - done; - true) - ] -end - -let new_clist ~name ?(listprop = []) = - let c, lp = match listprop with - | [] -> (get_a_number "number of columns" 3), [] - | ("columns", n)::tl -> (int_of_string n), tl - | _ -> failwith "new_clist" - in - let rtitles = ref [] in - for i = c downto 1 do rtitles := ("column" ^(string_of_int i)):: !rtitles done; - new ticlist ~name ~widget:(GList.clist ~columns:c ~titles: !rtitles ()) ~columns:c ~titles: !rtitles - - diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/tiMisc.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/tiMisc.ml deleted file mode 100644 index f4f435a54..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/tiMisc.ml +++ /dev/null @@ -1,176 +0,0 @@ - -open Utils -open Property - -open TiBase -open TiContainer - - -class tiseparator ~(dir : Gtk.Tags.orientation) ~(widget : GObj.widget_full) - ~name ~parent_tree ~pos ?(insert_evbox=true) parent_window = -object - val separator = widget - inherit tiwidget ~name ~widget ~parent_tree ~pos parent_window ~insert_evbox - - method private class_name = - match dir with `VERTICAL -> "GMisc.separator `VERTICAL" - | `HORIZONTAL -> "GMisc.separator `HORIZONTAL" - initializer - classe <- - (match dir with `VERTICAL -> "vseparator" | `HORIZONTAL -> "hseparator") - -end - -let new_tihseparator ~name ?(listprop = []) = - new tiseparator ~dir: `HORIZONTAL ~name - ~widget:(GMisc.separator `HORIZONTAL ()) -let new_tivseparator ~name ?(listprop = []) = - new tiseparator ~dir: `VERTICAL ~name - ~widget:(GMisc.separator `VERTICAL ()) - - - - -class tistatusbar ~(widget : GMisc.statusbar) ~name ~parent_tree ~pos - ?(insert_evbox=true) parent_window = -object(self) - val statusbar = widget - inherit ticontainer ~name ~widget ~insert_evbox - ~parent_tree ~pos parent_window as widget - - method private class_name = "GMisc.statusbar" - - initializer - classe <- "statusbar" -end - -let new_tistatusbar ~name ?(listprop = []) = - new tistatusbar ~widget:(GMisc.statusbar ()) ~name - - - -class timisc ~(widget : GMisc.misc) ~name ~parent_tree ~pos - ?(insert_evbox=true) parent_window = -object(self) - val misc = widget - inherit tiwidget ~name ~widget ~insert_evbox - ~parent_tree ~pos parent_window as widget - - method private class_name = failwith "timisc::class_name" - - initializer - proplist <- proplist @ - [ "x_alignment", - new prop_float ~name:"x alignment" ~init:"0.5" ~min:0. ~max:1. - ~set:(fun v -> misc#set_alignment ~x:v (); true); - "y_alignment", - new prop_float ~name:"y alignment" ~init:"0.5" ~min:0. ~max:1. - ~set:(fun v -> misc#set_alignment ~y:v (); true); - "x_padding", - new prop_int ~name:"x padding" ~init:"0.5" - ~set:(fun v -> misc#set_padding ~x:v (); true); - "y_padding", - new prop_int ~name:"y padding" ~init:"0.5" - ~set:(fun v -> misc#set_padding ~y:v (); true) - - ] -end - - -class tiarrow ~(widget : GMisc.arrow) ~name ~parent_tree ~pos - ?(insert_evbox=true) parent_window = -object(self) - val arrow = widget - inherit timisc ~name ~widget:(widget :> GMisc.misc) ~insert_evbox - ~parent_tree ~pos parent_window as widget - - method private class_name = "GMisc.arrow" - initializer - classe <- "arrow"; -end - - -(* TODO fenetre demandant kind et shadow -let new_tiarrow ~name = new tiarrow ~widget:(GMisc.arrow ()) ~name -*) - - -class tilabel ~(widget : GMisc.label) ~name ~parent_tree ~pos - ?(insert_evbox=true) parent_window = -object(self) - val labelw = widget - inherit timisc ~name ~widget:(widget :> GMisc.misc) ~insert_evbox - ~parent_tree ~pos parent_window as widget - - method private class_name = "GMisc.label" - - method private get_mandatory_props = [ "text" ] - - initializer - classe <- "label"; - proplist <- proplist @ - [ "text", - new prop_string ~name:"text" ~init:name ~set:(ftrue labelw#set_text); - "line_wrap", - new prop_bool ~name:"line_wrap" ~init:"true" - ~set:(ftrue labelw#set_line_wrap) - ] -end - -let new_tilabel ~name ?(listprop = []) = - new tilabel ~widget:(GMisc.label ~text:name ()) ~name - - - - - -class ticolor_selection ~(widget : GMisc.color_selection) ~name ~parent_tree ~pos - ?(insert_evbox=true) parent_window = -object(self) - val color_selection = widget - inherit tiwidget ~name ~widget ~insert_evbox - ~parent_tree ~pos parent_window as widget - - method private class_name = "GMisc.color_selection" - - initializer - classe <- "color_selection"; - proplist <- proplist @ - [ "use_opacity", - new prop_bool ~name:"use_opacity" ~init:"false" - ~set:(ftrue color_selection#set_opacity); - "update_policy", - new prop_update_type ~name:"update_policy" ~init:"CONTINUOUS" - ~set:(ftrue color_selection#set_update_policy) - ] -end - -let new_ticolor_selection ~name ?(listprop = []) = - new ticolor_selection ~widget:(GMisc.color_selection ()) ~name - - -class tipixmap ~(widget : GMisc.pixmap) ~name ~parent_tree ~pos - ?(insert_evbox=true) parent_window = -object(self) - val pixmap = widget - inherit timisc ~name ~widget:(widget :> GMisc.misc) ~insert_evbox - ~parent_tree ~pos parent_window as widget - - method private class_name = "GMisc.pixmap" - initializer - classe <- "pixmap"; - proplist <- proplist @ - [ "file", - new prop_file ~name:"file" ~init:"" - ~set:(fun v -> - pixmap#set_pixmap - (GDraw.pixmap_from_xpm ~window:parent_window#tiwin#widget - ~file:v ()); - true) - ] -end - -let new_tipixmap ~name ?(listprop = []) ~parent_tree ~pos ?(insert_evbox=true) (parent_window : window_and_tree0) = - new tipixmap ~widget:(GMisc.pixmap (GDraw.pixmap_from_xpm - ~window:parent_window#tiwin#widget ~file:"pixmap.xpm" ()) ()) ~name - ~parent_tree ~pos ~insert_evbox parent_window diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/tiPack.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/tiPack.ml deleted file mode 100644 index 291eec9d9..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/tiPack.ml +++ /dev/null @@ -1,300 +0,0 @@ - -open Utils -open Property - -open TiContainer - -class tibox ~(dir : Gtk.Tags.orientation) ~(widget : GPack.box) - ~name ~parent_tree ~pos ?(insert_evbox=true) parent_window = - let class_name = - match dir with `VERTICAL -> "GPack.vbox" | _ -> "GPack.hbox" in -object(self) - val box = widget - inherit ticontainer ~name ~widget ~parent_tree ~pos ~insert_evbox - parent_window as container - - method private class_name = class_name - - method private name_of_add_method = "#pack" - -(* removes the ::expand ::fill ::padding in the proplist of a box - assumes that these are the only properties with a :: in the name *) - method private save_clean_proplist = - List.filter container#save_clean_proplist - ~f:(fun (n,p) -> - try - let i = String.index n ':' in - i = String.length n || n.[i+1] <> ':' - with Not_found -> true) - - method private emit_clean_proplist = - List.filter container#emit_clean_proplist - ~f:(fun (n,p) -> - try - let i = String.index n ':' in - i = String.length n || n.[i+1] <> ':' - with Not_found -> true) - - method change_name_in_proplist oldn newn = - proplist <- List.fold_left ~init:proplist ~f: - (fun pl propname -> - change_property_name (oldn ^ propname) (newn ^ propname) pl) - [ "::expand"; "::fill"; "::padding" ]; - Propwin.update self false - - method child_up child = - let pos = list_pos ~item:child (List.map ~f:fst children) in - if pos > 0 then begin - box#reorder_child child#base ~pos:(pos-1); - children <- list_reorder_up children ~pos; - stree#item_up ~pos - end - - method child_down child = - let pos = list_pos ~item:child (List.map ~f:fst children) in - if pos < (List.length children - 1) then begin - box#reorder_child child#base ~pos:(pos+1); - children <- list_reorder_down children ~pos; - stree#item_up ~pos:(pos+1) - end - - method private add child ~pos = - box#pack child#base; - if pos < 0 then begin - children <- children @ [(child, `START)] - end - else begin - children <- list_insert ~item:(child, `START) children ~pos; - box#reorder_child child#base ~pos - end; - let n = child#name in - let expand = - new prop_bool ~name:"expand" ~init:"false" ~set: - begin fun v -> - box#set_child_packing (child#base) ~expand:v; - Propwin.update child false; - Propwin.update self false; true - end - and fill = - new prop_bool ~name:"fill" ~init:"true" ~set: - begin fun v -> - box#set_child_packing (child#base) ~fill:v; - Propwin.update child false; - Propwin.update self false; true - end - and padding = - new prop_int ~name:"padding" ~init:"0" ~set: - begin fun v -> - box#set_child_packing (child#base) ~padding:v; - Propwin.update child false; - Propwin.update self false; true - end - in - proplist <- proplist @ - [ (n ^ "::expand"), expand; - (n ^ "::fill"), fill; - (n ^ "::padding"), padding ]; - child#add_to_proplist - [ "expand", expand; "fill", fill; "padding", padding ]; - Propwin.update self true - - - method remove child = - box#remove (child#base); - children <- list_remove ~f:(fun (ch, _) -> ch = child) children; - let n = child#name in - proplist <- List.fold_left ~init:proplist - ~f:(fun acc n -> List.remove_assoc n acc) - [ (n ^ "::expand"); (n ^ "::fill"); (n ^ "::padding") ]; - Propwin.update self true - - initializer - classe <- (match dir with `VERTICAL -> "vbox" | _ -> "hbox"); - proplist <- proplist @ - [ "homogeneous", - new prop_bool ~name:"homogeneous" ~init:"false" - ~set:(ftrue box#set_homogeneous); - "spacing", - new prop_int ~name:"spacing" ~init:"0" - ~set:(ftrue box#set_spacing) - ] -end - -class tihbox = tibox ~dir:`HORIZONTAL -class tivbox = tibox ~dir:`VERTICAL - -let new_tihbox ~name ?(listprop = []) = new tihbox ~widget:(GPack.hbox ()) ~name -let new_tivbox ~name ?(listprop = []) = new tivbox ~widget:(GPack.vbox ()) ~name - - - - -class tibbox ~(dir : Gtk.Tags.orientation) ~(widget : GPack.button_box) - ~name ~parent_tree ~pos ?(insert_evbox=true) parent_window = - let class_name = - match dir with `VERTICAL -> "GPack.button_box `VERTICAL" - | _ -> "GPack.button_box `HORIZONTAL" in -object(self) - val bbox = widget - inherit tibox ~dir ~widget:(widget :> GPack.box) - ~name ~parent_tree ~pos ~insert_evbox parent_window - - method private class_name = class_name - -initializer - classe <- (match dir with `VERTICAL -> "vbutton_box" | _ -> "hbutton_box"); - proplist <- proplist @ - [ "layout", - new prop_button_box_style ~name:"layout" ~init:"DEFAULT_STYLE" - ~set:(ftrue bbox#set_layout); - "spacing", - new prop_int ~name:"spacing" - ~init:(match dir with `VERTICAL -> "10" | _ -> "30") -(* donne -1 (defaut) -(GtkPack.BBox.get_spacing bbox#as_button_box) *) - ~set:(fun v -> bbox#set_spacing v; - GtkBase.Widget.queue_resize bbox#as_widget; true); - "child_width", - new prop_int ~name:"child_width" ~init:"85" - ~set:(fun v -> - bbox#set_child_size ~width:v - ~height:(int_of_string (self#get_property "child_height")) (); - GtkBase.Widget.queue_resize bbox#as_widget; true); - "child_height", - new prop_int ~name:"child_height" ~init:"27" - ~set:(fun v -> - bbox#set_child_size ~height:v - ~width:(int_of_string (self#get_property "child_width")) (); - GtkBase.Widget.queue_resize bbox#as_widget; true); - "child_ipad_x", - new prop_int ~name:"child_ipad_x" ~init:"7" - ~set:(fun v -> - bbox#set_child_ipadding ~x:v - ~y:(int_of_string (self#get_property "child_ipad_y")) (); - GtkBase.Widget.queue_resize bbox#as_widget; true); - "child_ipad_y", - new prop_int ~name:"child_ipad_y" ~init:"0" - ~set:(fun v -> - bbox#set_child_ipadding ~y:v - ~x:(int_of_string (self#get_property "child_ipad_x")) (); - GtkBase.Widget.queue_resize bbox#as_widget; true); - ] -end - - -(* TODO: pour proplist/spacing il faudrait implementer - les fonctions get_spacing ... (voir dans gtkPack) *) - -class tihbutton_box = tibbox ~dir:`HORIZONTAL -class tivbutton_box = tibbox ~dir:`VERTICAL - -let new_tihbutton_box ~name ?(listprop = []) = - new tihbutton_box ~widget:(GPack.button_box `HORIZONTAL ()) ~name - -let new_tivbutton_box ~name ?(listprop = []) = - new tivbutton_box ~widget:(GPack.button_box `VERTICAL ()) ~name - - - - -let get_fixed_pos () = - let rx = ref 0 and ry = ref 0 in - let w = GWindow.window ~modal:true () in - let v = GPack.vbox ~packing:w#add () in - let l = GMisc.label ~text:"Enter position for child" ~packing:v#pack () in - let h1 = GPack.hbox ~packing:v#pack () in - let l1 = GMisc.label ~text:"x:" ~packing:h1#pack () in - let e1 = GEdit.entry ~text:"0" ~packing:h1#pack () in - let h2 = GPack.hbox ~packing:v#pack () in - let l2 = GMisc.label ~text:"y" ~packing:h2#pack () in - let e2 = GEdit.entry ~text:"0" ~packing:h2#pack () in - let h7 = GPack.hbox ~packing:v#pack () in - let b1 = GButton.button ~label:"OK" ~packing:h7#pack () in - let b2 = GButton.button ~label:"Cancel" ~packing:h7#pack () in - w#show (); - b1#connect#clicked - ~callback:(fun () -> - begin - try rx := int_of_string e1#text with _ -> () end; - begin - try ry := int_of_string e2#text with _ -> () end; - w#destroy ()); - b2#connect#clicked ~callback:w#destroy; - w#connect#destroy ~callback:GMain.Main.quit; - GMain.Main.main (); - !rx, !ry - - -class tifixed ~(widget : GPack.fixed) - ~name ~parent_tree ~pos ?(insert_evbox=true) parent_window = -object(self) - val fixed = widget - inherit ticontainer ~widget - ~name ~parent_tree ~pos ~insert_evbox parent_window - - method private class_name = "GPack.fixed" - - method private add child ~pos = - let x, y = get_fixed_pos () in - fixed#put child#base ~x ~y; - children <- children @ [(child, `START)] - initializer - classe <- "fixed" -end - -let new_tifixed ~name ?(listprop = []) = - new tifixed ~widget:(GPack.fixed ()) ~name - - - - - -class tinotebook ~(widget : GPack.notebook) ~name ~parent_tree ~pos - ?(insert_evbox=true) parent_window = -object(self) - val notebook = widget - inherit ticontainer ~name ~widget ~insert_evbox - ~parent_tree ~pos parent_window as widget - - method private class_name = "GPack.notebook" - - method private add child ~pos = - children <- children @ [child, `START]; - notebook#insert_page child#base ~pos; - child#add_to_proplist - [ "tab_label", - new prop_string ~name:"tab_label" ~init:"" - ~set:(fun v -> notebook#set_page - ~tab_label:((GMisc.label ~text:v())#coerce) child#base; true) - ] - - - initializer - classe <- "notebook"; - proplist <- proplist @ - [ "tab_pos", - new prop_position ~name:"tab_ pos" ~init:"TOP" - ~set:(ftrue notebook#set_tab_pos); - "show_tabs", - new prop_bool ~name:"show_tabs" ~init:"true" - ~set:(ftrue notebook#set_show_tabs); - "homogeneous_tabs", - new prop_bool ~name:"homogeneous_tabs" ~init:"true" - ~set:(ftrue notebook#set_homogeneous_tabs); - "show_border", - new prop_bool ~name:"show_border" ~init:"true" - ~set:(ftrue notebook#set_show_border); - "scrollable", - new prop_bool ~name:"scrollable" ~init:"false" - ~set:(ftrue notebook#set_scrollable); - "tab_border", - new prop_int ~name:"tab_border" ~init:"2" - ~set:(ftrue notebook#set_tab_border); - "popup_enable", - new prop_bool ~name:"popup_enable" ~init:"false" - ~set:(ftrue notebook#set_popup) - ] -end - -let new_tinotebook ~name ?(listprop = []) = - new tinotebook ~widget:(GPack.notebook ()) ~name diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/tiWidget.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/tiWidget.ml deleted file mode 100644 index 5a6e3ac01..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/tiWidget.ml +++ /dev/null @@ -1,43 +0,0 @@ - -let new_class_list (* : - (string * - (name:string -> ?listprop:string list -> - parent_tree:GTree2.tree -> pos:int -> - ?insert_evbox:bool -> - - TiBase.window_and_tree0 -> TiBase.tiwidget0)) list *) -= [ - "window", TiWindow.new_tiwindow; - "hbox", TiPack.new_tihbox; - "vbox", TiPack.new_tivbox; - "hbutton_box", TiPack.new_tihbutton_box; - "vbutton_box", TiPack.new_tivbutton_box; - "fixed", TiPack.new_tifixed; - "notebook", TiPack.new_tinotebook; - "button", TiButton.new_tibutton; - "check_button", TiButton.new_ticheck_button; - "toggle_button", TiButton.new_titoggle_button; - "radio_button", TiButton.new_tiradio_button; - "toolbar", TiButton.new_toolbar; - "hseparator", TiMisc.new_tihseparator; - "vseparator", TiMisc.new_tivseparator; - "statusbar", TiMisc.new_tistatusbar; - "label", TiMisc.new_tilabel; - "color_selection", TiMisc.new_ticolor_selection; - "pixmap", TiMisc.new_tipixmap; - "frame", TiBin.new_tiframe; - "aspect_frame", TiBin.new_tiaspect_frame; - "handle_box", TiBin.new_handle_box; - "viewport", TiBin.new_viewport; - "event_box", TiBin.new_event_box; - "scrolled_window", TiBin.new_tiscrolled_window; - "entry", TiEdit.new_tientry; - "spin_button", TiEdit.new_tispin_button; - "combo", TiEdit.new_ticombo; - "clist", TiList.new_clist -] - -let _ = - TiBase.new_tiwidget := - (fun ~classe ?(pos = -1) ~name ~parent_tree ?insert_evbox ?(listprop = []) -> (List.assoc classe new_class_list) ~pos ~name ~parent_tree ?insert_evbox ~listprop) - diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/tiWindow.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/tiWindow.ml deleted file mode 100644 index b44b4d479..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/tiWindow.ml +++ /dev/null @@ -1,117 +0,0 @@ - -open Utils -open Property - -open TiBase -open TiContainer - - -class tiwindow ~widget ~name ~parent_tree ~pos ?(insert_evbox=true) - parent_window = -object(self) - val window = widget - inherit ticontainer ~name ~widget - ~insert_evbox:false ~parent_tree ~pos parent_window as container - - method connect_event = window#event#connect - - method private class_name = "GWindow.window" - - method private get_mandatory_props = [ "title" ] - -(* method private save_clean_proplist = - List.remove_assoc "title" container#save_clean_proplist - - method private emit_clean_proplist plist = - List.remove_assoc "title" (container#emit_clean_proplist plist) -*) - method remove_me () = - let sref = ref "" in - self#save_to_string sref; - let lexbuf = Lexing.from_string !sref in - let node = Load_parser.window Load_lexer.token lexbuf in - add_undo (Add_window node); - self#remove_me_without_undo () - - method copy () = self#copy_to_sel window_selection - - method remove_me_without_undo () = - self#forall ~callback:(fun tiw -> tiw#remove_me_without_undo ()); - parent_window#remove_sel (self : #tiwidget0 :> tiwidget0); - name_list := list_remove !name_list ~f:(fun n -> n=name); - Hashtbl.remove widget_map name; - Propwin.remove name; - widget#destroy () - - method private get_packing packing = "" - - method emit_code f param_list = - let param_string = - match param_list with - | [] -> "" - | _ -> "['" ^ - (String.concat ~sep:", '" - (List.map ~f:(fun c -> (String.make 1 c)) param_list)) ^ - "] " in - Format.fprintf f "(* Code for %s *)@\n@\n@[class %s%s () =" - name param_string name; - self#emit_init_code f ~packing:""; - Format.fprintf f "@]@\n@[object (self)"; - self#emit_method_code f; - Format.fprintf f "@ method show () = %s#show ()" name; - Format.fprintf f "@ @[initializer"; - self#emit_initializer_code f; - Format.fprintf f "@ ()@]@]@ end@\n@\n" - -(* method private save_start formatter = - Format.fprintf formatter "@[<0>@\n@[<2>" name; - Format.fprintf formatter "@\ntitle=\"%s\"" - (List.assoc "title" proplist)#get -*) - method private save_end formatter = - Format.fprintf formatter "@]@\n@\n@]" - - method private menu ~time = - let menu = GMenu.menu () and menu_add = GMenu.menu () in - List.iter - ~f:(fun n -> - let mi = GMenu.menu_item ~packing:menu_add#append ~label:n () - in mi#connect#activate - ~callback:(fun () -> self#add_child n (); ()); ()) - widget_add_list; - let mi_add = GMenu.menu_item ~packing:menu#append ~label:("add to "^ name) () - and mi_paste = GMenu.menu_item ~packing:menu#append ~label:"Paste" () - in - mi_add#set_submenu menu_add; - if !selection <> "" - then begin mi_paste#connect#activate ~callback:self#paste; () end - else mi_paste#misc#set_sensitive false; - menu#popup ~button:3 ~time - - - initializer - classe <- "window"; - window#set_title name; - proplist <- proplist @ - [ "title", - new prop_string ~name:"title" ~init:name ~set:(ftrue window#set_title); - "allow_shrink", new prop_bool ~name:"allow_shrink" ~init:"false" - ~set:(ftrue window#set_allow_shrink); - "allow_grow", new prop_bool ~name:"allow_grow" ~init:"true" - ~set:(ftrue window#set_allow_grow); - "auto_shrink", new prop_bool ~name:"auto_shrink" ~init:"false" - ~set:(ftrue window#set_auto_shrink); - "x position", new prop_int ~name:"x" ~init:"-2" - ~set:(fun x -> window#misc#set_geometry ~x (); true); - "y position", new prop_int ~name:"y" ~init:"-2" - ~set:(fun y -> window#misc#set_geometry ~y (); true) ] -end - -let new_tiwindow ~name ?(listprop = []) = - let w = GWindow.window ~show:true () in - w#misc#set_can_focus false; - w#misc#set_can_default false; - new tiwindow ~widget:w ~name - - - diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/togglebutton.xpm b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/togglebutton.xpm deleted file mode 100644 index f29d76972..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/togglebutton.xpm +++ /dev/null @@ -1,33 +0,0 @@ -/* XPM */ -static char *togglebutton_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 6 1", -" c Gray0", -". c #7b7b7b", -"X c #d6d6d6", -"o c #b3cece", -"O c Gray100", -"+ c None", -/* pixels */ -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+..................O+", -"+. O+", -"+. XXXXXXXXXXXXXXXXO+", -"+. XXXXXXXXXXXXXXXXO+", -"+. XXX XXX XXX XXO+", -"+. XX XXX XX XX XXO+", -"+. XX XXX XX XX XXO+", -"+. XX XXX XX X X XXO+", -"+. XX XXX XX XX XXO+", -"+. XX XXX XX XX XXO+", -"+. XXX XXX XXX XXO+", -"+. XXXXXXXXXXXXXXXXO+", -"+. XXXXXXXXXXXXXXXXO+", -"+. XXXXXXXXXXXXXXXXO+", -"+OOOOOOOOOOOOOOOOOOO+", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++" -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/toolbar.xpm b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/toolbar.xpm deleted file mode 100644 index d9a521716..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/toolbar.xpm +++ /dev/null @@ -1,33 +0,0 @@ -/* XPM */ -static char *toolbar_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 6 1", -" c Gray0", -". c #7b7b7b", -"X c #d6d6d6", -"o c #b3cece", -"O c Gray100", -"+ c None", -/* pixels */ -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+OOOOOOOOOOOOOOOOOOO ", -"+OXXXXXXXXXXXXXXXXX. ", -"+OXOOOO OOOO OOOO X. ", -"+OXOXXX OXXX OXXX X. ", -"+OXOXXX OXXX OXXX X. ", -"+OXO O O X. ", -"+OXXXXXXXXXXXXXXXXX. ", -"+O.................. ", -"+ ", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++" -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/tree_minus.xpm b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/tree_minus.xpm deleted file mode 100644 index cce067910..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/tree_minus.xpm +++ /dev/null @@ -1,18 +0,0 @@ -/* XPM */ -static char *tree_minus[] = { -/* width height num_colors chars_per_pixel */ -" 9 9 2 1", -/* colors */ -". c #000000", -"# c #f8fcf8", -/* pixels */ -".........", -".#######.", -".#######.", -".#######.", -".#.....#.", -".#######.", -".#######.", -".#######.", -"........." -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/tree_plus.xpm b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/tree_plus.xpm deleted file mode 100644 index d0ba80ca2..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/tree_plus.xpm +++ /dev/null @@ -1,18 +0,0 @@ -/* XPM */ -static char *tree_plus[] = { -/* width height num_colors chars_per_pixel */ -" 9 9 2 1", -/* colors */ -". c #000000", -"# c #f8fcf8", -/* pixels */ -".........", -".#######.", -".###.###.", -".###.###.", -".#.....#.", -".###.###.", -".###.###.", -".#######.", -"........." -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/utils.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/utils.ml deleted file mode 100644 index 0b37975c7..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/utils.ml +++ /dev/null @@ -1,353 +0,0 @@ -(* $Id$ *) - -open GObj - -open Common - -external test_modifier : Gdk.Tags.modifier -> int -> bool - = "ml_test_GdkModifier_val" - - -(************* types *************) -(* used in the load_parser and for the selection *) - -(* widget: class * name * property list - where property = name * value_string *) -type yywidget = string * string * (string * string) list -type yywidget_tree = Node of yywidget * yywidget_tree list - - -(*********** some utility functions **************) -let rec list_remove ~f = function - | [] -> [] - | hd :: tl -> if f hd then tl else hd :: (list_remove ~f tl) - - -(* cut the list at the element elt; elt stays in tail; - hd stays in reverse order *) -let cut_list ~item l = - let rec aux h t = match t with - | hd :: tl -> if hd = item then h, t - else aux (hd :: h) tl - | [] -> failwith "cut_list" - in aux [] l - -let list_pos ~item l = - let rec aux pos = function - | [] -> raise Not_found - | hd :: tl -> if hd = item then pos else aux (pos+1) tl - in aux 0 l - -(* moves the pos element up; pos is >= 1; - the first element is numbered 0 *) -let rec list_reorder_up ~pos = function - | hd1 :: hd2 :: tl when pos = 1 -> hd2 :: hd1 :: tl - | hd :: tl when pos > 1 -> hd :: (list_reorder_up ~pos:(pos-1) tl) - | _ -> failwith "list_reorder" - -(* moves the pos element down; pos is < length of l - 1; - the first element is numbered 0 *) -let rec list_reorder_down ~pos = - list_reorder_up ~pos:(pos+1) - - -let rec list_insert ~item l ~pos = - if pos=0 then item :: l - else - match l with - | [] -> failwith "list_insert" - | hd :: tl -> hd :: (list_insert ~item tl ~pos:(pos-1)) - - -let rec change_property_name oldname newname = function - | (n, p) :: tl when oldname = n -> (newname, p) :: tl - | (n, p) :: tl -> (n, p) :: change_property_name oldname newname tl - | [] -> failwith "change_property_name: name not found" - - - -(* contains the list of names of widgets in the current project; - used to test if a name is already used; - a name is added to the list when a tiwrapper is created (in - the initilizer part of tiwrapper, - it is removed when the widget is removed from his parent, - in method remove_me of tiwrapper *) -let name_list = ref ([] : string list) - -let split name = - let l = String.length name in - let i = ref (l-1) in - while !i >= 0 && name.[!i] >= '0' && name.[!i] <= '9' do decr i done; - if !i = l-1 then - name, (-1) - else - (String.sub name ~pos:0 ~len:(!i+1)), - int_of_string (String.sub name ~pos:(!i+1) ~len:(l- !i-1)) - -let test_unique name = not (List.mem name !name_list) - -let make_new_name ?(index=1) base = - let index, name = - if index = -1 then ref 1, ref base - else ref index, ref (base ^ (string_of_int index)) in - while not (test_unique !name) do - incr index; - name := base ^ (string_of_int !index) - done; - !name - -let change_name name = - let base, index = split name in make_new_name base ~index - -let message s = - let w = GWindow.window ~show:true ~modal:true () in - let v = GPack.vbox ~packing:w#add () in - let l = GMisc.label ~text:s ~packing:v#add () in - let b = GButton. button ~label:"OK" ~packing:v#add () in - b#connect#clicked ~callback:w#destroy; - w#connect#destroy ~callback:GMain.Main.quit; - GMain.Main.main () - -let message_name () = message "name already in use\npick a new name" - -(* better: use a spin button *) -let get_a_number s default= - let res = ref default in - let w = GWindow.window ~show:true ~modal:true () in - let v = GPack.vbox ~packing:w#add () in - let l = GMisc.label ~text:s ~packing:v#add () in - let e = GEdit.entry ~text:(string_of_int default) ~packing:v#add () in - let b = GButton. button ~label:"OK" ~packing:v#add () in - b#connect#clicked ~callback:(fun () -> - begin try res := int_of_string e#text with Failure _ -> () end; - w#destroy ()); - w#connect#destroy ~callback:GMain.Main.quit; - GMain.Main.main (); - !res - - -(*************** file selection *****************) - -let get_filename ~callback:set_filename ?(dir="") () = - let res = ref false in - let file_selection = GWindow.file_selection ~modal:true () in - if dir <> "" then file_selection#set_filename dir; - file_selection#show (); - file_selection#ok_button#connect#clicked - ~callback:(fun () -> set_filename file_selection#get_filename; - res := true; - file_selection#destroy ()); - file_selection#cancel_button#connect#clicked - ~callback:file_selection#destroy; - file_selection#connect#destroy ~callback:GMain.Main.quit; - GMain.Main.main (); - !res - -(* returns the directory and the file name (without the extension) *) -let split_filename filename ~ext = - let lext = String.length ext in - let l = String.length filename in - let filename, l = - if (l > lext) && (String.sub filename ~pos:(l - lext) ~len:lext = ext) - then (String.sub filename ~pos:0 ~len:(l-lext)), l-lext - else filename, l in - let i = 1 + (String.rindex filename '/') in - String.sub filename ~pos:0 ~len:i, - String.sub filename ~pos:i ~len:(l-i) - - -(****************** ML signals *****************) -let signal_id = ref 0 - -let next_callback_id () : GtkSignal.id = - decr signal_id; Obj.magic (!signal_id : int) - -class ['a] signal = object - val mutable callbacks : (GtkSignal.id * ('a -> unit)) list = [] - method connect ~callback ~after = - let id = next_callback_id () in - callbacks <- - if after then callbacks @ [id,callback] else (id,callback)::callbacks; - id - method call arg = - List.iter callbacks ~f:(fun (_,f) -> f arg) - method disconnect id = - List.mem_assoc id callbacks && - (callbacks <- List.remove_assoc id callbacks; true) - method reset () = callbacks <- [] -end - -class type disconnector = - object - method disconnect : GtkSignal.id -> bool - method reset : unit -> unit - end - -class has_ml_signals = object - val mutable disconnectors = [] - method private add_signal (sgn : 'a signal) = - disconnectors <- (sgn :> disconnector) :: disconnectors - - method disconnect id = - List.exists disconnectors ~f:(fun d -> d#disconnect id) -end - - -(****************** undo information ********************) - -type undo_action = - | Add of string * yywidget_tree * int - | Remove of string - | Property of prop * string - | Add_window of yywidget_tree - | Remove_window of string - -let undo_info = ref ([] : undo_action list) -let next_undo_info = ref ([] : undo_action list) -let last_action_was_undo = ref false - -let add_undo f = - undo_info := f :: !undo_info; - last_action_was_undo := false - - -(**********************************************************) -let ftrue f = fun x -> f x; true - - -(**********************************************************) - -let toolbar_child_prop kind = - let rt = ref "" and rtt = ref "" and rptt = ref "" and ok = ref false in - let w = GWindow.window ~modal:true () in - let v = GPack.vbox ~packing:w#add () in - let h1 = GPack.hbox ~packing:v#pack () in - let h2 = GPack.hbox ~packing:v#pack () in - let h3 = GPack.hbox ~packing:v#pack () in - let h4 = GPack.hbox ~packing:v#pack () in - let l1 = GMisc.label ~text:"text" ~packing:h1#pack () in - let e1 = GEdit.entry ~packing:h1#pack () in - let l2 = GMisc.label ~text:"tooltip_text" ~packing:h2#pack () in - let e2 = GEdit.entry ~packing:h2#pack () in - let l3 = GMisc.label ~text:"private_text" ~packing:h3#pack () in - let e3 = GEdit.entry ~packing:h3#pack () in - let b1 = GButton.button ~label:"OK" ~packing:h4#pack () in - let b2 = GButton.button ~label:"Cancel" ~packing:h4#pack () in - w#show (); - b1#connect#clicked - ~callback:(fun () -> rt := e1#text; rtt := e2#text; - rptt := e3#text; ok := true; - w#destroy ()); - b2#connect#clicked ~callback:w#destroy; - w#connect#destroy ~callback:GMain.Main.quit; - GMain.Main.main (); - !ok, !rt, !rtt, !rptt - - - -(**********************************************************) - -let get5floats_from_string s = - try - let n1 = String.index s ' ' in - let f1 = float_of_string (String.sub s ~pos:0 ~len:(n1-1)) in - let n2 = String.index_from s (n1+1) ' ' in - let f2 = float_of_string (String.sub s ~pos:(n1+1) ~len:(n2-1)) in - let n3 = String.index_from s (n2+1) ' ' in - let f3 = float_of_string (String.sub s ~pos:(n2+1) ~len:(n3-1)) in - let n4 = String.index_from s (n3+1) ' ' in - let f4 = float_of_string (String.sub s ~pos:(n3+1) ~len:(n4-1)) in - let f5 = float_of_string (String.sub s ~pos:(n4+1) ~len: - ((String.length s) -1)) in - f1, f2, f3, f4, f5 - with _ -> failwith "get5floats_of_string" - - - -(**********************************************************) - -exception Float_of_string -let my_float_of_string s = - let l = String.length s in - if l=0 then raise Float_of_string; - let sign, d = match s.[0] with - | '+' -> 1, 1 - | '-' -> -1, 1 - | _ -> 1, 0 in - let m, p = - let p = - try - String.index s '.' - with Not_found -> l in - if p=d then 0, p - else - try int_of_string (String.sub s ~pos:d ~len:(p-d)), p - with Failure "int_of_string" -> raise Float_of_string - in - if p=l then float_of_int m - else begin - let f = ref 0. and r = ref 0.1 in - for i = p+1 to l-1 do - let k = (int_of_char s.[i]) - 48 in - if k > 9 || k < 0 then raise Float_of_string; - f := !f +. (float_of_int k) *. !r; - r := !r *. 0.1 - done; - !f +. (float_of_int m) - end - - - - -class entry_float obj ~init = let rv = ref init in -object - inherit GEdit.entry obj as entry - method value = - try - let v = my_float_of_string entry#text in - rv := v; - v - with Float_of_string -> - let pop = GWindow.window ~title:"error" ~modal:true () in - let vb = GPack.vbox ~packing:pop#add () in - let l = GMisc.label ~text:"value must be a float" ~packing:vb#pack () in - let b = GButton.button ~label:"OK" ~packing:vb#pack () in - b#connect#clicked ~callback:pop#destroy; - pop#event#connect#delete ~callback:(fun _ -> pop#destroy (); true); - pop#connect#destroy ~callback:GtkMain.Main.quit; - pop#show (); - GtkMain.Main.main (); - entry#set_text (string_of_float !rv); - !rv -end - - -let set_editable ?editable ?(width = -2) ?(height = -2) w = - Gaux.may editable ~f:(GtkEdit.Editable.set_editable w); - if width <> -2 || height <> -2 then GtkBase.Widget.set_usize w ~width ~height - - -let entry_float ~init ?max_length ?visibility ?editable - ?width ?height ?packing ?show () = - let w = GtkEdit.Entry.create ?max_length () in - GtkEdit.Entry.set w ~text:(string_of_float init) ?visibility; - set_editable w ?editable ?width ?height; - pack_return (new entry_float w ~init) ~packing ~show - - -(*************************************************************) - - -let split_string s ~sep = - let l = String.length s in - let r = ref [] in - let j = ref 0 in - for i = 0 to l-1 do - if String.unsafe_get s i = sep then begin - r := (String.sub s ~pos:!j ~len:(i - !j)) :: !r; - j := i + 1 - end - done; - List.rev ((String.sub s ~pos:!j ~len:(l - !j)) :: !r) - - diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/vbox.xpm b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/vbox.xpm deleted file mode 100644 index 1c557b021..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/vbox.xpm +++ /dev/null @@ -1,31 +0,0 @@ -/* XPM */ -static char *vbox_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 4 1", -" c Gray0", -". c #7b7b7b", -"X c #d6d6d6", -"o c Gray100", -/* pixels */ -"oooooooooooooooooooo ", -"oXXXXXXXXXXXXXXXXXX. ", -"oXXXXXXXXXXXXXXXXXX. ", -"oXXXXXXXXXXXXXXXXXX. ", -"oXXXXXXXXXXXXXXXXXX. ", -"o................... ", -" ", -"oooooooooooooooooooo ", -"oXXXXXXXXXXXXXXXXXX. ", -"oXXXXXXXXXXXXXXXXXX. ", -"oXXXXXXXXXXXXXXXXXX. ", -"oXXXXXXXXXXXXXXXXXX. ", -"o................... ", -" ", -"oooooooooooooooooooo ", -"oXXXXXXXXXXXXXXXXXX. ", -"oXXXXXXXXXXXXXXXXXX. ", -"oXXXXXXXXXXXXXXXXXX. ", -"oXXXXXXXXXXXXXXXXXX. ", -"o................... ", -" " -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/vbuttonbox.xpm b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/vbuttonbox.xpm deleted file mode 100644 index 0c2bc9598..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/vbuttonbox.xpm +++ /dev/null @@ -1,33 +0,0 @@ -/* XPM */ -static char *vbuttonbox_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 6 1", -" c Gray0", -". c #7b7b7b", -"X c #d6d6d6", -"o c #b3cece", -"O c Gray100", -"+ c None", -/* pixels */ -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"++++++++OOOOO +++++++", -"++++++++OXXX. +++++++", -"++++++++OXXX. +++++++", -"++++++++O.... +++++++", -"++++++++ +++++++", -"+++++++++++++++++++++", -"++++++++OOOOO +++++++", -"++++++++OXXX. +++++++", -"++++++++OXXX. +++++++", -"++++++++O.... +++++++", -"++++++++ +++++++", -"+++++++++++++++++++++", -"++++++++OOOOO +++++++", -"++++++++OXXX. +++++++", -"++++++++OXXX. +++++++", -"++++++++O.... +++++++", -"++++++++ +++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++" -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/viewport.xpm b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/viewport.xpm deleted file mode 100644 index 71e5e80cf..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/viewport.xpm +++ /dev/null @@ -1,34 +0,0 @@ -/* XPM */ -static char *viewport_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 7 1", -" c Gray0", -". c #7b7b7b", -"X c #d6d6d6", -"o c #b3cece", -"O c Gray87", -"+ c Gray100", -"@ c None", -/* pixels */ -"@@@@@@@@@@@@@@@@@@@@@", -"@...................@", -"@. +O@", -"@. XXXXXXXXXXXXXXX+O@", -"@. XXXXXXXXXXXXXXX+O@", -"@. XXXXXXXXXXXXXXX+O@", -"@. XXXXXXXXXXXXXXX+O@", -"@. XXXXXXXXXXXXXXX+O@", -"@. XXXXXXXXXXXXXXX+O@", -"@. XXXXXXXXXXXXXXX+O@", -"@. XXXXXXXXXXXXXXX+O@", -"@. XXXXXXXXXXXXXXX+O@", -"@. XXXXXXXXXXXXXXX+O@", -"@. XXXXXXXXXXXXXXX+O@", -"@. XXXXXXXXXXXXXXX+O@", -"@. XXXXXXXXXXXXXXX+O@", -"@. XXXXXXXXXXXXXXX+O@", -"@. XXXXXXXXXXXXXXX+O@", -"@.+++++++++++++++++O@", -"@.OOOOOOOOOOOOOOOOOO@", -"@@@@@@@@@@@@@@@@@@@@@" -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/vseparator.xpm b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/vseparator.xpm deleted file mode 100644 index 3455f74d9..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/vseparator.xpm +++ /dev/null @@ -1,31 +0,0 @@ -/* XPM */ -static char *vseparator_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 4 1", -" c #7b7b7b", -". c #b3cece", -"X c Gray100", -"o c None", -/* pixels */ -"ooooooooooooooooooooo", -"oooooooooo Xooooooooo", -"oooooooooo Xooooooooo", -"oooooooooo Xooooooooo", -"oooooooooo Xooooooooo", -"oooooooooo Xooooooooo", -"oooooooooo Xooooooooo", -"oooooooooo Xooooooooo", -"oooooooooo Xooooooooo", -"oooooooooo Xooooooooo", -"oooooooooo Xooooooooo", -"oooooooooo Xooooooooo", -"oooooooooo Xooooooooo", -"oooooooooo Xooooooooo", -"oooooooooo Xooooooooo", -"oooooooooo Xooooooooo", -"oooooooooo Xooooooooo", -"oooooooooo Xooooooooo", -"oooooooooo Xooooooooo", -"oooooooooo Xooooooooo", -"ooooooooooooooooooooo" -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/window.xpm b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/window.xpm deleted file mode 100644 index 8407e2836..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/radtest/window.xpm +++ /dev/null @@ -1,38 +0,0 @@ -/* XPM */ -static char *window_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 11 1", -" c Gray0", -". c #00007b", -"X c #7b7b7b", -"o c Green", -"O c Cyan", -"+ c Red", -"@ c Yellow", -"# c #d6d6d6", -"$ c #b3cece", -"% c Gray100", -"& c None", -/* pixels */ -"&&&&&&&&&&&&&&&&&&&&&", -"&&&&&&&&&&&&&&&&&&&&&", -"&&&&&&&&&&&&&&&&&&&&&", -"XXXXXXXXXXXXXXXXXXXX&", -"X.+@...............X ", -"X.Oo.%%%.%%.....# #X ", -"XXXXXXXXXXXXXXXXXXXX ", -"X#%%%%%%%%%%%%%%%%%X ", -"X#%%%%%%%%%%%%%%%%%X ", -"X#%%%%%%%%%%%%%%%%%X ", -"X#%%%%%%%%%%%%%%%%%X ", -"X#%%%%%%%%%%%%%%%%%X ", -"X#%%%%%%%%%%%%%%%%%X ", -"X#%%%%%%%%%%%%%%%%%X ", -"X#%%%%%%%%%%%%%%%%%X ", -"X#%%%%%%%%%%%%%%%%%X ", -"X#%%%%%%%%%%%%%%%%%X ", -"XXXXXXXXXXXXXXXXXXXX ", -"& ", -"&&&&&&&&&&&&&&&&&&&&&", -"&&&&&&&&&&&&&&&&&&&&&" -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/unison/.cvsignore b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/unison/.cvsignore deleted file mode 100644 index 31706abd2..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/unison/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -unison-* diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/unison/README b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/unison/README deleted file mode 100644 index 73bcc2511..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/unison/README +++ /dev/null @@ -1,19 +0,0 @@ - A GUI for Unison - -Here is a lablGTK port of Unison's GUI. -Or rather was, since this is now the standard GUI for unison. - -Unison is a file synchronization software developped by Benjamin -Pierce, Trevor Jim, and others. - -As of version 2.3.12, unison is based on LablGTK 1.00. -To use it with the current version, you must: - * get unison-2.3.12/src.tar.gz from http://www.cis.upenn.edu/~bcpierce/unison/ - * untar it in this directory - * copy or make links for uigtk.ml here inside unison-2.3.12 - ln -fs ../uigtk.ml . - * make and follow instructions in INSTALL.txt - -Jacques Garrigue - -$Id$ diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/unison/uigtk.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/unison/uigtk.ml deleted file mode 100644 index 6efacd630..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/applications/unison/uigtk.ml +++ /dev/null @@ -1,1434 +0,0 @@ -(* $Id$ *) - -open Util -open Os -open Common -open Uicommon -open Printf -open Trace - -(**********************************************************************) -(* GRAPHICAL INTERFACE *) -(**********************************************************************) - -module Private : Uicommon.UI = struct - -open GMain -open GdkKeysyms - -let debugprogress = Trace.debug "progress" - -(**********************************************************************) -(* UI preferences *) -(**********************************************************************) - -let fontMonospaceMedium = - if Sys.os_type = "Win32" then - lazy (Gdk.Font.load "-*-Courier New-Medium-R-Normal--*-110-*-*-*-*-*-*") - else - lazy (Gdk.Font.load "-*-Clean-Medium-R-Normal--*-130-*-*-*-*-*-*") -let fontMonospaceBold = - if Sys.os_type = "Win32" then - lazy (Gdk.Font.load "-*-Courier New-Bold-R-Normal--*-110-*-*-*-*-*-*") - else - lazy (Gdk.Font.load "-*-Courier-Bold-R-Normal--*-120-*-*-*-*-*-*") - -(**********************************************************************) -(* UI state variables *) -(**********************************************************************) - -type stateItem = { ri : reconItem; - mutable bytesTransferred : int; - mutable whatHappened : unit confirmation option } -let theState = ref [||] - -let current = ref None - -let currentWindow = ref None -let grabFocus t = - match !currentWindow with - Some w -> t#set_transient_for w; - w#misc#set_sensitive false - | None -> () -let releaseFocus () = - begin match !currentWindow with - Some w -> w#misc#set_sensitive true - | None -> () - end - -(**********************************************************************) -(* Lock management *) -(**********************************************************************) - -let busy = ref false - -let getLock f = - if !busy then - Trace.message "Synchronizer is busy, please wait..\n" - else begin - busy := true; f (); busy := false - end - -(**********************************************************************) -(* Some widgets *) -(**********************************************************************) - -class scrolled_text ?editable ?word_wrap ?width ?height ?packing ?show - () = - let sw = - GBin.scrolled_window ?width ?height ?packing ~show:false - ~hpolicy:`NEVER ~vpolicy:`AUTOMATIC () - in - let text = GEdit.text ?editable ?word_wrap ~packing:sw#add () in - object - inherit GObj.widget_full sw#as_widget - method text = text - method insert ?(font=fontMonospaceMedium) s = - text#freeze (); - text#delete_text ~start:0 ~stop:text#length; - text#insert ~font:(Lazy.force font) s; - text#thaw () - method show () = sw#misc#show () - initializer - if show <> Some false then sw#misc#show () - end - -let gtk_sync () = while Glib.Main.iteration false do () done - -(**********************************************************************) -(* YES OR NO FUNCTION *) -(**********************************************************************) -(* val yesOrNo : string -> string -> (unit -> unit) -> (unit -> unit) *) -(* -> unit *) -(* Displays a window with two buttons : YES and NO *) -(* yesOrNo title message yesFunction noFunction open the title *) -(* window in which is displayed message. yesFunction and noFunctions *) -(* are the functions associated two the two buttons *) -(**********************************************************************) -let yesOrNo ~title ~message ~yes:yesFunction ~no:noFunction = - let t = GWindow.dialog ~title ~wm_name:title ~modal:true ~position:`CENTER () in - grabFocus t; - let theLabel = GMisc.label ~text:message - ~packing:(t#vbox#pack ~padding:4) () in - let yes = GButton.button ~label:"Yes" ~packing:t#action_area#add () - and no = GButton.button ~label:"No" ~packing:t#action_area#add () in - no#grab_default (); - ignore - (yes#connect#clicked ~callback:(fun () -> t#destroy (); yesFunction ())); - ignore - (no#connect#clicked ~callback:(fun () -> t#destroy (); noFunction ())); - t#show (); - ignore (t#connect#destroy ~callback:Main.quit); - Main.main (); - releaseFocus () - -(**********************************************************************) -(* SAFE EXIT FUNCTION *) -(**********************************************************************) - -(* Avoid recursive invocations of the function below - (a window receives delete events even when it is not sensitive) *) -let inExit = ref false - -let safeExit () = - if not !inExit then begin - inExit := true; - if not !busy then exit 0 else - yesOrNo ~title:"Premature exit" - ~message:"Unison is working, exit anyway ?" - ~yes:(fun () -> exit 0) ~no:(fun () -> ()); - inExit := false - end - -(**********************************************************************) -(* okBox: Display a message in a window and wait for the user *) -(* to hit the "OK" button. *) -(**********************************************************************) -let okBox ~title ~message = - let t = GWindow.dialog ~title ~wm_name:title ~modal:true ~position:`CENTER () in - grabFocus t; - let theLabel = GMisc.label ~text:message - ~packing:(t#vbox#pack ~padding:4) () in - let ok = GButton.button ~label:"OK" ~packing:t#action_area#add () in - ok#grab_default (); - ignore (ok#connect#clicked ~callback:(fun () -> t#destroy())); - t#show (); - (* Do nothing until user destroys window *) - ignore (t#connect#destroy ~callback:Main.quit); - Main.main (); - releaseFocus () - -(**********************************************************************) -(* warnBox: Display a warning message in a window and wait for the *) -(* user to hit "OK" or "Exit". *) -(**********************************************************************) -let warnBox ~title ~message = - inExit := true; - let t = GWindow.dialog ~title ~wm_name:title ~modal:true ~position:`CENTER () in - grabFocus t; - let theLabel = - GMisc.label ~text:message - ~packing:(t#vbox#pack ~padding:4) () in - let ok = GButton.button ~label:"OK" ~packing:t#action_area#add () in - ok#grab_default (); - ignore (ok#connect#clicked ~callback:(fun () -> t#destroy())); - let exi = GButton.button ~label:"Exit" ~packing:t#action_area#add () in - ignore (exi#connect#clicked ~callback:(fun () -> exit 0)); - t#show (); - (* Do nothing until user destroys window *) - ignore (t#connect#destroy ~callback:Main.quit); - Main.main (); - releaseFocus (); - inExit := false - -(**********************************************************************) -(* Standard file dialog *) -(**********************************************************************) -let file_dialog ~title ~callback ?filename () = - let sel = GWindow.file_selection ~title ~modal:true ?filename () in - grabFocus sel; - ignore (sel#cancel_button#connect#clicked ~callback:sel#destroy); - ignore (sel#ok_button#connect#clicked ~callback: - (fun () -> - let name = sel#get_filename in - sel#destroy (); - callback name)); - sel#show (); - Main.main (); - releaseFocus () - -(**********************************************************************) -(* The root selection dialog *) -(**********************************************************************) -let rootSelect cont = - let t = GWindow.dialog ~title:"Root selection" ~wm_name:"Root selection" - ~modal:true ~allow_grow:true () in - t#misc#grab_focus (); - - let makeGetRoot title = - let fr = - GBin.frame ~label:title ~border_width:2 ~packing:(t#vbox#add) () in - - let vb = GPack.vbox ~border_width:4 ~packing:fr#add () in - - let f = GPack.vbox ~packing:(vb#add) () in - let f0 = GPack.hbox ~spacing:4 ~packing:f#add () in - ignore (GMisc.label ~text:"Host:" ~packing:f0#pack ()); - let localB = GButton.radio_button ~packing:f0#pack - ~label:"Local" () in - let remoteB = GButton.radio_button ~group:localB#group - ~packing:f0#pack ~label:"Remote" () in - let hostE = GEdit.entry ~packing:f0#add () in - let f1 = GPack.hbox ~spacing:4 ~packing:f#add () in - ignore (GMisc.label ~text:"File:" ~packing:f1#pack ()); - let fileE = GEdit.entry ~packing:f1#add () in - let browseCommand() = - file_dialog ~title:"Select a local file" - ~callback:(fun file -> fileE#set_text file) ~filename:fileE#text () - in - let b = GButton.button ~label:"Browse" - ~packing:f1#pack () in - ignore (b#connect#clicked ~callback:browseCommand); - let varLocalRemote = ref (`Local : [`Local|`Remote]) in - let localState() = - varLocalRemote := `Local; - hostE#misc#set_sensitive false; - b#misc#set_sensitive true - in - let remoteState() = - varLocalRemote := `Remote; - hostE#misc#set_sensitive true; - b#misc#set_sensitive false - in - ignore (localB#connect#clicked ~callback:localState); - ignore (remoteB#connect#clicked ~callback:remoteState); - localState(); - let getRoot() = - let filePart = fileE#text in - let remoteHost = hostE#text in - (* FIX: should do sanity checking here *) - match !varLocalRemote with - `Local -> filePart - | `Remote -> "//"^remoteHost^"/"^filePart in - getRoot - in - - let getRoot1 = makeGetRoot "Root 1" in - let getRoot2 = makeGetRoot "Root 2" in - - let f3 = t#action_area in - let okCommand() = - let root1 = getRoot1() in - let root2 = getRoot2() in - Prefs.setPref Uicommon.roots Prefs.TempSetting [root1;root2]; - t#destroy (); - cont () - in - let okButton = GButton.button ~label:"OK" ~packing:f3#add () in - ignore (okButton#connect#clicked ~callback:okCommand); - okButton#grab_default (); - let cancelButton = GButton.button ~label:"Cancel" ~packing:f3#add () in - ignore (cancelButton#connect#clicked ~callback:safeExit); - - (* The profile editing dialog has been installed into the Gtk - main interaction loop; wait until it completes. *) - t#show (); - ignore (t#connect#destroy ~callback:Main.quit); - Main.main () - -(**********************************************************************) -(* The root selection dialog *) -(**********************************************************************) -let editProfile prof = - (* FIX: - Scan the profile (if it is defined) - Extract the roots - Modifications - Save with new roots *) - let t = GWindow.dialog ~title:"Edit profile" ~wm_name:"Edit profile" - ~modal:true ~allow_grow:true () in - t#misc#grab_focus (); - - let vb = GPack.vbox ~border_width:4 ~packing:t#vbox#add () in - - let makeGetRoot() = - let f = GPack.vbox ~packing:(vb#pack ~expand:true ~padding:4) () in - let f0 = GPack.hbox ~spacing:4 ~packing:f#add () in - ignore (GMisc.label ~text:"Host:" ~packing:f0#pack ()); - let localB = GButton.radio_button ~packing:f0#pack ~label:"Local" () in - let remoteB = GButton.radio_button ~group:localB#group - ~packing:f0#pack ~label:"Remote" () in - let hostE = GEdit.entry ~packing:f0#add () in - let f1 = GPack.hbox ~spacing:4 ~packing:f#add () in - ignore (GMisc.label ~text:"File:" ~packing:f1#pack ()); - let fileE = GEdit.entry ~packing:f1#add () in - let browseCommand() = - file_dialog ~title:"Select a local file" - ~callback:(fun file -> fileE#set_text file) () - in - let b = GButton.button ~label:"Browse" ~packing:f1#pack () in - ignore (b#connect#clicked ~callback:browseCommand); - let varLocalRemote = ref (`Local : [`Local|`Remote]) in - let localState() = - varLocalRemote := `Local; - hostE#set_editable false; - b#misc#set_state `NORMAL - in - let remoteState() = - varLocalRemote := `Remote; - hostE#set_editable true; - b#misc#set_state `INSENSITIVE - in - ignore (localB#connect#clicked ~callback:localState); - ignore (remoteB#connect#clicked ~callback:remoteState); - localState(); - let getRoot() = - let filePart = fileE#text in - let remoteHost = hostE#text in - (* FIX: should do sanity checking here *) - match !varLocalRemote with - `Local -> filePart - | `Remote -> "//"^remoteHost^"/"^filePart in - getRoot - in - - - ignore (GMisc.label ~text:"Root 1:" ~xalign:0. - ~packing:(vb#pack ~expand:true ~padding:4) ()); - let getRoot1 = makeGetRoot() in - - ignore (GMisc.label ~text:"Root 2:" ~xalign:0. - ~packing:(vb#pack ~expand:true ~padding:4) ()); - let getRoot2 = makeGetRoot() in - - let f3 = t#action_area in - let okCommand() = - let root1 = getRoot1() in - let root2 = getRoot2() in - Prefs.setPref Uicommon.roots Prefs.PermanentSetting [root1;root2]; - Globals.savePrefs(); - t#destroy () in - let okButton = GButton.button ~label:"OK" ~packing:f3#add () in - ignore (okButton#connect#clicked ~callback:okCommand); - let cancelCommand() = - t#destroy () - in - let cancelButton = GButton.button ~label:"Cancel" ~packing:f3#add () in - ignore (cancelButton#connect#clicked ~callback:cancelCommand); - - (* The profile editing dialog has been installed into the Gtk - main interaction loop; wait until it completes. *) - t#show (); - ignore (t#connect#destroy ~callback:Main.quit); - Main.main () - -(**********************************************************************) -(* Documentation window *) -(**********************************************************************) -let documentation sect = - let title = "Documentation" in - let t = GWindow.dialog ~title ~wm_name:title () in - let t_dismiss = - GButton.button ~label:"dismiss" ~packing:t#action_area#add () in - t_dismiss#grab_default (); - let dismiss () = t#destroy () in - ignore (t_dismiss#connect#clicked ~callback:dismiss); - ignore (t#event#connect#delete ~callback:(fun _ -> dismiss (); true)); - - let (name, docstr) = List.assoc sect Strings.docs in - let hb = GPack.hbox ~packing:(t#vbox#pack ~expand:false ~padding:2) () in - let optionmenu = - GMenu.option_menu ~packing:(hb#pack ~fill:false) () in - - let charW = Gdk.Font.char_width (Lazy.force fontMonospaceMedium) 'M' in - let charH = 16 in - let t_text = - new scrolled_text ~editable:false - ~width:(charW * 80) ~height:(charH * 20) ~packing:t#vbox#add () - in - t_text#insert docstr; - - let sect_idx = ref 0 in - let idx = ref 0 in - let menu = GMenu.menu () in - let addDocSection (shortname, (name, docstr)) = - if shortname <> "" && name <> "" then begin - if shortname = sect then sect_idx := !idx; - incr idx; - let item = GMenu.menu_item ~label:name ~packing:menu#append () in - ignore - (item#connect#activate ~callback:(fun () -> t_text#insert docstr)) - end - in - Safelist.iter addDocSection Strings.docs; - optionmenu#set_menu menu; - optionmenu#set_history !sect_idx; - - t#show () - -(**********************************************************************) -(* The profile selection dialog *) -(**********************************************************************) -let profileSelect cont = -(* FIX: - - Choix du profil par defaut -*) - let profilesAndRoots = - ref - (Safelist.map - (fun f -> - let filename = fspath2string (Os.fileInUnisonDir f) in - let roots = - Safelist.map snd - (Safelist.filter (fun (n, v) -> n = "root") - (Prefs.scanPreferencesFile filename)) - in - (Filename.chop_suffix f ".prf", roots)) - (Files.ls (fspath2string Os.synchronizerFspath) "*.prf")) in - - (* The selected profile *) - let selection = ref None in - - (* Build the dialog *) - let t = GWindow.dialog ~title:"Profiles" ~wm_name:"Profiles" () in - - let okCommand() = - match !selection with - Some profile -> - Globals.prefsFileName := profile ^ ".prf"; - currentWindow := None; - t#destroy (); - cont () - | _ -> - () - in - let okButton = GButton.button ~label:"OK" ~packing:t#action_area#add () in - ignore (okButton#connect#clicked ~callback:okCommand); - okButton#misc#set_sensitive false; - okButton#grab_default (); - let cancelCommand() = t#destroy (); Main.quit () in - let cancelButton = GButton.button ~label:"Cancel" - ~packing:t#action_area#add () in - ignore (cancelButton#connect#clicked ~callback:cancelCommand); - cancelButton#misc#set_can_default true; - - let vb = t#vbox in - - ignore (GMisc.label - ~text:"Select an existing profile or create a new one" - ~xpad:2 ~ypad:2 ~packing:vb#pack ()); - - let sw = - GBin.scrolled_window ~packing:vb#add ~height:100 - ~hpolicy:`AUTOMATIC ~vpolicy:`AUTOMATIC () - in - let lst = GList.clist ~selection_mode:`BROWSE ~packing:(sw#add) () in - let fillLst default = - lst#freeze (); - lst#clear (); - let selRow = ref 0 in - let i = ref 0 in (* FIX: Work around a lablgtk bug *) - Safelist.iter - (fun (profile, roots) -> - ignore (lst#append [profile]); - if profile = default then selRow := !i; - lst#set_row_data !i (profile, roots); - incr i) - (List.sort (fun (p, _) (p', _) -> compare p p') !profilesAndRoots); - let r = lst#rows in - let p = if r < 2 then 0. else float !selRow /. float (r - 1) in - lst#scroll_vertical `JUMP p; - lst#thaw () - in - let tbl = - GPack.table ~rows:2 ~columns:2 ~packing:vb#pack () - in - tbl#misc#set_sensitive false; - ignore (GMisc.label ~text:"Root 1:" ~xpad:2 - ~packing:(tbl#attach ~left:0 ~top:0 ~expand:`NONE) ()); - ignore (GMisc.label ~text:"Root 2:" ~xpad:2 - ~packing:(tbl#attach ~left:0 ~top:1 ~expand:`NONE) ()); - let root1 = - GEdit.entry ~packing:(tbl#attach ~left:1 ~top:0) ~editable:false () in - let root2 = - GEdit.entry ~packing:(tbl#attach ~left:1 ~top:1) ~editable:false () in - root1#misc#set_can_focus false; - root2#misc#set_can_focus false; - let hb = - GPack.hbox ~border_width:2 ~spacing:2 ~packing:(vb#pack ~expand:false) () - in - let nw = - GButton.button ~label:"Create new profile" - ~packing:hb#pack () in - ignore (nw#connect#clicked ~callback:(fun () -> - let t = - GWindow.dialog ~title:"New profile" ~wm_name:"New profile" ~modal:true () - in - let vb = GPack.vbox ~border_width:4 ~packing:t#vbox#add () in - let f = GPack.vbox ~packing:(vb#pack ~expand:true ~padding:4) () in - let f0 = GPack.hbox ~spacing:4 ~packing:f#add () in - ignore (GMisc.label ~text:"Profile name:" - ~packing:f0#pack ()); - let prof = GEdit.entry ~packing:f0#add () in - prof#misc#grab_focus (); - - let exit () = t#destroy (); Main.quit () in - ignore (t#event#connect#delete ~callback:(fun _ -> exit (); true)); - - let f3 = t#action_area in - let okCommand () = - let profile = prof#text in - if profile <> "" then - let file = profile ^ ".prf" in - let fspath = Os.fileInUnisonDir file in - let filename = fspath2string fspath in - if Sys.file_exists filename then - okBox (myName ^ " error") - ("Profile \"" - ^ profile - ^ "\" already exists!\nPlease select another name.") - else - (* Make an empty file *) - let ch = - open_out_gen - [Open_wronly; Open_creat; Open_trunc] 0o600 filename in - close_out ch; - profilesAndRoots := (profile, [])::!profilesAndRoots; - fillLst profile; - exit () - in - let okButton = GButton.button ~label:"OK" ~packing:f3#add () in - ignore (okButton#connect#clicked ~callback:okCommand); - okButton#grab_default (); - let cancelButton = GButton.button ~label:"Cancel" ~packing:f3#add () in - ignore (cancelButton#connect#clicked ~callback:exit); - - t#show (); - grabFocus t; - Main.main (); - releaseFocus ())); - let ed = - GButton.button ~label:"Edit" (*~packing:(hb#pack ~expand:false)*) () in - let sd = - GButton.button ~label:"Set default" (*~packing:(hb#pack ~expand:false)*) () - in - let hlp = - GButton.button ~label:"Help" - ~packing:(hb#pack ~expand:false ~from:`END) () in - ignore (hlp#connect#clicked ~callback:(fun () -> documentation "tutorial")); - - ignore (lst#connect#unselect_row ~callback:(fun _ _ _ -> - root1#set_text ""; root2#set_text ""; - selection := None; - tbl#misc#set_sensitive false; - okButton#misc#set_sensitive false; - ed#misc#set_sensitive false; - sd#misc#set_sensitive false)); - ignore (lst#connect#select_row ~callback:(fun i _ _ -> - (* Inserting the first row trigger the signal, even before the row - data is set. So, we need to catch the corresponding exception *) - try - let (profile, roots) = lst#get_row_data i in - selection := Some profile; - begin match roots with - [r1; r2] -> root1#set_text r1; root2#set_text r2; - tbl#misc#set_sensitive true - | _ -> root1#set_text ""; root2#set_text ""; - tbl#misc#set_sensitive false - end; - okButton#misc#set_sensitive true; - ed#misc#set_sensitive true; - sd#misc#set_sensitive true - with Gpointer.Null -> ())); - ignore (lst#event#connect#button_press ~callback:(fun ev -> - match GdkEvent.get_type ev with - `TWO_BUTTON_PRESS -> - okCommand (); - true - | _ -> - false)); - fillLst "default"; - lst#misc#grab_focus (); - currentWindow := Some (t :> GWindow.window); - ignore (t#event#connect#delete ~callback:(fun _ -> Main.quit (); true)); - t#show () - -(**********************************************************************) -(* Function to display a message in a new window *) -(**********************************************************************) -let messageBox ~title ?(label = "Dismiss") ?(action = fun t -> t#destroy) - ?(modal = false) message = - let t = GWindow.dialog ~title ~wm_name:title ~modal ~position:`CENTER () in - let t_dismiss = GButton.button ~label ~packing:t#action_area#add () in - t_dismiss#grab_default (); - ignore (t_dismiss#connect#clicked ~callback:(action t)); - let charW = Gdk.Font.char_width (Lazy.force fontMonospaceMedium) 'M' in - let charH = 16 in - let t_text = - new scrolled_text ~editable:false - ~width:(charW * 80) ~height:(charH * 20) ~packing:t#vbox#add () - in - t_text#insert message; - ignore (t#event#connect#delete ~callback:(fun _ -> action t (); true)); - t#show (); - if modal then begin - grabFocus t; - Main.main (); - releaseFocus () - end - -(**********************************************************************) -(* Fatal error handling *) -(**********************************************************************) -let fatalError = - messageBox ~title:"Fatal Error" ~label:"Exit" ~modal:true - ~action:(fun t () -> exit 1) - - -(**********************************************************************) -(* Toplevel window *) -(**********************************************************************) -let createToplevelWindow () = - let toplevelWindow = GWindow.window ~wm_name:myName () in - let toplevelVBox = GPack.vbox ~packing:toplevelWindow#add () in - - (**********************************************************************) - (* Groups of same sensitivity *) - (**********************************************************************) - let grAction = ref [] in - let grDiff = ref [] in - let grProceed = ref [] in - let grRestart = ref [] in - let grAdd gr w = gr := w#misc::!gr in - let grSet gr st = List.iter (fun x -> x#set_sensitive st) !gr in - - (**********************************************************************) - (* Create the menu bar *) - (**********************************************************************) - let menuBar = - GMenu.menu_bar ~border_width:2 ~packing:toplevelVBox#pack () - in - let menus = new GMenu.factory ~accel_modi:[] menuBar in - let accel_group = menus#accel_group in - toplevelWindow#add_accel_group accel_group; - let add_submenu ?(modi=[]) ~label () = - new GMenu.factory ~accel_group ~accel_modi:modi (menus#add_submenu label) - in - - (**********************************************************************) - (* Create the menus *) - (**********************************************************************) - let fileMenu = add_submenu ~label:"Synchronization" () - and actionsMenu = add_submenu ~label:"Actions" () - and ignoreMenu = add_submenu ~modi:[`SHIFT] ~label:"Ignore" () - and helpMenu = add_submenu ~label:"Help" () in - - (**********************************************************************) - (* Create the main window *) - (**********************************************************************) - let mainWindow = - let sw = - GBin.scrolled_window ~packing:(toplevelVBox#add) - ~height:(Prefs.readPref mainWindowHeight * 12) - ~hpolicy:`AUTOMATIC ~vpolicy:`AUTOMATIC () - in - GList.clist - ~columns:5 ~titles_show:true ~selection_mode:`BROWSE ~packing:sw#add () - in - mainWindow#misc#grab_focus (); - (* FIX: roots2string should return a pair *) - let s = roots2string () in - Array.iteri - (fun i data -> - mainWindow#set_column - ~title_active:false ~auto_resize:true ~title:data i) - [| " " ^ String.sub s ~pos:0 ~len:12 ^ " "; " Action "; - " " ^ String.sub s ~pos:15 ~len:12 ^ " "; " Status "; " Path" |]; - let status_width = - let font = mainWindow#misc#style#font in - 4 + max (Gdk.Font.string_width font "working") - (Gdk.Font.string_width font "skipped") - in - mainWindow#set_column ~justification:`CENTER 1; - mainWindow#set_column - ~justification:`CENTER ~auto_resize:false ~width:status_width 3; - - (**********************************************************************) - (* Create the details window *) - (**********************************************************************) - - let charW = Gdk.Font.char_width (Lazy.force fontMonospaceMedium) 'M' in - let charH = if Sys.os_type = "Win32" then 20 else 16 in - - let detailsWindow = - let sw = - GBin.scrolled_window ~packing:(toplevelVBox#pack ~expand:false) - ~hpolicy:`AUTOMATIC ~vpolicy:`AUTOMATIC () - in - GEdit.text ~editable:false ~height:(3 * charH) ~width: (96 * charW) - ~line_wrap:false ~packing:sw#add () in - detailsWindow#misc#set_can_focus false; - let style = detailsWindow#misc#style#copy in - style#set_font (Lazy.force fontMonospaceMedium); - detailsWindow#misc#set_style style; - let updateButtons () = - match !current with - None -> - grSet grAction false; - grSet grDiff false - | Some row -> - let (activate1, activate2) = - match !theState.(row).whatHappened, !theState.(row).ri.replicas with - Some _, _ -> (false, false) - | None, Different((FILE,_, _),(FILE,_, _),_) -> (true, true) - | None, _ -> (true, false) - in - grSet grAction activate1; - grSet grDiff activate2 - in - - let makeRowVisible row = - if mainWindow#row_is_visible row <> `FULL then begin - let adj = mainWindow#vadjustment in - let current = adj#value - and upper = adj#upper and lower = adj#lower in - let v = - float row /. float (mainWindow#rows + 1) *. (upper-.lower) +. lower - in - adj#set_value (min v (upper -. adj#page_size)) - end - in - - let updateDetails () = - detailsWindow#freeze (); - detailsWindow#delete_text ~start:0 ~stop:detailsWindow#length; - begin match !current with - None -> - () - | Some row -> - makeRowVisible row; - let details = - match !theState.(row).whatHappened with - None -> details2string !theState.(row).ri " " - | Some(Succeeded(_)) -> details2string !theState.(row).ri " " - | Some(Failed(s)) -> s in - detailsWindow#insert (path2string !theState.(row).ri.path); - detailsWindow#insert "\n"; - detailsWindow#insert details - end; - (* Display text *) - detailsWindow#thaw (); - updateButtons () - in - - (**********************************************************************) - (* CREATE THE STATUS WINDOW *) - (**********************************************************************) - - let statusWindow = - GMisc.statusbar ~packing:toplevelVBox#pack () in - let statusContext = statusWindow#new_context ~name:"status" in - ignore (statusContext#push ""); - - let displayStatus s1 s2 = - Threads.do_on_main_thread (fun () -> - (* Concatenate the new message *) - let m = - s1 ^ (String.make (max 2 (30 - String.length s1)) ' ') ^ s2 in - statusContext#pop (); - ignore (statusContext#push m); - (* Force message to be displayed immediately *) - gtk_sync ()) - in - - (* Tell the Trace module about the status printer *) - Trace.statusPrinter := Some displayStatus; - - (**********************************************************************) - (* FUNCTIONS USED TO PRINT IN THE MAIN WINDOW *) - (**********************************************************************) - - let select i = - let r = mainWindow#rows in - let p = if r < 2 then 0. else (float i +. 0.5) /. float (r - 1) in - mainWindow#scroll_vertical `JUMP (min p 1.) - in - - ignore (mainWindow#connect#unselect_row ~callback: - (fun ~row ~column ~event -> current := None; updateDetails ())); - ignore (mainWindow#connect#select_row ~callback: - (fun ~row ~column ~event -> current := Some row; updateDetails ())); - - let nextInteresting () = - let l = Array.length !theState in - let start = match !current with Some i -> i + 1 | None -> 0 in - let rec loop i = - if i < l then - match !theState.(i).ri.replicas with - Different (_, _, dir) - when not (Prefs.readPref auto) || !dir = Conflict -> - select i - | _ -> - loop (i + 1) - in - loop start - in - let selectSomethingIfPossible () = - if !current=None then nextInteresting () - in - - let columnsOf i = - let oldPath = if i = 0 then emptypath else !theState.(i-1).ri.path in - let status = - match !theState.(i).whatHappened with - None -> " " - | Some conf -> - match !theState.(i).ri.replicas with - Different(_,_,{contents=Conflict}) | Problem _ -> - " " - | _ -> - match conf with - Succeeded _ -> "done " - | Failed _ -> "failed" - in - let s = reconItem2string oldPath !theState.(i).ri status in - (* FIX: This is ugly *) - (String.sub s ~pos:0 ~len:8, - String.sub s ~pos:9 ~len:5, - String.sub s ~pos:15 ~len:8, - String.sub s ~pos:25 ~len:6, - String.sub s ~pos:32 ~len:(String.length s - 32)) - in - - let rightArrow = - GDraw.pixmap_from_xpm_d ~window:toplevelWindow ~data:Pixmaps.copyAB () in - let leftArrow = - GDraw.pixmap_from_xpm_d ~window:toplevelWindow ~data:Pixmaps.copyBA () in - let rightArrowBlack = - GDraw.pixmap_from_xpm_d - ~window:toplevelWindow ~data:Pixmaps.copyABblack () in - let leftArrowBlack = - GDraw.pixmap_from_xpm_d - ~window:toplevelWindow ~data:Pixmaps.copyBAblack () in - let ignoreAct = - GDraw.pixmap_from_xpm_d ~window:toplevelWindow ~data:Pixmaps.ignore () in - let doneIcon = - GDraw.pixmap_from_xpm_d ~window:toplevelWindow ~data:Pixmaps.success () in - let failedIcon = - GDraw.pixmap_from_xpm_d ~window:toplevelWindow ~data:Pixmaps.failure () in - - let displayArrow i action = - match action with - "<-?->" -> mainWindow#set_cell ~pixmap:ignoreAct i 1 - | "---->" -> mainWindow#set_cell ~pixmap:rightArrow i 1 - | "<----" -> mainWindow#set_cell ~pixmap:leftArrow i 1 - | "error" -> mainWindow#set_cell ~pixmap:failedIcon i 1 - | _ -> assert false - in - - let displayStatusIcon i status = - match status with - | "failed" -> mainWindow#set_cell ~pixmap:failedIcon i 3 - | "done " -> mainWindow#set_cell ~pixmap:doneIcon i 3 - | _ -> mainWindow#set_cell ~text:status i 3 - in - - let displayMain() = - mainWindow#freeze (); - mainWindow#clear (); - for i = 0 to Array.length !theState - 1 do - let (r1, action, r2, status, path) = columnsOf i in - ignore (mainWindow#append [ r1; ""; r2; status; path ]); - displayArrow i action - done; - selectSomethingIfPossible (); - begin match !current with Some idx -> select idx | None -> () end; - mainWindow#thaw (); - updateDetails () - in - - let redisplay i = - let (r1, action, r2, status, path) = columnsOf i in - mainWindow#freeze (); - mainWindow#set_cell ~text:r1 i 0; - displayArrow i action; - mainWindow#set_cell ~text:r2 i 2; - displayStatusIcon i status; - mainWindow#set_cell ~text:path i 4; - if status = " failed " then mainWindow#set_row ~foreground:(`NAME"red") i; - mainWindow#thaw (); - if !current = Some i then updateDetails (); - updateButtons () - in - - let showProgress i bytes = - !theState.(i).bytesTransferred <- !theState.(i).bytesTransferred + bytes; - let b = !theState.(i).bytesTransferred in - let len = Common.riLength !theState.(i).ri in - let newstatus = - if b=0 || len = 0 then "working " - else if len = 0 then sprintf "%8d" b - else - let percentage = (int_of_float ((float b) *. 100.0 /. (float len))) in - if percentage > 100 then - debugprogress (fun() -> errmsg "Progress amount miscalculated for %s\n" - (path2string (!theState.(i).ri.path))); - sprintf " %3d%% " (max 100 percentage) in - Threads.do_on_main_thread (fun () -> - mainWindow#set_cell ~text:newstatus i 3; - gtk_sync ()) - in - - (* Install showProgress so that we get called back by low-level - file transfer stuff *) - Util.progressPrinter := Some(showProgress); - - (* Apply new ignore patterns to the current state, expecting that the - number of reconitems will grow smaller. Adjust the display, being - careful to keep the cursor as near as possible to its position - before the new ignore patterns take effect. *) - let ignoreAndRedisplay () = - let lst = Array.to_list !theState in - (* FIX: we should actually test whether any prefix is now ignored *) - let keep sI = not (Pred.test Globals.ignore (path2string sI.ri.path)) in - begin match !current with - None -> - theState := Array.of_list (Safelist.filter keep lst) - | Some index -> - let i = ref index in - let l = ref [] in - Array.iteri - (fun j sI -> if keep sI then l := sI::!l - else if j < !i then decr i) - !theState; - current := if !l = [] then None else Some !i; - theState := Array.of_list (Safelist.rev !l) - end; - displayMain(); - in - - (**********************************************************************) - (* FUNCTION DETECT UPDATES *) - (**********************************************************************) - - let detectUpdatesAndReconcile () = - grSet grAction false; - grSet grDiff false; - grSet grProceed false; - grSet grRestart false; - - let (r1,r2) = Globals.getReplicaRoots () in - let t = Trace.startTimer "Checking for updates" in - let findUpdates () = - let updates = Update.findUpdates () in - Trace.showTimer t; - updates - in - let reconcile updates = - let t = Trace.startTimer "Reconciling" in - Recon.reconcileAll updates - in - let reconItemList = reconcile (findUpdates ()) in - Trace.showTimer t; - if reconItemList = [] then - Trace.status "Everything is up to date" - else - Trace.status ("Check and/or adjust selected actions; " - ^ "then press Proceed"); - theState := - Array.of_list - (Safelist.map - (fun ri -> { ri = ri; bytesTransferred = 0; whatHappened = None }) - reconItemList); - current := None; - displayMain(); - grSet grProceed (Array.length !theState > 0); - grSet grRestart true - in - - (**********************************************************************) - (* The ignore dialog *) - (**********************************************************************) - - let ignoreDialog () = - let t = GWindow.dialog ~title: "Ignore" ~wm_name: "Ignore" () in - let hbox = GPack.hbox ~packing:t#vbox#add () in - let sb = GRange.scrollbar `VERTICAL - ~packing:(hbox#pack ~from:`END) () in - let regExpWindow = - GList.clist ~columns:1 ~titles_show:false ~packing:hbox#add - ~vadjustment:sb#adjustment ~width:400 ~height:150 () in - - (* Local copy of the regular expressions; the global copy will - not be changed until the Apply button is pressed *) - let theRegexps = Pred.extern Globals.ignore in - Safelist.iter (fun r -> ignore (regExpWindow#append [r])) theRegexps; - let maybeGettingBigger = ref false in - let maybeGettingSmaller = ref false in - let selectedRow = ref None in - ignore - (regExpWindow#connect#select_row ~callback: - (fun ~row ~column ~event -> selectedRow := Some row)); - ignore - (regExpWindow#connect#unselect_row ~callback: - (fun ~row ~column ~event -> selectedRow := None)); - - (* Configure the add frame *) - let hbox = GPack.hbox ~spacing:4 ~packing:t#vbox#pack () in - ignore (GMisc.label ~text: "Regular expression:" - ~packing:(hbox#pack ~padding:2) ()); - let entry = GEdit.entry ~packing:hbox#add () in - let add () = - let theRegExp = entry#text in - if theRegExp<>"" then begin - entry#set_text ""; - regExpWindow#unselect_all (); - ignore (regExpWindow#append [theRegExp]); - maybeGettingSmaller := true - end - in - let addButton = GButton.button ~label:"Add" - ~packing:hbox#pack () in - ignore (addButton#connect#clicked ~callback:add); - ignore (entry#connect#activate ~callback:add); - entry#misc#grab_focus (); - - (* Configure the delete button *) - let delete () = - match !selectedRow with - Some x -> - (* After a deletion, updates must be detected again *) - maybeGettingBigger := true; - (* Delete xth regexp *) - regExpWindow#unselect_all (); - regExpWindow#remove ~row:x - | None -> - () - in - let deleteButton = GButton.button ~label:"Delete" - ~packing:hbox#pack () in - ignore (deleteButton#connect#clicked ~callback:delete); - - ignore - (regExpWindow#event#connect#after#key_press ~callback: - begin fun ev -> - let key = GdkEvent.Key.keyval ev in - if key = _Up || key = _Down || key = _Prior || key = _Next || - key = _Page_Up || key = _Page_Down then begin - regExpWindow#select (regExpWindow#focus_row) 0; - true - end else if key = _Delete then begin - delete (); true - end else - false - end); - - (* A function to refresh the state and ignore list *) - let refresh () = - let theRegexps = ref [] in - for i = regExpWindow#rows - 1 downto 0 do - theRegexps := regExpWindow#cell_text i 0 :: !theRegexps - done; - Pred.intern Globals.ignore (!theRegexps); - if !maybeGettingBigger || !maybeGettingSmaller then begin - Globals.savePrefs(); - Globals.propagatePrefs() - end; - if !maybeGettingBigger then detectUpdatesAndReconcile () - else if !maybeGettingSmaller then ignoreAndRedisplay(); - maybeGettingBigger := false; - maybeGettingSmaller := false; - in - - (* Install the main buttons *) - let applyButton = - GButton.button ~label:"Apply" ~packing:t#action_area#add () in - ignore (applyButton#connect#clicked ~callback:refresh); - let cancelButton = - GButton.button ~label:"Cancel" ~packing:t#action_area#add () in - ignore (cancelButton#connect#clicked ~callback:(t#destroy)); - let okButton = - GButton.button ~label:"OK" ~packing:t#action_area#add () in - ignore - (okButton#connect#clicked - ~callback:(fun () -> refresh (); t#destroy ())); - ignore (t#connect#destroy ~callback:Main.quit); - grabFocus t; - t#show (); - Main.main (); - releaseFocus () - in - - (**********************************************************************) - (* Add entries to the Help menu *) - (**********************************************************************) - let addDocSection (shortname, (name, docstr)) = - if shortname <> "" && name <> "" then - ignore (helpMenu#add_item - ~callback:(fun () -> documentation shortname) - name) - in - Safelist.iter addDocSection Strings.docs; - - (**********************************************************************) - (* Add entries to the Ignore menu *) - (**********************************************************************) - let addRegExpByPath pathfunc = - match !current with - Some i -> - addIgnorePattern (pathfunc !theState.(i).ri.path); - ignoreAndRedisplay () - | None -> - () - in - grAdd grAction - (ignoreMenu#add_item ~key:_i - ~callback:(fun () -> getLock (fun () -> addRegExpByPath ignorePath)) - "Ignore this file permanently"); - grAdd grAction - (ignoreMenu#add_item ~key:_E - ~callback:(fun () -> getLock (fun () -> addRegExpByPath ignoreExt)) - "Ignore files with this extension"); - grAdd grAction - (ignoreMenu#add_item ~key:_N - ~callback:(fun () -> getLock (fun () -> addRegExpByPath ignoreName)) - "Ignore files with this name"); - -(* - grAdd grRestart - (ignoreMenu#add_item ~callback: - (fun () -> getLock ignoreDialog) "Edit ignore patterns"); -*) - - (**********************************************************************) - (* MAIN FUNCTION : SYNCHRONIZE *) - (**********************************************************************) - let synchronize () = - if Array.length !theState = 0 then - Trace.status "Nothing to synchronize" - else begin - grSet grAction false; - grSet grDiff false; - grSet grProceed false; - grSet grRestart false; - - Trace.status "Propagating changes"; - let t = Trace.startTimer "Propagating changes" in - let (start, wait) = Threads.thread_maker () in - let background = let i = 55000 in `RGB (i, i, i) in - let finish i = - redisplay i; - mainWindow#set_row ~background:`WHITE i; - gtk_sync () - in - for i = 0 to Array.length !theState - 1 do - let theSI = !theState.(i) in - assert (theSI.whatHappened = None); - start - (fun () -> - Threads.do_on_main_thread (fun () -> - mainWindow#set_row ~background i; - makeRowVisible i); - theSI.whatHappened <- Some (Transport.transportItem theSI.ri i); - i) - finish - done; - wait finish; - - Trace.showTimer t; - Trace.status "Updating synchronizer state"; - let t = Trace.startTimer "Updating synchronizer state" in - Update.commitUpdates(); - Trace.showTimer t; - Trace.status "Synchronization complete"; - - grSet grRestart true - end - in - - (**********************************************************************) - (* CREATE THE ACTION BAR *) - (**********************************************************************) - let actionBar = - GButton.toolbar - ~orientation:`HORIZONTAL ~tooltips:true ~space_size:10 - ~packing:toplevelVBox#pack () in - - (**********************************************************************) - (* CREATE AND CONFIGURE THE QUIT BUTTON *) - (**********************************************************************) - actionBar#insert_space (); - ignore (actionBar#insert_button ~text:"Quit" ~callback:safeExit ()); - - (**********************************************************************) - (* CREATE AND CONFIGURE THE PROCEED BUTTON *) - (**********************************************************************) - actionBar#insert_space (); - grAdd grProceed - (actionBar#insert_button ~text:"Proceed" - (* tooltip:"Proceed with displayed actions" *) - ~callback:(fun () -> - getLock synchronize) ()); - - (**********************************************************************) - (* CREATE AND CONFIGURE THE RESCAN BUTTON *) - (**********************************************************************) - let detectCmdName = "Restart" in - let detectCmd () = - getLock detectUpdatesAndReconcile; - if Prefs.readPref batch then begin - Prefs.setPref batch Prefs.TempSetting false; synchronize() - end - in - actionBar#insert_space (); - grAdd grRestart - (actionBar#insert_button ~text:detectCmdName ~callback:detectCmd ()); - - (**********************************************************************) - (* Buttons for <--, -->, Skip *) - (**********************************************************************) - let doAction f = - match !current with - Some i -> - let theSI = !theState.(i) in - begin match theSI.whatHappened, theSI.ri.replicas with - None, Different(_, _, dir) -> - f dir; - redisplay i; - nextInteresting () - | _ -> - () - end - | None -> - () - in - let leftAction _ = doAction (fun dir -> dir := Replica2ToReplica1) in - let rightAction _ = doAction (fun dir -> dir := Replica1ToReplica2) in - let questionAction _ = doAction (fun dir -> dir := Conflict) in - - (**********************************************************************) - (* CREATE AND CONFIGURE THE DIFF BUTTON and KEY *) - (**********************************************************************) - let diffCmd () = - match !current with - Some i -> - getLock (fun () -> - showDiffs !theState.(i).ri - (fun title text -> messageBox ~title text) - Trace.status i) - | None -> - () - in - - actionBar#insert_space (); - grAdd grAction - (actionBar#insert_button - ~icon:((GMisc.pixmap leftArrowBlack ())#coerce) - ~callback:leftAction ()); - actionBar#insert_space (); - grAdd grAction - (actionBar#insert_button - ~icon:((GMisc.pixmap rightArrowBlack ())#coerce) - ~callback:rightAction ()); - actionBar#insert_space (); - grAdd grAction - (actionBar#insert_button ~text:"Skip" ~callback:questionAction ()); - actionBar#insert_space (); - grAdd grDiff (actionBar#insert_button ~text:"Diff" ~callback:diffCmd ()); - - (**********************************************************************) - (* Configure keyboard commands *) - (**********************************************************************) - ignore - (mainWindow#event#connect#key_press ~callback: - begin fun ev -> - let key = GdkEvent.Key.keyval ev in - if key = _Left then begin - leftAction (); GtkSignal.stop_emit (); true - end else if key = _Right then begin - rightAction (); GtkSignal.stop_emit (); true - end else - false - end); - - (**********************************************************************) - (* Add entries to the Action menu *) - (**********************************************************************) - let (root1,root2) = Globals.getReplicaRoots () in - let loc1 = root2hostname root1 in - let loc2 = root2hostname root2 in - let descr = - if loc1 = loc2 then "left to right" else - Printf.sprintf "from %s to %s" loc1 loc2 - in - let left = - actionsMenu#add_item ~key:_greater ~callback:rightAction - ("Propagate " ^ descr) in - grAdd grAction left; - left#add_accelerator ~group:accel_group ~modi:[`SHIFT] _greater; - - let descl = - if loc1 = loc2 then "right to left" else - Printf.sprintf "from %s to %s" loc2 loc1 - in - let right = - actionsMenu#add_item ~key:_less ~callback:leftAction - ("Propagate " ^ descl) in - grAdd grAction right; - right#add_accelerator ~group:accel_group ~modi:[`SHIFT] _less; - - grAdd grAction - (actionsMenu#add_item ~key:_slash ~callback:questionAction - "Do not propagate changes"); - - ignore (actionsMenu#add_separator ()); - grAdd grDiff (actionsMenu#add_item ~key:_d ~callback:diffCmd "Show diffs"); - - (**********************************************************************) - (* Add commands to the Synchronization menu *) - (**********************************************************************) - grAdd grProceed - (fileMenu#add_item ~key:_g - ~callback:(fun () -> - getLock synchronize) - "Proceed"); - grAdd grRestart (fileMenu#add_item ~key:_r ~callback:detectCmd detectCmdName); - grAdd grRestart - (fileMenu#add_item ~key:_a - ~callback:(fun () -> - getLock detectUpdatesAndReconcile; - getLock synchronize) - "Atomically detect updates and proceed"); - ignore (fileMenu#add_separator ()); - let cm = - fileMenu#add_check_item ~active:(Prefs.readPref Transport.backups) - ~callback:(fun b -> Prefs.setPref Transport.backups Prefs.TempSetting b) - "Make backups" - in - cm#set_show_toggle true; - grAdd grRestart cm; - ignore (fileMenu#add_separator ()); - ignore (fileMenu#add_item ~key:_q ~callback:safeExit "Quit"); - - grSet grAction false; - grSet grDiff false; - grSet grProceed false; - grSet grRestart false; - - ignore (toplevelWindow#event#connect#delete ~callback: - (fun _ -> safeExit (); true)); - toplevelWindow#show (); - currentWindow := Some toplevelWindow; - detectCmd () - -(**********************************************************************) -(* Starting up... *) -(**********************************************************************) -let start _ = - begin try - (* Initialize the library *) - ignore (Main.init ()); - - Util.warnPrinter := Some (warnBox "Warning"); - (* Ask the Remote module to call us back at regular intervals during - long network operations. *) - Threads.tickProc := Some gtk_sync; - - (**********************************************************************) - (* Set things up to initialize the client/server connection and *) - (* detect updates after the ui is displayed. *) - (* This makes a difference when the replicas are large and it takes *) - (* a lot of time to detect updates. *) - (**********************************************************************) - let msg = ref None in - Uicommon.uiInit - profileSelect - rootSelect - (fun () -> - let w = - GWindow.window ~kind:`TOPLEVEL ~position:`CENTER - ~wm_name:"Unison" ~border_width:16 () in - ignore (GMisc.label ~text: "Contacting server..." - ~packing:(w#add) ()); - w#show (); - ignore (w#event#connect#delete ~callback:(fun _ -> exit 0)); - msg := Some w) - (fun () -> - begin match !msg with - None -> () - | Some w -> w#destroy () - end; - createToplevelWindow ()); - - (**********************************************************************) - (* Display the ui *) - (**********************************************************************) - ignore (Timeout.add 500 (fun _ -> true)); - (* Hack: this allows signals such as SIGINT to be - handled even when Gtk is waiting for events *) - Main.main () - with exn -> - fatalError (exn2string exn) - end - -end (* module Private *) - -(**********************************************************************) -(* MODULE MAIN *) -(**********************************************************************) - -module Body : Uicommon.UI = struct - -let start = function - Text -> Uitext.Body.start Text - | Graphic -> Private.start Graphic - -end (* module Body *) - -(* -FIX: -- Édition (minimale) et création des profiles -- Profile par défaut -- Sanity checks pour "Root selection" -- Edition du filtrage -*) diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/config.make.nt b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/config.make.nt deleted file mode 100644 index 3fe6b56ac..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/config.make.nt +++ /dev/null @@ -1,6 +0,0 @@ -LIBDIR=c:/Home/garrigue/ocaml/lib -GTKCFLAGS=-I../glib -I../gtk+ -GTKSRC=c:\Home\garrigue -GTKLIBS=$(GTKSRC)/glib/gmodule-1.3.lib $(GTKSRC)/glib/glib-1.3.lib $(GTKSRC)/gtk+/gdk/gdk-1.3.lib $(GTKSRC)/gtk+/gtk/gtk-1.3.lib -USE_GL=0 -USE_CC=0 diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/configure.mk b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/configure.mk deleted file mode 100644 index 49b3d7015..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/configure.mk +++ /dev/null @@ -1,50 +0,0 @@ -# makefile for configuring lablGTK - -# Default compilers -CAMLC = ocamlc -CAMLOPT = ocamlopt - -# Default installation directories -BINDIR = `$(GETBINDIR)` -INSTALLDIR = $(LIBDIR)/lablgtk - -# Autoconf -GETLIBDIR = ocamlc -v | grep "^Standard" | sed 's/^.*: *//' -LIBDIR = `$(GETLIBDIR)` -GETBINDIR = $(GETLIBDIR) | sed -e 's|/lib/[^/]*$$|/bin|' -e 's|/lib$$|/bin|' -GETRANLIB = which ranlib 2>/dev/null | sed -e 's|.*/ranlib$$|!|' -e 's/^[^!]*$$/:/' -e 's/!/ranlib/' - -ifdef USE_GNOME -GTKGETCFLAGS = gtk-config --cflags`" -I"`gnome-config --includedir -GNOMELIBS = `gnome-config --libs gtkxmhtml` -else -GTKGETCFLAGS = gtk-config --cflags -endif - -GTKGETLIBS = gtk-config --libs - -configure: .depend config.make - -.depend: - ocamldep *.ml *.mli > .depend - -config.make: - @echo CAMLC=$(CAMLC) > config.make - @echo CAMLOPT=$(CAMLOPT) >> config.make - @echo USE_GL=$(USE_GL) >> config.make - @echo USE_GNOME=$(USE_GNOME) >> config.make - @echo USE_CC=$(USE_CC) >> config.make - @echo DEBUG=$(DEBUG) >> config.make - @echo CC=$(CC) >> config.make - @echo RANLIB=`$(GETRANLIB)` >> config.make - @echo LIBDIR=$(LIBDIR) >> config.make - @echo BINDIR=`$(GETBINDIR)` >> config.make - @echo INSTALLDIR=$(INSTALLDIR) >> config.make - @echo GTKCFLAGS=`$(GTKGETCFLAGS)` >> config.make - @echo GTKLIBS=`$(GTKGETLIBS)` | \ - sed -e 's/-l/-cclib &/g' -e 's/-[LRWr][^ ]*/-ccopt &/g' \ - >> config.make - @echo GNOMELIBS=$(GNOMELIBS) | \ - sed -e 's/-l/-cclib &/g' -e 's/-[LRWr][^ ]*/-ccopt &/g' \ - >> config.make - cat config.make diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/doc/formula.eps b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/doc/formula.eps deleted file mode 100644 index 31ddafc6f..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/doc/formula.eps +++ /dev/null @@ -1,409 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Creator: dvipsk 5.78 p1.4c Copyright 1996-99 ASCII Corp.(www-ptex@ascii.co.jp) -%%dvipsk 5.78 Copyright 1998 Radical Eye Software (www.radicaleye.com) -%%Title: formula.dvi -%%BoundingBox: 71 318 395 524 -%%DocumentFonts: Symbol Times-Italic Times-Roman Helvetica -%%EndComments -%DVIPSCommandLine: dvips -E -o formula.eps formula -%DVIPSParameters: dpi=300, compressed -%DVIPSSource: TeX output 1999.08.19:0906 -%%BeginProcSet: texc.pro -%! -/TeXDict 300 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N -/X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72 -mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1} -ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale -isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div -hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul -TR[matrix currentmatrix{dup dup round sub abs 0.00001 lt{round}if} -forall round exch round exch]setmatrix}N /@landscape{/isls true N}B -/@manualfeed{statusdict /manualfeed true put}B /@copies{/#copies X}B -/FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{ -/nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N -string /base X array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N -end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{ -/sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0] -N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data dup -length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{ -128 ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub -get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data -dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N -/rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup -/base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx -0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff -setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff -.1 sub]/id ch-image N /rw ch-width 7 add 8 idiv string N /rc 0 N /gp 0 N -/cp 0 N{rc 0 ne{rc 1 sub /rc X rw}{G}ifelse}imagemask restore}B /G{{id -gp get /gp gp 1 add N dup 18 mod S 18 idiv pl S get exec}loop}B /adv{cp -add /cp X}B /chg{rw cp id gp 4 index getinterval putinterval dup gp add -/gp X adv}B /nd{/cp 0 N rw exit}B /lsh{rw cp 2 copy get dup 0 eq{pop 1}{ -dup 255 eq{pop 254}{dup dup add 255 and S 1 and or}ifelse}ifelse put 1 -adv}B /rsh{rw cp 2 copy get dup 0 eq{pop 128}{dup 255 eq{pop 127}{dup 2 -idiv S 128 and or}ifelse}ifelse put 1 adv}B /clr{rw cp 2 index string -putinterval adv}B /set{rw cp fillstr 0 4 index getinterval putinterval -adv}B /fillstr 18 string 0 1 17{2 copy 255 put pop}for N /pl[{adv 1 chg} -{adv 1 chg nd}{1 add chg}{1 add chg nd}{adv lsh}{adv lsh nd}{adv rsh}{ -adv rsh nd}{1 add adv}{/rc X nd}{1 add set}{1 add clr}{adv 2 chg}{adv 2 -chg nd}{pop nd}]dup{bind pop}forall N /D{/cc X dup type /stringtype ne{] -}if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup -length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{ -cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin -0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul -add .99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore userdict -/eop-hook known{eop-hook}if showpage}N /@start{userdict /start-hook -known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X -/IE 256 array N 2 string 0 1 255{IE S dup 360 add 36 4 index cvrs cvn -put}for pop 65781.76 div /vsize X 65781.76 div /hsize X}N /dir 0 def -/dyy{/dir 0 def}B /dyt{/dir 1 def}B /dty{/dir 2 def}B /dtt{/dir 3 def}B -/p{dir 2 eq{-90 rotate show 90 rotate}{dir 3 eq{-90 rotate show 90 -rotate}{show}ifelse}ifelse}B /RMat[1 0 0 -1 0 0]N /BDot 260 string N -/rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V{}B /RV statusdict -begin /product where{pop false[(Display)(NeXT)(LaserWriter 16/600)]{dup -length product length le{dup length product exch 0 exch getinterval eq{ -pop true exit}if}{pop}ifelse}forall}{false}ifelse end{{gsave TR -.1 .1 -TR 1 1 scale rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR --.1 .1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}} -ifelse B /QV{gsave newpath transform round exch round exch itransform -moveto rulex 0 rlineto 0 ruley neg rlineto rulex neg 0 rlineto fill -grestore}B /a{moveto}B /delta 0 N /tail{dup /delta X 0 rmoveto}B /M{S p -delta add tail}B /b{S p tail}B /c{-4 M}B /d{-3 M}B /e{-2 M}B /f{-1 M}B -/g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{4 M}B /w{0 rmoveto}B /l{p -4 w}B -/m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{ -p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p a}B /bos{/SS save N}B /eos{SS -restore}B end - -%%EndProcSet -%%BeginProcSet: 8r.enc -% @@psencodingfile@{ -% author = "S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry", -% version = "0.6", -% date = "22 June 1996", -% filename = "8r.enc", -% email = "kb@@mail.tug.org", -% address = "135 Center Hill Rd. // Plymouth, MA 02360", -% codetable = "ISO/ASCII", -% checksum = "119 662 4424", -% docstring = "Encoding for TrueType or Type 1 fonts to be used with TeX." -% @} -% -% Idea is to have all the characters normally included in Type 1 fonts -% available for typesetting. This is effectively the characters in Adobe -% Standard Encoding + ISO Latin 1 + extra characters from Lucida. -% -% Character code assignments were made as follows: -% -% (1) the Windows ANSI characters are almost all in their Windows ANSI -% positions, because some Windows users cannot easily reencode the -% fonts, and it makes no difference on other systems. The only Windows -% ANSI characters not available are those that make no sense for -% typesetting -- rubout (127 decimal), nobreakspace (160), softhyphen -% (173). quotesingle and grave are moved just because it's such an -% irritation not having them in TeX positions. -% -% (2) Remaining characters are assigned arbitrarily to the lower part -% of the range, avoiding 0, 10 and 13 in case we meet dumb software. -% -% (3) Y&Y Lucida Bright includes some extra text characters; in the -% hopes that other PostScript fonts, perhaps created for public -% consumption, will include them, they are included starting at 0x12. -% -% (4) Remaining positions left undefined are for use in (hopefully) -% upward-compatible revisions, if someday more characters are generally -% available. -% -% (5) hyphen appears twice for compatibility with both ASCII and Windows. -% -/TeXBase1Encoding [ -% 0x00 (encoded characters from Adobe Standard not in Windows 3.1) - /.notdef /dotaccent /fi /fl - /fraction /hungarumlaut /Lslash /lslash - /ogonek /ring /.notdef - /breve /minus /.notdef -% These are the only two remaining unencoded characters, so may as -% well include them. - /Zcaron /zcaron -% 0x10 - /caron /dotlessi -% (unusual TeX characters available in, e.g., Lucida Bright) - /dotlessj /ff /ffi /ffl - /.notdef /.notdef /.notdef /.notdef - /.notdef /.notdef /.notdef /.notdef - % very contentious; it's so painful not having quoteleft and quoteright - % at 96 and 145 that we move the things normally found there down to here. - /grave /quotesingle -% 0x20 (ASCII begins) - /space /exclam /quotedbl /numbersign - /dollar /percent /ampersand /quoteright - /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash -% 0x30 - /zero /one /two /three /four /five /six /seven - /eight /nine /colon /semicolon /less /equal /greater /question -% 0x40 - /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O -% 0x50 - /P /Q /R /S /T /U /V /W - /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore -% 0x60 - /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o -% 0x70 - /p /q /r /s /t /u /v /w - /x /y /z /braceleft /bar /braceright /asciitilde - /.notdef % rubout; ASCII ends -% 0x80 - /.notdef /.notdef /quotesinglbase /florin - /quotedblbase /ellipsis /dagger /daggerdbl - /circumflex /perthousand /Scaron /guilsinglleft - /OE /.notdef /.notdef /.notdef -% 0x90 - /.notdef /.notdef /.notdef /quotedblleft - /quotedblright /bullet /endash /emdash - /tilde /trademark /scaron /guilsinglright - /oe /.notdef /.notdef /Ydieresis -% 0xA0 - /.notdef % nobreakspace - /exclamdown /cent /sterling - /currency /yen /brokenbar /section - /dieresis /copyright /ordfeminine /guillemotleft - /logicalnot - /hyphen % Y&Y (also at 45); Windows' softhyphen - /registered - /macron -% 0xD0 - /degree /plusminus /twosuperior /threesuperior - /acute /mu /paragraph /periodcentered - /cedilla /onesuperior /ordmasculine /guillemotright - /onequarter /onehalf /threequarters /questiondown -% 0xC0 - /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla - /Egrave /Eacute /Ecircumflex /Edieresis - /Igrave /Iacute /Icircumflex /Idieresis -% 0xD0 - /Eth /Ntilde /Ograve /Oacute - /Ocircumflex /Otilde /Odieresis /multiply - /Oslash /Ugrave /Uacute /Ucircumflex - /Udieresis /Yacute /Thorn /germandbls -% 0xE0 - /agrave /aacute /acircumflex /atilde - /adieresis /aring /ae /ccedilla - /egrave /eacute /ecircumflex /edieresis - /igrave /iacute /icircumflex /idieresis -% 0xF0 - /eth /ntilde /ograve /oacute - /ocircumflex /otilde /odieresis /divide - /oslash /ugrave /uacute /ucircumflex - /udieresis /yacute /thorn /ydieresis -] def - -%%EndProcSet -%%BeginProcSet: texps.pro -%! -TeXDict begin /rf{findfont dup length 1 add dict begin{1 index /FID ne 2 -index /UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll -exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]/Metrics -exch def dict begin 0 1 255{exch dup type /integertype ne{pop pop 1 sub -dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def} -ifelse}for Metrics /Metrics currentdict end def[2 index currentdict end -definefont 3 -1 roll makefont /setfont cvx]cvx def}def /ObliqueSlant{ -dup sin S cos div neg}B /SlantFont{4 index mul add}def /ExtendFont{3 -1 -roll mul exch}def /ReEncodeFont{/Encoding exch def}def end - -%%EndProcSet -%%BeginProcSet: special.pro -%! -TeXDict begin /SDict 200 dict N SDict begin /@SpecialDefaults{/hs 612 N -/vs 792 N /ho 0 N /vo 0 N /hsc 1 N /vsc 1 N /ang 0 N /CLIP 0 N /rwiSeen -false N /rhiSeen false N /letter{}N /note{}N /a4{}N /legal{}N}B -/@scaleunit 100 N /@hscale{@scaleunit div /hsc X}B /@vscale{@scaleunit -div /vsc X}B /@hsize{/hs X /CLIP 1 N}B /@vsize{/vs X /CLIP 1 N}B /@clip{ -/CLIP 2 N}B /@hoffset{/ho X}B /@voffset{/vo X}B /@angle{/ang X}B /@rwi{ -10 div /rwi X /rwiSeen true N}B /@rhi{10 div /rhi X /rhiSeen true N}B -/@llx{/llx X}B /@lly{/lly X}B /@urx{/urx X}B /@ury{/ury X}B /magscale -true def end /@MacSetUp{userdict /md known{userdict /md get type -/dicttype eq{userdict begin md length 10 add md maxlength ge{/md md dup -length 20 add dict copy def}if end md begin /letter{}N /note{}N /legal{} -N /od{txpose 1 0 mtx defaultmatrix dtransform S atan/pa X newpath -clippath mark{transform{itransform moveto}}{transform{itransform lineto} -}{6 -2 roll transform 6 -2 roll transform 6 -2 roll transform{ -itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll curveto}}{{ -closepath}}pathforall newpath counttomark array astore /gc xdf pop ct 39 -0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}if}N -/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 -1 -scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 get -ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip -not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0 -TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{noflips{TR -pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop 90 rotate 1 --1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg -TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr 1 get neg -sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr 2 get ppr -0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 -1 roll add -2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S TR}if}N /cp -{pop pop showpage pm restore}N end}if}if}N /normalscale{Resolution 72 -div VResolution 72 div neg scale magscale{DVImag dup scale}if 0 setgray} -N /psfts{S 65781.76 div N}N /startTexFig{/psf$SavedState save N userdict -maxlength dict begin /magscale true def normalscale currentpoint TR -/psf$ury psfts /psf$urx psfts /psf$lly psfts /psf$llx psfts /psf$y psfts -/psf$x psfts currentpoint /psf$cy X /psf$cx X /psf$sx psf$x psf$urx -psf$llx sub div N /psf$sy psf$y psf$ury psf$lly sub div N psf$sx psf$sy -scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub TR -/showpage{}N /erasepage{}N /copypage{}N /p 3 def @MacSetUp}N /doclip{ -psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2 -roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath -moveto}N /endTexFig{end psf$SavedState restore}N /@beginspecial{SDict -begin /SpecialSave save N gsave normalscale currentpoint TR -@SpecialDefaults count /ocount X /dcount countdictstack N}N /@setspecial -{CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto -closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx -sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR -}{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse -CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury -lineto closepath clip}if /showpage{}N /erasepage{}N /copypage{}N newpath -}N /@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{ -end}repeat grestore SpecialSave restore end}N /@defspecial{SDict begin} -N /@fedspecial{end}B /li{lineto}B /rl{rlineto}B /rc{rcurveto}B /np{ -/SaveX currentpoint /SaveY X N 1 setlinecap newpath}N /st{stroke SaveX -SaveY moveto}N /fil{fill SaveX SaveY moveto}N /ellipse{/endangle X -/startangle X /yrad X /xrad X /savematrix matrix currentmatrix N TR xrad -yrad scale 0 0 1 startangle endangle arc savematrix setmatrix}N end - -%%EndProcSet -%%BeginProcSet: color.pro -%! -TeXDict begin /setcmykcolor where{pop}{/setcmykcolor{dup 10 eq{pop -setrgbcolor}{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll -}repeat setrgbcolor pop}ifelse}B}ifelse /TeXcolorcmyk{setcmykcolor}def -/TeXcolorrgb{setrgbcolor}def /TeXcolorgrey{setgray}def /TeXcolorgray{ -setgray}def /TeXcolorhsb{sethsbcolor}def /currentcmykcolor where{pop}{ -/currentcmykcolor{currentrgbcolor 10}B}ifelse /DC{exch dup userdict exch -known{pop pop}{X}ifelse}B /GreenYellow{0.15 0 0.69 0 setcmykcolor}DC -/Yellow{0 0 1 0 setcmykcolor}DC /Goldenrod{0 0.10 0.84 0 setcmykcolor} -DC /Dandelion{0 0.29 0.84 0 setcmykcolor}DC /Apricot{0 0.32 0.52 0 -setcmykcolor}DC /Peach{0 0.50 0.70 0 setcmykcolor}DC /Melon{0 0.46 0.50 -0 setcmykcolor}DC /YellowOrange{0 0.42 1 0 setcmykcolor}DC /Orange{0 -0.61 0.87 0 setcmykcolor}DC /BurntOrange{0 0.51 1 0 setcmykcolor}DC -/Bittersweet{0 0.75 1 0.24 setcmykcolor}DC /RedOrange{0 0.77 0.87 0 -setcmykcolor}DC /Mahogany{0 0.85 0.87 0.35 setcmykcolor}DC /Maroon{0 -0.87 0.68 0.32 setcmykcolor}DC /BrickRed{0 0.89 0.94 0.28 setcmykcolor} -DC /Red{0 1 1 0 setcmykcolor}DC /OrangeRed{0 1 0.50 0 setcmykcolor}DC -/RubineRed{0 1 0.13 0 setcmykcolor}DC /WildStrawberry{0 0.96 0.39 0 -setcmykcolor}DC /Salmon{0 0.53 0.38 0 setcmykcolor}DC /CarnationPink{0 -0.63 0 0 setcmykcolor}DC /Magenta{0 1 0 0 setcmykcolor}DC /VioletRed{0 -0.81 0 0 setcmykcolor}DC /Rhodamine{0 0.82 0 0 setcmykcolor}DC /Mulberry -{0.34 0.90 0 0.02 setcmykcolor}DC /RedViolet{0.07 0.90 0 0.34 -setcmykcolor}DC /Fuchsia{0.47 0.91 0 0.08 setcmykcolor}DC /Lavender{0 -0.48 0 0 setcmykcolor}DC /Thistle{0.12 0.59 0 0 setcmykcolor}DC /Orchid{ -0.32 0.64 0 0 setcmykcolor}DC /DarkOrchid{0.40 0.80 0.20 0 setcmykcolor} -DC /Purple{0.45 0.86 0 0 setcmykcolor}DC /Plum{0.50 1 0 0 setcmykcolor} -DC /Violet{0.79 0.88 0 0 setcmykcolor}DC /RoyalPurple{0.75 0.90 0 0 -setcmykcolor}DC /BlueViolet{0.86 0.91 0 0.04 setcmykcolor}DC /Periwinkle -{0.57 0.55 0 0 setcmykcolor}DC /CadetBlue{0.62 0.57 0.23 0 setcmykcolor} -DC /CornflowerBlue{0.65 0.13 0 0 setcmykcolor}DC /MidnightBlue{0.98 0.13 -0 0.43 setcmykcolor}DC /NavyBlue{0.94 0.54 0 0 setcmykcolor}DC -/RoyalBlue{1 0.50 0 0 setcmykcolor}DC /Blue{1 1 0 0 setcmykcolor}DC -/Cerulean{0.94 0.11 0 0 setcmykcolor}DC /Cyan{1 0 0 0 setcmykcolor}DC -/ProcessBlue{0.96 0 0 0 setcmykcolor}DC /SkyBlue{0.62 0 0.12 0 -setcmykcolor}DC /Turquoise{0.85 0 0.20 0 setcmykcolor}DC /TealBlue{0.86 -0 0.34 0.02 setcmykcolor}DC /Aquamarine{0.82 0 0.30 0 setcmykcolor}DC -/BlueGreen{0.85 0 0.33 0 setcmykcolor}DC /Emerald{1 0 0.50 0 -setcmykcolor}DC /JungleGreen{0.99 0 0.52 0 setcmykcolor}DC /SeaGreen{ -0.69 0 0.50 0 setcmykcolor}DC /Green{1 0 1 0 setcmykcolor}DC -/ForestGreen{0.91 0 0.88 0.12 setcmykcolor}DC /PineGreen{0.92 0 0.59 -0.25 setcmykcolor}DC /LimeGreen{0.50 0 1 0 setcmykcolor}DC /YellowGreen{ -0.44 0 0.74 0 setcmykcolor}DC /SpringGreen{0.26 0 0.76 0 setcmykcolor} -DC /OliveGreen{0.64 0 0.95 0.40 setcmykcolor}DC /RawSienna{0 0.72 1 0.45 -setcmykcolor}DC /Sepia{0 0.83 1 0.70 setcmykcolor}DC /Brown{0 0.81 1 -0.60 setcmykcolor}DC /Tan{0.14 0.42 0.56 0 setcmykcolor}DC /Gray{0 0 0 -0.50 setcmykcolor}DC /Black{0 0 0 1 setcmykcolor}DC /White{0 0 0 0 -setcmykcolor}DC end - -%%EndProcSet -TeXDict begin 40258437 52099154 1000 300 300 (formula.dvi) -@start /Fa 134[ 41 5[ 41 3[ 46 46 1[ 18 6[ 46 15[ 60 -4[ 55 14[ 55 23[ 28 28 40[{ TeXBase1Encoding ReEncodeFont } 11 -82.6359 /Helvetica rf /Fb 205[ 34 34 49[{ - TeXBase1Encoding ReEncodeFont } 2 68.8667 /Times-Roman -rf /Fc 154[ 30 101[{ } 1 68.8667 /Symbol rf -%DVIPSBitmapFont: Fd cmr10 19.907 4 -/Fd 4 94 df<146014E0EB01C0EB0380EB0700130E5B133C13385B13F05B1201485AA248 -5AA348C7FCA25A121EA2123EA2123CA2127CA5127812F8B01278127CA5123CA2123EA212 -1EA2121F7EA26C7EA36C7EA26C7E12007F13707F133C131C7F7FEB0380EB01C0EB00E014 -60135278BD20> 40 D<7E7E7E12707E7E7E120F7E6C7E7F12017F6C7EA21378A37FA213 -3E131EA2131FA27FA21480A5130714C0B01480130FA51400A25BA2131EA2133E133CA25B -A35BA2485A5B12035B48C7FC5A120E5A5A5A5A5A5A12527BBD20> I 91 D 93 D E -%EndDVIPSBitmapFont -/Fe 197[ 23 58[{ TeXBase1Encoding ReEncodeFont } 1 82.6359 -/Times-Roman rf -%DVIPSBitmapFont: Ff cmsy10 19.907 4 -/Ff 4 106 df<0060161800F0163CA26C167C00781678007C16F8003C16F0A2003E1501 -001E16E0A2001F15036C16C06D140700071680A26D140F000316006D5C6CB612FEA36C5D -01F8C7127C01781478A2017C14F8013C5CA2013E1301011E5C011F13036D5CA2EC800701 -075CECC00F010391C7FCA26E5A0101131EECF03E0100133CA2ECF87CEC7878A2EC7CF8EC -3CF0143F6E5AA36E5AA26E5AA26EC8FC2E3A80B82F> 56 D<126012F0B3A7B8FC1780A3 -00F0CAFCB3A8126029397CB832> 96 D<14C0EB01E0A2130314C013071480A2130F1400 -A25B131E133E133CA2137C137813F85BA212015BA212035B12075BA2120F90C7FC5A121E -A2123E123CA2127C127812F85AA27E1278127C123CA2123E121EA2121F7E7F1207A27F12 -037F1201A27F1200A27F1378137C133CA2133E131E131F7FA214801307A214C0130314E0 -1301A2EB00C0135278BD20> 104 D<126012F0A27E1278127C123CA2123E121EA2121F7E -7F1207A27F12037F1201A27F1200A27F1378137C133CA2133E131E131F7FA214801307A2 -14C0130314E01301A2130314C013071480A2130F1400A25B131E133E133CA2137C137813 -F85BA212015BA212035B12075BA2120F90C7FC5A121EA2123E123CA2127C127812F85AA2 -126013527CBD20> I E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fg cmmi10 19.907 1 -/Fg 1 59 df<121C123E127FEAFF80A3EA7F00123E121C0909798817> 58 -D E -%EndDVIPSBitmapFont -/Fh 158[ 41 31[ 50 65[{ TeXBase1Encoding ReEncodeFont } 2 -82.6359 /Times-Italic rf /Fi 139[ 36 50 13[ 36 101[{ } 3 -82.6359 /Symbol rf end -%%EndProlog -%%BeginSetup -%%Feature: *Resolution 300dpi -TeXDict begin - -%%EndSetup -0 0 bop Black Black 0 0.7 0 TeXcolorrgb Fh 567 883 a(A) p -Ff 636 883 a(`) p Fh 705 883 a(a) p Fe 765 883 a(:) p -0 0 1 TeXcolorrgb Fi 806 883 a(t) p Fb 842 900 a(1) p -0 0.7 0 TeXcolorrgb Fd 948 883 a(\() p 0 0 1 TeXcolorrgb -Fi(t) p Fb 1016 900 a(1) p 0 0.7 0 TeXcolorrgb Fe 1071 -883 a(:) p 0 0 1 TeXcolorrgb Fi 1112 883 a(t) p 0 0.7 0 -TeXcolorrgb Fe 1167 883 a(:) p 0 0 1 TeXcolorrgb Fi 1208 -883 a(t) p Fb 1244 900 a(2) p 0 0.7 0 TeXcolorrgb Fd -1281 883 a(\)) p 567 920 746 4 v Fh 704 995 a(A) p Ff -773 995 a(`) p Fd 842 995 a(\() p Fh(a) p Fe 934 995 -a(:) p 0 0 1 TeXcolorrgb Fi 975 995 a(t) p 0 0.7 0 TeXcolorrgb -Fd(\)) p Fe 1062 995 a(:) p 0 0 1 TeXcolorrgb Fi 1103 -995 a(t) p Fb 1139 1012 a(2) p 0 0.7 0 TeXcolorrgb Black -Fa 2 939 a(\(Ann\)) p 0 0.7 0 TeXcolorrgb Black 0 0.7 0 -TeXcolorrgb Fh 540 1208 a(A) p Ff 609 1208 a(`) p Fh -678 1208 a(a) p Fe 738 1208 a(:) p 0 0 1 TeXcolorrgb -Fi 779 1208 a(s) p Fb 829 1225 a(1) p 0 0.7 0 TeXcolorrgb -Fd 934 1208 a(\() p 0 0 1 TeXcolorrgb Fi(s) p Fb 1016 -1225 a(1) p 0 0.7 0 TeXcolorrgb Fe 1071 1208 a(:) p 0 0 1 -TeXcolorrgb Fi 1112 1208 a(s) p 0 0.7 0 TeXcolorrgb Fe -1180 1208 a(:) p 0 0 1 TeXcolorrgb Fi 1222 1208 a(s) p -Fb 1272 1225 a(2) p 0 0.7 0 TeXcolorrgb Fd 1308 1208 -a(\)) p 540 1245 801 4 v Fh 661 1321 a(A) p Ff 730 1321 -a(`) p Fd 799 1321 a([) p Fh(a) p Fe 881 1321 a(:) p -0 0 1 TeXcolorrgb Fi 923 1321 a(s) p 0 0.7 0 TeXcolorrgb -Fd 972 1321 a(]) p Fe 1014 1321 a(:) p 0 0 1 TeXcolorrgb -Fd 1055 1321 a([) p Fi(s) p Fb 1128 1338 a(2) p Fd 1164 -1321 a(]) p Fc 1187 1297 a(e) p 0 0.7 0 TeXcolorrgb Black -Fa 2 1264 a(\(P) l(oly\)) p 0 0.7 0 TeXcolorrgb Black -0 0.7 0 TeXcolorrgb Fh 704 1537 a(A) p Ff 773 1537 a(`) p -Fh 842 1537 a(a) p Fe 902 1537 a(:) p 0 0 1 TeXcolorrgb -Ff 943 1537 a(8) p Fi(e) p Fg(:) p Fd([) p Fi(s) p Fd(]) p -Fc 1145 1507 a(e) p 0 0.7 0 TeXcolorrgb 704 1573 472 -4 v Fh 764 1649 a(A) p Ff 833 1649 a(`) p 902 1649 a(h) p -Fh(a) p Ff(i) p Fe 1025 1649 a(:) p 0 0 1 TeXcolorrgb -Fi 1067 1649 a(s) p 0 0.7 0 TeXcolorrgb Black Fa 2 1592 -a(\(Use\)) p 0 0.7 0 TeXcolorrgb Black Black Black 90 rotate -dyy eop -%%Trailer -end -userdict /end-hook known{end-hook}if -%%EOF diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/doc/lablgtk.mgp b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/doc/lablgtk.mgp deleted file mode 100644 index 3eac79341..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/doc/lablgtk.mgp +++ /dev/null @@ -1,558 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%deffont "code" xfont "itc avant garde gothic-demi-r", tfont "verdana.ttf" -%deffont "code-bold" xfont "terminal-bold-r", tfont "verdanab.ttf" -%deffont "sans" xfont "helvetica-medium-r", tfont "comic.ttf" -%deffont "sans-bold" xfont "helvetica-bold-r", tfont "comicbd.ttf" -%deffont "sansit" xfont "helvetica-medium-i", tfont "marlett.ttf" -%deffont "title" xfont "times-medium-r", tfont "times.ttf" -%deffont "title-bold" xfont "times-bold-r", tfont "timesbd.ttf" -%default 1 right, size 2, fore "white", bgrad -%default 1 vfont "goth", font "sans-bold", vgap 100 -%default 2 leftfill, size 8, vgap 60, prefix " ", font "sans" -%default 3 size 4, bar "beige", vgap 10 -%default 4 size 5, fore "white", vgap 20, prefix " " -%tab 1 size 5, vgap 40, prefix " ", icon box "green" 50 -%tab 2 size 5, vgap 40, prefix " ", icon arc "yellow" 50 -%tab 3 size 5, vgap 40, prefix " ", icon arc "white" 40 -%tab com1 size 4, prefix " " -%tab com2 size 4, prefix " " -%tab com3 size 4, prefix " " -%tab txt font "sans", size 5, fore "white", prefix " " -%tab vspace size 2 -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%page -%nodefault -%size 9, font "title-bold" -%fore "beige", back "navyblue", vgap 20 -%center - - -A Type System in Action: - -the LablGTK Interface - - -%size 7, font "title" -Jacques Garrigue -Kyoto University -%size 6, font "code" -garrigue@kurims.kyoto-u.ac.jp - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%page -2 -Synopsis - - Objective Label introduction -%size 2 - - Why GTK+? - GTK+/LablGTK structure -%size 2 - - Low Level - Type encoding with variants - Labeled parameters -%size 2 - - High Level - Object-orientation - Optional arguments - Polymorphic methods -%size 2 - - Conclusion - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%page -3 -Objective Label - - Based on Objective Caml - ML syntax and type inference - Class-based object system - - Several extensions - Labeled and optional parameters - Polymorphic variants - Polymorphic methods - - Tools - Type-based browser - GUI and 3D graphics - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%page -4 -Labels and optionals - -%font "code", size 4, prefix " ", fore "yellow" -let rec map fun:f = function - [] -> [] - | x :: l -> f x :: map fun:f l -%fore "lightpink" -val map : fun:('a -> 'b) -> 'a list -> 'b list - -%pause, fore "yellow", font "code" -let f = map [1;2;3] -%fore "lightpink" -val f : fun:(int -> 'a) -> 'a list -%fore "yellow" -f fun:(fun x -> 2*x) -%fore "lightpink" -- : int list = [2; 3; 4] - -%pause, fore "yellow", font "code" -let f x ?incr:y [< 1 >] = x + y -%fore "lightpink" -val f : int -> ?incr:int -> int -%fore "yellow" -f 1 -%fore "lightpink" -- : int = 2 - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%page -5 -Polymorphic variants - - -%font "code", size 4, prefix " ", fore "yellow" -[`on; `off] -%fore "lightpink" -- : [> off on] list = [`on; `off] - -%pause, fore "yellow", font "code" -`number 1;; -%fore "lightpink" -- : [> number(int)] = `number 1 - -%pause, fore "yellow", font "code" -let f = function `on -> 1 | `off -> 0 | `number n -> n -%fore "lightpink" -val f : [< number(int) off on] -> int - -%pause, fore "yellow", font "code" -type t = [on off number(int)] - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%page -6 -Polymorphic methods - -Not allowed in Objective Caml -%size 2 - -%font "code", size 4, prefix " ", fore "yellow" -class c = object method m x = x end -%fore "red" -Some type variables are unbound in this type: - class c : object method m : 'a -> 'a end -The method m has type 'a -> 'a where 'a is unbound - -%pause, font "sans", size 5, prefix " ", fore "white" -Need explicit annotation in O'Labl -%size 2 - -%font "code", size 4, prefix " ", fore "yellow" -class c = object - method m : 'a. 'a -> 'a = fun x -> x -end -%fore "lightpink" -class c : object method m : 'a -> 'a end -%fore "yellow" -let o = new c -%fore "lightpink" -val o : c = -%fore "yellow" -o#m 1, o#m true -%fore "lightpink" -- : int * bool = 1, true - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%page -7 -Why GTK+ ? - -Why use the GIMP Tool Kit? -%size 3 - - Widely used in free software - - Easy to interface - Written in C (QT uses C++) - Memory management - -Drawbacks -%size 3 - - Design lacks uniformity - Extensive use of dynamic typing - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%page -8 -GTK+ Structure - -Class hierarchy based on GtkObject -%size 2 - - Single inheritance -&com1 New widgets may redefine methods -%size 2 - - Dynamically checked -&com1 Casting necessay both up and down -%size 2 - - Developper-side hierarchy -&com1 Inheritance is not always meaningful to the user -%size 2 - -%size 5 -Signal-based callback mechanism -%size 2 - - May use multiple callbacks -%size 2 - - Signals are polymorphic - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%page -9 -LablGTK structure - -Typed at all levels - - Low-level interface -%size 2 - - C stub functions -- typechecked by C - - ML type declarations -- ML abstract types - - High-level interface -%size 2 - - ML class wrappers -- ML concrete types - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%page -10 -Low Level Interface - -Goals - - Strongly typed interface -&com1 heavy use of advanced typing techniques - - Very little ML code -&com1 C-stubs and external declarations - - Safe memory management -&com1 have the library cooperate with the GC - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%page -11 -Low level encoding (I) - - -How to represent widget subtyping in ML? - - Example: buttons' hierarchy -%size 2 - -%font "code", size 5, prefix " ", fore "yellow" -GtkObject - GtkWidget - GtkContainer - GtkButton - GtkToggleButton - GtkRadioButton - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%page -12 -Variants as set constraints - - -Variants can be seen as sets of possible values: - - [tag1 ... tagn] = {tag1,...,tagn} - - -Polymorphic variants introduce constraints - - $B&A(B[> tag1 ... tagn] $B"N(B $B&A(B $B"?(B {tag1,...,tagn} - $B&A(B[< tag1 ... tagn] $B"N(B $B&A(B $B">(B {tag1,...,tagn} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%page -13 -Encoding hierarchies - -Define an abstract type -&vspace -%font "code", fore "yellow", size 5 - type 'a obj - -&txt Use tags to represent properties -&vspace -%font "code", fore "yellow", size 5 - type t = [class1 ... classn] obj - -&txt Functions check properties -&vspace -%font "code", fore "yellow", size 5 - val f : [> class1 ... classn] obj -> ... -&txt - Subsumes Haskell type classes -&vspace - Allows multiple inheritance - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%page -14 -Low level encoding (II) - -Example: buttons' hierarchy -%size 2 - -%font "code", size 4, prefix " ", fore "yellow" -type 'a obj -type widget = [widget] obj -type container = [widget container] obj -type button = [widget container button] obj -type toggle_button = [widget ... togglebutton] obj -type radio_button = [widget ... radiobutton] obj -type state_type = [ NORMAL - ACTIVE PRELIGHT SELECTED INSENSITIVE ] -val set_state : [> widget] obj -> state_type -> unit -val children : [> container] obj -> [widget] obj list -val clicked : [> button] obj -> unit -val set_group : [> radiobutton] obj -> group -> unit - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%page -15 -Alternate encoding - -Use only standard ML features -%size 2 - -%font "code", size 4, prefix " ", fore "yellow", vgap 50 -type 'a obj -type 'a widget -... -type 'a radio -type state_type = NORMAL | ACTIVE | ... | INSENSITIVE -val set_state : 'a widget obj -> state_type -> unit -val children : - 'a container widget obj -> unit widget obj list -val clicked : 'a button container widget obj -> unit - -&txt Weaknesses - No multiple inheritance - Not very intuitive for the user - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%page -16 -Low level encoding (III) - -Use of labeled parameters -%size 2 - -%font "code", size 4, prefix " ", fore "yellow", vgap 50 -val adjustment_new : - value:float -> lower:float -> upper:float -> - step_incr:float -> page_incr:float -> - page_size:float -> adjustment obj - -&txt Signals -%size 2 - -%font "code", size 4, prefix " ", fore "yellow", vgap 50 -type ('a,'b) signal = - { name: string; marshaller: 'b -> GtkArgv.t -> unit } -val connect : 'a obj -> sig:('a,'b) signal -> - callback:'b -> ?after:bool -> id -val button_clicked : ([> button], unit -> unit) signal - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%page -17 -High-Level Interface - -Problems with GTK+ -%size 2 - - Name space is scattered -&com1 One has to know in which superclass a function is defined - Developper oriented design -&com1 There is no clear distinction between public and private definitions - -&txt LablGTK design -%size 2 - - OCaml classes to reunify name space - Omit developper-oriented methods - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%page -18 -High-level classes - -%font "code", size 4, prefix " ", fore "yellow" -class button : -%fore "lightgreen" - ?label:string -> -%fore "lightpink" - ?border_width:int -> - ?width:int -> - ?height:int -> -%fore "lightgray" - ?packing:(GButton.button -> unit) -> - ?show:bool -> -%fore "yellow" - object -%fore "lightgray" - method destroy : unit -> unit - method as_widget : Gtk.widget obj - method misc : GObj.widget_misc -%fore "lightpink" - method add : #is_widget -> unit - method set_border_width : int -> unit -%fore "lightgreen" - method clicked : unit -> unit - method connect : GButton.button_signals - method grab_default : unit -> unit -%fore "yellow" - end - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%page -19 -High-level features - - Objective Caml classes -&com1 allow collecting methods from different modules - - Use optionals in class constructors -&com1 makes widget creation much easier - - Polymorphic methods -&com1 needed for container widgets -%size 2 - -%font "code", size 4, fore "yellow", vgap 50 - method add : 'a. (#is_widget as 'a) -> unit - -%fore "white", font "sans" - Polymorphic variants -&com1 for C-style enumeration types, avoid name-space dependancies - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%page -20 -Polymorphic methods (I) - - Instance of first-class polymorphism -%size 2 - - first-class polytypes cannot be inferred - they are propagated by the definition flow - - Technically -%size 2 - - use polymorphism to track available information - type system excludes derivations based on "guessed" information - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%page -21 -First class polymorphism - -%prefix " " -%image "formula.eps" 512x384 -%size 2 - -%prefix " ", size 5, fore "lightblue" - ($B&R(B1 : $B&R(B : $B&R(B2) $B"N(B $B&R(B1 = $B&H(B($B&Q(B1($B&R(B)) $B"J(B $B&R(B2 = $B&H(B($B&Q(B2($B&R(B)) -%fore "white" -where $B&H(B instantiates free variables, and $B&Q(B1,$B&Q(B2 rename free labels of $B&R(B. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%page -22 -Polymorphic methods (II) - -Definitions -%size 2 - -%font "code", size 4, prefix " ", fore "yellow", vgap 50 -type is_widget = < as_widget : widget obj > -type #is_widget = < as_widget : widget obj; .. > -type container = - < ... ; add : 'a. (#as_widget as 'a) -> unit; ... > - -%pause -&txt Propagation -%size 2 - -%font "code", size 4, prefix " ", fore "lightgreen", vgap 50 -fun (cont : container) -> cont#add widget - -%pause -let button = new button in button#add widget - -%pause, fore "red" -fun cont -> cont#add widget - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%page -23 -Programming example - -Hello World -%size 2 - -%font "code", size 4, prefix " ", fore "yellow" -open GMain - -let window = - new GWindow.window border_width: 10 - -let button = - new GButton.button - label: "Hello World" packing: window#add - -let _ = - window#connect#destroy callback: Main.quit; - button#connect#clicked callback: window#destroy; - window#show (); - Main.main () - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%page -24 -Conclusion - - Results -%size 2 - - Could build a strongly typed interface - - It is easier to use than the C API - - Makes effective use of extensions to the type system - - Comments -%size 2 - - Still difficulties with the Caml object system -&com2 class recursion, method type refinement, etc... diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/GL/morph3d.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/GL/morph3d.ml deleted file mode 100644 index a08726e05..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/GL/morph3d.ml +++ /dev/null @@ -1,607 +0,0 @@ -(* $Id$ *) - -(*- - * morph3d.c - Shows 3D morphing objects (TK Version) - * - * This program was inspired on a WindowsNT(R)'s screen saver. It was written - * from scratch and it was not based on any other source code. - * - * Porting it to xlock (the final objective of this code since the moment I - * decided to create it) was possible by comparing the original Mesa's gear - * demo with it's ported version, so thanks for Danny Sung for his indirect - * help (look at gear.c in xlock source tree). NOTE: At the moment this code - * was sent to Brian Paul for package inclusion, the XLock Version was not - * available. In fact, I'll wait it to appear on the next Mesa release (If you - * are reading this, it means THIS release) to send it for xlock package - * inclusion). It will probably there be a GLUT version too. - * - * Thanks goes also to Brian Paul for making it possible and inexpensive - * to use OpenGL at home. - * - * Since I'm not a native english speaker, my apologies for any gramatical - * mistake. - * - * My e-mail addresses are - * - * vianna@cat.cbpf.br - * and - * marcelo@venus.rdc.puc-rio.br - * - * Marcelo F. Vianna (Feb-13-1997) - *) - -(* -This document is VERY incomplete, but tries to describe the mathematics used -in the program. At this moment it just describes how the polyhedra are -generated. On futhurer versions, this document will be probabbly improved. - -Since I'm not a native english speaker, my apologies for any gramatical -mistake. - -Marcelo Fernandes Vianna -- Undergraduate in Computer Engeneering at Catholic Pontifical University -- of Rio de Janeiro (PUC-Rio) Brasil. -- e-mail: vianna@cat.cbpf.br or marcelo@venus.rdc.puc-rio.br -- Feb-13-1997 - -POLYHEDRA GENERATION - -For the purpose of this program it's not sufficient to know the polyhedra -vertexes coordinates. Since the morphing algorithm applies a nonlinear -transformation over the surfaces (faces) of the polyhedron, each face has -to be divided into smaller ones. The morphing algorithm needs to transform -each vertex of these smaller faces individually. It's a very time consoming -task. - -In order to reduce calculation overload, and since all the macro faces of -the polyhedron are transformed by the same way, the generation is made by -creating only one face of the polyhedron, morphing it and then rotating it -around the polyhedron center. - -What we need to know is the face radius of the polyhedron (the radius of -the inscribed sphere) and the angle between the center of two adjacent -faces using the center of the sphere as the angle's vertex. - -The face radius of the regular polyhedra are known values which I decided -to not waste my time calculating. Following is a table of face radius for -the regular polyhedra with edge length = 1: - - TETRAHEDRON : 1/(2*sqrt(2))/sqrt(3) - CUBE : 1/2 - OCTAHEDRON : 1/sqrt(6) - DODECAHEDRON : T^2 * sqrt((T+2)/5) / 2 -> where T=(sqrt(5)+1)/2 - ICOSAHEDRON : (3*sqrt(3)+sqrt(15))/12 - -I've not found any reference about the mentioned angles, so I needed to -calculate them, not a trivial task until I figured out how :) -Curiously these angles are the same for the tetrahedron and octahedron. -A way to obtain this value is inscribing the tetrahedron inside the cube -by matching their vertexes. So you'll notice that the remaining unmatched -vertexes are in the same straight line starting in the cube/tetrahedron -center and crossing the center of each tetrahedron's face. At this point -it's easy to obtain the bigger angle of the isosceles triangle formed by -the center of the cube and two opposite vertexes on the same cube face. -The edges of this triangle have the following lenghts: sqrt(2) for the base -and sqrt(3)/2 for the other two other edges. So the angle we want is: - +-----------------------------------------------------------+ - | 2*ARCSIN(sqrt(2)/sqrt(3)) = 109.47122063449069174 degrees | - +-----------------------------------------------------------+ -For the cube this angle is obvious, but just for formality it can be -easily obtained because we also know it's isosceles edge lenghts: -sqrt(2)/2 for the base and 1/2 for the other two edges. So the angle we -want is: - +-----------------------------------------------------------+ - | 2*ARCSIN((sqrt(2)/2)/1) = 90.000000000000000000 degrees | - +-----------------------------------------------------------+ -For the octahedron we use the same idea used for the tetrahedron, but now -we inscribe the cube inside the octahedron so that all cubes's vertexes -matches excatly the center of each octahedron's face. It's now clear that -this angle is the same of the thetrahedron one: - +-----------------------------------------------------------+ - | 2*ARCSIN(sqrt(2)/sqrt(3)) = 109.47122063449069174 degrees | - +-----------------------------------------------------------+ -For the dodecahedron it's a little bit harder because it's only relationship -with the cube is useless to us. So we need to solve the problem by another -way. The concept of Face radius also exists on 2D polygons with the name -Edge radius: - Edge Radius For Pentagon (ERp) - ERp = (1/2)/TAN(36 degrees) * VRp = 0.6881909602355867905 - (VRp is the pentagon's vertex radio). - Face Radius For Dodecahedron - FRd = T^2 * sqrt((T+2)/5) / 2 = 1.1135163644116068404 -Why we need ERp? Well, ERp and FRd segments forms a 90 degrees angle, -completing this triangle, the lesser angle is a half of the angle we are -looking for, so this angle is: - +-----------------------------------------------------------+ - | 2*ARCTAN(ERp/FRd) = 63.434948822922009981 degrees | - +-----------------------------------------------------------+ -For the icosahedron we can use the same method used for dodecahedron (well -the method used for dodecahedron may be used for all regular polyhedra) - Edge Radius For Triangle (this one is well known: 1/3 of the triangle height) - ERt = sin(60)/3 = sqrt(3)/6 = 0.2886751345948128655 - Face Radius For Icosahedron - FRi= (3*sqrt(3)+sqrt(15))/12 = 0.7557613140761707538 -So the angle is: - +-----------------------------------------------------------+ - | 2*ARCTAN(ERt/FRi) = 41.810314895778596167 degrees | - +-----------------------------------------------------------+ - -*) - - -let scale = 0.3 - -let vect_mul (x1,y1,z1) (x2,y2,z2) = - (y1 *. z2 -. z1 *. y2, z1 *. x2 -. x1 *. z2, x1 *. y2 -. y1 *. x2) - -let sqr a = a *. a - -(* Increasing this values produces better image quality, the price is speed. *) -(* Very low values produces erroneous/incorrect plotting *) -let tetradivisions = 23 -let cubedivisions = 20 -let octadivisions = 21 -let dodecadivisions = 10 -let icodivisions = 15 - -let tetraangle = 109.47122063449069174 -let cubeangle = 90.000000000000000000 -let octaangle = 109.47122063449069174 -let dodecaangle = 63.434948822922009981 -let icoangle = 41.810314895778596167 - -let pi = acos (-1.) -let sqrt2 = sqrt 2. -let sqrt3 = sqrt 3. -let sqrt5 = sqrt 5. -let sqrt6 = sqrt 6. -let sqrt15 = sqrt 15. -let cossec36_2 = 0.8506508083520399322 -let cosd x = cos (float x /. 180. *. pi) -let sind x = sin (float x /. 180. *. pi) -let cos72 = cosd 72 -let sin72 = sind 72 -let cos36 = cosd 36 -let sin36 = sind 36 - -(*************************************************************************) - -let front_shininess = 60.0 -let front_specular = 0.7, 0.7, 0.7, 1.0 -let ambient = 0.0, 0.0, 0.0, 1.0 -let diffuse = 1.0, 1.0, 1.0, 1.0 -let position0 = 1.0, 1.0, 1.0, 0.0 -let position1 = -1.0,-1.0, 1.0, 0.0 -let lmodel_ambient = 0.5, 0.5, 0.5, 1.0 -let lmodel_twoside = true - -let materialRed = 0.7, 0.0, 0.0, 1.0 -let materialGreen = 0.1, 0.5, 0.2, 1.0 -let materialBlue = 0.0, 0.0, 0.7, 1.0 -let materialCyan = 0.2, 0.5, 0.7, 1.0 -let materialYellow = 0.7, 0.7, 0.0, 1.0 -let materialMagenta = 0.6, 0.2, 0.5, 1.0 -let materialWhite = 0.7, 0.7, 0.7, 1.0 -let materialGray = 0.2, 0.2, 0.2, 1.0 -let all_gray = Array.create 20 materialGray - -let vertex ~xf ~yf ~zf ~ampvr2 = - let xa = xf +. 0.01 and yb = yf +. 0.01 in - let xf2 = sqr xf and yf2 = sqr yf in - let factor = 1. -. (xf2 +. yf2) *. ampvr2 - and factor1 = 1. -. (sqr xa +. yf2) *. ampvr2 - and factor2 = 1. -. (xf2 +. sqr yb) *. ampvr2 in - let vertx = factor *. xf and verty = factor *. yf - and vertz = factor *. zf in - let neiax = factor1 *. xa -. vertx and neiay = factor1 *. yf -. verty - and neiaz = factor1 *. zf -. vertz and neibx = factor2 *. xf -. vertx - and neiby = factor2 *. yb -. verty and neibz = factor2 *. zf -. vertz in - GlDraw.normal3 (vect_mul (neiax, neiay, neiaz) (neibx, neiby, neibz)); - GlDraw.vertex3 (vertx, verty, vertz) - -let triangle ~edge ~amp ~divisions ~z = - let divi = float divisions in - let vr = edge *. sqrt3 /. 3. in - let ampvr2 = amp /. sqr vr - and zf = edge *. z in - let ax = edge *. (0.5 /. divi) - and ay = edge *. (-0.5 *. sqrt3 /. divi) - and bx = edge *. (-0.5 /. divi) in - for ri = 1 to divisions do - GlDraw.begins `triangle_strip; - for ti = 0 to ri - 1 do - vertex ~zf ~ampvr2 - ~xf:(float (ri-ti) *. ax +. float ti *. bx) - ~yf:(vr +. float (ri-ti) *. ay +. float ti *. ay); - vertex ~zf ~ampvr2 - ~xf:(float (ri-ti-1) *. ax +. float ti *. bx) - ~yf:(vr +. float (ri-ti-1) *. ay +. float ti *. ay) - done; - vertex ~xf:(float ri *. bx) ~yf:(vr +. float ri *. ay) ~zf ~ampvr2; - GlDraw.ends () - done - -let square ~edge ~amp ~divisions ~z = - let divi = float divisions in - let zf = edge *. z - and ampvr2 = amp /. sqr (edge *. sqrt2 /. 2.) in - for yi = 0 to divisions - 1 do - let yf = edge *. (-0.5 +. float yi /. divi) in - let yf2 = sqr yf in - let y = yf +. 1.0 /. divi *. edge in - let y2 = sqr y in - GlDraw.begins `quad_strip; - for xi = 0 to divisions do - let xf = edge *. (-0.5 +. float xi /. divi) in - vertex ~xf ~yf:y ~zf ~ampvr2; - vertex ~xf ~yf ~zf ~ampvr2 - done; - GlDraw.ends () - done - -let pentagon ~edge ~amp ~divisions ~z = - let divi = float divisions in - let zf = edge *. z - and ampvr2 = amp /. sqr(edge *. cossec36_2) in - let x = - Array.init 6 - ~f:(fun fi -> -. cos (float fi *. 2. *. pi /. 5. +. pi /. 10.) - /. divi *. cossec36_2 *. edge) - and y = - Array.init 6 - ~f:(fun fi -> sin (float fi *. 2. *. pi /. 5. +. pi /. 10.) - /. divi *. cossec36_2 *. edge) - in - for ri = 1 to divisions do - for fi = 0 to 4 do - GlDraw.begins `triangle_strip; - for ti = 0 to ri-1 do - vertex ~zf ~ampvr2 - ~xf:(float(ri-ti) *. x.(fi) +. float ti *. x.(fi+1)) - ~yf:(float(ri-ti) *. y.(fi) +. float ti *. y.(fi+1)); - vertex ~zf ~ampvr2 - ~xf:(float(ri-ti-1) *. x.(fi) +. float ti *. x.(fi+1)) - ~yf:(float(ri-ti-1) *. y.(fi) +. float ti *. y.(fi+1)) - done; - vertex ~xf:(float ri *. x.(fi+1)) ~yf:(float ri *. y.(fi+1)) ~zf ~ampvr2; - GlDraw.ends () - done - done - -let call_list list color = - GlLight.material ~face:`both (`diffuse color); - GlList.call list - -let draw_tetra ~amp ~divisions ~color = - let list = GlList.create `compile in - triangle ~edge:2.0 ~amp ~divisions ~z:(0.5 /. sqrt6); - GlList.ends(); - - call_list list color.(0); - GlMat.push(); - GlMat.rotate ~angle:180.0 ~z:1.0 (); - GlMat.rotate ~angle:(-.tetraangle) ~x:1.0 (); - call_list list color.(1); - GlMat.pop(); - GlMat.push(); - GlMat.rotate ~angle:180.0 ~y:1.0 (); - GlMat.rotate ~angle:(-180.0 +. tetraangle) ~x:0.5 ~y:(sqrt3 /. 2.) (); - call_list list color.(2); - GlMat.pop(); - GlMat.rotate ~angle:180.0 ~y:1.0 (); - GlMat.rotate ~angle:(-180.0 +. tetraangle) ~x:0.5 ~y:(-.sqrt3 /. 2.) (); - call_list list color.(3); - - GlList.delete list - -let draw_cube ~amp ~divisions ~color = - let list = GlList.create `compile in - square ~edge:2.0 ~amp ~divisions ~z:0.5; - GlList.ends (); - - call_list list color.(0); - for i = 1 to 3 do - GlMat.rotate ~angle:cubeangle ~x:1.0 (); - call_list list color.(i) - done; - GlMat.rotate ~angle:cubeangle ~y:1.0 (); - call_list list color.(4); - GlMat.rotate ~angle:(2.0 *. cubeangle) ~y:1.0 (); - call_list list color.(5); - - GlList.delete list - -let draw_octa ~amp ~divisions ~color = - let list = GlList.create `compile in - triangle ~edge:2.0 ~amp ~divisions ~z:(1.0 /. sqrt6); - GlList.ends (); - - let do_list (i,y) = - GlMat.push(); - GlMat.rotate ~angle:180.0 ~y:1.0 (); - GlMat.rotate ~angle:(-.octaangle) ~x:0.5 ~y (); - call_list list color.(i); - GlMat.pop() - in - call_list list color.(0); - GlMat.push(); - GlMat.rotate ~angle:180.0 ~z:1.0 (); - GlMat.rotate ~angle:(-180.0 +. octaangle) ~x:1.0 (); - call_list list color.(1); - GlMat.pop(); - List.iter [2, sqrt3 /. 2.0; 3, -.sqrt3 /. 2.0] ~f:do_list; - GlMat.rotate ~angle:180.0 ~x:1.0 (); - GlLight.material ~face:`both (`diffuse color.(4)); - GlList.call list; - GlMat.push(); - GlMat.rotate ~angle:180.0 ~z:1.0 (); - GlMat.rotate ~angle:(-180.0 +. octaangle) ~x:1.0 (); - GlLight.material ~face:`both (`diffuse color.(5)); - GlList.call list; - GlMat.pop(); - List.iter [6, sqrt3 /. 2.0; 7, -.sqrt3 /. 2.0] ~f:do_list; - - GlList.delete list - -let draw_dodeca ~amp ~divisions ~color = - let tau = (sqrt5 +. 1.0) /. 2.0 in - let list = GlList.create `compile in - pentagon ~edge:2.0 ~amp ~divisions - ~z:(sqr(tau) *. sqrt ((tau+.2.0)/.5.0) /. 2.0); - GlList.ends (); - - let do_list (i,angle,x,y) = - GlMat.push(); - GlMat.rotate ~angle:angle ~x ~y (); - call_list list color.(i); - GlMat.pop(); - in - GlMat.push (); - call_list list color.(0); - GlMat.rotate ~angle:180.0 ~z:1.0 (); - List.iter ~f:do_list - [ 1, -.dodecaangle, 1.0, 0.0; - 2, -.dodecaangle, cos72, sin72; - 3, -.dodecaangle, cos72, -.sin72; - 4, dodecaangle, cos36, -.sin36; - 5, dodecaangle, cos36, sin36 ]; - GlMat.pop (); - GlMat.rotate ~angle:180.0 ~x:1.0 (); - call_list list color.(6); - GlMat.rotate ~angle:180.0 ~z:1.0 (); - List.iter ~f:do_list - [ 7, -.dodecaangle, 1.0, 0.0; - 8, -.dodecaangle, cos72, sin72; - 9, -.dodecaangle, cos72, -.sin72; - 10, dodecaangle, cos36, -.sin36 ]; - GlMat.rotate ~angle:dodecaangle ~x:cos36 ~y:sin36 (); - call_list list color.(11); - - GlList.delete list - -let draw_ico ~amp ~divisions ~color = - let list = GlList.create `compile in - triangle ~edge:1.5 ~amp ~divisions - ~z:((3.0 *. sqrt3 +. sqrt15) /. 12.0); - GlList.ends (); - - let do_list1 i = - GlMat.rotate ~angle:180.0 ~y:1.0 (); - GlMat.rotate ~angle:(-180.0 +. icoangle) ~x:0.5 ~y:(sqrt3/.2.0) (); - call_list list color.(i) - and do_list2 i = - GlMat.rotate ~angle:180.0 ~y:1.0 (); - GlMat.rotate ~angle:(-180.0 +. icoangle) ~x:0.5 ~y:(-.sqrt3/.2.0) (); - call_list list color.(i) - and do_list3 i = - GlMat.rotate ~angle:180.0 ~z:1.0 (); - GlMat.rotate ~angle:(-.icoangle) ~x:1.0 (); - call_list list color.(i) - in - GlMat.push (); - call_list list color.(0); - GlMat.push (); - do_list3 1; - GlMat.push (); - do_list1 2; - GlMat.pop (); - do_list2 3; - GlMat.pop (); - GlMat.push (); - do_list1 4; - GlMat.push (); - do_list1 5; - GlMat.pop(); - do_list3 6; - GlMat.pop (); - do_list2 7; - GlMat.push (); - do_list2 8; - GlMat.pop (); - do_list3 9; - GlMat.pop (); - GlMat.rotate ~angle:180.0 ~x:1.0 (); - call_list list color.(10); - GlMat.push (); - do_list3 11; - GlMat.push (); - do_list1 12; - GlMat.pop (); - do_list2 13; - GlMat.pop (); - GlMat.push (); - do_list1 14; - GlMat.push (); - do_list1 15; - GlMat.pop (); - do_list3 16; - GlMat.pop (); - do_list2 17; - GlMat.push (); - do_list2 18; - GlMat.pop (); - do_list3 19; - - GlList.delete list - -class view area = object (self) - val area : GlGtk.area = area - val mutable smooth = true - val mutable step = 0. - val mutable obj = 1 - val mutable draw_object = fun ~amp -> () - val mutable magnitude = 0. - - method width = area#misc#allocation.Gtk.width - method height = area#misc#allocation.Gtk.height - - method draw () = - let ratio = float self#height /. float self#width in - GlClear.clear [`color;`depth]; - GlMat.push(); - GlMat.translate ~z:(-10.0) (); - GlMat.scale ~x:(scale *. ratio) ~y:scale ~z:scale (); - GlMat.translate () - ~x:(2.5 *. ratio *. sin (step *. 1.11)) - ~y:(2.5 *. cos (step *. 1.25 *. 1.11)); - GlMat.rotate ~angle:(step *. 100.) ~x:1.0 (); - GlMat.rotate ~angle:(step *. 95.) ~y:1.0 (); - GlMat.rotate ~angle:(step *. 90.) ~z:1.0 (); - draw_object ~amp:((sin step +. 1.0/.3.0) *. (4.0/.5.0) *. magnitude); - GlMat.pop(); - Gl.flush(); - area#swap_buffers (); - step <- step +. 0.05 - - method reshape ~width ~height = - GlDraw.viewport ~x:0 ~y:0 ~w:width ~h:height; - GlMat.mode `projection; - GlMat.load_identity(); - GlMat.frustum ~x:(-1.0, 1.0) ~y:(-1.0, 1.0) ~z:(5.0, 15.0); - GlMat.mode `modelview - - method key sym = - begin match sym with - "1" -> obj <- 1 - | "2" -> obj <- 2 - | "3" -> obj <- 3 - | "4" -> obj <- 4 - | "5" -> obj <- 5 - | "\r" -> smooth <- not smooth - | "\027" -> area#misc#toplevel#destroy (); exit 0 - | _ -> () - end; - self#pinit - - method pinit = - begin match obj with - 1 -> - draw_object <- draw_tetra - ~divisions:tetradivisions - ~color:[|materialRed; materialGreen; - materialBlue; materialWhite|]; - magnitude <- 2.5 - | 2 -> - draw_object <- draw_cube - ~divisions:cubedivisions - ~color:[|materialRed; materialGreen; materialCyan; - materialMagenta; materialYellow; materialBlue|]; - magnitude <- 2.0 - | 3 -> - draw_object <- draw_octa - ~divisions:octadivisions - ~color:[|materialRed; materialGreen; materialBlue; - materialWhite; materialCyan; materialMagenta; - materialGray; materialYellow|]; - magnitude <- 2.5 - | 4 -> - draw_object <- draw_dodeca - ~divisions:dodecadivisions - ~color:[|materialRed; materialGreen; materialCyan; - materialBlue; materialMagenta; materialYellow; - materialGreen; materialCyan; materialRed; - materialMagenta; materialBlue; materialYellow|]; - magnitude <- 2.0 - | 5 -> - draw_object <- draw_ico - ~divisions:icodivisions - ~color:[|materialRed; materialGreen; materialBlue; - materialCyan; materialYellow; materialMagenta; - materialRed; materialGreen; materialBlue; - materialWhite; materialCyan; materialYellow; - materialMagenta; materialRed; materialGreen; - materialBlue; materialCyan; materialYellow; - materialMagenta; materialGray|]; - magnitude <- 3.5 - | _ -> () - end; - GlDraw.shade_model (if smooth then `smooth else `flat) - initializer - area#connect#display ~callback:self#draw; - area#connect#reshape ~callback:self#reshape; - () -end - -open GMain - -let main () = - List.iter ~f:print_string - [ "Morph 3D - Shows morphing platonic polyhedra\n"; - "Author: Marcelo Fernandes Vianna (vianna@cat.cbpf.br)\n"; - "Ported to LablGL by Jacques Garrigue\n\n"; - " [1] - Tetrahedron\n"; - " [2] - Hexahedron (Cube)\n"; - " [3] - Octahedron\n"; - " [4] - Dodecahedron\n"; - " [5] - Icosahedron\n"; - "[RETURN] - Toggle smooth/flat shading\n"; - " [ESC] - Quit\n" ]; - flush stdout; - - let window = - GWindow.window ~title:"Morph 3D - Shows morphing platonic polyhedra" () - in - window#connect#destroy ~callback:Main.quit; - window#set_resize_mode `IMMEDIATE; - - let area = GlGtk.area [`DEPTH_SIZE 1;`RGBA;`DOUBLEBUFFER] - ~width:640 ~height:480 ~packing:window#add () in - - let view = new view area in - - area#connect#realize ~callback: - begin fun () -> - view#pinit; - GlClear.depth 1.0; - GlClear.color (0.0, 0.0, 0.0); - GlDraw.color (1.0, 1.0, 1.0); - - GlClear.clear [`color;`depth]; - Gl.flush(); - - List.iter ~f:(GlLight.light ~num:0) - [`ambient ambient; `diffuse diffuse; `position position0]; - List.iter ~f:(GlLight.light ~num:1) - [`ambient ambient; `diffuse diffuse; `position position1]; - GlLight.light_model (`ambient lmodel_ambient); - GlLight.light_model (`two_side lmodel_twoside); - List.iter ~f:Gl.enable - [`lighting;`light0;`light1;`depth_test;`normalize]; - - GlLight.material ~face:`both (`shininess front_shininess); - GlLight.material ~face:`both (`specular front_specular); - - GlMisc.hint `fog `fastest; - GlMisc.hint `perspective_correction `fastest; - GlMisc.hint `polygon_smooth `fastest - end; - - window#event#connect#key_press - ~callback:(fun ev -> view#key (GdkEvent.Key.string ev); true); - - Timeout.add ~ms:20 - ~callback:(fun _ -> if area#misc#visible then view#draw (); true); - window#show (); - Main.main () - -let _ = main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/GL/planet.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/GL/planet.ml deleted file mode 100644 index 51f947c48..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/GL/planet.ml +++ /dev/null @@ -1,125 +0,0 @@ -(* $Id$ *) - -class planet area = object (self) - val area : GlGtk.area = area - val mutable year = 0.0 - val mutable day = 0.0 - val mutable eye = 0.0 - val mutable time = 0.0 - - method tick new_time = - if time = 0. then time <- new_time else - let diff = new_time -. time in - time <- new_time; - day <- mod_float (day +. diff *. 200.) 360.0; - year <- mod_float (year +. diff *. 20.) 360.0 - method day_add () = - day <- mod_float (day +. 10.0) 360.0 - method day_subtract () = - day <- mod_float (day -. 10.0) 360.0 - method year_add () = - year <- mod_float (year +. 5.0) 360.0 - method year_subtract () = - year <- mod_float (year -. 5.0) 360.0 - method eye x = - eye <- x; self#display () - - method display () = - GlClear.clear [`color;`depth]; - - GlDraw.color (1.0, 1.0, 1.0); - GlMat.push(); - GlMat.rotate ~angle:eye ~x:1. (); -(* draw sun *) - GlLight.material ~face:`front (`specular (1.0,1.0,0.0,1.0)); - GlLight.material ~face:`front (`shininess 5.0); - GluQuadric.sphere ~radius:1.0 ~slices:32 ~stacks:32 (); -(* draw smaller planet *) - GlMat.rotate ~angle:year ~y:1.0 (); - GlMat.translate ~x:3.0 (); - GlMat.rotate ~angle:day ~y:1.0 (); - GlDraw.color (0.0, 1.0, 1.0); - GlDraw.shade_model `flat; - GlLight.material ~face:`front(`shininess 128.0); - GluQuadric.sphere ~radius:0.2 ~slices:10 ~stacks:10 (); - GlDraw.shade_model `smooth; - GlMat.pop (); - Gl.flush (); - area#swap_buffers () -end - -let myinit () = - let light_ambient = 0.5, 0.5, 0.5, 1.0 - and light_diffuse = 1.0, 0.8, 0.2, 1.0 - and light_specular = 1.0, 1.0, 1.0, 1.0 - (* light_position is NOT default value *) - and light_position = 1.0, 1.0, 1.0, 0.0 - in - List.iter ~f:(GlLight.light ~num:0) - [ `ambient light_ambient; `diffuse light_diffuse; - `specular light_specular; `position light_position ]; - GlFunc.depth_func `less; - List.iter ~f:Gl.enable [`lighting; `light0; `depth_test]; - GlDraw.shade_model `smooth - - -let my_reshape ~width:w ~height:h = - GlDraw.viewport ~x:0 ~y:0 ~w ~h; - GlMat.mode `projection; - GlMat.load_identity(); - GluMat.perspective ~fovy:60.0 ~aspect:(float w /. float h) ~z:(1.0,20.0); - GlMat.mode `modelview; - GlMat.load_identity(); - GlMat.translate ~z:(-5.0) () - -(* Main Loop - * Open window with initial window size, title bar, - * RGBA display mode, and handle input events. - *) -open GMain -open GdkKeysyms - -let main () = - let w = GWindow.window ~title:"Planet" () in - w#connect#destroy ~callback:(fun () -> Main.quit (); exit 0); - w#set_resize_mode `IMMEDIATE; - let hb = GPack.hbox ~packing:w#add () in - let area = GlGtk.area [`DOUBLEBUFFER;`RGBA;`DEPTH_SIZE 1] - ~width:700 ~height:500 ~packing:hb#add () in - area#event#add [`KEY_PRESS]; - - let planet = new planet area in - let adjustment = GData.adjustment ~value:0. ~lower:(-90.) ~upper:90. - ~step_incr:1. ~page_incr:5. ~page_size:5. () in - let scale = GRange.scale `VERTICAL ~adjustment ~draw_value:false - ~packing:hb#pack () in - adjustment#connect#value_changed - ~callback:(fun () -> planet#eye adjustment#value); - w#event#connect#key_press ~callback: - begin fun ev -> - let key = GdkEvent.Key.keyval ev in - if key = _Left then planet#year_subtract () else - if key = _Right then planet#year_add () else - if key = _Up then planet#day_add () else - if key = _Down then planet#day_subtract () else - if key = _Escape then w#destroy (); - planet#display (); - true - end; - - Timeout.add ~ms:20 ~callback: - begin fun () -> - planet#tick (Sys.time ()); planet#display (); true - end; - area#connect#display ~callback:planet#display; - area#connect#reshape ~callback:my_reshape; - - area#connect#realize ~callback: - begin fun () -> - myinit (); - my_reshape ~width:700 ~height:500 - end; - w#show (); - Main.main () - -let _ = Printexc.print main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/GL/simple.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/GL/simple.ml deleted file mode 100644 index ea6ebde96..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/GL/simple.ml +++ /dev/null @@ -1,33 +0,0 @@ -(* $Id$ *) - -open GMain - -let main () = - let w = GWindow.window ~title:"LablGL/Gtk" () in - w#connect#destroy ~callback:Main.quit; - let area = - GlGtk.area [`RGBA;`DEPTH_SIZE 1] ~width:500 ~height:500 ~packing:w#add () in - area#connect#realize ~callback: - begin fun () -> - GlMat.mode `projection; - GlMat.load_identity (); - GlMat.ortho ~x:(-1.0,1.0) ~y:(-1.0,1.0) ~z:(-1.0,1.0); - end; - area#connect#display ~callback: - begin fun () -> - GlClear.color (0.0, 0.0, 0.0); - GlClear.clear [`color]; - GlDraw.color (1.0, 1.0, 1.0); - GlDraw.begins `polygon; - GlDraw.vertex ~x:(-0.5) ~y:(-0.5) (); - GlDraw.vertex ~x:(-0.5) ~y:(0.5) (); - GlDraw.vertex ~x:(0.5) ~y:(0.5) (); - GlDraw.vertex ~x:(0.5) ~y:(-0.5) (); - GlDraw.ends (); - Gl.flush () - end; - Timeout.add ~ms:10000 ~callback:(fun () -> w#destroy ();false); - w#show (); - Main.main () - -let _ = main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/README b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/README deleted file mode 100644 index 6cbb5b6e9..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/README +++ /dev/null @@ -1,17 +0,0 @@ -Since this library was written in commuting label mode, examples were -also written in this mode. -Still, the following examples also compile in classic mode without -any modification. - -* calendar.ml -* clist.ml -* drawing.ml -* entry.ml -* events.ml -* fifteen.ml -* hello.ml -* image.ml -* radiobuttons.ml -* rpn.ml -* scrolledwin.ml -* testinput.ml \ No newline at end of file diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/buttons.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/buttons.ml deleted file mode 100644 index 78eebb038..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/buttons.ml +++ /dev/null @@ -1,26 +0,0 @@ -(* $Id$ *) - -open GMain - -let xpm_label_box ~(window : #GContainer.container) - ~file ~text ?packing ?(show=true) () = - if not (Sys.file_exists file) then failwith (file ^ " does not exist"); - let box = GPack.hbox ~border_width: 2 ?packing ~show:false () in - let pixmap = GDraw.pixmap_from_xpm ~file ~window () in - GMisc.pixmap pixmap ~packing:(box#pack ~padding:3) (); - GMisc.label ~text ~packing:(box#pack ~padding:3) (); - if show then box#misc#show (); - new GObj.widget_full box#as_widget - -let main () = - let window = GWindow.window ~title:"Pixmap'd Buttons!" ~border_width:10 () in - window#connect#destroy ~callback:Main.quit; - let button = GButton.button ~packing:window#add () in - button#connect#clicked ~callback: - (fun () -> prerr_endline "Hello again - cool button was pressed"); - xpm_label_box ~window ~file:"test.xpm" ~text:"cool button" - ~packing:button#add (); - window#show (); - Main.main () - -let _ = main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/calc.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/calc.ml deleted file mode 100644 index 405d1bf87..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/calc.ml +++ /dev/null @@ -1,114 +0,0 @@ -(* $Id$ *) - -(* A simple calculator ported from LablTk to LablGtk *) - -let mem_string ~char s = - try - for i = 0 to String.length s -1 do - if s.[i] = char then raise Exit - done; false - with Exit -> true - -let ops = ['+',(+.); '-',(-.); '*',( *.); '/',(/.)] - -(* The abstract calculator class. Does not use Gtk *) - -class virtual calc = object (calc) - val mutable x = 0.0 - val mutable op = None - val mutable displaying = true - - method virtual set : string -> unit - method virtual get : string - method virtual quit : unit -> unit - method insert s = calc#set (calc#get ^ s) - method get_float = float_of_string (calc#get) - - initializer calc#set "0" - - method command s = - if s <> "" then match s.[0] with - '0'..'9' -> - if displaying then (calc#set ""; displaying <- false); - calc#insert s - | '.' -> - if displaying then - (calc#set "0."; displaying <- false) - else - if not (mem_string ~char:'.' calc#get) then calc#insert s - | '+'|'-'|'*'|'/' as c -> - displaying <- true; - begin match op with - None -> - x <- calc#get_float; - op <- Some (List.assoc c ops) - | Some f -> - x <- f x (calc#get_float); - op <- Some (List.assoc c ops); - calc#set (string_of_float x) - end - | '='|'\n'|'\r' -> - displaying <- true; - begin match op with - None -> () - | Some f -> - x <- f x (calc#get_float); - op <- None; - calc#set (string_of_float x) - end - | 'q' -> calc#quit () - | _ -> () -end - -(* Buttons for the calculator *) - -let m = - [|[|"7";"8";"9";"+"|]; - [|"4";"5";"6";"-"|]; - [|"1";"2";"3";"*"|]; - [|"0";".";"=";"/"|]|] - -(* The physical calculator. Inherits from the abstract one *) - -open GMain - -class calculator ?packing ?show () = - let table = GPack.table ~rows:5 ~columns:4 ~homogeneous:true ~show:false () in - object (calc) - inherit calc - - val label = - let frame = GBin.frame ~shadow_type:`IN () - ~packing:(table#attach ~left:0 ~top:0 ~right:4 ~expand:`BOTH) in - let evbox = GBin.event_box ~packing:frame#add () in - evbox#misc#set_style evbox#misc#style#copy; - evbox#misc#style#set_bg [`NORMAL,`WHITE]; - GMisc.label ~justify:`RIGHT ~xalign:0.95 ~packing:evbox#add () - val table = table - - method set = label#set_text - method get = label#text - method quit = Main.quit - - initializer - for i = 0 to 3 do for j = 0 to 3 do - let button = - GButton.button ~label:(" " ^ m.(i).(j) ^ " ") - ~packing:(table#attach ~top:(i+1) ~left:j ~expand:`BOTH) () in - button#connect#clicked ~callback:(fun () -> calc#command m.(i).(j)); - done done; - ignore (GObj.pack_return table ~packing ~show) - end - -(* Finally start everything *) - -let w = GWindow.window ~auto_shrink:true () - -let applet = new calculator ~packing: w#add () - -let _ = - w#connect#destroy ~callback: Main.quit; - w#event#connect#key_press - ~callback:(fun ev -> applet#command (GdkEvent.Key.string ev); true); - w#show (); - Main.main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/calendar.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/calendar.ml deleted file mode 100644 index 233c7449f..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/calendar.ml +++ /dev/null @@ -1,21 +0,0 @@ -(* $Id$ *) - -open GMain - -let main () = - let window = GWindow.window () in - window#connect#destroy ~callback:Main.quit; - - let calendar = GMisc.calendar ~packing:window#add () in - calendar#connect#day_selected ~callback: - begin fun () -> - let (year,month,day) = calendar#date in - Printf.printf "You selected %d/%d/%02d.\n" - day (month+1) (year mod 100); - flush stdout - end; - - window#show (); - Main.main () - -let _ = main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/clist.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/clist.ml deleted file mode 100644 index f900f1781..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/clist.ml +++ /dev/null @@ -1,51 +0,0 @@ -(* $Id$ *) - -open GMain - -let main () = - let window = GWindow.window ~title:"CList example" ~width:300 ~height:150 () in - window#connect#destroy ~callback:Main.quit; - - let vbox = GPack.vbox ~border_width:5 ~packing:window#add () in - - let hbox = GPack.hbox ~packing:vbox#add () in - let sb = - GRange.scrollbar `VERTICAL ~packing:(hbox#pack ~from:`END) () in - let clist = - GList.clist ~titles:["Ingredients";"Amount"] ~shadow_type:`OUT - ~packing:hbox#add ~vadjustment:sb#adjustment () in - clist#connect#select_row ~callback: - begin fun ~row ~column ~event -> - let text = clist#cell_text row column in - Printf.printf "You selected row %d. More specifically you clicked in column %d, and the text in this cell is %s\n\n" row column text; - flush stdout - end; - - let hbox = GPack.hbox ~packing:vbox#pack () in - - let button_add = GButton.button ~label:"Add List" ~packing:hbox#add () in - button_add#connect#clicked ~callback: - begin fun () -> - List.iter ~f:(fun t -> ignore (clist#append t)) - [ ["Milk"; "3 Oz"]; - ["Water"; "6 l"]; - ["Carrots"; "2"]; - ["Snakes"; "55"] ] - end; - - let button_clear = GButton.button ~label:"Clear List" ~packing:hbox#add () in - button_clear#connect#clicked ~callback:clist#clear; - - let button_hide_show = - GButton.button ~label:"Hide/Show titles" ~packing:hbox#add () in - let flag = ref false in - button_hide_show#connect#clicked ~callback: - begin fun () -> - clist#set_titles_show !flag; - flag := not !flag - end; - - window#show (); - Main.main () - -let _ = main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/combo.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/combo.ml deleted file mode 100644 index 9aff1b320..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/combo.ml +++ /dev/null @@ -1,23 +0,0 @@ -(* $Id$ *) - -open GMain - -let make_arrow_label combo ~label ~string = - let item = GList.list_item () in (* no packing here, it blocks GTK *) - let hbox = GPack.hbox ~spacing:3 ~packing:item#add () in - GMisc.arrow ~kind:`RIGHT ~shadow:`OUT ~packing:hbox#pack (); - GMisc.label ~text:label ~packing:hbox#pack (); - combo#set_item_string item string; - combo#list#add item; - item - -let main () = - let window = GWindow.window ~border_width:10 () in - window#connect#destroy ~callback:Main.quit; - let combo = GEdit.combo ~packing:window#add () in - make_arrow_label combo ~label:"First item" ~string:"1st item"; - make_arrow_label combo ~label:"Second item" ~string:"2nd item"; - window#show (); - Main.main () - -let _ = main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/csview.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/csview.ml deleted file mode 100644 index eaf8de18b..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/csview.ml +++ /dev/null @@ -1,155 +0,0 @@ -(* $Id$ *) - -(* A simple CSV data viewer *) - -type data = - { fields : string list; - titles : string list; - data : string list list } - -let mem_string ~char s = - try - for i = 0 to String.length s - 1 do - if s.[i] = char then raise Exit - done; - false - with Exit -> true - -let rec until ~chars ?(escapes="") ?(buf = Buffer.create 80) s = - match Stream.peek s with - Some c -> - if mem_string ~char:c escapes then begin - Stream.junk s; - Buffer.add_char buf (Stream.next s); - until ~chars ~escapes ~buf s - end else if mem_string ~char:c chars then - Buffer.contents buf - else begin - Buffer.add_char buf c; - Stream.junk s; - until ~chars ~escapes ~buf s - end - | None -> - if Buffer.length buf > 0 then raise (Stream.Error "until") - else raise Stream.Failure - -let rec ignores ?(chars = " \t") s = - match Stream.peek s with - Some c when mem_string ~char:c chars -> - Stream.junk s; ignores ~chars s - | _ -> () - -let parse_field = parser - [< ''"'; f = until ~chars:"\"" ~escapes:"\\"; ''"'; _ = ignores >] -> - for i = 0 to String.length f - 1 do - if f.[i] = '\031' then f.[i] <- '\n' - done; - f - | [< f = until ~chars:",\n\r" >] -> f - | [< >] -> "" - -let comma = parser [< '','; _ = ignores >] -> () - -let rec parse_list ~item ~sep = parser - [< i = item; s >] -> - begin match s with parser - [< _ = sep; l = parse_list ~item ~sep >] -> i :: l - | [< >] -> [i] - end - | [< >] -> [] - -let parse_one = parse_list ~item:parse_field ~sep:comma - -let lf = parser [< ''\n'|'\r'; _ = ignores ~chars:"\n\r"; _ = ignores >] -> () - -let parse_all = parse_list ~item:parse_one ~sep:lf - -let read_file file = - let ic = open_in file in - let s = Stream.of_channel ic in - let data = parse_all s in - close_in ic; - match data with - ("i"::fields) :: ("T"::titles) :: data -> - {fields=fields; titles=titles; data=List.map ~f:List.tl data} - | titles :: data -> - {fields=titles; titles=titles; data=data} - | _ -> failwith "Insufficient data" - -let print_string s = - Format.print_char '"'; - for i = 0 to String.length s - 1 do - match s.[i] with - '\'' -> Format.print_char '\'' - | '"' -> Format.print_string "\\\"" - | '\160'..'\255' as c -> Format.print_char c - | c -> Format.print_string (Char.escaped c) - done; - Format.print_char '"' - -(* -#install_printer print_string;; -*) - -open GMain - -let field_widths = - [ "i", 0; - "ATTR", 0; - "NAME", 17; - "NAPR", 8; - "TEL1", 14; - "ZIPC", 12; - "ADR1", 40; - "BRTH", 10; - "RMRK", 20; - "CHK1", 0; - "CHK2", 0; - "CHK3", 0; - "CHK4", 0; - "TIM1", 16; - "TIM2", 16; - "ALRM", 0; - "ATTM", 0; - ] - -let main argv = - if Array.length argv <> 2 then begin - prerr_endline "Usage: csview "; - exit 2 - end; - let data = read_file argv.(1) in - let w = GWindow.window () in - w#misc#realize (); - let style = w#misc#style in - let font = Gdk.Font.load_fontset "-schumacher-clean-medium-r-normal--13-*-*-*-c-60-*,-mnkaname-fixed-*--12-*" in - let w0 = Gdk.Font.char_width font '0' in - style#set_font font; - w#connect#destroy ~callback:Main.quit; - let sw = GBin.scrolled_window ~width:600 ~height:300 ~packing:w#add () in - let cl = GList.clist ~titles:data.titles ~packing:sw#add () in - List.fold_left data.fields ~init:0 ~f: - begin fun acc f -> - let width = try List.assoc f field_widths with Not_found -> -1 in - if width = 0 then - cl#set_column ~visibility:false acc - else begin - if width > 0 then cl#set_column ~width:(width * w0) acc - else cl#set_column ~auto_resize:true acc; - if f = "NAPR" || f = "TIM1" || f = "CLAS" then - cl#set_sort ~auto:true ~column:acc (); - try - let ali = GBin.alignment_cast (cl#column_widget acc) in - let lbl = GMisc.label_cast (List.hd ali#children) in - lbl#set_alignment ~x:0. () - with _ -> - prerr_endline ("No column widget for field " ^ f) - end; - succ acc - end; - List.iter data.data - ~f:(fun l -> if List.length l > 1 then ignore (cl#append l)); - w#show (); - Main.main () - -let _ = main Sys.argv diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/dcalendar.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/dcalendar.ml deleted file mode 100644 index 6128506b4..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/dcalendar.ml +++ /dev/null @@ -1,247 +0,0 @@ -(* $Id$ *) - -(* A small calendar *) -(* Needs Unix module, so use with lablgtk_t *) - -open Printf - -type date = { mutable year: int; mutable mon: int; mutable mday: int } - - (* Load the schedule data *) -let calendar_file = Filename.concat (Sys.getenv "HOME") ".camlendar" - -let schedule = - try - let ichan = open_in calendar_file in - let (s : (int * int * int, string) Hashtbl.t) = - Marshal.from_channel ichan in - close_in ichan; - s - with Sys_error msg -> - prerr_endline msg; flush stderr; - Hashtbl.create 13;; - - (* Saves the schedule data when the application terminates *) -at_exit (fun () -> - let ochan = open_out calendar_file in - Marshal.to_channel ochan schedule ~mode: []; - close_out ochan);; - - (* date: Current date initialized to "today" *) -let date = - let tm = Unix.localtime (Unix.time ()) in - { year = 1900 + tm.Unix.tm_year; mon = tm.Unix.tm_mon; mday = 1 } - - - (* previous_month, next_month: change application status *) -let previous_month () = - date.mday <- 1; - if date.mon = 0 then - (date.year <- date.year - 1; date.mon <- 11) - else date.mon <- date.mon - 1 - -let next_month () = - date.mday <- 1; - if date.mon = 11 then (date.year <- date.year + 1; date.mon <- 0) - else date.mon <- date.mon + 1 - - (* leap, mon_name, wday_name: Calendar related function and data *) -let leap year = - (year mod 400 = 0) or - (year mod 4 = 0) & (year mod 100 <> 0) - -let mdays_in_month = [|31; 28; 31; 30; 31; 30; 31; 31; 30; 31; 30; 31|] - -let mon_name = - [|"Jan"; "Feb"; "Mar"; "Apr"; "May"; "Jun"; - "Jul"; "Aug"; "Sep"; "Oct"; "Nov"; "Dec"|] - -let wday_name = - [|"Sun"; "Mon"; "Tue"; "Wed"; "Thu"; "Fri"; "Sat"|] - -let s_normal = 0 and s_focused = 1 and s_planned = 2 -let styles = - let default = (Obj.magic () : GObj.style) in - [| default; default; default |] - - (* class date_button: one button for each day in the month *) -class date_button i (calendar : GPack.table) = - let mday = i + 1 in - - object (self) - val widget = GButton.button ~label: (string_of_int mday) ~show: false () - val mday = mday - val mutable show = false - val mutable have_plan = false - - method widget = widget - method focus_on = - date.mday <- mday; - widget#misc#set_style styles.(s_focused) - method focus_off = - widget#misc#set_style styles.(if have_plan then s_planned else s_normal) - method set_plan = - have_plan <- true; - widget#misc#set_style styles.(s_planned) - method unset_plan = - have_plan <- false; - widget#misc#set_style styles.(s_normal) - - method show wday0 = - if not show then - let top = (mday + wday0) / 7 + 1 - and left = (mday + wday0) mod 7 in - calendar#attach ~left ~top ~expand:`BOTH widget#coerce; - widget#misc#show (); - show <- true - - method hide = - if show then - (widget#misc#hide (); - calendar#remove widget#coerce; - show <- false) - end - -let update_calendar (calendar : GPack.table) (buttons : date_button array) = - let now = Unix.localtime (Unix.gettimeofday ()) in - let _, first = Unix.mktime { now with - Unix.tm_mday = 1; - Unix.tm_mon = date.mon; - Unix.tm_year = date.year - 1900 } in - - (* wday0: day of the week of the zero'th day in the month *) - let wday0 = (first.Unix.tm_wday - 1 + 7) mod 7 in - - let ndays = - if date.mon = 1 & leap date.year then mdays_in_month.(date.mon) + 1 - else mdays_in_month.(date.mon) in - - Array.iter ~f: (fun button -> button#hide) - buttons; - - for i = 0 to ndays - 1 do buttons.(i)#show wday0 done - -let create_GUI () = - - (* views part *) - - let win = - GWindow.window ~title: "Camlendar" ~show: true - ~allow_shrink: false ~allow_grow: false () in - win#event#connect#delete - ~callback: (fun _ -> GMain.Main.quit (); exit 0; false); - - let style = win#misc#style#copy in - styles.(s_normal) <- style; - - let style = style#copy in - style#set_bg [`NORMAL, `NAME "light green"; - `PRELIGHT, `NAME "light green"]; - styles.(s_focused) <- style; - - styles.(s_focused) <- style; - let style = style#copy in - style#set_bg [`NORMAL, `NAME "sky blue"; - `PRELIGHT, `NAME "sky blue"]; - styles.(s_planned) <- style; - - let vbox = GPack.vbox ~packing: win#add () in - let packing = vbox#add in - let toolbar = GButton.toolbar ~style: `TEXT ~packing () in - - let prev = - toolbar#insert_button ~text: "Prev" ~tooltip: "Show previous month" () in - let next = - toolbar#insert_button ~text: "Next" ~tooltip: "Show next month" () in - - let calendar = - GPack.table ~homogeneous: true ~rows: 7 ~columns: 7 - ~border_width: 10 ~row_spacings: 2 ~col_spacings: 2 ~packing () in - - Array.iteri - ~f: (fun i wday -> - ignore (GButton.button ~label: wday - ~packing:(calendar#attach ~top: 0 ~left: i ~expand:`BOTH) ())) - wday_name; - - let buttons = - Array.init 31 ~f: (fun i -> new date_button i calendar) in - - let date_view = GMisc.label ~justify: `CENTER ~packing () in - - let text = GEdit.text ~editable: true ~width: 70 ~height: 50 ~packing () in - - (* Controls part *) - - let save_text () = - let data = text#get_chars ~start: 0 ~stop: text#length in - let key = (date.year, date.mon, date.mday) in - Hashtbl.remove schedule key; - if data <> "" then - (Hashtbl.add schedule ~key ~data; - buttons.(date.mday - 1)#set_plan) - else buttons.(date.mday - 1)#unset_plan in - - let restore_text () = - text#delete_text ~start: 0 ~stop: text#length; - try - text#insert_text ~pos: 0 - (Hashtbl.find schedule (date.year, date.mon, date.mday)); - () - with Not_found -> () in - - let update_date_view () = - date_view#set_text (sprintf "%d %s, %d\n" - date.mday mon_name.(date.mon) date.year) in - - let update_view () = - update_calendar calendar buttons; - update_date_view (); - Array.iteri ~f: (fun i button -> - (try - Hashtbl.find schedule (date.year, date.mon, i + 1); - button#set_plan - with Not_found -> button#unset_plan); - button#focus_off) buttons; - win#set_title (sprintf "Camlendar: %s, %d" - mon_name.(date.mon) date.year) in - - prev#connect#clicked - ~callback: (fun () -> - save_text (); - previous_month (); - - update_view (); - restore_text (); - buttons.(0)#focus_on); - - next#connect#clicked - ~callback: (fun () -> - save_text (); - next_month (); - - update_view (); - restore_text (); - buttons.(0)#focus_on); - - Array.iteri - ~f: (fun i button -> - button#widget#connect#clicked - ~callback: (fun () -> - save_text (); - buttons.(date.mday - 1)#focus_off; - - button#focus_on; - restore_text (); - update_date_view ()); - ()) - buttons; - - update_view (); - buttons.(0)#focus_on;; - -GMain.Main.init (); -print_endline (GtkMain.Main.set_locale ()); -flush stdout; -create_GUI (); -GMain.Main.main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/drawing.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/drawing.ml deleted file mode 100644 index a4623bae0..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/drawing.ml +++ /dev/null @@ -1,19 +0,0 @@ -(* $Id$ *) - -open GMain - -let window = GWindow.window ~show:true () - -let w = window#misc#window -let drawing = new GDraw.drawable w - -let redraw _ = - drawing#polygon ~filled:true - [ 10,100; 35,35; 100,10; 165,35; 190,100; - 165,165; 100,190; 35,165; 10,100 ]; - false - -let _ = - window#connect#destroy ~callback:Main.quit; - window#event#connect#after#configure ~callback:redraw; - Main.main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/editor.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/editor.ml deleted file mode 100644 index 5e3da80cd..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/editor.ml +++ /dev/null @@ -1,101 +0,0 @@ -(* $Id$ *) - -open GMain - -let file_dialog ~title ~callback ?filename () = - let sel = - GWindow.file_selection ~title ~modal:true ?filename () in - sel#cancel_button#connect#clicked ~callback:sel#destroy; - sel#ok_button#connect#clicked ~callback: - begin fun () -> - let name = sel#get_filename in - sel#destroy (); - callback name - end; - sel#show () - -class editor ?packing ?show () = object (self) - val text = GEdit.text ~editable:true ?packing ?show () - val mutable filename = None - - method text = text - - method load_file name = - try - let ic = open_in name in - filename <- Some name; - text#freeze (); - text#delete_text ~start:0 ~stop:text#length; - let buf = String.create 1024 and len = ref 0 in - while len := input ic ~buf ~pos:0 ~len:1024; !len > 0 do - if !len = 1024 then text#insert buf - else text#insert (String.sub buf ~pos:0 ~len:!len) - done; - text#set_point 0; - text#thaw (); - close_in ic - with _ -> () - - method open_file () = file_dialog ~title:"Open" ~callback:self#load_file () - - method save_dialog () = - file_dialog ~title:"Save" ?filename - ~callback:(fun file -> self#output ~file) () - - method save_file () = - match filename with - Some file -> self#output ~file - | None -> self#save_dialog () - - method output ~file = - try - if Sys.file_exists file then Sys.rename ~src:file ~dst:(file ^ "~"); - let oc = open_out file in - output_string oc (text#get_chars ~start:0 ~stop:text#length); - close_out oc; - filename <- Some file - with _ -> prerr_endline "Save failed" -end - -let window = GWindow.window ~width:500 ~height:300 ~title:"editor" () -let vbox = GPack.vbox ~packing:window#add () - -let menubar = GMenu.menu_bar ~packing:vbox#pack () -let factory = new GMenu.factory menubar -let accel_group = factory#accel_group -let file_menu = factory#add_submenu "File" -let edit_menu = factory#add_submenu "Edit" - -let hbox = GPack.hbox ~packing:vbox#add () -let editor = new editor ~packing:hbox#add () -let scrollbar = GRange.scrollbar `VERTICAL ~packing:hbox#pack () - -open GdkKeysyms - -let _ = - window#connect#destroy ~callback:Main.quit; - let factory = new GMenu.factory file_menu ~accel_group in - factory#add_item "Open..." ~key:_O ~callback:editor#open_file; - factory#add_item "Save" ~key:_S ~callback:editor#save_file; - factory#add_item "Save as..." ~callback:editor#save_dialog; - factory#add_separator (); - factory#add_item "Quit" ~key:_Q ~callback:window#destroy; - let factory = new GMenu.factory edit_menu ~accel_group in - factory#add_item "Copy" ~key:_C ~callback:editor#text#copy_clipboard; - factory#add_item "Cut" ~key:_X ~callback:editor#text#cut_clipboard; - factory#add_item "Paste" ~key:_V ~callback:editor#text#paste_clipboard; - factory#add_separator (); - factory#add_check_item "Word wrap" ~active:false - ~callback:editor#text#set_word_wrap; - factory#add_check_item "Read only" ~active:false - ~callback:(fun b -> editor#text#set_editable (not b)); - window#add_accel_group accel_group; - editor#text#event#connect#button_press - ~callback:(fun ev -> - let button = GdkEvent.Button.button ev in - if button = 3 then begin - file_menu#popup ~button ~time:(GdkEvent.Button.time ev); true - end else false); - editor#text#set_vadjustment scrollbar#adjustment; - window#show (); - Main.main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/entry.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/entry.ml deleted file mode 100644 index 30f3c3dd8..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/entry.ml +++ /dev/null @@ -1,48 +0,0 @@ -(* $Id$ *) - -open Printf -open GMain - -let enter_callback entry = - printf "Entry contents: %s\n" entry#text; - flush stdout - -let entry_toggle_editable button entry = - entry#set_editable button#active - -let entry_toggle_visibility button entry = - entry#set_visibility button#active - -let main () = - - let window = GWindow.window ~title: "GTK Entry" ~width: 200 ~height: 100 () in - window#connect#destroy ~callback:Main.quit; - - let vbox = GPack.vbox ~packing: window#add () in - - let entry = GEdit.entry ~max_length: 50 ~packing: vbox#add () in - entry#connect#activate ~callback:(fun () -> enter_callback entry); - entry#set_text "Hello"; - entry#append_text " world"; - entry#select_region ~start:0 ~stop:entry#text_length; - - let hbox = GPack.hbox ~packing: vbox#add () in - - let check = GButton.check_button ~label: "Editable" ~active: true - ~packing: hbox#add () in - check#connect#toggled ~callback:(fun () -> entry_toggle_editable check entry); - - let check = - GButton.check_button ~label:"Visible" ~active:true ~packing:hbox#add () in - check#connect#toggled - ~callback:(fun () -> entry_toggle_visibility check entry); - - let button = GButton.button ~label: "Close" ~packing: vbox#add () in - button#connect#clicked ~callback:window#destroy; - button#grab_default (); - - window#show (); - - Main.main () - -let _ = main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/events.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/events.ml deleted file mode 100644 index 91a9872af..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/events.ml +++ /dev/null @@ -1,25 +0,0 @@ -(* $Id$ *) - -open GMain - -let _ = - let window = GWindow.window () in - window#connect#destroy ~callback:Main.quit; - - let text = GEdit.text ~editable:true ~packing:window#add () in - text#event#connect#button_press ~callback: - begin fun ev -> - GdkEvent.Button.button ev = 3 && - GdkEvent.get_type ev = `BUTTON_PRESS && - begin - let pos = text#position in - GdkEvent.Button.set_button ev 1; - text#event#send (GdkEvent.coerce ev); - Printf.printf "Position is %d.\n" text#position; - flush stdout; - text#set_position pos; - true - end - end; - window#show (); - Main.main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/fifteen.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/fifteen.ml deleted file mode 100644 index efdf51fc2..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/fifteen.ml +++ /dev/null @@ -1,97 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open GObj -open GMain - -class position ~init_x ~init_y ~min_x ~min_y ~max_x ~max_y = object - val mutable x = init_x - val mutable y = init_y - method current = (x, y) - method up () = if y > min_y then y <- y-1 else (); (x, y) - method down () = if y < max_y then y <- y+1 else (); (x, y) - method left () = if x > min_x then x <- x-1 else (); (x, y) - method right () = if x < max_x then x <- x+1 else (); (x, y) -end - -let game_init () = (* generate initial puzzle state *) - let rec game_aux acc rest n_invert = - let len = List.length rest in - if len=0 then - if n_invert mod 2 = 0 then - acc (* to be solvable, n_invert must be even *) - else - (List.hd (List.tl acc))::(List.hd acc)::(List.tl (List.tl acc)) - else begin - let rec extract n xs = - if (n=0) then (List.hd xs, List.tl xs) - else - let (ans, ys) = extract (n-1) (List.tl xs) in - (ans, List.hd xs :: ys) in - let ran = Random.int len in - let (elm, rest1) = extract ran rest in - let rec count p xs = match xs with - [] -> 0 - | y :: ys -> let acc = count p ys in - if p y then 1+acc else acc - in - let new_n_invert = count (fun x -> elm > x) acc in - game_aux (elm :: acc) rest1 (n_invert+new_n_invert) - end in - let rec from n = if n=0 then [] else n :: from (n-1) in - game_aux [] (from 15) 0 - -let _ = Random.init (int_of_float (Sys.time () *. 1000.)) -let window = GWindow.window () -let _ = window#connect#destroy ~callback:GMain.Main.quit - -let tbl = GPack.table ~rows:4 ~columns:4 ~homogeneous:true ~packing:window#add () -let dummy = GMisc.label ~text:"" ~packing:(tbl#attach ~left:3 ~top:3) () -let arr = Array.create_matrix ~dimx:4 ~dimy:4 dummy -let init = game_init () -let _ = - for i = 0 to 15 do - let j = i mod 4 in - let k = i/4 in - let frame = - GBin.frame ~shadow_type:`OUT ~width:32 ~height:32 - ~packing:(tbl#attach ~left:j ~top:k) () in - if i < 15 then - arr.(j).(k) <- - GMisc.label ~text:(string_of_int (List.nth init i)) - ~packing:frame#add () - done -let pos = new position ~init_x:3 ~init_y:3 ~min_x:0 ~min_y:0 ~max_x:3 ~max_y:3 - -open GdkKeysyms - -let _ = - window#event#connect#key_press ~callback: - begin fun ev -> - let (x0, y0) = pos#current in - let wid0 = arr.(x0).(y0) in - let key = GdkEvent.Key.keyval ev in - if key = _q || key = _Escape then (Main.quit (); exit 0) else - let (x1, y1) = - if key = _h || key = _Left then - pos#right () - else if key = _j || key = _Down then - pos#up () - else if key = _k || key = _Up then - pos#down () - else if key = _l || key = _Right then - pos#left () - else (x0, y0) - in - let wid1 = arr.(x1).(y1) in - wid0#set_text (wid1#text); - wid1#set_text ""; - true - end - -let main () = - window#show (); - Main.main () - -let _ = main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/fixed_editor.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/fixed_editor.ml deleted file mode 100644 index 1cde124c7..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/fixed_editor.ml +++ /dev/null @@ -1,279 +0,0 @@ -open Gdk -open Gtk -open GObj -open GMain - -let dnd_source_window () = - let window = GWindow.window ~position:`MOUSE () in - let vbx = GPack.vbox ~border_width:10 ~packing:window#add () - in - let evb = GBin.event_box ~border_width:0 ~packing:vbx#add () in - let frm = GBin.frame ~shadow_type:`OUT ~packing:evb#add () in - let lbl = GMisc.label ~text:"hello" ~packing:frm#add () in - let lbl2 = GMisc.label ~text:"drag from here!" ~packing:vbx#add () in - let targets = [ { target = "STRING"; flags = []; info = 0} ] in - begin - window#show (); - evb#drag#source_set targets ~modi:[`BUTTON1] ~actions:[`COPY]; - evb#drag#connect#data_get ~callback: begin - fun _ data ~info ~time:_ -> - data#set ~typ:data#target ~format:0 ~data:"hello! " - end - end - -let corner_width = 7 -let corner_height = 7 - -type drag_action_type = - GB_DRAG_NONE - | GB_MIDDLE - | GB_TOP - | GB_BOTTOM - | GB_LEFT - | GB_RIGHT - | GB_TOP_LEFT - | GB_TOP_RIGHT - | GB_BOTTOM_LEFT - | GB_BOTTOM_RIGHT - -let get_position_in_widget w ~x ~y ~width ~height = - if (x <= corner_width) then - if (y <= corner_height) then - GB_TOP_LEFT - else if (y >= height-corner_width) then - GB_BOTTOM_LEFT - else GB_LEFT - else if (x >= width-corner_width) then - if (y <= corner_height) then - GB_TOP_RIGHT - else if (y >= height-corner_width) then - GB_BOTTOM_RIGHT - else GB_RIGHT - else if (y <= corner_height) then - GB_TOP - else if (y >= height-corner_width) then - GB_BOTTOM - else GB_MIDDLE - -class drag_info = object - val mutable drag_action = GB_DRAG_NONE - val mutable drag_offset = (0, 0) - val mutable toimen = (0, 0) - val mutable drag_widget = None - method drag_action = drag_action - method drag_offset = drag_offset - method toimen = toimen (* coord. of opposite corner *) - method set_drag_widget (w : GObj.widget) = begin - match drag_widget with - None -> begin - GMain.Grab.add w; - drag_widget <- Some w; - () - end - | Some w -> () - end - method unset_drag_widget () = begin - match drag_widget with - Some w -> begin - GMain.Grab.remove w; - drag_widget <- None; - () - end - | None -> () - end - method set_drag_offset ~x ~y = drag_offset <- (x, y) - method set_drag_action (w : Gdk.window) ~x ~y = - begin - let (x0, y0) = Window.get_position w in - let (width, height) = Window.get_size w in - drag_action <- get_position_in_widget w ~x ~y ~width ~height; - let (x1, y1) = (x0+width, y0+height) in - toimen <- - match drag_action with - GB_TOP_LEFT -> (x1, y1) - | GB_BOTTOM_LEFT -> (x1, y0) - | GB_TOP_RIGHT -> (x0, y1) - | GB_BOTTOM_RIGHT -> (x0, y0) - | GB_TOP -> (x0, y1) - | GB_BOTTOM -> (x0, y0) - | GB_LEFT -> (x1, y0) - | GB_RIGHT -> (x0, y0) - | _ -> (-1, -1) - end - method unset_drag_action () = drag_action <- GB_DRAG_NONE -end - - -let to_grid g x = x - (x mod g) - -let to_grid2 g (x, y) = (to_grid g x, to_grid g y) - -class fix_editor ~width ~height ~packing = - let info = new drag_info in - let fix = GPack.fixed ~width ~height ~packing () in - let _ = fix#misc#realize () in - let fix_window = fix#misc#window in - let fix_drawing = new GDraw.drawable fix_window in - - object (self) - inherit GObj.widget fix#as_widget - val mutable grid = 1 - method set_grid g = - if (grid != g) then begin - let pix = - GDraw.pixmap ~window:fix ~width:g ~height:g ~mask:true () in - let c = fix#misc#style#bg `NORMAL in - pix#set_foreground (`COLOR c); - pix#rectangle ~filled:true ~x:0 ~y:0 ~width:g ~height:g (); - pix#set_foreground `BLACK; - pix#point ~x:0 ~y:0; - Gdk.Window.set_back_pixmap (fix#misc#window) (`PIXMAP pix#pixmap) - end; - grid <- g - - method new_child ~name ~x ~y ~width ~height ~callback = - let evb = GBin.event_box ~border_width:0 ~packing:fix#add () in - let lbl = GMisc.label ~text:name ~width ~height ~packing:evb#add () in - evb#misc#realize (); - evb#misc#set_geometry ~x ~y (); - self#connect_signals ~ebox:evb ~widget:lbl#coerce ~callback; - () - - method private connect_signals - ~ebox:(ebox : GBin.event_box) ~widget:(widget : widget) ~callback:cbfun = - let drawing = new GDraw.drawable (ebox#misc#window) in - let draw_id = ref None in - let exps_id = ref None in - let on_paint _ = - let (width, height) = Window.get_size (ebox#misc#window) in begin - drawing#set_foreground `BLACK; - drawing#rectangle ~filled:true ~x:0 ~y:0 - ~width:corner_width ~height:corner_height (); - drawing#rectangle ~filled:true ~x:(width-corner_width) ~y:0 - ~width:corner_width ~height:corner_height (); - drawing#rectangle ~filled:true - ~x:(width-corner_width) - ~y:(height-corner_height) - ~width:corner_width ~height:corner_height (); - drawing#rectangle ~filled:true - ~x:0 - ~y:(height-corner_height) - ~width:corner_width ~height:corner_height (); - drawing#rectangle ~filled:false - ~x:0 ~y:0 ~width:(width-1) ~height:(height-1) (); - end - in - ebox#event#connect#button_press ~callback: - begin fun ev -> - let bx = int_of_float (GdkEvent.Button.x ev) in - let by = int_of_float (GdkEvent.Button.y ev) in - info#set_drag_action (ebox#misc#window) ~x:bx ~y:by; - info#set_drag_offset ~x:bx ~y:by; - true - end; - ebox#event#connect#motion_notify ~callback: - begin fun ev -> - info#set_drag_widget ebox#coerce; - let action = info#drag_action in - let (mx, my) = fix#misc#pointer in - let (ox, oy) = info#drag_offset in - begin match action with - GB_MIDDLE -> - let (nx, ny) = to_grid2 grid (mx-ox, my-oy) in - ebox#misc#set_geometry ~x:nx ~y:ny (); - if cbfun ~x:nx ~y:ny ~width:(-2) ~height:(-2) then - () - else (* should we undo ? *) () - | GB_DRAG_NONE -> () (* do nothing *) - | GB_TOP_LEFT | GB_BOTTOM_LEFT - | GB_TOP_RIGHT | GB_BOTTOM_RIGHT -> - let (toi_x, toi_y) = info#toimen in - let (mx, my) = to_grid2 grid (mx, my) in - let (lx, rx) = - if mx - let (lx, toi_y) = info#toimen in - let my = to_grid grid my in - let (ty, by) = if my - let (toi_x, ty) = info#toimen in - let mx = to_grid grid mx in - let (lx, rx) = if mx - info#unset_drag_action (); - info#unset_drag_widget (); - true - end; - exps_id := Some (ebox#event#connect#after#expose - ~callback:(fun _ -> on_paint(); false)); - draw_id := Some (ebox#misc#connect#draw ~callback:on_paint); - () - initializer - fix#drag#dest_set ~actions:[`COPY] - [ { target = "STRING"; flags = []; info = 0} ]; - fix#drag#connect#data_received ~callback: begin - fun context ~x ~y data ~info ~time -> - let name = data#data in - let _ = self#new_child ~name ~x ~y ~width:32 ~height:32 - ~callback:(fun ~x ~y ~width ~height -> true) in -(* Printf.printf "%s %d %d\n" (data#data) x y; - flush stdout; *) - context#finish ~success:true ~del:false ~time; - end; - () - end - -(* the following is for test only *) -let window1 () = - let window = GWindow.window () in - let _ = window#connect#destroy ~callback: Main.quit in - let fix = new fix_editor ~width:640 ~height:480 ~packing:window#add in - fix#set_grid 5; - let setter = fix#new_child ~name:"hello" ~x:100 ~y:200 ~width:32 ~height:32 - ~callback:begin fun ~x ~y ~width ~height -> - (* Printf.printf "name=%s, x=%d, y=%d, width=%d, height=%d\n" - "hello" x y width height; - flush stdout; *) - true - end in - window#show (); - () - - - -let main () = - window1 (); - dnd_source_window (); - Main.main () - -let _ = main () - -(* Todo - - change mouse cursor - resize fixed itself - remove_child - (drag and) drop - -*) diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/fixpoint.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/fixpoint.ml deleted file mode 100644 index c33b74d5d..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/fixpoint.ml +++ /dev/null @@ -1,30 +0,0 @@ -(* $Id$ *) - -open GMain - -let rec fix ~f ~eq x = - let x' = f x in - if eq x x' then x - else fix ~f ~eq x' - -let eq_float x y = abs_float (x -. y) < 1e-13 - -let _ = - let top = GWindow.window () in - top#connect#destroy ~callback:Main.quit; - let vbox = GPack.vbox ~packing: top#add () in - let entry = GEdit.entry ~max_length: 20 ~packing: vbox#add () in - let tips = GData.tooltips () in - tips#set_tip entry#coerce ~text:"Initial value for fix-point"; - let result = - GEdit.entry ~max_length: 20 ~editable: false ~packing: vbox#add () in - - entry#connect#activate ~callback: - begin fun () -> - let x = try float_of_string entry#text with _ -> 0.0 in - entry#set_text (string_of_float (cos x)); - let res = fix ~f:cos ~eq:eq_float x in - result#set_text (string_of_float res) - end; - top#show (); - Main.main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/hello.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/hello.ml deleted file mode 100644 index 15ede9a49..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/hello.ml +++ /dev/null @@ -1,18 +0,0 @@ -(* $Id$ *) - -open GMain - -let window = GWindow.window ~border_width: 10 () - -let button = GButton.button ~label:"Hello World" ~packing: window#add () - -let main () = - window#event#connect#delete - ~callback:(fun _ -> prerr_endline "Delete event occured"; true); - window#connect#destroy ~callback:Main.quit; - button#connect#clicked ~callback:(fun () -> prerr_endline "Hello World"); - button#connect#clicked ~callback:window#destroy; - window#show (); - Main.main () - -let _ = Printexc.print main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/image.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/image.ml deleted file mode 100644 index faf82cf44..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/image.ml +++ /dev/null @@ -1,67 +0,0 @@ -(* $Id$ *) - -open GMain -open Gdk - -(* load image *) -let buf = String.create (256*256*3) -let ic = open_in_bin "image256x256.rgb" -let _ = - really_input ic ~buf:buf ~pos:0 ~len:(256*256*3); - close_in ic - -let rgb_at x y = - let offset = (y * 256 + x) * 3 in - (int_of_char buf.[offset ], - int_of_char buf.[offset+1], - int_of_char buf.[offset+2]) - -(* let id = Thread.create GtkThread.main () *) - -(* Choose a visual appropriate for RGB *) -let _ = - Gdk.Rgb.init (); - GtkBase.Widget.set_default_visual (Gdk.Rgb.get_visual ()); - GtkBase.Widget.set_default_colormap (Gdk.Rgb.get_cmap ()) - -(* We need show: true because of the need of visual *) -let window = GWindow.window ~show:true ~width: 256 ~height: 256 () - -let visual = window#misc#visual - -let color_create = Truecolor.color_creator visual - -let w = window#misc#window -let drawing = new GDraw.drawable w - -let _ = - window#connect#destroy ~callback:Main.quit; - - let image = - Image.create ~kind: `FASTEST ~visual: visual ~width: 256 ~height: 256 - in - - let draw () = - for x = 0 to 255 do - for y = 0 to 255 do - let r,g,b = rgb_at x y in - Image.put_pixel image ~x: x ~y: y - ~pixel: (color_create ~red: (r * 256) ~green: (g * 256) ~blue: (b * 256)) - done - done - in - - let display () = - drawing#image image ~xsrc:0 ~ysrc:0 ~xdest:0 ~ydest:0 ~width:256 ~height:256 - in - - draw (); - - window#event#connect#after#expose ~callback: - begin fun _ -> - display (); false - end; - (* Thread.join id *) - - window#show (); - Main.main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/image256x256.rgb b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/image256x256.rgb deleted file mode 100644 index 25d499594..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/image256x256.rgb +++ /dev/null @@ -1,19 +0,0 @@ -”·â•ºÝ›±Ï“­ÐŸÒŸ¤ÃŸ¦Î¤¦Ûª¤ÎªªÚ¯ž×¤•Ð¡™Ô±¬â­©Þ®§çž®Ðš¶É”¸Ë¡¶¼¥®Å¢³Ó ´Îª½Æ¨¼Ó¬·Ó¶´ÏµÀÆ´°¼¬¾À·³ÄÄö¾½ÂÇÀ¼¿½·ÆĹÑÆÁÂÏ·ÃÌÅÍÉÙ¼ÍÓ¿ÊÁÆÏÇÄãÍÕßÏØÕÍÎÜÌÇãÑÑâÙÔ×ÚÈâÈÔÜÄÌØÈÒÒÇÍ×ÃÅÛÁÍáÇËàÊËêËÚð½×ïÅáíËÞõ¼ñø¿âã·Úæ¾ÜÙÈáâÅÜÙÃÖ×®Ö̳ÞȱØÉ·ÍÔ²ÑØ«ÑÑ¡Î͎ÒܗÔ،à͑ÖʏϼƒÉ¼ˆÎ¼ˆÝÁÔËzãÇwØɀÚÆ{âÎçӉÝׅáׂÖÜÓފÙԓØ،Ó؂Îá†ÎÒ|ÛàsÓÛzÞ×ráÙyàÔs×Üi×ØgäÆkåÑoÜÏ_áÍdàÈR߸C׸?Ö´GÙ°WÚ°Kç¸EÚ·YÜÊ]ÞÂOÕ¿;Ù½@ÞÃHâË9íÇ<éË@ðÇ8éÉAè´@æ·AòÌ9ÝÄ7é´@ܲ?Þ½Eä¯CÙ²RάLЯPÒ¡RЩ]̨RÀ¿UÀ²XÉ©FÌ´JϱPŹFËÁJÄ¿FÆÄQȼDÒ°OÔ­DدHÒ³PѵPɶYÐÄ^Ë¿WÙ¬PΞ[ѧWتOˬWͨY͘ZΝdØ£ZÌ·XÁ°EŹPε\Ï®N½»T½³Y´ÃY¶¸N¹¶D°³S±¨Y«¨Mª¬U¦¬[§®@ª®T ¯M¥¢M£žZ œG¬‘E£‘K¥Y¢ŒK·[¨…S¦—EžN§`¡–R˜XŸƒ[‘†Qš‚Sš‘R™‡U§€W©€Tœ‡J¢~Qœ~C–tO”iL•rS”tN©lPªoJ¢zT¯pB¥qIž[M lC«gC¤lD±cC³YTÁSI¸OQ´IBÀIE»ZK»OE¸QH°WU¬TK«QG¹VK®TGºV?¬MD¶Z[¾MGÂUK»ZK²QO½NX¸JZÁHP³KV½J[¼ESÀF]Ä@WÆ;VÆ;\·àš´Ù—«Ò”¬Õ™ Î£¥Ê¥±Ë¡­Ø¤«Ñª«Ù¬¤Ò¦›Ñ¯šÝ¬ ×«¦×¦§Û›«Êž¸Å—®Æ ²À§¾Èª¹Î±¾ÅªÀÆ£Æ˨Á͸¹Ç½¼½¾·¸®²¼½µ»½Â²¼È³ÄÄÀÍ·ÂÌ»ÀǽÀÂË¿ÁÀÃÁÃÑÌÐÍÅÐÉÈÞËËÞÀÓßËÐØÌÇäοáÔÄÕÖÒÚÑÍÐÎÑÓËËÑËÐÑÒÆÖÇÄØËÓÙÄÑÞÊÙèÉÛò½á÷ÃÛîÄãö½ëõ¶èé´ÚáÁåݸáá¾ÜØ»ÞׯÓ˳ÒƸÊɳÏÑ°ÍÈ£Ç͝Æ֙È׏ÎƖÙŌÔ•ÌŏÐʖϾÌȊÚσäÉ~ÝÆxÝÆzè׃ãÖ~ßà…Ù܁Ù߈ÑیÑˎÎבÏׅÎÕxÓØyÙÏÙÔzÞØnßÚmÔânÙØmÙÑfèÓpÚÕmÝÉjèÂ_ã¾Oç·Oä¹IزUÓ¯VÙºQâ»Kß½MÖÈVÓÁP×À@àÁ>ä¾=ðÀ;ñÌEîÒ8íÌ4êË@ïºDêÀCëÄ4íÄ9ÝÀ8ܹ?æ´BÝ«RݧPѲIË®SØ®QÔ¤\ϵQõUϯLÏ«PβDĵDƶ?ηHÒ±RɺKDZRÏ·K̼GЯHÒ¶HÌ®V׿\ÖÀRÛ±XѨUП[Æ OÀ¤YɬTҝS֟SÛ§PÕ®ZÔ´WƱIʺLβZÉ»bÅ´Z»¸^±¹U¹ªHº¬D±ªAª¨I±­U°®Q­©Q œG¨¡Q¦¤J¤—G˜N£‹O¦‹Q£ŽO ŠP°„W®ŒQ¬™Y¦•O¨’N¦”\š–Z›”P R™€SœY›ƒU¢€X¥‡R›zL zW¤x\¡PœqYšmR›oP›rS©oN©lIŸvG¦oLŸaW™]T¨fL©jD³n=¶bD²\C»^I´OR½HJ¸HH¿RFÆJG¼EV²SI«XH©TL´LO¾MBºU9ÀU@·VO¿MAÄUAÃVI·ML¼LV³H\³GZ·PTÂKZ¼IUÈMTÈ@Y½ARº9V“°Ù¤ºÙ‘«Õ‹©×™ÐŸ¤ÍŸ¦Ñ®´Õ²¦Î¨¤Ð´¤Ô£¥Ï«£Ø©«Ø±¢Û¯¨Ð¬¹Ô¢·É¢»Å«³Ã›ºÁ¡·Ð¦ÂÌ©ÄĨ½À©ÉÏ°Èɶ»¸³¼¸½º³³¼°¶Ã²¼Â¸¸Î»ËÇÿĺÏÅÄÃÎÁÂÀËÈÇÐÒÃÈÌÌÄÔ×¾ÇÑÀÓÛÌÊ×ÔÃÏÑ¿ÙÑÀàÓÊÙÎ×ÒÊÔÖÎÍÚÎÑÔÜÈÐÉÁÓÓÔÕÔ×èÈàæÍáêÉßô»ÚóÂÞî¶êõµçñ¸åëÅÚé´àáÀáݳÛÛ©äÙ«ÒÇ´Ôη×ĹÉ΢ÐŞÓєØΓÏѕàЌÔŠÒˆÓƂÔÀ‡ÙĂßÈzÞÉ|äÌnÛØwíàuèÚuÕêzÜâ†ß҆×уÑבÙӉÏΊÓ͇ÓփÜÔsåڀßÏzÚÞjàÐqæâ}êÛlèÏuéÊqÝÈ[áÅ^àÊLÞÄIÞÂLÕ¿Tà­RÔ»RæÉXØ¿X×ÄIãÀFåÃJåÁJíÈIíËD÷ÉHõÈ:ëÕ9ôÂ9ö¿Fä½7îÇ7á·2áÆ?ç¾FæªKàªWÞ TÒ­VÒ­LΞ]֝^Ò¨Pö^Á§O̳T϶KÏ´MʼBѼIÖ»Kʱ?̯JÕ¯?Ë­FÚ¨Kׯ?Ú¦BÜ´NݲSß°K΢IÏ¥NͪNÆ®OÒ¯JÕ¦LÙ¨IÍ­NѱRŶT·RÄ´O¾º^ǺSÁ²Zµ»Q¯²O·©@¿¡G¼¯9°¤?¨ª<²­F¯¥A² E«–B¢ E®•@¨šQ¨‰R‹N©•G¡‘K¥‡Q®’P°ŠD­N¨K¥X™ŒU —N›“Y—Š^ ‰`£_ Xœ†\ŸYœ‡Z£ƒM“zV™}UœwZ˜iM’jR¢lU dJ qV¡kP£]L“W_£`W iLª\M´YT³\O´PQ²RSÂJJ¹DEÂGD·MT·EI²FU¦[O¤GR­BN±MHºJCºZ<°_CÄ]<ÊNBÇKEÁTK¿O[¶N\ÃLMÂGOÃGPÃDWÇJLË:YÄ8Pº4\˜²Þ³Ý™²Ô’¢ÐšªÙ¡ Ûª¯Ý­±Øµ©Ì³£Ð·«Ñ®¦Ó¶¥Ù´©Ô±ºÈ±¹Ë®¸É±¶Å¨¯Í¦¹Ë¶ÏžÁÅ¡ºÆ¢»Ä¬ÂħÇÆ«Ì»¸¿¶½»¼½¾³º½³´Â³µÌ¹»ÈµÂÑÀ¿Ì¹ÍÀ·ÎĹϼÁÓÅÍ×ÅÍÔËÌÒÍÃÍÈÄËÃÔÂÌÖÄËÖÅÛ×ÌÙÏÎÝÑÐÙÌÉÑÏÍÚÛÁ××ÍÐËÈÒÍÍ×ÔÛçÍÖðÂÝéÃáîÁáñ·Úì·áëµìè¾ìè½ãæ¸ãÛ´ÞÔµáÛ¯ÝÔªÜϯØȵÖÆ°ÎÀ´ÒȨá̦ÞĒÝ΋×ʋÏϒÐˊÖŅÕÇÐÒsØÒpæØqä×tåÑtá×vßäuÙâuÕÚnßÕwÒځÔцÒ̋à̀äׂÜрåЁàÓwæÍ{âÕvâÝ|ìÚ{ïßyéÛoÞÜbâÔYêË\àÅWá¿TÛÀUݶSÞ»NÜÃHÞÆS×ÉVÚÁIáÂPê¹EåÆ@ëÆHõÈN÷ÅBíËHòÐCêÓ?íÆCéÊ=å¼9æ¹5ã»Bæ°IÞ®NÔ«\Ó¤YÚ \Ó§UÌ®YΣQÒ¡^ɪ]ά_ëXŲPÉ·Jз@кDÖ³HÒ¸DÌ­>̬AÍ®:׫AÓ­7ݦ;ÚµGÙ³JÜ®RØ­IϬRÇ­RÒ«JÕ²HÒ²SÔ¨NЫKÖ«MѸWÄ·P¼ÃV¼ÄY·ÇO¾¾PĽN¸µF³­<³¡?­©:·¦9·¡:±ž=µ˜Aº¢7µ“6¯’9´“B§ŠH¢ŠG ŒE§‡> ’E¦”Iª”@¦’=¬C¡”Qž”X’ŒW”“W•T™„_¤Ž]¤‘b£‹dž‹W£ˆO ‰OžŠS“zP–ƒP“zQ”sS—jJsS“lV›hWœ\Y—b\›WY•SY]R¨RT¯RU®PT´MM¶KN½DJ½GMÄFL¶MN®HF¥KOªMU¯DG§EI¤GG®NCµMI·Y=´S@¾QD¼QNÉTUÅNZÅSUÀTXÀCJÀ>IÉCPÊIYÊAQÁ4\¿.Xž·Û ¶à’³à—ªÎ¡¤Ö¥¦Ó¢²Ô±¦Ó¯©Õ©°Í¢­Ô©®Õ¥£Ó§¦Õ«±Ì¯¸Ã¯»Å°ÀǬ»Ä¥®¿¦¶½¬À¾¥´É¨º½¡½Â¬Éƶ¾½ÄË®¼º­ºÊ¶»Ã´µ¿²¾¸°¹Æ·¿Ê¬¼Ë¶ÄȮøÓü˾ÇÔÏÌÜÅÅÊÊÂÃÃÆÇÐÊÏÆÒËËÒÊÏØÂØÌËÖÒÐÛÒÀÛËÊÐÐÂÈÕÎÚÑÎÞÃÏÛÌÞâÌÏçÊÙèËØñ¿ãï®ãò³àë½äá¿Þí¿ßß·äÙ±ßÙµéβÝÒ³ê̲ÞÄ­ÒÍ­Ñ˟ÙÍ¥ØƟÙĒÞ•ÐҋÜӈÍАÖƉÑÊ}ÍÖÜàqÕßtÞÙsèà|àä|åÙtÝè}àár×âvÑÚ}Ú×~ÓԃàցÞÓ}ÜàˆÔÖ}â×qá×oßÓpíâ{èãzêáwïÛlçÓaÜÖaÚÓWÒÊdÞÃ`Ó¾_áÅRãºKÖ·Kæ·UÛµGéÇGæ´Hã¹Iä¿CãÂLîÃIéÊEçÉMíÑCéÂ@èÈJí½AÝÅDâÁ<ç±JåºBÚ©DÖ²OÚ­PÞ¬[Þ«OϦSɱQÌ°Z¿¨gÀ§UDzYDzRɲKʹPÑ¿?×·?ر7ϸ?Á¡@Í¥?Í«A՞@Ôª4Õ­Iß­HÖ·CÌ´LͦQÆ®[ȪVƪFМGʧIӞAͨHõM¿¸KÀ¶NɳMŶQ»ÄBÁ·?²µB¬­=ª¨<² ;µ£2°¤<¢:¼¥=¼A³œ;§—F°C³–N ‡L©•Dž‹E¡ŠF«–;´‘5©’G¦—O¥˜K—U””W—“R’`—ƒ[˜_ž‘b“]š™Mœ†WŸŠT‘ˆU‘yWtMyP¡rKœmN£aR¡^Q–fV `YšZW”Z]¤]Q©cL¨TU´QL·MW°QT³OF²OS³UK¿OX¼ET°JU¸HZ®JW´FY¬NÁ=FÍ:TÁBTÌ;ZÁ6[Ê4Y‘Âט¼Þ±ä˜¦Û—«ßš°Ö¢´Õ£©Û¡µÙ¢µÒ£´Ï¥¨Ë«³Ñ¡°Ó¬¸Ó·¼Ç¯·Ä¡¼Ì›²È´Ä©±¿¨¿¹°·º©³Æ³¼º«Æµ»Å­Ãȱ»Ê«¼Æ«½ºµ³¸¶¼Á²´½³Ä®ȿ¬¾Ê±ÄÆ·Áº¹É¾ÌÖÊÒ×ÐÆËØ¿ÉÎÄØÐÅÕÅÎÕÆØÌÌÑÍÐØÆÙÏÄÞÆÇÕÂÑÌÅÐÊÕÌ×ÎÃÜÀÔß¾ÔàÌÙëÏÒíÉÜî¹Úã±âç¸Ýíµåä´àã¸êá¬èß«ïÖªéÌ«àѧçÏ©äʨÙƛÚĘçË¡àÏ àɑãΒÙ͔ÓԛÏˑÏэÓ҃ÒáƒÕÞÛæ‡ÞÜØá€ÚázÞßpßìv×ëwÙ݅Üá‡ÓÕ~Õ׀ÒÕ{ÔۈÖç‡ÜîyÖç{åé‚æàxàäyàÞyçãyïÚqìÕnßÔlÔÈdѾcÕ¶hÔ»^Û»XÖ»SÙ¾XܱLä²Jë¿Lì´Eå¹HàºMâÌMäËQçÏIñÏPìÑHäÄMìÃAæÁ>ãÂAàÄMà¸Hå­LÙ­?à´RÕ¯XÓ®UÙ¬VÛ¦cÍ®_˹`Áµc̳`ѨKʪDиIÔ·DǵIʳIж:³C¢JÅ¡RÒ£IÕ¦Eʨ=ʬLÖ¯QѪCÆ®FÆ­DѧRÄ¥IğLęKš<̧CÆ­;êAɯ9ʨ7ƲF¾·MþEÀº?¶µ4º°3±§1±Ÿ7±œ.·‘/—2´Ÿ<¶:±š=°ŒF¯•J´•D¤š:¤<¦“?£Š?¦ˆ3®…6µ…Eª‘I©˜GŽN–”X™ŒU•„P›ˆZ“Y‘ƒSKŠ•OŽ”F›M–„L‘zY’yZyUžoWŸeW¤ZRŸ]MšiF”dI™TR™Q[›RZ¦XP®^LªXM§[TµTJ±MS²UR¯\XµYW±Mb½H\¸O^µMW°?\­?R´CM¹EG¸DD¸OH¾QW´JW±PO·KWÆHNÈLNÌHH¾FSÇJWÇ@OÁ1`¼/`Â6UÌ,P’Æá•È࠿ך¸Ù¡¸Ú™´ä¥²Ï¡©Ú©³Î¢¼Ò›³Íž¨Ï¡¯Ð¬´Ï¦½Ç®À˧ºÊ°¿£µ¹ µ¼¼½©¾½ª»Å³¯»°Æ²¬À¸À¿©»¿´Ã¿®¿À©¯¼±ªµ©³Ä¤¹Ã©¶»ªÈĢ¹¯¿½§Ì¿²Æ½¼ÖÉÊÜÐÅÏÓÆÎϹÏÅÃÞÎÃËÌÈÉÍÎÇÌÉÅÇÏÉÈÓÓÒ¿ÇØÌÒÐÍÒØÍÇÏÄÔÙÇÚÖÉÛãÀÙâÀÕÙÂØà½×è¾ßë½êݵÝÒ¹äÛ´ëà®éÓªäÄ°ìɱèȲáѧéÁ™àÈ£îǘå֞æ֎æדÓҐÐӓÉыÔˋÒ؏ä݊çڅÝׂêçƒçâyëç{äéäæuäã|ÙۂÞâ~ÍÞz×ã‰ÑáwÐ݄Õå}ÒæwÕçsÛêuãåxâàpÜæsÞÖnîÕjç×màÎfáÑ_˾cÔ¼eÙ·^ܳ`Ô³Qã¶QܶNæµTåÁRè½Uõ½FëÁJêÒLðÉKòÖTòÌAáËLãÈDèÄJéÆHãÄ@àÇKÞ´Kè²Hâ´CÖªIÝ°PصTß­V͵ZÉ©dͶ`Ĺ`̳^˦SħTβN³NÀ©JÊ®D̸EÁ¢HƟ>É«>É«Lϧ@¾ @ЫAÖ«DÔ·HϸOÊ­@Ò£KÍ¡D˨Eǖ9ě7Ǫ?­8Á¥>Dz1ǵ:Á´;º¼Cº¹>Á²@²¾,µµ5·´'·¤/Ý4¼›8 /µ—,´˜3°œA¶ˆEº”K¹š;µ—E¦”9¨‰B¥‡;¤ƒ>²„7¨;¯‘Qª‰E™P¥’W£ŠV™ƒT™‹V‡V”|Yˆ‘X‡ŽW‘Y’‰L—Y˜wbšt\’uS•jW§mW•eT¢dSXU™cA‘aF›SH¥VV¨JM£LM³WN¯XNµK\µJKªRU¨WN»_T±]O¸LY·GVµSK½JP±HD·AH¼?E·@H¯MV°JO»TR¿JYºFN·GYËKVÇ?WÂ:ZÇFNÊ@\Ì>ZÍ/ZÉ4TÑ4QÄސÂ㐻鞿ã«ÄÚ©¾à©¬Ö§ªÍ§¦Ô ²Öž©Ó£°Ó¤­Êª³Â­®Â¬´Ã¡µÄ¤±¶¨«¼©³»«¾Å¥ÁÀ©Å´­»´®½¹¸È­·Å§ºÄª±Ì¢²Êž´¼š²½§³Ä¡°¼¡ºÃŸÁ¾§¿½­Ç¿¦Æ½®Ð¾¸ÍdzÙʾÏÑÀÕϸÐËÁÖÉÈÙÒÅÎÉÉÑÈÕÒÃÐËÍÌÔÎÉÙÑËÒÏÏÍÑÅËÓÈÑÛÀØÜÃÞã¸Ùà½àØÀÚÖÁáâ¶ßÞºáÓ½éÒºìÓ±ìÑ®èÔ®ìǦöÊ®ðÒ®õΩíÉ¡öâð͒ö˙îיãϙØҎÎːÓՐÜؙÛݓìçíáçè‡ìâ€ðå|ôäƒèáéè~àézÝßyÕØ}Îà‡Çë‚Íå€Ïæ|Øëzæå}åàoâèqìãsíápáßoéÜgêÍiâËfãÄZßÏUÖÊ_ÜÂbÔ¿]Û½\ÞºXå»ZßÁRê·[ð·Xí¼Q÷¾QóÉNîÍWêÈTôÐQåÚAçÓBåÑDðÌLïÏLíÍHç¿?êÁDݹ<à¯?å²<æ°Dè·NÝ·Yà¶YÓ§`ʲcƬa̵R­QůLƲGÍ©DÊ©F¼²K»©D½¨9»¢;º­D§CÈ¥DÀ¨@Å¥AϱFг>Ò´FÑ·BÈ©Cë>Ǥ5ʦ8Ğ<º¦@¼®7©5Ç­7õ,¿®0¸¸5¸°6º¯.²¹-¶µ/¼°+¹ª/Ŝ,¾Ÿ'Û2¿ 6¸˜2°˜A·B¼•=¹’>¬”5¯Š;«6¨‹B©…Bµ†A´ŒE´H°G¨šR¢™R¥‘N¡HŸ‰N™‚R†Z„ŠSˆW•b™[Ÿ‘U™…Y”{\“zWŸnNhTi[•_T’`G—\I›]G™VF›SG§MR¬P\³K[¯EX¬I\¯DV¦HS°M`µZ[½RM³[J­NPµINµLD¾AF²@E³BOµ=O¬>Z¨L^²L[±DX½JQºNTÃHUÁ@P¼>ZÃE`ÆC`È=^Ï4ZÊ)`Î+[¹å”ÃВ¸Øž´â™¹ß«·Ð§­Í­¬Õ©­Íœ®Î™·Ú¦¬Ï«Î£¯Í¡²É´µÄ¬­º©¸½¥¬Ä©»µ ¿Àž¶²§²® »´±Ã±±Ä³³¼¦¼½«´Ä¤²Á™¨½¤«¿¦¨Á­²Á¡¿Ä£¼¾£º³¶Î·®Å»»Ò¾ÂÕ»»ÚÉÀÐȾÝЭÓÌÀÛÁÈÑÆ»ËÀÈÕÊÊÍпÊп×ÙÁÑÏÎÈ×ÎÒÊÉÁÙÄÅÙ¸Ñ߸Ëå½Ûà¸Ýá¼ÔàÈÕÖµÔî¶àÙµëÉ»äÍ·ïÌ«åÏ°îÍ«òѦ÷θëË®ñɟðƙ÷À˜éϙç܌ÞЎÖҍÞ͈ÑՇȪÞ܅ÞҋêހàÚwæè{äê†ñî†ææ|ÞلÛÙxåæˆÜ܂Íæ…×é‡Çâ†Ùè{Óò{Þéx×ãvÞâjîáiéånÙÛiÛØeßØoæËkßÊ]ÖÒ[ÚÅgÛÈcѶW×¼WÕ»`ã¶Ué¾Rì¾NéµTì¾UðÁMúÇ^ïÐ`öÆSïÑMìÆBóËKóÍ@îÎCôÉEë¿Gç¾Må¸EÞÃ@ܳ>ä°Háµ<Ù®EÙº\Ó±`Ô­YÔ«^È¥eÉ¡aÁ SƦQ»·C¬HǞG½«G°£<·¡D¿?¾¤9­C¾¬H»¤E»­<ŪJŬ>ų=Ê©KȬC¯A¸¢2¾ <Ǚ6¾¥5Ŷ5Á±:Ť8˧1È­2½¤:¯§9´«0³´*÷$¸¸&¹¤.š)É£1ʙ8»Ÿ=·–<¿œD¹šH­‹@ªŽC«‚>¯„H¢‚9«Š>«‰I¯}F®‘H³ŽL¤–F­›UšP¢‹N’U™„HR‹…\’Q†O“Y“‡\š€e“dœ}WœpUnb¨t_›o_œZX—[[˜`P›UI™PI¤KQ¦HZ¦U_¬Dd¨JY¦IS¦U`£UU¦W^©S[³YV°XH¯\F¨HJ¯CC¶@@°:H·?L±@PµJS­EO¯KYµH_³ATÄB]ºLZÀDZ³>VÄ:ZÀB\Ð1UÇ3SÑ(SÏ2Y¯Ò•¹Í’·ÝŸµÞ¥±àŸ¯Ñ¢¯Ø£´Ö¨«Øœ«Ô¦±Ð¥­Ñ¡³É¦»Ê¨·Ñ«´È¦½Á¡´È›²·¤¼·Ÿ·»¦°³¡½µ¤º¨«¶²¨²­¶»«½Ä¯½¾ž·¹ž³Áª§º¤©¼±µ¼²¶Ä¯²º­Á¾ºË°»Ï²ÈÒ½ÄÌǺӿ³ÛÁ«ÓɲÊǯҺ¼Ô¼ÊÇ»Ñ̳ØмÒÒÉÊÔÄÅÏËÎÔÈÌØÆÈÒºÏÔ¶Ìã»Èß®Ñ×®Ëá¹ÐÚ¾Ûç¶Øí¾ÛÚ·ßаÜÖ©èÕ­äͲäÒ§äØ©ôÔ´ïÕ¤ñÊ¥íÌ¢ðĝåēå҉âВâĉàńàׁâÖw×É}ãÊzâÖwäÜ|àÝzá߃âì}åÝ|äÚß߆ÛâŠÑà~Ðá{Îè…Ñð†àôˆÝê„ÞïzÚãréäxæäpÞäsâÓqáÔpÛÙjÝÞ\ÖÓ^ÐÍdÎË]ËÃ`×½WѵSؽ`á²]ïµ[ï­Xð²Mý·MøºOó½YðÁaðÉYãÌDçÔHñËBðÎCïÎHäÍKê»Páµ@æ¼=è·7ã½=Þ¸Dä¬CÙ­QÒ¯Uί^×¹_Ô³l˦hΪ`Ǥ^¸©O·®L¹¨H· N¸ C¯©C¶ H¾¡?´§Bº«E¹®B¼£B¿±DůE»°F·¤>³­<½¦IÀ®9·¦7¹«=Â¥A¸±7¿¬9½¤.Á«1¿ª8Ħ-½§6µ¨6º£2À¨5ʪ$ð"ɨ+¾§5»ž2Ő6͖2Ę=¸–9³’>¨‘5§‹;¦†E£‚D ‹F¦…?¯~C³…C±…N¨O¬•Z¥—S“Y‘•V—ƒS”~GŽT—ŒX—’V•–QŒ†[„[Žz[‡wa—pbžtaq`¡wa¨wfŸf^¦bW£gQ™V\šS[œQ^®SX¬Qe«Id©K_žS[¥][°ZW©a]¬Z[¬^U·XQ°ZF¦UE­HI¤FB¥=E²BL³;S²DL¹DK³LS±MX·BZ½FQ¿DT»4X¹5Rº?[Ç9`É.fÁ0\È-^É*Z–¼Í•·Ô¦ªÕ¡­Ù›¦Ó¡±Ë¤±ÓŸ²Ù£°Ñ”±ËŸ±Ïœ³¿£±Æ§¼Í¬³Ç¯ÂË­¾Ð§ÂÕ£³Ë£½·¦¹´¨±· µ±£¾³¥¼¥º¤®µ¤²·¤·Á¶¾©¶º§§Âš¬´¢½²¥¶°¶½¹³Áµ»Æ±¿É½Åʶ¿Ë²¶Ö¸°Ð¾°Î¸ѹ®Ó°ÃÚ¶³Ì»ÀÊÅÃÇƺÎÖ¿ÐÑÉÌßËÑâÍËÖÅÍáÂÑÛµÏá¼ÑÖ·ÌÜ®ÍÏ®ÞÓ¿Ùç±ÙêºãéµçܨâاÜÒ«àÙ­ëݯãÎ¥èزôÕ¤äΠçҟíΣéÁêƋèŁ澆ÝÉæËzÜËwÜÅtæÓ|ØØtÛÜxäÝsàààâ‚äà…äن×á‚ÑàwßáxÌéÓç×éwâå}æðˆêáæÜläâpêßjáãpÞÛlÖÓhÙàjÚÏdÒÑYÑÌhÉËZÖÏeØÁ[æ½Và±að»_ø½U÷´Rè»Uù»V÷ÃRù¼OïÆ[éÁTáÎ?åÌ<èÑ>éÎDáÐGçÄ>æ¿Bâ»FÛ¶BêºEܼ?ë´Dá®B׫DÙ«SÓ¹OØÄXϬ`ħjÍ«fÇ£bÀ¦Z³¢L´©Qª•W©§Dª¦L¬›A°¢D½©G¼«KÁ¨M¡<ű<Ç©7µ­G°§<À£I·¬O½§?®°6¸¨1´¦B´Ÿ2â4½¥.¾«2²§0±³-·±:°«:¯«:µŸ3¼¨1Ç£ Ä­&¿¤5ĕ1–?½CǍA¼’Bº‹=²‘A¡‘2¬ƒB©ŠE©‰I«‡G°‹?­‰?¨„G­’T¤—L›”QQŒNŽ‰V~G’ŠL‹‰WP•S”‹IŽMŒy[‘€[Št^£rd¥te¤w_§z`Ÿe^¨b\›^a¥W_­Sa²Nd­O^¥Wd¡Vh¦V] [_¥RVŸO^®Vb­[\±PL£RH°SO¢YD£G@¨GA²HG´QPµDF±GJ¯DQµAR¶JSÂ;V¶=QÁGPĸ¢G»ª=¸®5¹­Dµ¨F±¯@¶­E®¨9±®9º«?³›5¹£7¿©)¶©)·­.®°9®¹2°¶4µ³1¹«+µ¢1¹ 5Æ¥)¾ª-½3¿ž1ɒ=Ɨ<½‹9Á‰;¸‡=°6¬Ž:¨‹B§‰@¥‰H³ŠG­ˆL°‹C¨ˆE¦„Q§I˜ŽN–PŠ”F“Mˆ†S‘†NŽŒX—I‘˜JŒ”HŽ†N„‰SŠ~ZŒ}X›v`¤zdœ{c¥sZ©t^¢sf£eb£df®`d°Zh¯Ta¤Oj¢Wf¦^b£\aœWZS`¡QY©TW§HPžHO§JF¢PK¥IF¤KC¥UH¯OGªUO¢SN¤SR§E^¸He¼;aÅä·@æ¾Jí¼Bã¹=Þ¹JܱBÙ´EЬOÖµQɯU˲aÓ´bË·[¿´Z¼ªW±¥`¼¡_±©H¯¤=±ŸI¦–J¯”@¿•M¼–H®¤A·¦=½«;¯©5³¡7°¡A®±=¹¬@¹­E­¨9ºš-2Á®(º¨.·°2½¸&¬µ3±²/¯³-µ§+²£3¼¦0Ǥ)¿¢2ʓ4ʐ3Ȗ;Ñ<º‰9º€:»€:µ€<²ˆA°8§ŠG°B³€D¨I¡K§‰O£‹B™‡B”ŒG”M˜CŠ‡J‡…U„‘X’T™R™>”K‡EŒ‡I‘z^|\v\“„l—‚h¥|b¥{]£tc©i^¥ajž\o§Tc¯^g®Yc§[b¦[Y®^a \cœ]]©YP£[L¤RN£CL›AZ›D\ªNO¤OP¬XI HM¢FM™CSŸDX§EY¯HV«Ea¾GRÁ>c¿:S¾)U¹.S»(]¶3^³)S½-aÌ$YŸ¶ÕŸµÑ£¦Ñ §×¦¦Æ¥­Å¡²Ç™¿É¨À»§¼½§À¸ž½¾¤µÀ¦¼Èª·Ä©·Ç¥¿Ê­·Ð§¬Èž±Êž´È¨·»¨®´¦¯´¦ª·¤³¨¡»¬¦±¢¦³£¦­œ²¯”¶¹œ²·¦·¶­²­¶¼µ­²Âµ³½·¶¼¼»»²»±ºÄ­»Í²¶Ï¶³Ë½µÆĹĿÂͳ¾Èµ»Å½¹Ó¿¾ÐÈÄÌÒË×ÍÁÖÕÁÐÖ³ÍܶÕѹÚÛ³àÓ¤×Ö¦ÝÙ³ßé«åéªÚé¨ßÜ¥ëå§èܛòؤðÖ°íÍ¥àÒ¡æ֔ëϔîΐìדâ͍é˔ñΈ鿊繏뽅îÈtðÌtâ×zÞÛyÔã€ÚÝwàèpáèxÜë|èâ~ÙíÔéwÑîƒßåŠãè€åãÙìÛåˆÖñ‰Ùí{ÓêtÞètßÝc×ÓaÚàfÐÜ^ØÔ`ÕÐcÙÇ]âÉeëÏhâÅZâ¶Wé·TéÁSØÃRâÂZê»`åÂ_ÚÅ]àÂ[Ý¿Xá¾OæËFëÈ@ëÓAåÃGèµMê±Câ²Hç®CÞ¬@å¸Dè»JØ¿R׺LÒ¸IηQØ®UÖ­LÍ¥R̪YË·YǹR«_¾¥\¿ªT¿¤UÀ©F¹Bº¤N­ J¹ J·I°šK¬ >·Ÿ;³Ÿ9´œ,µ©0²¨<¶¦9¯°8±¨A½ž0¹£+Ƥ3Â¥.Á¨2¯0¸°+²²%²¯!¯«)¯ª)»¡9¸™8º˜1¾˜/Ȑ<˔BċAº…@½†4¸{:½}CÁyK¶D¸@©A¯‚<µ€<­C¡Gš{<ž„?–ˆ>™LŒ…G…ŠLƒ†QˆRŠ–EŽ“I—C‹”BœA‹•F••F˜…R™†\€`wn–~jœ~a yf¨vd©lg£gfš\j­\l±Xp±Xm§\f©YY¨`W¦cUª][°[O©VL«WS LU™?WA^žC`¨SWªYV¡PQ›C]ž@[EV­CZ¯>]«=V´AZ¾F`Á>d¿2X´9Yµ1Z´&V´)^³(a¼%e›¯Ú¡ªËœ²Ùš®Û¡µ×ž¨Ð¤½Ì©Ãɟ¸É¨´Á¤±¿¡ÁɟÃœÄÍ«±Ä °ÃŸ´Ì¢²É—¶Ï»Æœ·Ã ²¼ ²¶¤«¸ª·«¡¸¢½«ª±ž©³¢¨¶ª²¹¥·¼˜»«©²²¨¹¹ž»·¦¯´±º¸¼°¼²¾²°¸»¶Â¼±Á¿´¿¿ºÁ¼·Àº´Êijù°Ã´¶ÈǾÌɺÓÅÄÜƸÞ˵ÜÖ²ÝÔµÛ׶çß°ÜÖªåÙ ÝÎ¥àÕ¸ä×®îë¨àá¢èÜ«äážâ۔æß õØ ç׫ë՝çÓ¦ìߝúՖó۔ìȍùЅ뾃êŠïÄ~ü¼{ð¾ïÇ{ã×uïÚoæß|ÔÞu×ÞzÜèÛ܂çëxÚê}Ï݋àæˆáãŽÙê‹ÜáƒßâééŽÙç…ØãrÔè~ßãpÜâd×ÖYÏÓeÖÊiÜÓdãÊYæÏhçÇbÛÎcäÁ^Þ¼ZݾZßÃWÍÅOÔ¾Tæ¸^ØÀVÙÆeÖÆVÞ½SÖÄKÝÆRÝËPåÒPèÄCܬRܬFÚ²NׯCâªDÙºMæ¾Jç¾CÛÀAÒ¸TѼRÙºEß½HÒ©MÕ§TÔ±MƽXªQʯOȟIº«BĨ@½¤>·¢E¯¦Dº™;¯‹<»—5°ž<¹š3©£?µ™0ºž1´¢+²®4ºªA¸¥;°°:½ª3¶š$¶š(¿§.Ê£0¸£$»¥/±«)´©'³›6¼Ÿ4¹ >ś/Ô7ÀŽ<Ȏ3đB½Ž=¸ˆ8ƃ<µ|<À‰>­~F¹Œ>­„G¦Œ7²†9²†>¦†J›Œ<–„G—‘N‘ŽQ‡”S…WŠO„›N‚ŒKQ˜HŒG”’F†DŒ“N”ƒX’‰P `ž}k€h‘vd¤zd§vlœjsšfkXsœai [i£Qe¬]]¢][¢cR ]a«Ze¢X_©XH—XMœVVŸCV˜@h¢@ZŸJb¦N^¥DX£>Q¤;[Ÿ>Y¬I]±BU±?R¬B[­?b±?n¶9`­1Z²,Y­6k±0nµ/d»,m’©É˜«Õ¢«Òœ´Ý¥³Ú´×½Î©¿Ì£´Ê¡´¾¤¶Ã™¹Âž²¿Ÿ»É¡ÀП¶É”¯Ç–¸ÑžµÔ¼ËŸ»ÊŸ°Í¦«ÆŸµ¼¦¯®·«¢¼«£·¨£º²°°«·­¤»´¤°²™®¬®¶™³µ¤­°¦°¯²»·°¸³¹®¾À´º¸·¿¹½¾·Æ®ǾªÊIJ½½±ÃÁ¶ÃĺÈȲÕ´ÝÀ°ØͱØÚ­àÛ¬èÙ´éá®åÔ³ïÔ©èÙ±áÕ®ßקæáªãÜ­ßå¥íã¨ëëšõè‘îܗìޙêá£üàŸþáŸûá“þ҇ÿDŽÿÆÿÐ|úɃõ¾zýÄzóÄzïÃ}òÍqðÒtâÛxßÖxâàzÝáxãÝ}×â}ØéŒÖގÚê†ÛíŒÛê‰Ýì‹Üç’åêŠÛá†ÞÚxåáyÞßqåÛeÛÒ`âÉ]ØÉb×Ç]å¾[âÂ`âÄ\äÆgßÆbÖ¿[ÚÅ[ßÌNÒÂRÝÀWܼ[Ú»YÔÀbÚÃ`ÒÅWÒÌOÔÎWÖÁVáÄNá¶X×°PÙ°\á°Vé³Mß´Mâ²Iâ²Iä±JܹFÕ±EѺMÜ¿SÞ¾KܱQÙ²UÙ´M˺VʵWίPÇ©B½§?í7·¡>¶¥1¿2¹‘.³”;±;µ‘5²•7­ž4¼š(¹ ,°«3±«4®­8¶¯5·¡.º¤0¾ª1»Ÿ#¼£$¨"¨!½œ0¹œ/¶ ,½¥8µ›<´£<À<Ǖ?¾“5¿‘=ÀŒ5À|8¿}DÂH½@º€<µŠF¹‚<°„<¤„G©‰@Ÿˆ8¥ˆ?œ•@™E–P‘“MŒ™PŽ—Y‘¢P‚›S˜S‰”K†MŒF’ŠM‘”FO™‰Mš`Ÿ‰d›zo—vi’x_šwe¤taimž\n”_s—UrŸOn£Pr¦\d¬^]§[[¦VeªL^¡FSžPT LJ•NQAR”Caž@b›BašAb HW§F_©BV¬E`ªA]±7e¦>_£9g­El©>h¬>s³@t°8f¹;o´5q±.mº#lš¢ËŽ³ÌªÍ˜µÐš­Ü–»Ù¨±Ð¦­ÎŸ¸»›§¹Ÿ¸Á£¾»—µÆž®É£­Ã¢­Á¡ªÁ™¶ÉŸ°¾›¶Ë™¸È™¶Á™¯¸™´°§²»¢½±­¹¦¦º§³°§±®­¸¦²¹© º¶œ¬¬¨³±Ÿ²±³±±°«¦¹²§¬Ãµ¶»­µÀ®¼¸·±Ä¿²Éµ·¾½¯»Ã·Á®¶Á°ÁʳÖ̲àʹÚóÜÓ´âѱÛܬÙß­çаäÕ¯êÜ©öß«æͧàÖ¢íØ£ê؝èٟëܚçæœäâçНèà£ëè£íæœëۜ÷ېøЋòNJÿ¿~ø¼ƒù¿óʀöËöË{ûÆyèËwàÖxâËqçÐvãÖsßÖsâáxÜâ‹àéˆâìßé|äó€èòÜé€äé‡àåáäxäÙ{æÙkçÝfáÜgØÓcÖÍkÙÕlÜÌ[èÃUíÇZáÍUØÇT×ÉV×Á^Õ¿]Úº]Õ¸^ã¹\Ù¹XܾVÝÁdÐÅTÒÂZÜÀZ×ÌUÙÊKÜ¿UÙ¸Jå­RÞ¸Nè¬Nê¬Rì¹Ië²Mç»Iå·OÔÀMÒÃUÙ·YнOϵJÒ¬KÉ®YɧWдYɶVÅ®IÊ®C»¢E´¬D¼ž<²¤:¾(·“.²—C©šB·˜9­›8°š@³¤6«/®¥0¸¬)²§2°'²¤4¼¡3¶¬1¹º¤$¹¤"´ž,ºš2½ž6²Ÿ7¾ 9¿¢>Û4¼—FÁ”@º–8¶Š5µ8°ƒ>ą@´8³F½†H«„@·B¤5¢}@Ÿ„D¯;§…C¤•DˆC•“O•RŽ•[’ŽQ†–V†™J–M“—U‚‹H‹N‘T•ŽM•‰IˆO•‘[ž…Y–„VoZ”th–hcbm•gr—arŽOežYl—HlŸMu®fj«cf¤Rf¢Tf¬]g¢T[ªSV£T]O[“FašQg Jf™Ha¨DW CW¤BM¤HZ¨Cf©NW­?a®?[³ê±Dê²Lç¼NÛÁLؼVÞ¹_Ú¼VÒ·QÍ«GԞDÉ¢QÃ¥OȪXÆ¢UɨH·¬I´®B½ 8¶™9²˜0¶•+µ*©‘:°–7¯ž@µ¢8¯¢>ªž7¥œ2²¨3µ¨,±ª)·œ$ê,½«.¾¬*¸ &±—¸˜ ´¢*»¥*¸¢,½¢4·¡2¼™5Ž?Ð@·‡B·Œ9²†0®ƒ/º†,·”8·“9¶Œ=¬‡>°‡>¬ˆ5¦{6­5¥Š6¨ŽE¨‘FšŽD’Œ<Œ›O˜R’“L‘‘QšX‡›O•U‹ŒP…V‹ŽN”šI’—S†šU‡“LŒŽFŒP”sO“p\pX‘aa`]˜\gœ_k—PaœO`œMp¡]r¨`o¡_d£UiŸab£`bª[a¥TVŸTTšU[’Ud˜P[¢OS¢N[©PK¥LG£OPœNb¡KcŸIa£LV«E\¯>f«Hn²Cn¸>l·@`µ6dº=j¸2d½%dº!p¤É†¥Ë‰¬Ï†«Ã—¨¾ ­Áœ¯Àœ¢¾›«·¤ª³—¨Á¥¬º ¦Ä¤Ä­¿‘­»Ÿ±µ™¶¾£¨Ã ¬» «¿š¤¶¢¥«¢¡¤ž©®²¯´±¥¶°£¶¹±±Á¬»¶ ©½›¨¹«©µ¨¤³§¬´›®·¦¬¿£©Áž¶·ž°Ç£ºÆ¬´¹µ´Ê¹ÂÆ»Àƹ¼¼³¼µÈ·ÇɳÈƪ×ήæ̬ÛÔ³ÞÊ£èÖ²ßÍ´ìÚ²îџåÒ¦øޞéá¡õÐ¥é͜çޔí֒èؖ÷ܔúܝõݒðՑåӚçޛáҝãԍê΍ëƗòĔòÒÿÂúȇÿÀ~íÀë½‰óÃèÌèÓxéÅlëÏpêÔwÙÕkéÑtßހßÛ|êð|æéxâìsÞæzÜê|çé{âìsâçxÞífáÞjëâbâápÝëfÓÚdÜ×pÛÍ_áÊdãÐ]ãÀUßÂLÜÒWßÄFäÁHç·NæÂPݺTéÅQê¾Zå¹\æ½Wå®TØ®YÚ¬SÜ°Hà®KÞµEé¶Qì®?Þ±Eê©=î±;é¾JæºRä³QàÁQã´OسWÒ»KγKÒ¦RͦOƧT¹±R¯K¹©Rº¯L¸¦:º©0³˜-¶Ÿ.¯›+¨›%ªš0ªŸ=¢˜AŸœG¦¡H­¤7±•?¨¢3¨¤0´˜)¼ž*¸¢-²¦-½¦/±£!¶”-³š²¥·¬(®§'¾¦+¹Ÿ3½˜0´™<¹‘?¹B¯Ž3¯8µ…%©–.«—-¶™/­–=´†1ºŠ:¦…4¢„1£3«–,š—C¥ŠD•‘C’Š=ŽŽL––WŽ“GŽ¡H’¡H”O…‘N‹ŠT‰ŽK‘“N‰ŒK•ˆJˆ‰KŒ“Qƒ‡Yˆ†Z“v\‘eXˆaY™WY•ab ]j˜XešW\šJl Pl˜]j©ed©dp™Zj¤Vf£XZ¢MU®V]ªQP¡ZZžNZ”NhŸS^§I^¬KX«PK¡FM¨O\˜MfBm¨E]«HY°OZ©Fo¶Pf¾>e´?]·4j¿2b»7f»#l»&s~«Ê‚¢Ã|§Á…¡Ã–ŸÅ™¥¸¢«¶š¡ÀŸœ¹ ž¶¨žº£¬¾£¤Æ—«¾Œ¦È¯Á“®·¤¶·©®½¨¬¾¬«°¢ª«¦¢¨¤§­¤®µ¤§±®¢µ³¬´¾°¹·¥¶·±º›¬¾—®³ž¥·˜¯¸žª´œª¹²Ã¥´» »½ ·Ç¨³Î¥±Å®·¼³¹Áµ¾¸¾µ»¾²ÄͬÌͧÕΫÞÏ°ÜϯÞʦðÒ­ðÍ°ëџ÷ޟêä›ëܙëϓëЛèӕòә÷ޜøۚïՌõ܎ïݏïҔíΖáҔêΛêȔâ̌æĒéȚõ»”ù»ŽÿÈÿÇûÁ‡ûɂïÈyñËxãÌqÜÇuæÍuß×{ÛÙoæÜoäÔ}éÙrïäqìÞyêáwâۂàä|éÞtæàxÛìnáèoãéiåæcáíbÜédÖênÖÝfÞ×háØcâÕYåËXÝÖVßÏJÞÀKãÀHí¼?éÁGêÈVìÂUïºMê´Tæ»Vã°\ê¤Væ¥Xå¬WÙ¯L×°MÞ¬Kî«PìµEì¹Dä±@ê´K߸Eã¸EݽOá¿QÞ¹ZعTÛ¶NɧSƧJŤM´®L·¦I¶©M±«E¶¦6¶ +»˜,³£!¨#¢•-¨’/©ž6šŸA—š9¡ A¨™?­;§.§›1°£-°›+´˜!µ #¯¡)¯–&±˜"«—&©”*±¡#µ˜'²ž3®Ÿ2·–<¾Œ>µ7»-°‰4°Š)°Ž"¸“¯”#¹™%±•,¸4·Œ5²†7ª…7 †1¥’3 ˜9š“=œšB›L¥”EšLšD‘ŸM–ŸRŽ™K““U—UŽY‡”T…“R‹ˆRŒO‰‹T‹R…ƒZ{]ˆjbij^b—^f˜WkX`”Nd’[nŸWg agž`i—`s]mž^^¬M\­W`°RU³ZO±SXŸSfžTd S`ŸLU§QI¯WK¬ULªEY@gžAk¦Bg¥G_²D[²QbµIa½I]·C]½ÔºGÝÅIλJÞ²RÙ©TÍ´Jɱ>¿ªJ¾ªF±¤J­¯C¶§G¶žF·¢@±¥,­“.·–*¨/­.³’7¨—Cš˜GŸ¥:¥¥C ¡5«£:«ª;–©6œ™3®’)²œ(¯¤(²–)¦—+§—* +­š%°’!­Ÿ#¬ž3¯™7®›0¬˜.µ6ª†*ª‘$°Š+°‘-¸’0­Ž%ª–!ª•,·‹4²‚3©ˆ=©5£†4 “:©‹@ CŸ•;œ—DŸŒP¨–J¢ŸO –Q‹—T•‘JIŠ˜V‹˜Iˆ‘Q‚ŠWŒ‹RŒ\Ž‚LŽ‚S“uZu\ih•o`‹`o•\jQu˜Ww’]i‘Zm”]k’`e¦]mŸ^l¢OcžTi¨Od¬Q\­R^²PU¬Oa£QXžY^ Za¥QS¤]U©SI«RV±Q^£HcšDf¥Bh¬Fj¯Ie¹Fh´?fÄAbÁGcÀDl·.h±$mÁ%hÆ$dx¦Î}¡Ï€•¼˜¶„£·§¾†¢»“’µ›”µ’£Ã…£¿‰œÁŠ˜»”›´¬»”«½ ¦¿Ÿ¡¶£©½¤¡È›¢¾ž¤²¤¥¹¤¡·¨£´«ž«¦ µ°¯¶¤¢·¨ ´©¥´¸¯¼œ©À•§Ê“¢È˜§Î–ªÆ¸Ã¦³½¬½½³²Ê²·Æ¸»¹®¸Ê¶¯É·ª½Âº»½º¹¼»Å½¯Ï̸áÌ´áÁ¨ÝÇ¥ëϦôΰçÏ¥ëÓ¤éÒ æʝí՝îԖéɘêǎå׊ì֎÷ɑò̓ôȓëяåЍîуéƀóʋõÊ|é¿}ôÀó»‚ùÇ|÷ǀð¼…ùÂó¾wõ½råÌyÛÊ}ÚÔtÝÔ{çØríÖzáԀáÖzäÕxðÓyîÚvóêmíåfåÔnÝÒfÖÚfàßlØÕnÛÔhÔ×bÔØiÜã^åÖbáÖZ×Ö^ÙÍYäÊ^äÈYæÓ^áÌYÙËKßÄHá¼Fí·EçºVéµWæ±Mè½Tå¶WíµXí°SÞµRè´Mä¶Të¯SìµRâµTÝ¥Dã£CÙ«Hå¨Lã¯FÚ°LÓ¼TÒ¼SήKÉ´LÊ©Eɧ>¸£=²©H²¢B¬›E®£M½«A¨9¾‘(°‹#»‹%·Œ-¾“=´ <¦™9›A™–D ™5¡ž=¢¥9—«4•©0™2™,£ž)¢Ÿ1œ”/Ÿ™$œ™# 1œ”$¥(ª™2§’2žŒ/¦#²‡!ºŽ#¹•©‹"µ‚'µˆ-²†-¯Œ+¤'ª%±Œ%§ˆ+ž1¦ˆ> “?§A¥”E¡“>¤œD¦™D§‹C¡ŽM¥V£’Rš™PU†ŒXŠJ‰V‰ƒR‡‰P‡€]…zUƒzOƒsT‘rdil“of”dl’goŠau’Rs•Qx”_w—ar‹YdœdmŸ]g›R`›QfžQe \l›Qd§VY°OU®O[­\^ŸaZ£eX¨`X§WS®SO­ST¯Pa¦Ba¦Bc²Ea±Hg¯Ol´Fc¾>eº;nÂ9e¸;j²6v·)sµ'o d…œÆƒ½¦½•¤¾…šµ¡¼‡™¼ƒ›°–½Œ£Àƒ¡À€žµŽ—¶‘–Àš¤Â¦·•¡À¡¤¹ž ¿¦¬Ë•£Å¬®š®­œ­±¬¡¶¥Ÿ±­«¥ª°ž§¥œ—³¯”­±ž«¶—£»£¨¿§Êœ¦Í—®Î—¶Ë¢³»¥¶½¯¾Ã«±É§´Â¶´¾¬´Æ´®Ë¶®Á¾·¾¼¶ÄŹĮ̀ÞˬáТç̚áÇ õÔ¬ôË éÒ§é͗꾦àÑ£ðʟâɚôˌñЕéӓåñÒðЗãԌìʈòÑ}å̅ôΆùΈìÅñÂsùÄvó¹ÿÈtù¼€ù¼qè»z÷ÇzéÉ}ÝÐxÓҀÜÛxÚÚsï×nâÕpìØyêÏyíÜnôåvçßjìâsáÚjâÞ`ÒÚaÝÏkÕÜ^ÖÒjÚÎgÒÕ^ÞÜ]åÓVêÚ[äÏXäÐTäËNåÐ[çËLÝÌUæÆSÙ¼IåÀPàÃJîºLî°Tè¿Hò¼JçÀSðÁVï¹\ä¨Vâ®Kë¨LߪVã´Lì´Fæ§Jà¡Jß²P×·Uç³GÚ¯VоXÇ´XƯKƵAƪCÄ´=º´@®­J¸¬@®¤?¯ªR³§>Ç£3³“5º‹%ª—)ª‹6®˜=ª¡1¨š;¡™A ¢5¤ 4–§7”ª5’®2Ž¤5Žª.ž 0›£(¢£0Ÿ£$›™#˜’3¡‘,¢›3•%¬’.­”-¯(¢“®…'·Ž¬‹#³‰ ¦‹0§/²•(£—!«'®‰)¤Ž2¤…)¥‰-ªˆ6¢Š<£›5°šE¤š@¨™I©–L£”A§ŠM£ŠR¢„DšŒQŠN‡KŽƒPŠTˆTˆ{RŽ}ZŠ\ŽsOŠpb—qe“oa˜xc“mi“dl“_o‹Yz_yˆRlZn\hŠas•[g›R`•Xa›TgžYg¡So¬W[²X]°Id¦Z[¯`R¬aY§gP±QK«TQ³XP²RT«KU§DZ©I[©Yg³K_¸NlÀCp»Ae¸8m¿Gb»4i³)uµ%i¿!e‹šÀ…¢ºŒ ¶Š¡¹‚¦Â†¥À‹¦¶~—³‚¢¹½Š“¼„˜´“œº”¢À »šŸ¸¢¨¾¡ªµ™³·˜ªÀ•­¼”­º’¥¯ž©³¤›±¦œ´¦¢©¡¢¥¥—©Ÿš¨«Ÿ£¯˜­½ž«Ã¥¤Á§®Æž°À›±Ë›¬Ð£±Æ¤´¿§»Â©±Ä¶¸À±µÄº»Í±¸Å»±Íõν½Ìǵʼ®Ø½¦ÜÄ¡êÌ çÑ¥éȜêÅ çƙܾßÁžÝ¼œçàäȚììŕÞĒ꼉äëÀãʎ迆ëÃ~éÀ}éÁƒòÁ€ûËuÿÇrÿ¼oûºvý½xö¼pëÇqñÁwçÄ}ßĂÙÊuÕÛtÚÚwßÕiåØißÒfêÛiðßoèÚgèävêàtßßläÙnØÒoÛÐ`ÒÎX×Ô_ÛÚgÖÖcÔÍ^ÚÏ`äÚ^â×TÞÛSëÙVãÎTãÐMÞÑNàÎMÛËPÛÀQÙÈTâÅNí¾Rè»Jê¿Rñ»NíÂXç¼Xè¯_ìªYí©Tæ«Oã´Nå±Sé¨Qá¤Má¬MÙ­TÚ°YݵYÓ®UÓ¸ZηZɸIÄÀPÁ¶G»®A»³E¹ºM±³J¶´F»ªFÀ¦@À¤;.µ“/ª›8«”7´˜:¯ž5¡£2¡¡0 £5Ÿ9‘¥4‘¤2œ¤9•©7”­,¤,˜¦+ž£-˜¥*£Ÿ/ž2œš*˜›0¥•&¦’¨”)°†)­‰«$­Ž ¯‘*¬‘*­–#§‹'¬"Ÿ“(œ‡,¥‹)Ÿ&¨ˆ.¤“7¨•?¦š9­™9«‘?ªA°–F§ŽI¦†E©G¢Š>ƒC™‡F”„KŠ†H‰„JˆƒT‡OzI‹vS…qRŒt_˜t_•qgšqb‘qf…aiˆbj‡dlŒarbq…Vj^t‰Yr“\x—Yl™PeŸTb Na¢Xk®Tq«Qh¯T_±T\³aU°_SµdR¯]O®]Z©WT¤\N¥\X¯R\«U[¬ZY§X]¦S^´Gl±Fo¾dÂAeÄ;m½9w¿-rÁ.wˆ™Á€£¶ž·…¤º|›¼Œ”°…¢¸t›¾¡³zŸµ ¸‰”¯’¢¾™Á”ž¼’¡µ”¤¾§ŸÀ–ž³•©¿™¢ÃŽ´¾™´­¢­ª—¦¤œ ¨™¨©š œ›™«œœ§¥–§«˜¥­¤¥¹¨­¸—­É™­Ä©¨Ñ§Ç£´¿«½Ä¨µÌ³©Ç®¬Ç«¾Ä«¶¿¸»Ñ±´ÌůÌúÒƮϺ¨×½«ê¼¥êśí͘ðžìȒîÑ۾•æΏçœ巗컋쵄åǎã˒éÆïĀäĂçˆâÂzãÃuðÆrðÁqû¾xÿ¼vö¹{ÿ»zÿ¾tÿÀoðÆpïÉxæÀ{è¸xåÌyãÓzØØoãÓxÝÐhÞÎeáÖkÞÏvâÝoêÖqèÔuççmìÝtãÝcÞÊeáÉbØ×^×ËeáÍeÖÕ\áÏcÜÒ`ÝÏVãÓUâÍNêØYëÐWìÓSãÈVâÅUé¿VåÆUá·Jí¸MíÀVä²Gç¼Gò»Sé²RÞ°Rè¸Vê¤`ä¡Uä§KÞ¬Læ±IÛ±Hà¡FÞ­H̬XÛ«V߯Q͹QغVÕºTȶJÌ¿TÄ®N¸ª@µ°=º¹K«¬>²®@´£@¸”;º›A¶2­“6¬•;­›6³Ÿ2¶ž2£¤+¦ 7™•0˜ž0™¢;Ÿ /–¤7£6œš+‘¡1££.¨6¡š%®™+©Ÿ& –$©“"§•+£Œ-ª—0¤"¡'¥‹#³–«—.¯˜.¦,Ÿˆ# •(§—#¡‘)¦‹&§‹'Ÿ”+¥“<¢¢@£•9ª•@¯™Aªˆ@£†E¦’?®‡F£~Oš€@˜=™ŠN‘L—…P‹‹L€PŒ„Q„‡U‚{X…ubˆnZpjˆwXŠh^•c^ˆf`‡fm‘lr“_w‡dq]o’Um’Pg‘Tj˜Oo–Zlš`aœVm¥^gœ[g¬Ug¯_`¥T]§bZ²gT¨XV¢_Q£aQ°RZ§TW¦XN°^b \g©]dªVg­K`­Hf®Gkµ=p½Bd½9j¾6l¼9}¹/xÊ+mŠ“³šµyœ·¥¯~£ª…”¯’®y—¼~¬w˜ªu ±€™­š¹•·Žšµ“¢À¢»œ¼”¥¹“£¾ ´–©·”¦­²¦¥°§ž¬¡Ÿ©š£Ÿž©¥¥¨¨®°©¥«²¡´¶œ®³¤³Àžª¿©¦Å«³Å©´Â³¶Æ·¯Æ¶®Å²¸Ä©¼Â±À¹´Ã½¶Ó¹·ÝµªÛ¶«Ö¾ Ú´¢ßº§ëàçÁ•åÔàÀŒãÁ•íƍæˍïǃó¸‰ñ³‡è·|à»{æȅæÂzé¾wôÀyチâ¾ußÄrçÇné¼pò½|ÿ½xÿ¹wÿ¾sÿÂpþ¾i÷Ãpñ¹‚俁繁àÁ‚ÜÒvÝÖuÞÛpãÓgäÓháÒvâÑrëÔmêÕmîÖmëänòáríÛgÜÉkÚÇeÛÍ]ØÐ]ÖË[ãÏ^àÕ_çËfàÉXêÉQæÇPêÏKäÖFïÎRôÉRçÉOßÉUåÀWð·QîºLó«Wí«Qê¼Uê¾JíºHæ²Lå¤UÞ¥Vޞ\Þ¤X×­TØ®Nã¥Xà¦PÙ¢SЭR׫VϳYɺOÔ¸JÍ·N˼V¾²S¿¯G±®@°³E«®D®­C®›8»–3·Œ2²:­:¯™8¶2±‘9´—:­£1¡ /›6˜¡6£–1 5¢™5 ž5’œ:ž•:›—-§£)§Ÿ-¥-©•(©Š'¦(¢‘1£‰.¥“-¨Œ*¦’&¡‘'©•0°)®"­˜#¨˜&›‘*‡*Œ®”)­“*­‘/œ‘3›”.  4œ›1žž8¥–>§Š4¨“B©F©ŽD¡~MœŠC•ŠE•}S–~X‹~RŽJ“„O„TY‰M_„yf‰gŒ|ZŠwb”fX…`V‡jequ‰kshoŽ[o‘[fWe–Zc“Oo–Wdž^gž`f–R`šJdªRi§^f¤a]°fgµde´[f¢RY X]ª]Z¦]V¨VQ¨[b¦^c²[a²Tl¦Qg«Jh®LxºGwÂGuÂ8kÉ6hÅ2vÇ)xÃ*o„ž¹y›µ|¨·ˆž±|ž®°›³}”·x—·r›«{—¬†–£~•®•«†¢¹ˆ¤½šª´¢œ²›£±’¨­’¤­—£­˜§¥—°¤¡©¬¢£› ¤š¡œ›š¯ŸŸª¦ ¤¨¦®´Ÿª®™¦« ©²—®±œ­À¨®Â©²É°©Ç²¬Å³«Ë¯©Ë³®Ë¸°Ä¾«Ç´­Ï¸²Ñµ¬çº±Û­¨Ø¯æ¾›à´šßµà¾”ܾ“áŠßȏðÍ~㼅åµ{òµyñ±€ò´|ë¿tê¾qâÁxßÆtæÃwãÂjèÅjë½tá¼ö½sòºƒñ¾ÿÄw÷ÅpÿÃeøÇzïºx轀çÃz케çÄrÞÏxÔÞgØÐdÞÙdå×dÝÍfêÒlàÖfâÚoïðpéÚeçàgàÒsàÅfÞÇhØÔ`ßÖeâÊhÝÑcëÉaæÐbáÍOæÃNÜÈVìÇRðÅZñÄMïËOíÇKç¾WäµSòµRä²Jí©Nê°LéÄSæ´Nå±KߪSß²Và¦KážPÛªVâ¡UÞ£^à©XѱVÙ·QÏ®TÈ©S̯OƲIι[Ì®X͹QÁ¶FÀ«M¬µ:«­@¤¢8² ?±š0ª”2§’4¯’7®Ž5´›4¯›?´š;¯¡0¤¤3™¤=ž3¤Ÿ4ž™3š—5œ’=•–:˜”+—¢'¤•.¤˜0 “!¬‹+¢‰­"ª…2§.£0²Œ*¡“0¦‡#°•0´£(§¢ ¯–&žš$ ‹/¦"›‡”"§—"œ™.¢Ÿ*¢ž7˜¦0¢Ÿ;¤ž=¯‹9­†<§„?ªE¤ƒA‡Dž…Mž€Hš„M„Z•‚O’~RŠ}K‰…OŽŒO…ŠP…€^ƒZ€a‡|PŒoK lS˜q^†ug‚rmet‰fmŽYo‡aa’\lŒRj’[r–Qo—eq•\o•Qj£Rc¡SiªZk¦\g§ae§as X`¡QRš^T¡[\¡Xb§L[ž]`¬Tb²Qo¨HiªPl²Rl¾RiÁG}¿Mwº;zÇ;wÅ?‚Ì)tÅ!pƒ›Àšº…›¿ƒ¤µ™®s›ªn“³s–±}Žº}•²š¶‚”¨Š–¬…œ«†£¬ˆ©º˜©«—ª••§šœ¬¡œ¬—§®œ©´šªª¨§¯¤¦ªš££›˜¢—¬¥¡²­¢¶¯¡¯¯¯­£¬–¤§›ª³›ž²žµ­ Å¯¥Ì²¬Ä¹¦À¸¤Ç°±Ò¹ªÑ´¨Ñ¶¬Ñ³§Ø±¨á±¦Ù«¤áµÜ¸›Ú°•Ö¬â¶‹ßÁ‡äÀ‹ấêÆ}ðÅtåµzî¶~õ¶yï¾ué½jéÇhåÂnè»oÙ¾cÝÄkâËmàËwéÅ~ï»|ð´}쾆ö½~ùÂvùÄoíº{î¾zðÃwíÀ~éÉzéÃßÒ|×ØoØÓpÚÓdèÖ`åÍgâÏaßÞaçÞeèêeòÜcêÖjæËjèÏsêÉuãÓsâÐoåÑbèÕ]ã×_àÐSæÉWã»`Þ»Zá¼PêÂVíÈOåÂYâÅJì¹Jñ»Xä¶Uë¬Uâ®Oà¯Hß»KݶEݸJÛ¶Ié­IðžYêžXñ `ìŸZÛ¡dÚ«\Ý´[Ñ°[Ñ¥KΧL΢S¢W£TʱUùUÅ´L»«K¯©>²­3¥¢4¦š6§”2¤‘2¬•=°‹H¨ŽB¦“Eª¡@§Ÿ7¬¡9¥§< ¦<¦¨;8–•4–”5¡–.¢“-¢”0Ÿ-œ(¦”%¡ˆŸ‡&ªŽ+¬‰(®†$¨†,²Œ#«‡'°‡"¨Š-­’.§›(±ž$­™¦‘¢Œ#§)ª‰&­’%£›$¦ž(› "–˜-™Ÿ4šŽ-©Œ2²‹0¬6¥‘9£…<žˆG¤@‚9™€C£wO›zV—zV—Y‘‡N‡ƒO†P‡L•S‘‚Y‘}YlKpJhRjWŠpa‡h^†nelnYi\i†VgXgŠ\sWyŸZsž[s ]s¡Xg•\l”Uf¤Yk¯Ul¨Xo Ynœ^\¤TT Z[§W]¢Ra¥Ve¤Vd«Vi¯Ij¯RmµNj¹Kh¼Ot¾Ky´DºHzÆ>}Ì/‚Ó$u‰µ|˜¶™»€¬¸vœ³r¤¶wš´j’ªtµx•«z—¯‹­| „—¡}™¬Œ§»Šž­—§°‘¤ª”¥¥Š©ª˜ ¦’««“­­˜¨¦™¨¥–ª–˜Ÿš¥¡¦¨ –®«§®£œ°¦ž¢¦˜®¨• ¬¢¥¶Ÿ¡´£¤¼¦®Ä¨¥¸¶«½´¦Ç­¨Ñ±§Í´ Ô²¡Ù²¦Í³˜Ò­Ÿá®—蹞᳖⯐䰒鳁黄޶€åȀìÅ|ð¾~í¶wö±sòÁkñ·nå³rèÂvèÌgç¾eÖÃiáºaâÆqïÃfìÃuçµp嵂ò½zñÊkù½kð·n÷½mñÈvïÁwæÂ{ñÂpðÑsåÒkÞßnáØjâÑcéÕoïÒdãÕgÛÖfÚçdáðnêájàÙhæÏvíÐwêÌsåÒsñÍläÛcäÔg×Ó]åÔ_àÒLáÆRäµYãÁXñ¿LâÅLåºMà¼Zð¶Oêµ]â·T×»RÙ¬QÙ·PÔ»EáµUׯJà­Qà·Fá®OÞ¡Yã©]ߛSå¦_ФPܨZЮLѪTÎ¥MӜEǞPÒ«VÑ®RÌ¡VÏ¥G¼®9´°3­ ?­›:ª¡<­<¥›4¡’>ž‘F±‘C¡Š?¤‘=³ž7±£D²ª@ª›A¨§7˜7œ¡,˜—4œ,¯—.š‘+¢—"¦ ) “$›‰œ‡$«‡/§‹.¯‘*¦'¦Œµ‹&­ ¨Ž#­Ž*Ÿš(‘0¦™$›‘*›—%‹)®Š3¦˜-§Ÿ/š•#‘“ š0Ÿ”4¤Ž6£š1¥/¨›,¯’> }Cª„G§yE¦|<œwD‘vFœ}P’vWŽ‹L„}M…QŠ†I•ŠW†O‹„Z–€^‹sPŒpPžcS•hW—v\‘scŽgj‘mb•[lŽ[j]p…[x‘Vr“YyŸUpž[v¡Ms•\u‹^m–Wc™To\t¥Nh¡[o¨^]§XaŸQe¥P\ªLlœJ`¡JX®Nm«Di´Rd·Gs®RtÃJr²MqµAy½F€À;{Ê8‚Ï$|ƒ“¼}œ·„¦À†­¸‚¬´x¦´uª¯kž«i¢­o¢®j™ t’¡~¢ }¡¢†Ÿ«~œµ€«­“«©“¬¤†¬«…°¦”¨§«¥–« “ª ¥Ÿ–¡˜”“œ™œ›œ™š¦¡®¢›²« ¯¢—¨ª–«©’§¬”§¯£©™«´£§±¤ ½´¨½¬¤Ç¨©Ç² Ã¬›Äª Ð­ ËµžÑ·“Ú¯—峝ﭓꯆç°}ß©€Ø¸„ܵ†îăïÀñ·yù²|û´nöºiò°jæ²uõ·móÇpë¸hä¹eéÆpéÂiè¿hè¶fëµiå­zéµlñÆhó¼n÷¹fï¼pôÂiöËlîÆtëÈpêÒnÝÕrÖÕsÛØjÞÔiâÕpçÐeéËjàÔpâÙiÛèsÜçtßÚnäßuãØoäÞlìÚbëÔ`îÖ[êÖaÜÄcãÆTëÊMò¾Hè½KáºNæÀMêºTâÃKÛ¿Räº\ݱXÞ±Y߯TØ·`à·WתMÛ©QÞ§Qß©GÜ°NÛ°Uã«SצUÜ¡\Ö¡[՛UߖWàœMÚ¤JٛJ˙Q΢F͙SӚWӞEȚBÁ¨7º¥3³©,®4¥¤5¨™5¡›=Ž<£„;ª‹@­‡<§9®—5¯©>¯¬B±ž>®ž7®Ÿ/®£:¨3£”2¯•4§™%™™"Ÿ•™$¤”'š‘(ª’%¬‘.²‹#®&¨‰'³Š ¯Ž(¤‹!+ž˜1›’5¥Š+¡–"•˜*–*£‘1¥˜*Ÿ–- ’-–”-Ÿ›.˜—'  $¥™-²”6°˜1¬Œ3¦ƒ8¡ˆ=¥Dš‚G”xMœuNyS–wIˆ„JŽƒKŽ…U„ŠZ‹WŽzQ‘WŒw`ŽuZŒn_’gWŠmT“j\‘rbŒme‹cd‘gn”[rˆZr„\rNuXtž[|”S‚›Mz›IjŽPk‹Uq•_l¢Xg To¨_k£]a§[e¨J^¡Ae¥Fm¡H\¨O[¨Oc¤Pp­Wf©Ok´Li¼Mt¿No¼>zµ9~¿<€Á0tÇ!u–¼ˆ•·›·‚­¶€¥ªwž°n£¢p¢ªh¤žn¥£uœšnš¢ƒ˜‚¤°€š±‚£ ­¨†°©ƒ¨¨Œ¥ª™« •žŽ¬§—¨—Ÿ™£¡“—œŒ¦“¤ž›¥“¢«¡¥¬¦¢‘¯¨–¬¤š¤´¡¯´ž¤³˜ª¹§¦¹±œ·®¥·ªœÁµŸÀ¨¡Ê¨–Ó²¡Óµ–Ó«ŸÜ¸˜Úµ•è¯™äµ”见䳍à§|Þ¨{䰂丂öÆîµ~ö·rþºoú´nù½oò·kë¹gùºgô¾qð­gôÀmìÄfë½cé´oè²oé¶tôºjëÃgõ¹níÄo÷ÈhúÌiøÍcéÅkçÔtæØmëÕqàÌmßÔißÕfãÓkáÜqÛÒoÝÔg×ànÝëpÚ×j×àpßÓpá×hçÔeìÝ]àÍcîÒbÝÎVßÐ]ÜÉ]ãÍJá»Tî·Ræ¾QÝÄGßÇSÙ¿TÕ¹Tè¿YÙ»bÓ¼[Ó·aÒ¸_ض^Ó²SÓ²QÖ§YÚ«VرFÞ¡Pä¦[ۙ[æ›Và¤ZÒ¡YÚ£QؚRٝNۚWՑV͛KϚWؘWӗHŗKÁŸ4À3ºœ;¶˜6ª˜3®Š@Ÿ“9¢G£‹6§—9¬ŠE®‰G¤£<ªž>¦ 5¨Ÿ9¤¦)²ž/¦¡)«¨/·›4³˜/Ÿ•*¢Ÿ¥“#‹"›•,•˜.¡‹2¥“.¢2«‡+¤"©ˆ#¬Ž%£‡-“%¥•*¡0–Ž/œ“1“1™š&–ž(—“6Ÿ*”)–š'šš5 ˜1¢š* š%Ÿš8£˜=«”<©‹9¨‰8¥:™<•‚E“|SJ‹~R‘{Y—ƒZ‘…c–wVŽ{e‹‰U’}Qz\‹q[ŽyT’sTwO’mV›f]k`‘j]–qlˆia„\t…Sw‰Wx’K]•OsšUy™Uu—IsžYv—W{¡Uz¤Pi¢\i¦P`žRl§Da¡Ae¡En§Hc¬K[«La®Lp§Nt©Jg±DmÂF{ÅBr»=yÇ3~Ä6|Ð1zÃ.|‚š°ƒ‘²„“ºv£¸y«¯~¢¥r¡¥uœ£n¢¢m——q–¢všx¢œƒ¥©†£«…£¤§¡‚ž¢™…­ž¢¡•§“›£–¡¤¢™œ•œ’’Ÿ•ž—‰ª’Œ¥˜‰«¤—¥ ˜ŸªŽ¦¬‹¡­•ª¤±ªœ¨¬ ¥®§™¶¢•®¤”º®œ¾´”Ë­ŽÒ¯”Óµ“×·œà¼”Ü°æ³‹äº‹ñ»‚íªŠã¦‹ãª†Ú¢}Ý©wã±ë»zðµyùÀrø¹lô´jó½eó¾ló¶eôºjú®nô±oø¯gí¼jï½iíÂkç¶tì¸kî®iì²uñ¿wîÀlîÃcðÑdóÚkõÑfñÎkóÔtéÔmêÎpàÎtßÝpÙÛqÛÜnÓÖfÕÖm×ÞoßÞnåÖaÜÝdÚØ_ßÚaÚØaàØaàÑ\åÈXéÈRãÏSÜÏOãÃUêÀ[èÂRè¾SÞÁQàÁUÓ¸VϾ^ÜÄ]Ü»ZÙµUâ°`Ü·aâ¬[Û±Tã«^Ú¤WߟPߣOâ©Tã¤Rç–Nå—Yå [؟Qڛ^á ZÕ£V؜SۚNڌYГNϑNȌBŊDǐC¸”:–4º‰3´‡;©‹>§—G«•@¯˜=¦›?« B°”E¨¡E©A§ 7¤¨-¬ 3«§,µ«1¶©-¯¥)­ž(¦ ©™'¥—&š –ˆ,¡'˜”,œ—*¥•2 ‰0„)¨*­€$«ƒ,‰/œ„&ž‰/•”.-›’.‘Ÿ&˜›)œŸ(£—0—”,™Ž2žŒ7¡’+¦†1§‰+£. 7›‰*¢‡. ƒ;ˆ9¡{D¡{@“…A”ƒNš€UŽ|Y„[–{`ŽtgŽ~a˜ˆf˜‚[”]•v[—pW•uW t\œuR•pX—nW—hZ‹kZ†[hŽZm‰X~‡T}”M~‘S|G}‹Lv“Is—S{œT€O}žWršTn›WhžHm¨Hs£Gm©Ge¤;i¥>fžDg§@k¨:k´>l°Ct´@q¼Gy¼DzÀ«ˆ6¯ƒB¤Œ4´™B±šA¢¥>°¥=£žLª’Cž”FŸ™6›—.£ž*­™'­¥(©¥"«•$©¡%¤“"©”(©–-•Œ–…0ž‘+œ“ ™‹)¡(Ÿ/¬•+¦Ž,¢–)¯Ÿ’/™ˆ%¢#–›$œ‘2šž(œŽ4š4Ÿ—)ª–)¦’)™‰, (ž•(™—)ª•.ž˜/œ:’†7ž1‚1–…:˜{Bžx>Š|I‡‹R–~X‹t[™‚R yV„bŽ}b•tQšT˜oWŽkak]•r\p[¡sc’iV˜sRfV‡b^•hp—fxŒSmLs•W}‘YzŠV{…U€ŒMr’KuM‚•K™I{ Rx£Xj•Tp”Nu”Rj–LfŸCl§Gf¤QuNq¦Cy¦Ir®A€¦Mƒ·CºG{¹6¼AuÆ8ŠÉ4€Ñ6Šm‰«w¯xˆ¬}”µq‹³rª‚–ª€•«t’©m§x—šy£”} ™„©™ƒ¡ ‡¡‹¢¤‚§šƒ£˜ˆœ›£¥‡  †ª–¨Œ£ž’Ÿž‹ œ”’–ž•ž››ž¡£ª¦¢«¬¤¥§–ª¤¡±•ž¬¥³šš³›œ¸¤ ¬¤›±ª‘±¥˜Á¨¿­À³˜¿´ Î©¡Ì±šÛ´“Ö·‘Ôª†Ú±~Ù¨…Þ³ŒÝ®‚â¬~ì¶ró¾nô½uòÁjæ½bë¹Zù¹]ÿ»e÷¶jú½k÷½còÅgë½dàµb߶oá½sî¼eñµoó¹wïÂrâÀoÜÄqßÉcèÍ]ò¿_æÄgãÏ^ìÊhñÓdôÑgïÇtëÂ}ÛÎwÚÑ{ÑÙq×ÝgÜÛgØÚdÙárÔápÐÜhÚÎfÖÎXÖÆ_çÂ\êÀXßÅJß¿KìÆOîÈUíÇVë¹VؼNÕÆKÏÇIÓÆLϳZÔ¶aÌ´`Þ¼Sà²RÒ­Rз`Ô±bç²Tá¤PÝ£VߚLæžPä™Oà”Mà’IٙGۜGݧV× NߨEΪSΜO՗BЌAґ?ύCӘ@œF¶ŽJ´’?¼‘G»ŒH²‘C±‹5®‹5«—8¯–>ª FŸ£<Ÿ¥A¦ŸFŸ“9©-¢•,¥›(¨œ,¥š#­‘&³“!¯ )­¥*©™,¥Š0€+£5£Ž/žŽ)¢$¥%ž—"¨Ž#©–+¦(ª‘ ¥Ž,–“5¡‘.£—'œ(œ)—”-‘. ™4§›*™Ž$™’ ™!–’,•œ2 š1—“0˜”:•Ž:Ž„?“Š7™„9‘{D‹}B‡yH†‚U“xQ‘z[yWšyX’z\•{R}^xXŒr`kXšpZ¢qe£f_škfœu`‘rZ—kdjh•ip’cyUvˆRq”Yv•TzŒL{‰OzˆRŠNw‰PpQwžL€ŸNy™Ip—Uv”Op“Ug—DgDb¦Jh¡Ou£J{šHyžF¥L¡J‡«M„·K‚½9zÉ9†Ã>Ç=„Ò<ƒn|²|Œ¶xˆª´x˜²r–¬‚Š§w’¬u“£oˆ¦p•p¢”z¢—}©¡{¤›ˆ©¤§—‡¥š…—’Žœ–‹’ž’¢£ˆ¡–“«¥Ž¢•’ž›–¢”–’ž£¡“›™¥©£¬ œ§­£§¥šž«£¡®¨­ ©¬Ÿ¤³±¦±¦š´¸™¹¶ŠÂ±“ꊵ±’À±¢Ñ ›Æ¤”Ì¥™Ú³…Ö¦ˆÐ¢‹Ù°Œà¤~ܳ€Ý»~óÁzî½gø¿rö¶bæ½bôº^óÀZìÂ]ú½iô»kñ¸aï³föÄmà¼fÚ¿iéÁgé·oñÃrò°vé³oãÄiêÃeàÎbëÆgîÀhãÀlàÎZßÓhß×véÔmæËußÍxÚÊjØÕtÙÙv×ÓkÜÖoØåkÒåwÓÒsÐÛoÖÐjÓÑdÙËWÜÆXèÇUÞÃMæ»GéÀKã¼[èÄ`ãÇYÖ·SÒ½LËÂFÆÄNȶ^ɶ`Ô«a×»WÓ®ZÔ©QÙªbã°ZèŸQâœ^á¦Sé¦Tە[å–PæIߘBڞNè¤Nè®På›LӜ>Ԗ@̘NԖ@ڔ;ԎI̓C¾ŠDÁŠK¿Ž>»‰LÁ„?µ“EºF©>«…@¡ŠA¥¡BŸ >£ 7•š0–—4›’-œŸ/¬š4°¢0°–3º”+¶—1¹“-®˜4¬œ.µ$¢/ª},œƒ2Ÿ‰-¡5°Œ1©,¥›-¦›&´’$¯”%®žŸ’0£Ÿ:““4œŽ6œ6””.œ•&“œ-˜˜(¬'—‘"”'•'–&›0Ÿœ*›1••>•ˆ:Šx.š…=“=šC‡ƒDˆ‹HQ”…U’‚SyTvQ–yT˜yT‹uY‹y[•kT˜mZ˜mažu_•o`šrWŠkg“n]hf‚hjŠ`wŽexWtƒPyX~’\q‡U‚Vr„Xz”Hx–S{LƒŒNxKm’Mx“VhšTq[e›Uc˜UeŸKgKoŸU‚—HœS‚¢EŽ¬J…´D‹·Eµ<Å9ŒÁ<Ì=†Ï8~{„¯z‚®q‘°y—¯x·ƒ•²†²|…¥u…¦s˜z›¢wžœz•˜}˜—}—ž¤§€«¤€¢™‰Ÿ£Ž“œ‡’“Œœ˜Š›•’ª›Ÿªš ¤’Ÿ§‘žšž“—¢—–¨“¥ ¤¦Ÿ¢™¢¡œŸ¡ª£¥§ž«¯¦³¨¢®©®­ ¥®–§¹“®¼‰µ±‰½¹–¸²”»©”ƤŸÏ¢™ÊŸÇ©“ѯÛ­”Þ§‡å¥ß´‰è´ƒî¼që´ní±gî¹aô½\øÆXñÃYúÃXñ¸aõ±iù²gú¼kó¾læ²qå·tã½xä¿xë»m÷·sý¿yó·näµhàÂjÔ¾vÙ¼rÝ»jàÆgàÏuÙÍzØÔvàËzÞÎkÑÆmÔÐmÖÊt×ËrÊÛoÒÕuÒÜtÙÎuÙÐjØÉcÏÇbÑÊfß¿XÝÉKéÄJïÃNå»Rê¶Zç½\ì¹Nâ½MßÁLÍÁRйRϲY×·XϲXȱWÍ´ZÚ¯]تTקTå™Uà™Pè\éŸ_áZݤVä™Hî–@éšGߧAã£LÜ¡HїC̗GÑ @ӝFҌCÆCÁDÁ•FÀ‹?ňA‹KºŒG´‹@±@¥ˆ<ª‹J¦I­œN¥£E™š>™™0—“0Ÿš-§œ1§š7¯œ8º›>µ¤A¼:º‘;³.¶“*°‡"®‰,§ƒ+°3§ƒ3®‘5°/§™&­™+©ž%¯›©¢Ÿ!¥¤2¡ž1–¡7’5’›8—6ˆ˜,š'“—. +Ÿ‘2š”+‘&‘ž%’˜4—™1“6‰…2†„4’z*”…1›„6ž:“ŒAŒPŠ‚SŠ„O{M’zZŒqYrN•wRŒqSmZœnU›oY¡j]›mc˜jZ‘sYŒiaŒpa‡qc…hs_x‰cy†ZzŒVŽ]}•Tu•Vz‹VxŽR~‘Sƒ—[yU–Sw’Rpœ]r›\hŸbk˜XjWg—\t™Yt£Pt¥O|ŸW†©P‰£O‹«MºG¶F¾I´L‘»Aˆ·;À<Šv‰«~~³|Š®x†¦€—²{‘¨€…³€Š¨vsŽ ~¤{—›x¢˜¤…œ¢›¨†¦¥ƒ¤¡…›’“Ž•Žˆ£Œ¨”—¬””š–ž¢š’——¡Ÿ’£ ž£¢ž¯®¢¡›ž¢¨ž¥Ÿ§²°¢¦ª£µ©£® ¨¨˜£³Œµ¦“¸­†´«“º¬’¾¥œÄ›šÃ©Â¥•Òµ’Э‘Ôµ„屉筍ݰŒæ²yî½tã½uá­qí¾]ð±jé¾Zô½[ê¿_ë¹gö¸bó¨]æ³dç¼dî²të¾kçµtîÃqó¯oç´dó¾uô¿läÊiÛÄdåÀeÕ»nÞÌqÚËsâÆnÙÐs×Ó~àÖnØ×jÍÊt×ÌhÎÓoÑÖrÓØrÌÞlÓÜmÌØfÖËcÑÉjȼaØÆVÞ¾TÝÃIèºJâ¹UìµSÞ¸^ß³[â¯NØ·ZθNËÄIÌ·UѼP̲Y×®^Ú»]Ò¬PÕ­[ЮWÖ£XۗRêŸRôŸIèŸOâ¥Uê›NڍLè”CےHØ£H՚IϤNÒ£?ٝIË¢<ՓCɌFЅH½ƒF½„=¾‰;ÁBÁ‰L¹Œ>¾>¯„:³‘5 >ªŽB©›@žœ9©‘Dœ@­ ;¢“0ª =¯™?µ“;¼˜@¹—@¹™9·œ,«‹)².·‰*¨….³,²„-·‡:³Š(±‰!®™0©ž.ª%¨Ž ¥ž™ !–” ¡5œ—;Ž=š3”“3‘”7–¥',›—$›Œ–‹›'”¥–œ-—•+‘‡0Ž,•~+†x-ˆ+”Š8ŠxAŽ~@’uPŽ„QŽMƒzLŒxY—x[‘mX’zc‘yZ•wb‘t[–dc’r^Ÿhe™la›mh˜lY‹kcˆll†`l’fo‘ps”bu‘Zˆ—_s‹Pu‡boŠ_mŒX}˜\†PyŽX€‘Y|Ws—bj fc›_obu˜Xt¢Ypž^|œTt—]zŸT…¢Uˆ¯Oˆ¶L‹«J’ºI”»O—·A…°I‚µEÌBŽr‡§v„«v€¤w†¬xƒ±wˆ®t|±y~²{‚®~•¥˜«|‘¦z Ÿž›ˆ–­—­Šœ£„™§–›ˆœ‘ —¥‰¯˜‹§—˜™’š–™œ™’©“¢ž¢žŸ©¥¨££¨¥¥¢ªŸ›¢¦¡¡®ž¦£”®®š´ ˜¯ ”µŸˆ®¡µ¨¸£’¾¤šÁ£’ݙə–š“¼ª”Ê®ŠÓ¼ƒÜ·„Þ©ŠÞ¦‡ç±€ä©vá±oÚ½fä·lç¯hâ¯gëµeë¾QíÆZðÂbì³fè¬cí¶cçºeßÀmæ´në¶hì¸lð¶hã°féºuíÅ{ìÅ{äÇnÝÇmßÈjÕÁrÜÄxÕËtØÄwÝÉwãÚrÝáiÖ×oÔÖcÒ×hÏÖbÊÔhÍÝg×ÙqØÎcÈÔeÉÈ\Ò¹[ξVÔ¾WÝÀOí¿Hä¿Hã½Xç±Xâ³XÕ¸SÔ¯WͳKÌÁNÕÈCÑÀI×»YÔ¸\Óº_à¬WÚ®RÕ­Nß©NÚ¡Pá¦HîžGå—JåžNäŸDáŽHيGۖQ؜PНB˕K՞JÜ£CÑ IՓFȎI͎>dž@½‹@·•CÀ•@ƃJʃM¿A¾‹3¯6­‡<Ž<›ˆ>¤‘>­’F¬’C·‘3°™2§•:­•G¦ŽL­˜@·–@½ 3°’7´Š.«ƒ,­‰;ªŠ-±Ž)´Š-¹€2º0¾#²Œ+©•)¢+©’"¢‹› œ™#–’0›˜=–’8œ1–Ÿ9‘¥4˜ž&˜“(›™““!˜Ÿ%Žœˆš‹‘'Ž&Œy0‘~;‹…7—†2“4’|7Št>ƒp<‚tK~€Pˆ€O‰‚Tšvd—zf—sc{[’yY‘u\ihšgh£ma›qcžhf˜ad˜i^Šheejˆs{Žp}Šqz—g‹f{[t“_{‰aq–^€™X}‰\x†O{ˆSz†Ypaf˜_lbr—`ušTl¨VnªWxœW€–Y{ŸX…§Xƒ°Y¨L…©NŠ¯C—±H—°O•³E¾>†ÊB†p|¯j{²s…²pz³oz½zƒÀr|º||°…‡±‡–³z“¨}Œ¨xŸ|•˜‚–Ÿ‚œŸ‘‡’¨€œ›‹’˜’ž’”Œ–••œ˜¢–¥••£“ª£›ž  ©—Ÿ¥•®§§¬¤—¡¬œ­¤£¨§³¥—´¢—»¨—« —º Šµ£‡¹ª•¹¨‹²®”¯¤º¨•¼—“¼ ‘¸«šÀµŒÇ¶Ö¶Ó²~à¸yê­xä¶nà¾gã»så¯nÝ«låªdä¸Té¼XêºUò´_å¹Sâ¬\íºWâ»YèÂdâ¾rå¯hð°jâºké¼mç¹mæ»mê¼pçÃxßÐåÊpåÉ{ÚËrÞÎrÙ×uâÖráÙuÖÜnÖÐ}ÒÐxÐÜdÒÔcÊÏrÒÕiÊàeÖØnÔÕqÏÆ]ÑÄXÒ»TÚÃPãÀ[ïÄJÚ½KèµTä¬Lç¬Ná±UÕ³VײQѹSÔ¶UÍÃJÙ±MÔ±NÑ«[× L×°TÙ¢FÖ®RÞªSæ˜HçœEêžSݑM՚WۓV֟WәGِQɐ>ʞLÖ£OÙ¥LܚA˕JǍ;ÁŠBƎGÀ‡NƏ@ȋEÀ@ƄI¾@½‡:¶“9¦9Ÿ–1¨‘1£2©”8¯Œ>´™E¼œ=®Ž<¶ŽB°•B¸¡Bº–6¶¥1¾’/°˜;«Ž<¹”<¯6¸‘5½‘$¾…1°)µ‹$¸” ª“±#¤›œ–"˜—- Œ"š(“•8“’9;œ¢:—.“Ÿ0‹™‹––•‰š‹žˆ™!Ž#‚ƒ$†€/’z8ŠxA’‚=t6†:’u:s@uJ‹uLxK–yZ˜{fœ}\ ncra’wgžjj™po¥al¤cX¤ngbd¦md”j[˜^išgb–nzpyŽnƒ—q|Šgr^n•iŽm{˜a}c{PzŠ\z”YyŒVu‰Xq’X|•^lžax [w›V{N{¡N‚¨ZŠ¥Kˆ©S²\‘³O‹¥B®PŒ¸N”µ>±G¼I¾9hƒ°jy¿s{Ár}½wyÉ}yÃ}ˆÂ}†·~Ž±‚¯xŠ·vŠ´w‹¨†–¥–©†’¡„‘¢}›˜„˜„—“‘–“’‘•˜œ‘˜›™™¤–§ ¡ “£™Ÿ‘¡£“¡³’¥²š¨¶§¤·¢£®£ª±š©¹–Ÿ¹—˜´¢”³¥–»£™¹©Ž»ª‰²¦«¤–¬ªŒº­»¡Œ¹²†ÃµÌ¶ŽÉµЯ„Ô·|Û·uÝ´tݺlÛºlà³må³méªbë¯^ä¯Vî¿Zè·Lð·Oò°Yä¶Yà´Vç¿Uï»déºfî®cê²lé¼oß¹kêÀqïÁkè½sëÆ}îÆ{ãȅî҃éÌ|ÞØ}áÙoÔÜkÔÕwÕÛrÊÓ|ÖÒzÕÝqÓÙm×ÙjÓÝeÌÕiÊÛnÕÐoßÅcܾcØ¿]â»XèÀWà»UåµIÜ­Hå®KÞ²KݳMܾSܾTиTÚ²UÖ¹YÖ´XÒ±QÕ¥KÖ¤Ká®Iá¨Lå§WÝ¢PáœLà•EٙM܍TߙOՖTҗN͞LҙM̒Aԙ@̝EΚ=؝?Д6ț=ŞGĒJƏJĐNȕH½GÊ>¾ˆB¿‹7±“9¦.¢2œ‘9¢“5›‹5¥‡C­=¶ŽD»“L´B­–<´œG¼™<´ž<»š;²˜=µ˜>¹™9µ1¸Š1¯.³Œ±ŒºŽ °–%¯š ª’#§“¥›&™–()•”0‹.—Ž5™”8–˜,–+‡“-“+‰œŠ‘‰•‰‘‚”%‰‹+‹Œ-‰1ƒ3„v@Š|FŒz;•wEŽuBvOŒzN{KsSœwT›ta}k¡ug¢|_žtg ke¦ekªf[Ÿc\Ÿ^g¤ge¥[cž_ažiišgfŒsoˆqx‚ut†ww‚w€oyŠt~‘n{™mv‘^|“[q™Wl›]s[o‹ZwšS|—U}¢Yw—]†šTƒ Z¦SŠ¢J…¤M…±L®O‹§M“¦CŠ´J²F·K‡µC’¸9Â7Œe±iv®s…¶nŠ»}~½ƒ°zx²x{µ…‰ºˆ²~‹«t§r“ªš›y™ †Œ›‹— Œ–…–Ÿ‰¤˜™–’‘—¡›™¡ “Ÿ¤˜«™ŸŸ¤–™¡˜—œ®”Ÿ¬Œ¦³£¨²™Ÿ´˜¤¯ž¢¦›¢¬¢ ²¢¤š‘µ ´Ÿ~°¥’« •¨ ‰ª£‡¾›‡¹£¹¨Ä­Ì³„ïwÖ®Í¹t׸wâ´sÔ¬uå³lè®lã»eð½Zö°YêÀVí¶Pð´SçÀ]áÂRä³Uâ¼^çºeâÁeÜÁpà´fá¯cé±aÙ¶kè´ièÀgãÉvã¿zÞÄxݽ~×ÃzÜЃÛÓäÍyÑÌw××kÓÍ}ÆÈ{ÆÜl×änØàtÖÓmÎÙdØÙlÏÎeÒÙ_ÖÎbÖÂeãÆWåÆMÚÅUÙ½LÖ¾SØ®V׺Mß»C×ÂIݶVÌÁPDZLÕ¸[Ùµ]ͯPÒ·RÒ­FӛOҟD՞PߟMä›Mâ”EەOߜF֕NӜM֕_Η[Ë VƔAŔBЛ@ۜKס=ЗBٞLƞHǛDƒGĐM˓G¿‘L½I¾Ž<¸•:±‰:®–5ª=¨;¢ž0¨•< Ž:>©ŠF¨–>µH©ŒJ­˜D® ?·œA±š>©Ž6²Š@¨–A°“>©‹0¯†.·…%·“,­Œ#­%ª'«š«’³™§“# ”!£š-’Ž4—/–’)‹š4–˜/Ž $‰#™-ƒ•Ž%†‘ˆ¢%Žš%Œƒ%‡Ž*‚Ž/†v/‡9‘r4ŠzE“C‚EŽzL‡rG‰sM™€\•{X§yZ©oh wl {d¨yt¤oo du›gf¤uW¦a_ kn¢\g¤e`›nnŸinŠioxvz–rtŽu{ŒjkŒn~n{”b„”cy‹\užbseqgq–^s§Q‚¦aw¡Pq¥SwœUv£S®MŠ®X¤N«HºC†¥NŠ¤I‚³OŒ­Q•±BŽ¶F»D‘»1Šb~¤h~ªcƒ¯o‰¶n®xƒ­n}´o€½±„Œ§v’©r‰¡sŠœu™›z“¡~Ÿ†“§‹Ž£}ž¢Ÿ‡—ˆ——¨¢¬”¦­”¤œŸ£§˜¡šš¦§£¤¥²Ÿ£³Œ›«›± Ÿªœ›«—™¦–ž¤¦ ¦–˜¡–›Ž£—›žƒ£¥“©§Œ³˜ˆ¸žŽÃš”Ç¢†½¢{¾¦|ȲzιuÒ¶qÔ·{Öºwß®så¦aÝ®]á³bâ°Zó»[ôÁVæ¶Wíº[éÀcìÁbæ¼_é¾cçºiÞ¸uÞ½që»géµjè¿fÙ¼cÛ¸pé½rëÁæ½|ÛÇxÛÃÔΆÔ΀ÙÅzØÆwÐÒlÐØmÍ×qÓÌvÖÝsÇÝn×ÏhÙÎhÖÏrÖÜmØÔiÓÐWÏËUÐÄcÝÊ`ÜÃOÐÈKÕÂTÚ·RÞ¶R×ÂHßÀIÛÃJÜ»MËÀJ÷OȸUÕ³TÛ­U×­RάGԛJїH؛FߒCàšIޔLؓJÛ¤EÔ¦MΛS̖ZÉ¢ŢQàDțGבGٔJÒ¢G؞HםTїOďF¸“FÀ™Dȕ@ʙI»A¼7·›=²–>´ˆ3¶<¯š6§¡7Ÿœ1£’5£ŒH¦ŠI£–E­žA®–J¹£Nµ¢Aµ‘<­=¢ŠB§‹:¥A¦†@°~=ª-«ˆ'ª‘1²+±‘ ¹±’¯²™!«”«ž$£œ/˜‘)›Ž&‘.ˆ 0ž.–¡"——$Š“(ŠŒ)Ž.ˆ‘)š+‹™#‹’"‰Œ•1ŠŒ6†‰/„x5„s5’uB‘‚OŠˆP‰yOzG‘uG|Tªz_©wa¨{gœ|i§pq¥mq£ru¡sn™qhv[šw\—hižjk¨ccœmqœoq“mwŠpwŠt}•|~•pulnˆl{Šh~…mƒ‘f…ŒjŠ”d†\Še}e†¤^~¢Vv¡Wp¬Qt¥Rs±Pv«N±O‰³VŠ²Gˆ´E€·Oz©K€¤SŽ¨L‘®J–ÀG‹È<‹¾<f€ª`{±b€°c‚¨q~§w€«w…µs„°‚„µ…€¦ƒ” v›~‰œsŠ¦„ˆ¦|›}‹§‚›¢Œ˜•~¢˜‚›•“—”–›–¨ª˜™§– ™Ÿªš¥¤­—ª¨˜¯™œ²œ©‘•±ž•¬¢®š›¤–¤™œ ˜’ž›“¥š«“†¢š­Ÿƒžž°«³¡|Àœˆº£Š¾™„¿¡„È©wÒ²xˬrÕ±uܸqÕ·mÜ®kå®`ܧhá¶aêµ\ó´Vçµbð¶\ìÀ\æÀaá¹`ãÄVàÅeî·eæÁtÞ¼nç¶jß¼pؽlÓ´\ݵpê¸vèÄqßÅuéǂÔÄtÙÐÙÉrÖÒpÇÓqÓÍnØÔjÐÑiÚÛqÏÖxÐâkÓÕlÓ×_ÝÜcØÛaÖÍ`ãÍQÓÏUÍÀbÚÀTâËUá¾OÙ¹[׿QÛ´VÖ»IܺKоJ×¼QÔ®X̼NϪWשPѦ[ܯ^Ù¤WϖIӑFÔ AݓDזDޑSРFÚ£QТDÍ¢NȘ^ͤVˤPÒªUŚN˜HÚ¤DזPϝE՝I̐FƑA¿ DÞK»—D½ G´ž@·‘Eº”AµŠ6±ƒ5­@¨”@¤–6¦–<¤¡A©J¨œFž“JžR°ŸT§£R¶E·•K¯’?©ˆ:©Ž:®:±…C­<®ˆ1«‰)¬ž*²!¨›#µ˜'¯˜!²¢¹£ª$¡£$¥™&‘›&œ’3“›06”'’”3–˜&†Š$€‘2Œ‰'Œ‹!Œ–*—#‚“+‡“'‚“1ˆŒ2’A‡F—}:—E†E‡{FŒ€I™†V¡z]w\¤wc§uk›mp£yi§rtŸkr­nh¬wpžm[ xo¦lr£hn¦ej§sq’uq—mp“r{’pršnx“s{kn”hr’ky—g‹š`ˆ˜k‡”h‹Œl…›f}’\ˆ¬Uˆ¥W¡OsŸ^ož\{©Uv­S~¬O‚©I„­P}²CƒµF}·A~¬H†¬A–»<ŠÄ<Ç6Ç4‰[Ÿ\ˆ¬h‰©f‚ªl„©w…¬yˆ©t|°{{³‚‚¬€…›–›|Œ–‚ˆ¡…Š¦z¢~”¢š¢‚ž”†¢–™”“¡–“¦ ©•˜ž–¡¤Ÿœ«£¢¨¡¡¥š«™–®˜§’“©“›¦Ÿ ¥§›§¥¤™™™™ˆœŸ†ž”« ƒ©œ~£™‰§§ƒº«x»«{¨z¾›ˆ¼˜‘¾•ˆÎ ƒÎ£‚Ø«uÕ«wÎ¥zÕ¯qÕ£jקcÞª]ë­]è¨eñ³^í³Sî·Yé½\è²`êÁgÞÂ\à¼dä½hãÅjâ½tÛ¹sã½pä¾sÝ»fâ¾ué¿u踂ç»ÛÊ{ÚËtÒÐoÓÇrÔÊyÇÏqÍÖnÏÑwÇ×qÏÝmÆØjÍÖmÑÔfØÛ`ãÕYÜÒ^çÐXáÐXãÇ^Ù¿VáÅVßÂKصNÕ·RÒ¶NʲJÖ¸QÑÁUϲTÑ´RÍ·Xʱ^ΫRǬT΢_Ó¢^֖XҔR֓SܚLӒQ̔KƖKѝNͪDȪKÅ¢PÊ©XÊ©QצXÛªYÒ¨XЩTФMÇ S͗GГGƖIßNÁ¤F¸¡E´¥E´œN¸ŸI»›I¿”Fµ‡;³‰@±‹?¦•D§@¢š@¢¡E  >¤žJ ˜Fœ–O¤™R³’U·˜Pµ‘C§Œ<°<«‡9¥’3­7°Œ;¬Š3ª˜.®š0§›0«š%¨’¯›©§²¦!¤ª"›¦)•¡'˜¢0š¤-•˜3šŽ3–‘.Œ‹(Š‡-~‡'‚.ƒ”.„”"~š(ƒ“"…—‰'(„ˆ.’5ŽŒ<’F˜„B‹?Ž„@•EŒ‡Q’~X¡ƒTœ‚b§t_¤j]¥jj¨sežri¢w`ªvg±~l¦ulŸzi¤rt«kv¢op xr™pg™xmŸxr or£l}›rt”tx˜f”f‚œ`ˆ—\‰“aƒ’dŒ›`‡›g‡£`}£Z„¡\«Tt©Pv¥WŸZ{žSz¥EwªGy«@‚»I…¸A†·@Œ¾:Œ³E‰¶>ˆ¼8ˆÀ?Å=‡cŽ¯`¦gˆ¡lŒ¥e~ªh~·ey°p{µm«zŠ°sœv— r§€’©sž~œ~¨}™…™’‹®— Š ž™¤“—Ÿ—ž” °— ¡›˜›Ÿ« Ÿ©›–¦¡“²˜–¤Ÿ¡¦Ÿ¥­ž•Ÿ ˜››”§š‰¡”ˆ¨–…¦’Š™†¬©|®¤º«†¬‚³˜„¸š‡½œƒºš‡ÃžsǨ{ظnЬoÚ§vѤsà±`ã²aåµ^â·hàÁWéÀ[öÀVä²\í®fã´[á¼[àÃcÚ·nÚ¸yÞÀnæ´v×»m׸iسrçÀeçÃpâ»uä½åºzÒÇ}ÛÍnØÄqÖÊjÉÇpÑÒwÕÒjÚÔmÔ×kÑÒfÎÒvÓØ`ÐÐgÓÌ_ÞÆSÔÂRäÅVÖÉLÛÀN×½PÚ¾P̾TÉÄXÊÁNÑ»PÐÄOÊÉKÛºUݱ]Ƶ`Á¨WͬZÏ´]Ö§\͞c͕Q̛MܕJТMʤFӝRҜPÉ£WÓ¡XɧE̟UÇ¢MɬNÒ¬QÈ°WÖ¦^Ï¡WÁV͙JÓMÈ E¼™I˝Q¬AëOœP¿™L³ Mº J¬“I¶˜J¤‘>¬’;³–8®˜8¥ŠC¤’9£’?Ÿ•>˜‹?œ–A¡ŸHª˜H­¢F§—HŸ—C£…7¤‡6«“;¦‰3¤•6£’4®‡1¯0®‘2¯–/³"¯š¥ª"«®%¬§¨˜%¡—%• 0™¡;Žž/‡™3‰”,…Œ5ˆ™'{•*y)€™*„–z— }–‘(‘+‘—*Š”5‘“8‰Ž2‡@˜‡<™F†7‘ƒCŠ’T™Qª~O«wV¨tg§rl¯plªl^¢{`¡}f¤}m°to©liªugªzp¬ll¢w~œlm¨~r™~vœzt™wz•du™fm˜qu™tr›l}—aˆœf…’iŽ]žb†›`ž^y›WvžW~¯_u§Z€£Uƒ¤Oz¥R‚¤J®L}±J}´R´A†»>’¹?‚º@‰µB‡µ:ŽËB’Ê;†^ˆŸS€¥a¡f‰¥n‡¤ez²]}ªd‚³g”­e•¨h‘œp‘Ÿ|Œ§xŸuŒ y–¡t“œt”˜y¤Ž~«Š‚¬—¦•–œ˜–¡Ž•¨‰œª’£¤’›œŽš˜‘©£ž¦™ž¯˜˜ª¡ ™™›©Ž¤¬’¥¨“ª£‰±¦€©žzœ—xž”„§˜|¦¦‚­œ†§™€ª›ƒ´’}½›ƒ¹ª„Ųƨr˵mʶpЫtÜ­sݧpÚ¯hà¯eÝÀlâ¹`ßÂZâÅSôÃWïÆbá¹`ßÃfæ¿dÞÅiá¾påÀs߸vâ±wÖ¸qдzØ´tݼjâÈiâÅgáÅqØÀxØ¿uÚÀyÐÇlÖÆqÑÃtÜÍsÖÏlÞËhÚÊnÞØpÐØoÓÚnÌÕ_ÒÉQÏÃPÓ·]×¼XÕËTÜÈKßÉPлIÄ¿MÈÃXÄÆK̽LϾRÔÉPÙ¼]Ù¸`Ù®eȯZÙ¨YݪbژeؖdӓZԒQ֜TϚQƛOʦOÄ¢NȚ[͞WÔ¬LÓ¨GҟPÒ¬YʯPÄ´U˪bȤV¾™P¿›QŕFŝQÜLÉ£GĬF¼®D¾žIÀ O¼ EªŸK¦•Bœ•D ŽB¯–C¯•7¯‹:¡‹BA™@˜Œ?œŠBœ“;¥—<¬›F¦šH«žC¢’C¦“6¥„0¤’5¯’1­Ž+«Š+²Š/­ˆ&©Ž1¬,¤¨*¦¦ ¡©(§¬%§¤!ª—.© 7¡š/”2Œ’6ƒ›.„—+‡—(} 1y”5u™(p¢#w {œ‡‘Œ—Žž ŒŸ-‰˜+…‘.‰“5Š‹;„FŽ…>–<”D™‹Nœ}W¤zO®v^ªpf®q^¨m^›odšsdzr§vn¥zj¨og¢tp¤kž|u¤nz©|u­|~¥rt—wmŸhy—jv”snŒqk‰s€•k†Ÿg‰˜e‡Ÿ]™\†–Z_ƒ”j{œeu bt£Xk©Y~¤X‚šP‹Dƒ¦Gˆ¬K€¤Bƒ­J´C‡Á@Š»:Ä=Š½5†½:“Æ>”Ì7‹R‚ªZ‚§]Œ¨\‹ª\³a®[ˆ°k…±aŒ­eŒ¯m—«k–—o”f‰‘mš z•Ÿv”›‚¡“…œ†£‰‡¤ƒ—Ÿ‘˜¨‰›£‘ž¦Š—­˜œŽž ˆ«–£˜ ª•œ¥š•¡¡‘¬œ›œ˜¨«’¬¯…¡ƒª¨€Ÿ–xž“ƒ¡¨•…© Œ¢“{¦•}¤’†§Ž‚µ”€Àu¾ª|Æ£kÄ´hÁ°pÓ¹nݸtÜ®wÛ¸kÙ´nâºmÖ¾lÙÅcäÈ`ëÁ^ç¹Yß¼cá¸XïÂeÝÀcݵrØÀj×´oÙ°nѹmÞ¿hÙ¶mßÊjäÌcêÏhÝÃjÙ»tܺuÙÅf×ÍjÛÃyÙÇvÖÌiÞÓiØÇoâÎpÑÏjÜØlÕÒbÏÊVÑÃVÖ½QÖÂ[ÓÄPÔÅGâÍLÏÈF×ÄP×ÄJÓÆ\˽XÄÁRÓÄQÖÌPà·bܲcÚ±fÙ±_Ù¯_اiâŸc֜dڛ_̚]ϛWМX՚\Ô®QѦV֚OÛ¬PÖ¤ZÓªJљVؤ^˧YÈ®a΢`Áž[Á—XǤJºŸNƜHº¢T£SÁ£E¶¤B¿£KÁ£@¶™8¨“6¬9ž”D˜„=¤‡5¢’4©“<¢Š:˜Œ9¡…A£‘A¤Ž6”;©‘HžœC§‘G¨ŒH¨H?ªŽ-¤‰9§Š9«‹'§Œ1­ˆ0ª‹,§™#¤¡ ¬›*ª¨$žž#§¡)§¥%¬Ÿ$¬˜. ˜6˜™/‡Ž+“*¤3‚*w¥*|¡*t¡/‚¦„š„ ”%…‘–‘”†ž"‹˜'’š.•—/˜‡D ;——;œL¡‘R•„L~J¨|U©kb¦mažka i^”jfš~j¥|m¥qg©vo¡i¨~p¢~uªns¥tx«xt¨u}•ty•pu—fu•dz˜kt™ky—_ža‚–bŠ™b~¢hz›e„£\z›^~›\s©VoŸ^x¡P~ªRŸP†¥I¦M‹¦T€µF†¸>®I—¿D‹¿DŒ½H¼<…¾;ËG—Õ;ŒZªU«Q…¥R†¨^{³Y~°c„«c…¯^†²]…ªc’¤e˜œkœ˜e‘k’Œu™ž~‰ªƒ†ª‡«ˆŽ¥…¤¨Ž¥ªšž ”¡¤˜§¤©¦Œ©—™°Ÿ¨ž¬‰¨¤”¥¤’œ¥†¢¬ƒ¤¤} ¥x¢›€©˜| ‡£™Š¡‘… ‘ƒ¥”{ŸŽ‡ª˜ƒµ—y»Ÿuº¤m¹­j¾·fƵrógдjÔ¾hпvÒÀ~áÃuåÍrÞÈdâºoê¼hä½jíÁ\ê½]ê¾cÝ»mÜ·kÜ´dÛ´nÝ·jÛ´fß´kÛ¾qÜÅoèËmàÂyäÇsÝÅqÚ¿kÔÍsÒÊpϽpØÁtàÐx×Íj×ÊpÚ×dÕÙ\ÖÏ]ÕÌTÌÌNÚÄIÖÂPÜÇSÑËQÖÂOÖÀDÓ¼GÓÈJÉËGÏ¿OŵZʸ[ѵcØÁ[âÁcÛ¹[á·\Ú±aâ¤Zâ^ښdٛdДdӖYÒ cқ_͚aÌ¥bͯdÒ©TÓ¬XÞ­Yâ§[Ö¤WͤUÕ©cÈ«ZÆ£^əVɛS¾œM¾£S²¤U¶ªX®¬V³¥Lº˜C°›>±–8·š6³™:ªŽ:¥“0¡‰1¦Š-™†9’6£8¦†7ˆ8 ’.¡5 –<¡’B¥H¦‰HŸ‡Jž†Až†C¨†9¬z4°}3°9­‰.®Œ+¬‘)¥–%¬—$±˜'¦˜+®¤.¨¡%«§$§¢$¨•"¢”,˜‹$‘+†–0†Ÿ,{¥"{š'¥.z§(ƒ® „¥(‚ž%}œ!~˜ƒ—)$”™!’&Ž’)“”8›–7—–:ž“8•†@š‰M“ŽF—ƒO£€ZŸvfšms£un™|f›rh sj§}b±yo©{m®}j³xm®uv¯xz±x~¬qy wužxu’vy”ix•ho˜`sžet•b|”[ƒ˜_„ ]}d|•\u˜`xžVoœWtž[s¨Vv¥N}©GŠ¦?”­GŽ¯I“¬K‘¸MŽ³=´F—µL—ÁR“ÆJŒÉKÃLˆÄB‘ÎC“T†¶`Š¤[‰®Y…£Z}£^}±`~¬g€¬c‡¢d¤^›a–ž]——q–d“Œp›‹u¢z¡‰ˆ¡…‰ª‡¥˜£—› “¢¥—™¥•¤‰ ¨ ”Ž ™‘™ž—œ™‰¥›Ž©£„£Ÿ¢¥†§¢‡©¡†­Ÿ„¨”‹¡…œ™ˆ¦ƒ¤‰¦†„Žˆ­–‹¦œ…³œv²œwÁ›g¹©m»¥fÀ¯v¿³mÌ®pδyÕ¾rÕÆoÕÈmÕÌnàÆlݸoß»jßÁ\ôÅeå»^â¶lçÀmÒ·gÖ´`Ý®cÖ³hâºdÓ¼qÛÀuÞ¾ráÊrãÑfãÊrã»qؼjÍÇpÇÐtÌÁqáÁ}ÚÃláÔiÙÒqáÐ_ÐÍkÊÊ]ËÒSÎÉNÒÉVݾHÔÊMÐÓQÍÌIÔ¾=×ÆOǺRÏÁG˲SκXм_ι]ܳaرVÛ°Vá¬_à¸\Û²]Û¥]Ü©^ݬ_ښYݐfӞW͚SÕ Z̨`À VÒªHеQ߬SÖ¯Wͦ[מSʬXê]¹šg¼©aƤLÁ£M²¨\³ŸMº¢V¸X°ŸC·¦@²˜L´–>³›>¯“7¶“9 ‹5§‡/¨…/¤~: B£–=Ÿ‰1 Œ<¦†1 „1–ƒ?œ†HŒN«~N …KŸ†<›Š?¥ŠB¨}3¥ˆ-|,ª‚+¤‰6©2§.§œ, ˜0¢+¨”#²¡!©§¢Ÿ* ¤"« *”˜'Š›+„£"y¢*~ª0|¢"„Ÿ.~¦'x£+„Ÿ&uœ&~“&ŽŽ0•™-ž  Ÿ+‹‘8›œ>£5œ—=ž’<Ÿ˜=¡”LW¡‘M•ŠS›{j xm£sc•um kežzf§|k­i©sq¥zt²vs°wt¯v}°|q®tsyp®~o¢km“fw’fu¤e}’`yg‰›b…`}š^Ÿb…ž`–[v ]| Tv§U€´L}¨T¯JŠ±LŠµRƒ­L‰°@ˆ¶C‰·I•¼E¼D‹ÁO‡ÉX—ÄF„ÈF“ÑL•ÑESt°[{¨Yƒ£Vˆ¨V„£]¯`¤`„§^•°Y”¨Uˆ¢\‹aˆ’o“rŽŒešu›t›Œ„¤‘‡”¨Ž”§˜’«œ–¡™šž“™¤¡Š¦¥‰›¡’Ÿ—‘˜–•š”‘’‡˜”}£–v ¦}¢~«’}°‡¨†ª–©”„¨Ž‚¡‹{©„ˆ¤‹†¥‘Žª†­™‚°šr³ iĝjǝo»£j¬iͬtίvÚ¾xÓÌjÖÈhÔÅdØÂpÖ½dàµeæ¼]é½dë¼jݹhÖ½h׳`η^Ò¹gà¿jß¼hÞÃkÍÅmÈÏsÒÊpÓÅnäÌfßÀhá¼gÎÅ`ÉÐfËÍtÞÅvåÔxàÙqÖÖqÚÅh×ÐgÄÓbÇÊ^ÑÈLÛÆRÝÃKÕÄUÇÊMÇÄPÏÂCËÂ@˳MÊ»O̶MÔ³WÕ¯RÛ»RÓµ_Ù·_Ø°Z×±Yå²^ë°eß±`Ù¨cÙ°]Ó§ZٙhݝbÕ£TŨVÁ¡U¾«K±JDzJÒ¬L΢LɛW͝UȦQ¾œU·¢dÁ§YŨOº­V¶¡S¹™L¯¡O³£R¶œK°˜JªžM§—F®ŸG±žF±“:¢.£1ž†<£‚:Ž8¡–B©–7¡„/¤}1šƒ2™ƒB™‰I¦…I¦Qž„M¤zF ƒ:£…:—‚1›‡8Ÿ7˜ƒ.œƒ1˜“2žœ)žš*œ¡&ª—(«¡&¬¬¡ ¨Ÿ+žŸ#£§( °)“ª(Š®0y¬+‚§*‚©&¬&ƒž2›'|›&{›t•„˜ Š•(Žš(–™+˜ž.Šœ=‰–C™8—–E“—A•“D–—L˜’N“Q‰`Ÿ‰^˜z_•xc™mf›op¥zk¦ƒi£ti«se nk¦oy¨y{­xv¨}}ŸxzŸ‚|®msq›gw™sžo~škƒ—j„›c{ g{¦Z‚ Zˆžc}œ\y¤_{®b}«]…µS¸X«[Œ»]»Pƒ¶H’°D¶Q“²P‘´M•ÂB‹¾RÆU¾NÆMÄL‰ÍN•W}©X€ªN…­Z…­[‰¦\ƒ­[ƒ«b‡§^‘©]ŸW‘ž_‡œe¡q“ d“oŠ˜pŠ’s—‡{œ‘„‘‘¢Ž’¤œ©š’°š¡’¡Ÿ£š”ª’œŽ””Ž”–Ž•š‘Ž”›xš”|œ¦vœ£z¯š{«„©†²§—~­‘…¨Žyª•„§‡¥‘‰©ˆ‡°|§šiÀœn½¡ihº©h¼¦sÏ°zйwÔ·mߺhÖÂnÕºnè¼fݼdå´gå¹Yâ´eÖµ_Ú·jÙ¯]Ó«bÛ±bϵiÝÀbãÇ`ØÃaØÁgØÅ`ÑÊfÞ»`ÜÊYÛÌiϼgØÐ^ÈÌpËÄkÎÄvÛ×}ÞÜjÙÒhÍÏgÎÇ\¿ÍWÁ¾TÒºSÓÆTÔÂIÓÀDÏÄNŽCĹCϺLÉ«NÊ»K̯HÒ·XÉ«Wض[Õ²TέRѹYáµaÚ¬^׸aá´fÓ«e×°`Ú¤h՘cؘS×¢TœTÁ£O·«SÈ©D½¨F½ŸA½¢QɒGəPȞX¸£]¾›f¶¡SÆ©QǚL·™Q³™U¾›L¶—F¨žB¬§D±žJ¯ŸAº”J­ŠJ«‰C®‘3˜‹6”„3;”“?¡š9—‡7š‰6›ƒ<›Š4£‚;•~G¤€K|R˜vP †J“…9¤ˆ:~0“z.šz,‘}6ƒ0š‹4“š-š—$“+Ÿœ(«–) Ÿš.ž™#œ /›¢$‘¥4£&¡'y ){¢5Œ¨3Ž-ˆ™7ˆ§,{›"… €¢‚ ‰•3”-‘—/‰ŽB‹’C”<™ŽD—ŒA˜˜O››R›˜\¥žX•`©e£’_¥d•}^¤tbœxr¨zjž|e«rbª|iµqj¬x®€~¥w{«|œ„}­{°zr«q{›g…¥sz£pw™n~”v€™i…£j~¨\|¢g€^}ž`x¥e…¨fƒ³W„¯aƒ·T‚¸ZŽ°Wˆ³M‚·Hƒ´E“½G…¹IºK‰ËHƒÀIƒÄTŒ¿R”¾MÏS”ÏR”A†¦Jƒ¯Qˆ°Uˆ°T‹¡Q’£K¤UŒ¡RŒ¤\†–e}–`‚ _‡—kŠžr…˜gˆ”eŠ‡oŠ–•ˆ•‡˜ŽŸ™ˆž ­›˜¥™•Ž™—¤’¦‡Š™‹Ž“•–”•‘}š˜s ¡zœŸ|§’w«u²‘}´—t©”y©y«“³’‹ª—‡¨–‚ª‘«Œx¬•o½•tßoÇ£kÀŸsÉ£tÅ­uɬyÛ¬nå²dß»dà·aèµ^Þ¸Uà¹]׳^Þ·_ß¼dÖº]ݺ]Ô³b׺gÓ¶fÓ·]ÛÆcÔÀcÑÄ]ÔÃVÕ»_Ù½aÙ½]лZÎÊ_ÖÔlÓÎlÑÌsÍÌuÚ×rÙ×tÏÓbÊÇZϽZÃÃTǸQƽSÍÉPÐÇDÍÈCÌÇBýEľOɯZƱVɹK˹JÒ¯JʲSǪTÒ§QΦUØ´\ß²cݵbÞ²`Õ­gصh×´i̳aϦ[Ɨ]ɗX˒Y¿–M¾¥H½¨M´¬Qµ G¶£M”FĚMǔX¼ Y¸£[À¦_ŧYȦMšQÁ›M¼™Q°œR¦¦H žA¨¡?­—<µ“H­ƒM«„@¤‚H—„@•ƒ<‘Ž<‘”7ŽAIŸ@™<Ÿ‡7¨5¢}>¦ƒC¤|M¡wG’‚<y0”}5˜z2‹}3‘‰<“ƒ:—€8–†)žŠ$––*’’'™œ›˜ Ÿ”$”–.–£,’­0—ª/¤7„¬.Š 1¥3€ 0‹¡1„*ˆŸ+„ª(€¥€¦€¡"š'ƒ™6ƒ @‡™?…Ž=†Kœ‡O–ˆM˜–Jž˜P™¡[˜]žš]ª›g±™c¦“^ª˜b ‹] ƒg e£{m ~l¯rq°vo©{y¯y¤|l¦|p¥„x¡|¤€|«twžy¢r¦r{¨jŸr€ pv¦b|ªd³^y±c{¶^€«]~§iy±g·d‰³`ƒ´U´VŒÀX»K‹¾CŒÁI¹Iƒ·Qƒ·S~ÈK…ÅP‰ÈRŒ¾X“Ä]ŽÈZœÑU L˜L|Z}œXŒ UƒŸS˜£KŒ¤S‚ž]ƒ›X„›g‹–h…¢`‰ša‡”lŽaŠŽi’x†‹Š’šž†—•—›’Ž§ †ªœ”Ÿ’’ŽŸƒ™Š…—Œ‰›‰ƒ”Œ„›Ž‚–‹}’z¤y¢s¯™s©–s´ˆ±“¨Ž{¨ˆš’w­Š‚²ˆz§’­—t´›zª›g´•w¼qŬx¸£n¾¨qȸz̲uá­lß´dÓµ_Ú·hà©fã¿eعYÙ¿gÛ·]×±]Ô·S̬fÔ±_Æ»eÔ°fÕ¶]ÉÆ]ζQÅÁ]ϺPÏÆ\Ò·Q׶]ʽeÉÅdÇÃ]ÇÏjÏÔuÐÍrÒÑqÍÓ{ÕËgÐÖaÇÒ^¾Â[ÎÃQżSÐÊLËÎDÆÎGÕÏQÍÀI¼ÄPξWŹ^Ê¿WкTͱYÊ£ZŧLÐ¥Jϲ\Ò¯aЪcض\Я[Ù¯eØ­iÔ®bÒ¬Yͳ_ɜRŞZ̙]ßH¾¨N¼§IÄ¢Q±ŸP¶¤EÒDƏE¼‘T¿œU¬¥XÁRË P¡RãV¶T²§W²¢GŸŸF¨¤Cµ–C´›?¸˜O«‡C¯F¢’>•ŒKŸŒ9˜‰5šŽEŽGŒ‡?—‹B~<ŽG†:vA§AžyIvH”yBˆƒ:ˆ€B–}7‰‚;˜Œ6š‘DŽ‘.“*žˆ&œ/””.¤Ÿ!˜›¢™š'‘¤'Ÿ$’¡-Ž¦.„Ÿ-£&Š¤(z™8|›:†š4‰›4|¥&Œ¯%y§‚˜!ˆ™1ƒ 9‰8ƒ’B…L“N‹”@Ÿ’Dž”JœLœšU™_¥–f§›h¡“^²f¢Œ_œf ŽXž^¥{f¨wj¯v´‚x²zs«‡t¥€t³…s …sœt‚±|€¯h£kyŸ~‹¢~‚®v‰²p}¨n{¬qv°dz«pˆµk|¬i·`‚·aÂc|³^|½f‡¿g†Ãe†¶T²R‰ÅT”»E‰¿M…¶_ƒ¿RÃRˆÄU•ÎU•Î[’Í`—ÇW˜ÔSªOwŒZ|“Z‚”M‚œQƒœLO…¥[‰¢UŽŸ^‰b‹_‚œU}™Y‰[”d‹m‡—uŠ–~—’z›š‡š¥‹Ÿ—‰¥ž“¦˜‘™‰›¥–…¡œˆ›‘“Š‹œ’{ ’v–’‚›{¦šp¡Žk©’s°‹…¶ˆµ“‚§”z˜†~š‡xœŠ€¨‡~«…t«u­s´•k²¤t¸ªw´¯f¿¯eÉ©p̳wЧzÙ¨pÜ¥nЮhØ©fß®bà½fÛ¿a×ÆdÕ½^ÕµZÜ´ZÉ«`Ƴa͸[ðT¿­VǵRεXȱSÈÀVÃÁP÷XξWÔÅ^ÍÆ]ÐÁ]ÌÅlÐÌnÎÎqÍÊsËÖsÒÛ^ÕÕYÒËaÈÊaÅÅZǾVÁÈJÃÈLËÁSÐÆRÑÅOļLÁÄJÌÃTǽPƾOĪQÄ¥W»¬S¾¬Tî\̦bÖ¬[κd˵k̺bʸgÆ´hˬ]À´VÅ¥X¿š[Á¨RȬPÁ®UÁŸN·–J¹G·AŞ@¼œI¸‘J½¢H±¦IŸPœVŔPÀ›Y¶ŸW©§S±ŸS¨˜Dª”@°A¯D¬LªL£@¥L˜ŽJœF†7˜…AŒ|Gˆ‚;Ž{<”‡>ˆK•}Q–€J¤‡L¤Q“sJqAŠ|H‹~@Œ‚Eƒ=–A•B””6˜‹.Œ*ˆ-šˆ*“)©Ÿ(¨›š › (ž›$§#˜ #ž)†¦.‡ž.~š8uœ9|7ƒ˜:…›.‰©+ˆœ'uš&’&Šš/‚”7‹I‰G‹›@‘–Nš—K”—R’ŠVœ™Uš–V‘Yž‹\¦Œ\°˜h¨“g©“]¯W¥‘]²e¯zf¥nª€x­‹vª†s°…q·‡{©|‡£v‚ªsz²k‚¦sŠ¡~…¡­|ºx„¸g}»d†»o­x°u…¾j†¾n|¾o†Äa~Àa„Çi…Ã`ŠÉbŠ½Y¹MŽ·G–ÀR½[¯_†¾^‚»^ŒÉf™Éb—ÄgŽË]–ÊQ–ÑQ¥T~˜P”K{M‹—V‘˜K“”W„ŸZ•V}›U‡‰X‚Š^‘X’`‡_ƒ‘l……j“’u•—|œžr›’‚œ„¤š‚¥“ƒŸ•‡£—˜š””§—Ž¤‹€ …™…‰£”{¢“s‡v›’xœ“sª‘q¦„y­‹€®š…®‘Œ¦Ž…£‘{“’u›„wŸ“z¥Œt®ƒw¬‡n©Šh¸šv´ j·±m·±kË«kϦlÒ¤hÓ¨dÖ®kέb׬_Ù§eÖ±]à´Y×®TÛ¹_Ò°[ϯVΧdȪ]Ê®]È«TɺMýMűXÆ·M¾¼Y̳\¿»ZÁºRý^Æ·]˽hкfÏÂkÐÃnÉÍeÓÎrÇÕgÔÚ[ÑÍ\ÕÈXÇÃUÃÊ]È¿PÇÍQÊÄWȽNϽKøIÒ·]ѲS˲\ȺRȨOÁ¯YÀ§U¹£YÇ«SäaͦdÓ®jô\¼°fŹZ¾¼ZĺaÁ­T¸¤\Á¬fíTÀ¬UǨTƦW½–HµœK½£Iº¢H¼ D­ H¸ŸC¼¥S½™PĞN¸¢T¸ N®›V¥›V¦¤EªŽ=¨ŒA§’Fž‰OŸ”T§”Q—ŽP¢‹K¡ŒIŸF“‰;•„B“ƒ9“vC€<†G’„Hš„IœvP„K—ˆS’wI“qB—qD‡‚EŠ€<€>—†;™B™‡4 ‰5“‹0ž‚.©†1¬‹& ‹¤‘%œ‘%¡™#’˜+—.‘ %”%‰¥'Œ™*‚&x 4xœ9x”:„ž<„¤&zœ0€—)…¥4¤9‚›:ƒšI‰’G;‹šH ’Q›’R——_”™b“—] až“\±œeµ˜k±—i³˜]´`¬“f±•h¯g´nªŠx«‡{®‡{©w±|­€‡¤z†ª®p‚Ÿr†£~‡¡„‘°‹®‚’µx‹±t}Â}}¹}·tŒ¹s‹Àr|¹nˆÁf„Àd}ÃnvÇ`„ÏcŒ½a…¹M‰Æ]ˆÀS½_Ž¸_‰·dŠ»\†·`Åk”¿h•ÍZŽÈY¢ÏW›LŠ•S†•P€ŽS‡‘U‚–K‰V‘’O…•S“J{‡X|ŽT‚‡XŠ‚e€rƒr‰„q‚v˜|œy”–w—‘†œ‹Ÿ“Ž¡”Š˜™Œœš‹“›š’Œ…‰€ŸŠ€™Œw €yšƒs™~x…w ‡™…uª”€ª“†¯—‹­‹…ž‰„~¡–£“w¢’x ˆv«†t¤s¨u²£m³ t¾¬kË´cΪiÒ¦fË­cÔ¨hÒ¤_Ú£XÓ¤bܱ\à²Zصaá§VÒ¯YΨ`É¥aÓ®Yȱ_Å°Wù[ɵOÆ°Zº²TÁ±OǵXξSÄ¿^È·[ϳ_Å¿l˺nÙÂoÕ¿dÏÉhÎÍlÐØeÆÔhÉÐcÒÈ[ÔÌWÉÊXÂÅUÀËL¿ÆQ˾YƼUξW×·WÕ±\̨`É°\ǤPÀ©QÄ­P½©V»¤RÇ©WΩYȯfÁ¬i½±_ƹT¿µY´·W¹¨b´±g¾¬añ`¿ªYÄ¢SşN¼ TÀ”Q¼šR·šEµ—H°¢@¶§H¸›L¸šX¸˜R¼šO¶¥S¶ M¥Oš‘BŸ•F›•HŸ‹TœV –N¢’W˜—P ’VœLš‚E“‚A”‰=•~9˜…;‹~K–~K’yM–{C{I—…I~S–„PyJqOyMœ„L—‹GŒ;’Š?œ….–-›–2ž- ‡+ª‹/ª‘,£•$¢’&œ‹&‘‡(Ž’+„*š%}—£)|¦/|§*s«1v¡9~©1€«/…¬+¤6vCz§Eƒ›N‡˜EŒKˆ’G–”I–“PšO‘˜[™h™ŠdŸ‹l§še¦˜e®˜f³•a±œZ³šd»—cÀž`µ•l¸…s±ƒy«ˆ†²ˆ³Œ´ˆ‰º°‰€¬€ˆ¦vƒ¦v}¡z€«u‘®±|”±ƒ²‡‘¾y‹½uÊtÌs„Ây…Àg»e€º\ƒÉaxÇb‰ÍZŠÑ[ŠÆZ‰¾V‹¶X‹·`‰¸jŠÁ^…¼bÂf†ºmŽºn—Åc–Ô_Ñ_—T…›O—R‰‹G†šJ‹ŒG‰S‘RI{’NŒVO}ŒYˆ‹`ˆ—gˆ„~‘ƒp‰Œq‘‹~{—u›Ÿ†˜œ‹ž“•˜†œš—š‘•‘‘|‰Š•‹„ž‡€’‡y‘„r™Œv•}j™„o—‡o—•{˜‰u«–ƒœ†¨“©‹y—••†z¦†w’w‘x y£k®—j«œm®Ÿp³¬sŤdË°eÓ³bÏ´Vʪ_ΣSÕ«aÙ©bã¨Tå¨Ræ¨`à®Yϳ\ɪ[űZ͵Q¸X¼°Y̺KýUűUƸS¾®MÂÀV·¶TĺZÉÀ`ͲZÆ»hмcβjɳfÆÁiÓÈtÊÒaÈÕhÈÁbžeÆÄSÇÐZÉÐKÂÍIÁÄN½ÃVÄÊ[ȹZ˸QÔÀd̹Uʵ[Á¯UÀ¬\·¥\ĪW©XÇ¢UÁ²`ϧX»´VÁ²\Ä¥S¼¶Y¿°_¶¯Uº©`çZ³^Á®T»œPßK¹“A²ŽD¶œ?½F·ž=«¦;²£C»žJ­˜S¸ F»˜O¶˜FªšG¤£O£”G›–>§ŠD–’[ ‘X—M–’U¤’G •I›ŒG‘ŠF“|A~5•‚9”‡FŠˆBvB•@Œ‚M—zO‹rHš~S”tQIˆROŠ‚J”€H˜HŽ„I”Š@••=›’.˜™4žŽ2¢6“‰&–Š)”– š'•’(•—/Š+ƒ %Š¦0~¬0ƒ©0w£&€¥/r¤:|­.zª5tª-€¥/‚œ=z—C•=’I„ŸF„™I¤Gœ›Pž‘X”›U˜ŸX¡hž˜i©—\¤™]±›h° `¨¡b¼‘h½fµ‘d¬’l·‰y¬yt·…{©€­„°•†·‹Š´Œ~´}„¤~†¨€~¥~´{•±z’ª|Šº|°sŠ»u“Éq”Àj•ÀpÅ}–ÆsÀj€Çn‚ÃjËczÊd‹Ï\€Ð\‰È[ŒÀ`ƒ°fŒÁfŒÂf¼o„¹`‰¼mºb¿aŽÌ_–ÆZŽR„“H{”?‚›Gy”N‘R‡G†ŽDs”Av‘NuN|ŽSv—c˜jŒ’x“{„uŒ‹{˜†mˆn“–m“}•™Ž‘¡›„’…ŒŒŽ••}˜–‚š|—”s“‹u›h›ƒl¨yj£|qŒwž—o¥”x˜ƒ–‘}š”„¢yz¢‹n™…n”Œo—n›y “s¦”l¤¤eª˜b²j½ iȦcɲ^È®UÈ´OάLß³JߪVÝ®Tä¦ZÞ¨NÜ°SÊ®Pȱ[˵OƬHĹQĽXÊ¿MÁ¼M»µKÅ°WżX´¼T¼ÅQ»½U¶¶WÀ®]ʱWÅ´`Á¯`»µ_ȼkÊÁj¾¿lÂÅ_ËÆgŹ_ý[ÀÏUÉÌXÀÏNÂÈT»Í]¶¿^¸ÀYÁÁRǾ[¾_¾·_Á»gÅ·_¿¹Z¼©VºŸMÆ¡T˟OĬRƪ_¶¤\¶­[Áª\Æ¡XÀ¨SDz\¿®[©S¹¨U¼¤P¾›A¿‘?µ•G±™G³’9´™:²œ8±£<²¡O«™PµžJ¼žB¼˜G¾›B® E§N ’G£›MšQ Jš’TŸ”W¨˜O›“I’–L”KŸ„=¡:›†=”‡Cš‚C£xHœ{>—sK“ySQ›zI•†KŠƒUŒ}W‰yI‹~Mˆ{F‘€E›D˜ŒE@’œ=š™A˜‘@Œ’6”0—Ž)”“(‰œ1‹’<Š™5‡5†¢(Œ­%†¦0ˆ«(x /yž-u¦9m«8n¢0lª:xª6ƒ¨7€•A†”9†–<†¦D…¨M’¨S™ Oš¡V”›Y£”_§b£—dŸ‘Y¨’^±•fª’g­”q°Ÿn·š[¬–a°t±€g°wk®|n¬„w¨‹€°“€²‹¯‡µ†‰°|~¬|…²~‘®}œ¯s–²|Š²v†¶q¿t¹m”ºiÅu–¿v•ÇuŠÍpŠÊp‚ËcƒÂh{Çh~ÃdˆÊiƒÀa…¸j‚»sŒºk‰Éo‡Çj…Ìh‰Ê]†Ê]€¾\ˆÇVÄX–N~”MzIy”MsˆM|ŠIy‹L‘Fo†JJ|W{ˆKu™W€Œe‰r‡q‹‚|†wŠj›ˆrœ‘q•š{”†—•‡ŒŸ’„Ž‹‰—Ž…”œw’’{˜›v‹‹r™’mši•u§n¡e™ˆk¦Žp¤˜|›››€””ƒœ‰y¤•z”Šk˜s’šs¥p§—w©—k¦ž_²fµ¥cÁŸV̧UÁ¥R¼¬QÒ¦QÙªMÒ¡Nå¤Tß¡Nç­Lè¦KÙ¸GÍ°GÒªXƳGË»QαFÀ¼MÇÁVÇ»PÀ¶\ı_·¯[³¹Yµ°T°¶O¶µa²¨[´¬g¸ºb´²i±Ã`¿Ãiк[ÀËVÈÁa˺dǹaÁÃV»ÈZÂÐS¿ÔM·Ð[ÀÆ\¼ÃY¶ÊV»¹`úZÀºi¹¼eÀ¶Y¸±_»±e¶Ÿe¾£cĞRŬW»®P·®L«¥X±žU¼£R³ŸR¶šP¿›T»£Z¶¬O²£UÀ¥P¸™G¹™B·’B¹Ž8®5´™<¶ŸH¥™;¥—O¯¢Fµ˜K´•@µ¡A¯šK¬ŸJª’NžŒQš‘IªŸV ’J¨”Q«ŽQ§šU™”H”I‘‰@Œ8œ|>š‰C—‚?™„;™ƒA™xE„IŸ|HšrN¦xP‘€L•ƒG•N‡{B‰G†y@Œ‡A›ˆB’IŠ‰A…’J”L‰‘Gˆ•@†‰>’,‹/’œA—0€™0‚ž3„­)‡¤0…¢6}Ÿ&~£0}¬.}³,w¢,o %v¡)z¡0}œ-v;{<„¥>„ŸBŠ§H‹°J‘£SžªX’ TŸšW¤ Zž¦dž—`¥›e¬‘hªjŸ’i«—c³’h§–e©h²†t²tt²uk§‚u±}®˜ƒ®Š{´Š‡´‚ƒ±~‹©~Œ©t‡µŽ­y—«z…´x½m„¹gˆÄuˆ¶o”Âx“Æl”ÁtŒÆu’Íj~Ðl„Îk‹ÂcˆÇ`„Ée…¾i}Âg€»n†ºm¾eŽÔhŠÉkŽÏY“Â[‰Ç\„Ë]”ÀSš?}ŠFt@|‡Hx†NyƒEu~@u|CvE‚~E„L‚“T~•d„f„r™Šv’ƒuŽ†n•‚p™r–{™“r’“u†ƒˆ‘…„‘‡„“|Ž”€žƒ‹™w’™i‘–h’k“—m’‹hœˆg¢†jšˆf›˜m¤›x™¢w™—z ”v›‹wžŠyž”wœŸm˜št•¤ržm¢£b«Ÿe³—^´žT¾ªUÀ¨W¤KÀ©O¢OÓ£LۜGß Dá£Bà®Fé­Eà¶?Þ°<ϱHűIżIÑ¿LÌ»L͵Y¿¾YÆÄ`ǾYð\¼³`½©W®­T³§Tª­]¶­e±·e¸¿g³À_À¿dŽZ»¹]ÂÅSÇÉZ½aÆÃ]ÇÃYÂÁPÀÐV¼É^¸Ä_ºÈbªÃX­Äg¶¶g¼Àc»g½³k³·a³¨`¹£e¸Ÿ[µ£aµ¬]¶¦L´©N±¤G¨¤N¯˜W­T»•VÁ¥V¾¥W· T»PÀ›D¿ŸH·—B»›;¸™:·Š8¸†=¨F£ŸC§œB«›C¯“A«š@±œH§’K£–W©•V¢–R®šP«˜K² R§–I§ŸQ¡˜NšG–’D”’8—‰8œ†:•€9Žw>Š|=‘9”~B•€J|B˜L {JžsI‘wAŽv@‘€I‡†M‰A“}N•…M‹ŠC…ŠEŽ“AŠ’E‹Ž>ƒ“FŒ˜@’<”ŽF‘AŠ“7„–7€¢0ƒ¨*{¢'y§.t§2|¨)|¤'}¯0oª&qœ$f›$kž-u¥)y«3…°=Ž¤CŽ¯P—³PŒ¬U®_Ž²_œ©Q¢¯X¢©UžŸd¥£f®•q§pŸ–ešŒh˜›gŸ˜g¡‘iª‹i¬„m²l·yl±~l¬Œz²Ž|­‹ˆ®Ž…°²ˆ·ƒª{´v…®tŠ·qŽ¾sƒ¶p½gµm‹ºt‘Âh‹»m‘Èd•ÆjŒ¿kƒÈv‚Ìk~ÌmŠÌqˆÂd‡ÂiÀl‡Ät‚Ä|†ÐnŒÓd†Õg‘Ï^ŽÍ_ŒÐdÈi”½^ByKsŒHj†BsŒFp‰;iƒLjvMqvK~~UxVu•[u›V‰k‡ˆi„ƒx“fˆ…o”„k”y”~qˆvŽ€ˆ’„„ˆ‚ŠŽ‰‘“‹Ž{‹”xŽšm’ŠvŽ_˜o—•e†k”‚^—ˆm“–j”“w©{£¡’˜z’“w‡}–‘s“•u˜“u™Ÿn™”f©`³¥^²¢X¶¤a¬™K· Tº˜ZæVɞLíMëGɱQÒ¯OÞ¬BØ­JÖ·HײOÕ»LÇ·VıK±NDZB¿OÎÃJÈÀUÆÁ^½­Uí`µ²b±¶a«·]®±V§¸R§«^®¶`¯³_»¸\¼ÂQº¾_þOÀÁWÁÂVĹ[¾ÀZË¿YÉÆ]ÂÈ\¿¼\µ½c´Ád¨¾`¦¿^·Â^µ­W¸¬]®«Y¸±f°£a»ŸV¹ŸUªœ\±§O­¡G°§P¬ A´žGµ•S¼–]µ›V´¦[Ã¥ZÀ¥U¸—S¹›M· E±ŸD²”D½ˆ;¸‰FµŒ8³ŠD®—:¢›;±–K©•G²šJ­›B¤›J™FžF¤•Rª’F®ŽK§™I›N¢™FŸ?–A”‘H£–@¡ƒA“Š;™9 }>–€7‘€:‘…8˜„D“z9•yG¤sDyIwL‡€L’vH…{?‚y?’~Lš}U„~Q…†M~}H‘C†‰C“HŒŠIƒ‹;…ˆ:Š=ƒ™:‚›6€›1‡,}«9x¥>wª0§$u¬4p¦8o¢5k¬$i¨.a©6sž0u¬6©B‚žAŠ¥R•³\–¶`ˆ¹c­_–§Yž£PŸ«R¥¡_ª¡b¨“c››o›f œf ‘c d¯_¬c¹„`»~d´‚h±sµ‡n½Šs«ˆs¶’ƒ­|·z…¶€Šªz{¨w€²q“­n}´lx¬c‡±b‡¹sÂn„¿nŠ¹o™Ëk™ÂlˆÍk’Å|€ÂkÐw|Ìj‡Ám}¸o‹¶o‹Æu”½u–Îs…ÊkŽÌkŒËg‹Êa”ÅbÌe„À[“QtGq‹EbBa†D[{;c|GntMuyPu‰Tv[y‘Qw—bœc‡”j‡s„~gŽ†eŠj…yy„}rƒt‚zŠƒ~……‹ƒ‘‡„‡…ŠŠt‘Št‹Šhˆˆeˆ‘i™b•Š_›~_˜Žk—nž“p¢œx™‚“zŒ•r“…yœ”x™˜gž–t¢›t§™t®¡d¯Ÿ]µŸ\¯¢M­•LºžKÁ–XŤYÇ RĤJîOÆ©F˲MÒ¸I̹?Ç·CνPʶSͲSÍ»RÄ´MÀ²QÄ»HʶJȽRÊ®OÀ¬Z»£Y¶ª^¯©_¯¯d¦«a¤´W£»`­¸e¸ÃX¸¾X»¼V½¯S¿³T·¸VÀ¿a¼¹dÀÅm¿ÉeÁ»Y¾¾T³Ã]¯¶^±¹R«½W©ÅXª¼Q©¼P¯«_®ªf³¦^ª©\¯žV¶œO­™Q« G£¤G§¤E±£F¶¨J®Z¬©Qµ£O²¥[¶žX¹›L»¢DèA»§@­›L«™L´†L³D´„>µŒ;­•?®D±™DªŸE¬™AªšC¤œ@ –=©‘> ›G¢ŒL¨ŒPª•HM •F““?•ŽF¡–@¥Ž:œ‰B¨ˆ7£‰8šƒ5›„5—…6–|6˜{1–‰8¢x8£sI›{O•~K‡tJƒoDlP…uL‡rM”R‡V~wR|{G„ƒ?ˆƒB„M‡‹E‡†?†…9€Œ8~‡A~‘=u›>|™8k¬8g®=j®-w¤.pž+r©/h°0o²3qª7g«žšC§œEŸœI¢—JŸ™O¦“Pœ‘P‘’T”‰L˜‰G Dš7„6¦6Ÿˆ6¡;œz6žˆ?§ˆ>£„=œˆ4•ƒ6¥‚DzD—~C˜{?•{>|h;‹pHŒsO„R‡‚Hˆ€MŠsT‡pJ€‚<~~F‹N{M‰~:ˆ€HŒ‰Aˆ’5|Œ8tš6m˜Ctž8`§Ij¤Cv¨6k¦d¦0b©>w¬=m­1q©>}ªDƒ£TŠ«_ˆ¨WŽ·T›»P›°\—£Z©_—œa¡˜f¨ d™˜oš k¥›gž‘h±–g¬•a©‹m·‘m¬q´kª–fµ‰d·…c¯iµ|l­€y·…‹´ˆ§x°‚Š°{¡pƒ¢{~±p‡§b…­q‰¾u¹e—Çq ¼k“ÌršÈp“ÇuŒÁvˆÁtÁt‡Ç|À„‘ÁyÇyˆÅv”ÈoŠÈt”Èl‡Án‡ÅmŒ½qŽ¿eÀ^…FWA^”Ac”;]„6gˆAe‚GhHf‚Lm}Jo}Hj~Ok‡To€Pu†`|c„‰lŒzd‚{n…|uyr†~†v{…€x‡~„~w|‰~ƒ‰‚v€…wŽ‚r‘Šk”Šk‡ŠdŒŠ^‘ˆ_‡‹n—m‡ŽpŒ”h‡Ž`˜f’™q“”o‹pžgž™l¦”j¨”W°“S±ŽO­P®Z´žSƙUșLÌ¡> AÇ¡GŨJƨIÅ©>Ì´<ʼGκE͹NÁµR¿·UŹOþIÊÁKƹM¼B¿³EÇ°Q¾¬Lº«Z¹°X¯µU«³`©¼a«¸U¨¹[¨­\£¶Z©´S¶¹R·±[¯¬Y¬¯d¦¯]¯¿b³Ã_´¹e´¹]©Á[¦²[›±Zš­R®R§´Z¥¨Yœ­_¤¯_¨°dž¥_›Q¡šS§›O¦RžžW›šK¤šK©T¨•R©’O®‘J¥žQ¦›DªžG±’L¦–O¯›K¨J£F¨P§„D®‹C«‹F¯ŒH®‡I­Ž>§…D™…:œŽA™=¡ D¡žD››FŸ>œ¢Eœ™J™‘K–“I•–H˜AŸŒ4 ‰3¬Ž.¬†7§}?¦6£…9§}A¢‡=«‡>Ÿ‹>¢‹:—…A™~AŽy@“z6Žs2…r;Œz;ˆpHwD€zMŠ|Q„oT}nTwrJ†sMˆwHŽy=†ƒB|JŠ…F•F~–=m“FjŸAeœEj£CiªJfŸDgš5c¥7d8_¦9m©4m¯9m´4y¬;v¥Gw©Q|¯R¨[‚´V”´Y—®Uš±[Ž²N¢Q¤]Ÿža§Ÿf¡¡b¥˜`ž™fžj«Œ]´‰\­k«—l©l§d´™h·•p«Žh¸‰e´€i°ˆu¬|µ~v¯…}°…‡ª|„¥~x¤y{¢v~¯l†±r‘¶o•ÃbÅf”Êi™Àq•Ât‘ÌtŽÏmˆÂtÊƒ†ÁŒÄ~ŽÀ†‰¾z‡ÍxŽÇÉzƒÌyŒ¿kˆÅp~Êg„Ïf‚Â_„¨’Fª‘9¬Ž?—H ˜=£›8¨Ÿ= Ÿ@§–H™˜8¥˜:•™BE›JA™‰<—Ž=›Œ=¥|0§ƒ4¦x-©u8§{1ž~6ŸC‡F”<¢‘>Ÿ†Fš}>’‚?œt=}0‰x7‹o>‘{A€rFsMvyL}nIt}J{|L‰tBy>Ž~?ˆŽFƒ@‡“F|’GŒ:s›A{¥8lŸBj¢Fg¥Lp§Pe£Af©s©Hk¬O|ªU‚³Z†´T¿J“¬S–¬]®PŽ¯T˜«_“«cœ`”¡gž£e›žc›aœ”]š`¡—f¥sŸ›d§t© r£Ž`¦’^ª’b³v¯€w¨t§~‚¬µ|~µ}‡³…‰¤|}¥z…¬r“©n–¯w’¼l—½s˜¾w·uˆ¼lŽÒoŒ¾j„Âxƒ¹r…¸~†»z‡Â‚…Ì~‰Ê€ŠÁwˆÁk‡Æh‡¶o¸b‹ÅiƒÇ[‚Ãe†>Y”@`;c‰Dd’>]“I`‡Lc…SozSa‚Mc}M]xKf{Pr†WŒe‚‘a“hˆ„cxvbsqf{f|‚kswo}xqx…u~zƒ}x‹n‚Šq‚|wx‰„nˆlˆ‚aŠ”e”™e‘˜bƒ›^…ŒW†‰^˜•e”i—ˆg „p—‡o¡…t¢ƒl›‰g™Žm›™h­”^«›`¦˜\´£Q²¡VºŸL·©F³¥O¸¦S»±GȪKÍ¥K¦NÀªOê>ʲF˹RƹK¾³SľR¹·FÁ¹L½¹N»»T½·YÅ©ZÁ¤WÄ¥\ºµY¼©b¯§_¨¢a­¦Z³©d­³c³°`§®T©¹J°´PµµR¨°`«À\´Àe­½V²·V©±O¤·W§¯H›°Jš«Tž·W¦·_ ­Zœ¨[šªU±^œ§W˜§K¥ EŸ¨P¢¥K™¡KžB˜>™™K—šN˜–J›šB›AªŽ5­›5¥¥2¥Ÿ;ŸœI¤¤J¦ŸN¤—P®‰F´ƒ=ª€:±ŒB´ŠB«A¡—D™I¨¡K©œD¨˜L™’Iž›@¤”@œ™E™˜@˜ Q—Vœ–NŽGŸƒ;–€6—‚0¡6£|:¦y/v1ž}6•~:€B:–…>˜„6‘…>’x:˜y<˜r3”|7GŠvJ}sAqyHnuMt|J|yE|„C€}:†;‘M’‰M•‡KŒ‘<„—8{‘?v7‚™<¨Hy©Jn¥Jh©Lf¤;]©:c¤E[­>_¸Gcµ>`ºFm·=h¯Mn³Q¿XºQƒ»H”¸I˜¯KŒ°T‰«VŽ¯Q‘¨Z–¬[“©bŸd“œ]¡^‘žP•‹R—Z›d“£j˜m•¡i£›m¬–n¬’`­—p¤Žw›v¢vv©‚~¬†y¨Š|°†‡¨†Ž­~‹Ÿv¢p‘©|·x–µ–»yŠµx‘µrŠ¹p†Ék‹Àn…¼p‚¼sˆ·~½s…Ät‹À€‹Å{¾y}·e€¸m·k²mŠ´j‰¸d~º_|Ha¡=o’Hl“QjKdŠOp„OoyWfxYjwT_vQl…SnˆMk}crb~“\ˆ‹_„‚fu}ns€es|d{t`sqpq€t{|u‚s|ˆp}ƒw~‹qŒ~oˆ†s„„o†ˆg“m˜f„•d——aŠš\•Y’bdš”kŒƒc—…k˜ŽkžŠržˆi“ŠeŽz¤ˆc¥›]§•g¨b¯œ\º¦Y¼©W¹§E¯«Mº¬OşVˤJÁ¨Q½žU̬LÁ§GéI˾Sº¯M¾¶UÇ´WÅ·IÆ´J¼¬KÇ®T»µZ½¦]¼¡[À©^³°S³¦S°ªX¯¡W·°a±¥f­³`§³YŸ¶^£­X¨±W®­Q²¦_±¶^¶Ád«¿W´®Wª³\§»N™¾PŸµH›³R¡µT—¼M ¶Pž­Y«Y¥§T¢¤W§¦Rª£>¨žF£H˜¢> GœŸM˜¡=–•A”=¡<œ“3›7ª 8¬•?Ÿ D –DšœK©—H¦Tª‘Qª~E³B²ŒJ¨I£‘K¥œ@š¡B¢™I©¡J£@”–Kš“F£Jœ•I“ŸB–”HšˆU–‡S™F—Š=—~C—Š8¤„:¥ƒ@ž~8•„,—†3–†1z=•€CŠ…:˜‡@‹A‡>ŠI™„C˜‹B’F‘vJ}vMw†@yyO†J€F†Š<†‹H‰‘F”‡I“”MšLŒLŠ—J„”E†•;¦I€¦?q£Os¢Ik ?c¨Df¢:f®7_¨C^¶BX«C^¾?b´>g¸Go·L}·Dƒ®R|¹M…±I’°U´SªNˆ·Y•«b“§\Š§V†ªc–gŽ£_˜£R–”U“Uš_˜¢h‘—d•™dššgœc¦”b§i¬’~«ˆmzmžm¡~¤‡¨…}®†¦†Ž±„‰¨y°…’¶„·ƒ–±z‰·{‹¿y–Æp“¼r‰´x‹¹rzµtˆ¹|}»yŠºq‚Àyµs‡Âu‹½hÁm‘¶b½^Œ¹e¾c„·_ƒ8l£BxžQ–Rx–TxŒYoˆYh‚Wl~crz]jy\hwTjƒSqŒ^r[r‹hƒ‰j…kt€n}ybxrhpwfomsny}zztƒz{‚mx‚bƒhŠ€qˆ|j‰|i†…h‚“^…“e‡–f‘”^ŒŠc‘dŠše‘—a—li‘’c”ˆn‹…rŠˆhƒo“…uŸŠn ‘f²“h´“e¹™^²¢S´­Y´¦U¹žX¸¢LÀ«J¿¢SÀ£TțQϟJÄ©B¸¶J¼³JÀ¶KÁ°OÁ¬QδXгQÈ°PÉ®VÄ®MÀªSº®W±¨X®®U­´\¢ª^¡¢T¯«Y¦¶b«²^«¶`¥´a©©U¥©P¨¦L¬¤T«­T¶±U¨®K¨¶M§¹K¬µT›³R™ÀOŸ½Lš¾O¥¾W¡¸O °S¥£[ŸYž§T¢£R ›D >ž§; ¬D G ¥:“Ÿ<Ÿ8–—>¤”;¦3¤˜2¢”8K L¨™T¡™L²˜V³ŠPµ‚S±…K¬„A´A·‚@ªŽG£™L£šJ«ž<­>¦”GšŽIŸ—E™’D™›@—˜F““D™ŠPœ…Aš‰>¡„Gš‡> Až…Dž|Dœ‚9‰~;†ˆ1ˆ=…€7‰|E‰„E‰Ž<”Ž?”ŒIŠ•LŠˆMŠFƒ|P‡~O{„AtƒDy‚>ƒ‹HˆŽ=“B‰˜?L‰‹D’–GŽJ•ŽQ‡—VŠ›K—Bx£E|£AuœNnšHn•>k—=j¡C[¤@Z²>^¸H]°Ba½=`º7m³5p½?l³Ey³AyµF†¸L²O‡²SŒ»[²_•³]Œ§]’®\‡¥^©`”£Y¤P‘›UŒ’]Ž”TŒ¢_–ž_˜l k™i£œj–k¥…v«„y¥p¡|}§x¤…±‚´­€Œ£‹‰ªˆµ‘¶ƒ”¯†‘·‰·†•¿‰š·•·v’±m‚µt‚Áo‡Àu†½~‚´z†®~°w„»o’»n‘´f”·\³^“´]†´Z€´d~Ih£JlŸOlœWo”\m“\i†ZfˆUmSo\j‚Tn†]kYp‚ao‰iy…c‡‚p{‹erzg€[ylhykozrwwv}psƒ{s}eˆ}oŠa€kne‹{bt[Œ}aŠ“a‡‹gˆ•b†c”˜d—^™™dŽ“r‰p…s‹Žzˆ‡sˆ‹f‚d’‡s”…oŸ‡s©˜sµd¶—X¶œYª¥N²žK²œF¶ŸI½¤E¹¥EÀ¦DÏ¡PÉ®AÊ«FÆ«CÊ©KħGÍ£SЮRÇ­MƨIÄ­RÌ­S©Q¢R¿¯Z¶®U´³T¥¯S—°V«­S³¯^¤µUª·X­«^¢²f¤¥[®¢P­­L³X®§Q­´P±°Y¥¹L«±XŸ­\¢¯S¡·G˜ÀL›µM¢·U­±F¢©V§£M¤¢O˜£Nž?§«E¡›E¤ª@™£J ¦C›ž?“£4—”C˜C¢“5˜6—›9—9¦•:°†K›’M œN¡ŽD¬‚K¯†G´ŠJ­Š<³„5¬‡7­;¦”E¨–J¦¦C¬›@¦•<¡I¡“Nš›Q–žI ”O™™A™‡KŸK ‘=‘„C‘…>‰E¤KŠ=Œv;†6“>Š‰AŒ„B„}D…J„…?ŒŽL‚‘H‹ˆA‡E‘‡KŠ>‚GwŠHv€Fy†LŒ‹IŠ’E˜H‡’B„@…“J‹’Lˆ”B‘S‹ŸK|¤Cw›H€A‚©@§Cs˜JkŸ;r¥Aj¨@`§FT 2X¦?g±:]­@nµ2h°;p¶8r¸:o°Eu½>ƒÂG~½F‰¶L}±S€¹_‡¯[ŸQªaŒ­_Œ£a„ªW„£V„™T—¢K¡P‹£_Ž–[”šj• gš¡k™¨l¦œjžo™Šs™†l‚nž†y£†¶Ž‰¥‡Š®Ž~¢„‰©–‘ª’«ŽµŠ¹†‘Á…š¾ƒÂz™Ár¹v‰µƒÆ|’Äp‚ÁŽ²zŠ²€‰¹y€¹l‡¶]†¬b‡³^‡¶`„¶\Œ¯V~£i‰¹’B® A® ;¥¡B©•G­–Hž’C˜O“Iœ•P¦–Mž•?“›?–‘C™’I“ŽB•L˜M‘~AŠ{8ŠˆB…F‡ŽMŠŒKŠ‡M‡†Bˆ•LŒ’I}”P~†Fƒ‡@‚‘F}‚=„„@{Bw„Bƒ†A‰ˆM†‹?Ž–@‡:…Ž@ŽŸEŠžE†šL‘™KN|¦IƒHx£G€©<‚¢>z¥=i¤A_Hd¤@^¥9^œ7]¨Da©Ca¥Ek¨5p«:u¹4m»Au®C}±NÁG‡»D…½Qw½Mz¹Pz²Wx¨Qz¨Q…«VŠ£Y…«Y Q…¡R”›L—¢Q— VŒ›d™–h›—Z a›¦\œœe ™c˜œkžu¥Œr †z©–z¯˜…°‹‡ŸŽ|¬Œ†¶”¯‘ªŒ„¸‘–À…˜¾z“¼|¾w†¿z‰¼ŽÂ‚”ǃšÂyŽ¸¯}~°‚†´}‹²eŽ°]Œ³`Ž«e‹´T«R‰žX‡¢bƒ?nŸKnTužV}žVuQy’Vp…Ln‡Qq~Qk~]k€Wqˆ`rŽWy_z‚]‚‚c€‚hv‹rzƒs~o|t{pyzylvvku}iqt{osutwxuqs‚qcƒn^{€\ˆ‡a…]‹b‰‹aŽ›c‘—m—˜hšv“†t‹“wŒ’s—‹q’{i„q•†n—ˆt••p£—p«–p²ž[­™]©¦Y¯§Cµ­B¿µK°§M©²F±³@Á´JÅ­L̪FǨAҞLЧR̜PÙ¨KÖ¤MÊ P̱OÇ¥YÀ©O¸¡P¼±Z°¶Y¯¯O¢¹O—´Q¤±Mœ³W—­V—ªNŸ£O—§S¢¨Z®®V¤¥W­¥J§­M¬°`³ºX§½M¤´R¬¿d§±`£·O¢«Mž§I˜¯M˜¢Sž°@£ IœªI¥§= ©9§©2§°8™¢;¨¤KœA¥›9Ÿ›5”’>Ÿ5¡¤@˜ 5œ›@›Œ7¥–:¨D­3£“<¨D¯…K·†L¼‡>´<½ŽA¶’Cº•?¹7©¥>« F§¢L­›Bª˜J§ŒPŸHŸ™S©’Mœ›L¡ˆBœ‹<”‘H’„?˜ˆAŠF–’MŠ€@ˆ}9ŒD‘„@ŽMƒ‰I‰‹IŠ‘K€˜BœHx•H}„C‹B€F{ŒB{‹?†;€€E|N††K‡‹<‡“:‡™:ˆš>‚™@„¦B‰§FŒ§E{©J°Dƒ›C¡Az¢?‰¤A}¦:f¦>l˜Hr¡:c 6]¡0e 6c¯EY¬:_£:k¬:hµ7jª=i§Iq¶?uÀNxÂFp½Do²Hp²En»Jl»Ft²L¯T‰±V²Q†¯M~ŸVŒ«L’¯L‹¬S£`š_˜™[ Vœ«b•™g¤Žh•‹qžŒs›ŽqŸ…}©ˆ…§”‡¨ž…¬š‚«œ…»•Ž°•Š«‹º†‘ºƒ¾€•¹Œ³~ŒÃ‰‘¸ˆ“¼†”º|‘¾{³‚Š±zx²‚­oŒ°eˆ­j…®[¨aŒ¢U„§Yˆ¨]ˆ¡d‹A|‘Eu”Jv—H˜T{Ts—Jr—Q{†X|“SsU|†^sˆUuX}Š^~gu€e‚}i~…ku}u{€n„{k€mlzlrunwfishjypjtmwug{xdrƒom}ph~uc~ye‰ƒl‚d•ˆk—‹fœŒqš”nœ‹m™ˆo™•pŠ‘nŽh’‚hŽ~b“ƒmk˜™c™™Z§bªœ\°¤\¸¡Y°©I¶ªN¹µB½°H±²D¨°;°­C¤JÃ¥FßFӞJџGќQ˝[Ó¤WÖ¬XÈ©N´QÆ­N¿¨D°¤J¤¥M ¶V¤¹P µV˜´N•¨Hž¤E˜¥O”°_˜«]š¢[§ªW±ªL¬±Q¤²X©¸X¡Ä\ ¿V¦º_¨Á[§²P–°V–±F—ªB‘Ÿ?—¢I¡£DŸ§A¤¢?ž¤8¤5¨¨8¬¥7¨©5§°?Ÿ¨GšŸCšž:–¥<—¤>¡¥<œŸ5ž–9¥A¦‘5¤ˆ5¨‰8¨Š5­–:¯“=®–DºŽ>†GĎHŘE¾™>¼›D´¦?¬­J°¢D¢“R¡‘O©—J¡ŽJ¢˜G©“P£E¥ŒB¨A ŠFC‡K•‰@ŒŽC“PŠKŒˆB…Dˆ–IP„˜Vƒ•N†šP|˜AxOs‰Kw†G}‰MuCyC€’P†KK…=~ˆ@„‰=Œ’?ˆ›:ž8Ÿ?¦>¨C~­I¨>ƒ™G‡šDš?~šAy–Dt?y•FržAs£:i®6c©.Zª6d¯8aª=jª5l°>c®Ab°E`±Gm¼Md¸Jj¹Hg¸Lq·Hj½Cn¼DyµA}­N}±N…©W±SˆªR—¯M”«W“¢^•¤_“£b›¦UšªR¥_•™i”h¢wŽtŸ~¦‚ž„•«ž~©ž|«’€°–ˆ³‹}ºˆµ‘„¸ˆ®…³‘®†Š·‹ŽÀ‡¾†…¾Œ‚¸ˆ„º|‰µ|ƒµ|§o¢l~®f†¬d‰©]„¡]‚™`›\‹T‹I}Mz–Ow‹Mx‰M”PtŽH{‘MqŒQ{ˆU~ŒTr‰Uw€cx^{~[~ƒfw†`}ˆi~„jx†mwyt{z}mmrmprdnqbybdmjuwlrnessnr„rk„yhyrf~{a}tc{{a‡€bv–‹m•tŽv–n‰†n…”t’Šn‹‰g”zm”~hžŠg—ˆb¨—b©œd­\§§Z©›E©©?®¡J·²B¾°O²§K¸¦H¸©G·±OÉ¥>ȦJ͝KҗOÑ¢HÉ£FϯNТMÇ°VÍ«KɬP¸¨L°­C­°N§¯]±Z£·S£¨Pž©Jš¡K ¢O¦[¡«V¢±_§®]©¨U§§Xª¶Z¬ÀRª½W¨µO¥¾V ¶T ¸Q£²Rž­O¥¯C¢¦A¢©H¨¤G£¢K£¢;šœ:©°D¤­D ®6§¤>¡;œ›J¢ D•C•£E¦«5ž›C™C›ŸD¬˜A¢B§0©„2«7¦Š=®š>»‹3ºš@¾CĉB¾˜:ÀŸ:¢A½›<ºªH¸ª9¥¢N©I›”D§I­C¤›M¢D£…8¡?˜‡D’ŒBš…C”’A>ˆP}O’ˆK‰‹E{•?w„>z=‡‘>„C‚–Ez’>~ŠKw’Sx„I|“Dv‹=“M}Š@ƒ…A=vƒ@{A„—BŒ‘?‡š7Œ©>«8~ª<„¯?€°4yœ=x“Eu›>r8w™2už5q 6n¡B^ª2d£8W§Agª:\²8`¶6]³Gd·Gf¶@m³Al¸@n³Ej¾@k¼Bo¯Jm·Mq¸Qt²EoªKt¯Bx¨J‹ªQ«W}§MŠ±Y™³R—­Yœ§W‘¤]¤X•©_‘ k•£g”o–wš”u¤}£…„š‰z¦“‚ •}©¢{£ž}µŸy¸±†x°……ºŽ’³‡„²Š~²“„²‰º†~¸‚ˆ«†‡³|¬‡…©xˆ¬s{¤q}¥f«r‚¨^‹¨\—V{™Xy¥^Š¢R‰Ly‹L{ŒT…M}}BpzDo„FkPx†Rq‹UwXqxRtoSxucw{atz_z}a…ˆe€„ay‚ewpykm{p{yrsppblvmnlkuvwstr{qq|ne}pj€th€ug‚xkˆscƒyl}sŽytŽxp›…n’„xˆƒpŒ‰ehƒe‚gŽx`—xj“€]•ˆ_¦›`¬ X¤£O¢¡I¯D«¡;±¦E¾§Jº®I³«O·±P¾®N¬FΩDÉ¢=¾ BʦDÓ DÏ¡M¬LɯSÊ°QƬXº³M´¥U²¤L¹±L°²R¤­WŸ°UŸªM ­Qž¬S¢žP£¥N¦³R¨¯W¸¸T·³`²®Z¯¼Zµ¾QµºV¬´X§½Q¨»N¤ÃM¦¿L«¾J¤·O¦´Qœ²MªŸP®G¢£>œ¡<ž£@¤±F¡±>š«;—¨@N•Oœ¡?¥­F©¨;œ–?Ÿ”A¦ŸI¥™N ˜=¢’8«Š;¢Œ7¨@³“7³š9»—0¾Ž0³•?º >ß?À™H´–C¬¡9®§<¤§@£ I¤¤D¨™F¡™C§šG•>š…7›‚A™…K™ŠO•G”†O™‰J˜QŠR…HŒ‰Jˆ‰:w‰;‚’?ƒ–<}“7v“Bt–D~ŽMq‰NmŒHm–Gr’F|•Hz‡Dw‰N|„L|Fu†H~†Eˆ”@ˆE‚­>†ª1‰ª0y£/z¨3£:w—:u’4u“2p™:v 4p£:\¢5WŸ6Xœ>eœCd¤9`ªB\±9f¶:d¯Fe´Ij³Ce»>j¸@m»Bf³Dd»El»Lw½Os­Jt®Bv±G{ºQ¶S~³Wƒ³V‚²PªY’´[˜¯[šªb•¡f¢iŒžg’’g˜”jœŽkœŽu›•o£‹t¢‘Ÿ—…›Ÿx¢¥w¬œ® x°¢wª“€­Œˆ¯”‰¦’…¬ˆ|²Žw®“x­…u©~ƒ«ƒ…°ªˆ|¡€€›€…£p}£n†Ÿm†žd†˜c‚—V~ V}™]€›Y|@x?‚ŠPtwFsrPi|@g~Dy}I|zEv|HiwWqjUtg\kq`pvTp{av|ay…bp~_€|bxkrousq}|iewd]uljpcvuqqt|ykm{qfwqk||g…|cŽzb…}p”|m–ql~i˜yn“…f™r‰„z„g‰‡j‹†k“‹oš‚f”qp™‚l•Œi¨’]´Z°šRžšR¦žN©§A±¢AÅ¢Q»¦QæXʲKǶEά@Ë©?é<Ç©>̛=əGÂ¥I¸±KÁºIÀ°UùXººU°¦N®±B°°S©¸W©«R¤®Y²U¯®V©®L®¦Q£ªS¤°Z±²RÀ´RÁ¹O¿°O¶¸W¸²J­ÀO¼¶\¥ÅO¥ÀO«¶N¢¹L¦´Rª´WªµU—¬R¦±H«¢N£¥Jœ¤A©ª<°²I¡±<£¦@¤<Ÿ¥Cš§L¤Ÿ?ª¡I§¥6¤¨8››K›œC¡•Q¤—E¡˜GžšA«?¢B´“=³¢=¹ 1±œ5³¦>¹”@½ =¼ ;¼™C°˜G´¥=©«A¡«K±šD¡§C¥’D¥–I¡‹A•‹2£G›R‘ŽJ••Nœ’O“‹P—ƒJ‰†I…BŽG{”A~“<‚‹CŠš5{‘9tœD{I}OwŠCoHp’LoAtB}…D„Kz‚Ry†E{ŒD…™D¦>€ <„¬2‰®<|¤.x¯.v¤;nŸ;r˜>fš:i™1f™.o¤0i¨2\ ;^¢>U™;\«7d¥3_°7b¦6e§9a²K[­@Y°>\¬Gj»?b¬>m½Io±Hu¹Nl¼Tk¹Gm´Bi¬C|µO¬FŠ­U†µTµRˆ¦W¶\š®Z‹±b”±e„¯a…Ÿa‹–f‘’kŽšm‘•s –i§’w¤“u”’ƒ©Ÿu¤§z¬ v«s¯˜y¯€°Ž|²—‡¨Žƒ·Žz®“ƒ¯–{¨s¨}†«w‚§… ~£ƒ¥p{«i€Ÿq€žwŽžg€”h„—X‹“R‹˜Sz–]v;†…>yE{€HpwDtuHi}Ivu=vsCmjKhhTfnPohRsrOhtTfv[t{ds„_m}Z{te{svwwvmowigyghxkouiozxprwqspfwtft{k}yk€a’wd“oc•si–~`‘~e›d“‰o˜qt‹Œn‹‡oŽˆc™ˆe‘„k™zi—‰j˜‰ež•Zª˜Z¡œW§£T°£P«œ=°£G¾«JȧOƯSͳFαJˤMÆ¥@Á 9˪9Ë©9Á¡GȱB¿µH¿MÀ·V°°K¬·O«¸B«­A¦¯H¡³M¤¼O«´T«®W®¦T´C´£@¹¯M¬¶V¹ºV¹µY¶µLîL¼¹G¼²R¼¹OºÂT¹ÅS¨ÂM±¹Y¬¶T°¹\©¸Z²N¢²G§§G«¡I©›D¦¥A­°Dª´C­­<©«@¤ @ œHœšO¥¨Mª«Hª­A¦©H¥«D–œH——K™S ’S¢ŒO¥”G­˜G®¢=±¢;»¥5¶ª5·¥2¼¤.´š2²¢<¾˜=ŗ9»Ÿ>²¥:°©B¥ŸEª£H¤”RœJ¦Š@ž9—–Iš’L–ŒN”‹K›‰O”’M•–FŒHŒ™E†œ@Š“<}˜;‰Ÿ5„—=†;w–@ŽKyEp™HržEu‘Ir‘F€ŠE€O‹R~‘V€•Vw–M|žAƒ¦6Š¥.Š­4ˆŸ:¢4p¬6m¨2nª7b›4h™7i˜5m—2_¡=Z¥4Z¤3Y­5b¥:g§,a©-d©6cŸ5a3]§BR¯BV³DZ¯Nd®Fe»Mg»If¶HvºKt¶Vo¹Qj¬Ij«Fx¦E§F‚¦M…°Z‚¨[…©c‹µ^·Yƒ¾[‚¶ZŒ¯\‡¨h…¢r‘¡p™žq“l–jœ m¡¤qš–z›Ÿy¥¤q¨¥wœ«u œw§•‚«›„¤”„¢–Š±‰‚·ƒ|­‰w¤ƒx¬ƒ} {{Ÿ~z£z¤v{¡w¬sv®wªs„¥f‹”bŽ–\‘ŒT–VŠŽU|C~{Fv†?y|Lyq¼µ>ÁªC¾«OÆ´CͪQɬK¿¯HÆ°>Ó°7Àœ=Ì£EɯJ¾½KÆ¿L»¶L°ºO®´N³®L´·F°²J®¦=¤³B¦¶U²¸V©¶G³®A¸­?¹²D±®O¼®XôböZ¸²V¼µ[¶´Zºº]ƾW±¸TµºZ¥ÄM¦¿H´¼U¯Á\­µT´¹E²´N®®E¯°Fª¤>¤®E¡¦> ®C¥œA¨¤;¡š?¥>¢£@§¨C«¦C®©E«§?¥œ?˜£E’¡O¦‘Cž‘F¤”F«”J®¤H¨ž>®¡'ª¢*¬¥+±£3¯›1ª—@³§>¼Ÿ<³©=¹¤>¬¬9¨«:¢¥@®¢@¬žA‘7ž™2 Š<˜š:›™EŸ< D˜™G”•H‰>†ŒF‘•>…B|›AŠ˜6•6yš;zžIxœ8—8s”Bm˜Fy“G„˜?œHˆžM{•D‡˜L{ŸB}”M€¨G‡¦7€¤2…ª>Š±:„¦)q¨/z«9h›2c˜8f£=nœq};ryF{mFziGwoOvnX|iO|ePrp\oif}d`~glvkqoe{vktyhmhjqeawaholouygizklzrsyj}tcpfˆm}h‹uaŠ}i•wd•{e›†l”‚tœ‰k“‹g†g™vŸ„l”…`™wb•tdŒ{a’ƒc”‘]¢P£M¡’D¯˜Gµ¢?³«;¿°AêF¿²L˹AÈ®FÇ´OèFЬMΧBĚLƛRÀ¦PÄ´R¶ÃN¹ÁP·¸G¶µE¶ÁH´»D±³;µ©<¬²A°°H©¯F²´H¾°C¿§<ȤMĪUÏ¥[Ȩ\¿¯S¸«P¾¨R¶°\įbÁ³Y·½`±¿\«½T©·M¯²F·¸M¹»Gµ¹JªºD¬«E±¯I§¬F¤¦J¨¨DšŸ>›žDš§G¥Ÿ<£«>¥®/«§2°°<³¯A¥¤; ¬H•¤Nœ›Bš™?š–@©>¯”C¨™D¬£=®­(±4¬/¦™7§ 7¢@®§@²žC®¡?®ŸFµ£=°œ:«Ÿ;²ª4¬£:°¡>®˜:ª”9¡“0ª4£•9ŽAœ”<™’H—EŠ˜@Œ˜I‚™N„D{•G8‡›G~˜G‚˜8‚¢7w¨Hs¡Hƒ•E‡—?~B£L€¨E‚ŸAv˜?z D{¢J§B}µ7ˆ¸=¸-€¨-{¥,u /h§=k¡9a¢3c¦9i°8cª)U¬.Xª;Y¥~–8w”`±1Y­4a¬8Y­-R¨/X¦6Y­9`¢8b¯7\±)c¯7Rª?_«7gª7d¬A_¬Fr§Gv­Kr¥Ju±LvªEo´Km»Ni´No¼Bv­‡–Cˆ–K™Q¢E‚ŸI}›=‡˜?…œB¡F‡¥;€³=~¯>{¬F‚§G‡²E†°@²C„¥9ƒ¥6s¤7z¯0t´5k¯4i·:g®2pª+l¶2m³5_³)[¨,[§9T¦=a ?\ªp¬Lm¨Lj¡>m¤@l²Dj³Gh¼Eq¸As¯Kp¶C|±By»F|¶It¯Hw±DrµB|µJ´P‡°Z€´a…¦Y“¡`‘¦f–›n¡q›¦k›°h—«j©k™uš¨n¡¡k¦ q ªn£©h¡±j¡²f£¥pž˜j¥–f Œg¢Žq§€n©wj¡utžusšxy”n‚žp~Ÿo}šky¢q†•f|˜h‚ZŽY‚Z„–W€/iw8eu8l8ts6l|?t|3muCgf9giAsa5qbDycE}gGƒeFnZJp^Vr^_pZeidqldkw_ynOitWjehom_usp|utuwk|l{}n}|t‡qxƒr‰ƒi‚‚nˆt|c‹ydŠyl—ol™wvˆ~p‘}f‰n€n‰}fƒ`Œ[ƒZ–ŽH‘‹Vœ—I§‹I†H©”>¨©Gªš>¸«KÁªLDz>ºAͳ4ŸEÊ®RͧDǟL¬BįKÀ²HÀ°AøL½¶I¸¬OÍ°KɪH´»6º¿C¿¼:ºµ>¯­:³¨B´«DÀŸIÁ¥MÁ >µ§=¼­@ªS½¼G»ÃB·ÃO¹ÄVĸZ¼·^¼QƶPIJVøIÁ¿J´ÀO­¾G¶µG§°K«°RŸ°H£¥:­£?´£;¡¨5Ÿ *¦ž.¥ 2™¥,›¥7Ÿª:³¡,®¡-¥¤:›ª9¡­: ™6¨Ÿ9¢›?¢ŸA¨£9£°<  <ª£1°©1°ª>Ÿ¤9¦§8¡ 7¨¨-¥©-¦¯4ž¯3ª´3§ª:ª¦C¶¬5¹¬>·ž<«˜;¶š5°ž9¦™4¥¡6©Ÿ5¤Ÿ>¢¨B£¤@“š?”˜C‡™K‹šG¦D…©H‡¦M~¦?Ž›?ž6‡ =Ž D}§>€ªC…®@‚¥Q{¨Bƒ²;Š¦<}©9x¯8«At¹@t¹Y±9c¶]¦:j¥9i°Lw¦Ph¤Jg­Dj§@cºId¸Ls¸?i²HlÀEsÄ;s½Fp´Jz¶Ex»Ow¨@w«J³P€®V…§RŽ±[‹°[¤Xœ¤\™®`£¤n“°_”«m­i•§}— n—ªjš§e•¥t¦k–ªkŸªl¢™l¨•e¥”m¦i£”uƒt™zi—‚h|r wz—}|’tpœrs¡prdpb{‘`tawŽ_„œ`|”S}1mt;ct4cs6bu:p~?rusfMz`KkQRfMPoIRtVanTeeVlo]ovUegchfbgsjmxm|xo€ur~‚m‡€n†€fˆ}n†„p~‚pxyo{od‰ybŽ{a‹xe”rkvj‹m‰xl“~k™ƒ]”…Zš‰e‹c“‹\š‘O‘Q˜U¢‡WŸŠG©šH¨¡9¡¦:«¦H©¦M´¥C¼³C¾´8¾©=»®IȬQŤHͤIìAÀ¨I»¢HÁ°O¹°H·¨?¿©D¾´@¸¶:º³>¶²>¾¹Dµ°E¬¶L´®G¼°;»¡<¿¡@¶¨>±±J¶ªLµºBµ½DÀÄSººY²³Nµ¶T¹´PõWľI¼·Jº¹M²ÁH´ÃKª¸C¢¯Q¥§Pª£A¤¡9­¬5¯¨B­š@¡›5¨ -¡§4¦¡0ª 2±š:¯¡2¤©A©¦B¢®:¢¥6¬¦?¯¡? ž=ž›4›ª(¥­,¬³4§«9«®8ª­6¦²>§¥5°¥5ª«9Ÿ®>¦:Ÿ§2£¦7§§6µ?¯œ7³§6´•-®’4«•;°§1«¨5®§=¥¬>œ¬@”§?«E–¢G™”GœE„ŸN‹¥L„¢FžNŠŸI“™5™2‰œ7„žB~ŸI}±?ƒ©N„O~°Eƒ±@}¯B€²D‡¶>~¸;ƒ»?~¶:v¬2n¬,f¯'f¯(k§(p®&k°)_ª(_®1[³7cµ4b°AY²2\³0f·;bº=[º0^·3T±6Z±v«Dv¤Kh¥Sc¬Fc¶Ir¯Ht­Et²ª¯9¨ª7Ÿª8ª®2¤°>¤¤C¨ž?¨«/©Ÿ-¥¡1­¡<±Ÿ7²¡5Â¥;°–?¯3¬—3´£6ª­8§¡=ž¯G¥²E ¨=œ©?Ÿ¢J‘’B•žL€œF‡–@{—B‰–;‚H›8€£2†¥>}¬B|¡8 9†¬<€¤Q‰£E}­J€­F{¸A|¼F~´Gx³G€²>s¿2u¶+p­,d¶8h¯4f¨/e¨5k«/Z«4gÂ=b¼2l²t²Ep¯Co¤Cg£Sb¤Jl¯Hb©Am¯Fh·>lÁDlÁBv»DmÄ>nÅ?r¿Hs²Ly¸I‚ªR€°R©Oˆ¦Sz³Q¨M¬Q’ª]–´Wž·c’¶c‰¯q•«i“ v”¡l‘¤l¬r”¦i–¡qŠ®cŒ£k›™e’g¥‘n¢œr‘“e˜oŒ’iŸ„j£t•yt˜zy–rl‘yq‘wimeut›kq•bw”e€•Yt“`|3ct7]n5Ys>`t?UhGYbCai?cb;gXGlS:s\µŽB°Ž:§š>©¡3ª¬:­¥8«ž1·¡6À«?¼¤GÄ©>À¬@êE¼§MŸW¼¢Pº©J´¦D¶¨E´¢;¯™6²¡8µ¡:ÀŸ9· ;¿¢B·¨>±«5¹µ>µ²:³¨A½¬?»§Bº±D´»Q¸·R¹¼L··Q¸«FÁ«K¾°F¾²Qº±S¿§R°¦R°®F£¦?£¨Iª¨Mª¥F©£H¨œC©¡F¤¨>¡£1˜©4‘­9™¡8•§0œ9ªŸ@§™B©ŸI¢K¡¨A±©A«¥8°¦1³¦1ª¨)ª¤ ¶¨$¼­3³°2±¨,¥«.ª¦>©¬<­¨7­¨@ª«3¡ 1¡•;©–3¹ 0¸›=¾žEÀ—>´ŸD¹–Cµ–?¬¢:«ž?®§8 ª9£§E¦£Fš©>’¡=ŒE…–@ˆœE‰›F‚™<‚’DŠ™A‰Ÿ:ƒ£=}¥?ƒ«8†¥A‡Ÿ=‘ªDŠ¨F„´L~±Ds±Cv²J{·Sv²L€¾L{½?pÆ@m¾5tÄ8k¾8k¶;f®8f·2n²3`¸/bÀ5b·:i»:^¼3VÁ5Xºr¶Ao¨JvªPe¯Ie¬Je¬OeªIm»Ii»Geº=rÁ7uÈEsÃGrÉKm½Em½M|¼P‰µT„«Hƒ¯GŠ¬W€¨N}­UŠ®S¸_Ž³Xµ^±Z‹¹f†´^‰ªg¡b¢n†§a‡ªbƒ¨fŽ­j‰¥h¥^Ž¢h˜˜i“b”Žl–„e†c‘ƒf›†k|q’yq‹tu•hœ~f•|hštq”in›]{”bv•g{†[z3jl+nc.bk3buAZh@T_B]V:Y\BfYGaTAe[@h[E[R?bJ:`SCVQN[^GcVM^\[VSecXriZajTal[eiejqajsmnthtvbn]~f†bzuY†y[|wY|te…jb‹bd‘wi†s\’t^€s[Œƒ_„€NŒxU€|V‡\…^„‘^Ž—P–T›šL¡R§”=©—;·›?´š<¨—9©©5²ª.¸¥,¼¦9±§:¯™N¹§9°¥?ÁŸ=´¨E¹œ@µœBµ£H·¨B®¨Kº¨D®›:­š3¼˜5¿¢7ÀžBà7Ã¥AÁ¡7¹±6³­3´¬7¹«?»¦<ȤK¼§N¶¯L·®N²µK¿¸V½ªG¾®DÁ±N»©Iµ¨X¶¯HºªC¸®D´«C¸§Aº£E« I¤›>¨­>¬­9£´9«³2™ž;¡¤5¥›B¨©;ž¡A£Ÿ4­¤>®¡J® 9µ¥4´ž:º©4­¥1£©3­©'´¡/¬².¶«<£¨6Ÿª5ž¦:¦­A¨¬?·©:­ž=¥ž8¬˜9±6ºš<µ–@·›A°•G°™@¼›<³™B§¢A¥¨6¯©;¤¦4¦¬7˜¬5¡¨8œ¨Gš˜I˜L¦@ŽšH‰?„£;’žBŠ—E¡;„®>Š­2§=}«@‰¤=~¯F€´P~³G…¹F}²LªP€µA„»=vµB{½An´8yÁ4pÂ8wº5n»o°=t´Gt¸Gw¦Pq¦Oo¬Nm¨Bn¬Dp¬Ij¶Bs³@o»;n·6t»MkºOi»Bu¼R|¿V‚¬O†´K°F{©\­Z„¬M‰µO‡»O‹¾R•«WŽ´Z’¼h‹»e”¸n‘©k‰¡e¤h‚©g‚­_€¬e£kŽž]”n–m˜Šq–“m‘†hŒd’|l‡a•€c‘|q’g–ym™ƒgpzkŠoqru‹`z‘a{†].td/md7mg.\n+\]2\X8RT[UAR[GTdEZ\LVRS]PdiLjfTrt^iq]ordijhkpakvapiapl`€{\€_‰re„nY†k_n\Œs`g`…p`‹ueuh‹s`Šu]~K‚ƒI~T‡…_‰ˆbˆc”‡\’M˜”L”‘IœŠIªˆ?­—E°›;§ž?¦Ÿ0­¡/´¡6¹œ5¯¥B²Cª˜B°›=° @· >»œI·¦Eª£;ª¦B®@½J¾”K¯–=²žG¶œE³š;»¥9¹¨3Ĥ<¿£8³¦8¶ž>â<ƬFÄ¥GÁ E½ªI·§M°ªV·ªJ¼´M¿¨Q¾¢J¶›Q¯¤L®°J²²;¶¬C¼¯DÀ¥B»ž:±ª<§¥?±©J³´C©³=¯¬AŸ¡;š8¬§>²¥=®0¦¤4¬–B­™B¤¢6§ž4­¥-»­*¹¹/¨µ.°¦-®§5¬­6®©7¨©9¥¡>¡¬<¨°E¨¨3°¦/§œ1¥™6°A°’Bµ˜:¶™B®œ<ª–D¼•<¿œ=¤9³Ÿ?µ°<ª´;¡ª8¦¥7¦¯3–´:£Eš¡G¡M†¢I‡¦D–ŸAŸ@Ž¢F„©8‰Ÿ5‹­8‚®3z§C°Bˆ«E}¯My´I†ªJw®Rv¶T…²J„¨=}©B|¶D|¿:v¸<„·?€Æ4„»-x½/p¿0q»Ä G´:Ę6Á¡@À™;ͬC¾¨G»©KÁ°W©ªMº®Mµ¯Mº¢I½žI¯ªNº§L­±F³§?¶«1·²8ºž3µ3·¡=¬Ÿ>®µ=¸«=¬«Eª­I¦¤FªG²˜>±Ÿ@±§4®™+¦›/ª•8§”:«£6¨¥-¯²2¯¨,¯®5²¨,²¯1´«0·µ9®®:¬¤4¬¤1©®G¥ 4°«<¨Ÿ8 £3ž˜<ªŸ=¨œ@ª›AªŒB­Š=ª›=¿™<²œ:¶¨B¦ªB¬¬7£¤?Ÿ£6˜¢6˜¨2œ¦B³P‰©Q¥P‰ªFž«E˜©I‡ EŠ¤G‰œ7¤7Š²:‹µE‚¼Oy®C…¬Gƒ²Ky´G€§F†·N†µQ‰°;‰·A‹¶>‡¼8|ºDv¸<†È7Å5}Ä9{½Ax¿>~ÊEjÉ6mÄ>kÕ)`Æ(\È7`Ó0XÐ4WÊ,YË.aÉ:b·;\»?jºKkºNqµUmºIk§Nt·Er±;n³Do©:j°6e¼?oÂ6oÀ=hºnc0pY.a^4\];VS@XP8\Q4USA^MJZWBSW@UX?YP;[ZFSXINSWZOXeSZ^Ud^c]]gh\_cifjeanmZmt[ktTluS{mSuW{qUul[zmWz]y_ƒz]ˆwg–yc’i`Šj\‘f_…jT…iTŠh^‚s_ŠsXƒwZ‚yO‰zP”G“ˆJŒŠJ–•?¥ŠG¤Bª˜H£—@£–=°”:³™F¬C°„I­‰?©‚=³‰4¬Œ2¥—:«žH ŸEŸ™E­œE±¦=¾¥Eµ¤H½F½9Ñ:ŝ7ÚA¿‘CȓK¿–B½šF¸žK¹—@¹ LĦMÀ²T¯U¿¯P±ªQ¬ L± I¬¡K±¦?¶¡7³¢@·¬6¶ª9º«4µ£,µ©+¼«4¾¡@³¨>»¦A¹¯G­¡N¨¢E® L¬œD¸›;¼žC·¥>¹œ2¶ +¯Ÿ5®¥;²5²¬0¬¯8«²,»¯1±¸4¸·)¸­2³°-²¶2±­*±¢6ª¡:®¬9­¦@¦¥?¦›6œ£>Ÿ9š™< “F¯‹E­@³˜K²ŸDªªG­°Cª´E¤­>§¯?œ¤5Ÿ¡1’¬;“¸=‹¶J‹·F­H®B”²D°BŽ¨?Ž©H¦C–§E¯;Š±<¶L‡­P…³KµG|·B‹¨Cˆ©K~­R~¯Gˆ·Bˆ³;ˆ¶5~¶=|¸2ƒÅ3‰Æ>ÆD|ÁLÌD€×I|ÖBxÔ3hÏ-f×5[Ñ/R×4WË/aÔ.aË+V¾4XÂ8XÄCV¹FW±Pi·Jv·=sº>h¼4j±;d¬¦5¡’CŸŽ9§…<£3©Š1­1¦“;¨‹=©‘=›—>žŸ8¯˜C´ŸA¸¢Eµœ@Ś@ÞB¹”:Õ7ŽBǘF¼’EșJÃ¥B¼˜KÀ L¶•;¹£I¼ C¸ŸI·›T¶¤J«™I±žM¸ŸM¸¢F³™C®¦D¶£7½ž:ºž6­¢2¿ª2´²9¸¨3¯¬>¹±B¼§Fº¯<®¬F³ H­¡B¹”D¯£F¸§@¿¡2°¡3§–(®‘/©¢3µ˜-¶¢9¹¤'Á­2ij2º±*¼«*¼°%º³)¸«:´­6©š6©›<¬ž:­•D¦?­ž: š?¡”@¥ˆH¦‘Fµ‘J©Ÿ?¨= §>ª®<£²D¥¦D¦¨? £4ž¤<˜·=˜¦=˜©K”¬F–¢L—±:›´C”©?† K‹¥=¨Dš¬BŠ­9ˆ¨K½BŒ²Lˆ¸D€µD|ºC‡¶KŒ¯F©B|©AŠ¬E~¸={·@{³1|¼?|Ê:zÉ@|Ò>ƒÆCsÉFrÅ>zÚ@pÚ9gÑ7^Î6dÖ.cË,SÌ5ZÌ3fÎ3^Â3ZÀ3a¿BUÃAj´Dl½KlµAhÀ>f´7[³=^»Bi¹5fÂ6iµ8lÁ7p¿;q¸Ek½Kk©N_¢Un¨Lu¡Vv§Gz¨R†«H„¦G‡®E‹»I…±Q‘µH‹¸W…ÃO€»Iƒ·UŽ³MŽ¤V†Ÿc~§Y¦^ƒ«R„™Vƒ£d}˜]†œf‘–h\„‰Y|“]ƒŽ`‘‹a…‡Uƒ†Yw‡Uz‰a€…V…eŽ†X”zj‹l]„f[‰cpŠmm;kZ0gW/f\3ad/bP+bK4bR.ZW3UM*[G+OS0TS@OR@ULGTWTJWXLUZSRZPb\Sd`O_]W^^g^Qj^]hYkf[npaqjdsqYphKobOxfP„fKuJ„nZ‹fYea•hc‹mb‹pa•mcŽpSˆoNƒzN|sH„lR~kS„sOŽoV‰{K“}@•}Ey?ŸBœ=¦”8£‘6£ˆ>¤ˆD¬”A¬—;œ53ž€7¡< Œ4¡‡4°Š0¯‘-¤‰8”D§œ?«ŸD®–:¡@ʜB½›@º•AÀ›A¼<¸ž7¿=Ê©FȧEÆ¥G¶ŸG»–;¹—:¼”:¹—@µžL·™T³œW±£IºœNº•B²›7®¢<®¢.²ž,¹)°©7²°4»±3¾¸1¶¯?°¨<²©6·±?²§:±¡>µ–@­•C¯š;¾™=À©1À¥%®”'µœ(¯—(¶—*Áž1Ȧ3È¥$Á¯ ·¶-¾©/­(¾©6´ª8¬¢=±:³¢A¯ 9©“E¤Ž@©–5±“;§‹G©ŽO­—N°¢L­›?¤’>©‘;¡¡Dœœ?¨¨A›±?–¬AŸªFœ±>œ²Jš©P—®L‹¥A™¬7—ª>‰ª;Œ›F•žH˜¨DŽªN•§G¬A¶?±D~¶;‹ºAˆ¹L²P†¸C¬<„±C~»E…µ<|¹A~µ4vÂA|Ë=„Í:zÌ6oÄFsÉJtÑo×6gÕ<\Ý2^Ö.UÎ:ZÅ?\Ë0ZÁ/]½.V¹;b¼>`Ã4pÅ8y¿Fn·Ci¾ÃžN½;²œ7´›=ºœ2¼@ÁIÀ™J¶¡MºŸQÀ¥N»•D¿šD¯‘1µ.±¢/­˜(´.²ª8µ©:¶³1·«>¾°9¯§0«©;§œ7«®;­¤=©—@±œC¯•:¾£5½¦/±£0¬ž/ª’!¨–.À’0Ĝ,½§#ñ,¾².ij/ì-Ä­"·²,¿«+©¨8¯¤3³¨3©©=¨•C¦“A¯šA³›6©šF«C°˜N³˜P¢“Nœ“Kš@¢¡9›¦HŸ°;™¯G›ªB—­E¡¶Iž­G¦Q“¨J£Hš¦FžªN‹¥J‹—>‰ J’ŸBš¯B—¬GŒ¶E”²:†¸>‚±8€¸>|·?€¾E‚¼F’¹J„¸BˆÁ?“°A„·:~¼7x¿9„Å>tÎD~ÉE{ÊDqÇFnÒ;xÍFtÉGsÜClÌAiÐ.^É?_Ë@\È1_Á/fÉ;[Ä<\Æ,h¾3o·5ƒÂ?w½Co·E`Å9VÃ<_Á0`¾=`·9e¹0k¼8h¿5c´Co°Jc°Oj¨Pi¨Lo¥IkŸL¢B~ª@„®E…®Q¸L¬N‹¿SŠ²V„µH·Gy±HuºT…«KwµNq©Yu§N|®J~°X‡¡M€¨Y„ PƒžR„—`ˆŽYš_‹ŠX‹Ž^‡Še{€ay‰hs„axŒhy†^Œ…gŽƒ[…vg|}e}}c€wd0T_,aU7YN7`V1Y_+TZ"XQ'\N$RX%OR%MX1CP??IDBQKQNRQU]XTYNSXP`WWeXSeQZZUSSRY]UPb^Wib`ckaav`[~aL}_MƒmLŠlQ‚^HŠaFˆaQ˜nW˜oT—qV”tauf›rbP–O–{P—WyN“pP•qU“{K˜};š‚<“€:—Aš4¡Š6™ŠCG B˜‡Eœ}Jš}DŸwG¤w9›†?¢=®‹=«;®Œ<¤‡4±‡2¬‹1®Ž*¿œ-¿›.ƛ9͑D͐BǗFÀ™E¶¡9º¡=»¡;ĦFº›D¼ž7µ˜9¸’9´›D¿EƕM½šG¾žL¾šC³”>³˜:¸–=º˜.´–)´ 3´œ/¯£5½ 8¼­<¼«0· 4³™8©Ÿ7©¥0³¤4ªœ.¬š6­—;¸ :¸¥7¾¨4µ¥2¶¦(µ+²”+»“ Ĝ$Ä£-ì,ȱ.É®.Á¬*²(µ#¸¦.¨©7¤ª<ª¦3ª¢;¯¢:®“<¨–:®—=±=¬˜H²“E®Q£–Rœ˜L—ªHœ¬?¢¯Fž°>§·Fž®H ¦K˜ªL˜±V”§R•©Q™žO›—O™šL••PŽŸCŽ¨E•¥9˜®<‘³B•¼9‡»9{»5~²:v­D|¹<‚Á6‹ÄA‹Ã?’ÅJ˜½H‘¶DˆÃ=„ÉE„Ë?{ÌwÔ@jÎ@mÒAsÓ=kÌ9gÈ7]ÈAcÆ@iÈ4lÉ0e¿5dÄ3hº0r·;{À8xº5i¸=]¸3_Á9WÂ5_Ç2k¾(h¼/k¼6]·=_²PJTLK[WIZWDTUFXTUi^Tp^[iTTdWNT]PUUSVd`an_coX_mbTsZQxaLylI€fK{hFˆ^OŒ^OŠbT”f]gV‘q]Œnb•o`—‚R–‡PšvSuN’wJqIšwH;˜>˜†?~D’Mœ8¥0¡ŠB™}A‰@šŽ@Ÿ‡<–sHœ‚F­}C z=œ‘Aª?¯C«Š<­1·,±ˆ0½Œ6•9’4¿š,ˊ<͐<ØH•F¾›<¸¡D¼£@¿¡;¶™CÀ˜5´–A¼—/¿’EÖ:¡;¿¢:ºœ?º˜C±ž1´0¼‘4¾–.²”/» ,ºž:¬«5¯¡?¸²?²¦Bºœ:·2¯¢;¤¤?ª¬5« <® 6¹¡9¼§=Ä¥/Å¢6´­4º¬.¯Ÿ)º‘*·›)Ä¢*Å©&Ī/Á¤/¿³6ǵ3õ(¾¯%Á©.¬3¬¦6«9·™=±—F ‹@¦›Kœ”Aœ›<«‘M©›B§RŸ˜Qš¨S’¡KŸ¦F°?›°I˜³Jœ®F›§Hœ±Ož°J˜²P“«N›¥Y¨J’¥HŠ¡R”Bˆ¬GŠ¨>“²A‘°A•µE‰¯I‚¹:¾>{¼B²;·D‚¿?’Ã@ƒÂ?…½M¶Nˆ¹D€ÇC‰Ç@€Ú=tÑ>nÉBoÌG€ÒJ{Æ<€Ò;uØCtÐGpÔHcÈB`Ò7]ÍG^À:aÈ3f¾7gÁ0bÇ9qÄ6hÁ=rÎ0xÃ6a·8b»;eÊ4i»5cÆ/e¸,r°1k¸9`´0g¶0]³9l¨Go£MhšNj™Mož?j§Ez®?i¤Ly¯Qs¬Dy­LŠ¸G‰²LƒÆL|¿Fl»Ix«Bz¶Sh°Fg·Rs±FqªG|±P¯Nz´I{²MŠ­I„ŸM‘š^†œR‘cŒ_€a_x…`{fŽb{‰c€†jm‹ˆlˆ_ƒwl{`.[_)JW4SP2[F9VH6QC-IN/JM+IM4IC-HA6JK7DM>O]RNWZI[`HZWHbYNoeKnaOhWO_VRW[WU\PXfYUcOdjVguZYw^X€`L~dMykK~nOŒpZˆjSŠjXfT‚kT‘sVmR“xWŽ{Q•V™xR•yM˜…L—B–„8˜…<–ƒB‡D‹Š@G™…Ažˆ8¦yDžx>Ÿ‡D …E–LwC£€?§y>£…3¤ˆ6£‘4¯‰>­ƒ?»„/À/¼ˆ2»‡5´ˆ4½“-Ō.ė9»’B¹ BÄ DʦDš9ĝ5º”6Ö?¼‘>¼76¼ž?Àœ>¹¨4¸¢;¹£>·ž8·›4¸‘2²“/´š;¼œ;¹›3«¡1®¬:»¬9¾§?æC»›6ºš2©¨6ŸªB¦¦<¡4¦š=«¨3¸©0¶¤-Á£8²ª.´¤(µŸ(³™,µ-³£+¼¥(ș$Ǥ)·©-²¬-¾·4½³,» -½¤/±=¹•=²E«ŸH¢”M¢œI›žJ š=Ÿ“@Ž?œ–N•ŸP—§N—¦F—©H›«O °J¥£F¢¢H®O˜²L”²B–®Hœ¤W–£Z¬W­J†§LŠ¨L‰­F†ªO†­P•¬?–§IŒ¬J±J{¿G…²H~¶?€¼E…Á?ŒÇDƒÉ;„Ç>ˆ¸MÀL€Æ<ŠÊ8„Ù=€ÛEuÕ?xÍ;wÌ<{Ï5€Ð;„×D{ÐIoÊKdÏFfÈ=kÃ=_Ã5\Ê=\Ì:aË:`ÆBkÇCfË9qÊ7sÆ5g¼-k½%hÈ.bÅ,^µ5dº/kµ/e¬3Z³3SÁ4]½0f®8j¬?p¨GpDm¡Bn«=g¡Jk¤Nv Pr¤C{´E„³M‚µIw½Jl¹Fn¯Av½KlºHi³Qm¸Jq¯Rn¯Pt²Q‰¥J†ªE~®K‰²Pƒ¨PŠ¢U‰•[Š’Z‘Xƒ•[‡‹b…”bs–mx•e„‚c„g|~q‰~m„€f‰†m~c&MJ%QW2VD4XC1PI.HD)MF+CK(GG/ED=HM1CV:CONMeUOZRCaXETP@ZYIedKlXT_ZQgRSY_[abK\VV^h_hh\mi]it[dphZ|fWyeSylWz`W~_]}k]vnTŒg^…{[vRqTqZšyI‘uF™p=y@ž~E”€GƒH™ŠMœJ•{EŒ…Kš|I“ŠBœ„9™u3ƒ:œ€B¡ƒB£z>¨|9¤}D±…0¨‰.§{+±‚1®‚4¹{0¿z)»~:¶ƒ/¸’4µŠ0ʑ/¼Ž0³—;ĖAÀ—Dē?‘>½•5²’.²•4°‘=µ3»‡;Á˜6º•;¯¥C³ 8¸ C¸œ:µ›=µ›(¹¢:¾ .®5´˜1³«8¸ªC» 6½¥6µšAº›G¨¥=§¨EªªF¦¥?¤§G±¢?«¨D¸¬4ºªBÀ9¼›1´,³™)½—3»Ÿ(³¤/´Ÿ'º‘)ƛ2ª3Á¡5¶µ8¸ >µ›3°–9³Ÿ9»ŸC¼¨E±£R«˜Sš‘J’P“¡@¦šD¡•E ˜HšžS žU ¦Q”¤Nœ£P¨F›ªU•¢RŸªJ˜²S’¬R±R®X“°R‹±W‰²[€°RŠ£Y‡§Z§W†¤L™±M•²C†®M­FÄ=Ž·?…¸A„¾9ÁCÍI‹ÇA…É?ˆÃPÌ>†Ï;ŽÌ9ÒG‚Ò?{Ì:{ÕDsÄ=Ì6„Ùs¡Caœ>a©ApŸJj¢Ns¥Ak¡=w´Ou«N~°Nn²Ep¶Js¸?m°Hj­KjºCuÁJq»O}®W…¨TŠ¥Ry°T{³T}¢S‰¤\Ž›[ŽZ‚”b€›^‰TŽZz“iŸkx˜]…‘ha~}izjw^…wd„ƒ`.OF*NN&FK-GF7JK5HE-LA+EI4MN0EI2@T:GQ=MYMH^KGWNDZECdL>\V=f_KeXSj`JeYHZXQ^YPkPMf_S]]^cn_^qfbs^R{]RueUze_}mbte]|iZ}tU…rW†sX„lQvZ™wZ”oJ•fEn=“xF“€?—‡?‘…G’K–KyS‹yIŒL•|?•‚0•€2¢z1 }5®ƒ;¬†<£„B©~:ª-®}+µy.³|.´w)³y*µ&Á€2º‰*¸Œ*¾4¾’.ž/¸™9À—57×;¶•4°Š8·‹+µ’-µ‡4À„9¹Ž7±Aª™?´—?® :ºšD·¡<À¥;»ž.µŸ2¼«0¿«*±¦/¶§1²§=±¤>¯œ;¯¦:¯¤G­š?°¡E¤¥K¨›F£¢E¬Ÿ;²ªBµ¬F¼©E·¦>ºš9Ý)ɧ+¿ )¶™*º›.¹Ÿ+½™0Ɲ*ƚ(Á¨/»ª5´›@·™?°š>¸@³šF´£G«—G¢™M¦—L™—M’“O››C¥MH›§Rœ¥K¡¨R—XŒ©N¤R™«K”±R“µKš±N›°RšºJ“¶PŠ´R†©Pƒ¦^¤bƒ§Zƒ«Y€ XŒ¨U’«K‘¯DŒ¯B®DŒºB”¶F•¼:·CŒÀ?¾JËG‰ÃI‡ËD‚ÕKˆÐA‚ÕAŠÒF„ÎE}ÉDÆ<}Ë:×A€Ñ8ÙE{×FqÚ=lÛCqÛEkÌ?pÍCpÖIqËAgÐGsÐFmÈCkÊBxÒ=sÇ:f¾5c»3i¿/k»0k»3q¸,g¹3iºAiµ?e¾?Z¶9b¼>Y·4\ª?e¨@l¡K3LG7RNADV@?PT9RL>HS:WR>OVNd[H`VLYWV[TOcWP]PRdTO\OYec\encefa]sVQo]TnXW{^]nadpeayq_„hQ€jP…x\Œv\u^™oS™yI‹qNŠnB~=›„EŽ†@‘~NšŠI¤‡Q”O|9”u@–s;w1.§x7¨Š5¬}8«ƒ;«2¢‚7­ƒ/§Š9¶}.¬v&¸z-¶0º~'Ç~0¿)Œ)·‡*¿“(º0½¡:¸™9Ä¡=º—+ºŒ5¯/¯’'µ4·Ž0²•3¬‰@°‘9¬”C´œB§¡?ª Aº—AÁš6¾¤4»œ1­7¶¤4°®.¬¯1±­9³š>ª›Fº¢Fµ¯N°E¶©E´–G¤—I¤¤GºŸ8¸ŸH²´Q·ªHÀ°9¸«;¿›3—0Á¡)¼6¶˜2Ę5Ÿ4ɚ+¾4¼­6ǬB·©7±¦GÀ¦J¿¨=º§Gº¢A¤£EžœU™‘M—šRššD™—D££J¢—L›¨Q•£C˜¤Q¡ªVš£Nš²S•©R›²K˜­Q¡´I–¶Y‘ªP‹µL‰±MŠ©Y‘­^‡¥V†¥YŽ¦]†¬W‡¯\ŒµOŽ°Pˆ²JƒµD“±F†¸I’Ç@Žº=É5ˆÈBŠÃH‡ÇD‰Æ@’ÊA‰Ñ?€ÏK‚ÑT|ËBÄK|ÊK‰ØGƒÒ;vÕ@}Ú@€ÏLyÝGjØGsÒFpÅ>jÍGrÒFdÒHgËHnÆNdÂEqÆEzÓ:uÎ>fÃ>lÁ6`Á0j´-j±+e³/_µ9g³4`±7b¶D`¼8[°8\´>AA@G$>L&JM1MK&HI*SD8JH5BUCDSBOJ8?A?@GG=BU;GWJPMGOVFPWE^XI`MRVQIPbH[\NUT[YP`d[Z]d[`lTZfR`hUYvfTrf_sdglm]no]~iPŒdS‰oN•uM—xP˜yOyR–}EŒr=y;›|DžˆM„G¡ŽJ¡M¤‰=ž‚:£„7žxA›€:|,¬ˆ6©†;«‚8›|1š9¡u=ªy:¢‡;±‚2µ.­y"¯~%±}0¿s+¿„/Ž9̆3ƍ3ǖ-¿š5Ȝ<ʖ5ʙ:ő/À‡4ª‹.­Œ&®Š,¯3°•A¾”?»œ@µ›3¥˜5¨›;µž<¹¡1¼¤1¼£;¬œ3²§0¬¥>´®?¬ª6¸ªD³›Aº¤E·«E·°:®£7¤¥C§šFµ¤A·§=¼«L³­K¼«D½°:·¢0¾–2¾Ÿ/º—8/½—*¿¦*Æ¥/¿¢6Æ©1Á³5˵=¼·?¶¬@²ŸE¾£I¹£Q³§Kª˜S¢˜PŸ—P™›P“”M›šQ¥¡OžžG–¦Q•«I“®K¡­G£§M˜®K˜©K›±Mž¯L¡¯U‘´QŽ¨V€ªW€¦H…§O­O‡²R‰²_”·Y‘±]Š¼Z¸L‚°M‡®VƒµMŠ¯L¯LŽÀE†Ç;ŽÄ<½I‚ÄGˆÈAŽÌ=„ÆI‰ÊG‡ÏI}ÅR†ÉMÇB|ÌQ„ÔO€ßNxßFÔ>{ÕEvÍEnÌFuÉ>kÄ?lÁ;eÆ;]ÎDeÑFiËKgÈFhÔCjÏ=tÉ=nÎBmÑBbÄ?Zº?`¶3_À8g¼5^´¤~CŸƒ?¥Š+©-³„1¨„.¬|+°r*µ€(´‰/¹;¾“Aə<è/˞1ř/ʚ6·•=½‡4·<´Š7³—2¶‹<µ˜@»A±“;®”6¬‘=ª›Eº¢D±§;»®0´¤-³«5»œ<·ª;µ›=²ª?²«;¨¢K¯ªE±£Bµ£8¹­8²¢@´¦G³ K®¤G­®J±«D¸¬C®¶B¹¥4·˜<¼›C¶—B˜?À™7Æ£*»š5é/Æ®9Ò§0Ê©6Ì´=¼ :À­F¹£B¯¡Eµ˜Q¨—N£˜S¦”J¨¥O£¡R›žIž¢K™©R•­Qž¥Mž§Oœ£O´G °V™´J¼Lª°Z£ªMŸ¤S¢W‡©J‡¦H¶H‡·Z“¶W•¯b‰¯Z•¹^µRÅN—³R–¯IŒ¹Q‡±J‰ÁFÀO”¸>‰ÈI‹ÆEˆÆJ†Ä@ƒÅ@‰ÅJ‰ÐKƒÈNvÌL…ÌE†ÐLŠÍNÚOwØK}â@yØF|ÓKyØGmÎAlÉChÍ>uÒ>gÓAiÑDeÐFlÍ=mÊ>fÐ=pÆJrÈHkÃ?_ÎGaÇChÄ:a¼8`¾5fÂ6nµ>sº>a®Aa´?c½8t­Au¯Is¶Lz¬Co¤@n¨Gy­Ns²M}µN~¦M{¨RƒªQs¨Q|¦G£Hw=o­>}¨@u²3w®@~²S}­R}™Q‰©R‚¢S‚¥\”š`Ž›[Š¡bxœV{¨[{©T‡™]}š`†¡k‡žhz h}Žfx•Z}‰azƒ`‚ƒ`‹‚OU?"I@%=?$BO*RI#PI+RC.VM3YK@RNJXHCNMFDIRHP]KOYPJSYMZaIRcNXfW\m\OgTSj]Xb\Rj_UnbYmaTsjZudR|ga…q^‡iXŒpYˆsO‰sU…wTŽoR›vP™rHœzG“Š?˜ˆ7•>¢…EŸ‹C¡=§‡?¤~>„4–ˆ7”.ž†8 ~3¤w/­r/³o6¨x@©†A­ƒ:¢~.¨‚+¨ƒ+¥{'¢v(°z&ª…*¬Š'±”0»™=Ä¢8Ȥ6Áª.È¡0·œ:·‘9¹Œ6²Ž;¾ŒG¿•B¸˜9º™=¯¡<³™;ºœ;±ŽB«Ž7°ž=°›7º©-¸¤+À©:¶ AµžG¯œK§šC³¤F®ªJ²£Eµ¨I¿£K»­=°­:³®>°©?®¥MºžMµ¢Cº¢M¯«G«¡@¨šA¶;µ“C½=º“>´œ1¿Ÿ5¦5ʨ4Õ©5Ñ­6É£8Ë¡D¿›A»¦I¯¡S«—Tª‘^©šZª™S§ŸN¦’K©–R¤¦UŸ§Q›¡Lž¦Už«J™¤MŸ®R¡±Uª¯\ª¶U¢²K£ªM˜žT¡J„«GŠ«N…¸Nƒ·[ˆ¼f‘¯bŠ·eŒ¿a‰»f‘ÄYŒÅQ”µK™¶NŒ´O·G•ÁI‘¹M’»EˆÃOÄK{Ð@„ÎE‰Æ?‚ÇB~ÈLwÉT‚ÆN…ÎJÜJˆÙQ‚åFxáJrâBtÙ@wÔAhËMiÌOqÌKoÈArÓCh×FoÏ;mÈ7kÌ;tÔ@nÊHsÍ?hÉ<_Ò8_Ë@^¼9b¹6f¶6o¹:z¿>t¹1lº3l²;u´Jt¼Kw¼Ey´Gs³R|­Kz­S~´Q´Zv³Xº[ƒ¯O|¨K{¦OwH„£M„¢Gy›<ƒ¨<}¨=¡E{¥Gy©U…žX†¥U‡¦_Œ£S“SœQŸX€§Vuª\¬\~Ÿ\w \¢gˆ›bžj†“d}atŽisŠb‰`~€\$L>!IC.PG"ATEE+QF$NG:TL1GEAUO>FDAOPJLOUPKPNPHN]QSbJ[]ITePOcMMd\RhYFi^IicYikKriSo_ZrdQƒgRƒhbaRƒdXlM€jQ…fG‹kF™gM”wK”tNž|:‘†E‹’=Œ:—8—†>¥ƒA¤‹1“8ž‹<˜…1š„=£{.žt-¯{7§w@¥wIµ…6¥z@¯{2¡}2­-´{8³x#²%ª‡1´3ª”.¸;ŜCț5ř/ɦ6Ǥ.¶Ÿ1¸”/«œ7µ–E–D·JÀœCº 9³•C±›;ª–J«’9º•0´™8¸£6¿«4¾£9»¨<µ¤<® J®¨D¹­O¿°E»¬J¿¤I³®M»§DÀ¦B¶°D´ªQª²Pµ­E¿©G¼±N½¤OªL«I°–E•M·IďB½£9Á8½¦7À¬:̪4È©8ϧGÌ¥LĪD¾žD´¦J§¥V¦£Z®œW§¤]¨žSª˜H¥šV¥œO¨¯X—¬Qš§T¥¡NžžG¥©J§V °O¨ªUŸ¯U˜®K¤¥Q“£E‹¯Tˆ²Hˆ´N‹¼OŽ´V™µa›ÀWŽ¾U›¿_ÃUš¸N“¼J‹¸T½NŠÁM·I–¾LÃJ…»FÉEÃCŒÊEÉ>†ÂH…ËC~ÐYwËVÉD†ÎY„Û_‚ÞWÜUr×ShÚ?pÓAfÑTqÊFxÏJsÈNvÃ@mÅ=qÎ?g¿>tÇFlÂChÆGjÊEh¿3bÇA`Í?aÃ;d¶2k±3tµ;p¸;k·1j·?oº9o¾Bn³A{¶@€¹A†¸Qy»M~®Q€°Z®[ƒ®P…²O‡«F~®K† Q€¡U‹§L|¨K§E‚«?~©LuFt¥J„—J|–X‡žU’ŸS‘˜^• P—\wžMt­S|­dx©X€¨X€ªX~«d…¡_‰›h}Ž[‚˜gƒ—]“cvˆY„PHN'DE,F>0OG%QL)KJ2LN4KM>LA=IFDME9NAAP=8M<>I:?Q@DJK?BG=AHKPDON>QNFISJQQVRUV`IMZQVcNNjHPdQBc^DkaSfeYklTz[Vz[S{ZP{[[x\Y~bM}gG~dH~fKfKpNoOŽzJ˜}A–CŒ‘@‡”B‡<ˆŒ:‘ŽA>š0žŒ3”z?Ÿz9œz4£o<¡u8±r9³|A³‚<¨{6­}9¤}8¨„<³„8ª„-±‰*²‚5ª1°‡A®Ž?´—<¿“<½ 9­8Ş7¹œ/¸;°™8¹‹:·A³™A¶ L­’Mµ’@¬J®œD·š<º˜4¼™0Á¡5ě+Àœ2¹¦1¾§Aµ­Iº¯C¼¨AÀ§O½«G·«P¸¬PÀSµ¤M°£S©©Yª°U¶®V¹¯I¸§O»¤V®¤N°›E¼›EßSÀ™YÁ–NŸAÇ£=Å HÅ CΤBÊ®?É«EÅ­C½¯?¾¡<­¨?¬¢M®›S¬¥\«™V ”Ož’G£’HžšV£ªT¡£KœF¡œF¦¥Ož V¥¢V£®U­¬N£¨F™¢I¢«J¡¦Q“¬Q‘±O˜´R½M™ÁW™·T”ÇO“ÅUœÎ\žÆWšÈZÀMŠ¼Z€½W¶R–¹EšÀL“ÀLËB‰ÄG„Ñ@ŽÑIˆÑOˆÃIwÆSsÈLyÇQ‡ÐMŠÝX‹à]~Üa{ÛWrØKiÏJnØKqÔNtÔIsËFlÊIu¾Gn¿Mk¾Bu¾XÈ;Z¼0NG7LB6IA;V?8L@9EDJE@>E=C@JUHFRJOHOQLGVYGOUCUZ?RkAHeMKlQO`SIaaLfeKh_StfR}_[{[KvZL\Q|_Iw^KƒTF€YH€aH‡hMŽkN’wL•{N€?‰8—?Ž‡<”3ˆ‰>‹‰B‘Ž8—„>š:™„8™{;£„F r<¥nG¯{A¯vC¨u>£‚<ª‚?¤ƒ7¥y8¦‚0³ˆ0­*¥‹0¦Š-°Ž:®‡5±–B½›6Á¦0À±<¿œ;½•-³˜4·‘F®•C´Š=¼M»’E²•A¼”@¬’@³”I» :º @¶š1¼¡:È 3Ì«>¾¨:æF¶©F®;¼§HÀ²QƦM¾¬Y¼­XşYº R¦¥I­¨K®¨Y®¤O¼©T²ªT¾¬O´§N¬H·¤R»§MɖW˒HśJ͘?Ο?΢CϤIÏ°7Â¥EɯBÌ¡CɦB¢G¶©NµW®¬^¤–R®•J¯šL«šMžW¦«J «Q™«Nš«K žN¦¤W©¦R¤¨O§ TœªH›J¢¢H§ªY™­W”¹J´R–³S”µPÀ]“ÀS’ÂW¡¼V”·Zž¾[–ÄZ‹¾Q‡º\Ž·T†¾BÂS”¹[‘ÁO„ÆQÉV“ÄKÊK…ÎH‹ÇNuËV|ËH„ÑJ€Ò\ŒÚV}ÒVrÒYrÉRlÊUsÑXpØSdÐCiËLr¿Dh¿;eºBuÀNnÁw´5q¸BhÂBkµ=r³Ku¸M€»E‡´O~½L‚¸Wˆ«XˆºU‹½Y‹¶O~ºF†°I¬;‹­J}±Iˆ°B…¡D~ŸH‚ŸKƒŸL|šNw’F€’Tƒ–UˆžW’—T«YŠ¥Ux£L«[~«^s¢X} dw™a¦Xw¥a¥Xš_„˜_ŒcŽ”S€ˆS}W[?RI PA+IF5LF>T<>XE?ODDOC:VCAVG9K@7MCACI]FBlKDkUIcbJl^GihGy`G|^S{`R~fSveXyVKu^N€XJ„VJxUCz^C…gA‡o@ƒxEŒxE’B†:‚Ž5Œ?†‡7‡Š6ˆ~5’5“‰@—†;Ÿ@¬…J©ƒF°}K©vM«yG¯}@®€?«€@¤B®|:«…>¦Š8 €:©…3£„*®‘1¨/§‰<·Ž5¸š0º£-º¥0¾œ6´ž9¹=­•F®P·”J´ŽR¸•H·œH¿”D³—:²š=³¤Aºœ=º™CŦ;Ì¢>È«:É£:¾¬> ?À£=È£BîMÀµS°[½¦W¸¡V¸ S«¦J±£T­­Pª¯W®ŸQ¸¦R¸¢UµªY·©LºªK¾P»šUǙLƒFƛNÍ¡GÉ¡HğIϪ9βBůFÄ¥FÈ¥AÁ®E²¬M·¦G­¢R¯¡V²P®˜X¬ŸS¬¨P¢©K¢¯Eœ¨Kš¯M¥¨Y¯œU¨›W¨¡W¢™O£•S¢¢T¦²Pœ²O’»J’³R’µY”µ\ŽÄS“ÂVœÉQœÀS·T—·Y•·O–ÄVŠÉJ…¿O{¿RÇPŒÊ[ŽÃX€¸`€»`‰Å\‡Ã[‰ÅSŽËL‹ÉG‚ÖQxßZÙS|âLÙVwØXuÍ[{ÐVrÐUtÏ^eÒUdÇGcÅGeºIc¸@a¿Jo¸Ip³Jj»Fh·9OEFDU>DNJGTAL[:OW;IWGA\FCiMi_Jc`=d`OghFijLufIaEu\FnQ9rW9‚SD€aI~SB†WF†^I~b<€u7wFˆˆHƒŒ8ƒ‚:…‰3x;‚};…{/‹;Ž~9 F–HŸ€D¦‹L§‡J´vJ©ƒ?­„Cª|=±6¯„8²‡E°†<ªŒ3²Š8«‡>¦0±’@¨’CªŒB«–8«›.¼™)¹¦-­¡7© B± I¨—F²‘Q±šI¯œE±JÀ”KÀ¡D½—=ºA»7½“9´©C¿®8¢>È©@«@´¤I¾¨?Ĥ=Ä©L¼¤Ié]ɪ^­N·§P¶¦G®¥H°«P¶¢O¯ M±•I¸œZ¸ U¹ Nµ¢Nº›T²—ZÎNȜRşHÇ¢VÇ¡VÄ¢NʤCУ@Ï¢:Å«DÁ®D̨7µ­J°¬M³¦Sµ¤Sµ©Q¬¬B¦«N«¥C¦©IŸŸAœ¤Fš¦Mœ¢K©¢TŸ¥Z°ŸU¤¤_¨]¢¢RŸ¨[¨ª\¥¹[œ»W›´P—·N—½S›ÀY˜´`“½[–ËQŸÀ[˜´\ÀN‹¸XŠ¹]Š´YÁ\‚ÒTÍS’º_‚ÀVŠ¹_»U}ÄR‹ÓXŒÑOÜW†ÛI‚ÜR~ÎW{Û^wß[tÔ[ÔZwØ\lÕOkÜU]ÌUeÒRa¿@]ÄKj·Gr²Ck»Jg¼;iÄ9e»HcÈ>^ÅKd´;e²@^¸9eÀ3k¹=o¼6d³Cr³1q°2uÂ5bÅEvÂGpÁC€¾Oy±O…´Iƒ¸F‚³Lˆ·S†ªP‹ºVŒ­J~µH‡¶KŒµC±G‰¯7§?„žH™GŠ¢=…‘H•E~žK‡—Bƒ¨?Ž¥O“ªQ³P†§Hz¢W€ªRŠU~¨\€«a{žet [€£b‚™c…š]y“Y‡Œ^Ž•^†–R”TG>&L>2M?0?I/KM3JN3KJ>H9DL4BE5NIXKN\CLaFP]:H`jdI^[IZgAgdAf_>tfBug=l\8~X8\3v^>wZDy\J^F_8Še:wJ…€HŽ}FŽ~A‡n<ˆo;…:Œ‚.œ€/šq5–s>›uI¯zJ²‰G°ƒ8´7¸@±†>¹}A±x4ª‡C®ŠGµ…>³ˆ?¥D£?°;¬‰?£A¡‡>©•@¥“6±˜0¹™$»—9®¡=¯£B±˜K±žH¬¡F¨¢G®•R°™DÀ£<¼—3²’4ºC³™F¿¢CÁ­>ɯ;ĬB¸¤;»¨CŪFͬBÉ¡DÁ¡MƧYÁœ[½¦Lµ§F»©B²K¸šL¸¤N·¨I´œR¹¡W²¡Y²§OÁ›K´’Nµ’U´—FĒG̖IÈ£S̪U˟LÏ¥GÒ¡9Ø­4Ò©6È¢CÅ >¾®>¹¬E´£Q»¡M½«H­­B£®<¡ Dž¡J¬¡F¤ŸL™©U›¥]ž¥U¬¬Y¨§_¨¨X¢¦`¡§^­¡T¨¤Zž³]˜²T˜·O–½QŒ¿TœÁR›µXžÀ[ÅV–¶R˜µT‘ÀU¹V¼Z‹º_Œ½^”Í[‰ÍbŽÀZÂbƒ½`É]xÌZ‡Ö[„×P…ÛSyÜNrÕ[{ÐY‚Í]{ÕWwÓ]ÖQ|ÒQuÞLtÜNcÕL`ÉEbÉBkÃBnÁHf½Bm¸?r·Fl»ˆ™7~˜.„š6ƒ¡9šI¥N‚£D£Q¦NŠªG„®F| MzT†£[‰›b…¥e…¥bšb˜aw¡\|œ_Ž]~d…˜^‹—U…¡V‹Ÿ\*N=&U>(L91?J1II2BP:AD4CF@CQAAQ€hA„zJ‹~?‰t;w2l>l.ƒ{0–u9™h>™o3£oB¥„I¯?¯y6¾z?­†1±‡A«€;¨z=¥~6³ƒ<¤“:©9¤‰?£†D¨Ž5¯†7«‡;¦†?¥–6£3¬‘/ªŸ­”7´©?¶™>·™Jºž=®ž@³¤K´ T²˜H»—>±Ÿ?¾œ@½Ž9µ™E»™J¸®FµžL»¬H¿ž@¼¬CƛAÒ¦RÄ£OàSÄ NÈ¢Z¼¦U·­HºœNºšN½¦S¢U¼›V°šM¿›Xµ«J·¢FÇ¡O»—H¼˜K»™IǞ@ȧ?Á¨MÛTMƞM˘;ɨ>Ë¡CÍ©BÒ©7ǧHÀªKÁ®H¹§L¸ H®£F´¡C«ªJ§Ÿ=¯›?¢©P˜±N¢­[œ°R©R±«_¬£^¢®[¥«c§ªS§±_¥¯T¨¼Q¢¯K•¾X“¾W™³M’±UŠºO—Ê[’¸Y“´W’»P–ºMŒÆa‰ÈcÁW‘ÄNÀP…ÌT}ÂV†¾V{ÏUËUƒÉPŠÝS„ÖX‚ÑVuË\ÒSÑbtÏa{Ô`|ÐW}ÞOuãIcáM_ÒXXÇLcÅAjÉKqÇTnÀBmÃ?nÀBeÀA]´C_ºNlÂ=jºDa³Aj±De¶AbÉ7nÃ7d¾@tºDp°PsÂBq¹KrÃD}º;€±Nv­Iz­M…¶N‡ºU…·R…©C‚œ>y¡Ly¢M~£G‡žJ‹­E‰±<—«6Ž >›@™6ƒŸ:“”B‚žH{©E³I’³Iˆ®C†­C„¨N¢\œUšdŠ¨[“¥X€©\ƒ£]~˜Z€¨_u–X{Z{—P‘”U’¦M•žX%I3-M4,O6'IH$GS-DL+HL5?H5CE8MI@KGDJQLBNBJNLSRMLJRA?T?9W43Z:oY=oV=rZ3m`8dW;l\7gS>`Q8c`=nk9sf¾”C»£Hµ U°žR¼›OǙJÆ¡DÁ“NǒTϜUʗZ¼§P½©KƲNÁ®J¸§X¶¢X½ ^¿ YĘO½ J¹ªD»£L´—C¾•G´ŠE¶N¶ H¹¢B¶­F¹¦D½¤IÀ¤PƟPÉ KÀ¡?Á¢CÎ¥=ͨ=Ó¥KÌ¥GƱD¾¬NÁ S»žO®šK©¤>¡ªG¨ C§°AŸ±L¥©R¥©T£°\­§[¦´Zª¶b¥±g¦´c¤¹^¨®Už¼Q¢¸W ·Y¤ºQ¤ÁO“»Q™¶VŽÀQ™ÁY™Á[›¾Vž¾R™¿RÉ\¾[ŽÂMŒÌIŠÆQ~ÍY}ÈZ‚ÅX|Í_ÚZ×U{ÛX}ÐS‚Î]uÌVo×WrÑfÌf{×a|ÕXuÜQbÚ[`ÔW[Ê[^ÂNaÇOiÆNqÁMqÈJb¼LcºGa¿@aºCf¾CiÃ8l¼7_¼=dÅ9nÇ;vÍDqÄHmÉSw¾QuÈOtÂK}ÁH}·B~¹K|²J|¹F³L{´R~³H~¡M€ E„™H¢F„¤E‚§NŽ¢D‘«D˜©C•¤A‡¡2…›4ž8‡ŸAŒ§?…¬LŒ§M†³F†®=€§B|E†T~\„›[ˆ—Z£Vˆ¢OªU‚¡P€¤N}Zy•Z‹œ]‹P‹˜Z¢S"<3&I<@8>IKE*C;)HD2A=.F>1::@G>8=IcDCcG=]U=aV7q^2kd4d^6gL?dTC_ODc]@`hAh[„m?‹x<‰r9kBŽa1’c.šx-¤r;£m5ªt9·u>º|8¿‰5¿‡A¹~8®‰=¯‹4§•;ŸŠ9«…3£“9«Š6Ÿˆ8 —/ª‰>´–:°0œŠ;¥›,ªŽ%«š&½¡.»¦0»¡;¸—:´–F¸—:µF´™?µ§B½™HÀF¾œ@¯—>¿§Cµ§S¼šHÁ˜M»¦U›TÀŸNęPĜOǙZÁ¥S¹¦V»¦NÁ§D¹ S±žK¾ª[Ä­S½©VǤRÁ¡SÁªP¼ J¿œO·“Oµ—R¸—Cµ˜O¼¤Oµ©G¾­@Ç¢N¼ªJÀ•EΣKȤ=Á¢Iʟ9Ò¬BÞCɱ<¿±CëPº¥R°¯C¸±8®¤=°£E¯§F±±Q®K«°L¬µVµ°e®¬džµV¥­Y¨ÀZ£¸_›½Yªµa¤Ág ºY£ÅJš¿W”ÄYŒºQŽÅV”¸[—½V•Ê]™¼SÍUˆÇ[ÌaÏWˆÉ]ŠÓT…Í^~ÓWÕ`‰Ä]†Ì]…Ý[…Ód…ÇTtÔasÎZrÉXrÕotÖdzÒ^rÞirÙafÑ]iÓO_ÏN\¿UaÈReÏFiÆFjÍKeÄBrÃF]³K^¿Q^·>`»;gÅ@cÂAgÂ>iÂIfÂCwÀDzµQ€µRw¿L|¼Mƒ½H·Ez´I|´Px®N‰²GµAx·J³@€ªK†ªE|§?ƒ§<€¦N„©N‰³CŒ§H‘¥=•£;‹,‘¤3Ž¨?†¥I…¥OŠ³Fˆ´@¨Ku¯Gƒ¨B™P~žU¥^‡¦U‹¬Y”«Y“¥X‹±Oz«Yuœa„b‡¥WFžX‚®V3/:9<9@D+<>.@8)E@.:C+=8-3<-=:77B=EOJCLNJHJ?IL@JNGLI9IO5;UE6RF>YK@eLAdO5^N7gU³j8¸pA®‚9¹z;¼=·…A°ˆ5¨Š3ŸŽ6Ÿ”:§‰?ž‘@¢“4¦’6¡—:§ >¯—=«”A¤‹4§–*¡’.Ÿ•'­˜0³¡4²˜?¶š:«–?® C³?·›L»¨K²K¶“B¶ŸI¬¦J®œE¾¢LºŸI¿¢Rº§ZºŸU¿ O¸ŸY´žT¿ SƟ[ÁšU¹œQ¿¨IÅ­O¼©JÄ°Y¾­\º¬VƦP»¯F½ªLƞIƕEĔ?´œG¬œH²˜Jµ¤O¶¨HÆ¥Kŧ?¼œBÛDÊ @Ѥ<Õ¨:È¡EÈ«?Ǧ9ñDɪ=Æ¥C¾°L¼±F³@¶¨9·®=»«Q±¬U¥®W ±R«¯d¯°e©«e›°V½`£ºb¡¶^½W¢¶_ª¸gšÃd‘ÅO–ÍJÆU‹ÃY½N’ÆX—ÄYŠÆRŠÈ\‘Í_‘Êa‰ÆfŠÎbŒÊWÒ[†ÒZ‚ÖX‚ÐW‰È[ŒÆe†Õb†Í^€Íd|Ðg|ÎZvÒ_rÙfvÎmvÒgqÕ`mÜioÜ_sÐRtÌWgÍ[hÆWpÆOmÎPfÓJmÄNo¼G_³R]¹Q`ºH\½K_ÄE`ÅBc¹F_·Jk»Lp¼E|½D|¶L{°H~²D©G…°?{¯F{¬N}¤K‚­:~³A}±?v«D}®A†®=‰¦=§@‰ C‘£M’ªI¨H—š5‹¦7¥-™«;¡@•¦:”ªB„£?„«Hy³Jz¬;{©:D 0C1351.D.=@24>+0:46G66DA9B>BHMBKD4RT:KJEFVF;I:FZG;ZJ0cB8jP2mP4mH8kQ8kV5b_;iaBaU8lQ/^W@_Z<\VGbd;`c/a\/dW5mV6iW;lV>v]9t]3ua<Œ_:Œc4Žn;Žn>‘fJ‡i;…{8‘q?‰k4’h1‘^&¢k,¡i0«q3®e>¸l9·w7¹†>±|@²‹2¬;§–0¢–2œŒ3°Š@©“9›•/¤—A¢‡?®A¤™8¥‹7ªŒ5¦Ž1ž'Ÿ+«–,©—3­™;œ˜4œ˜@¬–:©©<¶™M»¡V­—E¸¡V¯™U©¡G·žP³œ[¶¢RµU¶”\µ™S°ž\¿‘Z¶Tâ`º“WɕY¼ X»®JéUñUĦQ»¯LÆ©ZãXÅ¥Tº¦Q·—EƜJº™E¿™TµJ¯™N±˜I·¡BĨ<¼žEʙ@ɞ@Ȟ@՝?Ì¢FÕ¢DЪA̵:Ô°=̶7Í®F¼·;˲BÇ»EÀ°J¯¶?±¨G·¸Mµ´Q²¹P¥³[Ÿ»_žÀ]™¼b˜¿^š½[¢¹`˜ÅU˜·a ½b¢»Z˜È[›ÇYŠ½W“»L…ÂJ‹Ë[ÆUÌT”Éb”È]“Ã`…Ño„Ì_‡ÐhŠÐXÙ_…Ö\×\ŠÊ[…Ú_~ÓdÚauÕjuÒbrÐfpÚ[oäjnàj}Ò`nÛqfÚetÝhtÕ_kÉ\lÉ[mÏS`¿^eÉZbÕLiÅYk»P_ÁNZÅWeÄQ\ÊNg¿FZÉGcÉFdÃDc¹MzºNz¶@z¿I†¼D‹º<ƒ¬7‘·>ŽªC‚¬M{¹L„ªD€¶Au®9ƒ«4|±A„¤>ƒ¤3Žž6‚¢BŠ›A™œD¥;™¢;2—­-š¤-”£:“ª9”µ>®H“¬;‚¦G…¡>@>E;?N9MP8RR7EW7FTD?ZC;g@2e;4gG4bH0kF4bK)aT-jN3iV:lT=gU8]S6]_D]T@_X=b`;[W7\Q1lU+t`.oY2kU7uX0€X>…_:~j6g8„bFˆdD…hH‰n>‡p=p:Žq/˜g,¥i*£].¬h-°h2³s*ºs2½=´€>±‰7«“;©˜7¡’:®ˆ;ªA¯ˆ7¢;£D«ƒ<žŽA¢Ž?ª’F©’@¤–:˜.›*—”2œš,—•-’š2˜¡7›œ?©£@¥¢K¬—S±›R²X­¡Z®™T¸œU´›X´–X­Ž]¬ˆ_±ŽW±”Q·‘Q¾_Á—]¾žUŝ\˦ZȦXÄ«YÆ©UʨIÁ¦L¼œPÝT½–SŸPµGµœM´žM½šQ¶Y¹–R·£D¢?Ǚ:½›<½¢<Å©EÅ©PÉ¡MÉ£GÒ©KرDÙµ<Ö±6Ï»:ÆÅ<ÊÀ7ȶ7ʲE¿¸H·°C·ºH¹·M¿ÁP³¹X©º_Ã_–ÐjšÐdšÐ]˜Éa–ÆW’Ã\›¹h ¼c¢»n ÁhšÇd“ÀZŽ¾UŠÍUÓY‡Ë[ŠÍ_Î^…ÊbŽÆhŽÎq‚ÓmÔn‡Ò`ˆÊaŒÍjŽËc†Ö`|Ó`yÛmyÜuzÐl}ÖbqÚ`m×]kÞiqÛorÙgkÝllÖmlÚbhÎcrÈekÇ_bÄ\`ÇejÁ^jË^i¿`lÄVhÇReÈWnÄSlÉYpÀQeÁRhÇOeÆIpÀArÂJt¹;‚»9¸4‰µ:ƒ³1‹»9…¹;Šµ@Š®K‡³E‹¯@~µ9´0Œ¨/’ž:‰Ÿ5Ž’>ˆ•>Ž>“›=–¡3“¢0–£4•­2—­2—­/–ª0—°A“³F¥>Œ¬K¡It§Ox­N{©V‚¦Z|¬O€¯R‹³LŒ¬U„¨]~°b‰­\ƒ¯[‚¬Uz´W|¶Q|ªJ>.$4)*1:#.<032/(<3/9+4J7.E,/@8.C1?@24:9cC.gL.^P8eB1_K5lP4eQ4hb9]_+aa7eX;qWDrN@d_4dS?]R3]`1VR/fZ.l`$fT+p_,uZ'xW/xX9…e>}_:‚r5‚hD€cCƒu;m9…m7™s>™t=•p.Ÿq2®_+³i1¯n6®q6¼v:ºs7§}E°‹=²J­ˆ9‡9 „@¨‡<£8¤‘FŸ…G®ˆIœ„H£†:©5¬—8¢’0£˜6’œ(œ/™(’5¤–9 ¨?¦4›¦@ ŸDŸšV©¡U¶›S«›W«–Qµ¤M¸¢`²—Y´’Y¶–P¬Z¸T·œO³ SØ[¹—aǚVÅ©^¾£XÅ«]ºµ\À©R¹°MÄ¡NÅ¡OÀ˜Y²£P¹«WÀ¡V¹T½£_¿©RµŸN¶¢C¼š=Ä©8¶›=Â¥=À­Mɤ@˦?ɯHÖ­DÕ®?л:Ǻ?Ì»?ÿBαDòOÍ´LÆ°Q¼¨J´¶H°·P³·\²»[¡¿Y¦ÇbÄ`’ÉcžË]šÒ\“ÐTšÅc¢»f¡¶]”¼džÁj”¶ZŒ»TÂV‹¿\‰ÎP‘ÆbŠÅ\Ê_—ÉfœÂkˆÄr‚ÄkÓ_†Ìa…Êf—ÔcˆÐe‹ÞZ‡Óm‚Úo†Òj…ÒkÓ`v×arÔ`e×dnÞoqÞmhÕimÜhmÊhmÚ_iÖioÖc`ÉibÇZ]¿gbÎfc¿ahÃVeÉZ_½\mÊ`nÉ_e¾Lm¸Nk¸Up»FmÃBoÄE|³:w³F~¹9~±?²7¯>„»F²C„²7´Bz´4„¬7‡¨/ƒ­3„®)ƒ4 .…›7‡¤;‘ F”¦<•©8˜¦4¶<›°4”©,§=œ¶7Š­GŒ«DŒ AœEx°O|®Hr°P} \®Y«W‡²Y‰¯\·U©a€·X}ºT{µ_w´[„µH‚±I7+&52+4(-:-57*-0$&>.)B53?.399.D65F/9J92FK0DQ1LP5NKE>SHBXM:WE7[M0cD-hK2lH(bN+dX9]`7bb:f\2oR;rK>mL=qS/gR-e\8`R1`X*]b&h])o\(t[.uU6wZ.{c8z^4x_@ƒk:ˆs<ƒr;€j6Šl@‰gG‘m@‘h;s2Ÿm/ªr0¶{2°w@·u?°s3§u?©zK¦„B±|H®‚:žˆ4Ÿˆ4¢…6©Œ4ž@œ“MŸ’Iª†H¦†=§> ˜;¢”>¢•4”™+“™+Œ6–4§ <©¡8¢¤Fž¡BŸ«JŸ§G¢›Sµ“N³•J¬šKµ§^»©`³«]¯œ`± N³”Lº™Vµ Uº¥`À¡YÁŸ_·™W°¡Y¹©TÁ±P·°XÀ·S¸¯DÀ£G·£M¶O°¡W¿£]¿¯W¶ªQ¹¨[¹¤Y¹¯M²¦L¼œD¹¤@¶¬CÄ°MÅ®IÒ¢Cͤ<ƯEͯ?Õ´:ѳ=®=Á´EϹMÒ­JĵUïT¼­Q»«T±®S·¬Z¸³O³´S­³V£¼YŸÀN–ÈQ›ÔR¤ÐR›Î[ Ê[¡Á] ½g¶jŒº`‡½d‡¼\ŽÁZ‰½Z…ÅRŽÒWšÂ_›Ãi‘Æk˜Äe”Àh“Æj•ÎWŠÆR‰ÑR•Ö`›×[”×_ŒØb“Òp‰ßc‰ÝcxÕZuÜbzÖ`mÑiiÏnm×cuÑbpÑpw×gsÕ^oÝkoÓipÐjfÂ^eÉ]gÅanÍcnÇYdÀ\\ÀbYÈbgÅTh¹Vx¾T}·Pu¼PlÀAj·ChÁBuºBt¶Ezº@„»Cƒ²D…¨CŠ¯E}²:~¸3}²1‚¬=‚©6Š±,ƒµ4ƒ¨-„§5Œ™8šG€¤L‡Ÿ=ˆŸ>“¡B‘´5˜«4¦5˜¨<—±<•¹GŒ´B†«=Œ¨E€§Kt²El°EsªPt³I{´K„®M~±[y±Y²So¶[n¸\sÀWv¶TƒÀQ†¸J%,8%;*73)71$7-!6+*5=/*F38@27J4:H2:@78J7>VI7TG4UI5QFl^5gQ*kL9hC9uC7iE9bL/kR4gM/tU4pY+kY'mY,if2ya,nY/q[7ka@oh8}`9yiByk?‹kBŒaF•pI–pK{;ž|2¦x;©i3ªyD²w@§q<­~F¤|GµJ­ƒH­@´‰7›Š9£Œ6 ˆ8¢ƒ;¥—L>­“J®ˆ=¨†?¬†>§š5›’/˜>™”:• +ž’-¡Ž:››5©™BœªI•ŸD¡šE¥˜D³”B²LµœT­™Y½¢[¸¯Y±¦`ª–S·š[²ŸH²RºšQºšOŚO¿¦Jº¨L®£Q½±P·°Uµ­P°³M¹±Q·«M·´M¬±T°®Y°¤P³µTÀ³U³´`±±\¹²I¼¯N¹¨F°ªE·¢Qµ³JÇ®C̬C̦6и:ζ<͸FÒ®?ʱ=Æ©HÁ­NÔ¸DÒ´JÂ¥O¹¨Z¹¦V¼­\´¤`¹²_¶®W®±KÂM¨ÁKžÈQŸÍ]™ËQšÂa”Æ^›ÊZ™¾a”¹]¼WŠ³`ŒÁS„¾X‘ºU‘Èd’È\“Ì[’Ái™½g›Ãd¥Ía•¾k–ËX—ÈT˜É_•Ï^’Òc™Úk™Öj—ÝpÝh‡Û`‡Ú\nØckÓeqØ]m×^gÎ^wÖjtÄ`uËczÍlzÒerÍnoÇ^sÍ]iËboÑ^eÄZhÊScÊ]YÃZ^Â\aÆNgÅVvÎMqÅTq¶Aq´Nj±Mi¹Ln·DxÀ>z¶C|º@z·?u³=€±D|®9q«5~¨?zµ7ˆ²2‹§5€«3¥7‰¡,@‡©;…¨D€ž@‰ž@„§:’²6—«8“´9‰¨2–°:ƒ®F‹¥@‚«Mƒ§F‚±Bs¹GnªPk®Us¯W~¸Lt±U}°[©Nƒ´Jw³Mvµ^r¸b}¸Zx¶K´J,21/627-=)53#1;-4C57K90I1:M4:F8;B?=;J3:D4;G10S=2P:3ND4U=-\E2dU7eY>aUFkWǸ9ƽD˺?Ô¬DÑ©GÌ­GǬGóAͲHȲKĪPÇ®Oé^Ç©c¼¦_ª·[§·N¨ÂJ¤ÀMž»K¥ÅX¡¿_ŸÃVžÌZ™Ì`šÍ[™ÅWš»L—ÁO‘ÂJ‰µUŽ¯[Œº\”¿c“Êb‹Éc”Ã`•Ãa£ÊnŸÊk¤½e›¾bšÅYžÏ[¡Õ^¡ågœãn—âc˜ÚgÝoˆÜg„ßXxÐYyØdrÒ_hÉZnÑZsÎasÆ_nÄftÅhpÆdrÒimÔgpÑgrÌfuÐ_mÑYfÐRb×TdÌYoÆQiÎOuÓQwÎJwÇLt»BlÀKb¹Gcº@e¼FpºCo¾Iw¸GsµHz¤‡ª<€«?„¦L‚¦Eƒ·LŠ´Oƒ®Eq­Jo´Pw³Lw³U{±Vo£MpªQu­Kp³Zm³]{®Zy·Yv±O|µG',$-377$;+$?<-8=*0:9>=64;:6C/6?93DA<8BA;FA2F.1C.7C22K?6BB8EE.UB:_TlV5rV6`H._O6_E®‡@¨~G¥‹D ‘S¨’O²…=­‚C¡ˆ>¨‰=Ÿ“?Ÿ™=š’5›™2š“<¤Ž9 Ž;Ÿ˜9¡ KŸ¨G•ŸW¤›Pœ¡Q­’B¹‹<µ“P¾¢K¶ªQ»ŸTÀŸY±ªL¯¢S­±J°žB± F±šK¸™W² I¼žE¼ \¿±]·°T·«W¸¹W·µE¿¹J·¿]°µR¡´]«®W«¯\­·T·¯bº±Q±¦V´¯Y²¨\¬­O±ªR¶®L°¥=²µB¸¹>Ë¿IÉÄNÅ°EÖ®OĵSβO¿¸O¾µLãN·¦Xµ²^¶²^Á°c½§Y·©Z²¼I§ÁK¥¶J¡ÅT§¾^¤Ã\ž»\ Ä^žÇd£ÃV‘ºa•ÅU“Ê]“»[ƒµP…¼V†º\ŽÅ[•Â[–Â`˜Ê^¡Ël¤Àj›Íi£Æo¥Äe¤ÉZ§ÐežÖn—åg—ëg˜Þm“àg“Òj…×d‰Þ]Šà[„Ø^wÐaxÉbkÉZ|ÇXsÁ_oÍgƒÅhnÇboÊbsÕjmÛqjÚexÙ]wÉZlÓYsÖXoÊTgËTnÕYlÈF{ÕGtÁItÈCk¾>n³Gm°Kk°@u¯BkÂBk¼Ei´Nm¨Hl¡5y2u®369;-C>/<@./?=3B@78DB7J:/P17N=3C76GFfS4rU3lP8nG9bH8^M4c@AfD@eF3_X:e[4nf4l_;f\@o`4|c9~\9xdDpjIrqJkg:nrDzqG‚jO‹hH‰aGˆc?ˆp9’p@–o:™{?žzAœk9¯i;±jE·nE²k7«i;´pK¸yR²tI®y>¯{AªƒF¶ˆ@±ŒE§“M«—I¨K¢Š<§ƒ<‰F–@–’;™3¤: ’7 ‘5•Ž=‹–<’™CŸ Kž^¨Q¢ J®–A¯F¯™I½¦N¼¦Pº©Sµ¥T¶¤L°§M³«Mµ­F±ªJºŸF»›Sº£N´žO¶©[¿£b·¢U¹²R¸´V±®K´¸T·µ\¨®]¦®a°ªV²«R©¦W¯±V»°Q·³X¾¶\¶ªW»¯O²§E°žH®£B·ªO¸²L½»LνK͹EίJƱIĹUǵJ¸¬O·¥X³£W¯±T°®Q´£Sµ¤d©¹Y¬¼L¤¶F¡ºMšµW£¼VŸ¾Q »W§¾^¢Â]—¾]˜½a•½b—ÃZ¼RŠ»S’»VˆÁ]Š¿]’À] Âe ¿l¦ÀiÅq›År˜Êgž¼a¡¼ažËlœØmœÜg âmœÚp™Ùr–Öv‰Ún’ÛhŠáY„ÎZ‚ËXtÑbwÇa{ÊetÉ`zÎg‚Éo~ÔnnÑfkÌcwÔi{Þin×ikÑlxË^xØ_o×QhÜPrÑToÖLvÏNuÈCjÅ@pÊHm½Lp²Eq¬=l®Fl¶Dk­=l±Ex£?r 5vª:w¢0{¬2ƒ©8„«1‚3œ;©?|¥EzŸLs¥J{©H}ª?r´Ex¿JŒ¼M~¸Mx¨B…³:‰¹=°=‚®:€ª>|µJqªRn­Sv¨Xq¯Mq¬J`¢Jc¢Tj®Rh¦Vf¤Yq ak­[q¯SoªNs¯Hi¬S"*#"3'.-,;7287?4HB=eN?mM2fE2sYosOvvA‚kHˆrFˆp;…_B˜_8’d<œi=›pC qD“s?©lF¬nF«v?³h6©r9±j@¯uL¼tP´uQ¼pE°t>¿„H´‡L«ŽVªN«‹Dª‚6°Œ; ‰7•‘@”…4”•/›–6“@›‹<œŠ@ŠC¢F—¢M —Z¬S££H¦—N¶—E¯›Rµ§CÀ§E²¢V¶¢E³¥E±±U¾³Kº¥L®´G¾ŸF³ W·«O°žJ¿¡W¹£d´¨e³¯X½¶Qª¬X¸¨Qµ·X²ªZ²¶V±­Q®µN®¸M©±Q³¯N¶¹N¬¶L³´T¸¨M­¤C¹°@µ§G¶£Q³²M¸°UÊ¿JË°YδZǬW¾»_ŸM»³M½«T²¤P´­O¨­J«³[³¡f´µ\§°VÀI˜ºGžÁT—ÆN—½[Ä[•ÊU Ë]¢ÃZ˜Èb’Ç`¢Ì\ÂQ¿`‹µP™¶b–Â^¾b›¹d—¹`½h¢¾qËl•ÂfÆZ¥Ég¦Ìj¨Õc×n§Úi¡áf”ßm’Òn‡ãsŠÞ_ãZ‡ÑQƒÏL‚Ô^ŽÈf†Ðg„Ï_Ï`‹ÂmyÉjvÔhyÓo~×`qÜnpØjxÛcxÍW}Ô`pÑ]sÙWvÎRsËLyÈSs¼Hb¹DcÁJdº@i±>w°6y·8k²8uªIr®Am D~¡5¬0~²-|­2…±=}°2{ª3~©B~­Hw™@~ŸNy§Mv¡P|ªK{®Qx¿R¶R…®Ds®?}¸?Á8>=DBW89Q3?H>DO;AHBXV2ba0i\7i_o`:m^5q`2qe;tZEwZD€ZO~dMrrNrnOwtNvpH}kF‡nG“iE’f>™dDe=˜i?™sE—r@˜kI«u=¬v@¨wG©v?¹kF·l?¹lC¼kG¹rEºlOµzR¾~J¿|J¯‚Q³‚K¦‚;®‹<ª†6¨…7Ÿ†7’†>ŽŽ4”‹4‡E“‚J˜L›ŽN¡–Pœ¢KžŸV¥™L°PºU³—M±ŸF³¤D¹šD¹ M¿¡G»¤KƯDÁ±LÁµQ´­K¸®P¼­J²T»§Lµ°L¼¨]¯Y¹°c¾©d³°Y±³U°±W¶­U¬²W£²L©®R§¯O¬¶X¬¬L§²P¬®K´»P¶ºI²ªF©¬Q¯«O³§N¹¤SÀ®UÀ²Y¼­Wƶ]¿²eÀ²`º°SúSÅ·Z·±R±®Q°´O­©M²­Z¹°^®¬[°N›¾K“¾I“ÁPžÊX˜ÈR–ÍS”ÃU—¼X–ÂY‘ÅVœÆR“ÂV“À]š¿V™¹U‘¾a–·^™¶\—Â]•Àb¢ÆgšÉf—½XžÊ` È\¥ÃZ¤Ê]§Ï[¥ài¢Ö`œÖc”àm‘àf™à`™Ö[”ØM’ÕOŽËX–Èc‹Çg†Íi†ÃmˆÊaÉa{ÐkƒÑg}ÜfuÛhvÜauàgØ]vÖ^tÐXiÊOlÉRf½PqÀJd¼Of²Cj©Bj±En¸As¼=tÀ?w´9w§@q¤@§F{¦<„²B°8w¨4zª6w£@r­Dx£Iy¡CzœBxšKj˜Mm¢Lx¬O}¹SwÀNz¼L‚¹SyºJ€µNy·@sµMq­Nq¬Qp¸HnµBy°Mn©Io§Gm°I_²W]²YY­^^®c]²g[«b^£^[®^W«\f²cd¬Z+47(%<**9,.7.(8#7;)28+)749>C<FC>6P=HKI;TL6KQ?MW=CM;KO8_W1XL7lT=j\?iQ>jO6rJ6mD;eB?rN7eQ9q[=s_Erd=oh-nV<{fycI€\Fxf>zgE{lFudGjE{iCƒiI‡qHŒr<u;ŸnH”sCžuC˜rH–rH›kJ£~>®m6ŸmB¥b7¸lH½o>¶jMÂtB½qI¾tE´xK¹vSµ‚N©ŒN¤ŽG©‚D­{8¦€CŽC‘8‘–1‹8ŸI›…@¡ŠU›‘Q£œQ©•U— \¨£]§œL§™S­œU¼•K¼›E±¥N¸›R´£L²¤N¹¡NɧE»«B¿µO¶²D¿£M®«Y´¤N² ^¸ `¾°U¹®]¯µa¶¤\¯²T»§T©´R£´\­¹]¬±Q®®_¯½[¬Á[­ÀI®»Jº¿Y·ºX¼µT³«W²ºL­µK´°Wµ¶Q¸®Q¾³S¿³W½½[½¬fîVµ½`´´Sµ®Xº±W«´]µ¼T¥»R³°X¯¶b¬°X£ÀG¡³TºL“ÅV•ËK˜Æ[›ÉS‘ÉV£¾[žÂ^—ÇSž¼c‘È_ÁXµX˜¾]“±c”¾Z¢Î_›Æm˜Ëd¢¾iœÇbžÒfŸÈU¥Ì_ ÌU Üc§á`¦×j¤ácœÙ^—Ýc˜ÝXŒÕM˜ÕZØWŽÕ[ÓYÓ]{ÒeÐg‹Ï_Îr~ÓpuÉfpÐczÙj€Ù\tÒTÒ^qÝ\sÖXeÔWuËSl¾Ls¹Op¾Ad¶5p³;g¦Au¹9s´@€·Bx³<|³>}©>©4†«6}´>§3v®,z0vª=r¶@r­@w¯Ar£Hu™Fp Eo¨Ds¸Lv¸X¶Rq¶Rr´Kv¸P|ºBs¾Gr¶Br³Mh¾Db¸Gu¹Ql¯Hi¬Em¥Ob²Ka¨a^¨SY´XU¨\ZµhT°cV¡aeª]Vªfa¯ak¡T%/7,9)'2$&<(-3('0(28.-05/??-A@'AO13G6?H?@M69E98D:4SBkcEzhDza6~b)sU-{ZAvfCv\AƒX?~WA^G„kI}hB†j9…h?†o5„x<xG“oK“qB›mB£v;™nB¥vI¤w>ŸoB¢c8³[<´`F¬pD´tJ°lNºkJ¶n@¯{@²yC²|V©…V£ŒK±†D­x@°ˆ@¢‹?¡‘C•<˜‰F ‡DŸ@ L§ˆP¦’Q¦•N  Z¥œ^©¡Y¥¢U®œN¶˜X½™V·ŸN³›R»¥Hº¦JÀ¦DÀªN¹µR¼°D¿žO³›Q¬ž\°ª\µ¤Q¹¢V¾¥b¸¯_¾«V²¥X®­Pµ¬Vµµ\£»T­º`¶³\¹ÁR­ÅT°»T®¼Q®¹S±¶W¼±_º²X¶¶X´·X¶µY¼¼N··O¹ºW³»`·º\½¯`»²f±¬f³°^³¸[¸±b¹½[³¹Yª°T¤·R¦³S¨±[¬´W¥¸O»M”·J•µSŸ¾O–¿W˜Äa“ÁUŸÇWšÇS˜½\’¾b—Éb”À^•¿[¼h™¶h¡ÅaŸËiŸÃ_—¾cšÎa—Ði ÉY¡ÓYªÓ[¨Í[ªãeªçb­ÜW¤Ü]¡Ú_ŸÖj—ÌU‹ÐO†ÖVßNƒàRƒ×\yÓezÊh~Õe„Ðm|Îq~ÈmqÎnoÍjsÇZyÒ[x×WsÖPqÔVhÖKjÏUnÈRx¹Cu¹Dl¾Fs¹8w²„¬B‡¸8}³/v¯5u¦/…Ÿ/…¢4±<19K08G?=C8=M>8G??FC4XL=JR4N]6FX1SKaEzfE~kGŠl?ŒjC‹tCŽF‰hB‘pO›cJkP‘`NžhH¦t;«jB§fD›k9¬iD¨dH­iL£hJ®xA±vE²uK¡yE¯xI¨NŸE£‘F¯ŠI¥€I¤}F§ƒ>™™KŽ•KžI¨‰D¡‡G¥ƒM¥†F¯”T¨—Q¢–Z¦œXªž]¹¥L·œG³•Oº¡Z±šK¹¤R½¤JÁ¥NĞT·«O´¯P¹§V¿P®’L¯™U³P³¤U´¦W¹¡O«®T¶§U²¢Y·¥T³ªb¥±Rž³P³³Y®°R¼ÂY²¿V¶¾Zµ¸Uº°`«¹c¯¹`±°]±¬V¼¶[¸À^´Ã`¯ÅT»Â\»ÆQ·ÇR¹Å\À·cµºf´¹e±±e¸®i­º^°¸R³²W®»Uª·[Ÿ¬W±R¡±M¢½RŽºJž´Už¿^œ¾Q–¹SÈ\–ÂM¢ÌQ¢ÀWÎ^ŸÎ\œÎb Å] ¼hªµlžÈp¨Ì^¤Êl–¾j¢Çh¡ÓaªÝ_ŸÖ^«Ïi­Ïa£ã\¨âl§Þ\£ç\¥Ód§ÐmœÒ\†ÕN‡×J‰ÚU|ÓX„ØX€Öa†ÈgÇ]†Íe|Å_†ÆkqËbeÓggÉfzÓWwÉQsÜVmÍHeÙDeÐPeÆLq½Nq·JpÂ?k¶:w«;zª=u£7x´Cz«Ko¥@}¡B}®6‰©/ˆ·6|¬:„©2{¨0…œ+Š©3z¦B{¬FuªAo¦@|¤Fx­Ho¤Ez¶Er´Su¾V{¸Uv¶Ul»Yq¶OgµJnÅRp¿Kb¾TeÊKb¸U`¸I`¸He·N`«WW·UZ°Zd¾]W°aYµad¸WVª_`ªafŸha c^£a+,(%(,/'150*/21+*/,45)5:)::.::6>F/6C<6H:6P@;HD9FB4RI6TE¨i9¡e?œkC¥cF¡jF¢jB±yA±y<«x? wE£…M¤ˆG«†B§ŒM­‹N§~I¦P ‹F£ŽB—–Iœ–N¦ŠBŸH§ˆB«O¶‰T»N³V¿šQºŸY´©V²¤Qª¨U±Q«¡R³¢O¹¤T¿˜SœS»¡O¼žN¶§V³›W¹™L¸œJ¾›R¾¢\°¬X³²]¥ªS§£U­ a´¤`¬¬a®­X¨µN¥¸U«¼T±¹X¾Ç_µËZ¼À_¶²g«°_­´W©ªYª¶\´µU¹¾]²Ãb±¾[±Á[¹ÉS´ÆX»½d¸Äa°Ëa·Âj¼¾d¸­`¶ª]¬µ\³®Xª²[£¹_›³R›¼VºT¶W“¿Xœ²Y¶_¥¶\¤¶T›ÆUœËRžÉP£È_ ÏX¤ÇZË^Ïc§ÄgªÅj©Áj¬Êd«ÅcšÉi¥ÕgªØd­Úk¨Öc«×g¤ào°ân«ág¬áf£äZàd£Ô_ äVŒâZ€ä\‚ÜNŠÞZØU‚×\ÊW{ÆVvÇb|Ìc}Äc|ÌdjÍcnÄYlÃ`wÊOqÑOmÕEoËJrÅMkÇFfºBh¾DpÂ4m¸4t¸>z©7|¥<°@u«:t¦E~©A†­5ˆ²8ˆ¸3‰¯.ƒ«+‹¯2£3y5¨@°8t®9z°6o¨BjµNk°Mm·Mt¼RzÇTxÀ^xÁ]pÀ^d¿Rd½OmÄLrÇTuÅRmÆOj¸Pa¸O[¹Q^±M]¸Wh°Yl»__»[c¿_^´Zb·YW¶bZ®gW§]X©RR§W()((+50+31444*,-.(,3+)?/.>)1D24D47;.+E@+@@:BH*I>:PB8EU,IT2NL+P\€XE‡eF‹mE|s=ŠqAyCˆkF†v;ˆmMeN„aI‘aX‹`F—mC^I¨a8¡k9›p<h>¢cG§kCqG¬p<³wC±v>¤†;°‡;²‚?©ŒC°„I­L ƒQ¤O˜ŠP‘‰B’’P•ŽH§‘Vž‚C©ƒ?ªŽQ±•Wµ”S´O¾“U±]¶¤Z¸™P²—Xµ’X¹–^ª¢Tµ˜X¶’S¼•UÙPºŸL¬—V¶ O®¢N¶¤LÀžT¯®Y¬¦^³¡]©šV¨X¬¥b«­W¯©Q£µQª³G¨ÃV¬ÄO¬ÀYÂÆa¸Ád»V¹µY©ªT±±X®®e¯¹Uª¶V­ÈU¸ÃXªËVµÇ^¸ÇQ·Ã\½ÌXÁÅc«»j©¸n¦¿h¬¶i¯»^ ¹U¦¬X£ÀU¦¸Tž¸Z˜³V—®SŸ¸Y˜½W“°b´]™¼W™ÇT¤ÃRËZ¤ËY™Óf£ÑeªÊj£Ç`šÓk¡Ìn³Ës±Ëb¯Äf¥¾` ÎuŸÊf¬Øf¤Ía¢Ýf®Ö`¢Öd¨Ù^¶æg­×WšçT•ØO¡Ï_ßY…äQƒÖYƒàN„ßV…ÓN‚ÔR„ÈWÔ_€Èa‚Î_yËi{Ì^uÊZjÁbrºarËOl¿FlÊDnÅKlÄ?p¾Eg¹Kkµ´=yªJ}«4„²:€¬-¼8Œµ*~§&} ,†©<‡¥?†­7u­Bo¤=v¥Am±DnµSr»Wv´XtµOhÃ^xÃir¾fmÇTm¿\qÎSjÎNgËMdÏVaÄXXÀKT½VcÁLU³Tb¸Zf¬Qb¶V_µ`W½\S°Y]ºXX°ZW©bS±`R§WKŸS.";24(8-'-.5-71%30*4.&A0#>'/=13?,&C0+<8/:=3;?*@=6?I9LP/HQ.F[2QZ0Jb/J\4IN8XQ+YW&JQ*[[%`[0dR/`T2ZK7cN/iV1xU*sV%sZ+vR,~O#W1€^:ƒc8‚cB„iF‹^C‰kF‚kE‚pN‚iM‡gFŽb<•_?hE†]Mˆ`O‘^IŽmJ‘c?že:—c6—m;œkD©gF±rB©l?¯v4©t:®z7«„5©}:®€9´}:¨~@¬†D¤‹MœŽL›I’C”“K“˜K ŒX­ŠM¨ŒC±•@­‘H¹‰AµI´‰T·’X¾˜X¸ŸL®•^±_°£V°¨]¯©]¯™T²“WĜQ¼–J³•N¹žT²œM³¨H±¦Rµ©P¶¬Z¹ªN°šS«¥W­¨cª¬R²©P©¶M£½N«¶M«»Y²Å\¾ÀU¼¿U¹¹Z«¹U®°L¯±T·¼_­À^¬ÄP¦Î\¬ÉX®ÊY´ÌY¸ÒS´ÐS¿ÐQ¹Ä]ª¶V§²`ª¹a¡¼g²Z¡«^¨®Z¬¼T¢³T–¬Y’­Y‘ªaŒ¬a—½`œ°V–°W‘¿M“ÇRžÃUœÍb¤Ò^šÎa­Ín±Ói¨Ðs¢Ìm¯Ìk¯Îo¯Èf¤»`ŸÀg Åp ÃnžÉ\¢Ðg¨Õb¤Éb¬Ë]ªÚ\²ß]¡ØVœØS˜×M”ÌS‡ÔO‰×S€×H‡äM×T{ÚI{ÛFÒNyË\ÕYyÊX~Ð]pÕVpÏ`mÇXsÂ`xÇYm¾KnÅDmÅMr·Pr·Bhº@l°=sº=zµ6x¿6¹4w¸4~§5t²>{¼B±<ƒ¬2‚²3À7~µ;‚­.£/z¨8Ÿ/…¦7‚§;vªAw¯Gq®En²Pt¶Vm­Yh´[fºfjÀbm¼YmÂVoÂToÍafË`lÄTgÊY`ËWb½XR½Z]Å\[¼Vb»SY¶PP³TR´U\³aU®^P¨]X³TQ²RH¶`MªXL¦_4(0!2= )3(&/'9/01 ?%(C5.831@;/44#72AC$EDDJ/>D09O*IJ6CL.FL,BX+BT3@\;NV1WQ3TW.HS-RQ&[WaY'dS*jV&kS+hU'z\*tW-}c"|b~P!…]2…W1~_5`9~Y<ˆf>…nK~oA‡nC‡hB~a@Œ^A~`CŽfGŠ_Q†\QnJ“iC–n@ k5žr9žm; jE©tE©l? f<£t=°w3¯x:­Š=²{?¨9¨:¥†;¡ƒJ˜—M”ˆH‰@œ•K‘’X–“U Y I£‡U¨‰Qµ‘D­ˆI¸‹S½‹T«“T·”O¾žWµ”VºŠf·—d²ªb·¤T¹™^Ä `ř]·šV»™W®”O¸“W·›Y°¢c´œ\²¢_¨§]«¡c«¨W°ª_¥ [««^ª¹P¥ºT´²[¸²P·Ã_¼ºNÂÁRÀµY·¿O¸¾H¾¾Z°º\¹¿_³¿P¯Áa®Ì\®Ã_¯ÄR®ËR¬×T®ÄT«ËX¨ÀY™¸]¤´e›ºj¡·`£µi¦¿e¦µYš¸\ §]œ´TŒ±dŸºeŸ²c˜°V›·`—·^—¹N¤Ë\§Ée£Ëa§Ô^¦Øc·Ùj¨Éb¤Ën®Ðm¯Éu¬Äcª³k¦½b¡»d¢Ãm§Ña Ê[§Ò[¡ÎX°×YµÙ_¤ÙT¢ÛW™Ô\ŸÍR‰Ï`…àY’ÕQ‡ØMÜR}âW„Ü[}âJ„ÞRƒØT„ÙXwÙ`ÒUpÖWuØTtËN{ÂO~»Vt»HoÇGwËLvÄ@q³Di·;p¸8jº4t¯<€±7u´@†´=w´8€µ2ÁCƒ³:ˆ·:}À7}¿4‚¿1€²6}¸-y±2ƒ°<|¢9„¥:~¶I²EpºAo´Js¼\m¹Pu´VrÃ]sÃatÌ`rÇ[sÇYnÒbbÑi`Ì\[Ï\WËe\ÂVL¾^OÃOZ¾\L¿YT¹NU¹UL·T\µ^U§^N¹RR¬LT¯RN¿ZQ®[Qª\;%)<,5 %7<$8?.!<-&E;A9(C@8>9B#=A5@>C)E?)AI+IW2BU7=V=CJ3FK0GT0L^)J`/La&H`%NUUQWV_VjK nLpYjV%qS y_%~V){]"t`-yU9†S9†Z<`;‚]C‰iGŠnB‡qCƒlAˆhB^@‡`F~jFjA‹eK‹gFŠeK–]E—b9žiF¢rFžz;¡s@£tB£mA«z4¨x8§v8¦…3ª‰@©€@¬ˆ@©…B£“9œ–@™ŠH’ŽHš‘T—Yž•\¤šT¥“P¯ŒU¸‹S¸‹N¼ŠO¶ŒN¹Q¯’U¯`³‹Z¶†e½`µ–`ºša¾–fǙaȝiÀ£c¶¥a·žZ¾•SÀ˜[º™e¯¢d°™k­šb°–d­žd´Ÿc«¨Z©¨_¨«[®­M§¸O¬¯[¸µX¹¾OºÀS¸ºT·ÁPµ¹S¾½N³ÅQ¸¿_¯ÁZ±Å^«Ñd®Í`¶Ç_¸É\±ÏP°ÑP®ÊL§ËS§ÉXšÇY›¼Z™·[žÄešÀe–¼ZŸ·[•²X˜­U›¯b˜¬]¤º] ¸_—²`–·\Ÿ¸bœºXœ¼d¢Ía¥ÐhªÍg©Êf¬Îf¨Éd§Æc¬Ém£ÇkœÂuž¹qŸÄg¤¿i›ÉkŸÐc¨Ïg§ÍYªØS¬ÒN£ÍM¦ËU£ÂaŸÈ[Õ_‹Ù\’ÛYŠàZŽÝT‡ØSŽå`‹â[…Ü\}ÜWzàU{ßV€ÒW{ÏW€ÔWuÐN}ÊU|ÀMz¿Nz¼AºJsÇGqÄBwµ¯J{±E{»E€½K{ºOuºWoÁXr¶RlÃTkÇ^sÏdoÓjmÑghÌf`Òf\Ñg_Æ^RÅaSÉ\TÀRP»WH¶SE°RE»SMÁSUºU\°SX°UZ°[K²UG¼NQ¼VW¶ZRµ`5 $9'=2:%0: !/,12.A)465'2;15&CB'4F;AH@%ID.JP%BE/AV19O@>Z;BQ8JN.FK)AV2D[+N]6A`.GZ.MJbZiW+kV*qN#iY'de%g_%vf+nU(rd0uY+y`1~ZEˆ\D~YA„g?‹^:~aE|f@†iL}mI^<~fF€aAŒ[KŒgKŒ`?•dJŠf<˜_>“jIŸpDŸk? l>§l<¦€D£|6®q? w3ª{?¤{G²„E²|I¡zPšŽH‰H–N›Tš™P¢e¥‘\¡YžŒY²‘O³“Z¹V¶‡MµJÀ”F¸M»’]²–b¾‘Y¹¡^°™f³•fºœ_ŗc¤aĚ^Á›i² d¸¢]¶“_¶ŸQ· S±¢b°™`¯_²¨d§®W¦¢a ®]§ªS©´[ ·[¸ÁN°°V¸ÂS¶Á`º½QÀ´XÁÀN¶¶O³¶Yµ¸S¯ÈYªÏV°ËWºËk³ÏY¬ÑX³ÎW¤ÌQ¬ÓGœÂK¡Ã\žÀZ–µc˜¼Z‘³b—Ã]ŸÅW˜Á^™º]Ÿ»L“§Xš±R˜¸X–²^˜¼\Ž³]‘µa‘´a—½`Ìk›Æ\«ÀY¡Èk§Çi¡Ë`±¿d¦Çj¨ºmŸ¾f©¾m¤ºk¢Åf§¸Z©¼`¥¾T§¿V¨ÁY¨ÌP§ÁR¦ÄS›Í\šÉZžÖT‘×U’ÕTÙU…ÛZ’ÍYÖYŠçNƒÖ\ƒÕZ|ÕXvÜ[t×MÍ^~ÍN~ÈLzÁMv½PpºOxÂG{ÂLpÃ@p½E{¹@vª3uªBf¹Gj»Jo±=†¹F‚¹;†´7Œµ2ŒÀ:¿5~Á8„´3wÁ7².¹.v³2‡²J†´L³Mz¨J€©?x­Fz²P…´Z{ºP}¼Xu´OhºYj»lb»aeÊkfÍgsÒ[iÍ_`ÒkSÂjWÌcM¸`Q¹RF½]N²]O±`H¸bXº`Uµ]_³SY°PQ©TM©KR²ZE¶aV®cN°_;'2<"*135%1|hEwjK}i@ˆ`?‡]>‘_?ZE”]<™b>’n@ŽmLšrA¡t?«jE¥pA§z@¤;¡{<¤{Cšƒ8>­G°yM¯tR£|O¤„KˆQ™ŒP¡–U›‘W “b§‰ež_†\«‹X²“O­R¾‘SÁ‹DºŠM¸šOÁ™\¹‘a³•[´¡c¼œg²–\µ—X½ž`¹¦e»žd·’j¼—b´—`¼šW¿˜N±—M¸–S¶ `©œU¦¤X¤ ^¥¬eŸ·Y£µX®¼_¨¹X®¶aµ¼\¿¿_¸Áaµ¼W»²[¹²^²½W«¹S¥¼UªÈ`´Ç[³Ëa´Éf±Ð[±ÈN«ÏK¤ÅI¡ÄO˜ÊMšÀQ¡½Z˜³`’¶a–Ád‘ÀY–»U”¾Y•½VŸ¸T“³TŽ©O©W‹¸R’¹P‘¬W—´W—³cºp˜Äk¢¿^ªº[­Ç\¢ÎdªÂ\«ºb¨¹f¨·m¬Át©Ãpªºd®Á]ª¶\¤³\¯´Oª¸R£½Už¼M§¼O¢ÅP›ÊK£ÑNšÈTŒÏV„ÚX…ÚUˆÑKŒÑO„ÛV~ÚQ‚ÏK…ÍK†×UvÏNÉX{Ò[vÁ\{ÀQuÅHs¼Il¿NoÌBlÆLrÀGs²8}°7x®4r«?z¨9s±Du¬=ƒ¬@‡¯@…¾@¾Dˆ·6xÀ1uÁt¹9t½.{»4€±;†¯Hˆ·N†¶U²P„¤I‹¦TªT…µY{²Uv¶Q{°Xw¹ec¶hd²ijºmp»]mÊ]\ÈbWÅjUËeNÉaR·bJ¶SBµWE®dL³_Lª_U¬]b±WY²QY­UN«SR¬MH«UD²_HµYN­V8(/F)12'.:#103-11&229:8?.851'$?-&9B*@9"@="GG4G=?H>+OA-B@'DE9PM4PV/GM.TM3II5NU3IS/PH3RG(_O(fP(qR'eO5hW'uT/ph1jb)pb(kY'ya-{e2yZ@€d;{lE†j:„g8†n=`I‡fHˆu8h<sCŠl=‰lM‡fC†eRŽkNŽo?˜iE’tE•lFšrAj@¡nD vF¦sF§<–yF£{K …D­}R®~O¢x[¥ƒOž‰Xœ‹W X‘O¤œ`£œY«ŽXª–Z°„]§”O­\¯ŒS±ˆM·…<ÖHǗU×Y¸–V´ž_±¤b«¤f²žj­¥^«¡`²˜h±•a± `±˜a°žYµ’M»—I²œI«‘\²”^®ŸW­¢P§ªbš§gœ±W¢µY¢º^°»SµÀa·Àb¼º]±Å]·¿h¦¯[¯­`«¼d«»`¢ºS¯¿_³Ãg²Åe¸Éd©Åa³¾N¦¿TªÁG™ÂIš¼Pœ¸N•ÅMŸ¶Zš¾SšÇW˜ÃY™ÅU‘¾`šºQŽ³R—´KµM‘¯XŠ¼N¶S¬Nˆ¬P»b¹]•ºi—Àa£Ä^žÈZ¥Í^¤Ëa°¼`¨Áe¬¿r£¼v«´n«¸`­·f¤±^®¶Y¤¶P¬­P¥²MŸ·R ¶O–»H¨ÈOœÔU¥ÄOžÔ\ŽÍXŠÙYÛS…ÙY„ÛZÛZÙJ‰ÎCyÄLrÐP‚ÌZsÑ_…É`†ÁOuÊWx½SvÉD}Á:t¿GzÃGy¸7´7€³:o¨Az¥Cn²Gv¨;°G‚ª=ƒ®Kµ8{¶CxÀ>pÀBpÀ9{º>}¹:t¾9·E¾G¶N´[„±S{¥Y~¯_{±W„¬Zw½Qy¸V{·Yf±hg³pd¯ajº_g½\cÃfWÇdY¼_LÉ\VÇ\F¾^GÂVC¼`D­dN±_R¡^\¦Zb±P`°X^¸]P§JM¯JU²ZN¬aS±ZS«bB%6>+7@+>:)5..92-+6-,576/103,%77%B5%<< G7'LD,R?7WF.O>,N@0JD(SH)UH.QF2LQ5RG+VM0RN2RM5YJ1\M+dR-jL0kM(hP1kS/sa,nf0t_&|^&s`5x_=ncGlj@xhE…n;ƒf?ƒh@‰l@‚jC„q9g:€k?}mL‰pN‡pHˆbQ†kMŽoQ‘vN™lKšiF jI¢mD¢lH§lDžsJžzN—…F–ƒM¥ŠV¢~Y£X™}UŸ„]–„cža§”S¦—Vž P£œW°•P®‹W¥“\¨U¸‚Q¶…Q³†S»DƔFōOƐT¿œZß]¶›h¯p®£gªŸc§£j¦ i«”f¬`¬šS®œT¼O¶ŠN®N±’V±™Q°—O¥¥Q©©P ¢]œ¨[©°bªºb©¸\¬¼V¶½^µ¶c±º]¨¾ežºcœ»_Ÿ«bž¨\ª¶Yª»^ªÄb¶¿W´ÈZ¹¿S­ÂT¯¸J¦±Pœ«G—µM›¼FÀH™ÃM›ÈVœÅPšÀR”¾Uœ¶a›¼Z¹Q‰³T‹¹O‡·T¼Q‰¾RŽ°QŒ¯VºUŠ½b–³lž¿m¢Â`¥¾c¦Äa°¾b«Á_ž¸n¡ºn¯¼h«­l²¹o³µaµµW¯¶U¯²OŸ¯Wœ·Y½L–»O™½DÈP¦ÇVœÉ_ ÉY˜Ç\‡ÑT‰ØQ}ØQˆÖY…ÍW‡ÒI|ÍL{ÇMxÅOrÑV|Í^zÁYÃ]tÌ[rÇOxÄM|¾=º9ƒÂ=³:‚±2ƒ«.|¨;}ª;x²>¶8x¯=tª:€®Du¸Ez³D¶EvÆ:lÍ;rÆ=xÆ?qÉD€ÁR‚»Q‚¬O„­]y©f{¨]|±]ªa~»X{ºRy¹Vl¬edµdi±lp¶^n¼_o¸af¼f]¿bV¸WZ¾PLÄWIÅXMÀYQ²]I­fF­XQ¦Y_­Oa³TW²SV¶SZ¬UN¦TW¦ON£YIªcH®_585A%2968D52?:26<0=;+A2895+>-8;.(A0)I@.I76R@,R@2R@+TB6ZI)YD#L>1OD&ZK7XV:\X:XW9WR7NUx_C‚gP„mF…b@„eA…gGŠpGs@~w9‚iD{i|¤Dˆ¤8€¥@z±>|°L‰»>}ÀJn¿F{¼Bn¹HzÃIyË={¸PŠ¼_©W­_ržU{£Q|by¤W³Yy¼Sk§ai¯Zm¢dp©wj²sn±ak¶_g½`_±fT³aYµWG¾LGµULÃXJµ\H³eS¬gL£^b¥XXµVVµZ^¸XV­VW [O«SH©\L¦TK¡W=399/.=0&G9)P>)HB,DB*=67816D9‹dIˆeM‰`T‘fXmY•qU—qW¡iZ§iKªtO¡|IŸN †P …T¡‚XžT¡tU˜tR}XžƒX”€^’c›‘^Ÿ S¬ S°Z®œS­—Wž‘TŸ•S¬‰P«J³˜Hª”F°—O±“\¾˜Y¬¡R« Z¨\®œg§’b®˜Z¥ ^§¦Pº U»–S°˜P°ŠY±‘b±“]ª˜V¬¤U¯£S¨œ`©™f™f¢ j dŸ ^š®c£²_§¯až¨hœ­a˜ªd£¬`§®T£±Y§¶\ ¬W¬·X©¹Xž¿^£¼Rœ·Z—±X•·\‘¶O³H›ªK›¼R–¾Z–¼^—ÇWŒÉS‘¾_œ¼a–Èf˜ËZ“ÈR‘ÇJˆÂL”ÈY’¾T“«U©^Ž®a­^™³]ž¶^¥²`¨³eªÁa£Çc¥Ãm¯Åo¨¸p­³q¨³r¯­h­¬f¶µY³¬T´´Q§¨Mª­T¤­S¥¾AœÁF¸Cž¸B”ÂN‘ÀE—ÃI‰ÊEƒÐLyÅYzÆY»M…¾E‡ÀD…ÇLxÉO|ÊP‡Å^‹Ë^¿_…¿S‚ºMzÁG{¾Q~ÂKˆÀI„´:‡§E…©>‡®C{§Cx±F}±HŒªD‰ ={¢>xªFƒª>‹¶G†²Hu¯Cw¬@t¸G{ÄG}ÂE{¼M„²^´do¥ZhžOn Tg£Sk¥Zu±Uy¬Xw¥[l§Wr¬iv¡rk¥lg­nh°n[°^V¾fXºgS»USµQNºZJ½UU°eO°eX¦cX¦VX©L\¬OS¦U[¬]Q©ZX¨UO®ZG´PW§YW¤P780A019@/F=&=K!EE)V11P38G<:NG4JL1P=4TL1WE/ZB8[A2]C3^F4`N8YJ@^S>YV:aS3oR3pWBvV:uG5sFEpPCnV?sXIoYJpP@bU9jd?sdJwdLr`Q‰`Pˆ]W‡bK†nV‡lVyeG{qV|rGw|L…tM{nC~eI€rKŒeQ‘_L™_KžsT“x_šyT–p`šuK›{T§€Pœ…R­€Tž„c¤za§‚e£o_€WŸU”zS˜†T™Y˜Q«—`°[ ™P«R¦˜Q›ŠP ‡W©‡Sµ—M¹¡N¼–R»¢I²–Nµ—_¹§Q«`¬¡Z¶šf´Ÿc²–Zµ V¬¬K´¢R¶”I©—Y­‘V¶›O±˜S©™S­ _¡™f¦’a“¡n›e˜—f”˜`”­^™°c”«b§¨fŸ¨aµb¡¥c ¥Rœ­S¨¶_£µO›©Y¦³Pª¯W¥¹T›°P—©Y¦^²[“¬YŽ£N‘§L¸Tˆ¶[”¿Y•½\†ÃOŠÃT“ÄV‘ÃgŽÇa’ÍR¿W…ÈKÂV‹¹Y’°c˜²c‘¸Vœ¯T–®\™µ[¨µ_¨¶^œ¿m¦Äa«Èl§Âi³²k²­q¯¬c¬«a©¼e»¿U±¸]µ¶K«¶T¦¬J²¼C§¹Fž»J¡ºJ˜¶F“¿T“ÊIŠ½AÌAƒÂI‚ÊS‚ÈOŠÁLŽµC}ºS~ÇGˆÂDŠÂG…¸PŽÄQƒ¼YÀJƒ·D|»JºE„¹O…«H‚ªD„´F³:‚°Cx¯I}¨KƒµHˆ£HŽª>«F…¥L«M“¬?„¹9„³Eu»;m²&DI,FG)=F+@N'II,GE3E?/J96U9?T:=H;:H>8R?/QA6SI;SGB\K;XS3_N:o[;m[4iT:gW8qV4o[;jPCtP~³=v±I†®J‡´KŒ²@ˆ¥=¡;‡§G‚¬@‹­>¬@‚¹:}´=v½?x±A~±Ay©Hs²X{§^x¦fm¡cl¤`i«ak£]e¢\p¦]{¨eu¡hz«gu£jo¡ad¦ef­f\§id«q`´j[¸iYº`c±[a³a]©`WªUXª_P©^V¯YU¤\SšUS RO§UV°ZW¦[V Q^¡JT¥R:591B&EE/DD)EI+E="EB%OA4L;6N;+X:1T@FY<7KE0RE3VP]^@cb@pa4vZ;zVo]Ay]Bf\MpU=mOCkVIbTBq]Jk`SqaQtdT}XQ{dTtb]‚me|f_|iV{hVslU{uQ~uPtQ|qU|iL„xQ‡rE”mQ–dL—aYkWŽdxVž€^›…c—zVš{X¦„gž‚b¢‚h¦xc¢nd•ƒZ’…X“}M“ˆT”ŒM˜F£šL©™[¢Œ\™–]¨™O¤¡Y«P© U²žP´›_­¢O¨œN©–W²šR¨œV§™]¶©`±Y§žc«žV±P­©Zº¤M«–L¯O»•\²Ÿ`¥›Yª”V¢^šŸ_˜œ_™ª\Œ£n‹¢a‹—eŠœ[™¥PžR’–Q–¨R¨d’²Rœ²V®W¢¬K”±X¥³Y¥¢Hœ±G¨§R¥²S‘®P“­LKŸV‘¨P‚¥`¶Z…ºS…²Oˆ¼O€·K‹¼S€ÇQƒ¿TƒÑ`‰Õ_ÐNÉL€¾Z~µX‰ºV’½b‘¿VÀg–²i¢ºi ´_™ºf›¾h¦Äq¢¼k›²`œ¼i ¬k¦½_¨²`¿R¡º\¥³P­¼R­ºN¯¹Lª¯H›µV¤­IŸ¶J–°Gˆ¼U‹ÀE¼F¼MŽÉT”ÉL†ÊUˆÄU„½O‰¼FŽ³K„»C±C‰»R„µZ‰¯LŠ¾@…ºO‹±H}´K~¤F‚©L}©>€¥Is«Kz«J‚²Qƒ²?}©@¨G†¦E†C…¦K€§B…¯;‚¯B{¼D{ºB€ºBw´H|°Fp±Tm«Zo°[|©cv¤WqªXp£dl›esœgyªez¬fr¦`s°dk¯np£ii¥cXªmdžkZ©dW±fY¿`[±gb³]a°V^¨Ua±aT«XLŸdU¡XX¥fS£^S™YZ­OOªUV¨N\ W^©WO§`>;,7D*5BAE#>;+@=%KB-FD.OI4MF/IJ0TC>V=:U;5Z<3XN.YQ)NI1LD2XJ2TE1MH/T[)Y]0Xa7\X@meGmg>k_CuT6~[GuZKmZMiXAaMB`Q=ZR=daBg]LkbNieLpdMunZ|iZvkYyjYug`|tdrySpuLplSmnJslGhQ‚vY|vO‡vO”gO‘^]Ž`a”r^ŒzUŽxf–yeœy_“yW‹€\”ˆi˜‘gž‰k¡b qX„[“ŠX’ŽRœ„I“‘N›“LœV¥•P ŒQŸ’SªœZ§žQ¬V¡Y®šc¯£]ªšWª¢Q³£Z·–V´›Q²¢Sµ›]ª£c¨¢b²¬]¯ [° V°š^²œ]»”W·Z®—Zª—`¦•X¥ž[Ÿ¨T™¡Zœ­]­cƒ¬h…œ]“¤_—§W’›^–™S™¡^’¯]Œ¤]”¨\Ÿ«S›°O—«Tž¤S¥¬K£¥B©D¢¯F“¢?Š¢H‡ª@¤EŽ¬L‡¯V~´J~´L‹©HŽ¬T‡­J‰¶MŒ¼TÅR}ÐO…ÑS‹ÅIÂNƒÇ]„»a‹¿cŒ¶Z¿[”¼b™ºm¬°o¨±f¥µg­·t©»v ¹h›®_Ÿ¨b¥±g™²X—¹Z•¶S™¹Vœ¯]Ÿ¬\ž®N¦³M£µL˜¨Sš³R›·K’µJ†­I”¶@•¶B•¼JÀQ—ÅKŒÇQ€ÆSƒ»L€½HŒ³D‰¶K„·N­IŒ®S“¹U•¶E‰­E€«F±K‹°M‹¦IœG„Mu My¬D‚¶J„§C{¡;,:DH:"LE"B>0P?.X<3W@BTC4\=>UG/ZT1[P,XS%NV'SM0JH2TW-NQ.Rf6\d5YX?faCj_Ioa7u\=fY@xcKu\?jUAdKBfM;jV25691*‡·=‰­C{¡OuœQ}šHt£Hv¦M„ªFŽ£@’§DŒªGžG‹¦<ƒ£<†¶:„º<|µ?€¸@}µ>~¾’¡; «9˜¥:’¨>¨H…·A‰¯?«UŽªS•¯H‰®R…µH¿?ˆËC|Ç>~Á=ˆ½P˜ÀT˜»Z’·a‚ÀV‰»c•¾d“Æi“³r§²m¶d¡·q¬¯hž§q§«o³c¢µc’ºX§]•¦T“¥a—´f• `— bŽ§U˜²`Š»P‘®K†»?‹²2†¥AŽ¨<‰¬G”°JŠ«@ ²E”·EŸ°A–µD«F•«;¨;Ž£Eœ§=¢¢B« =¢ªE—¢=¥B•´D–¬8‹¯K…¡D|¤Bs¦M†¤>§H‡ªI’ªM‹«@Ž­C‘œAž@†¤G‰¹Aƒ¶:„¾8ÂE„Â7¶Bt²Bn»El¸OyªZu¤\t«Qs¥Zz¥gq£ns«]n²[t¨\{¢j{¢`{«f~ªgo¦qx¨cq£kh¦ff±dU§nY«lW°rQ¨lL¥lPf^šaW¢[\“]O¡^J^NŸP\X^SXœHa¡MaªUe™QW™WA:;86:?<$A5:6!>H/:Q2;I)A@"O@([=8YHAPR6NO7PO8[O‹³4‰¬7¬:Š¶?’¯G’¨9œ§;¡«7™­@“¬A—¡; Ÿ8¦8˜¢6‘¤4¢¨9¨Ÿ9¥£:•ž7˜¥<’³;Œ®B‘¡Gˆ¤Nx«C©@†œE’¥;«>ˆ«C…¦H©J‘¨IŒ¥B„¨@‰·J¾D‡ÃAÁ9|¼=t¶=k¸Dn¯Mw®Xw§Ul²Zn°Zq²^{£o|¬st«er·`}±_uªXz­b‚±l¨kƒ§bu­it©ca§ee¥o[ s^¢rSžqM›iX¥cY™[TœcNaU•Y\“VQœVR¡QP¡UV£[U¡OR£H`¦MY›V_ŸY5;.54,:?":8EI$EG.>N1EM%DD&PK*GO;MN>\N:Z[2XU8]T0aX1eK3a\9dR?dV>\b2Wh?]f:ekDgY?pi>naCqg?nj9ugEyiLyiKxdHljFrfO{aTo^VrqTwnStwZyqV~p^za\vj`|tTomWrc`roitp_ycg|fdyglssdtogp|q}ossmy€f‡€uŠrdŽ‚g„€d‹za’Œb€ŒYƒ^„g‰ˆfƒŽ_ƒ€f‘ƒdŽ‰c™‹Y•\ \™—X¡V–ŽTœA§~N›„\£“^˜Vœ‘V•™V•aœX ”U§’^¥•\°˜U¶•`´›W§žU¢¨Y¬¬X¬ªU²¨[³©b°´`¢¡\œ®`­±a¡¤^¦§ZœžU–™Vœ˜fŠ¡n•“pˆq—•h”m’jk–“_™–^’¦f“©^¬U‘§WŒ®F‹°M‹§F™¢FŠ¥Kˆ©L‰¨G§A¦G;‡¡8–©7Ž£=‚µ@‰²9‹¨L‡¯DŽµL‹´E{µR{µO|ÁD€ÂJ|¾J|³SºYƒ¶`ˆ®cƒ½UÁg¸]œ³o•·j¡Ák§ºn ©h§­l¦¡kª£c©¡[ §d•ªa“ W‘¡d˜œg›ža™ŸWŒ–Yš©[“°^‰³Lˆ¯D‘¦=µ;Œ±?§:•°8“©>˜±Gž;“­4ž¨8ž¤<—ŸEŸš1™®>¢ª=¦˜6œ8©ž5œœ<›@–­H—®:–Ÿ=—¨O‚ž@„¥K…¯Gƒ£P†¤@–¤?‚¥Iˆ²I®NŽ¢M°L­E²H|½G€³Cu¹FvµGq²Nh¹Pr«Tm²V}¬\s¯Tw­Y‚«dv¬et¯oz©qp«`„®[´hx­h«l¯py­kw³me d`£ti›p[žp\—zZŸmY£kYªbO¦l[¢nN–aV¢aU˜bT‘TN£]J¥ZI˜IT¥Q_£T`«K[¬OW£PG3)94(;9*@B'7H#:C#9@GK)GX&BT1GS6MY8TX4\^1WY,ZR1eU9^J@_TDgV<`XB[Z=X^8^j5gl:f]Ce]Eg^BdbGna;neBniIpjRunL}sDumKupE|gMzoTr_‚sZzi\zl_xpTxybtu`rhZvfYpagqfkkqkpmiore{trr}srxqrtizvmzzq€€uŠ|oˆoˆƒsŒ|i†‹k}Œ\€Œb‹^ˆ’W„‰Z†“ZŠŽZ”•YŒŒQ‹‡P˜“W •N¡ŒU«€N¤ƒK›‹R“…Q›‹T—‹ZœˆYžŠ] ’Z›‘Z–[¡˜`©›d®b¤c©¤h¬Ÿ_ª \Ÿ¨]¤¨Q°ª_¯®[¯§_ «\¢§[Ÿ¥Sž¥_ až—g™œd–›jŠ•kŠ“i‹hŒj‹ˆlŒd”–b¢›b¡•`¤—Vœ¥Y«X‘¨MŠ§KŽ¥F¡C–›H—žAŽ¦Gˆ­@…¨DˆE9•¢/•Ÿ3‹£<Œ«>„«8|³?†¹A±Ly·G~ºM{ÄR~¿Lw´Ky±V‚¯W~µ^µ[ƒ±a€®hŽºeÀoœ¸j¨¸j¦·j«¬g¥©q«¢n¨§g¤£i  [›¢Wž˜W›¡b a•§eŽž]ˆžbŽ–c‘¤Y• Z–¤H¥CŠ¯Bˆ«@–­A“²9”¬7›±=–¤7¢ 9™£4˜Ÿ9¥¤;¡=¨Ÿ2¤¨8°¨2«—5£š8žš7›¨@ ¨D§Bš§IŽ¡Q¡I‹¢D„¬H§I­O…¬N‹©IŒ³@‰­G„³Eƒ¬G~±=„ªD|¯>{³By¼Ev¶AwÀFu¹Nv°Wm®PoªVx¶R…·\‚¹V„°bz©frªcp­my«m{«d}¦[{¨_vªfsªlm§cj¨gd›xn—wk}f’v[”w]‘lW™aRžcX¡`YkOŸnO¡eU—aU’cV”UKœQM›JS¢O[¦Na§Zb­]^¢T;'&52$J9/D?0;I"HQ DG5RM6KT)RS2RT3VW;XS:\S.\N7RU2RT7VX-dZ7]T5fP7`YAXa:av.bm6b^CnSBmW9m_?lZAna7vuJod?ufG{jKilWstKzr\~iSŠlYyn^uwaƒsZ{uWmm^quhoeeqdTxdiqjuwotniunuxw}rrmr~mzykj{nx{‚rt‰u…„p‚ƒyŽo“|f‚}pvŒ_€Ž\€ƒi„‡e}ƒZ‹i‘‚_Žˆ`š‹]ž]¥ƒX¡[¤Ž\—M–‹D›‚M™ˆO›€T“YŸ†P”•W“‘[”ˆ]¢‰Q£–Y¡—`´£[µ˜`«b¦™^¯™Xª¥]¦Wªœ`°¯^ª W™¨]›£dŸQ¡¢_œ£j—•b›Œgˆ“cŠgƒ–a‘k”jŠ”\˜lŒa›™g¡eš¢g“¢Y“¥W…¨R†ŸM¦Q©H£K‹—>¤?ŽžF“©>‹§G…4Œ 6Ž¤@Š¬6„¡>…±@²Ju¹B|½Kw¹M…µD´IwµN†±G†®Sy¬VŠ´d€©TŠ²`„·fŽ¿^³bŸ´k£ºm¤¾oš±lœ©f©ªeŸ¤i¨©j¥”bš›S –UŸ›]ª`’¥X¡S‹œX“œZ‹šR‘œP‹žL‘§>ŠŸIªFŒ«A•­<‹³9“ª:¦- £2—¥;œ6“˜:—¦8œ¢.›¢8¡ž4¨—+«ž,§’:©—@ ¥O•K››?‘£L§EªN¦E§J˜›RŸDŽ¨?Š¬AŽ¨G†¥=„Ÿ:€¦>€¬>­H€£D©A{®Nx¹Rw»Tt´Ls¨Nu«Rv¹Y{´X€°dƒ´]u«aƒ¤mzµe­`t³dx«Zwdxžbz§hj§oq¯gj¡lj mg uhŽuWŠra•cT•d]œ^aŸkZ–t\kK‘cT“bU‘\V•XPœ^X§U_œL[šN^¢XhœSl ZJ/3B)/A**K6)BK2DP-KN-LT9JK1XH/QL8SJ9[D4TF/U>5SG0MP(T\*WO1^N.T\6WY9em6ep2i]?g[<^]7fZ=o`5n_=rj4lo„ D‹¡E‰›M‚¢Mw§Pw©R‚µaƒ´^²O~­O‡¥Vªcy°j}®d„²b¤_‰§i°lt­av©eq¢bx¡azŸku¦nm¨pt¨`h¤ek ra™kc“md—bV‹dP‹_[‘ccn^l^ŠcT‘^VŸ[X›_P¦_S eY›a`œQYWX\e–Oi˜R?*0=$7K18M60JA/QE6RU;NSA^V2^Z8WQ1JP:ML,WK-PG,^H5\N4\\#ZK&QK%SR*d\>b\:fl.m]:cb5oc9p`;q^>lbCwj;qvAoh?urBysMvu_wp]vkd~cZ„db„cnrklk`{niqhiifcgl[lmdkdhqcvhiqkZvzekolt€po‹dq}nu€|wz|uw„wx…ot{p…†|…‚q|Št~j}r{|oƒl‚wd}ƒgƒaŒ~f›Ž\¤~g§Z¡…\ †^•Œ[”ŠG—ŽR•‰?›‘Q¢T•‘P•‘Pœ–X“L•ŽQ •I¥‘L¬V´›X¤œT¦˜Y£œ[®V«™S§¨Yª¤[¥ aŸi“Ÿf•—]˜™gŠmŒŽh–‰h‰Œ^‘`Š“g‡ˆb‰‹b•VŽŒj˜‘bœ—j“aŽ”n•‹h•›i£[”ŸOŠ£U‘œGF•¬;™¢I¥G¢?€¬I£D‡¥Dˆ§J†¦F‚žO{¤K~«Mw­Q}°N‰µ?„¶KŠ­?¯J€ºK‡³R…®Zˆ±c…³P}¯X­SŒµ[•¼i¹dž¶e£­hš°aœªnž¯a¨iŸ©c˜\—šS¢—OŸ—P™¤T‘—Y”`‹RŽ”V—N˜P‡¡=ƒ¦:ƒ¯={«8|¤4Œ¤,ˆ©1˜4’¤7••,¢8•“0™š+“”*šž3 “1§•5¨ -£—:£‹9¤‰>¤–;™•M™•BŒŽN‰™FŽ¡>”žJœH† F—A‘ªG‰¨Nˆ£@~šG‚¨@ˆ N‘œLˆ¦I’™M†«X~¯b|®b}¶\‚´^¨Xy«^ˆ²^¥ht²b­f‚ªg±d‚§o} utœpx¥n~ mo¬mo§ek®cj¬je£_m¤_jŸmfŠkW—_Y…d`b`l[•jb‡haŽcQ”k[›k[˜bTœbd˜Zfš]d›T^]k˜\c˜JkŽN90gc7nc:heBhe”7‹Œ,‹•)‹˜+š. ‹)—•0Ÿ“4¥ž5¬’4¨•3¡Š0 >ˆ=IŽ‘F‹B––@–™Bˆ¤=‡¢DŠœKžK“O„•G‹’NƒžH‰¡J¨K“¦N’ [‰ª\ƒ¬f…¨g†¬`~¦i„£i~¤f…ªg®fzªb…³j±h€¶kw©o{uv›pz›szŸx{tp«lh£dm¢cežf][^›]`Žca–cZŽk_‘fg‡fa„leŒnc‰oT‹q\ˆkV’hcˆbg‹]c–am—Xu”NmKdSjOH68=49;?;>G7KBBU?DSTEaTBN]DVR+JQ*UH!VS.RQ"SP.VN1PR VZ&Y[1WN)`W:_[9`e>k\*_i=n`7le9cnCpmAuk“CƒKŠ—E”—C˜D€Ÿ<Œ¢H‰˜R‰›Q•›\šYkŽ¡m‹ j§a~œn}¡d…£b‚¨l{¥kƒ¦g{°s~³b}¯ls«o~šlq˜hw¢lr¢ju _j¡ie™[mœ__œ]^›aX]Zˆ``‘icdd‰^df\‡nY•pQŠsZi\‰\Z˜an™cl›^f›\p•[q‹XjSbQD44?<7<:2GI5OA3TD@]M?XRKRRCKW2QX(US)^V.YX&O\MV#MX)\a$S\/RX.__2[b:ja7gc/bb5i^5hlCchBf`Ey`Gxc@sa>mKhFy`H}_X€_S‡_Sd]ˆ]aiiuhm{ccy]\w]RnbYqV_gU\j``w^_lXgmZryelvhp‚fk‹sp~iu}otƒ~qy}}‡|uxzŒww‡~to€n}mjzkiˆrfˆuo}d‰u^‘„U–„Z“{e˜}a›}[˜†K™ŠW ˜U¡•H›ˆJ ”Qž™RŸN L–•E—¡A§Ÿ@¥–D¤–<šE¯¥C¯¦J®§U¬¦P¤ªO  Vœ˜ež¡hš¤^¢šbš™g—–h“…j‚o}s‘ˆh“Œ[ƒ†^€„i‡Žg}mŽgˆbŒ‰]Œˆf–b“ŽZ‡Œbƒd˜`›Q¤KœNš£P§C§Cˆ¦>Š¡;‹§G€«K}§Hx¦Ut£Lw¤Pr¬S|¥]¬Zƒ¡Y‰©W¯TyµI}³C‡§I‚¦[z£b€­_†®VŠªU¢P’£Tˆœ^‰¢]–iœ¤gž§iœ¤[š_–›`—¡Y¤žZ¢T¡™[–š`‡¡Z‚¦[~šW~œT‹¢O’£O“ªG•¤E«M‘¬<­<{¤:}¨<ƒœ9†’8~“@†6}’3„ˆ!”‡+›Š*˜Ž%”š%˜š1 ›3§,«2ª9™”?–ŽB‘‹>’”5š9”•8•?‹A†˜A“EˆŽTS’ŽA…ŽF€‘@‚Q’–[Œ^ˆ™c XŠŸ^©cˆ¢lŸq‡šeƒšd†¥l‹®pŠªo‚¢jƒ¤m€¬kz°b}¤`x›bpœ[t«\y¡fz _o›[g’^r–dm”bj™``ŽaeŠaeƒhX‹[Zƒ_Z‹hc`g‹e^’ne_g^c–Ueš\^•[hœNk•Od–]a—Wi†\>1FG;BFA>EBDRQFNGJ^NA\YCPLCHK3K]4SU5X](RW&M[ RT/[U4`c,P^6Te2X]8]cFan@ja:dd6q_=f]=mZCf\Fx^BoiA]@„fF‹gI[SŠYTŽWU‰Za„da‡]i†imr]mt_dq`[kZVhXcsYZkYWjOckYgzZnsTu}ahyhv‹uu‘wg~wh‚q‡x{Žq’x|‹†sŠ||†‰p‰ƒwr}prwnjƒys{mzdqb‡^ŽYŒ„_Š…]›‰VŸ‰S–‡N—›O¥‹IŸ’Q£™W¦ŸQ¤V¤A¡Gœ—C–“F¥G˜–D —O¡¦M§£Qµ§F²¤W¢œM¡¢U¤›X¦¨kž™l£¤hžœoŒa—ˆo›‚p—‰dŠnŠ‡i…l‡Œc„†iŒˆ]‚Œb‰ˆd‰f…Žawaˆe†a„Z ^Š¤RŠ¦QŒ¨Jš˜R—«OŽ¦A“­<§9¦B¦D}¤Q|³]x°Qw JzžW~­\ƒ§Y}›Uy§\}¹O‚ªTv°J„­R€¯U|¤UŒ´ZŽ¬V§Y£[†¤V‹˜\“¤V”¤b”£f‘—c”’Yœ–h˜e ’jšœiŸ[œ›_‘ªSžX¦]š[…¨MŽL†²O…´L‘²B©>†¥G†ªA‡¬=ˆ¤F–2„–+Ž9(€•$ˆ'…* ’!›*›š$˜œ'›'¤š6©‘0¨”3¤<•‰7ŸŽ>•ˆD™“@•ŒC›?‹ŠO‚‘O‰—JŽ‹K‹“G‹Nˆ—D‡”A’•K™]ƒWŠ›k’dƒ¢h’’g‹—qŽ™r‡–q…Ÿh‹žrƒ¢p† l§w…©j}¥nv­fu¡hz«Y£Y|°b}ž]}£byŸTq•Yl”^l–brŠ\dfZŒcb„mj€\jƒh^Ž[iŒf`‰bdn`˜_j–\b“ac”_b“SgšWpœMdšae›QjVM9?K:HM:IHJAGRMSOMNWDYUKPRCPPBSU@KZ=Le1Ub,M]1M[,P^6Xd:Zabg‰“+‚š0Šš+„.(‰0¢Ž(¢*¥˜+¢›&ª+¨‰%¦“+ —/Ÿ‹8™’<Ÿ‡2ž‰6”HŠQM‹‹K‰“V”‘MŽ‹O–“E‘•I–œM•C‹O‰X‘Yˆ’cˆŒ_Š•eˆ™n“n•y‰w‹‰y…”yˆœu‡ w‚§k}¥nq«er¥bp©Y{«`y«ey§av¤ewœ]p“bt™Xt‘OvVm˜_a]_ˆh_ŒafŽZi…ac‚kegk–iq‘\i•]m˜cp‘Wg‘Zo’^s”Qr’QfœTmMl’W9>B=CJKYc6Yf0Y]7]gB^bGZd:a]9k_:j_:q]2y]>ri0€fC…gD€gF‡dGŠiJ’_[‰\NŽ\`Œd^yaezkZ{Zc{aXhZhxa`nXXhOSsTVoO]uSep]hrihu]l„qi}mn‹{jŒ{i‚}iyƒnw‚vozx‚sz‰t†xƒ}v|y}~€mt~zˆ‚k‚rŠql‚zZŠ€Uˆ`Š†Y”SŒM›ŽX šHž”GœŽL¡“O›™S˜¡X¥—J¥šNŸ’MœžR”—M—•T•V®›U°œO®”J°ŸY±”K­ŽV®•T¨£Z¥›h© d›•b”e”j›…b~d‹c„]œŒk›€`•€k•„^W~’a€ˆds‡dvŽb~gy“p `‹P„™MŽ—M†œE—¢BŠ­P…°S…®E†£J~­G|¯Lp£I¦Sy¥X}©W}¦_rž\w¦Vƒ°[x¦TlºPy§Zx«L‚¢Lz®JxµR‡®Z°]‹±[y«[}©[…£V X…›X—˜Q—œW˜œ\š“c˜–jš›c•e U—¢RŸ[Ž¤N„¨\~£U‰®]‚¦IªU„¯G†²BŒ¦A‡¨=ƒªHŒ :‹9—2Œ–)Œ—.…Š(—”+š”2š*•‡/£•*±“-­•&¤”&«•3©“$ª‡7¤”4 1¢Ž0‹A‘ŽK‹‹GQˆ†XŒŠR†•K€‹@ˆE”G™B‘ƒI‹†SŽŽT\‹–cmˆ’kŒ‡gŽ’kˆm‡‰p…‹n|Žr€Ÿq¦mˆ˜mv¥x}™slŸew c|®jx fz£pz˜jUw”Tx”Qs™Vw‘`v‹baŒQ]†T]Œ]Yƒ_[ƒia^cŽihŒalff‰Ymš[l–`l“Yn‹awŒMt“Qg—Ud“agV@=T;AK=CF;?K;LCKPFUPD`RDTWCXUA[]CTZ;OT6IX?HZ0JM.NO-T_1XY5`Y/\Z=c`Gb^BZg=aoGogHsj>q`;€`8b‰›B†•?““3’›+‰7ŽŠ4’0ž‰*¡5˜„8Ÿ‰*®Œ*¡Ž0žŒ.ª‚2ªƒ%«Œ$¦‹41™‹9•C’Hƒ‡L‡†V“…Y’‹J“‰=ƒA’†B‰R•~J‘K“{H”†I‰ŽP‰a‡†mŠŒhŒnŒvƒ”v‚kz†s€†m‰Šs‚žq§z~žyz™qs˜s{¡tt¦mwŸo‚£m‚—f‡–\~™_r’Rt‹WxŽbr‹]i“QiŽP\V\„U[„eZyce|[i…_ab`bnŠbj[d‹_k“\n’Xn‡Wp‡dgˆ`gˆf5@K>GR=FS9HO>LCCLJVOEYG@RZ=MW=NOAPXAMNA=Z9HS6AJ:AQ4V]+[S0U\9`bGI5IO;[S:\N@bZLb\NbVLhQSv]Py^TvbKtbNycS{XY‰^PŒ[G…fH…rG„oIŠtDˆkJ€sN{oYtb_}bhvgm{Zc{a^}WizZeyi^na`sfhpltxsqsty}€v€wpy{xzxzl€{gzr{xvu{n~kxh~‡k‹Žn‡Œw|Žsˆo‡ˆnŒp…upƒhq{e€„`‡wc‡y]ŽV‡†^T“MŠˆP‘‹OŒ†QŠ‘b‰•ZŽV˜—X™_“™^§•P§™R¬’M¬–EªˆJ¥’L¬“W¦•X›˜b“f˜™`›“ci—“h˜še–•Y–“\’…Qž…V˜†bŸ‰h˜’k““l†f‚‹oˆh††fˆf‡„\}“\”^}•^|–`yPx’Nq•Mx¡\€ªWƒªV¦Z†¨]~¯Sx§Q‚¤V~›YWvž[z¦Ut§S}«Uv³[i²\m¨[q¥Ws©[n®Wh²SfºYi±Qh¥_h©\k­at¯[€«Vz¥ax¨ažS†›R‚PŒ˜S„•a–T‰™T…¡LŽ«NŒ­TªK•®H‰¤O‰ Ox©Vs­Tt­Qm¹Ju¶<‚¸9…­4†¯1£/›/””8‰?—ƒ<™1™ƒ2šŽ/œŒ9£’9¦‹7ª…7¨{(¦{ yž‡&¢‰1ž„3—‡>™@Œ†O˜‰M’O–MŒ“R„ˆSŒŠHˆŠG‡~D–~S•|Q”Š^ž†Z—€W™ˆT—bŠh’h–ŠmŒ†rŠu‹‚t…†l{’t}‘{x•}z yn›qœst”|wz{xz™iy”g‡›_ya|Xp•Zi‹aq†Vh‡Zg‚^[ƒWY€PdxVayaY|[_€Z[x`cil„dqZf|^bde‚ZiŒ`n`xlpj@EE@PDANHKRJLWRNTQJN[FMLQ>\V?VDCJL5DS7JR=CILNTACR;UOA[X6eSEZ^Ig[FXJWdUIm]GpdJqaO|_LƒYK†cO€]LƒgUfVeKŠhO~sZylS~sRmg`u_]zchZ[y^Z}U`yWl{ek€i^rij|gpwqpƒtppmƒ|q~€p||qymvoxxp€vp€…qz‚w|py}syj„x|€rz‡iqƒlˆŒr‰†k‹zmzlvˆeozgwƒk‰rg|}cŠ†c’\ˆ‘V€ŠZW„ŒX’‘b““jŠX•X—–\ œUœ[¡˜S©›M°ŽO¨˜O©’U´™M§‘\Ÿd“YžVŠe—ˆ[£—_•–Y”–X™V’ˆZ‘Q¡†a‘˜h“m‘Œf†”o‡n…`‘ŒdŽŽT‡”]‘b~“_}™\‡’Sƒ–]o‘K|œJq›R¥R€£bˆ¬W‚¦\ˆ¬[}žP|œ\ˆ£_y—]p§^tcz¨Zs°]nµPt§_h©[g¢bk¨fq²\q®So¸Zq­Qn«Yp§cjªSr³b{«ct©kwª`ƒ[šM„ Lƒ[~š]–^†“W‡¥U­P¡OŽªL§O‚ QŠ¥Qy«F®Q}¯@~­Kz­Hz´@~¤1ƒ¦9ž6”ž9–Ž+—8˜“<•9›…1’„0Ž6 }3™…@ª},«ƒ0£v)©l"˜z" Œ/ƒ:“yA–€CšŠS‰ƒQ—’E•—K’RŒ…YƒN…ˆM~€JŠƒZŠsO–]¢}b•‡V•ƒ^‚a‹ƒ[Žhœƒ^št‘xŠo•|n…y|ƒv…•}~š~ržrtxw{w†~}ˆm{’i’c„iy“h~Œ^nˆ[c•`r]cƒ[\ƒZZ~`ZzTh[f|Q]€aX€Zg}_g€e^‚f\w]_xc`{\^ZfvdcŠlq…bo‹v=KN@KQ?=J9@TF9W:JRJIVIJUMANLLOWIQ\JLcEGKN5HS2OFCMTETIINJISOC\G7WX?aZIVUHaDRiKFnSQjSMn[R{cWpYSwdTˆ[O`PZW†_TŽa]}rZ€tawj]qg]zj]ol[|b[yrb\_at‚eazbe}hd|eguet}w{€xtŠthŠrf„|o€‚u†r|‡u‚w|}‚~y’~j~“{y‘t|’xt†kl™mo‹esŽks€puvvrqyrym~x{„oƒezc‚‹[z’Y~“a‚Ž[‡“cˆŽk–q•”a–Œf“`£–c¢›\®’X­‘Y±˜b°“Y¯ŽP¦†XšˆI¦‚Y«U©M«ˆH«ˆOª‘GŸŽU¡Ÿ^˜œS‘‹U“˜Vš’Y—™a•’fˆa›‘U‹P‘\“]… Tˆ‘N‘—VˆŠPŠŽX|“H™Fu—USo§Uw R|¤Vy UxŸSx O{Uu¥Xy bx«cl¥cp¥hq¡ht¥Vw¤^r©fr©le§sk£j^¡[m­Xj¯^q©bg·\o¤Wr©dl¡hn¨cqªarª\~š_‚—Z‚–c~ S‚¦ZyšS†¦I¢G…˜N„–N›DªCŒ£L}¥A}ªžƒ=’†?‘6¡ƒ0¡~+›v$¡j(¤{'”s%p.‡x2vDœ}E˜zG‰‚?”„P’„M‡ˆVˆ}_‚xR…yT‡}Tvcl^ŽiP™{Q—tZ”‚b„qeŽ{eY—‰eŒd•„q—xt’wl‹z|‹„~‚‰w~Œu…€p~v„|zŠy‹ƒr€ƒq‰‰qƒgkinjh‡ts•ii‹hf‹\d~[q~_hsWeuQa\cr]es^gpWVxdYn\euqaujXnoUox`usivuu‚mCDV7KQBGX>=YI9ZDENAFKOAOIGDNBDZHGYEASIFOO;UM8MNBLE;ZHAaA8VI@^IM\QHfSFaKMdPKiMWkXMj\ToSNmYU~\W‚gU}i_‚aW|e`‚c_‚sf€rf†ogzn_ty[lu[mr`oqcnih|enwfcwdf€_g„hxykp}xv{|sŠ{lpkƒvr†|s‚wxz{yu…‰{‚Œw‡ryzx“r{tvol’qk‹ok‚no†jtplƒutyx€w†x}„z€w‰g†g…l‰‡a†…l…‰iŒ‚q‹g’‘^“fš—qŸœk£œ]¤•_¡šd©`¥‹X¡‡MžˆDžŠJ¡ˆH¬„O¯‰D«‡E¯†Eª”J¢™H¡˜P™œH–˜MŒ“T’šYV“ŠdŒU’˜Q˜œK••Q“O™R›LŽ‘V…ŽK‰ŽKI‚›My˜Tw Pt¢YrSp—Pt—X‚™P~¤Vy§_o°\t°mr±nr°mk¥poŸjt¨do­bk¥^g ad©kc¨`\¥`h¬gh±fn®cm¬cj©dm¨h|£jy¥a€ªlw«hu°e€¤b}_| [€ŸP€¤KxŸNw™Fz˜G…›LŸA‰«Gƒ«={:x¡9y¤<}š2›/€™7z›4y=t–9sŽ4~‰1|•7’8ˆŽ8™Œ<™ŠC•„A›~<šƒ8•:œƒ/—s5¡p)™s$™v.˜z;‘t@–{C˜zE“{IC”yCM‚Y\z_|}[†x]„r]ŠwU‘mV“oV”v^•w]ŠtdŽ}]’aŒ~d‹j”xu—vr“xxŒ}o…|‹„xˆƒ}…†|Š€~ˆ€|ŒŒz€Žr|’|ƒ‹y{qrmjkkŠuj„le‹lc‹fl€amtdlu[es^k|]i€ek|[`^`q``vgZkranuYmsgo|djymqng|o?BV6DWDIW?FYO>UHFRCAQD>UQ>DMB>PCDUKJ[KKLREWGFJCKLTFWJGTHNYAKRPF]^Qd]UaXMZY[bUZmc]hfRvdVyY]uWV…bU‚Z\v\dv]eu_^wfn}hs}ngva_{gbuudyjmzqnvikycg~al}nrwgrzilurx}~xuxp~~iurztdw|n~‡s„ƒot|Œ€{—€‹yqt“p…—nrŽnz™`y‹nu‰cqˆk{†eokqv{}osƒ{y}yvŠzy~jŒd{^ya}‚mw†iƒc‹i•h†‘oššs™sŸ–n¡‡d¡ˆc ~h¤ŠS®‰[¦ƒS˜ƒC¦‡Q´‰L£‚P±ŒF„L¨‰I’TšŒX™—K–ŠM‘\˜“a…•_ƒ‘Z†‹S†‘L‡‹R‘Y’—\•]ˆQ‹X…“X‘’B„‹R€’G|ŽCv—It–Hp ]xžRpž`t¤Lx¥QRp©et£lt¯ht¬kpœrvŸcz±cp¬Xa®W`¬\]¦qa«`džjb°ep¨ti¬ok£hpª`h¤lt¡ipŸft¦cg¥d{«k}§hs˜Zy˜O‚¤Z}œU—Uw‘P}˜F{œK†ªE…¥K‰ªB}¤K¡=x¤FxœGy•;‡˜7„¡0zœ?{ ?r†2‡0ƒ„7„†B–“@œ‰>—“<ŒF—|=˜‰3œx0 +§v$¨t£q-q%žu/’q;y?’{6›x<Œ{D‹~;‹…C„‚Oyr[w]ˆrd…rTySnU‡rR”qYŽ{a‹zYŒ]”ƒl™vj’~gŽ{n‰ro|uŽst…h‘|n‹}Ž„–z‚ˆ‚€‹y|‡†~Š}Œ‰{‡ˆ{ƒ~q}~l{yq{†vi‚mfŒioŒok‹ih}[sx`dyghveqq`p{W_n^c€W_xn[epZhpbsklo{c|‚syriƒp=MYIQ>LE4VI;QQ=DY?H`GS^GP[FOWIKMLAJHCTHE]VRXUOXFIYKTY[NVe\\cXYZbb_]`h`ie]m]U€ZV„UV†\T‚b_yhhqjjw\ekcbn^nuemtdhuj`vlermm{gu{nmqoprjvthpyqisjmvsn}x}wxxm€rv{n|~ep}`t‰l{Œw}}qv{’xwš‚y …{¡y„“sz”b~•czdray{fr…c|‚k{ws|uzƒp{vwytz|x‰l}az„f}`z€i‹ƒnsŽq‡—k‹“s”l›‰oŠe |h¥{a¢V©zZxK ‡I­D¯O£’S§ŠW¤Mš€HšˆPŸƒXŽ‡S‡T‡’SŒ“]”f„‡]Ž\‰–V‚‹S‰‰XˆˆTŽ‡V—ƒV”Œd‰TŠ”J‹M|‰C|ˆL}’G~›Gv—XsŸ_x•Ws–\{¢O~ŸUxž`k¡ek›ij¢hg iq¦a~¨Ws®Th«]i§fa´g_¦rn§nv£un¦sx›rr¡or§ga§ci™Zh–`ošff£fug¥_¥Ru˜N~˜Xy“Yy•TPx’Ax¢=¡C‡¨?€©NƒªL|œDŸH€‘B‚‘H‚•Iœ8}“9w˜<„F€‚?ˆƒ5’„;™‹?‘Ž>•Š<‹;’ˆ5¢~9¨q5žp(Ÿm$žoœp&—l&žn)l8”t7{4Œu8’y6˜q6•zDˆsQ|oZ„nXŠwbs[†wYƒwa‡z^”qS’xW—{fŠe’}n˜wg‘tjŽu‡sprršvl˜„j—Žk’}š‰ƒ˜}‡~z„sq„zy’‡xŽˆ~ˆ€yzzxq~„xƒ„p}…jq~mwryŽgqdn„_nxbjtehmXdpV^pY`~WiwYcnljlt`zpd€wr}yowv‡kOKmŽ?|ƒB|ˆBƒ„?Šƒ8”€4‹‡AŽ“=‰ˆ0~2œu1§~/¢z,£o"¦kœo"©m. r5—o0’m5˜z-šy<™v.~FŽ}LŠyL~h_‚x\‚xXƒvW‘q]vVyf„`‰zV‹z\’wa‘sg˜vs•xf€r‹tlk—yk“‡nžˆv•Š~v˜x}™~n‡xum’‡q‰v|~~„}xwƒzvŽ€nvuƒ‚nƒˆbxetgs‡bm}gvpnjqWry`iwQcvTgu]ithr|ae…nkzo{…q€ˆ||„p=EiDBhQIiRSXVUUYONPM\WHYSLR\BYcJX[Ja]Mh]S^\W\ONLTIKdJNkZLeXS^]RaUYg_Ueg\scNqYNvTJw\TucZp\en[m|XdnS^p[^pXly_lrWrw_mrbxj`yrSypWsqWp€`s{ay‡bwŠhw{ht{h{yprtt|mqtxrkurplspr}gl|pv||{~~t‰ƒo†p„{€~ˆ q‰¥mŽ™ii‚†p…lˆnƒƒmz~utzm‚uq‚wsw‚{uˆ‚pŒˆo‡‹z‹‚z„ƒr€}jƒ…gzgƒ€q|…h†p‡—eˆ‘i‡dn”}h›t]œ|T¢sS¥~L›€Q—Pž‹Y£R ‹I“†I~M†O”}Q—‰Y’‹e‰^„c„Œ[ŠW’‹^ˆ†_€€V‰„]‡„[‰^Š™fš`‡a˜X‘™Lƒ‹MyŠP|‘G{–Ow–QvSr“Vl‘LtQuMlŠWp–`e–jk›he£^d¡ct¬Yo¨Xo¯dmµhj«^t®eu°[|±bs¨lu«ao¢cs“be“n_‹t]‹nj™ei˜^g–ei•\ray—Tx”Y|Z{—P~–O…–N‹‘N†–K‡žBƒ›B¡D¦Hx¢L€’?z:xŽ:vŒ„Œ?ˆ‹B‹…;™‹<•Š5“Š/¡|4¢y5«{.¯)ªs§k'«s4¤u/g5–i-–u/˜u96ŽyJŠ}PzO†qWŽrZ…t]‘maŒn\…{[†^‡z_‡}d‚{hŒv`€c“pŒucŽqgŒtn‹vmŽxp”{yx™‚|£‚›v}’wt”wm‘wj‡‚mˆ}nƒ}t€ys‰rŠzsƒt†{qƒ‹hzŽ\ŒY~}fzth}xgv~iov]k~^p{\q]r}ZzˆgrŠcvls‚Žs„z:EqMDlGQaWVV`VUZJ[[O`PQXMD_YM_SQ[cWc^NY]UU]QX\S\VRXb\P[X]g\XcfUeYTc_SfmdvicifS{\Y„\Nti`pelzf\‰\`€YfmV\uVdl[qkbun\}o^|rX{kUpv]s|cq„aoub|~c}€pk~pj|mrskktqompmjopvu|k€zhvv|yx€rz{uƒˆp‰q„œpŠž~ŒŸ{”o„•m“jˆ‘m‚dyixwtr~stˆyi€}hwvpq…wv‘{x‡|Ž’v‹Šp€{~v‹i‚‰r}„h~p€r€„s‡‹v|‚k„…q“~oŠth–zf•s[˜u[•y\–ƒV‘\˜c‰ƒY“E“~DŒuO„|QŠ…Mc‹‹k‚}Y’a„]]€Œ`ˆ‰]„^†P†…a‚†VŽŽV–“bŽQŽV‰O‡…HxŽCy˜@{™EvL{Lz‘Lx‡O€NwŒOu’Q_“dh^dšjf¡Yx©Wr°[{«b~©_u±Zo£bs°R}¥\n¤\{dp¡m{œhk›km“lhŒlg†bnhf—bb’Sm‰Os†Uv“IpŒJŽ\t–UŽP…ŒNŒRCŽœMˆ–Kƒ @uE”N~Jxƒ9|ˆAwBu…:}{/}‡=Š‚=‹…@†J…~?Œ‚8‘{C“y2Ÿv8¤j0 o.®p7ªl ´w¥d®g&­`(Ÿl3“g4Ÿt9›t1š…7›zJtMyR”nN‹nVzW‰~`ƒpSu]‹{W–€R“‚\‹ud•yX‰ri~c…xdƒonŽxg‹ml”soŸˆ{”†sŒqšz{¢{o’tw¤tj—tv‹qpssƒsp‚uxqqƒrt‚l†|mŒul~‚_ug}c|‡m|gƒ|govirwal…jxŠanzfuzdu‹`s‹^{}b}‹m|‡rŽ†ƒ‘Mt‹Mk†Oj•Te—QyœVu«Z‚¬Qƒ]}¦Zz¢ay¢Zn£\uœ\všgyap•ct¢Z{šf{Ÿov—iqbp–\v’gx”aw‹ZwŠ^pŒMuIq„RpStƒVƒ[zT…—Jz˜D|œ;q2n6uƒ>uEx…O~„I‚ƒ8‰„4x7{BŽpI”oFwG‡jJ‹w>Œ{>–r6™l9¦o(Ÿl4®e6­r/±a$¸d½g²m¨Y$¦[4–],¢iA—{B’xD’wF‘sB•pG›wS}MyT†€L”~J™RŠuMŽuTiVŽkXˆs^Œl_‡ua–tf‰}j•xk€u›†|Žp™‰qŸ„pˆq~m£sx˜‚o¢zt–nl™tgŠyf‡eŠxjˆ€fŽzj“…h€Š\…Šd‰Ž`Œz^|†b‰|c‚jwŒc}†efv‹js‹pu†mv‰r‡l~a€‰jzYH`XJgSVpWUjQ`bV[k_il^fuYpoZis_gvS[lRcbY]iT^rUZiXWqVen^rn`neotgpxaoz_~q`}gYzcV}hU}fa}d^†_bƒXfƒ^s~SvzXqtasob|ubzq]zsVxo\{rY‚we‚lZ{l`yy`{zio{mj}wmsznv‚mq‰iq€izŒir†rzˆup†ur‡‚t‚ƒt~ƒŒ|„ˆr‡•u’w…œ}}‰y}†~z~s‡…r„Šj„€`„€gupjyinpysv€rq{kz‚tsywˆ|Žˆ{„v„‚~}ˆ~ƒŠ‡yŠ€pŽ…x‰x{‹xv}zz~z‚p‚zk~‚^‘|f“x^Œx^…ka†iasSƒwWxpQttPvs]r^zx^}vSsuWxo_vt]wzh{ˆas_y‡[‚XWˆJ‰”LŒY„T‹‰IˆŽFƒŽD†?Ž—:‡‘FŒ‘<„–?}‰MzI‰CA†ŽP}ˆOtƒMf‹NlMr˜ZqŸZv¡YyVyšcs›hp§[u™W}”c€[x“azšZ{•d~˜_s–il“at’^}Š`z‹gz•k|is‚_{€WuT„Pw|Ms‚Z|Rw•NrœIy˜KoJu“9s…Au…’‚K”v:•x:”vAˆoJ…kEyB—v;›f6žm*¢h- k+£v,¥f&·g*°n"µi²h#¥`*Ÿd%¬\+¢\;g<št:r;ŽqIoD‘tAŸ}FšƒF‘‡I‹zIŠxK˜sY‘pW˜ggžs`“tq“wv‹rt‹nf›lŸwi›ƒzœ{qž|u¢ƒ|¢m¢‡u¢…o¢{~²~s°tl£|jšzh™‚pœešzj‚]“x[ž|`“^”Œ^ˆj‰uh…m~]’h’ˆi‡†l‹„k††n‡Œf€|j€‰lŒ`Œ‹k–‚h‹wTV~Q]wQ^uZfzekwafthd|_n„fcwdfoeUv^TtU^kVacQjdOhgbhrgmmloq_ske|`n|fjsqsknremtii‚rsƒxu~hi…dl‡_i‡Yn€V|yX|pSznSzt`~xgrhpwcovdvz[n]„pk{upvqqz|jv€p~„myˆr„Žn}lk“gj…ru‘lr‘uu‹}jŽsˆ‰o‚ˆsŽx|Œj…i‹qŒw†Šlˆ‹i…‚n‚k…‡pƒ€ozvp~vyuuuwywz|ƒ…v‡ƒ’}‡~ƒw„‹px„vx€x‡|y…}}xx€uv‚owŠorzz‚}|ukxp`um\‚kd}le‚~Zs|NqoOvoFs}M~nI|pPzsZr~Vrw]vmWwpRnyXwƒQy‚PwŒW€‰WƒƒT€‡Lr‰EuŒJqMm’RxŠPvRz|R†€K…’E‹“9y˜yŠA“DxŒGs†Fx‘Cm‰BrŒKmKr–Px‰UyŠ[wœdtŸ^u¡[y›T}¢St¢Ov•R{™Sy[€‹a”cƒo~Œg‚’p{ft‰j}`‡aˆ}h~nc‡|i„…b}‡^q‡Y}N€RxˆSrŠPz’Q|C~Eu?{x>yHy~T…ƒT‚S‚„Iƒ?‰r@„w?{J“rIŽzB˜y@™k:”x7”w&l*¨l¢s+¨i*¬e#¯`!®^#¯_1¤^9ªj2Ÿg8¢`A—d<œoA’vI™oF”|?—~H˜‚R‘†M”RtZ‘p\šr]›khnitv‘mtliŽso—qhyqœuvœxr—~|¢x¦ƒ|‹p©yq«xo¥qf­ue£pi¨qq¡tnš‚r„f¡xb£rd›zf¡†bœ„[“…_ˆ{i‘tcŒqf‹|hŽ…e’cˆo{p…~l~zl„c‘‚p’€nˆ|qŒˆrQIY[[a}Zc‰Zl~Zs€`ez`d^l\coZ^yi[nbfifcsQdhLkfSer_htkrvfylcwml|tqxlxko€xf|xgss„€}‡m|qpcu|aysRuxU„qT€nZxqVp[|}ZtoglsXt€a{wh†pwtm~lsttrry~tm~jjŽuu’t|wt†kxƒ~gˆtjwq’i‰{g‡ƒiy~d{…t„Šr‹kŠ„d‹mˆq€j‹‡m…cˆ}q{u|}t‚€w…w€~ƒ}r…{„‹}‚…€{…}…z}oz{py~ˆowƒzwyoxstˆw|xƒwƒ~ttm~v^|ocˆn^tsZtpX}~]ryLrrRwwHmvJ~mMutVj}UopUy|]wkYhxYz~Tt€Wv€OwIz‚Jz~Tv}DpŠDo„Ro‘\l‰Lt‹G}ˆEz{F‹€<„’@‡”A‚7rŒCx‹@wˆNw—Fp‡Pk“IsIrŽQv‘Ps‘PmSqƒ\jŽ`lŽUqPvŸU|žJu¢O‚”Jˆ•OŠ`~ˆc{e‹›i|˜r„iz_q…gyˆ[xƒi|pfŠpiŒvc†ƒl~ƒXt†Sz`‚ƒ\|YqŽTvŒY„Pƒ‚G†w=ˆw@…HyLƒ‚L{…U~O‹yPyN„vJ„T‹wOœDŸs=’n-Ÿz/šo*—j,ªt(Ÿi-¬f'¦k.¡j)°]1«c9ªn:°l6Ÿ^;£[H›jE—o;™eK“tK“nU¡zG H¢N‚LŽsM›r[‘pe”wo•mg˜mršqqžsj™{w›ut•vo£vŸ}z§†ƒ ž‹r¢‚yªƒp¤}w°tc¦€m¨qj§mq¡yk¡Œzª}q |k§wc¦€kž‚f•‚g”yeŠ|iŒwh‹re–yf_‰kŽˆk‘xg…}rŽ€sŒ~nwmŒ…hš…xŠo\X}eO„ja‡jh†lg~do„ao€\gƒ]]‚[Z}eaxdbsljwheqbmhXigZugZptfk|ksrtwuu~qrxu{ysynˆzlˆƒsƒ{y~x~tu€cwzawuV}pS„nS‰zX„x\{w_ux[poaup[v}d}|duws~sskltcpgkzkk†qj‹pvƒp}Šx~|w…xxŽpj’jd—vaŒ|]Œ{f€„^~†b‹b~j”‡dŽ†h“‚l•‚h‹Šm‰ƒcˆ~k{nx||x‚ƒŠ…ƒ‚{Œ}…ƒ|€„y}‡‰†|…zvvysvtooq’wqˆx|…vq}yt†uy{zy„{vqk‡s\|mYnl^mq_wvasxUl|TsyHpqOupHojKsrVyy^oy\ezcio]sq^xtPxvRs}Gy{Mw{Pr„Vg€J^‰WfŠUo“YkŒLn†D~IŒ‡M‡ˆB‚ƒ8}>yCz•Iu—Rn”MfˆNlŒSoˆMj„Ot€Mu|Iw~Pm„PbWh‰SpŽKs•Tt¢YtžLv™S„•T}b~‘b‹–q‡™nˆ–c~g}‚`s€]ruXwaŠxfˆn]„kh‚sf€xj„Š\}^w‡_u‚]|d€†e…†\‹}SŠtE‹nN‰wS…N}‚Tz‹J†ŠM‚S‡OŠ}V”„O•‚S›zE p6–r0u)–t0‘o4œk)¥r%¦p"¨l$žp0žn.¨h0£fB¯mB§lB£aEža@_AŸbB›iPœoZœmT›oM¢zD¥‚CœxQ‘w^–|i›tlwr˜pnst™j~n”}sœ~}•‰‚šˆ˜‹¥Šƒ¢Žy¡„}£y§‰m¢ƒn§{g¨g¥xo¨‡n¨„v¤‡m¦€n¡m«ƒa¢‚kŸzg’wk–n`‘rX›q_¤v[›gž~l—}jœ„w~rwmsl‹s“{r„v—ƒv^T}kS…qU}qbz^a‹[j„dp†hk†ae…[\}cathrvohnfmkbnoghq]qkipwmvxjz}fyyry€y|ƒxv€y}~„}z~z}|wytoƒxe‚yd„{c…{\‚v\„{c‡}ayx[xpZmxkvya{b}oyznx~krlpqwqnm€nvss€wyx{”nvŽt{ws•eiŒgg†to‘xo„zf‡€e‹ƒjƒv_“‰^ˆ~c‰l‘ŒfƒŠn‘iˆƒcyb„yo{†t|xƒ‰}~Šy‹ˆ‚|u‡†{Ž{ƒ†z‰}pr{‹pyurvuˆm~ˆw}ztt€}qpi„|kzro‚dg~ijtoWgq_fpPp|WxyNn„Nq~LhyOihDooKukVjoXou\jn[j{Tq{IytFj|RnuLyvI|{Pr~EfuQ]ƒQZ‡Kf„Hl~To…N‰€Ay‚G€ˆMy†HpEx–Ip‰LxQm’Um“Om“Xb~IqHn†RrtHsRo„Qh„PvŽWo‘To˜MyŸKr‘Oz‘X‡ZbŠ”gŽžd‰’h€œmˆ’g…†d|v[ƒb…tetiƒ{f†miws`}ƒVƒ„Q„„]x‚j~fy‚\ˆ[‚„Z„L‡tD‰}R…s\{{M|yP†N†‰K†ˆO‘‚G†~RˆƒQ”}H F™oA‘y;l-Ÿu*—t&Ÿt&©h&±s)¤y%¢z'£v.«a6¡m4°aH¦m>œb<žeB•h9£nJ£kSšlOœrP›tDžtKœL–~P”~[—xi•€fŒpkŒ|fžrxi‘~o•o¥uŸƒ„”‹‡¤‡†­ˆ¢†‹«~‚£‚t£Œs«‡n£rf¡j™vi¢‚o¯|g©|p¬ƒ`¤‡`¥Š` uk§tpŸ{i¡h\–ih¨s[©{c¥wn¢xqzvwgŒ‡mŽ€r“tp“ƒh˜…xŽ}w“zvm`ƒl^Šj^gY`fƒclƒbk~ehˆf_Žce‚ee|qt{jl{mrkaxgdlpantkwx^xz`|aˆl„‡h‰pu}|~‡~„…u}ƒw†{x…‚qykk†tdƒ{b~toŠrkˆub~ld~s\z}Zrvftl‚xi€|rƒyivvyszyr{yykuzos}zzp}k„jsŒkn‘in”pjfm‘qm{uˆzk‡xwŠ|q†zjŽ‡aŠ…f^…m‚˜s’q…„i‰€i€{kq~j‚jr„{y{}}‚‚†|…Šwzxx€{z~}{s‚psnoƒpu~|n}{g{qexkmzwnsthkyidqhefsXe|QpuVu}UvƒNl‚JfySkmKkpKnp[ryVt{\rwNtvJo€Gh{Jj|OtnM}xFxtBkvNbwKhwN_†JiMiqWz{I‚w>t˜h?”fHŸeD˜q>œsIžtI¦pG›zNšzRœwb–d˜€Z“y`re“urv–†mŸ„pŸ€v˜x}˜|~¤Œ‹§ŒŽ¬†¦ˆ„©}€ž}w¢ƒz£zt¥‡{š…p¨ym§~b €j¨‚a«„[©dª|nsj x]£s[¤wY¤id¬wp¨tm¥lo˜ls“mq“g™~q’€pˆu˜ƒt•v~˜x|cS}g`~scjV‹mZŒkc~bd„lp„ld‚imwlonmvrss‚vd}piqspxr`‰~d…_‡Œ[€gƒ’j‹‚m{ˆq}€n‘‹m‰†q~|yrs}n}|f}soƒwn‰uguoƒlh„uj…tb„k_vyb|ui}xlzyftvm}tw}qlvfyyyy{sux|Šh‚fw‹uv’sm‡mo’rl‰lo–ym”s‘|p’zw•€c„\‰cŽŽb‰‹hƒ‘gˆ•uƒk{n€ƒcryo}w_~}iwwt€~wz~}{…‚{ˆ‚ƒŒ~t|{}~w€vr†ro†oo{vx~wevpgrtqephdimkgotfrvjixYdXrVq]e†Ll„OpRnvDlmKqv]uoSvyYxxOpyPq|VdqGpsKnkSo{Srv=ouA`rFgFgwWetLhiLloS|~A~~;q€Iu‹CoŒAo†CwCv†Cd”EkŒIrˆXp„Mk‚Ru{QtˆTz†Pv„J€~Mv~OƒSySˆV‘\„T‹SŒ^’Y‘Ž_”–b’†g†€cf…qe‘{jss€{b{nˆpdxukszWx~_uƒd{{d~}ezzb„t^…v\‡xUzrMˆoJxwM…V~rMtK‰xSxE”sMp@ŽmD–lHsCœ}Kœu@žwA¢t1¢x5±m(¶s-·i:¯g1§u4§q4§j:¢`?­hI§gF¤mB jCžfB›oAŸfE”qM¢tN›|F¨~P¢wU¡|W“xY”€c•€[•‚]†o–€w‘k„r™y’ƒszv–„s˜~‰¤‚Ÿ‚€¥†ƒ£ztª|}¦{v Œn˜ƒqš~c ƒ[ª‰Y¦ƒi¤}i©‰c¯tp¤ro®€^²€]®}]§ijni¡kk¤jn£nq•}mŸƒhž‚qŸwh ‡q—}w•‚–z‡lSƒmZ€oZ~oZ…kVƒm^‰ujˆri‚um‚yjzym€xrzn}|o€ul„rrƒ{n~|_‰}Yƒ}aŠŒjb”d‹Ži…‰b…loˆ~t…q‚tswvxywn}‚v|x~tw„np‰loˆmg„ndŠphƒjjƒl_|wc…sd|dysf}sh}psxmqo{xtsyh|†lƒ‰rv€„mx‰qq“tm“€p‚k–€l–xl–€h“ƒc‰_•ˆ^‘‘l‹l†‡rˆnƒ†g~h|hsˆbtfw…ps~~r}ƒv„ˆ……z“„xŒwv‰‚qƒ~z~}sƒ}iqc‡ti‚mtƒporeiyjcnsnjnrplwmgs_j~ej€^_‚Wc€\`ŠRi„Qj}Lt~KqzStzPk~LowVvq\ryTk}VasPeoYdwSguSe|Hf~E^vM_tM]pTkiQqpOmlRutFps<{x=}„AvŠG~“Eu’Ir‡?kˆBp‡F{N~…GxˆOu†Iu†SsˆW‚~I|€D…ˆC|Q‡P‚`Žb‘Œf‰ˆ`„dŽ]˜ˆeŠe}hŠxgŠye“toŠuvˆlrŒnjseyt_|niydxzbwyj‚|m{}e|qhuxfvp[th_€oR{rPymV€tP‚uQ|{T„vS•|T”uEžzE™n>’yG–vHsM•nC£o:£p8°n>±y6¬r>°p4¬u:¢h<©l8¤e2©c?«f<¥^E¦gD¬lD¤h;§p:™iD”mA–zJ ‚N›{K sRyX˜}XŒYa“‡c‘‚g–ˆt‘k‹lŒ‡l‘Šy‹ww’Š†š……’ƒ…™…„ª„}©€v…|›r•‘q l¨„aŸˆbš‡j…b¬…^ª„f¥}b©{j­xm³€j©vl©v`¡j[ n[šh[mh™|h¦}mªxqŸ}n§yj¥zt§z|ž}€lW‚gN…pTŒjctd€n_glgg‹kr‹xnˆlxvxsw{uzh…€k~‚a‰‚k†g‡Žq‘‰l†“j}˜b€†h~‘q…i‘w~€l‚xz…‚tvyswtm‡~xŠu~{kw|qu…nk{zcxmr‚mk„lnzfswmcidrsdzsq{{vvnrsoulpt{qs~n€i|}uu~qƒks†{{e•‡g‘…n‘|cš‡k‘h“ŒfŠ‹]Œƒb†‹w‚lˆŽrˆŠp|Œ_‡|clx‡iq…hƒtzuƒˆƒˆ~„•‚t—nt’vqzv{~o‡wj†yr|mdwdtylmbilbiteinjsnpr^fmeivai}S[x[`ˆSg~^_zNlqZi}KjP~qDk{Kp|^evRk{PdMbwPexOfqPgpJh|?^w@[qHcwR[oMbqMlnSnzNi~?o|CxzLnvExzRn‚DsEi‚Me}Mp€E|ŠIu…JvRvƒTp„Sr{TzG|‡N}J}O~‚Nˆ~T’{iŒ‹W…‚a’„Xˆƒ_”~g‹ˆl_‰}_“mrve“grjoŠnh}ro~{f}lbp_o{U{ob‹sj„sa~k]€s^zia‡s\‚eQ†uO~rJŒqImCŠsQ|lKsNšoF—kO p<pA•{BtAŸo= hF¡j4¡p1«s*«p:°k?¬h4³d;¥e@›i0¦f/§d>¦e7¬iC¨b:§iG£nEŸiB£kF˜@•{B¥qV£zN£~TštW”ˆW•‚_›|a †t‘q–€{„~˜ƒy•„Š…rˆvqšˆ‚š~{‘‡ƒ¦u¤ƒvŸ{€Ÿ‡m¢€i•ˆe¥Š^›€m£g¡‰a•{g§‚m¦€a¥vl­vq£ta¥|h³v[°}Yªq^¡qi¡ej¦ma™nc«yeŸqg£v˜rq™p}£{€v†kOeQ’oVje„sg}qhtf‚lr‰jthxˆhwnw{x€r†zuˆg†„i„f†ˆf‰ƒqˆˆrˆŽm{Žpx•p€Žs‘pˆ‹{~ty€t|‡x‰€Šwp‡o|ƒnv†mwxjmvtg~vn}vo~wnrj‹gujvƒeuvhzv{qyuk€xtvyltuqu}rxx„jw†gv|fxˆsz…uq…vwƒq˜|bšƒ^–Žk—Œo˜Žk—”aƒeŽi‡‚pŠ‘qˆ‘k‚ƒgŽ‹dˆˆqƒ‰pyo~Œn‚{mŒ}‚“„v™yz™s€tu“xz”|yƒ{o€km‰okwfeurmsrltlgk_npdkx^woivcqv\dwRaqWXR]‚V[tRaqV_s\krYiyUvvIzmUpqWmoVfwG]rJYyV`~Z`vPkt?ms?`z>]zF^hG_cKfgU^{XdwTjvHd~UozTzvQwyT€zVxƒOx}NpXm€Zx…O€yR|wNsyRtwVvMy„H}ˆB€ƒMqtKquM}…Sˆƒ`~S„ˆT„‹O‰‚U„wbthƒlo‰peŽjf‘il’j^‹u`‡na‡wm}nn{tazl^vrU…pX‚rZrnbsvc~w]€l^dW‹eTˆoHŠrG”xI‘uDˆoI…iJbP’jW“bMšfF˜kNšuIŸv@˜q;™c9œe?¬]/®d-®h4¶i=¾g4µo8°l9žh7®k;®a6£i7¡d6žk7fC—pCŸmM—mCŸtD¨mR eQ§lR§vZ¯pb¥u]¥~e™xb“|qƒz¦z{¤uƒžz‹z‚wv{w‹{€‚¡¤€s¥w£{}¢Šw›e¡‹cŸ€a©Šc¬…l}hœ~o˜woœzdªrl¯nj¦y^žxa±zf³w]§jlœlo¦qt¡okžtf¤hmjo¢tw qwt{’zŽ{}mXŽnY”fXifrh‡mo„ft†or„ft‹`zi~‰mozsyˆdwŒp‚}r„}j†„e‚}j}Šz€uuŽxrˆlt—t}œp“dˆŽry†hw~mu‚|‡xsˆqm~jvˆjq‚wxhstpjquexpuƒvoŒpw‰pzkq€m~{pqvurz}wsrr|{sly|jw}pyxlvƒrz€u~vvŒmˆvy‚†u–ˆi“~`‰hš“fš‘g—k™‹fœfŽ’oŒf–o„‚gˆgŒh‘uƒ‘|ƒƒ{~‡ƒ‘~{œƒqš€y—zxmn•pr‘l~Œml€nj~^fw`pqerzitl`ojktlf|z_xxiwjqck|gk‚\]~^f|WjƒVf[fuaryXm~Mx}UqxTf|QdoRYrE[yM_{NXuUk|DkxHtmH_uJhFelVigTZrPQ~KY‚Mj{LauPlVysRtItrWluVo€Ovx`r|MxƒS‚IzzU†xZ„|Xt[{…TvN~†RtpXyzX~rNw€Q|…VŠvZŠ}ZsbƒmZˆi]„rWyxU†uiŠoaŒri‡t]v[„nq„~l|l_}{^~^{rPˆ}R€pOzu]}kY{nP‰nW]O–cSŽeE‰vMŠsM”kDŒjIŠjLcWŸgR¥iO¢cH§l<£d9œf2©n4¬q9«b6­n7¯g7¸i<¶lAµo9²a4£c:¥_/¨]@¢a=¯[:¦b4eAŸbJ¢_K¨gN«nG£fJ¦fY«qV¯mN¨u`«h\¥kd¥p`ª~w¡w‚¢w‚tˆ£s€ ~zzš||’xx–y€žz‚ž}x£€ž„s Œ} Œi§i~`yl¥Šn¤ym¦xmšsdžmd©pe­mm£u]gb¤ig²xi«vj›lj§erŸlk¤rqœqz wq¨x›s|–w|—„wŒ€‚_c˜eaŸv`˜u]”gjœie˜usoxŠg‚d‰n}ˆlr‡aoŠfvŽh…oŒ†sŒƒk}gxƒr|…w}„tt‡n‚”q€šrt”ex‰h|…m€„k„ysy}o~‰px…vs‰pvƒxlrsoqll~ug{qm|po‹h{Šqxtszj{tm{wrnvnsxwrqyrr~pxwy{vq€{w|wvŠvrŠos‰|v‡ƒy˜l™‰a˜•^Œ^˜`”Œg•’\š‰[£‘c ”nœg–m”‘m†˜nˆy‡‡|Ž}‚‹x{™rœ„t |rŸwtšrv”f|Šks‰lq„gs|`w‚dn|mrwersljvequd}|czvpukmk`|]d†]`|]azYc„cjbmsfru[u€NqOgIgvQZzP[yIWoK[uMYwKdwBoxEjoKbpMcwVhrOakQ[oMTvK^yJ\Rk}TpsLtzK}qMruPowLfq\k{ZxvXz€T}wTyL‚~O‡}Y|ƒS‚yZz^~|Ty|PvoTulLrrMrmYuZh^k]vlb~nY„iPzqTŠtYˆla|kXj_„njzvcwxd~s\‡qWˆzZ‰~Nˆ{O†|M|tQ…oTiL†`G‘aKŽ_M”iBšdI”pG™eR•]U˜ZX’]X‘\Už[J¥[I¤g:¦f0©b-¢f,ªm5°j5°s7»v-µk4¶j9¬b:§_:¨Y0ªd>£e;­h4¯`2¯d;§Y8ŸYB§bI²bU±lT©mZ¬cO§iR²cS¨__¯j`µtg­po¦x~¢rœn„›z„£~„¡v|—}“}z–us’y{ž€vŸwy£‚r£„zªˆx®‚x¦‡q©ƒb ‚b¡o§uw¤os¦jd¤mf¢tf¦ll¦dc«e^´l`«re¬ri«`eªbb `mšoršnw›hr¤pvœ€}”~y|s€}gdŸr]¨mhšr\›q_š`j‹qo“hz†ip’ntmolo‡hu‚q{ˆu„x‡Ždˆm‡q€gŠ€m„}vŽuw”mšfƒ›l„‡aƒc~ynw…hy~nz{ts‚ou‚ssŠsq~nvvyq|nawnkzjk‘duŽqx€itycqubvxiwvxvwqqwwk{xqy|vxqyjx€o…ƒr‹opŠli‹qo“qšŠgŽ‰j”‹V’‹^š‰Y˜Š_™‰`^–aœ‘f™”k––h‹ŸsŠ§l…o“ˆ|ƒ‡{z™u”}–qsšz| h‘lpb€gx‡a}}hvynp~_wokzjemtgl€c}nnqhp}fk€nd€di‹kb€gd€Xn|gr|gjqbwz`t€Nh~KgxI_oJhpPYuUVzOasSWjN_u?jsMjqIhjJgkRYiQdvN]nHUvLYM]vJ_|ThmSmnJ}lHyxHmvJz~St|Y}~NƒzUsxN}vS{W„sV|tS‚rYwnY}t\yf]~v^ygUn]~ocxndzqf‚cdƒkc…iUxr[vqX{aalbgdm\‚{auvp|u^tja€zQˆrSŠ}S„|LŠxEmU‰jV€_Nƒ^T‹YQ]H•h@”m>qF•_H‹iJWUŽXP_FžTJŸ[B¥oF«e7 a1¦^5¬b-°c,¹d8³j0¬b-°Z7¨X+¤S'§_,ªU.«W9°[2¶Y1§`7°^0®]=œiCªeS¯bG¥eL¢eP¯bQ«nV²nU­l]£qa©diŸe{¤kt¢v}œo€ u€šu{˜y|t|•uƒ•w~—usžpx¥s{žw{›†{¤wiª…l¤„a sp©€p­vv­ez©nl©pi¢j`£de£bl®`e§pm®ah¯hp¥]l«\yždr™^~žcz§fz©ct–yvœ~}yt’v„ma­v`¡k_§oa£hnhndzot’ov—rtvl‘hrˆh‚‡s‚‰oŽˆrŒo„“h†”f‚—g‹‰hŠŽt•j…•j|a}“g–d|fx|j|_~„ixrrytwuuqq€nlztesliskmwmhŒnp‹`}…hƒdqlv€gr|nwx{~pnzrlo~rz€jvsm„rg„‚kˆw~qo‹{i’wr—{o“Ž]—Œ[˜‹c“Š^›‘^’•f”˜g••j ‘sŸšo’“mš¢s”¤zŽ“q“p•›xŒ™tŠ¡z~uœrv›kr–fwže}“`ƒg}…_ŠesŠft}dumtrpr}huyp}piyegxmp„jl|qc€gfvda}[bw]qnctndoYqt`kmVnmUfuIc{FbqP]oPbnI`iK[cH]hTmmTccOafG^mNZzJdtP^vNdUcyNa~IdsKyvP}xT}uP|}PuzOsUQ~SyYvySs|\wr^qo^{o^tmX|f`„d_€k`zie„me{bg€eg|f\_^‡k[„fbƒeicdjn|fkwkk|ujupnpwnwk`vi_}eQ~qR~S€}P‹uLŠjH‚_X„dZ‹iS‘_O‡]G‰fM‘jQeC_DŽeJˆZI[HœaO™^DšjD§iB¤n?¦c/ª_1£U+¯`2²^/®Z/²b(¹T(®Q,·X(¯_&§\*¥T'·V)ºU.·Z)®a1¨d> iE kP§cK°fL§eF§eG®nWµh^ªid®gi¦bi©kp¨nx«wƒ£q‚ sŸv¡sq–ls•hw•q…¢kx£qs¢zw•{v—‚syfŸ|k¢yfž~e¦rk®otªho¨bqžci¤`d¨\c°cn¦hr¢mc®ae¨hs¯`}´Z€¬X~­_}¡i¨`¬cv¥jx“p{”pw˜s€ie h^Ÿim¨io¤ukœm~“v€”yy{r™voŽum˜ar‰p}˜hu–v‚{Ž‘uŠ—oˆ_‡’b’”`•iŽo‘o}Ÿd€”cƒh€‚_uƒerˆ_{…^s|qw~ov|go~cnzgjqslyirzroƒqlŠ]}‹bv‡ao…joyju`x‚esum„jt†oƒ†`wwlvn‹‚ok…†{}yt‡x‘usŒ…n‹‡fƒW•†[ŸŠf¢Šb¡”f”bœŽi˜•r—‘yš‘m›˜z©y‘¥|Ž£p–•}…›}§s}œv{›wr—kžh‡›jŒ’m‚—[Š^€‰gy‚bw‡h€|mzxs}zjvyh{fb†lq~dsz`rzeqzcon\orfoifeuV`kdp~`en]ewakx\\rWcnWbdN]gJeeRhcNfcWicLefNgsWapSYkQUrIdySfqTexUkk]mtTdwKmnKnvLyzIk}MztHs‡T|~Kt‰RqŠQn‚Sx{_l{a|mR€pW}lZƒX`ˆha‚a[ylf…d_`av\avY_ƒcZ‰X`~Za{[h‡_fiarnfyugvlb~wjnnitq_|d\~m_xnU~sZ{QˆjF“tPlV‚kW‹fO—dQ—_V‹fQ˜bJcIŠ]Gœ]N”WT‘^Fž_EŸ`D–f@¨i;¦fA Z:­W5¨W4¨P'´Q*ªX$²Q/¶R*¬V °Q*¸\*¶]­V#¸V(»K2¾^6·d8³_;«]:§\?§`J¶kP·jD¨mZ©vR¥o[§ob¯jh¨boªdl¹ey²op¢k}£jy zu¡nr—tz›v~›zŠ˜s†§s}“ju˜sz wg¤xqœvežvqžqo¨hmžfh§el¥pf©`f¡Ye¨\l¯ho¢gl°ku¬dr©ar²a†°Y¤\‡¢f‚¦f~b„­bˆ¤h r~¡n€Ÿohh¯kbªwm¡rvŸz€£t†—p€”v‚“v„ wz›rv—ju’c}’mt›q~t~•rhŽaŒ‹d_‘a•‰o–”k“s‚‹mŽc{Œe{‰kval…dsyfqwmw}cr}dh{dmxlp‚ni„st}ht€]v†ax†bwƒayhr|bt|a|‚myƒb|ƒb†ŠdŠŒi†…fŒ‹q†rƒo…qzzv~jŽj‚fŽyd”~c§}]«k§…h—…m”Žl—’n¡Œuž—|–šs›£p‘Ÿu˜¢|‹¥r©n‰Ÿo‹¡oz¨nz¤rŠ£hˆ›iŽšj‹–h‹Œ`€Œb~d††g}~o|xwmmzkgƒokop}lgw`esdqpbot\on`ir_bkZilTbv_f€Z_yaho]_vTbeOYdX[dYggSalQkdTjiW]iT[tKdsPYnO^uVep\fyUqk[qj]zl\rqMpfIokMvmPkvQp{Vy€I~ŒUw‰Zo\o\i\qyT}lVwhX„bfƒZc|Y_‚`f„ikzfarf\xXdyQ[[`„Vdƒ_d†dc…_cubovgklnksserxfynjvm\vh_j[|nZ…kQ„jNeG“pP“oJcOŒjWaVšcPš`M—TK—YT›YQšSQ˜QS›]Kš[FœfO¤fM›[D¨bH§[>±N@¬P1´V7­J-¬V-±Q(½R,»R¸Q²Q$¶R!¹Y%¼U1·O1¹Q7¹X;¸^?®_5­i5´dC·kMµbM°gX©p]¯o_°oa·nb´jq¯iy¹hs³n{±cs®jmªrt¦yq£ru¦uˆŸrŠžmŠ›i{—wt–utxt ol•ni›skœgg™go¢nb¡oa i\¥bg¢Wa§[d©ae¨fh¥av±^w¯X‡¶V‡©X§ZŠ [€¨b€«k‹ fŠœhƒ¢v‚¦yƒ˜x„sg¤gl­vlœrq¨{t–pvnz–y~–nœv}p{–`q‘h}™o™wuŸuyœl˜m”˜h•h‘˜d™Ža†o‹šu–ŸsŽ™f{•jx‹qy‰ku‰lw‚itdl~anxdvƒcq~jstnwdikuxeyvjtfxybx†]}†ft‹]ugy‘fpu‚Œp‰“tŒŽq†p„ˆjŒŠo‰ˆpŒ‚d‰lŠ„f…„mf‡c”ˆh£}f¤’b ‹g¦‡q¥—f¥—w•r›ž|—›x§¨w ¢s˜›l™¤sŠ¬o‹§s’§q‰Ÿg‚ªoˆa‡¥`‰˜_‹—^Ž–Z‰‰eŠˆl‡€k{†ksg{w_€ma…xZ„iaom\xi\wjdofaw_qzcfqmio`jsifthajmWwc]rajyTgoOl\Wb_TbsLfaUaeUYaXYePUf\YnQXiWSqUZlPamTpm`qf]ueYrfLiuLltPvkVuwKntMz{Ev‚QzOk†Sj|To]wwO}oU{eV‚X`|aczZ\ck…acxa[wae€c[€\WxNXƒ__^p†dbed[j{hnstnzxl„gb|igig{dZ…cc‚kRŠbVgIƒoM•n]ŽlY†lO`RŠ[Z’\T–aVŸcX™_TVX ]M§]W¤_T—fJžhM™gIŸ\C«XD§N>«X:ªG,«C1¡R)©T,§R&°O(¹K+ºS%±G½O ¬M'­N2µM2ºN5½T@°R=¬b2¬ZB³^<»ZG½fM±aY­mU°]f®ed±ik­ge²pjÀohºesµ]u¶_|¹s~¤dr¡l€švx¡jŠ›gŠmv•j{˜nvœoy¢oo¤gr¦mk©mtž]r­gq¯b`¦b\±Th§]l³\m°Uq±Vg©Vk®Yy©S€¥Z‚¨Q®X‰¢^‰¤YŠ˜k†i‹›sže€›{†¢pŠhg°ll¦rq§vz¥ww§tw˜uq”uziqˆiqkw¡gv¡my¤k|¤v{¡zk‡œd—cfœ”j“•iˆ˜h•¢ro„“o‚n|†lwŒl€‰kƒzfvƒdr}hoouwl}|h‚sgt|ipyaqvZw}fy…l}}r‚|j|}f‚Ž\y^x‘or’{x™u~—n…Šx—†uq–e…‘h‡Œg‰’f””i˜Œc”Œjž‹i €d¤ˆhªŒe®‹c­Žm°›m¦™l›œr›˜uš¢u¡§f“©c‘¤kŽžt‹¤rŽžo‘¨i•§m‡ p†§j jŽšY‰c”ˆcŒd†dˆcˆ„g~}i…~_‚~UƒyWynbuibnj_hkYnmaxrkwosrtlnnqiermkbvi_nehplmlbnm^nePpnXioRgfQaeVaa\UkQXkZZd\Vf^VfTYmRejYew_srWkrU`kObkUmkSsgMzjPtwQ~wQz{MrQvv[ryZysMtnOu]T]]rZ`sbQzgV^a~V]ƒZ\ˆaf‚]^zO\yP\[_~`k‡\e‹Y]‚\Ztghyrdlcy^h‚`\„a]xqa|dW‰aV’jYgN“mP‰h[pOgNVQŽU[Š^MŽbO•^O›d_¢Z_¡`W¥VK¦XKžZHžaH¡^G¬]DªW=¡QFªQ@¡C2¤C.¢R*«Q(®V#µN,²K0°C&¹D ±@)®I6ºG1¹D=®@E´HCªV:ªX9¶O8²OE·RC¹^P¹^J´YO»dW·^k·_g·lb¿inºji¼luÀ^|µaƒ·f~±]u¤d{¦c„¦q† a€˜b}•bx•o{“iz™ls¥kk¨qi¥og«`o¥Tf°WfµOb®Ua¸Sbµ[l¶[xªQv®Rs Qq¨Uv¤Xt©azµ^ˆ®^„žV‚›h‰–j‹˜fŽ£dˆ¤q‰¡yqe«is¦oh°~r²rxªst™wy–w…vqœwpšvp™kv›sƒªi‡ n€¡}ˆn†e‘m˜g’œe^‰Žk’”gŒ¢m„›d“^zf‚Œp€kx}at€`vis~s}ym{prhrl}w_‚€\|z\xj‹l|ylx…hyŠ`zŽ\{™dz‘s†”j’v‡‰{˜‹oˆy…p~›iŽ•i‘]Ž_’˜d’‘_”…eŸƒp­Œd¦ˆb³‰a¥Œ`¦ a­¢q §pžšhŸ­g©k£j¦d‹œx•¢qˆŸi”¢f”©mŠ¨d‰š_‡–d‹SŠP„]Tƒƒf‚}X‡ƒ\|†`†€]€yS{yQwnWvg_bsUeoZjobjmfk{gwofizldhkshpmr_slcrhhvmpi`liTmjL^nO_eQc_TTdSY]Y`]^QlXOh[VgYbaUfpUacJsoVinH[ePneEelOmgH}gDreLrfXwrYwQl}R}z^rs]|vRvh^xkVu[PjaPyWW„T^ƒOaˆU]~T^ŒO`ŠR[‡Vc}ZhŒ\i…[b‰Na‚^hƒZqvZbx^hƒ^W‰j^~gXƒb`„i^€a]ŽkUn]gUŽlYm\_O›bT O\’RU—_[™^RiV™]Y¢iZ¢\K¦SC¥SN¥\P«eHªZH¥\H QP›JB¤FB R/¢L1¦V/´^"ªN%¬U(»J+µA/²K3°L<´L1·K@¾EG¸OC»T?®W<®J8²N>¶QG´UH²IU²R[²S[¿ah¾Zn·lcÁoaÃkfÂ]r·[ÁWyÂf…¶ct¦k‚®o}£fŠ£gz¥h„¨hƒj€¡qrœps¢gk oh®cl¹jn®ao­Zf²Qg³^p³_k¹^p°Wm¨Kv®I{©PwªVo¤_q§[u¬X} \„¥Sy¤f„•l…œb‰—_ƒ›h t‘ds¦mq©kq²ym­~o¥z}¦z…¨w‚ž}s©}t§~y¡ot¢h~›rˆ£n‡¬n£u‹¢j‰’a–‹]””\”Z“’]‘—h›h†Ž\‹]’bˆm‚“g}†bŠdt‚g}…qƒzh€tl‰zl‚uj…xb‚r]~{a†}_‰`‚‰dƒˆg^~—g†h|šo€g’’h—t””t”oˆ™u…¡n‹žfŸ[‹—^‡ˆ[’‰[ ~c ƒa¬‚i±^­—^©›_±œd¯¡i®¤]«ªhª«eŸ¬`¤¥d—žf’™j¤d’§k“¥\™¥\¥\”˜SŽšZ†•V‡‰MŠŠNƒ…S€[„‹N„R~ˆXƒ€Uz‚NwRorOjyRdpM`tM`yMi}XpxSk{^g{nlvponhqweqrmwtmrntn^qvZmkNcfS[_HWcNVdZ^^[[^\RgMTiTWfOXaPViRekUbkGlr¸RC±IG³M<§KD¬@D®=E³FM·HP¹Ja¾Pb½[e¾XjÇfoÑ\rÊ_jÉWrºRz¿Z~¿Z|¶`y®f|«b‚®g‡²dˆ³i}±_‡¤e€¢r€žmvml¥jn²fkµdnµak´Ov¿Tw¼]r¶Up¶^p¯]g­Vm®Qo£G{°H€¬Ux®S€°Q{¡]t ]|]‹›_‰”f€’`ƒœn†™r‹kq°cq²lk²pw¥npªvq­zsŸs{œo}©m¯wn dƒ§r¤rƒªnˆ¤q—kˆ¤l„Ÿ_Ž™aŠX“žT’cŒ“q¥b’œV‚˜`„›\z^}’jƒ“awƒZtjƒ}oˆ†^}uh€uiŒ†d€b|yW€Wx‡Q‚„b‘`ˆ‹az‹g‹‘^ƒš_‡hŒ¡d‡ mŽ•{‹™{ˆ”j…£iŠ§n› bŒ¡j‹‘e—c–ša ‘cœŒa¤”f¸l±’_ª•X·˜^¸¥]®¨`©¥aŸ¢_Ÿ°g¥Y¡­f”¤a–¨XŽ¢W’¨b„¬YŽžY‡ Y˜›]‘—_‰”[‡‡[ƒ‹Q‚„TˆŒR‡ŒRq‹ZsKoŒIjJomLlnUlvShrMgnYbu_j‚T^yYachygjjalm`mflsmkobll]qhVppXjlNgbPO]\VaVRcaLfU[sTWkRcgRVoXYeJanTecDafDlnMjiCmg@l^OgeTofYqeZkiXnbQsl]tkUniTrs[qkVxgXuXUvbR†]`ŒSd}V`uT[‚U`XqXmXq„U^‡\eŒUkUj‡Re‘Z\†\d…Xg~eTdF‡_S}YVˆWP‚R^ˆRb“X_”^_šbS‘\`—Y`¢`[šKcšYW£[R c\‹ZS•_VŸbJ§RG­OH®MI±ZF¤UB¶SJ®[F­GB­JM HB¬DC¸H5§H>¢O;§U1¶K4°O-¶N5¹@5¿H9¾IHÈJ=¼@C¾D=¹K=ÀB>½G<¸HD¯MA¹LG¯PQ®@[ÀPb¼]eºTfÏa`ÆXcÂ^k¹_rÇJpµY}¾S‚¸]v´Z{´g|´]Œ¹e€¼_~´[ˆ°lŒ°j…¢m} f}®Yz³[m±]x¹Xv´Mu­Vn²Ww¼Ws³Ws°Ss®Uy±UvM„ J…¸[‚¯S{¸O‚¥]w¬f}¤^Ž•^‡ Uƒ¡e~–hŽ«i“ju©fh±mtªf{¤lm©km©el¬m|¦s|¢uq«hy¢c‚ªi†¥eŠ«g“®m–¥jŽœh‡£`‡®U‘¨O“ŸW–gœ˜j—¤`Œª[ƒ¤dž]}Ÿ\‡—g‰‘`‚ŒZwb…ƒ_‚„W…y_„~[~ƒX|‡RƒŠ]z€W{…SŠ[~ŠY{”]}”b‰‰b‹Ž`’Y|c„£u„¢wŽ˜xŽ r“ j›¥a›¡fžžo›“p©˜l¦™p¤•b£—`¥”h­Že°˜`µ—T¹¢Y¶©b°¡e ¨d®Ÿb®¢d¢§U›ªO££X ¨Uš¢QŠ©_†¡`ˆ¢Y˜W‘“^‰ŒVŒU…ƒYƒ]ŠV‹•R†‰Kp„LpŽRp‡Qv…JoxQu~WjxSt|LoqSp}\_€Sg‡[_‚]Ypg^ohWpjajn_nmjco`[kdafkTifU^_VV[ZY\\Q\bZfVSmVVqV_jW^nUcgO`eTldJp`FbiSffIksFfoIk_Zn_biaXs]YtZ[ud[|mVkfKk^Qs`Tm\_tYW€\\€^Y…Pb„MfvJZuRa|Th„Hf„Mm‰Zg~YcxX`‚\iYcR\‡Xab]‡eT†_KWN‰^P‰U^ŠNZˆK]”XY˜]_—VZžWi \fŸM[£L`ŸX[¨ZT™dW–^SžWQ RSžLI¨IMªIQ¯IG°US°WP¯GI°FE£=EŸ>H­FAµA0«B2¥H8²U;±Q3ÀW@¿LA¼VC¼QI¼F;ÅA>Å=C»?B¸DF½>IÉJBÃGIÂAK¸GK·?]´F]»I\¼NiÈSlÆKaºMh¼YgÆZiÄQw¸L‚´Q}·VxÀX{®c«]ˆµ[†»W†À]†³c‡°b³ez®`u«W{®QªJv¦Jr®Co¬Gm«XxµX²Z~ºPx·Ry¯SužD¨Kz³T„½O¹J~³^ƒ­`† X‹›W•ŸR†ŸZ†¢]Œ¬b–et¨ev§_}¡\}©cxŸhj´ps¬nx£r{­s{³fy³c„¨\Œ¯g“¥d…¯k’ª`¯_°_“«U›¶O•¡U›­WŸ£k”œbŒœZ‡œc¨fŠ¤[~n†‹XŒŽa…”a…‰]’‹\…†i‹ƒbˆ„^~Z…ŠTŠŒ_}‰[…ŽQŠXˆ•e‹g„Žc˜c‚œaŽ eŽŸm r¢k‘¡jž›`—©ežžkšm› m«¢o¤‘iª•j­”f¡’n§›e±–c´Ÿe¬¢\´²Vª¦Q³§\¨ W©©P¨©R¦®Uª­R¥°OœL¥QžUšWŽŸ\”’SŠ–Uƒ‹W~ˆZŠ‰MZ…ŠN‚ŒSo’Sw’Sn‹ClŠPo€MdxYhtSpuR_~W_ƒf^‰W]‹be^_~mYqi^r_hwekitnhike^nbdbgn`]bcTacbV[XYk`^kcaeV\kSZ]_X`Y_]LggMmeIj_KjqRgoMbeIq_OjgWt\PnaXq^WtUYx[Uw[SocRpVOqPOsOSsZ\tZU}SY|T[†U[yISwP\TeuJlzFm|Gk‚SgyZg{a[\\„Zb‰Uai`…^TŠ]U‚`LŠOTƒU[ŽVb‹[X”S`–Q`¡JeªPb©Z_§I\®IX¢PVœYU¥RU˜QS§ZY£TO¬KF¨SU¨ES¶PI±WH¯QV¬KR²BC±DN¢C@©?;­J5©I7³A7©S8³O7ºJCÁK9¿K@ÃNGÃQD¹IB¸?F¶EBÆHR»;P¸GM½DBÇAB²AN¾AN¯K]¿CYÂE[ÌIkÑDf¼J`ÆOcÃUjÈUw½Wu¹Zm´NqÇSy´Q…²WŠ»[~¼a·\Ž¾\ˆ¿f…µ_}ÂWx¾Uu¹V{§Ss¥Lr¨>i·Iz¯Lv©Lx±T|°L|²Tp§Kt¦Ls°N¬MtºJt¸Q|«M†³[Ž¬aŽ›]”©aŽŸV‹¦^Š²Y–q«oz¨o{§by¤iu¥dp®d{·kw®czµl|¶]z½\³\‰§W¬V”¦XŠ®]Ž¦\–­R”µY™´V ¸Y¡¬`“¨Z•¥b†¥`‡¢Y¡b‡¡\‰˜cg–_i‹ƒb‰\…ˆa‰ƒc‰Y‚ŠTˆˆW‰‰XŽ€U†„O‡TˆŒb„…dˆˆf“i‹™`Žšg‰˜e‰¥r™ o Ÿa§Ÿg¬˜c¤¢c¡¢m¨§n©¢n¯™n«a«ži­šd© f¤ªc©«_¤¤W®«N¬¥KµTµŸS©¤M­¢O§¢W¦¤Q¥¦Q“žX‘aŽ£X™Y‹]†ŒT‡V‚ˆQ|ˆV}ŽP‚’Q[‚“Vy˜In”KkMt‘EpƒGd„Si}Tgz__~\V„_Y†Xb€_`bdkbmhyaeznaijeildaakdfmdf`ckg[eca[djWlg]nWa`We_Q^`YY]V[bYhiXffQddSdgJjhHjhOf]OlbMp[Mr`Ys\Xh\Zm[WpYXgP]fSPbRXkMWhJYkK^uQ_{PbTc‚R]{DZ|F^wKU{K]ƒTXMbƒZhƒW]ƒb_Š\ZeR‹eR…hLˆ`R‰[LNO‰TL‹QZŒS^W[—OW¤L_¨F_¯NV«Cd­Ia¦EcžK_¢VV£OR¥NU¯QJ¸SH¯KM®J[¸NW±UO³LN¶HMµLIµIF®EC¹D;´L8´L9±I5­JD­FBµH@¸SAÄK>ÃPIÇTN¾FM½?U½CSÉFQÃ=Gºh‰Hh}Lf…N^ƒRf^\Š\S‚d_~c[zc^†i]†\\zc\id`fbjYhc`_ejeg\Zc^`ZVbdW^jWTjcTka`bUfcM^aQa^[icRa\PciZ\gVe^BefBmbHs\UnYRmfVv`_u^Sj^VuZ^l_Vga^jVTjU\AUvI[mAcoKV‡Zf|LaˆS\zGb|KY‡Ni‰HiˆUkMa‡L[ŽUT†^P‹iZ‡cPˆZZ…`]}[Z[LWPŒ\SˆK\ŠWQˆ]]VbžP\¢GUªUUžQV¬DZŸOg˜Lb–LQ¡RI©TH§KQ²LH®JF©@U«JI­ET²ILºGJ°GF¬?L±C<«K?­B8¥Q;±E0´K>³K8·D;¿T?ÅENÁCQÈRRºLL¼MGÆHUÇ@KÂDBÊDB¸AE·F>¼DNÁ:F½FT¾IW¼<^ÅHbÅGX¾T\ÀQg¶MfºIj³Mo¸Rs¸Nt¹Yv¼\r·S€¨\y³Z®[€²Sƒ¼Y‡Æ]¾Lt¶X|¶Wp¸So¼Lj²Cs±=zÁLt°Ds¹Rz¸S·GuµVªS}¬NzªSu¯T³N…²L‚©S„£Y˜[ˆ§dˆª^’§g•¢i•oz«s~£oƒ§b|¦cŸou¢t¤kŸeƒ¡iy¨h¨a~§]„¯R‰°Lˆ§G­L§Y˜¦V›¯]Ž¦gœ©eŸ«oœ¥kž¯jš¨`•Ÿj”ši‚šg|¡YœS‚™^““]…“]‚•^…‘_‰g‰Že‰ƒ`‰S„•_‚—Z‚‡O‹N†˜P‚ŒSƒ‹_„ˆZ€‹[`šœe¡Ÿe˜`Ÿ›fžl¨œe¯Z®•_°œZ§žd¬§g¥ž`¨žh¬˜n¥Ÿh¨˜h©œ_¥§]²¢\«£_±¡T¢”U¢•QªQ¦•Z¢–Vž—N™ŸQ–—W—”U›–Y—“WžTˆa‰ŽX‹‹]Š[ƒ‘Uw‘[p†Ou‡Fs„Dy€>n~HiŠJ`ˆV^†QcŠMl†UiŒb[‚`f€`exb`}]Z}dZph_gbX_k]XedVX`daagYY^[NZeTQ[YL]mXYlWX_Tca\edS`cOkW[d^Vi`WgWQ]^J][BlZHlWLz_X~bbz]_qbZp[ThUTk`Pw]TvW_wVUFPsE^uB[xP^‚R\†SWˆJ^~SZ€Lc‚Ga‹KfVo‡QfZcŠRX„WUŠdTŠYVy]\xbTcTƒjR‚`TŠXRQOJ[ŠRXŒJ[ŸJX¡LZ•Xa˜ScžJcšGY˜L\O]•LO›OK¡CF¡DH§>J7L¢@J«HX¹MU²JGµ:@³C;§>D£F:ªH@ŸB8¢E8±D2±F7·O:¾FIÆLFÁBM½NR¼LI¹BIÂFLÈGOÄHDÂMM¾JI·PÈCXÃ=T¼JV¹GZ»J`±Q_ºGf±Jk¨En­Pv¶Pl´SoªTm­Y{®Ut­T}¬Ry²S}ÀV¿Y{ºMq³Qu¹Kq½LvµQn³In²G¸Bƒ¼F~ºM¬Nx­By´Qp­OsªHo¶Rv©Pu¥O¨MƒªZƒžX„›Y‰œT¤WŸT–©b•u‰±m‰¤k…¬`{«b¬msžb†£d„šp„¤f{¦]‚¦f{²V‚²V~±KŠ¬A‹ªN©^•¥Y¥Yš°e«c¨¬j›¢nŸ«k›­]‘ b•¥fŠb“_‡“g…šaˆŽe„ˆm‡•k~—\„…]‹’^Ž’\‚™Rƒ”R‹ŽQ|LŽMˆ˜L•O€’Sˆ]Š‰^—’i£Ÿi˜Ÿa¢šc¨¥]°¢d¬—b§—`´¥`±¦^¥¡Z ®hªd§—k¦št©“mž‘hª¡b±—`ª¡bµ¥X¤š^ž”c£—Qª–MŽK£‘M¤™W••X›™Z“Ÿ\’–V——X™™ZŠžiŠ‘Z‡…L„ŠH{‹L{’P„Sy€L€Gn|VvyWmzQb‚TZ~Nb‚JlˆNa`e|ahvS`yX\r\]v[Unlb_c\ejYV`Y]QZR_WSTPZRYS]NSeYXcdQZeQg`VagYflUlb[bUSc\_h_SiaG`WRiUTnULqXXpa[XTy\X~Q\t\W{^[va^nP[qT[~EW€NU‚?XI`zK`}G^|U^ŠTh„JYTkƒWaŽSj„HoŽFnŠKcMP]Z€cW[XaZX[€\Z~XS‚^a}P[„XYŒYR†P[™\UY[”MX“TcŸHd”Qj Q\’RP”MT‘TP•NIšML¨HJŸFGŸIH¡IN£=VµMR´=Hµ4R¨>G³7I¦:L¨>P ME¨DJ¨PF°R@»IL´KM´DQÂ@Q½AJ¶NUÄEBËFG¼HAÃPDÆKOÂLQ¸=QÇ@Jº:TÅJQÂHMÀT¼EYÁFV¿JYºR[³Hk®Dk¹Nj¶[t¬Ww­Ty¥Qz§_‚¯^~¨R…­T‚²N|·Kƒ½HzµL{¬H€²P†­[‹¶[„¸^~ÂR}ÄT}¼DÆF„¾DŒ¾Eˆ®;Š­<†°G{²At¯Lx´N„¬P€²Q|¯I¤X}¨WŸ^†¤g†¡dš¤ižcŠ±p«`ˆ«p|¬n¬nˆ¨b†žhŒž_’ž[„¦cŠ¬X†«R|¢[Š­Yƒ©M¥[‰ Q—”S”œQŽ«e› l•¬iŸ¥e›Ÿdš­g–¥dŠe„¢pyowšgƒV‚ay›f~–b‹a—h€Ž[†ž`’•[„ Y‚œXƒŽK€—]ŒŒR‡–Wz†Yƒ‡e„Ž`›XŸZ™‘U–žX¥§S©Ÿe¬ t¨ªb¬¢h¦[¥«b¤_¢©\§™h“h‘lŸ—i°V©”W´œTŸ]›šažš^¨™_ž›K›”Pš‰J””[ O››_œ k•g—b— b€¡`€‘T‡—T†’D{J~ŽPx|FƒNv„WqUm}`hxUf{`_Z\~Q`T]ƒV`|Ri{UfiR[fUedXUbQUbSTed[]b[^aLQQTQTJUOGK`OGd^Sc]S]ZU`iO]iTbfZ`gXhjLhWLrSEh^LcVVjTXaZTg_YrZXn`UxWTy[MrUSw\Xq]X|P_xEW{GS}TM€JL€HJ„GUS`„M`ŠTd’WkJ_ŒV`ŽChŒU^•U[’RSPPŒZVVY†cJyXH~YT}XO~]Z~P[€U]‰U^†__“dI•f]Šj_•_ZœRVšN\¢YY¡PR™MI›MM˜HS LT˜9M IE—BN§AN¨E±GS¹KP¼ES»QYºATÀAP¾HF¼PT½H[¶URºSWÃHbÂH\¹Pn°Hs­Hp¯Hj«JoªNu§Jw±S}°X† Mˆ¨S§Kˆ¯M‡¬O€¨C…®M}»M‡¯V‚¹Y¶L{Á[ÆI~¿EŽµH‡¿F•°Gˆ°?ŠºA†³K|¬Pˆ±Sx¨Zµ`ƒ¯Q‰¬R±W‹·f‰µh‹¬h’±`šœo£eš¢h˜£a‰­eˆ¬hŠªm–£r”§g•¦[¡WŽ¦\¨Z|¬]z¨O…«[ŒžV†œ[ŒŸT—”R¡Y•¢]• q l¥dŸ¨rš¤t‰¤q} izžd€žjx›h€¡\ƒ¡d~”\}‘Sy–Z„›d’g‹“`•Y ^šS~˜S€•U’S’[‡‹X}c‚‘]„‘X‘›Z™šQ’˜V–œ]¢¥k§n£¬qœ b¢˜_•]¥¢a¡§Xª¡^¤–` •d¤e¯›V®•V¯ŽV®\£–Z¥S¢˜JœO™’T T Ž\ XŸš]Ÿ˜l–eš™[’•m‹—m{š_€˜Z€”PzC|ˆ>{…Hy{Vo€Zqz[l~_cz^T|aV‰PV{P_zT\vT_zSbqSfg`[o]alY`nNb_Q]cYYWaPWaJ\SGUUHMcOIbOO_SU`XVb_YZZPYfVWdKihToeMv]St[Hh^HfXPb`Yg\[vW_tcUn^QndQpdSsdMvlYoc[tbO„OO‚HS‚NO†VL‹YR”\R‹MRˆV[ŒNc„IhŒM^DY‰HY—VP–RV‘WSW\„VX…aS}VQ†[K„bI…_S}]N‚US†]`‹^cX`‹[Q’eRe`W[–VZ¢QWŸU[¥LT›FKšAHHI›GO£9OšFCœFB DHªAQ©9T¤6G£7O¢8M¤GI¤HP™KKžJF–RJ›LK›KU¬PS´CM¼?Q¾F]¹C^¶@T»MW·BP²>T¯CN­IN­MN´LU´DV¾DN»KFÄKJÄHQ½SZºU_¹Md·Ki¼Na½Aj­Ds¬?k´IhµKn¦R¬PŽ¨KŸK†G¨N¤Gˆ B~§Iƒ²K{·J}¶C‡¹I‚ÅY‚ÇZ{ÃPzÇR€¿V·J“¸E½Cƒ¹Pˆ¶MŠ¸R‚³Q‚¯Y±d…¯b•¶W”Á]”»e‹ºjŽ¶f§^¤d™^“mœl–­i®d•«qž¨l› c”¤k’­b›¬Q†°]ŠªMˆ°LˆªQƒ£Z‡£YŠ\—‘U›ž_‰•a‡Ÿp„dŽ¢d£˜ge¡c„§jm‚›oy©b¢kx§e{˜b€“Z†Y„ŸX†•ca{¢`†šU†¢Lvš^‡’X“X•‹T“~bˆa…•Y‰ZŽ”NŽšX‹_ž¢Z™¡[š jŸ¤a¦¦g¥”i¦ž]£¡S ža°šZ¨’d¨‘]¡•b°a©’U¯‡^«“d¦ŽS¡•X©ŽX¢•S¤’ZœƒV¥ŒVž‹\™™_–‹m•j‰‘h•–n†”nv\}™dr˜NuˆGn‡Th‹WtXe\oˆVn~Y[~]Uƒi[„TYJb}X[€S_pNghKfcV_kb]aRhaVeXT[bRLZ]OPZE\Z@KWJNfPO`KMcQPbOVgPSiSV]]K[eQ]fMt`Fs_Vs[WjZUcaQmUSn^XwhPg^Pk^SsgOlbRwaOp_KsaZycSwdN„]R…QJ„_F‘[RŠMQ‡GN‘NY–GX’T[“R\’L[…UOWW™VX™^N–bQ‰^PkOƒfZ…WQ|YKzeZ†eU|bT‰b_…^]Š]`—ZK”]V–^T˜VV‰P[“PU¥V^£NK£IJ•ND˜BM¡GJ¡4G¨@@¡HE£AL¤8WŸ@Q›>R£¡E‚­E‰³S‡±T~½U‰½M†ÃU‹ÉO‚ÅX{ÅNƒÆOŠ°K½Q‚¼P€¸S…¶P‘ÁTŒ±d•·`‘²b‹ºfµg’Ã^—¼hµjšµh’±cœ±Z”]Ÿ™h¢n «pš©r—°h¡¯f—²p™§i”¡b˜¤Y”§S‹«[Š©W‘ K›¤N”˜P—V˜_‰–k‰p‚˜e†—r””q—™k•œb¡\Œ¨g|¦c„ c‚«^­iy gu£h~šc’a•]‰œV•_—Y‚£\|›U}•a†•\Œ‹R‰QŽ[ˆY‹‹^’ƒZ•Š[œŠY‘‘Y›S”™YŸ¨_«¦a¯©g©ž]©—]§–_°•]¬”U®V¤[´T²‹^¨„`¯Žf«Že«•a¨‘XªŽQ ’[ž‰^›~[£„a‰a¤‘aœ‰f“d‘‰e‰“_ŠŽg|ˆkz‡drŠ^w‚Ql…Zn‹baa^_iŽ`fcY’lT„gZ‡fT‡UY|MWrTTvNXySblZllVg\^b[]W[ZZ_VKX_NV[KTYQR^GOjFNeSQnOKeOMaNSiORhYH_[LkUSgZLqdRs\Vi^QjZVnSWrXXsgSkfNmgYucYogNniRjmStaRseUvjY~gV_QŠ`IUHIUJP’EQ–PT”X]“OZ‹Z]VR’VR•[T˜\TlQ‘nRjZ„]V]Q|_Qe[Š`b…jYŽa`…hb‘lV’aT]T“_VWMYOšTU™JS£IV¢DL¦FMžCH¥CDšT©6\«;g´>]¶9d²A^µGdº>c´CY¬CYµATµCP³?MºBKºHR¾MK½NQ»KS¯MR©SM©RX±KVµGb¬>a¬El£=g©Fl£Mm P}¥D}œI‰œF“G‚‘Ež@¬>Š«LŠ¯R€±L€½M¿S¿Y¾NŠ¿RÄN‰¶L·Jˆ¼VÁ[†»VÂ]‰ÂbŽºf˜±_•·f“³d¿j¼j™¾m˜µkœ¯d±b’¯a•b¡cš©mšªuš¯lš°n££wœ¦pªvŒ§`—Ÿe‘¨_Š¢[ˆ©P‘¤W˜˜C——[•”`£—Zoˆ’_Žk—™nžžq¤g•›b”§ežot›oƒ©r¢a{¨ds•lƒŸ`{a–b‚¦d‰¡Y¡_‚©Z‚¤Xˆ¦UwžX–W‚š^„ŽXŒ~_‰W‚“Vƒ’N˜—Y‘–P˜œ]™T’¥V¢œT¥¢d³œf²˜X¬“U¶žP§’T­‡X®T«N¢‘I¶V¯‚]´Žh©•]§R©–Y©‹U©ZŸ…b ‘d¨‚_§Z‘Œf’ˆ^ŒZ–f‚‹Y}_ƒ†ixdsUv†QqwT_„fWY^c^ƒeg``‡bPj`„aWˆYMu`]wV[mXapZ]i_\gZgUYbTTNSPU][IYQHOYTDaGOWGGZNJlQPbPVcSIdUJ_NSfNSbXOn_KkUQrdUsh[u]UgYVvRNnXV|[OpVS|aVx\_tXUq[Vm^WnaXvj[}jS‰[RƒfD†TT–HE“LI„MT•QO‰SL…ZR†ZR_UŽ`K’dKWL˜cY™cQŽganT’l]Œg\‹^S‰[]Š]d~h\{adŒqb[V„]O]T‹^]_]–^XXS•OUJQ“BLœKEšAF–=@’7N”6D—>D¢2W©?K¦DJ¨W1LŸ5P;UœCZŸEe˜Hb’=b¦IZª7T§9[¥K^´I\µ8i±D^­Ec³Bgº>^¹9S®EU¹GZ¯JP±CL·CS¾EYÃ>[¨BT«N]©E`©Nc²S^­HX©Q˜KJŸHO¨;U£3W™Z¤?b I\¤Cc¯EgµEm´Ge²F]¯9Y­Cb®@Zº=R¶KX¯>T¯@V¼?\·ŽªE“²S“¯Q‚«KŒ°K­JŒ­M‚­Oƒ»Q‚ÂLŽ¼W‘°VŽµY~³XŒ»]ˆ¸]”²U˜±[¢¹bœ³n˜³h¶p—¯p‘­f¤µe¥¶h ¦i¢«^ ®\X¨žU c¦©e˜µa“«l“¥m—v’ j’¥l•c•ž_•¨\•¬`‘ªO’¢Pž^¤¤\©™c¦™b™›_¢–f¢›p¡™kœ¢rŒ™oŽ¦k‚£i€ o|–vsžg|šebt›aƒ“g‡¥n„ j†žkŽžg‚¢^ˆ«_…žY}¢X†”aˆ‘_œcŒˆi€–f†\ˆSˆ•R‰¡TœQ•›H›«Q­¬XµŸT¯–W±Rª”T±“N¯‰L¯—P´…A²‚H¥ŠJ¯’U¬“Y«“S¯‹`­•a¯•Q¦ŠWªŒ`¢„b©[¥c•Œeˆ[Œ‚f—’[•„[”‚_“R}“]vˆVo‰Qf†X`„Zf†\Y‰hS€iU†[T\^„_P‡iS‡eS{l_uXVlaSk[de\VkbYVSQQTRMZXHPOP^PSULTK[@VZN^OJaO?jHJgPL`WObWHoKJlZDuMJj]Ujb`vaXo`NoXUkWSr\[v\Rn`_€QZsUSMV~YUy[ZwRZ|_P‚YR†NK‡`C„^A‚ZIHUŒFTŒQKŠKO†OAˆ_I|YL^N‡mR‘_JšbEŸbU–cQ”pW‘fXˆaP‘m[ˆ[ZS^‹^Y{gaƒg[’jXŠcQ~aRTa•V]SRYM”MJ‹VFSM‹J?KIJE“JG‘HMW˜7[›:S 6V•9YŸG`=ZC]C_IV”EU˜HbœLX¤Jb¥Ae¦>aªD^«<`µXŽ@O’EVš>[™CW“Cc˜C]Œ>_šAe˜FY‘MX˜Qa’J`œI\©Kg¦y­Fy¦B|¨H}§J~šL˜B‹•<‚›?ˆ J•­P‘²L·SŒ¹^’®Y“ªX‹®K„¶Mƒ¶P‰°R¨]Š«WŠ¥[…§g‡ªa“¯f•´Yª]¢«`¥¦fœ£bœžZ™c©fª¥e¥¢c ¯d¤­`™¬P”X¤¢Vž«V™ž[š­a˜¬kš¦b£«p§±s ­p— m‘¥]™¯dŸe¡©cž¢^ žXž£W›•P¡R¡«V©¦]£š\¢šlŸ–q™m’žfƒ¢h}œuyœjt“g~“i†•cƒ–hx¨n†©l~ªq„›rz£l‰œg”eƒ›e‹§gˆ¥h’ hŒ˜\€ŽW€–i£d‡šN”™[’˜Rš“U˜V¡žP­—HµœL±›RµL¼ˆX°šX¯O¸ŠK®…C·…E´ˆJ ˜W£S¥^­‹N¨‘S¤†R¦†]ª_©€d£W¡~h–€^‹‚h”…Z—d’Z€\’[‚…X{…bzŽ]o‡\bƒTdˆ_f…`Z‚pUzhN‡eO}cR]V]^zgWybci]]qd]f\fRaZT\]U]UTjTP`WL\QMbSMZQO_QGQM=_PAhQI_RDhNU`YNmNSbPLlMNq[ZlOMvTOl]Tg\QrfWf`TbeOiQR|YH~MGŠUK}MUyKNƒVN{SG‚NN‡YMX@RK|ZR‰XIPN“FO‰U@PE“^B‚d?lG€kF‡cA“tPvP˜fM–gW‹iQ‹eUZO”]]ŽWX‡aXUX†eW™ZIŠVWŠTY’UR˜W_†XLQSZB†T>…]K„^HŠW>UCŠYCOF‰KE>QŠEGJPŒHYšCW˜>OžF_”F_žFWž·H²ˆE®“NºV¹ŒO±…W²‡N­ˆP¦‰C¤N§‘S«“I£ŽO«‹T­S²‹S·„a®c |Z }Xœ€^a”‰c”„]ƒ”Xƒ–\v–\t†ZkŽah’esˆWm}[j~]_‚kQwtQqmKoeQ|eVz]W€c[zcWmb`c_febcZnd\ic^^`X^`UjTTdVCeMBgP?hRBgIDVOCaNFeRL_JJcOT\QV`PW]Y[iTUkVNnLLrNYlSVxZQvcZvdZgYRlWKzXKˆ\C‰RGDG…GJwHFzVLŠSI‰_E„\@‰X@~OI‚PM†LH•HBG=”RA‘a?‘f?‰]@†a>gD”oF–jM“iSŒbaŠe`‘^T‡WR“`Yd]•[`Œ`V‹dU—WFŠSE†WRQQ‘WU]V\QˆSANB‚Y9‘X>—WKYJTJPAˆ?Gˆ>I‰?M—EU‹GUGYGVŸLd–Q^–L`–E_—GfŒG_…8i•6o“=lk™Fo =o¨8n¥Ch¬>^¯;e±FZ¢I]©8]¢4c§?dŸ;hª?t©Hq°DtªAr§>i¦3m¤>nŸCo§CsFl›;w¡8v“9z•@‡”>ŽŸ@Ž©L”±SŽ¨L“¥UŽ¡S‡¡P‹©M‘¤H•¨O‘¤X‚¤T£PŽ›R…X‹ŸYš­[—ª_’§jŽ `Œžb•§f•ªo¢«b™a——d¤ŸX®¤T¬¤V ¯^˜´W™d™¨d¤©i˜¢h”šg« n«°q¡®r «n £q¡ªh¡°d¥ªh£ [¡¥U¥¤a«ŸO™I¤ U¦šP©¥X¢£bšœe—™[Œ‘kˆšn’¢fƒ’nx’i{špx–js›mr£r…¦t{•o£wy›hƒ›e„¦c„žb£dª]|¨`|¤b…ž`‘d†Œ_ˆ‘a’¦U”—Zœ‘S˜˜E–‹R›‡A£˜D£–M¦Ž=¬Œ<½„I´ƒH·@º‚B¸‡K¸I­~K´ƒB­Œ@¥ŠS±ŽC¦…I·†F°’Q±ŒQ®†]·ŒY¨‡Wž‡g‘‰X˜Š\”b”d’_‡‘`‚…g|ˆdl”Ul–_rƒWf|[l_hxd\tsUufTslZ~oX\_th[ke[ggUnjkflbbhjYpZQbfTfdYdTWpRVoZNh[ClNH^PI_MF^LQhKPiRQcSPgLQdVZmU[h\XlVGvVKjWUjHZwPXveSj[YnQJqTDoXCzQKŽKK~LK‰PKƒKS}\I…QH‡g@SB‡\:~^M†MKTFRGŠV?P9˜P@[FŽfHŽi=‡a@‰hK™oJ’i\˜`^Ža\…c[‡SM‡dY†hZ‡^Z’WXSKžRG“QGŒXH‘OKŒ]R‰RP€TAˆZFˆO;‡S?T@‰[AŽTO‰VO’KH‡FEŽFMPU‘IUTU‰P\”GXšK`—EeR_DqŸAl“Dn‘=s”@iŒIg‡KyAp—Ai£Ic˜Dv›Ju¨LtœEc >^©5h¢=`Kb«Ah @rŸCk˜:gžKy¥=l©7x£?r2m¦/m›1s™CeœEu=v§9t›9s¦:|•9Œž7«=‹§A±O‘£P”­VŽŸU’œU’¢M‡¦JžW†¡T¡R‚¦WŽŸ`Œ \‘°[²kŽ¬d•¬l†¥j›¤h§ež¤iŸªršœp‘¡g¢¥T¬¥[­¡a¢©[¨´N©m’¥`™ªj˜®cŸ£g¯¢b­¨c®©m¨°pœ°pœ¬s˜©d£­]«¡^®¡W±š[ª U°—S±šQ­S¨£N¥¥X¢ W—¥c‘˜c–œfŠ›^‰že|˜]vžau’pœrx›wvt€t{¨qx¡rzk†g~¢_‡¤d‡™a„›eŠ d˜g{Ÿi€•h‚˜_‘œ`˜žU’ŽYŒ„P“ˆH›ˆBF¬‹H¬…B¶‹<¼…7´€B¹†D²€D¼€L»}Gµ„?¨D©ŠF«J«~P¨‰D±ŽQ·…Q¯ŒY¬‰V²‡^ª€d¦†aŸ‚_“…aeŽ^Ž‡g€…_€auat‘Xj–dgˆ`hˆngnhxw_xn^rgSkoRur]vkXqiXpvSml__rcUq_`ga[ifYoZRu]WkbWlgIs[KkNFiRKaLIdKFiUEaNNfGNiNQrPQlSKuZKrVQjaGpZNjVWqNZwZVxUMvOJuYP{ORrNFxE@LFŠDD…GC‹JF†STŒaK]D„`=ˆWC‰RKXE…OJ‡WA”W>“O@”V=ZF„Z=‰j@‚pG‹iDŒbR“gT˜[V[Z’^]‰UVŽ^_c]XP—XOOV”WN•SPˆ^A‹U>„TD…TJŽO@ŠM=…QEW8‘X<^ISH‹JQŽNK”HM–PD‘[LUW•R[‘OY’Dc–E\Ÿ@h™Gg’8m•:t›5p?n‰@kˆEs’;j’cJc¦Dg£LhžBoAz›Ew©Ao§AxŸ@¤2~§7|1qŸ,p”4h“1g™:o˜Ao¢m˜7hœ2mBx C‚¨@‚³It±H{¢O{ªJ~°GžG’§AŸPŽ•V…I€ªY¦U‡ªUŒœd‡œZ«eˆ³h­`—§c­d¦h“k§l”ªdš®h“§a ªY®§Z¯©eª³Z¨¨P¬o¨ªož©mœ¤t¦›q«¬g©¯m¥¨y§°k­­d£¯b–ªp˜¯q™´n¡°iª§c·ªa¸¥\´¦]®«cž°k±d‘¤a… o…™a…•Y…^•edzŸf~•fz^{›mw™j|¡c‡¤jƒ¬k†¯Z†¬eŠµe’¯d¨j‡¤a~šd•^ƒ—]ˆd£j˜dœ“dž—]•ˆY‘‰N”†L¢ŒR¬‰Gª†T¦‹R°T±„G¶xM¶C·ŠM¿|M¸|L¯„G¨ŒC¨B¤†;~Cš€@—†I£…R£Už†S“„_—Žl—g‘ŒX„ˆZˆ“X’cƒf}‘Zq‹Tk•Za’bkŽ[l[b†lX~qf„qb~o^{^WvcUknZeg`jkVlsPdsRcnMYePNcYPgYNtUJsUOqWSr^QkOChI?_ICVQBgONpERtCDuIEyFKlONmLKyZXmYKhPMoIPoNYxWZyUU|QTpSYl]Zw[IzNGƒPBŒS@P?”QQ‡VYŒSP‚K>ƒS>…`7€]F‡bEŠj>„c=‘W>“[@QB‚QF…VT‹gR„cOcD‚gRˆ[OŠaU‰eL„mV€hV‰`NŽcT’l`ŠhZ’eUŽaP†]QŠ^TƒaP{XBx];€`EƒV:€S;{IG€MR€FVŠMJSHƒHH€DTˆIRLQ€F[SS„PZ‰Ng˜EbšF_˜IdžLa™BbšNe—Mr“FqGs“OožHižDn‘>~…kGZA‰Z?Ž]@Šb;^?{OO{RSƒfX€aS]FƒYI‚iJ…ZEzfHŠfRˆnL…fRfKŒgYŽp_ŽgXŠe]ˆb]Œ\U|^JZIeCfN‡aL„\FO=~LK„SH{PKVKZP…RS…AI‚IQ‚HQƒO[PT€UV‡Sf•P^•Rl›FdŒG^šPkSo—Mz‘Km™Rg•Hr”ApŽ:„’E„¡E}™Lx˜Ks˜Np¢LmJo•Io‰Ru…LpœNo›Kz—Epœ0u3|•<}§:„(‚¨'†¦'š0x=t‘:{šE¡4w¥5{¡5|©;ƒ¤{AA{@G>Nƒ@QsIXkKToSQoLPuPYmPOxVPnGIxM>w]B„\K„_G|RA}TCƒMJŒGF}QG„R9|\A‚^=ƒd@Šd=Š\G’kK…hC†`G‰YIXOzcQv`SxZUx]E…ZR„gK†kD}`SwkMydK„nW‹zT‡|M{XvN‹u`‚c`‚d]…sK„kP{kO„cVeQ‘`F|RL}VAp\K`K}]Mˆ[_|YS…SW‚NM~[R…NY‰T[‹Ne‰Wj‘ah’T`ˆ`^„Xh’Xh”ZtNkŽTlŽUzš?|›HwžIxš9Š‹D{›@z¢Hp‘En›Ut–Sl‹[u“YuR’I€‘Ep–Cw˜B}Ž5v“B˜?¤>€9…¥/€›7„8{›8‚“=‰–C‹¤6Œ¡7‡ž;‰œ8ƒ§9ƒ :~§=›BŽ§A—ªG‰¬LƒŸR‰¡Yƒ¢\‘«X¥a„¤`\†—bŠšX”¤X‘­Q™§]“«`¤\‡ªV•°]›«X•£_œ§^¤Ÿ\¸[§¦d¨n ¬d§©qª¤o§¥u ¬jª«r™žu˜¡w”¥mš°t¥«q¥¯j¬©j¥¤k·®a»·a«²f¬µb«°X›®eŸ²g–±e¨l‘›^Ž¦Zˆ¤`¨[…§]}¥S…›d†œdˆ™]ˆ™W‰œ]‹«ZŽ®Tˆ¨T“±]–¥[‘¤j‹¢h–£iž¥e˜¡W¡šTœ£V§Ÿ^¥ž[§¥UššU•‹R–O“M …Oœ„[§ŽX›€VžƒKœ‚Q¦P«zT¨{^¥‚Y­‰L¨I°@µD¨F©R›~Sš€DŒxP^™{\’ˆU]ˆŒh‚’kvŒg{do–hpŒh|ˆpzŽmk‹ni‰_a…[Ye_}b\ta`j]anb\xcgt\fm\k]S`e[U\[T\\SSbQWcUScLMlO9gG;nJ>gB:eDEhGFhK;qG;oI6yH2tA6zL2oG;yE;w=K9Tƒ=P„HWwKSvQWvORnQ]sQVvKKzJBN8}V<ƒWF…RF|QD{OD}NB†JH‹JH‚T;Š\F‡[D_<‰Y?„dKŠiKiKiD~^OŒ\R†WS\Q}aQyeN|kW|cO|bM€hO}dDƒdEuQ‰}^‚s\zwOtkL|kVyeRlV‡qW}xK}uO‰`V‹ZLˆ`P€]OrZKn_JpVNr^N|XWzXOzOQ~LX{QO{U]ˆJZ“X]Œ[e“`j\`‰de€^a~caYe’Ym–Xq•OuŸAv™HsœAš>{=‡’H‡œHw£IlšOo–[u‹Un’Zy–W}‘Mp™Lj–Dl•Iu?o’•£Aˆ£K‚¦Wˆ«TŽ©YŽ¢Z‘ŸTŒ¦T–œ_’Ÿ^–žV›¤S¢¯`œ´^˜­d‹§fŠªc”¨f•ž^”¤X§ªT¬žaµ›\¬gŸ­j­¤g¥¨k±°b©£c««o¡¥o—¬j¡£r ¬i«¤t¯¢m¥°e®¬a²¸]º®f¶¶g¯·c¦«ZŸ«^›¨n›«n”©n•£b‘¨N’±XŽ§S|¯]‰¤Nˆ¥^‚ž]…”a™U£Q«^š©S˜¬S‘¨`Ž²`­`›¢p” _™œb¤žZ§ U§ªXžŸ_¯–`§œW¢•\”ŠV¢‚_œ‚U¨’^œ‹bš‘\—Š_š~M¦†K¢zS°‡W¬~Q³†a¦‰]©W²O£’PžŒG Ž\›~TšzN”tPU‰‚Xƒ‚QŽ‹]“hˆ‘iŽ[{Š^zŠ_j•gk†qvŠuilh„ob\_Šgg}c]ud^o[nrcpqVoxWerangVfWOQaUIXZSMWMHUIV]MAiFEoDa?=^I9lJ=lD1i?1m>1n=4l?8~B?v;M„:K|@PzDMyNMzRN|FEzHHwMZvTM€DJ{RJZ:†LC‚JMzH?ˆRE‡R;ƒJ?„U7ŠTF‡Y?ˆZC‚]Ag?ŠjFƒaH‡lG~gBŒiCdI€fI„`NzjNƒbV~dHkQz^V~mNxpJwhOzqO‚YtqMzqRlHxmJrfU€gXznK…~N~sQpV}iV‰jW{]Gz]GzYRtPFpVGxYTzMXnNV€[TsRYzX`K]†QZŽOaˆNe‘Rd‹]b~VeŠ\bƒ]oˆVo“Rz›Um£PvŸE|’RtšC|œ>„9|™KzJkFl—Ir™Zl•Pxš^vžXw›NiœGw‘Hv•Bs˜@}¤B|¨;‹¡A„˜9‚?zŸA‡§0‰Ÿ7”ž-ˆ“0˜>ˆ˜:† 8’œ<žBŽšE†ž@‡¨6€£7‡ D‹¢C‡©M…žL‹§X‘˜[•UŸ]”¢S‘ W•¢[•¤WŸ§`–³cŸ§_™­_ª^—¯Xœ¨\˜§T–®VªŸ\¡žc¨h°±j®«n³³e«ª`´¨i®£p«¬w¤¦x«¤j¡¬už¯qª£qª§d­´e·²c³³[¥¬Y¦°a¦­\™©X˜§e«\®a®X†¸O‹´Yƒ­R„¦Uƒ®T¦Uˆ X‚UŽ˜Q JŸT–©S“ U™¦Z”¢_›©^¡g˜›b¢›`§˜c«–[¡¥]¨ \­žg¨¤b¢œd¥—XŸŽZ¥‘b£Žjœ†a‚Xž|W˜Xœ€S¢ƒJ­€M¬†X¬Œ[¯[¶•T­ŠR©’Q¤ŽSŸ“W—‹M—zJ‹zUƒ~RƒV„„W…Z„ˆ\‡]v„`veq“du‘cj‰opkp}qn}womg~pi}cazd^}VixYb€VlxNovTgfRdbOQVYLLVLPTOVXMKiCKiJDpP9iM;iI5dF<^=>d@/l?5nE7gMAkK;nB;rB8|=;=D|BH„9OˆEQƒDKOE†HIwJTtNOuIKvFE}JH~QB~QD„NHH?†J9{K9W3‡Y8X?ˆcAˆ]@ˆfM‹jN“aK‰gJlF‰k=‚n>‡fE„kFkO`X^PyjU|jMrdRseNvmNuwI‚Jy|WouLvvHptCtkN|rHziP~jU†rW~rZwMwxU{jMqhPrYOpQTsVNwNLtTKpVIs\V|V_yXWxM`ƒR^„W_OjƒIn‡RbRd‚M^ŠYgƒXm‹Ru’Vx‹Ur•MvJs“QxžR{™A|‘;y=o=g“Kl¡LjMl–Xu•Ym bi›\hŽLs’Mx™Fw™Izž>z¡5‚¬;ˆ©B}¯7‹¨;Œ£8˜™/“”9ž—1›˜:’7Ž—C‹š>–ŸH”ŸA“™Gˆ¡; HƒEœA–§I‘¢PŠžT’¥L—žT‘Ÿ_˜£X—¤ZŽŸ`–Ÿc¢¨bœ¶Zœ²]™¬^–³\’«Q¢W•«[œªUŸ¥_£ f¡`®·m©°h§°`¤ªh§ªl¥¬jŸ¢u©v£¦g¨¢m¨¦r¬¨l¬²k³²k«ª]°¼` ¸Z˜­Vš¶S’®bŒ«dŽ¨aŠ²]‹µPƒªT¢\ƒª_~¤O¤R|¨VŒŸX‚¦^‡£]’¯RŽ¬^‰¤T‘®\“œ\•­c•¬c™®\™šf ¥^Ÿ›]ª¦b£«c¡žf³¨c§—g£œd¡[žŒWªcœ“_¥ŒU£”R¥‰S¥]¥Z°ŽK¥‹S£ŒN°•_¹˜O³“O¨R«‰GŸ†X ‰L£ˆHš‚Q’tV‹wZ‚‰S‚~TŠ[}UƒX„‹cY~huŠpn–xf“sdˆch‡unsg|m_zdYr^[}[iuTjyOdvP^rXbi[X^X^QYLTbGQXNUh\PqHBnMvI/z<8uN:sEA„CFzADƒ@@‡1EŽ@IJ>‰IH„JH„CBvAKtEJm@4~S:vQX3gC…rIcFŒ_K‰nAŒ^DŒa={Z8€cI~iDƒmKƒbW{`IviOtfCzhSplB‚sKtM…†KtrHrvRvvIniXwoYtmN|xRzyNvTwmLtoNtlTodVvZNzZNv[Jy_XpVSzVKyaWrbQzW]wVcRgŠ]e€Id€Ln…Zq†Ka†P^…YrƒTpŠ]u„K{’Nr”J~“S|ŠH|’Ky˜E€’Gw?{ž?yKg˜Uq›Tu–YiŒUp‘Ql™Xh—Ow”KsJ•B}’E…–<†£A‰«HªA‹¡7’‘0‘%–’(Žž.—’7‹š8œ7ˆ™CŽ =”š;‰ 5‹>~›C¨>’¢@Œ¤E•œW”žS–O—¢[‘¨PŽ¦T™¢T’­X™©a•¥[§ŸUžªe—®c•º[™¤`®]–£`•§Xª V¡¦d¨]±Äd³Áj¬¾c¦¯m¢²o¨¦q¬Ÿ|¥©zž§t¥£|¦£{¦¥l©«b±®b¥´a¦³[¦ºe™·a—²X’²]—¶_Œ¬Vª^…¯W‡¯Vƒ Vž]‰£]… V‡™UŒ–Y…¤\”§W‘¬\†¤\ˆ¬Z‰žZŸb”°Y•±U¤¬R¡ [¦ž[ž ]œa¥ l¨ªe«¢j­›c¬–Z¢–[¢“Z ‘[¦S«‹S®”P¥Ž[£‡[­‡S¯ˆX´”Xª‘X¯‘[³•Q®”R¬‹W¥ˆLªQ ‹NŸˆH¡‚F’xVŽ{\Œ}V‚|_~ŒUyV}…TuŠ_~”]ƒˆ`zŒem‘pkjl‹df…cg‚oonlqr`arifu`crWVcTZdTYldcpa_aU]]cNfcP^bQ^iZVnMKxD@j<@mCDkO=jJ?qOAuH9K4yJ5w=;}>8}ME~KG{=F8F~5@…8B>8ŒC;‚76;;}E>A@x?7mH1rI4~JB{M?}LBƒP…hJ‹`LŠfQŒmLŠbO‡_C}X8wZ8|k@wdQylRsfF~^B}_Dy_J„tH€zE{{?€„D†uI}qOtnQpuQywNzj[w{Tv|N~{XzlSvtP|lL{qXufXqiWpaTm[PuXTwX\o_SmaexVe€Xg{]_y[[‚S\{S`xZs{Lm}Mm€Mr€WwTl‚Lo…LwLx‹LwCy–HzGz™D€™A|–8p™@pQuŽ\zŠZsŒ`t”Um—On—Ql˜Oy•E‚—Jƒ“P€˜G£M…£B†•6‘“9•’+’*”-‘—/-™0—š1Ž?‡’?œ@…•:zŸ:ž@~¬@ƒœE‰Iˆ›V“›S˜œI™ŸPˆ¦Gƒ J‹ªY‰©[’ ZŸS §X¥¡b¦«_š¯Wž¯a’¬fŽ¢^” Z£¬W ­d¨e§ºb®»k²²a«ºb³³q°²p·´y´¨t«¦z°®v«·{³¶m¦·[£®[§²X›¿`§¹dž²Y—±Sµb¸lŒ¦l±j„¥V‚¢V{U~¨\…§R¥P‰¥`€›Z’«bƒªb”°S† [Œ¢U‘§UŽšL‘¥^Ÿ¶[›®X¡¤V©¥T©¡X¯¥_©Zµ­a¶žY©¦\³¦c¢žZ¢–a¢‰Y –_¨”O±“Y­[ªRªƒW®ŒQ¥Ža§ŒX±’R²”^©’Q­ˆVžK£ˆK¥|R’‰H“€SzL†y[„‡^~‚Ztƒ]y‰Os…S}‚Uu•_~‹bwƒfvˆrnfkƒguynvqglmfhs[hdccbe`obhbWdf[iki`lcblbZc\b`_][fWTm[WjYOHK}N=qAN|L

    AqJEw@>ƒI:z@=yM5‚B:}DE}A?ŠBN‚5A‹6HŒ99‰63>0‰<5}57??€<8qE/r9*tA-t?<{?AJD}?:lF+sM+~`-}W+€_4X-…d=„Z3‚l:‚gJ…eN`H}hEwgJvS>t]8~aC|eDtmKwlFx^H}`BndD€nK„w;ƒuFw…Dƒz=„|AlGvn[{o\{oV{x[p€Or~SzsJpjO|lWu^Tw]Zn^VuVRp_O|eSj^\hYWv]as`]|Y_t]_vY[nV^yKmuR|tYm|Uhs\oˆWz†Yv…Vy‡Mu“U†šSvIpJs™Ju‘:s•E‚‘>xŸ>y‘J}‹[s–`u•d{–Uj—Lq–Ns“PtŒK„˜FCv˜EˆŸHŒ§?C0›”-‘‘(•—+™‰'‡3•‹.ˆ‰8†ŽG’›<Š™C›8‰ž:§A©?~ŸAˆ¡PƒŸS‘¨I˜›N–¡P’¦R‘¬Q…­O„¨U…©SšœTš¢Tš¡_ª§U¡§Z¢¬_’¨l”¤i–¦f› f¨¨b¦r¶Âk¯Äa·¹h³¶r·²nº·pµ·‚¶±«·{«¹u¤»w®»p¨¸e£¿aŸ¼]ŸÂ\œÈS¢½R£»Z›¯e”¬hŠ°e„£mƒ¡\‡¢[}¢]{ŸVˆœ\†§R‚¥X©]¨^•¦]‰ª^ªSœU””M˜šH˜žS©X§œO¡[ž£Y¨¤R¬¤U¶¦Z¸¡\´¨b¨®d¨¤Z¦¢ZžŽ]¤‡b§Šb²Y­™a«šW¨‰T³‘V³‰\§ƒ^¦Ž]¯ŒVª”R‹T¡Wž†Vž€XšuI“yK˜†P„P€\}†[t[z†av~Uo†OtXxŠfw‡fxƒkp„gqlpj|v`sjbtfWwh\kck^dk]bpaahhjiimcdjedfdffcldkeYnmJjcL{UCzSG†TOHKzFŒH=‘@;A6’<0Œ@6Š?6„62v9=~8:w:1r>7n>3xB8x:5pE2qD*tL,~U+wS'zO'\1„^7€b<g9‰ZD…]L…gJ€eKxaLx^;zeJyeHnp>rjCvf;qkDwpErnJr~>}|AwF|{BƒxJ}vBvQzrW„qZ|tNƒMzUm~HltLkhSphPqaVj\Lp_SuYV~UUva]sabrZcr`]qf_te`idad_`ePfdXonPwv[wnZp\z‚]x~dyˆa~‡e~‘Wƒ›UƒSr•Lz–Es•Au“=Œ@ƒ•H…™O€Ž[w’V{‘]r†Yr…Qm‡IqŠGz‘DuŠIw”Jƒ™F€“I…›B8‘2—)ž…'—„3šŒ-Ž)’Š.†‡5ƒ>ŒF–™B¡A”£:’›A†œ8„˜?¢J‹«V“©PŽŸL” I§L„§H†¯E†¦GˆªVŽœTš–P¡Y¤šZš§d–¨]—¥f”¢h™¨p›©p¢¬pžtµÅp¿Âj¼Çr´¶t»ºe¸»r¶¸|½|¶¹z«»°·{­Åe§Àiž»gŸÆi¿[ž½U¡¶Z‘°e“«^Š³f¬jŒ¨pˆ­e‰¨d‚˜Zˆœf†•]~¦]£\‹©a‰­e‹®^“«V‘ŸN™©J¡R—¡Jš©X˜¨W¤«]˜¡M¨¥`¤¢Y¤¨Qµ¥T±¤_¯žX«Ÿ`¨žX®h¡–g¤—h±”d¶—\´U±”P°P©ŽJ¬N©‘O®…X¤S¯‹Oª’W¡‚_¢‚]¢…O¡‡T›}U‰Š[„ˆaƒ…gwvbubs‡U{\qˆS|‹Oz~Sv„W‚bpslvƒeixkmf[wieocgqjdrdk\WiWUkd^Y_khg^ggahZbh^eqafrebsiRxcOq^KsWLtWGKFtCEyBNy7E}3E„6LA‚A;77‘;6“71…8}77s@07.rA-}B-{A5…C9‚<&x9*tF!‡M)ƒT zO'tZ-~V5…XA…XEˆcJ‡b=dI}gC€cA€l?{eD{gwpCzc7p]HvfJzgP{nDtjHqs>m}>rzH}wHxLywMvqJ~yX}U~Hv‚Lj~FnsHkwOgwTfrWdjIkgNhjZicZmhYf`Yb^Rf]]`jj]kga\ncip\qehcqdVkjZwnOsuNwnMu{aovcx|[~„_‡…]…ŠXƒ‡N…J†ŽJu‚@tŒIo…Dw€Gw€?„‚Fˆ‘K}T~as‡SwŒS„…WŽPŠƒJ’‡JŽˆTˆ‰Vƒ‹Q‰@–Œ?“•7›Ž/“’3Œ(–‰,‹•:Š–A‘FŽŽ<Œ™C‡œI§D¢8ž©=”¤<–¦@— L†¥NªKŽ§K‹™J£Q…¨G‚¦SŠ¦PŸK• SšXQ¢™T•£^–˜`—b—Ÿg¨o”°y®qtÊÄ¿ÂvÄÂo½Ïl½½v¾ÇvºÆp¼¿z½Á{ÀÁ}®Æm³Ìq¤Êm¨Ìc˜Ãcž¼rŸÂv—Äjž½cˆ³l´j‡®c‚¥b„¡l‹¡`Š¨h†˜o‡¡g’—k‡˜j‘¡^ˆ±V‚¦Tˆ¥S“›`œ¦R‘£Y–§S‘®\›©U—±dœª_¤bª°Uª©e«©Y¬«\®Ÿ`²›Z©˜W³ ]³œY¶’a²•T³’U±–H»šW»šK±P¥ŒU°‘S¬—N¯V«T¡…`œ‚X‰]¦€R”‰`‰€d|\—€^„„\ƒyVƒy`wx\xxV|sbt~S~wZ{uYmxctxbopendet]cqfjydcgbgkSjo^hhY^fbUacX^`T[^l\cl\gzZbz`e„e_}^U|_\€LX€ONuKF€PR{:V€9N„9E‚A?„>?}@A€83~5.|73Œ*-‹*-7*Ž,:ˆ47Š/.Ž25;=Š:*†85ŒB/„6*ˆ?1…59}068/v4,w@+zA€J/|H/vI#‚P2ƒ[:tZ>YB|S<‡g>‚^Bƒd:vm5sk@xp7tp6qlEyj@ql@‚j?wo:qvAy}@{|@r„@psNnwPwoTtNn€QoxPrƒKgqGl{E]}V[lW[v\kmRcpZki[jkTclZacU\_Xahg\hd\lhj[tipw\li\aha^fm_nkWomWxo[uxY|T|t\…‚Q‹_~b|‘RzˆO‡ˆJ|†Ay€@w€Jt„=wwD~ƒI‹J|‰[yŒTyƒK‰K‹…J‘€LŠˆJ…”VˆL’XŽ†R”ŽF¡…@’˜?Ÿ—8¢;”“?Ž3˜ˆC™“@‹—@’L›P’G’—H ¦:—¢9˜©>”©Mˆ¥EŒ¢W†¤XˆŸFŠšCŠ¨?‚©H”¨S‘ U›©Y©N”šV£“V—Oœ[¤•\–™^—¡f¦q›o™¢tsȼzƽ}ÃÆxÂËpÊÅtÂÀp»Åx¿ÅxÅǼÄrÁÑu·Îw©Óz¤Ñq›ÍkžÇw¤ÉxŸÁ|šÄr¼k”­qŒªn‰¤aŒ©m’«g—©f™¨i‘Ÿm…™m…Ÿe‹œ]ŠªW†œS…ŸO’žX•ž^›–]žb¦Y«_¯e›§e™°_§®i«²b°©Z¯¥^­ž`¦¡\ªŸ\´š\¹’R´Y¶™P¯”O´žS¼L³Y³“[®‘V«X°”M²†P®‰P«Zœ‚W¤ƒSž†W wa‘yj˜ze”}^ŽzVŒ{Pƒ}[ƒtR{rW|r_vq^tudqxaet`cubiibnhgp]lj[lo^ja[_d\`ic`keSbdW_[b^_[a[^dYrV^pZ[v[btaa€_`a`|UW~\YxQK|IV?Sƒ:Jw9Lw=€=8}=,u<4}2/ˆ22‹0113Ž4)‘4/‰.&“5(71”2+‡=%†<"ƒ:*…+2z-2‚,,3,80x9$u9/zD(F)…F*ˆE.|N5‚N3|R9~b@ˆc9†g6‚a:ze:zp1wi1}sAu?wwB~tA{v@z€?|y?€wEFw„HqxEw‚Iv~NuzKlƒMdxEhvA`€EdyIfoK[pY`wUesWZpW`qVZfTcdUa`\ZkaUq\alajimbdsj`}blzcdnn^ppb|i\vrb„pbƒtc‰{V}R‡yR…ˆQ‰‰]’T„K~ŠUw‚N{IwˆCw~HuJs‚Km…TuZ}}R„{N†|I‰|P‰ƒOŽ’K‹QŠˆZŽŠR•‰S“„SœƒG¢G“OGŒ@œŠ=—„K–M–’H‘K’G™R•U¤žFš§Bš¢BŒœQ—¥O’™WŽœT‘›JŸH„£L‰ D”šJŽ T•¡U”£Rœ–Pœ’P›”O¤Œ_¢œ]—›hœe£aŸœ^¤£j—}ÁÍ{ÁÎy¾ÏxÈÂyƽuÃÄzÇÂmÉË{¿Êp¿ÈwÃÄnµÆx¶×s±ËhŸÌi­Ép­Ët¦ÊsšÅj›Ám“·h—ºd—¶gŽ·h—µf’®eŽ¥m“©e¤g†®mŒ«mŒ£e‚ _‹¥[Ž¥b˜™[’ Xˆ•c‡œX˜¤_š¡`’Ÿa¥§a¨£U°ªT­›V°š\§¨W£¤Y§š[º›^²žW½•a²¢U³•U¼“M¹•Z¸^¸’]¸‡c°—Y­‹S¯ŒG¨‘\¨‰Z›‡\©yX®X•{[ŠwhŠ{gš`”u_ƒx\Œwco\~lVzmWzv_wtYdm]jp\ht[^d\k_aigjoVusammdiu\ji[Xo^[p^^nOakUUfKjYOzXUw[YuV^|`drb[q`Ur`QrVWsPVyBMx@TsJKrB=xBAyDAƒ;2z;->14>‰4:‡75…9#‹7)†>#Œ94Ž1+‘B*?*ƒ9+€9"Š71…69y5;€+9=,sC5B's=.xD!}O.|G$zT.{R>~N5y[>†Z.†f<Že>~_-‚g4„s3€y9rs"ƒ44ŒB+ŒD/<3…7)…;3‹?3Š=8{35y27‚99€E6vC*zE!sHvJ vN&xT1yT;|]=„[2€U+…Z3ƒZ3‡j0p5n6tq@ws>v|Dpu?soDmkFvj8zh8€n9ufHmr@op;ksK_kL[vL]{NexN]rEb{HYyH[}J[|QcrVhvRdoMaxTkr[gjTbiVYcYUlfUjiYmp\`gQafUcvbjwddobSmdRviWxt\zq[v{_€{Y†~[ƒzP…vKvsIwUu‚P€|R€G…|I}|J{zMy€LyvQ„xR~qcvtc„…R…X…{M…ƒG‚P’ˆX˜‰NŠN}LŸˆAŸƒCŸ†?˜ƒG–€=“~=x;–~;˜zDŠƒIŠ~<‹†>’H”’D¡‘P˜ŸQ“šT¤J–O™•V™NS›[ˆ–T‰žP™Zˆ¦P”¡H–¤I•šP ›Q¤X—£Z”•`šZ™Z—©jœ§mv½ÊuÈÁxÇʆÅȅËÐ|ÄÏmпuËÈkÂÊvÇÆh¹ÅqµÆo²Íg²Ôi¥Îr³Êm¨Óf«Ìf¤»f›¸u¡Ål–¹u•µv¥·u¤®q£°q–±i›·mš¬bŠ´s‡ªlªwªqˆ£jˆ§mˆ£_Ž™`‹œa‘›]•Ÿfš™Z¡‘fšši¦¢_­ W¯™f¯¦a²X¶˜\¸–X¾’d®^»™^ª”R°–ZØT²Vº’g²\·…b¸€Y³T³J£{V |Z¡sV«zT²zX¡ue“rY˜wTwe…om{dgŽqfiZ‚gczndulOok[ql[maZf^big[`fdhc`gai|\jkcptSmqT_g^\rVaeTd`IYeIaYQwfFhdKng_uYPhVMn`ThZJhSUjSSlKEsXIrICqE*‡I*‡G)Š>+ƒC3‰9!ƒD+ƒ=1}E4‚7.w;6Š@=‚42u>2yD#oMvR/vO5ƒP-{\CzT8z`AyY6zXAzh/…k8xq3€rB{n=rz>px=i{Gqr;rv@tbCpg;yhLnlAmm:kg9on?jhA[t?U|FduH[zR^|FcqE\{UTtPXySgvTg}W^tXpm^aqVkk\^\Zde_Sad^`ldSgQZqZ`|aVufZwa`re\sgb€u]xwc|px\}p\~pYtrH‚vGulUsvW„tM€rRoH|tP„zH…|Qƒ|XŒlSvvinz[yƒS‚‚W€{Z~HŽ~R†L‹‰R‡ˆL€F›v@”}D˜{@¢wD™‡A=ˆ}<”yBƒJ•„C•u8•‚3•D˜Œ8šœ@”IšU‘¤T˜¡SˆšV…’N…‘L~NƒX‡˜N~—_“S• Kž O £T©¥O  ^šŸUœ—b£^Œš[œk“§a …ÃÈzÈÄ|ÑĆÍÏyÖÙqÑÒtÚÆqÑÆmÇËxÁÆyµÂqºÅp¹Çu­Êg°Ôe®Óo±Óh­Ðq¥Ái¨¼m­¸s£ÂpœÇx¤»u¥¹z¦³v˜³m™¶b—®f˜´sµo’®j‹ŸvŽœn“Ÿm‡žk…¤b‰˜]‘ e“šhŽ™n™Œe¡‡f§“d¢gªša¨–[´ f¿ž_ºX³‘^µ•W¶ŒV±^®Y¸‘]Á“X½ŠX„aµ~^²{W¬X²S«|M¨rX¬q[µwT¯sU§uc•sX›j^jbˆbf…_j„ah…i\†^_~d^uiSgfWh`Mh\QhbWh^_c`_iYfxdiv_doXilTrsQilR`oMafP^^KcYKpdLoeIimSmdTf^QoZJr^AqdIcYBf]Ki[AnZ>~M<|N9sD0zI4{L;ƒ=:‡:4zE=zE>|N/…D$€K)vF"zN#zF1~D1ŠK'ŠD&€D.‚D0ƒG.€;4x@094wB7}>+‚K1vQ)tS2vZ2†T9‰[:}U@{\?ydB{bA}l<|o6yr9}i>vsAmoDpsAoz=}w9|sAtpHufDmc>skHrqIpf—€DuD’tEy7š?¦‹<¢“E™˜N•”Yˆ–RŒžQ‡•Zƒ’]„ˆU€ŽX‡–J•F†”S…N“™V›šR—¤M£¯UŸ©\¢£S•›Y’˜\Š cžZ˜ž`¢„ÏՀÎՅÍ×{ÌÔqÓÔrÈËvÊÏzÑÇiÃÉm·Ív·ÉpÃÂ}¿Êw´Ôm³Ùb­ÝkªÍ`ªÔm Îq¢Íw­º{¡¿w®Ç}¥Ã…¦¿w™­u“®i˜½h’¿o˜¹hŽ¹l˜«sªoˆšsŒ˜y‚˜fŠ•jŽ[Œ\›šdš”h™˜_¦˜jªn¤˜o¥Ÿc¥šb«œe°˜hº¡f­’q¬—f®l°‡Y¶’^ª”_¶•fµŒ]·}kµ€`­†X±„Yµ…W«uP«pV¯uM®hV¥zYªvb r_šeYc^‘dl‡h^ŒfdŠndxp\bcjj[k__lYVcdbhaThZXlZZpbde`mkUom__tNcuZcsOkiNgeZb]DjbCc_DjcKu[JqjMrfGlkCf`OgeOpcEj]QmXzP:N>zO7sF.pM1}H;yF5vRBtQ6V4„O1‚L)~T+}G!€Q2|C9yA6|N,‚D4‡;,ŒA-ŽG4~B:x3-t4+s3.‚J$P.€V3€^'„T5Ša3|g6€Z;wm?t`>wgAqg1ƒkBuqGlxKekNiwAp7pzGt{;pgCllGshEddEon9sb0lk1jy:XsFO|QRtST€L`lUijPcyJZoZfyTex_jve[l\`hUseXjlUddUf]`iVcgSi`]gcUhg[yaau`[nSso`|t^€uh{zfzplknnrnZ|hWvwGymRxqPƒvN{}K„kG~qLyMŠ|P|Y’‚Z}uV|rXvƒU…ƒQ†…a‰]‡YL’†M•F’€P‰P–qI“€AvJš{Jw6w-Št<Žq>—yHœq=œr<‘„@‘~7—|;‡F”‰L—”UŽ“ZŠ‘OŠ_‡…X„…Wy’UšTŒ’\~’Syš[‹[”™L£ŸT— SšªV¡ªV›¢RœYš©[‹¢\ ¢i©…ÇՇÊ×}ÉÐ}ÑҀÔÇsÍÈl×ÊqÑÃoÏÑn¾ÍÁÎ~ÂÂpµÐq²Îq®Õ`¯Ý\¨Ùh¥ÕmªËw£Ïq­Ìv©¿~±Ç¨ÂŠ˜·„–±z ¾uš¼m—Âs’·{•±u‘¬kžoŽ¡l„ªt‹£l“•b˜‘\^œiš™g˜k——a¥˜f¡—j§šg£m©–a«™c·”rµ—r±Šy»pµ…l¯d«’g´•c®‹`´€l½wfµ{Pº‚JÀ~I¼{G¯mS²kS°nQ¬tW¬sU¤nZ‘bYg[‰rhwe…e‡we|bdx^fm[`_eek^cn\fj``gfff[be[kjaid\\tR`rXZjU_oXZcYc\S_cAca>pbKmYSeaNk`GrhHnmGkjOabI_SRkTIyTDwU;qJDuB=yO2nK*uH.kN:jNHqPFkQ1tU-tU.€J/vM0{N-€Q2ƒL6‡H2zH7zJ2‚”s2Œp1n;•kDŸhG›r;‘@‘x@–w;~E’€OŒˆU„‹aƒ‹`‰}S‹[~ŠY|”[z^…–YyŽ_~—ZˆžU™¨V£«L›¢Uš¡\–¦^’¨P˜°Q™¦V¥Vš›b¥‰É݇ÈށÆցÑÑyÕÈzÑÊtËÌpÉÃyÀÁsÀ͂½¿}»ÄmºÃl©Ëb«Ïj¢Ún±Ðl®Þw¨ÎwÊ|¥Óz¦Á}¨Ã¬Ãƒ ¿€›®…•¶³v“¯qŠ©€‡Ÿs„«oƒœl•˜h¤s…•eŽŸaŸb¢šW •fœžiª™d®šY¨Œh¦œm©Œl£’l©Žm¨’b±“q­ƒx¬Šq±u´Œn·€c´Žg¦†c±€aºƒc¹‚[»y[Ã}TµsN¾xS¸wQ°uU¯|Q¯qN±tZ tX•gW–if™rb˜{`‚}f‰tc|qfhehehglZej^gc^nn_ok`nahja[afZcbWrfZe\[e]^`^`^ShYU\`KdfI_hHeiYqiKfhHi\DkgN_^>`aFaZ;q]@eWFtT?wK8lC5wL)qA/sG+zL2tM5wKJnO=vP7wZ7‡U8{L3zV9~G+€O+‹L+L2…D-‹::‚72ŠI1xB+x:7=)z3.=&€D)…E-„U+~_;`0}f?ƒfEˆq?ƒe7}rCkB€p>xnMth>hl>tzGfnDck;heEjl9fe=kj@bd5Z`>jd5^o9]h;anNSyKRyFZsL[mN[uLbjXNiZbr_jybjnXXhUcbdm`bahg\U]ie[gVjback^fp_rp\{_^sXhzbYufPwpc}yevv_r}fym`qnayx]€qWzrW‚eO’lY†vLŠjPyR‘tU†ƒ_Ž‰dˆ{`~ycˆe}†UˆV|’^…Ža…ŽU”…R™N“‚DŠ‚BŽwL†q?†p=ƒxG…€;Žl4‘r,‰n2‘g>›r=iMœrO“}Lw?˜rDš{>’mTŒqP‡yeˆƒV~y[„‡\‰€Z€ŠX†Yƒe„Yˆ–S•–[—˜S—ªQ“«NœœW”¡^”¯Z”¬Zš§S™¥c”œ]¢‡×܇ÏԁÐ׃Ë܂ÃÍyÉÊyÍÄzÑƅÊÄ~ÄÆuËÌ|ÀÈq°ÈjªÓq¤Õm¦Öo¦Øh«Ûi¥ßsžÔƒžÏŸÇžÄƒ¤Á†©¹†œ»€“Á‚·ƒ˜­{’£‚Š–zƒšm€i”aˆ“h˜a™b˜‘Xœ_Ÿš`œ”cª—^µ[®‘Y²•_«Žg©•p§’m«rª€r±Šx·ƒq·|s´…q±}p¯‚v°|r±ƒk¹e³d³~U¼vX»nP¹qS³}Q¸wK¼tS±wa«v_©w[¡pb“pZœl`“ra‰xjƒrk…k_}nbzcagadhagelbokbrf]robii[mkXfk\`f^imako[`d_Zffe^chUahFbbGjjNplJiaIgZMcZJ`hK`g@`_:iU5nN7lJ;rD4lB+iC1iD0xR6wS0uP:yU<[2}Y4xM4‚N=~S;€T;ŽQ;K/”G/I+’D9‡;7}G:}A7xB2ƒ<,†8.='„@1‡H3J>ŠX7‰\;}e;‚j:ƒk@e5~l7ti3zj;ycIukGue>npBruAlp?sb:l^@hW7d_9]]:bd;fd=_d;d_AY`GcmN]mJcnF`vBcwQ\lO`m[TrbVve^rbfl^feamgkicnjXjj^hi_jmdfxjru`ln\mmWvbZq`^nd\}fX{dR…rZ€qlwwpz|kwqdwwa{qW…qX†gZ‹dO„mOŒtQ‰sZ’xW’†c‡Šd†aƒ‡]zˆ_‚‡aƒ’_Š–_ˆ‰W†ˆRŒP”•F’ˆ<‘ˆ9Žy>Œ{J’vD‡u9Œu5ˆk1ˆl7•k>”i>’cDšlDžoE“oM—tAœsEšhL—iJŽoP‹s\xVwX„~Rƒ~[‰w_ˆ}cŒ€W’‹W‰ŠW‹SšŸX—¡R—¥Yž ^˜¤\¯V’¦_¤[–¢^ª_—ŠÛâÙΉÐÏ|ÓÜ{ÎÌpÊÌzÆÑsÎЂÊÄvÏÍ|ÏȅËÓv»Ös´Øx³ÜnªÛt®Ôl¯×y£Ú}šÏ„ªÓ‚žÁž¿‚§¿„•¸“”º‡šª—¬€‘¯Š‹¤¨†›rˆ nŒx•i‹”j•Œq˜…d ›li¤—b©šk¬l®Žh¦Œb ƒl¡‰w®“t²u¯ƒm¯ˆo­ˆpª}o©{q¶|o´€s­q¨um®pl­qd´|c¹|X¯v[®nO»sU°}S»rV¸|c¦yb¥yf—sdŒoi–od—ej‚pfƒkd„d`~ekochnfadc\kmbge[sfgpiad`\igW`dbfnW^pUjf_bddbciiS]gJ`nDadNclJ]_OddN\YBX`BZ_JanH`^>kWFbZCpF8mD2uR;f?6fK+jP)~K8qO3vP9zK0‚X,zR3ƒU7†I?L.ƒO%L(B2ŒI/Š=/;447}39ŠD/Š9(ƒ@ yJ%|P$ƒL3‰O5X(ˆV*„`9u[?~_9ƒd1ƒu.{p=zl?wp@moHloEoe9uj;snImt6_d5fh4]h5ca5[`6\_1a`9YlBVe?ZcOSsEbjM^vC]pHakYckQ[h^[kWloWorXkg_chggeflineffrZjcdieimz[rm_nk]~qU{sYurUti]xqcnW|mexvmyoet~^smi…he‰o_‹jYŒm\ŠtQ†lR†i]“xW…‰f‡…V}vdŠ}W‚Ža„TŒ‰^‚M‹ŽYE‰ˆAˆA‰A‰}@ŒƒF‚w?†qDzsC‰q:†f7–o,’k4œk<o;Ÿr7œwJwDvM”m?wBxG‘mNsa•yRŒ|S~VvQ~Z•„\Œ\’S”‰S‘N”ŸH¢›W—O–ª_¡ž_˜ªZ§W› V¡¥V› X¦sÛÒxÝՂÙÏÊρÏÍvÌÌzÚÐvÖÉwÑÐzÏØwÑӁÊÔwÈÏw½Îy¶Òn«Õx­Ìq©Ër¬Ö|¡×{«Ê„ªÈŒ£¿‰žµˆ¢¸Ž•´”•¨ˆ’¦…†°‰¬ƒ‰ªŒ ˆ‰‘w–“y—‘y˜‘™•vŠp¢“r¦˜s²”i¬k¢‹n§Žo§ŽsŸ†v«†u¨’w·‘g´…t·}o­‚m¶zl­i§~v¨yw¡|p¨mp¥hb«ohµli®u[¸dY±bg¸kc®ub¹xa´vb£tažm]Œod…sg†jhŽbsŠ\nwfj€llyjl{oivcdviXk]emRblXbkYbd^Z]ecblbgtU`nVabhe[iq]bmR`lZ_oQ[pM]_LT_J\]A]i6WfoS9jB2rA#vM0uR.uO)|O1†U.€Q+zP.yP=‚U6}N'|M-ŠG&‹D'ˆ=2‹E;‰?6ˆ4)ƒ6-B.?+‹C,|K$vL$|R)yZ€S!P-~\2}Z-v`+€c+yl2}pcd5mh6rj=ntAbo?`l;Y`.Y`0\f1[].[X0b`4cf9_iG`fOZoJ_nFckJmsMfqUci]gd_ieUrk\ig_pqdpummggkgtlessgphadkgjmenw]qtZ~xZ}uWynW{kX€tUzr`xii|mf‡ymƒ{bzp]Œlfs]i^q]zqL…nWƒpPƒ{Z„|Y}UxU„wU…T‹\|R‚€P†…K‰‹@‡‡B|‚8€‰8}‡>…„F‚vB~uH|u;xj0ƒd0‹i'—j;”hA”r=u;™y@˜t@ŽvE†p@ŽuNŒxOŠt\“xZŒxS“€Pš‚F¢}M™ŒL’\˜’Q‘ŽV“‹Mš—M”U”‘Pš’T–£N ¨SšŸ`—¡Z›§Z ¤^¢™\¤†ÒمØ؂ÖÒzËÕsÍÒpÒÎqÎË{ØπÒÎy×à‚Ò߈ÍÎzÊÙ|ÉÏo³Ëx¬Éx¬×o±ÆzµÆx±É~¨ÌŒ¨¹€¨¾‡™³¢¸Ž²ˆ”¨~”¥€‰¤ƒ~®¡‰¥€‘•€˜–|‹v‘•v—–y‡s“Žr¤Œzª•o±–w¯‚i«Œt…}£‚s¨ˆx®‹y°h»…r³ˆf¢k¯ƒtªvj¬tq¤vlªjp›rt§hg©onªke©jc«mZªhY¤jkŸq_¡hl³y_ f`˜gj“pgŽkh„m]ƒhfŠds‚gpzdqvceyfb{a^u]Sg]S]PYh\a[]\e^cdml_sXjgbpahhabs\asYXoJXsGXfNVfN`lPZh=U`GTeEZcET\CSh=]g<]X@^\GfYHoM?j[=qW4vD(lB/rI1rP$~Q3sL6L)R6|R=xO1|R.ŠE(C'„N/‹@*’84ˆ=2~C+‚:5Œ:,F1ŒG ƒW#‰L#~U|Y*‚U[+ƒ]0Z#{a/sd-ps9vk5s}3cu5``0nl*ln.pk-`s9]p>er=bd5ba([m.dd,gk+hf:arXrKZiO_oHbnLduDooLmr]ig]xbcnqalhiqnjn]ivdfqcstmnv]nj`hgWjee{q\vuMvRuave[|qgoa}vboiˆik„qhƒqgykjygƒm\’ejˆoY‚mVcMoLkP…}_‚Q‰yPXƒ~Yˆ†^uW†€U„‚GƒBzwAƒˆI‚ƒAuz?yxEr?yqJ‡n:{t+{j(„s#™b2–k;‰f>“w5’zCˆzH‘pI“tH‡jSŠs[ŒyL–qZ~M–uN”zZ“|F¡‹L¤†[ŸŽK™~H›‹Oš’D¢ŒJœ‹T™”J¤˜DžY£V”£^˜šX¥™^™c¤€Ï܀×҂Í×yÓÔyÕÖzÜÕwÖÚtÕÞtÛÕyÑÜtÎЀÍÔ{ÊÓoÈÊo¹Òs´Ìp³Õt½Î|½Òƒ¶É¹Á‹¬±ˆ§«‹®~Ÿ®~—³|Š­‰©~‘ †Œ¤ˆŒŒ‹¡‡†˜~‘œ{™zšˆ“Œƒ•“‡œ›|£‘s¢‰vªŒm¤„m¢€p†w¦‹xª‘y­Šn­t±„i¤b§„eªtp©qp«ijžjr˜roŸoo¦to¦ps˜cjš`m¡be¢^l¥ae›`d¨op¤tf¦k`œcim`‹gbŠb^ˆgl‚hh€kpydf|g`|bbrg[a^X^UZbU\]VdY__Yjgbtd^oifgendim]aobed^YgO`cQUkM[eDUlCRdGS`ET[IQXGWZNQbLJgIT]*‡>&?/‚@,€D.‡N*‹I‹UŽJ…MuL&tS)w`&v_$qi'pf*zj0rj/fk.ku)`s,dm)jr,br#bl1_u1hp3_g5`k1[g,\d1\q$]k-cp/hv<`m=[oGfoFdqLngJtqGioIlhKukX|oSrn^qbg~^ruapv_sv^uzhwvfoubwsb…lXƒtW‚tPvY{i^vdhwgjw`brjewmfŠkqŒqzŽosjdŒuc‡qh“hf‘h]ˆdVŠbV‚bVƒeW„saypexWˆ„a€ZŠve…|^ŠvX†wSƒrG‹sKv@~€Cu~=|z?…~:Œs=ƒo7ˆq0ƒk0m+”n:Žh;Šc=†o=Œo:“pH‹mOrHŒgR‹mV“oLœnR—zOž{Z—x\œ…O¢…Iª{M¢IŸK•ŠPžJ•ŒF K›‡Oœ‹Iœ’T–W›—YŸ•b¡›c¢[ž‰Ð؆âÞ{ÐÙÒÒ}ÏÚzÛàsÍäzÍçvÎä{ÏßyÏÑ~ÒÙzÍÎvÌÅoÄÎxµÖs³ÊxÁÐ~­Â“­¾Š¶´‰¨·€£«…¦­|˜¨„–¯†‰¯|Ÿ…œ}‡©Œ”œ‹™‰š{Šœ‚Ž†sž}ƒ™ƒ}›†œ„Ÿ‘tž”}°’q¦ˆr¨ƒk¥‰oª‹k¬Šu±…i°†o²‚i¤‹c¦ƒjŸqs£rq›oh“og£ja˜kk˜qy¤oc¡hb¡i[£ZhšY^¦cdgnžqgžoo¡uf—lcˆh^„ec~gcŒ^e‰jr‰ik†mkuqjmeelnXod\`NPhUPXRZbYU`lYal^lmbjfbncXbeWn^`jQYgQ\vHKnQQnJPh>Xq?JiSQeO[aCVdHVkHT\GPe>`[CZ`CiX@mb1gY,l[#oV"sV"iHzGqN0vV-qK)uU3uQ6†P*‡P)‰V/K%†Q!‡B!‡=*?/‹I)C&†P+†P"ŽQQ‡R†K'~Y-uW)xa$qa+ej"l_+qm8od)me1ip-_r&_k"cq0[m,]m-Vh2dh>Vl&[]0Rf'Qd&Zl+dv4cp@]jDek:fhGadCfnJjfL\rJsjUll_liYyha{do}mh{e}u`up[xrdn}curczzUlPˆxU…}K{wW†g_€neufspeg~okwok‚ju‰cmskfi€tcƒpbŽpkŒcYŒ`Rb\ˆdOlXƒo_xjUˆpT{V‰†ZŠ|X„xZuM…lL‚}QxxMwsBss?|vC~tE~rEtC„p<v9‡e+€v%ƒj5qB„mJ‘qH‡kL’vH€qC‰sBuQŽyK}Tš~V—r[šp`¡„Mš‡R®W¥vG›ƒI ŠQV‘‰JˆK¢ƒW“ŠWVžŠQ’aŸ–a§‘c£]¡©W”ŠÝé|ÛÛzÛÏyØÍxÖÒ|ÍãyÙêwÕä†ØӇÉцÆ˂ÉÌÏԁÒÏwÆÒw¼Õz½Ïx¸ÉŒºÍ‘ªÀ”§¼…®º‚¥¬«¨‹™£ˆ‘¥†ƒª}ƒ£ˆ‹š„ŠŸ„‡‹“Ž†”‰”–|‡y—€w¤}„¢ˆŠ¤¡z›r¤y§„r£…t§q¤†i ˆn¬ˆl¤Ši©‰f®Šq«~pœvh•il”sm•tinaib™pq¡fcšg`žgc¡\`™UdžXe jpªnn¥mdšei™l`Žldnozmmbt‚iw‡qyzlrtmdrrgkg]l]^nXQiQQ\YXe_[kebea^hldcoXhdScd]fYXpYYpYUrUIvEMpH[qFMrOMtOUdOY]@RdCUfISeH]`:Tg@Z]9Vb6Xb:g^4p`#nU+jT$kS*jMrU$yM'Q2zL-~V&}[+za.\-€\'ŠJ “?(=*ŽD-‹I,„D1N*ŽH#…R'ŒK#†NOP${RuQi\&i]*j_._h/fk(^e'di*ai(Tc/Ra0Pf5Vc4Ql|l?ys>um?~l@}p2xm(ƒt2€sAŽuE…nNŠtH‰zK†|K‰zJ‚B}G›xK˜ƒY•„[–uY›xTž|S©yJ£xLŸ‚L˜‡V˜„NžŽM¤„Q†U›U ‰V¨’b©‘\§–_¬‰S¢–K•£S™€Þá~Öæ{Ðß~ÒÌxÊֆÖ؀ËêxÚê}ÔçÈىÐ̀ÒÎ|ÇLjÆÇzÇÐwÄ؁·Ì‰³Ò‡²Â†¯¾Œ©µ¬ºŒ±­|¦¥©«—›z£x‹–’„†‘„”ŠŒ–‰‹‰”™ˆ˜ˆ…š„„”…š†w Ž„¤‹ƒ˜†u›‚t ƒt x¤ˆy—yn§„x¬ƒu™u–„u¢twž|lžpe–nf›ii”mnbkak™i`ªad¥`d¨`^›Yg§bc¢[k§pv›fo˜er”mn’oh…pi~pxpzvus}kxzu{~qo{bjqfkec\maas]W`aJ[UPa]VidYh`XfaV`^VbY^jV\laTdXPp]LvFFsKF~IRrCYyLUvPUq=^_8TlAS]CN]IWhGM^4_c;Ma0Sb9X`&f[*m^*n\&iS'jLsUoVyQ)vX"X „`{^"zd/z\*ŠSˆG(ˆK#†I+–R#’L(ŽU%ƒZ)‰N(}U'‰R‡P#wTU|ZpW+fZ&`j0]l)X[$U`)Um.ed2_c[i>Uf2Uh/Qd.Yg-`\)h^&bf&Zf*Vh5]c@XfETn;SsARgFUl;bo=hfJhb]_kaXk^b^drWmtasuc€sj|hi~kWtiTrXrSƒwPwwV{z\}{\|s^yjevqf€zg‰rkŒth“ljˆdcƒ^iec‚bh†kl„jaƒeT}fWd[…[Q€_I‚`P…pYwp]yme}s`~lV{qO{|PmuPlwTltOrfNy`YrXYm_NghMri=qb3tc3qg2h7s?‰pJsPŽvKŽtG•oE•tRŠ}QˆzH˜€H˜}N‘„O›L™N ƒQ¤v\£v`©wZzPˆN’E¢‹F«ŒF®…N­ˆU¥ƒP£M£ˆO¡“H¤˜J¡ŸOž˜V§€éÝxàè…Ü×}ÜÞxÙÞ}Öã€Ôà|Ðà{×܃ÑßÞÑ~ÒǁØԈÑÓ}ÓÓ}Ñ́¾Å„¼¿„®È”§À‰¨¹ƒ««x«ž~¤¤}¦¥†ž£|žš‹›ƒ––‡’ƒ•†„„Œ‚“}†Œ†ˆŠ–~™€“{}™ƒ€™€v–|˜‚{ ƒs‘zt™uu¡€w¢€l‘pq”sy•po‘|o vdŸdg˜_i•_ežhs—Zbš_e˜fjšf`¢\h—_e˜Ve£hj dr•Zv™[z˜aq…gs„cqznpxnxrukztx}rhymkmVllVjj[Zh_a`\Xla]g_Rq[VqaRfa_c`[lZ^oNOjPZ`KYaNVsCWrELxNQtNE}@PyEbn:]c|`|gDysIvBjI‹yN‘~Y“yWžwM™‚V€N‰J‡ŽTŒŒ\—~_¡|`¢ƒh¤Šg¢†[¦„]˜|Y˜zS›€[ ‰K¡K°€R­PžU£ŠV¬Œ\¤…S¨‰L¨ŽV›„Þé‡æìƒÚí„Ùâ†Ùè€åââãqÙãvÛӄÑ×uÓӂÚρÐǎÓÍ{ØÌoÈÍwÂÐ}¿¹°¶¯ºŽ³±ŽŸ­y«©³™z«§zŸ¢šœƒ‹™ŒŠšŠ—‹‘’Š“†„Œ…”†‚˜|“‚™|Š|€˜uˆ†‰¥z›}ˆŸ~¡ƒ~Ÿ€‹p…£z|£lv¡rlŽxs’hz¡pl™``žXh¥Xo£bo¡_u˜Uh•dgšYfQm•Rc˜Rf§Pg˜Rm¡Ji•TyavS€€Vkvct|auyjtpjjp\u~Vkrbjlgke`mk]paer[ZbcVhhOZeNczVapZWlN\wKgkRYpCcgJVpLZj?]q=OzAWnGL}CUg@W_8bg;Sf@\]CXX?He=Qe;Kh3Vl1Z[+aU&eV&_d_X\_cWbYqSzOW^yS}P‡SuX-z\…K%zO…C"ƒR&|Z yN~W'oT&uRfY"fglcx]iSlZhehgWc+Jg)Oe9`Y1eb2Zd?a`=jjC_s7amFZh8cm;^m3k|3Yv4]|0Xn7VrIYmLcfB\pDad:TlM_^CZhG]cS_dYgfPgf^]kmalrhxzuwo{xvxttqm}pf„xc„wfxvV|x\xyaƒpgŠwdˆyd‚€W‰k“ljˆci’kg‹eo€btin\jh_–db“cQˆdDˆbP‹fH|eR†gKzmS~p]ŒxcŠg`ˆkXr[Œt[€sX†mR~mWzncthYud_waRvkGrgA~nJxm=†m;ˆm7‚mCˆtC„gO‡mIoPŽtV›sL’€Wœ{K“‡]š‚XŽ‚S‡Š[„[˜†`¥…^©‰a«Z©z^¢‰`™„T ƒT WªF­ŒR¢€P¤‹V¯‰X±‰ZŸŠZŠZŸY–ŽëìŽâî–êäççŠëކåۂÜÚxÝÝtàÚ|×ÍzÓӄÙNjÓЁÐʆÚÇyÒΆÇÁ†È…ÇŌ¸¿ƒ¸Á‰©±…ª§z©¤ƒ ¯ƒ’­‰‰§Œ¢Š–ª“”¢–Šš‡ˆŽ†ŠŒ‘€’x… }{¢{‚œ|‡¤ˆ£}¬~ƒª{¢Ž£{†ªnˆ­p{«w~£vƒ˜f|˜fs—_lŸdk£`c [k™cf [l˜OpŸSt™NmŠSu“Ln”Mp˜Lg¡P^˜Cf›GvRxŠS|†W|„Svt\uobnsawpckqcfvUilSombti]uidokes`_he_ihMllKdsSfq^]sYh|NdsM`hM_f?baAbeJcuKZwD\nBRrBRp:Wa>Ue;V]9IY=MV:HSBN_>VYdcD]e=Z`AYkLagGmtJoqQkpgksmluoi|wftutuurtzqvƒvm„xg|c|c}sg‰qc„{j‹ye…{k‰|a{`‹mg•bc“akŠdg’iknq•al“fa“a^š_\‘kNbS†hN†tM‡rS†wZx[‹|_•pg‘nm‡ya~_uT‚tZunbwxf‚q^€lR|iU~qK‚lR{qJxuH~v8€k9‰r>iJŒrP†jQŒpLˆvQ’{V{S˜…TŸ}\™xd„Z’z_~g”vj¡}ežƒa›‚a¥|bª…\Œ\«…OªŒM£‹Qª…Qª~Vª…T±„_§Œc¥…[Ÿˆ[¥†QŸêóêî…çàŠÜâˆåçŠå݋çå{âقÔÛzÒψÎʈÔƉÓÓ}ÐÐtÙÏzÑÀwÇÆyË΁»ÇˆµµŒ­¶‰µ®‚«°r«®ƒ¦°•¤‚›£}‡Š¥Œ˜›Ž“›ƒ“ŽŒ“‘œ‡˜†Š¤Ž–…Ž¤y„¤‚Š¤„Š¥€€£x…¨qŒž|¨p€ž~z™zu¢ws–pr—qx—b¢ei—hr XlRt¤ThžR{¤W{œQpNfNlšGb—Vm¡MfŸLcŒPb“Si…KkxJt{RnsUiuYtwMhz]tnZby\tzWjwYvgXq_eze_tmWzhOftGivMk~WXnU[{K`kSWpC]q9__?__I[dCWpMYm9Sr;Qo?[a@Q\:Pc@TV8O]6YN1H[8Ld:S]1Sc.OX(P[*SU%fZfZnbrTsNnYzRZy] sSZuMxQ~Y*qO)K!VOvO|Sl]sVcVnYeQ"jV)hd*YVdU+dX*gc%Rb'[`.\b2]a2Xb7cj7]l5Zw=_gEfhHeo@lmI`m9bs9c€BVI^z9Uv<]aGe`Nc`A\bFbeJY]JbhHcgRaaSmeTuoXpspo|pn|fn|itwppuxpntrw‚h„wmt|cv|[…pf‡nd‚tb{yqpsŠ~m‰vfŽgdimŒmq“bl™ir“Ynœ[]Ž_[ j[yTrLgQƒj]mSŽp_w[”mb”tiu_ŽxU…zQzwW{sS€je€h\ˆmaƒgV}hJxcMxoR{pR†tEiK{vElH€tO‚pKmW‡tQ–nO“yV”}asXŸYŸ…O›{Oœ…axk“{dŸ‹]œ}i „i›}m¤„eŸf¢[­^žˆT©€`¡ƒ^žU«‰S¢{\¨‚S¥‚\¢ƒR˜Ýñ~ãí{äìƒáڎß߉ë݅ßۄ×áÜӂØσÕȂÔ҉Ï̄ÌτÖÆtÕÃÇÃyÂÈ~ÈÀ„½³|±±|²¸v²·{¨±„›®€›¥ˆ’«~Œ£‡š|Œ•…•‘ƒ‘Ž–’œ’ˆ ’†ŸŒ† œ{Œ›v£yœwŠ¥p‡Ÿnƒ”z‡š~| }Ÿvy˜ry›wvškƒŸa„”cƒž]r¢^kžYq¨Sw WxLp”Tt’OfˆFbNj‘Um”UlŠOhŽQeƒPcReqEvtEvpAmnJdsKisIgzZo{Zqt[poSxadw_cxc_wvTz{SrqEp}J`xQ[vTZzGSuGReFWj9Te4Qh?UgIchG`k?\oGWp=X`6U^3Vd4J[3OV7SP0OW2MY5RX(Ph#J]-Ma%]W!fWob k[lRqUlY -paxfv\{Q -pQqV!xW |J(sN'xQ&V rNlJnIpUm[hYc[dQ!\N#Q\"]\)]Q'`Z&Z\-P\.Rb3Xd/Ob+Qb6Th9Tm=[q:co5ag>mfKglGgt9Zs:bxG]{Cb{IZt>\o9_eEUe@YlGgiNciLdfJedPn]Sid`piiutdsomlvfxpbrsgyoisqlyfkey„nvzirx^€s\‚s`xi{uj‡usŒzgxiŒkt˜`n’\q“hr“`j^jš^kžmZ”oN‘vJ…p[‡w[†s[uT“vRŽnYŒudˆx]‘vR…T‚|M†Sxayn]l]ˆuY‰gL}cNxkJkPƒqT…mP„iFxoI}pG„rV‡kUŠf[‹qS”qQ‘q^šs]’}TzQ€K•€O„\žy^˜ƒ^¡ˆf ‰f~k•{t™{k¢h ‚_¡€X_Ÿ–\œ‹]¡‚Z§€X yY§{W¨‹IJ¢’å߇èé‚èäîã‡íۀàßÚÒ~ÙÒäՂØ΁âՀÙ΅ÙʅÒÐvØÃsÑÍÇÃ~É…¾À{º¹z¸Á~µ¿¶°~Ÿ·{ž®„—ª‡—Ÿ„§x•¤‰•–|‰…‰“‘Š–†š†•’•“‡œ—‡˜§w¥sªl‡žx„š|€œs„—o„œu…—z}—xˆ–j{l‹Ÿcœ^†œZ{¡bz©cu Z| Tv—LoU|šXlŒMl‡Sl’Kj‘Rjˆ[`ˆTixW`pMgnBlvIuy?sqDszL|nBztT|vZwxWolStmZva]ziLtiTpxIlwJe{QdyIe~NVs?_mEWlCPp>Ik7MeELkDWl9ao9``6O^Tqan6gl=dnDhg=fsEWy@Y?f…IiKbwI]jLatL\nA`fLakGZdP[]Hd`Njd\gdeoebsj[pgelqkiwiordnulvilljux_qqdx{hmlesvhv~kvslqin|{l…yi‰gu‹al™anhg–hl™Yi¡l_iY‰iS•vU‡rS‡waŽqb‹}[•~Z’w^oW”rc~]”zRŽ}Zˆ~M‰|SxvR{nVymV†mV}kKƒbSaKŒmK_W…rV‚oK}jP€v[f_m_‰uV‡vI‘oY”p[o\™~W”}V¢†X–{a•ygœj‘aŒk“yr yc£„n§†oœƒh§hš`¢‰_Ÿi—…f˜ˆZšvVžrQ©„PžIœ”âܓäޏå؅ïà‰ìå†á؇æۈäԇãÈxçÊtÙÆvÙÉwÎÈxÑÐ}ÙÃ}ÒÅqÔ¾uÒ¼€Ï€ȼ~»Æ†µ¾‚¨µƒ§¶†ž±‹˜®Š’ ’œœ†™—‰‘’ŽŽ‡Œ”ŠŒ‘”‹†–šˆ‘œˆš—ƒ “¢w‰¦r¤p€žr‚šr†›jŽœnˆœxˆ¡xœsŠ–gƒœe‰ža^†£_xšVxXySv‘]wŒ_xOqHs„Ld‹Se‡Y[ƒT\†V`{HcqHfxGgsBjoHotArvG}zBsuFxnPwlGxiHllFqhRssNplHsmVjyRj~RbwCUs=XzE\@YzJQlIKk=I^CN_7Wh3Uf@[^[o@WlCYl;^vo€M{mLynUqoEpnDpcI|nKucMirKk|Cc€MlxEeyDRpDSw=SnHUl=TqHMg5Vi>Ii9Yl?UfEPo9F_7Hi+Dh0Kd3Bh*Ng5F]2GU0DP*QTBbUY -PP\RYO ]JbSiIgQ cK_FbX -uYdMlL#gGrR$kLjL!`N%gJ%^O^N&fCRD WN!]I+VQ(PI#TP!SB/GH7QL-[D/MA/OS&OP#SU&\b6bV5\a.[l;`i3f`BaiBYn=Zm>QsCXpBil:esIjgBcl>kgB_r;ggC`l?\iHSeTVh\WbXY\Zgfnol[ykexpjxue}sqrqovmbqodenft[ml^xdbzw^xt_‰op~}hwvw†tr…orzehhv‡hm—ad m^’l]ž_^—e^‹nhl[•ja‹mV}V‘qWœc’sežv\‘vf—uc‰~Z‰uZŽ~R†yPzRƒvOypR†xVƒyS€jF‚iT‚[E{gO‹mP€nXŒq[’jT€eT‰hctWˆr^—z[’}PzQ’wSyV•w^Ž|W˜‡Y›b™…l•i™†r–}u–€u–„u™ˆe¡‰h˜c›ŠTd‘†Tž|ašxU“{S—~S˜R£‡R§Šóðˆõëƒý߉öãŽð؋ôلëàƒè܃åã‚ð؅è͂쿂äʼnâІßˎϿ‡Ì¼~ÃÄ|ʾ}Æ´uǽz¾Âˆ¸¼„«³ƒ©­‚ž±‚¢§~ž¥}—œ‡— ›•ˆ™„™Œ†¢–¥Š˜™~•—‚Ž y¤u‡¦{Žªx¤s‡s„–o|œf„”h†‘m“™u˜r“‘c”j•™aˆc|œat—Wz[p›WrHwšKmSt”Rs‰NoƒTb‹bkŒcl}UpzKe€QlXguQvzCsv>j{Lg{Mt|HqqKgp?ej>uc8{f;rsHiqNbwHlzBh}AbwEPq?Kz3Mz>Oj=Rp9\h:On@Nh9Om6Vo8Jk;Cm3Mc#J_"TX,Na(Mc7Kc9NU)QV)PS%DWITPMNVZMUW `RcIgL^FZE_NnWoL_M#nTkW$k]#cS gJ dP ^P#`>%`B(YG^IRS%TI1NE+SE(GS)SN+WJ6]B2QJ,WS%T\+bb4`Y4QT-SW+[c4Wn4`m6_j>[sDVsAPpbd;fb@f`DbiC\`TTgSWlQUh_Qmb]jfac[ui^trctneuqcukxmfjffe\rqamlh|jk{jg€n\oaxp†wu€x}€gz|`iƒef•djša_œmcšm_Ÿda–daŒqbo]–h]’a^j^˜oZšxa™t[“oaxb‰vZq`—sUŽu_‡|Z€sV|iL€uY‚vW‡uQytMyfKbHƒeM‰nQ…{SŒvW’sV“j\‰ob†t]ŠwT“pV’tO‚X‰ŠSUŒ€][˜e™ˆg‘”e”qŠnŽ~o˜xk—~s’ƒq›Šh—†g™‘XœL›~Q›€U‘€PŒƒ\~Yž…Z¬Œ[¨‹õð€ðíõè‹óæ‰òå‘ôâ…úٍíæ‰îá…ì҅çāðŋßÁ~ÚʋÚÖÑȃž~¾Ç½Ä|ɺ{¿µ~ƽ€´ÄŒ°¿¦²…ª®«©Žœ£ƒ˜œ‹”’‡””œ †ž›{¨Ž§}›~‘œp†¡tŠšv†œ}‚Ÿv’ªo“¤tŽ™fˆ™p‹ŸhŒ”v“”q˜q•f™c“ži•U€‘T‹‰X‰L„•Tv•TzšIu“Uf‰Lu…Ze‡[g’]kŒ_i{Zly[mxPbwUjQw~LxuIlrJf~@pnEliDnv8noFyp7vl8np=elFoj:l{3as:fz=Yo/Pn7Nn6Xg0Ug>^h3No1NfAJn.Hk,Gh/Ri7Pb/SZ%T^([d$UZ-O[4Pf4R[$W_$IXIMLZ VJNMXUVKgQdR`N]M gW -mYfQbG$`R"eW#dQZ\&^R(_Dg@#b>,\;[;YD&TL&]QGR,KT"HR4HV8]L9SN+^W`]:iaHUeM`n\SjV_ifced_pb]pkmolseXxr`{gk€f_~ljto`gijghpa`liiymg„hctb‘ogŒsoŽkzŒtuz`z`oˆfl˜gnŽmeždežhY”i[–h[m`‰qb‹ef˜h_‹mT‘r\‹tZˆmW”qX…rQ‘}W–kX˜kZ—tex^„n\ˆhGƒiJ‚h[‡qO|fD‚iE{hP€nKrL‹w]–ySŽq`hg‹ob•}g†yZ‰„a†[‡x`‚†_‡`•~YŒ‡_šŒc}c‘Žg““i„zŠs‘k”ƒw—zj—…\—U“ŒU–†Y ‡MGŽ‡N™ƒWž‹Vš†Jª‘W©îæ‰ïæ€öí…ðå†ñè‡ûރ÷â…÷â€üà€ðׁ÷χíÄßÉȬÏӌÐ΍Ềľ…õÁ¼}¿¸{ÀÂ~¼Àƒº½‡Á·Š¸¹‰©©¨¤“«“–¢“Š ‰¤•~¥Œ}«Ž‚§†«zŒ›|—q‹žmƒ˜p„œgƒ¢c†žd—Ÿh’œe˜šk’Œk‹ŽmŠ…t—‡r›‡m‘cšˆV”‹MŒ„NŒ‹K„’S}šVršMq–Qk›^fŽ]cŒRe‡XbˆQ_‚Vc‡Pg|Tn}Oq{Gz}KuuMmzAmrBon7co:frDpk%aDg>#hBaQ^YPT#SP3QR1WS/QF0YP8\]:Tg5V`6^T2bS1eN.]Z,a_3]f.fi9`f=VmF[gEYgKQlD]h8_b:^h@]h;gc;ah>YjGXfVWea`ea_jbgfb`iajtjqpeno^skYyf_pk^xj_tqnkik_ajafm\kral…lh‚v`km—hq‘^r…dv…\y‡_l[m•al‘c]žl\œuZ›m`“f]’fT’rR›l]’fU…qS‚yR‚t[†pUˆuS‹{Y–tZŸkY¢pb™th‰sbxZŒvO‡kGkO†gS‹fL‡oQ}tJ‚xJƒzTŽuS‰l[’sjmgta˜`„_š‡^–…iš}bŒ‡_…Z”W—…U•†_œkœ‹e•‘p•–r‹v‰†q”‚l‘ˆi™~[š~TœŠ\O•”N”’M”ŒL•M•‰F£ŽFŸ…R xùãˆêã†çۀèæ}úÝóØ{úàƒôԊóã…ðۄñʓå͏á͍àƂÑǕØٍÕÀ‹Ì½ŠÁµ‹Å¼…ľ†¼´ƒ´¸|°»Œ²·‰µª¼§Ž©˜‰ªš¯•Ž¨‘”«˜†°ˆ§Š¬|ˆ§y‡¨ƒŒžsŒ˜oŽžp¥qŒ¦oŽ h”™b‘¢m— g™h‰“h•‡a‹“e’–m“[Š•S›…P–ˆS‘J‹‡[‹NQqœXdMdƒNcŒRk…Lf†Wa…[m~JtyVpzPguItpIyvMszCim8rwEck6ie6jh@dp=lh0so4sh;mm7bk6fq-Wp!Rq&LkVe)Zi \y-X‚9Ro.Ok,Ic,Hq(Wd'PZ-R^*J_NiY_,WkgkZjOc#Q\N^ XV -_XORRMUUOO -_JaT[UhZ _N_FeOVXUU"]SUKcL+bG&g@`@e5%^9&h>!fIbEQWF[OO#HL%TJ2M>-ZQ)\Z*d^,Yf;dY4dP5XU9Ma8V_ZsLNn>Si8Yb9dj9dd;[_G`lNa_N`qW\aYap_\fbXnb_j]kzgcvhoz\rnkuwbofmtkgpbpmog`jl[iebjqfg€oowa˜gb‘dvŽ_t‡ov†jnˆ\w‡cl‹[e_dšqc—uh mk¡tb›gf“m\Žuhn`…d\†d`Žic‹md‰w]‘pQ”lWžxU—sY tg’|nŒmYŒoX‡kNgN†hK‹sPŒoFˆxP‡yQ€zLŠxN’yd‡uXvfŽ€UŠ}Y†‰\‰b†…iŠ†^†ƒi…vWƒU“ŠX“Šd‘\ž‰p‘r—ŽeŠ—f‰q†…f‘|c‘uk¢‰_˜‘ažˆU›‹P¥”Y‘V‰G™•Tœ„R ^©sóävìã~éåîßxíÖvíÜzðҁúֈñáŒíەæՓäјîĒçĈàȌØԆÙɌÎÅȺŒ¿ºƒÆ½ƒ¾¶²¶‚´°Œ°¨ˆ½¨†Â¦†·—Š¸‘–²•©Š¯Ž“¨Š‹¥„‡¦Šƒ¤ˆ~Š§ˆ¢xŒ—t„£iƒ¥n‹žc˜hžd™ži•g“‹a•‰\Œ“hŽ“iŠ[—Š[–]Žc‘ŒXŠWŒP}To”\h–Yn†Gb…Nf…LcyXm}Up}LwxKjvRlkLuoGzqNrs>jv9ug;nd?ot5ar9av2co2pu3qq6ev5iu.Zu(Vp#SvWjcs_t&]|-S{&Ju$Jg+Qs1Sp-Pf$[h'QcOhKjWjcpcf!Wf$McKfP] -YZXGYE]OYJ\O`J^U ZTePjQbHZR$a[]P#[V[P$_N ]E]9\Ad9b6Y="YK"[JJLGQOFKH'GB!NETP_L'ZY0\a2Xb.[\2Yg8Nc=JaANc?Z[7W]9akHamFVrGYqGXmI^a;_]Aih;]`CVfOXnN]jW]fLcoMfiaZse`k^endol\nvcwv`qvmuvhkkknktnfmrldedhemmplzmn‹ja‘blˆfp†mk’moŽdi”bret‘_ngr‡msŽrv’tr op¢hj’jstoŠf`ƒf`‹keŠddˆsX”p]”rb’rX•nX–qYye—viŽqb†v_fX“eO†sSpL†rJuK‰lOŠpJmQŠt[‰uYxX“€X…T‹ƒV’‚g‡‹o‡†iƒ‚]ˆxa†y[†YY‰ŒY“‡_”Žp’c“a“‚^d|_‘|i¢„`©‰[§ŒSŸT¥‘S¡“V–›Y—’R›•`ª^©uöõ~ïã÷äîãrîéwõå{ù؄òօëӌîԘíՏãϒçԘä̊ÙÁ“×ːÖ̏Ë‹ÈǔøÂ°·½}²°…¸¬~²¨…Á¦‹´ªƒ¼”Ž®’—¶‰Œ°‰¦‡’§…Žž„€Ÿ„ˆ¯‹‹ª…‹¤w¥rŒ–u‘¢{‡›tŽšvš‘n”“n›”qœ—]•ŠZ™“[—•]•aŽ—_‡„bš“_—‹T–ŒQ’‹QŽyZy‡RtŒSw„PwwI|yGl‚Bl‰HuuMr€GpoNpsPjmIvsQvgDwn=jo1et?gm5ao/dc4cc,Zh%ds*ko"kg&eg#jh+`d"cpYlXs\i$`h*Rn$XgYi!Yp*KoMt!TjRk[m```hXleaYa^ZSV UWYP XG_DYM -XMVVVS[R^T -f`YPfN\JZUZSRM`TTNUDW7W9]B a@_8XKYHJRNQEGKG$OG#^K]F^R2]T%_^6_`:be3Lc5O[>Rk@Um8Uk8ObEShgf9a^6e`(bl$_o%_q'knbq$df!`ddbig^f_c`h$YoVl]f\i]k OlHgKjRfYqUo`_Vh[b -```W^PUNTQSI -QK -`QX[T^U\ [W aXW_P^ZXVR^N UU -XL[MSM _B]AV= -XG -XN -^C]=TBSNQITLQOWJ\G[D)`N0aP2Z^.^b,W^:V_?Qa - let name = sel#get_filename in - sel#destroy (); - callback name - end; - sel#show () - -let w = GWindow.window ~title:"Okaimono" () -let vb = GPack.vbox ~packing:w#add () - -let menubar = GMenu.menu_bar ~packing:vb#pack () -let factory = new GMenu.factory menubar -let file_menu = factory#add_submenu "File" -let edit_menu = factory#add_submenu "Edit" - -let sw = GBin.scrolled_window ~height:200 ~packing:vb#add - ~hpolicy:`AUTOMATIC ~vpolicy:`AUTOMATIC () -let vp = GBin.viewport ~width:340 ~shadow_type:`NONE ~packing:sw#add () -let table = GPack.table ~columns:4 ~rows:256 ~packing:vp#add () -let _ = - table#focus#set_vadjustment (Some vp#vadjustment) - -let top = ref 0 -and left = ref 0 -let add_to_table w = - table#attach ~left:!left ~top:!top ~expand:`X w; - incr left; - if !left >= 4 then (incr top; left := 0) - -let entry_list = ref [] - -let add_entry () = - let entry = - List.map [40;200;40;60] - ~f:(fun width -> GEdit.entry ~packing:add_to_table ~width ()) - in entry_list := entry :: !entry_list - -let _ = - List.iter2 ["Number";"Name";"Count";"Price"] [40;200;40;60] ~f: - begin fun text width -> - ignore (GButton.button ~label:text ~width ~packing:add_to_table ()) - end; - for i = 1 to 9 do add_entry () done - -let split ~sep s = - let len = String.length s in - let rec loop pos = - let next = - try String.index_from s pos sep with Not_found -> len - in - let sub = String.sub s ~pos ~len:(next-pos) in - if next = len then [sub] else sub::loop (next+1) - in loop 0 - -let load name = - try - let ic = open_in name in - List.iter !entry_list - ~f:(fun l -> List.iter l ~f:(fun e -> e#set_text "")); - let entries = Stack.create () in - List.iter !entry_list ~f:(fun x -> Stack.push x entries); - try while true do - let line = input_line ic in - let fields = split ~sep:'\t' line in - let entry = - try Stack.pop entries - with Stack.Empty -> - add_entry (); List.hd !entry_list - in - List.fold_left fields ~init:entry ~f: - begin fun acc field -> - (List.hd acc)#set_text field; - List.tl acc - end - done - with End_of_file -> close_in ic - with Sys_error _ -> () - - -let save name = - try - let oc = open_out name in - List.iter (List.rev !entry_list) ~f: - begin fun entry -> - let l = List.map entry ~f:(fun e -> e#text) in - if List.exists l ~f:((<>) "") then - let rec loop = function - [] -> () - | [x] -> fprintf oc "%s\n" x - | x::l -> fprintf oc "%s\t" x; loop l - in loop l - end; - close_out oc - with Sys_error _ -> () - -open GdkKeysyms - -let _ = - w#connect#destroy ~callback:Main.quit; - w#event#connect#key_press ~callback: - begin fun ev -> - let key = GdkEvent.Key.keyval ev and adj = vp#vadjustment in - if key = _Page_Up then - adj#set_value (adj#value -. adj#page_increment) - else if key = _Page_Down then - adj#set_value (min (adj#value +. adj#page_increment) - (adj#upper -. adj#page_size)); - false - end; - w#add_accel_group factory#accel_group; - let ff = new GMenu.factory file_menu ~accel_group:factory#accel_group in - ff#add_item ~key:_O "Open..." - ~callback:(file_dialog ~title:"Open data file" ~callback:load); - ff#add_item ~key:_S "Save..." - ~callback:(file_dialog ~title:"Save data" ~callback:save); - ff#add_separator (); - ff#add_item ~key:_Q "Quit" ~callback:w#destroy; - let ef = new GMenu.factory edit_menu ~accel_group:factory#accel_group in - ef#add_item ~key:_A "Add line" ~callback:add_entry; - w#show (); - Main.main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/label.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/label.ml deleted file mode 100644 index b9829fb77..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/label.ml +++ /dev/null @@ -1,48 +0,0 @@ -(* $Id$ *) - -(* Embedding xpm data into an ML file *) - -let openfile = [| -(* width height num_colors chars_per_pixel *) -" 20 19 5 1"; -(* colors *) -". c None"; -"# c #000000"; -"i c #ffffff"; -"s c #7f7f00"; -"y c #ffff00"; -(* pixels *) -"...................."; -"...................."; -"...................."; -"...........###......"; -"..........#...#.#..."; -"...............##..."; -"...###........###..."; -"..#yiy#######......."; -"..#iyiyiyiyi#......."; -"..#yiyiyiyiy#......."; -"..#iyiy###########.."; -"..#yiy#sssssssss#..."; -"..#iy#sssssssss#...."; -"..#y#sssssssss#....."; -"..##sssssssss#......"; -"..###########......."; -"...................."; -"...................."; -"...................." |] - -open GMain - -let main () = - let w = GWindow.window ~border_width:2 () in - w#misc#realize (); - let hbox = GPack.hbox ~spacing:10 ~packing:w#add () in - let pm = GDraw.pixmap_from_xpm_d ~data:openfile ~window:w () in - GMisc.pixmap pm ~packing:hbox#add (); - GMisc.label ~text:"Embedded xpm" ~packing:hbox#add (); - w#show (); - w#connect#destroy ~callback:Main.quit; - Main.main () - -let () = main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/lissajous.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/lissajous.ml deleted file mode 100644 index 9d6cf3b1b..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/lissajous.ml +++ /dev/null @@ -1,48 +0,0 @@ -(* $Id$ *) -(* Lissajous $B?^7A(B *) - -open GMain - - -let main () = - let window = GWindow.window ~border_width: 10 () in - window#event#connect#delete - ~callback:(fun _ -> prerr_endline "Delete event occured"; true); - window#connect#destroy ~callback:Main.quit; - let vbx = GPack.vbox ~packing:window#add () in - let quit = GButton.button ~label:"Quit" ~packing:vbx#add () in - quit#connect#clicked ~callback:window#destroy; - let area = GMisc.drawing_area ~width:200 ~height:200 ~packing:vbx#add () in - let drawing = area#misc#realize (); new GDraw.drawable (area#misc#window) in - let m_pi = acos (-1.) in - let c = ref 0. in - let expose_event _ = - drawing#set_foreground `WHITE; - drawing#rectangle ~filled:true ~x:0 ~y:0 ~width:200 ~height:200 (); - drawing#set_foreground `BLACK; -(* drawing#line x:0 y:0 x:150 y:150; - drawing#polygon filled:true [10,100; 35,35; 100,10; 10, 100]; -*) - let n = 200 in - let r = 100. in - let a = 3 in let b = 5 in - for i=0 to n do - let theta0 = 2.*.m_pi*.(float (i-1))/. (float n) in - let x0 = 100 + (truncate (r*.sin ((float a)*.theta0))) in - let y0 = 100 - (truncate (r*.cos ((float b)*.(theta0+. !c)))) in - let theta1 = 2.*.m_pi*.(float i)/.(float n) in - let x1 = 100 + (truncate (r*.sin((float a)*.theta1))) in - let y1 = 100 - (truncate (r*.cos((float b)*.(theta1+. !c)))) in - drawing#line ~x:x0 ~y:y0 ~x:x1 ~y:y1 - done; - false - in - area#event#connect#expose ~callback:expose_event; - let timeout _ = c := !c +. 0.01*.m_pi; - expose_event (); - true in - Timeout.add ~ms:500 ~callback:timeout; - window#show (); - Main.main () - -let _ = Printexc.print main() diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/nihongo.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/nihongo.ml deleted file mode 100644 index 48f7d8c22..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/nihongo.ml +++ /dev/null @@ -1,31 +0,0 @@ -(* $Id$ *) - -(* ¤³¤ì¤ò¼Â¹Ô¤¹¤ëÁ°¤ËLC_CTYPE=ja_JP.EUC¤Ê¤É¤È»ØÄꤷ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤ *) - -(* cut-and-paste ¤âÂбþ¤·¤Æ¤¤¤Þ¤¹¤¬¡¢edit¤Ï¤¦¤Þ¤¯¤¤¤­¤Þ¤»¤ó *) - -open GMain - -let window = GWindow.window () -let box = GPack.vbox ~packing: window#add () -let text = GEdit.text ~editable: true ~packing: box#add () -let font = Gdk.Font.load_fontset - "-*-fixed-medium-r-normal--24-*-c-120-iso8859-1, \ - -*-fixed-medium-r-normal--24-*-jisx0208.1983-0, \ - -*-fixed-medium-r-normal--24-*-jisx0201.1976-0" -let button = GButton.button ~label: "½ªÎ»" ~packing: box#add () -let label = GMisc.label ~text:"¤³¤ì¤Ë¤Ï±Æ¶Á¤·¤Ê¤¤" ~packing: box#add () - -let _ = - window#connect#destroy ~callback:Main.quit; - text#misc#realize (); - text#insert "¤³¤ó¤Ë¤Á¤Ï" ~font; - let style = button#misc#style#copy in - button#misc#set_style style; - style#set_font font; - style#set_bg [`NORMAL,`NAME "green"; `PRELIGHT,`NAME "red"]; - button#connect#clicked ~callback:Main.quit - -let _ = - window#show (); - Main.main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/old/fixpoint.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/old/fixpoint.ml deleted file mode 100644 index c41b11b50..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/old/fixpoint.ml +++ /dev/null @@ -1,39 +0,0 @@ -(* $Id$ *) - -open GtkData -open GtkBase -open GtkPack -open GtkWindow -open GtkEdit -open GtkMain - -let rec fix fun:f :eq x = - let x' = f x in - if eq x x' then x - else fix fun:f :eq x' - -let eq_float x y = abs_float (x -. y) < 1e-13 - -let _ = - let top = Window.create `TOPLEVEL in - GtkSignal.connect sig:Object.Signals.destroy top callback:Main.quit; - let hbox = Box.create `VERTICAL in - Container.add top hbox; - let entry = Entry.create () in - Entry.set entry max_length:20; - let tips = Tooltips.create () in - Tooltips.set_tip tips entry text:"Initial value for fix-point"; - let result = Entry.create () in - Entry.set result max_length:20 editable:false; - Box.pack hbox entry; - Box.pack hbox result; - - GtkSignal.connect sig:Editable.Signals.activate entry callback: - begin fun () -> - let x = try float_of_string (Entry.get_text entry) with _ -> 0.0 in - Entry.set entry text:(string_of_float (cos x)); - let res = fix fun:cos eq:eq_float x in - Entry.set result text:(string_of_float res) - end; - Widget.show_all top; - Main.main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/old/hello.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/old/hello.ml deleted file mode 100644 index 60506e3cb..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/old/hello.ml +++ /dev/null @@ -1,23 +0,0 @@ -(* $Id$ *) - -open GtkBase -open GtkButton -open GtkWindow -open GtkMain - -let window = Window.create `TOPLEVEL - -let button = Button.create label:"Hello World" - -let main () = - GtkSignal.connect sig:Widget.Signals.Event.delete window - callback:(fun _ -> prerr_endline "Delete event occured"; true); - GtkSignal.connect sig:Object.Signals.destroy window callback:Main.quit; - Container.set_border_width window 10; - GtkSignal.connect sig:Button.Signals.clicked button - callback:(fun () -> prerr_endline "Hello World"; Object.destroy window); - Container.add window button; - Widget.show_all window; - Main.main () - -let _ = Printexc.print main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/old/progressbar.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/old/progressbar.ml deleted file mode 100644 index f4ad465ed..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/old/progressbar.ml +++ /dev/null @@ -1,60 +0,0 @@ -(* $Id$ *) - -open Gtk -open GtkBase -open GtkMisc -open GtkWindow -open GtkRange -open GtkPack -open GtkButton -open GtkMain - - -class bar bar = object - val bar : progress_bar obj = bar - val mutable pstat = true - method progress = - let pvalue = Progress.get_percentage bar in - let pvalue = - if pvalue >= 1.0 || not pstat then (pstat <- true; 0.0) - else pvalue +. 0.01 - in - ProgressBar.update bar percent:pvalue; - true - method progress_r = - pstat <- false -end - -let main () = - - let window = Window.create `TOPLEVEL in - GtkSignal.connect sig:Object.Signals.destroy window callback:Main.quit; - Container.set_border_width window 10; - - let table = Table.create rows:3 columns:2 in - Container.add window table; - - let label = Label.create "Progress Bar Example" in - Table.attach table label left:0 right:2 top:0 expand:`X shrink:`BOTH; - - let pbar = ProgressBar.create () in - Table.attach table pbar left:0 right:2 top:1 fill:`X shrink:`BOTH; - - let bar = new bar pbar in - let ptimer = Timeout.add 100 callback:(fun () -> bar#progress) in - - let button = Button.create label:"Reset" in - GtkSignal.connect sig:Button.Signals.clicked button - callback:(fun () -> bar#progress_r); - Table.attach table button left:0 top:2 expand:`NONE fill:`X shrink:`BOTH; - - let button = Button.create label:"Cancel" in - GtkSignal.connect sig:Button.Signals.clicked button callback:Main.quit; - Table.attach table button left:1 top:2 expand:`NONE fill:`X shrink:`BOTH; - - Widget.show_all window - - -let _ = - main (); - Main.main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/pousse.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/pousse.ml deleted file mode 100644 index ecf0dff3a..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/pousse.ml +++ /dev/null @@ -1,199 +0,0 @@ -(* $Id$ *) - -(* The game logic *) - -type color = [`none|`white|`black] - -module type BoardSpec = sig - type t - val size : int - val get : t -> x:int -> y:int -> color - val set : t -> x:int -> y:int -> color:color -> unit -end - -module Board (Spec : BoardSpec) = struct - open Spec - let size = size - - let on_board x y = - x >= 0 && x < size && y >= 0 && y < size - - let rec string board ~x ~y ~dx ~dy ~color l = - let x = x+dx and y = y+dy in - if on_board x y then - let col = get board ~x ~y in - if col = (color : [`white|`black] :> color) then l else - if col = `none then [] else - string board ~x ~y ~dx ~dy ~color ((x,y)::l) - else [] - - let find_swaps board ~x ~y ~color = - if get board ~x ~y <> `none then [] else - List.fold_left [-1,-1; -1,0; -1,1; 0,-1; 0,1; 1,-1; 1,0; 1,1] - ~init:[] - ~f:(fun acc (dx,dy) -> string board ~x ~y ~dx ~dy ~color [] @ acc) - - let action board ~x ~y ~color = - let swaps = find_swaps board ~x ~y ~color in - if swaps = [] then false else begin - List.iter ((x,y)::swaps) - ~f:(fun (x,y) -> set board ~x ~y ~color:(color :> color)); - true - end - - let check_impossible board ~color = - try - for x = 0 to size - 1 do for y = 0 to size - 1 do - if find_swaps board ~x ~y ~color <> [] then raise Exit - done done; - true - with Exit -> false - - let count_cells board = - let w = ref 0 and b = ref 0 in - for x = 0 to size - 1 do for y = 0 to size - 1 do - match get board ~x ~y with - `white -> incr w - | `black -> incr b - | `none -> () - done done; - (!w,!b) -end - -(* GUI *) - -open GMain - -(* Toplevel window *) - -let window = GWindow.window ~title:"pousse" () - -(* Create pixmaps *) - -let pixdraw = - GDraw.pixmap ~window ~width:40 ~height:40 ~mask:true () -let pixdraw1 = - GDraw.pixmap ~window ~width:40 ~height:40 ~mask:true () -let pixdraw2 = - GDraw.pixmap ~window ~width:40 ~height:40 ~mask:true () - -let _ = - pixdraw1#set_foreground `BLACK; - pixdraw1#arc ~x:3 ~y:3 ~width:34 ~height:34 ~filled:true (); - pixdraw2#set_foreground `WHITE; - pixdraw2#arc ~x:3 ~y:3 ~width:34 ~height:34 ~filled:true (); - pixdraw2#set_foreground `BLACK; - pixdraw2#arc ~x:3 ~y:3 ~width:34 ~height:34 () - -(* The cell class: a button with a pixmap on it *) - -class cell ?packing ?show () = - let button = GButton.button ?packing ?show () in -object (self) - inherit GObj.widget button#as_widget - method connect = button#connect - val mutable color : color = `none - val pm = GMisc.pixmap pixdraw ~packing:button#add () - method color = color - method set_color col = - if col <> color then begin - color <- col; - pm#set_pixmap - (match col with `none -> pixdraw - | `black -> pixdraw1 - | `white -> pixdraw2) - end -end - -module RealBoard = Board ( - struct - type t = cell array array - let size = 8 - let get (board : t) ~x ~y = board.(x).(y)#color - let set (board : t) ~x ~y ~color = board.(x).(y)#set_color color - end -) - -(* Conducting a game *) - -open RealBoard - -class game ~(frame : #GContainer.container) ~(label : #GMisc.label) - ~(statusbar : #GMisc.statusbar) = - let table = GPack.table ~columns:size ~rows:size ~packing:frame#add () in -object (self) - val cells = - Array.init size - ~f:(fun i -> Array.init size - ~f:(fun j -> new cell ~packing:(table#attach ~top:i ~left:j) ())) - val label = label - val turn = statusbar#new_context ~name:"turn" - val messages = statusbar#new_context ~name:"messages" - val mutable current_color = `black - method board = cells - method table = table - method player = current_color - - method swap_players () = - current_color <- - match current_color with - `white -> turn#pop (); turn#push "Player is black"; `black - | `black -> turn#pop (); turn#push "Player is white"; `white - - method finish () = - turn#pop (); - let w, b = count_cells cells in - turn#push - (if w > b then "White wins" else - if w < b then "Black wins" else - "Game is a draw"); - () - - method update_label () = - let w, b = count_cells cells in - label#set_text (Printf.sprintf "White: %d Black: %d " w b) - - method play x y = - if action cells ~x ~y ~color:current_color then begin - self#update_label (); - self#swap_players (); - if check_impossible cells ~color:current_color then begin - self#swap_players (); - if check_impossible cells ~color:current_color then self#finish () - end - end else - messages#flash "You cannot play there" - - initializer - for i = 0 to size-1 do for j = 0 to size-1 do - let cell = cells.(i).(j) in - cell#connect#enter ~callback:cell#misc#grab_focus; - cell#connect#clicked ~callback:(fun () -> self#play i j) - done done; - List.iter ~f:(fun (x,y,col) -> cells.(x).(y)#set_color col) - [ 3,3,`black; 4,4,`black; 3,4,`white; 4,3,`white ]; - self#update_label (); - turn#push "Player is black"; - () -end - -(* Graphical elements *) - -let vbox = GPack.vbox ~packing:window#add () -let frame = GBin.frame ~shadow_type:`IN ~packing:vbox#add () -let hbox = GPack.hbox ~packing:vbox#pack () - -let bar = GMisc.statusbar ~packing:hbox#add () - -let frame2 = GBin.frame ~shadow_type:`IN ~packing:hbox#pack () -let label = - GMisc.label ~justify:`LEFT ~xpad:5 ~xalign:0.0 ~packing:frame2#add () - -let game = new game ~frame ~label ~statusbar:bar - -(* Start *) - -let _ = - window#connect#destroy ~callback:Main.quit; - window#show (); - Main.main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/progressbar.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/progressbar.ml deleted file mode 100644 index b614f08f8..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/progressbar.ml +++ /dev/null @@ -1,51 +0,0 @@ -(* $Id$ *) - -open GMain - -class bar bar = object - val bar : #GRange.progress = bar - val mutable pstat = true - method progress () = - let pvalue = bar#percentage in - let pvalue = - if pvalue > 0.99 || not pstat then (pstat <- true; 0.0) - else pvalue +. 0.01 - in - bar#set_percentage pvalue; - true - method reset () = - pstat <- false -end - -let main () = - - let window = GWindow.window ~border_width: 10 () in - window#connect#destroy ~callback:Main.quit; - - let table = GPack.table ~rows:3 ~columns:2 ~packing: window#add () in - - GMisc.label ~text:"Progress Bar Example" () - ~packing:(table#attach ~left:0 ~right:2 ~top:0 ~expand:`X ~shrink:`BOTH); - - let pbar = - GRange.progress_bar ~bar_style:`DISCRETE ~discrete_blocks:20 () - ~packing:(table#attach ~left:0 ~right:2 ~top:1 - ~expand:`BOTH ~fill:`X ~shrink:`BOTH) in - - let bar = new bar pbar in - let ptimer = Timeout.add ~ms:50 ~callback:bar#progress in - - let button = GButton.button ~label:"Reset" () - ~packing:(table#attach ~left:0 ~top:2 - ~expand:`NONE ~fill:`X ~shrink:`BOTH) in - button#connect#clicked ~callback:bar#reset; - - let button = GButton.button ~label:"Cancel" () - ~packing:(table#attach ~left:1 ~top:2 - ~expand:`NONE ~fill:`X ~shrink:`BOTH) in - button#connect#clicked ~callback:Main.quit; - - window#show (); - Main.main () - -let _ = main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/radiobuttons.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/radiobuttons.ml deleted file mode 100644 index 5743ee232..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/radiobuttons.ml +++ /dev/null @@ -1,39 +0,0 @@ -(* $Id$ *) - -open GMain - -let main () = - - let window = GWindow.window ~title: "radio buttons" ~border_width: 0 () in - window#connect#destroy ~callback:Main.quit; - - let box1 = GPack.vbox ~packing: window#add () in - - let box2 = GPack.vbox ~spacing:10 ~border_width: 10 ~packing: box1#add () in - - let button1 = GButton.radio_button ~label:"button1" ~packing: box2#add () in - button1#connect#clicked ~callback:(fun () -> prerr_endline "button1"); - - let button2 = GButton.radio_button ~group:button1#group ~label:"button2" - ~active:true ~packing: box2#add () in - button2#connect#clicked ~callback:(fun () -> prerr_endline "button2"); - - let button3 = GButton.radio_button - ~group:button1#group ~label:"button3" ~packing: box2#add () in - button3#connect#clicked ~callback:(fun () -> prerr_endline "button3"); - - let separator = - GMisc.separator `HORIZONTAL ~packing: box1#pack () in - - let box3 = GPack.vbox ~spacing: 10 ~border_width: 10 - ~packing: box1#pack () in - - let button = GButton.button ~label: "close" ~packing: box3#add () in - button#connect#clicked ~callback:Main.quit; - button#grab_default (); - - window#show (); - - Main.main () - -let _ = main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/rpn.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/rpn.ml deleted file mode 100644 index e701f185c..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/rpn.ml +++ /dev/null @@ -1,129 +0,0 @@ -(* $Id$ *) - -(* reverse polish calculator *) - -open GMain - -let wow _ = prerr_endline "Wow!"; () -let main () = - let stack = Stack.create () in - - (* toplevel window *) - let window = - GWindow.window ~border_width: 10 ~title:"Reverse Polish Calculator" () in - window#connect#destroy ~callback:Main.quit; - - - (* vbox *) - let vbx = GPack.vbox ~packing:window#add () in - - (* entry *) - let entry = - GEdit.entry ~text:"0" ~editable:false ~max_length: 20 ~packing: vbx#add () in - - (* BackSpace, Clear, All Clear, Quit *) - let table0 = GPack.table ~rows:1 ~columns:4 ~packing:vbx#add () in - let bs_clicked _ = begin - let txt = entry#text in - let len = String.length txt in - if len <= 1 then - entry#set_text "0" - else entry#set_text (String.sub txt ~pos:0 ~len:(len-1)) - end in - let c_clicked _ = entry#set_text("0") in - let ac_clicked _ = Stack.clear stack; entry#set_text("0") in - let labels0 = [("BS", bs_clicked) ; ("C", c_clicked); - ("AC", ac_clicked); ("Quit", window#destroy)] in - let rec loop0 labels n = - match labels - with [] -> () - | (lbl, cb) :: t -> - let button = - GButton.button ~label:lbl - ~packing:(table0#attach ~left:n ~top:1 ~expand:`BOTH) () in - button#connect#clicked ~callback:cb; - loop0 t (n+1) in - loop0 labels0 1; - - (* Numerals *) - let table1 = GPack.table ~rows:4 ~columns:5 ~packing:vbx#add () in - let labels1 = ["7"; "8"; "9"; "4"; "5"; "6"; "1"; "2"; "3"; "0"] in - let numClicked n _ = - let txt = entry#text in - if (txt = "0") then - entry#set_text n - else begin - entry#append_text n - end in - let rec loop1 labels n = - match labels with [] -> () - | lbl :: lbls -> - let button = GButton.button ~label:(" "^lbl^" ") - ~packing:(table1#attach ~left:(n mod 3) ~top:(n/3) ~expand:`BOTH) - () in - button#connect#clicked ~callback:(numClicked lbl); - loop1 lbls (n+1) in - loop1 labels1 0; - - (* Period *) - let periodClicked _ = - let txt = entry#text in - if (String.contains txt '.') then begin - Printf.printf "\a"; - flush stdout; - end - else - entry#append_text "." in - (GButton.button ~label:" . " - ~packing:(table1#attach ~left:1 ~top:3 ~expand:`BOTH) ()) - #connect#clicked ~callback:periodClicked; - - (* Enter (Push) *) - let enterClicked _ = - let txt = entry#text in - let n = float_of_string txt in begin - Stack.push n stack; - entry#set_text "0" - end in - (GButton.button ~label:"Ent" - ~packing:(table1#attach ~left:2 ~top:3 ~expand:`BOTH) ()) - #connect#clicked ~callback:enterClicked; - - (* Operators *) - let op2Clicked op _ = - let n1 = float_of_string (entry#text) in - let n2 = Stack.pop stack in - entry#set_text (string_of_float (op n2 n1)) - in - let op1Clicked op _ = - let n1 = float_of_string (entry#text) in - entry#set_text (string_of_float (op n1)) - in - let modClicked _ = - let n1 = int_of_string (entry#text) in - let n2 = truncate (Stack.pop stack) in - entry#set_text (string_of_int (n2 mod n1)) - in - let labels2 = [(" / ", op2Clicked (/.)); (" * ", op2Clicked ( *. )); - (" - ", op2Clicked (-.)); (" + ", op2Clicked (+.)); - ("mod", modClicked); (" ^ ", op2Clicked ( ** )); - ("+/-", op1Clicked (~-.)); - ("1/x", op1Clicked (fun x -> 1.0/.x))] in - let rec loop2 labels n = - match labels - with [] -> () - | (lbl, cb) :: t -> - let button = GButton.button ~label:lbl - ~packing:(table1#attach ~left:(3 + n/4) ~top: (n mod 4) - ~expand:`BOTH) - () in - button#connect#clicked ~callback:cb; - loop2 t (n+1) - in - loop2 labels2 0; - - (* show all and enter event loop *) - window#show (); - Main.main () - -let _ = Printexc.print main() diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/scrolledwin.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/scrolledwin.ml deleted file mode 100644 index 8f4bee21e..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/scrolledwin.ml +++ /dev/null @@ -1,35 +0,0 @@ -(* $Id$ *) - -open GMain - -let main () = - let window = GWindow.dialog ~title: "dialog" - ~border_width: 10 ~width: 300 ~height: 300 () in - window#connect#destroy ~callback:Main.quit; - - let scrolled_window = GBin.scrolled_window - ~border_width: 10 ~hpolicy: `AUTOMATIC ~packing: window#vbox#add () - in - - let table = GPack.table ~rows:10 ~columns:10 - ~row_spacings: 10 ~col_spacings: 10 - ~packing: scrolled_window#add_with_viewport () - in - - for i = 0 to 9 do - for j = 0 to 9 do - let label = Printf.sprintf "button (%d,%d)\n" i j in - GButton.toggle_button ~label - ~packing:(table#attach ~left: i ~top: j ~expand: `BOTH) () - done - done; - - let button = - GButton.button ~label: "close" ~packing: window#action_area#add () in - button#connect#clicked ~callback: Main.quit; - button#grab_default (); - window#show (); - Main.main () - -let _ = main () - diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/socket.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/socket.ml deleted file mode 100644 index 687389ca9..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/socket.ml +++ /dev/null @@ -1,16 +0,0 @@ -(* $Id$ *) - -open GMain - -let main () = - let w = GWindow.window ~title:"Socket example" () in - w#connect#destroy ~callback:Main.quit; - let vbox = GPack.vbox ~packing:w#add () in - let label = GMisc.label ~packing:vbox#pack () in - let socket = GBin.socket ~packing:vbox#add ~height:40 () in - label#set_text ("XID to plug into this socket: 0x" ^ - Int32.format "%x" socket#xwindow); - w#show (); - Main.main () - -let _ = main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/test.xpm b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/test.xpm deleted file mode 100644 index 9b0d2efdb..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/test.xpm +++ /dev/null @@ -1,92 +0,0 @@ -/* XPM */ -static char *openfile[] = { -/* width height num_colors chars_per_pixel */ -" 20 19 66 2", -/* colors */ -".. c None", -".# c #000000", -".a c #dfdfdf", -".b c #7f7f7f", -".c c #006f6f", -".d c #00efef", -".e c #009f9f", -".f c #004040", -".g c #00bfbf", -".h c #ff0000", -".i c #ffffff", -".j c #7f0000", -".k c #007070", -".l c #00ffff", -".m c #00a0a0", -".n c #004f4f", -".o c #00cfcf", -".p c #8f8f8f", -".q c #6f6f6f", -".r c #a0a0a0", -".s c #7f7f00", -".t c #007f7f", -".u c #5f5f5f", -".v c #707070", -".w c #00f0f0", -".x c #009090", -".y c #ffff00", -".z c #0000ff", -".A c #00afaf", -".B c #00d0d0", -".C c #00dfdf", -".D c #005f5f", -".E c #00b0b0", -".F c #001010", -".G c #00c0c0", -".H c #000f0f", -".I c #00007f", -".J c #005050", -".K c #002f2f", -".L c #dfcfcf", -".M c #dfd0d0", -".N c #006060", -".O c #00e0e0", -".P c #00ff00", -".Q c #002020", -".R c #dfc0c0", -".S c #008080", -".T c #001f1f", -".U c #003f3f", -".V c #007f00", -".W c #00000f", -".X c #000010", -".Y c #00001f", -".Z c #000020", -".0 c #00002f", -".1 c #000030", -".2 c #00003f", -".3 c #000040", -".4 c #00004f", -".5 c #000050", -".6 c #00005f", -".7 c #000060", -".8 c #00006f", -".9 c #000070", -"#. c #7f7f80", -"## c #9f9f9f", -/* pixels */ -"........................................", -"........................................", -"........................................", -".......................#.#.#............", -".....................#.......#...#......", -"...............................#.#......", -".......#.#.#.................#.#.#......", -".....#.y.i.y.#.#.#.#.#.#.#..............", -".....#.i.y.i.y.i.y.i.y.i.#..............", -".....#.y.i.y.i.y.i.y.i.y.#..............", -".....#.i.y.i.y.#.#.#.#.#.#.#.#.#.#.#....", -".....#.y.i.y.#.s.s.s.s.s.s.s.s.s.#......", -".....#.i.y.#.s.s.s.s.s.s.s.s.s.#........", -".....#.y.#.s.s.s.s.s.s.s.s.s.#..........", -".....#.#.s.s.s.s.s.s.s.s.s.#............", -".....#.#.#.#.#.#.#.#.#.#.#..............", -"........................................", -"........................................", -"........................................" -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/testdnd.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/testdnd.ml deleted file mode 100644 index 8c10f7b98..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/testdnd.ml +++ /dev/null @@ -1,510 +0,0 @@ -(* this is a translation in Caml of the gtk+ example testdnd.c *) - - -open Gaux -open Gtk -open GObj -open GMain - -(* GtkThread.start() *) - -let drag_icon_xpm = [| -"36 48 9 1"; -" c None"; -". c #020204"; -"+ c #8F8F90"; -"@ c #D3D3D2"; -"# c #AEAEAC"; -"$ c #ECECEC"; -"% c #A2A2A4"; -"& c #FEFEFC"; -"* c #BEBEBC"; -" ....................."; -" ..&&&&&&&&&&&&&&&&&&&."; -" ...&&&&&&&&&&&&&&&&&&&."; -" ..&.&&&&&&&&&&&&&&&&&&&."; -" ..&&.&&&&&&&&&&&&&&&&&&&."; -" ..&&&.&&&&&&&&&&&&&&&&&&&."; -" ..&&&&.&&&&&&&&&&&&&&&&&&&."; -" ..&&&&&.&&&@&&&&&&&&&&&&&&&."; -" ..&&&&&&.*$%$+$&&&&&&&&&&&&&."; -" ..&&&&&&&.%$%$+&&&&&&&&&&&&&&."; -" ..&&&&&&&&.#&#@$&&&&&&&&&&&&&&."; -" ..&&&&&&&&&.#$**#$&&&&&&&&&&&&&."; -" ..&&&&&&&&&&.&@%&%$&&&&&&&&&&&&&."; -" ..&&&&&&&&&&&.&&&&&&&&&&&&&&&&&&&."; -" ..&&&&&&&&&&&&.&&&&&&&&&&&&&&&&&&&."; -"................&$@&&&@&&&&&&&&&&&&."; -".&&&&&&&+&&#@%#+@#@*$%$+$&&&&&&&&&&."; -".&&&&&&&+&&#@#@&&@*%$%$+&&&&&&&&&&&."; -".&&&&&&&+&$%&#@&#@@#&#@$&&&&&&&&&&&."; -".&&&&&&@#@@$&*@&@#@#$**#$&&&&&&&&&&."; -".&&&&&&&&&&&&&&&&&&&@%&%$&&&&&&&&&&."; -".&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&."; -".&&&&&&&&$#@@$&&&&&&&&&&&&&&&&&&&&&."; -".&&&&&&&&&+&$+&$&@&$@&&$@&&&&&&&&&&."; -".&&&&&&&&&+&&#@%#+@#@*$%&+$&&&&&&&&."; -".&&&&&&&&&+&&#@#@&&@*%$%$+&&&&&&&&&."; -".&&&&&&&&&+&$%&#@&#@@#&#@$&&&&&&&&&."; -".&&&&&&&&@#@@$&*@&@#@#$#*#$&&&&&&&&."; -".&&&&&&&&&&&&&&&&&&&&&$%&%$&&&&&&&&."; -".&&&&&&&&&&$#@@$&&&&&&&&&&&&&&&&&&&."; -".&&&&&&&&&&&+&$%&$$@&$@&&$@&&&&&&&&."; -".&&&&&&&&&&&+&&#@%#+@#@*$%$+$&&&&&&."; -".&&&&&&&&&&&+&&#@#@&&@*#$%$+&&&&&&&."; -".&&&&&&&&&&&+&$+&*@&#@@#&#@$&&&&&&&."; -".&&&&&&&&&&$%@@&&*@&@#@#$#*#&&&&&&&."; -".&&&&&&&&&&&&&&&&&&&&&&&$%&%$&&&&&&."; -".&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&."; -".&&&&&&&&&&&&&&$#@@$&&&&&&&&&&&&&&&."; -".&&&&&&&&&&&&&&&+&$%&$$@&$@&&$@&&&&."; -".&&&&&&&&&&&&&&&+&&#@%#+@#@*$%$+$&&."; -".&&&&&&&&&&&&&&&+&&#@#@&&@*#$%$+&&&."; -".&&&&&&&&&&&&&&&+&$+&*@&#@@#&#@$&&&."; -".&&&&&&&&&&&&&&$%@@&&*@&@#@#$#*#&&&."; -".&&&&&&&&&&&&&&&&&&&&&&&&&&&$%&%$&&."; -".&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&."; -".&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&."; -".&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&."; -"...................................." |] - - - -let trashcan_closed_xpm = [| -"64 80 17 1"; -" c None"; -". c #030304"; -"+ c #5A5A5C"; -"@ c #323231"; -"# c #888888"; -"$ c #1E1E1F"; -"% c #767677"; -"& c #494949"; -"* c #9E9E9C"; -"= c #111111"; -"- c #3C3C3D"; -"; c #6B6B6B"; -"> c #949494"; -", c #282828"; -"' c #808080"; -") c #545454"; -"! c #AEAEAC"; -" "; -" "; -" "; -" "; -" "; -" "; -" "; -" "; -" "; -" "; -" "; -" "; -" "; -" "; -" "; -" "; -" "; -" "; -" "; -" "; -" "; -" "; -" ==......=$$...=== "; -" ..$------)+++++++++++++@$$... "; -" ..=@@-------&+++++++++++++++++++-.... "; -" =.$$@@@-&&)++++)-,$$$$=@@&+++++++++++++,..$ "; -" .$$$$@@&+++++++&$$$@@@@-&,$,-++++++++++;;;&.. "; -" $$$$,@--&++++++&$$)++++++++-,$&++++++;%%'%%;;$@ "; -" .-@@-@-&++++++++-@++++++++++++,-++++++;''%;;;%*-$ "; -" +------++++++++++++++++++++++++++++++;;%%%;;##*!. "; -" =+----+++++++++++++++++++++++;;;;;;;;;;;;%'>>). "; -" .=)&+++++++++++++++++;;;;;;;;;;;;;;%''>>#>#@. "; -" =..=&++++++++++++;;;;;;;;;;;;;%###>>###+%== "; -" .&....=-+++++%;;####''''''''''##'%%%)..#. "; -" .+-++@....=,+%#####'%%%%%%%%%;@$-@-@*++!. "; -" .+-++-+++-&-@$$=$=......$,,,@;&)+!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" =+-++-+++-+++++++++!++++!++++!+++!++!+++= "; -" $.++-+++-+++++++++!++++!++++!+++!++!+.$ "; -" =.++++++++++++++!++++!++++!+++!++.= "; -" $..+++++++++++++++!++++++...$ "; -" $$=.............=$$ "; -" "; -" "; -" "; -" "; -" "; -" "; -" "; -" "; -" " |] - -let trashcan_open_xpm = [| -"64 80 17 1"; -" c None"; -". c #030304"; -"+ c #5A5A5C"; -"@ c #323231"; -"# c #888888"; -"$ c #1E1E1F"; -"% c #767677"; -"& c #494949"; -"* c #9E9E9C"; -"= c #111111"; -"- c #3C3C3D"; -"; c #6B6B6B"; -"> c #949494"; -", c #282828"; -"' c #808080"; -") c #545454"; -"! c #AEAEAC"; -" "; -" "; -" "; -" "; -" "; -" "; -" .=.==.,@ "; -" ==.,@-&&&)-= "; -" .$@,&++;;;%>*- "; -" $,-+)+++%%;;'#+. "; -" =---+++++;%%%;%##@. "; -" @)++++++++;%%%%'#%$ "; -" $&++++++++++;%%;%##@= "; -" ,-++++)+++++++;;;'#%) "; -" @+++&&--&)++++;;%'#'-. "; -" ,&++-@@,,,,-)++;;;'>'+, "; -" =-++&@$@&&&&-&+;;;%##%+@ "; -" =,)+)-,@@&+++++;;;;%##%&@ "; -" @--&&,,@&)++++++;;;;'#)@ "; -" ---&)-,@)+++++++;;;%''+, "; -" $--&)+&$-+++++++;;;%%'';- "; -" .,-&+++-$&++++++;;;%''%&= "; -" $,-&)++)-@++++++;;%''%), "; -" =,@&)++++&&+++++;%'''+$@&++++++ "; -" .$@-++++++++++++;'#';,........=$@&++++ "; -" =$@@&)+++++++++++'##-.................=&++ "; -" .$$@-&)+++++++++;%#+$.....................=)+ "; -" $$,@-)+++++++++;%;@=........................,+ "; -" .$$@@-++++++++)-)@=............................ "; -" $,@---)++++&)@===............................,. "; -" $-@---&)))-$$=..............................=)!. "; -" --&-&&,,$=,==...........................=&+++!. "; -" =,=$..=$+)+++++&@$=.............=$@&+++++!++!. "; -" .)-++-+++++++++++++++++++++++++++!++!++!. "; -" .+-++-+++++++++++++++++++++++!+++!++!++!. "; -" .+-++-+++-+++++++++!+++!!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" =+-++-+++-+++++++++!++++!++++!+++!++!+++= "; -" $.++-+++-+++++++++!++++!++++!+++!++!+.$ "; -" =.++++++++++++++!++++!++++!+++!++.= "; -" $..+++++++++++++++!++++++...$ "; -" $$==...........==$$ "; -" "; -" "; -" "; -" "; -" "; -" "; -" "; -" "; -" " |] - -let window = GWindow.window ~title:"DnD Test" () -let _ = window#misc#realize () - -let drag_icon = - GDraw.pixmap_from_xpm_d ~data:drag_icon_xpm ~window () - -let trashcan_open = - GDraw.pixmap_from_xpm_d ~data:trashcan_open_xpm ~window () - -let trashcan_closed = - GDraw.pixmap_from_xpm_d ~data:trashcan_closed_xpm ~window () - -let targets = [ - { target = "STRING"; flags = []; info = 0}; - { target = "text/plain"; flags = []; info = 0}; - { target = "text/uri-list"; flags = []; info = 2}; - { target = "application/x-rootwin-drop"; flags = []; info = 1} -] - -class drag_handler = object - method private beginning (_ : drag_context) = () - method private data_delete (_ : drag_context) = () - method private data_get (_ : drag_context) (_ : selection_data) - ~info:(_ : int) ~time:(_ : int) = () - method private data_received (_ : drag_context) ~x:(_ : int) ~y:(_ : int) - (_ : selection_data) ~info:(_ : int) ~time:(_ : int) = () - method private drop (_ : drag_context) ~x:(_ : int) ~y:(_ : int) - ~time:(_ : int) = false - method private ending (_ : drag_context) = () - method private leave (_ : drag_context) ~time:(_ : int) = () - method private motion (_ : drag_context) ~x:(_ : int) ~y:(_ : int) - ~time:(_ : int) = false -end - - -class target_drag ?packing ?show () = - let pixmap = GMisc.pixmap trashcan_closed ?packing ?show () in -object (self) - inherit widget pixmap#as_widget - inherit drag_handler - val mutable have_drag = false - - method leave _ ~time = - print_endline "leave"; flush stdout; - have_drag <- false; - pixmap#set_pixmap trashcan_closed - - method motion context ~x ~y ~time = - if not have_drag then begin - have_drag <- true; - pixmap#set_pixmap trashcan_open - end; - let source_typename = - try - context#source_widget#misc#get_type - with Gpointer.Null -> "unknown" - in - Printf.printf "motion, source %s\n" source_typename; flush stdout; - context#status [context#suggested_action] ~time; - true - - method drop context ~x ~y ~time = - prerr_endline "drop"; flush stdout; - have_drag <- false; - pixmap#set_pixmap trashcan_closed; - match context#targets with - | [] -> false - | d :: _ -> pixmap#drag#get_data d ~context ~time; true - - method data_received context ~x ~y data ~info ~time = - if data#format = 8 then begin - Printf.printf "Received \"%s\" in trashcan\n" data#data; - flush stdout; - context#finish ~success:true ~del:false ~time - end - else context#finish ~success:false ~del:false ~time - - initializer - pixmap#drag#dest_set targets ~actions:[`COPY;`MOVE]; - pixmap#drag#connect#leave ~callback:self#leave; - pixmap#drag#connect#motion ~callback:self#motion; - pixmap#drag#connect#drop ~callback:self#drop; - pixmap#drag#connect#data_received ~callback:self#data_received; - () -end - -class label_drag ?packing ?show () = - let label = GMisc.label ~text:"Drop Here\n" ?packing ?show () in -object (self) - inherit widget label#as_widget - inherit drag_handler - method data_received context ~x ~y data ~info ~time = - if data#format = 8 then begin - Printf.printf "Received \"%s\" in label\n" data#data; - flush stdout; - context#finish ~success:true ~del:false ~time - end - else context#finish ~success:false ~del:false ~time - - initializer - label#drag#dest_set targets ~actions:[`COPY; `MOVE ]; - label#drag#connect#data_received ~callback:self#data_received; - () -end - -class source_drag ?packing ?show () = - let button = GButton.button ~label:"Drag Here\n" ?packing ?show () in -object (self) - inherit widget button#as_widget - inherit drag_handler - method data_get _ data ~info ~time = - if info = 1 then begin - print_endline "I was dropped on the rootwin"; flush stdout - end - else if info = 2 then - data#set ~typ:data#target ~format:8 - ~data:"file:///home/otaylor/images/weave.png" - else - data#set ~typ:data#target ~format:8 ~data:"I'm Data!" - - method data_delete _ = - print_endline "Delete the data!"; flush stdout - - initializer - button#drag#source_set targets - ~modi:[`BUTTON1; `BUTTON3 ] ~actions:[`COPY; `MOVE ]; - button#drag#source_set_icon drag_icon; - button#drag#connect#data_get ~callback:self#data_get; - button#drag#connect#data_delete ~callback:self#data_delete; - () -end - -class popup () = object (self) - inherit drag_handler - val mutable popup_window = (None : GWindow.window option) - val mutable popped_up = false - val mutable in_popup = false - val mutable popdown_timer = None - val mutable popup_timer = None - - method timer = popup_timer - method remove_timer () = - may popup_timer - ~f:(fun pdt -> Timeout.remove pdt; popup_timer <- None) - method add_timer time ~callback = - popup_timer <- Some (Timeout.add ~ms:time ~callback) - - method popdown () = - popdown_timer <- None; - may popup_window ~f:(fun w -> w#misc#hide ()); - popped_up <- false; - false - - method motion (_ : drag_context) ~x ~y ~time = - if not in_popup then begin - in_popup <- true; - may popdown_timer ~f: - begin fun pdt -> - print_endline "removed popdown"; flush stdout; - Timeout.remove pdt; - popdown_timer <- None - end - end; - true - - method leave (_ : drag_context) ~time = - if in_popup then begin - in_popup <- false; - if popdown_timer = None then begin - print_endline "added popdown"; flush stdout; - popdown_timer <- Some (Timeout.add ~ms:500 ~callback:self#popdown) - end - end - - method popup () = - if not popped_up then begin - if popup_window = None then begin - let w = GWindow.window ~kind:`POPUP ~position:`MOUSE () in - popup_window <- Some w; - let table = GPack.table ~rows:3 ~columns:3 ~packing:w#add () in - for i = 0 to 2 do - for j = 0 to 2 do - let button = - GButton.button ~label:(string_of_int i ^ "," ^ string_of_int j) - ~packing:(table#attach ~left:i ~top:j ~expand:`BOTH) () - in - button#drag#dest_set targets ~actions:[`COPY; `MOVE ]; - button#drag#connect#motion ~callback:self#motion; - button#drag#connect#leave ~callback:self#leave; - done - done - end; - may popup_window ~f:(fun w -> w#show ()); - popped_up <- true - end; - popdown_timer <- Some (Timeout.add ~ms:500 ~callback:self#popdown); - print_endline "added popdown"; flush stdout; - self#remove_timer (); - false -end - -class popsite ?packing ?show () = - let label = GMisc.label ~text:"Popup\n" ?packing ?show () - and popup = new popup () in -object (self) - inherit widget label#as_widget - inherit drag_handler - method motion _ ~x ~y ~time = - if popup#timer = None then begin - print_endline "added popdown"; flush stdout; - popup#add_timer 500 ~callback:popup#popup - end; - true - - method leave _ ~time = - popup#remove_timer () - - initializer - label#drag#dest_set targets ~actions:[`COPY; `MOVE ]; - label#drag#connect#motion ~callback:self#motion; - label#drag#connect#leave ~callback:self#leave; - () -end - -let main () = - window#connect#destroy ~callback: Main.quit; - let table = GPack.table ~rows:2 ~columns:2 ~packing:window#add () in - let attach = table#attach ~expand:`BOTH in - new label_drag ~packing:(attach ~left:0 ~top:0) (); - new target_drag ~packing:(attach ~left:1 ~top:0) (); - new source_drag ~packing:(attach ~left:0 ~top:1) (); - new popsite ~packing:(attach ~left:1 ~top:1) (); - - window#show (); - Main.main () - -let _ = - main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/testgtk.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/testgtk.ml deleted file mode 100644 index 6c937f56d..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/testgtk.ml +++ /dev/null @@ -1,1140 +0,0 @@ -(* $Id$ *) - -open GdkKeysyms -open GMain -open GObj - -let create_bbox direction title spacing child_w child_h layout = - let frame = GBin.frame ~label: title () in - let bbox = GPack.button_box direction ~border_width: 5 ~packing: frame#add - ~layout: layout ~child_height: child_h ~child_width: child_w - ~spacing: spacing () in - GButton.button ~label: "OK" ~packing: bbox#add (); - GButton.button ~label: "Cancel" ~packing: bbox#add (); - GButton.button ~label: "Help" ~packing: bbox#add (); - frame#coerce - -let create_button_box = - let rw = ref None in - let aux () = - match !rw with - | None -> - let window = GWindow.window ~title: "Button Boxes" ~border_width: 0 () in - rw := Some window; - window #connect#destroy ~callback:(fun _ -> rw := None); - - let main_vbox = GPack.vbox ~packing: (window#add) () in - - let frame_horz = GBin.frame ~label: "Horizontal Button Boxes" - ~packing:(main_vbox#pack ~expand:true ~fill:true ~padding:10) () in - - let vbox = GPack.vbox ~border_width: 10 ~packing: frame_horz#add () in - - vbox#add (create_bbox `HORIZONTAL "Spread" 40 85 20 `SPREAD); - vbox#pack (create_bbox `HORIZONTAL "Edge" 40 85 20 `EDGE) - ~expand: true ~fill: true ~padding: 5; - vbox#pack (create_bbox `HORIZONTAL "Start" 40 85 20 `START) - ~expand: true ~fill: true ~padding: 5; - vbox#pack (create_bbox `HORIZONTAL "End" 40 85 20 `END) - ~expand: true ~fill: true ~padding: 5; - - let frame_vert = GBin.frame ~label: "Vertical Button Boxes" - ~packing:(main_vbox#pack ~expand:true ~fill:true ~padding:10) () in - - let hbox = GPack.hbox ~border_width: 10 ~packing: frame_vert#add () in - hbox#add (create_bbox `VERTICAL "Spread" 30 85 20 `SPREAD); - hbox#pack (create_bbox `VERTICAL "Edge" 30 85 20 `EDGE) - ~expand: true ~fill: true ~padding: 5; - hbox#pack (create_bbox `VERTICAL "Start" 30 85 20 `START) - ~expand: true ~fill: true ~padding: 5; - hbox#pack (create_bbox `VERTICAL "End" 30 85 20 `END) - ~expand: true ~fill: true ~padding: 5; - window #show () - - | Some window -> window #destroy () -in aux - - -let button_window button _ = - if button #misc#visible then - button #misc#hide () - else - button #misc#show () - -let create_buttons = - let rw = ref None in - let aux () = - match !rw with - | None -> - let window = GWindow.window ~title: "GtkButton" ~border_width: 0 () in - rw := Some window; - window #connect#destroy ~callback:(fun _ -> rw := None); - - let box1 = GPack.vbox ~packing:window#add () in - - let table = GPack.table ~rows:3 ~columns:3 ~homogeneous:false - ~row_spacings:3 ~col_spacings:3 ~border_width:10 - ~packing:box1#add () in - - let button = Array.create 9 (GButton.button ~label:"button1" ()) in - for i = 2 to 9 do - button.(i-1) <- GButton.button ~label:("button" ^ string_of_int i) (); - done; - - let f i l r t b = - button.(i) #connect#clicked ~callback:(button_window button.(i+1)); - table #attach button.(i)#coerce ~left:l ~right:r ~top:t ~bottom:b - ~xpadding:0 ~ypadding:0 ~expand:`BOTH - in - f 0 0 1 0 1; - f 1 1 2 1 2; - f 2 2 3 2 3; - f 3 0 1 2 3; - f 4 2 3 0 1; - f 5 1 2 2 3; - f 6 1 2 0 1; - f 7 2 3 1 2; - button.(8) #connect#clicked ~callback:(button_window button.(0)); - table #attach button.(8)#coerce ~left:0 ~right:1 ~top:1 ~bottom:2 - ~xpadding:0 ~ypadding:0 ~expand:`BOTH; - - GMisc.separator `HORIZONTAL ~packing:box1#pack (); - - let box2 = GPack.vbox ~spacing: 10 ~border_width: 10 - ~packing: box1#pack () in - - let button = GButton.button ~label: "close" ~packing: box2#add () in - button #connect#clicked ~callback: window#destroy; - button #grab_default (); - window #show () - - | Some window -> window #destroy () -in aux - - - -let create_check_buttons = - let rw = ref None in - let aux () = - match !rw with - | None -> - let window = GWindow.window ~title: "GtkCheckButton" - ~border_width: 0 () in - rw := Some window; - window #connect#destroy ~callback:(fun _ -> rw := None); - - let box1 = GPack.vbox ~packing:window#add () in - let box2 = GPack.vbox ~spacing: 10 ~border_width: 10 - ~packing: box1#pack () in - - for i = 1 to 3 do - GButton.check_button ~label:("button" ^ (string_of_int i)) - ~packing: box2#add (); - done; - - GMisc.separator `HORIZONTAL ~packing: box1#pack (); - - let box2 = GPack.vbox ~spacing:10 ~border_width:10 - ~packing: box1#pack () in - - let button = GButton.button ~label: "close" ~packing:box2#add () in - button #connect#clicked ~callback: window#destroy; - button #grab_default (); - window #show () - - | Some window -> window #destroy () -in aux - - -let create_radio_buttons = - let rw = ref None in - let aux () = - match !rw with - | None -> - let window = GWindow.window ~title: "radio buttons" - ~border_width: 0 () in - rw := Some window; - window #connect#destroy ~callback:(fun _ -> rw := None); - - let box1 = GPack.vbox ~packing:window#add () in - - let box2 = GPack.vbox ~spacing:10 ~border_width:10 - ~packing: box1#pack () in - - let button = GButton.radio_button ~label:"button1" - ~packing: box2#add () in - - let button = GButton.radio_button ~label:"button2" ~group:button#group - ~packing: box2#add ~active:true () in - - let button = GButton.radio_button ~label:"button3" ~group:button#group - ~packing: box2#add () in - - GMisc.separator `HORIZONTAL ~packing: box1#pack (); - - let box2 = GPack.vbox ~spacing:10 ~border_width:10 - ~packing: box1#pack () in - - let button = GButton.button ~label: "close" ~packing: box2#add () in - button #connect#clicked ~callback: window #destroy; - button #grab_default (); - window #show () - - | Some window -> window #destroy () -in aux - - -let create_toggle_buttons = - let rw = ref None in - let aux () = - match !rw with - | None -> - let window = GWindow.window ~title: "GtkToggleButton" - ~border_width: 0 () in - rw := Some window; - window #connect#destroy ~callback:(fun _ -> rw := None); - - let box1 = GPack.vbox ~packing: window#add () in - - let box2 = GPack.vbox ~spacing: 10 ~border_width: 10 - ~packing: box1#pack () in - - for i = 1 to 3 do - GButton.toggle_button ~label:("button" ^ (string_of_int i)) - ~packing: box2#add () - done; - - GMisc.separator `HORIZONTAL ~packing: box1#pack (); - - let box2 = GPack.vbox ~spacing: 10 ~border_width: 10 - ~packing: box1#pack () in - - let button = GButton.button ~label: "close" ~packing:box2#add () in - button #connect#clicked ~callback: window#destroy; - button #grab_default (); - window #show () - - | Some window -> window #destroy () -in aux - - -(* Menus *) - -let create_menu depth tearoff = - let rec aux depth tearoff = - let menu = GMenu.menu () and group = ref None in - if tearoff then ignore (GMenu.tearoff_item ~packing: menu#append ()); - for i = 0 to 4 do - let menuitem = GMenu.radio_menu_item ?group:!group - ~label:("item " ^ string_of_int depth ^ " - " ^ string_of_int (i+1)) - ~packing:menu#append ~show_toggle:(depth mod 2 <> 0) - () in - group := Some (menuitem #group); - if i = 3 then menuitem #misc#set_sensitive false; - if depth > 1 then - menuitem #set_submenu (aux (depth-1) true) - done; - - menu - in aux depth tearoff - - -let create_menus = - let rw = ref None in - fun () -> - match !rw with - | None -> - let window = GWindow.window ~title: "menus" - ~border_width: 0 () in - rw := Some window; - window #connect#destroy ~callback:(fun _ -> rw := None); - window #event#connect#delete ~callback:(fun _ -> true); - - let accel_group = GtkData.AccelGroup.create () in - window #add_accel_group accel_group ; - - let box1 = GPack.vbox ~packing:window#add () in - - let menubar = GMenu.menu_bar ~packing: box1#pack () in - - let menuitem = GMenu.menu_item ~label:"test\nline2" - ~packing: menubar#append () in - menuitem #set_submenu (create_menu 2 true); - - let menuitem = GMenu.menu_item ~label:"foo" - ~packing: menubar#append () in - menuitem #set_submenu (create_menu 3 true); - menuitem #right_justify (); - - let box2 = GPack.vbox ~spacing: 10 ~packing: box1#add - ~border_width: 10 () in - - let menu = create_menu 1 false in - menu #set_accel_group accel_group; - - let menuitem = GMenu.check_menu_item ~label:"Accelerate Me" - ~packing:menu#append () in - menuitem #add_accelerator ~group:accel_group _M - ~flags:[`VISIBLE; `SIGNAL_VISIBLE]; - - let menuitem = GMenu.check_menu_item ~label:"Accelerator Locked" - ~packing:menu#append () in - menuitem #add_accelerator ~group:accel_group _L - ~flags:[`VISIBLE; `LOCKED]; - - let menuitem = GMenu.check_menu_item ~label:"Accelerators Frozen" - ~packing:menu#append () in - menuitem #add_accelerator ~group:accel_group _F - ~flags:[`VISIBLE]; - menuitem #misc#lock_accelerators (); - - let optionmenu = GMenu.option_menu ~packing: box2#add () in - optionmenu #set_menu menu; - optionmenu #set_history 3; - - GMisc.separator `HORIZONTAL ~packing: box1#pack (); - - let box2 = GPack.vbox ~spacing:10 ~border_width:10 - ~packing: box1#pack () in - - let button = GButton.button ~label: "close" ~packing: box2#add () in - button #connect#clicked ~callback: window#destroy; - button #grab_default (); - window #show () - - | Some window -> window #destroy () - - - -(* Modal windows *) - -let cmw_destroy_cb _ = - Main.quit () - -let cmw_color parent _ = - let csd = GWindow.color_selection_dialog ~modal:true - ~title:"This is a modal color selection dialog" () in - csd # set_transient_for parent; - csd # connect#destroy ~callback:cmw_destroy_cb; - csd # ok_button # connect#clicked ~callback:csd#destroy; - csd # cancel_button # connect#clicked ~callback:csd#destroy; - csd # show (); - Main.main () - -let cmw_file parent _ = - let fs = GWindow.file_selection ~modal:true - ~title:"This is a modal file selection dialog" () in - fs # set_transient_for parent; - fs # connect#destroy ~callback:cmw_destroy_cb; - fs # ok_button # connect#clicked ~callback:fs#destroy; - fs # cancel_button # connect#clicked ~callback:fs#destroy; - fs # show (); - Main.main () - -let create_modal_window () = - let window = GWindow.window ~modal:true ~title:"This window is modal" () in - let box1 = GPack.vbox ~spacing:5 ~border_width:3 ~packing:window#add () in - let frame1 = GBin.frame ~label:"Standard dialogs in modal form" - ~packing:(box1#pack ~expand:true ~padding:4) () in - let box2 = GPack.vbox ~homogeneous:true ~spacing:5 ~packing:frame1#add () in - let btnColor = GButton.button ~label:"Color" - ~packing:(box2#pack ~padding:4) () - and btnFile = GButton.button ~label:"File selection" - ~packing:(box2#pack ~padding:4) () - and btnClose = GButton.button ~label:"Close" - ~packing:(box2#pack ~padding:4) () in - GMisc.separator `HORIZONTAL - ~packing:(box1#pack ~padding:4) (); - - btnClose #connect#clicked ~callback:(fun _ -> window #destroy ()); - window #connect#destroy ~callback:cmw_destroy_cb; - btnColor #connect#clicked ~callback: (cmw_color window); - btnFile #connect#clicked ~callback: (cmw_file window); - window # show (); - Main.main () - - -(* corrected bug in testgtk.c *) -let scrolled_windows_remove, scrolled_windows_clean = - let parent = ref None and float_parent = ref None in - let remove (scrollwin : GBin.scrolled_window) () = - match !parent with - | None -> - parent := scrollwin#misc#parent; - let f = GWindow.window ~title:"new parent" () in - float_parent := Some f#coerce; - f #set_default_size ~width:200 ~height:200; - scrollwin #misc#reparent f#coerce; - f #show () - | Some p -> - scrollwin #misc#reparent p; - match !float_parent with - | None -> () - | Some f -> - f #destroy (); - float_parent := None; - parent := None - and clean () = - match !float_parent with - | None -> () - | Some p -> p #destroy (); parent := None; float_parent := None - in remove, clean - - -(* scrolled windows *) - -let create_scrolled_windows = - let rw = ref None in - let aux () = - match !rw with - | None -> - let window = GWindow.dialog ~title:"dialog" ~border_width:0 () in - rw := Some window; - window #connect#destroy ~callback:(fun _ -> rw := None); - window #connect#destroy ~callback:scrolled_windows_clean; - - let scrolled_window = GBin.scrolled_window ~border_width:10 - ~hpolicy: `AUTOMATIC ~vpolicy:`AUTOMATIC - ~packing: window#vbox#add () in - - let table = GPack.table ~rows:20 ~columns:20 ~row_spacings:10 - ~col_spacings:10 ~packing:scrolled_window#add_with_viewport () in - table #focus#set_hadjustment (Some scrolled_window # hadjustment); - table #focus#set_vadjustment (Some scrolled_window # vadjustment); - - for i = 0 to 19 do - for j=0 to 19 do - GButton.toggle_button - ~label:("button ("^ string_of_int i ^","^ string_of_int j ^")\n") - ~packing:(table #attach ~left:i ~top:j ~expand:`BOTH) () - done - done; - - let button = GButton.button ~label:"close" - ~packing:window#action_area#add () in - button #connect#clicked ~callback:(window #destroy); - button #grab_default (); - - let button = GButton.button ~label:"remove" - ~packing:window#action_area#add () in - button #connect#clicked - ~callback:(scrolled_windows_remove scrolled_window); - button #grab_default (); - - window #set_default_size ~width:300 ~height:300; - window #show () - - | Some window -> window #destroy () - in aux - - -(* Toolbar *) - -let make_toolbar (toolbar : GButton.toolbar) window = - let icon = - let info = GDraw.pixmap_from_xpm ~file:"test.xpm" ~window () in - fun () -> (GMisc.pixmap info ())#coerce - in - - toolbar #insert_button ~text:"Horizontal" - ~tooltip:"Horizontal toolbar layout" - ~tooltip_private:"Toolbar/Horizontal" - ~icon:(icon ()) - ~callback:(fun _ -> toolbar #set_orientation `HORIZONTAL) (); - - toolbar #insert_button ~text:"Vertical" - ~tooltip:"Vertical toolbar layout" - ~tooltip_private:"Toolbar/Vertical" - ~icon:(icon ()) - ~callback:(fun _ -> toolbar #set_orientation `VERTICAL) (); - - toolbar #insert_space (); - - toolbar #insert_button ~text:"Icons" - ~tooltip: "Only show toolbar icons" - ~tooltip_private:"Toolbar/IconsOnly" - ~icon:(icon ()) - ~callback:(fun _ -> toolbar #set_style `ICONS) (); - - toolbar #insert_button ~text:"Text" - ~tooltip: "Only show toolbar text" - ~tooltip_private:"Toolbar/TextOnly" - ~icon:(icon ()) - ~callback:(fun _ -> toolbar #set_style `TEXT) (); - - toolbar #insert_button ~text:"Both" - ~tooltip: "Show toolbar icons and text" - ~tooltip_private:"Toolbar/Both" - ~icon:(icon ()) - ~callback:(fun _ -> toolbar #set_style `BOTH) (); - - toolbar #insert_space (); - - GEdit.entry ~packing:(toolbar #insert_widget - ~tooltip:"This is an unusable GtkEntry" - ~tooltip_private: "Hey don't click me!!!") (); - - toolbar #insert_button ~text:"Small" - ~tooltip:"Use small spaces" - ~tooltip_private:"Toolbar/Small" - ~icon:(icon ()) - ~callback:(fun _ -> toolbar #set_space_size 5) (); - - toolbar #insert_button ~text:"Big" - ~tooltip:"Use big spaces" - ~tooltip_private:"Toolbar/Big" - ~icon:(icon ()) - ~callback:(fun _ -> toolbar #set_space_size 10) (); - - toolbar #insert_space (); - - toolbar #insert_button ~text:"Enable" - ~tooltip:"Enable tooltips" - ~icon:(icon ()) - ~callback:(fun _ -> toolbar #set_tooltips true) (); - - toolbar #insert_button ~text:"Disable" - ~tooltip:"Disable tooltips" - ~icon:(icon ()) - ~callback:(fun _ -> toolbar #set_tooltips false) (); - - toolbar #insert_space (); - - toolbar #insert_button ~text:"Borders" - ~tooltip:"Show borders" - ~icon:(icon ()) - ~callback:(fun _ -> toolbar #set_button_relief `NORMAL) (); - - toolbar #insert_button ~text:"Borderless" - ~tooltip:"Hide borders" - ~icon:(icon ()) - ~callback:(fun _ -> toolbar #set_button_relief `NONE) (); - - toolbar #insert_space (); - - toolbar #insert_button ~text:"Empty" - ~tooltip:"Empty spaces" - ~icon:(icon ()) - ~callback:(fun _ -> toolbar #set_space_style `EMPTY) (); - - toolbar #insert_button ~text:"Lines" - ~tooltip:"Lines in spaces" - ~icon:(icon ()) - ~callback:(fun _ -> toolbar #set_space_style `LINE) (); - () - -let create_toolbar = - let rw = ref None in - let aux () = - match !rw with - | None -> - let window = GWindow.window ~title: "Toolbar test" - ~border_width: 0 ~allow_shrink: false ~allow_grow: true - ~auto_shrink: true () in - rw := Some window; - window #connect#destroy ~callback:(fun _ -> rw := None); - window #misc #realize (); - - let toolbar = GButton.toolbar ~packing: window#add () in - make_toolbar toolbar window; - - window #show () - - | Some window -> window #destroy () - in aux - - -(* Handlebox *) - -let handle_box_child_signal action (hb : GBin.handle_box) child = - Printf.printf "%s: child <%s> %s\n" hb#misc#get_type child#misc#get_type action - -let create_handle_box = - let rw = ref None in - let aux () = - match !rw with - | None -> - let window = GWindow.window ~title: "Handle box test" - ~border_width: 20 ~allow_shrink: false ~allow_grow: true - ~auto_shrink: true () in - rw := Some window; - window #connect#destroy ~callback:(fun _ -> rw := None); - window #misc #realize (); - - let vbox = GPack.vbox ~packing:window#add () in - - GMisc.label ~text:"Above" ~packing:vbox#add (); - GMisc.separator `HORIZONTAL ~packing:vbox#add (); - - let hbox = GPack.hbox ~spacing:10 ~packing:vbox#add () in - GMisc.separator `HORIZONTAL ~packing:vbox#add (); - - GMisc.label ~text:"Below" ~packing:vbox#add (); - let handle_box = GBin.handle_box ~packing:hbox#pack () in - handle_box #connect#child_attached - ~callback:(handle_box_child_signal "attached" handle_box); - handle_box #connect#child_detached - ~callback:(handle_box_child_signal "detached" handle_box); - - let toolbar = GButton.toolbar ~packing:handle_box#add () in - make_toolbar toolbar window; - toolbar #set_button_relief `NORMAL; - - let handle_box = GBin.handle_box ~packing:hbox#pack () in - handle_box #connect#child_attached - ~callback:(handle_box_child_signal "attached" handle_box); - handle_box #connect#child_detached - ~callback:(handle_box_child_signal "detached" handle_box); - - let handle_box2 = GBin.handle_box ~packing:handle_box#add () in - handle_box2 #connect#child_attached - ~callback:(handle_box_child_signal "attached" handle_box); - handle_box2 #connect#child_detached - ~callback:(handle_box_child_signal "detached" handle_box); - - GMisc.label ~text:"Fooo!" ~packing:handle_box2#add (); - window #show () - - | Some window -> window #destroy () - in aux - - - -(* Tree *) - -class tree_and_buttons () = -object - val tree = GTree.tree () - val add_button = GButton.button ~label: "Add Item" () - val remove_button = GButton.button ~label:"Remove Item(s)" () - val subtree_button = GButton.button ~label:"Remove Subtree" () - val mutable nb_item_add = 0 - - method tree = tree - method add_button = add_button - method remove_button = remove_button - method subtree_button = subtree_button - method nb_item_add = nb_item_add - method incr_nb_item_add = nb_item_add <- nb_item_add + 1 -end - -let cb_tree_destroy_event w = () - -let cb_add_new_item (treeb : tree_and_buttons) _ = - let subtree = - match treeb#tree#selection with - | [] -> treeb#tree - | selected_item :: _ -> - match selected_item#subtree with Some t -> t - | None -> - let t = GTree.tree () in - selected_item#set_subtree t; - t - in - let item_new = GTree.tree_item ~packing:(subtree#insert ~pos:0) - ~label:("item add " ^ string_of_int treeb # nb_item_add) () in - treeb #incr_nb_item_add - - -let cb_remove_item (treeb : tree_and_buttons) _ = - let tree = treeb#tree in - match tree #selection with - | [] -> () - | selected -> tree #remove_items selected - - -let cb_remove_subtree (treeb : tree_and_buttons) _ = - match treeb#tree #selection with - | [] -> () - | selected_item :: _ -> - try selected_item#subtree; selected_item#remove_subtree () - with Not_found -> () - -let cb_tree_changed (treeb : tree_and_buttons) _ = - let tree = treeb#tree in - let nb_selected = List.length (tree#selection) in - if nb_selected = 0 then begin - treeb # remove_button #misc#set_sensitive false; - treeb # subtree_button #misc#set_sensitive false; - end else begin - treeb # remove_button #misc#set_sensitive true; - treeb # subtree_button #misc#set_sensitive (nb_selected = 1); - treeb # add_button #misc#set_sensitive (nb_selected = 1); - end - - -let rec create_subtree (item : GTree.tree_item) level nb_item_max - recursion_level_max = - if level = recursion_level_max then () - else begin - let item_subtree = GTree.tree () in - for nb_item = 1 to nb_item_max do - let item_new = GTree.tree_item ~packing:(item_subtree#insert ~pos:0) - ~label:("item" ^ string_of_int level ^ "-" ^ string_of_int nb_item) () - in - create_subtree item_new (level + 1) nb_item_max recursion_level_max; - done; - item # set_subtree item_subtree - end - - -let create_tree_sample selection_mode draw_line view_line no_root_item - nb_item_max recursion_level_max = - let window = GWindow.window ~title:"Tree Sample" () in - let box1 = GPack.vbox ~packing:window#add () in - let box2 = GPack.vbox ~packing:box1#add ~border_width:5 () in - let scrolled_win = GBin.scrolled_window ~packing:box2#add - ~hpolicy: `AUTOMATIC ~vpolicy:`AUTOMATIC - ~width:200 ~height:200 () in - - let root_treeb = new tree_and_buttons () in - let root_tree = root_treeb#tree in - root_tree #connect#selection_changed ~callback:(cb_tree_changed root_treeb); - scrolled_win #add_with_viewport root_tree#coerce; - root_tree #set_selection_mode selection_mode; - root_tree #set_view_lines draw_line; - root_tree #set_view_mode - (match view_line with `LINE -> `ITEM | `ITEM -> `LINE); - - if no_root_item then - for nb_item = 1 to nb_item_max do - let item_new = GTree.tree_item ~label:("item0-" ^ string_of_int nb_item) - ~packing:(root_tree#insert ~pos:0) () in - create_subtree item_new 1 nb_item_max recursion_level_max; - done - else begin - let root_item = GTree.tree_item ~label:"root item" - ~packing:(root_tree #insert ~pos:0) () in - create_subtree root_item 0 nb_item_max recursion_level_max - end; - - let box2 = GPack.vbox ~border_width:5 ~packing:box1#pack () in - - let button = root_treeb #add_button in - button #misc#set_sensitive false; - button #connect#clicked ~callback:(cb_add_new_item root_treeb); - box2 #add button#coerce; - - let button = root_treeb #remove_button in - button #misc#set_sensitive false; - button #connect#clicked ~callback:(cb_remove_item root_treeb); - box2 #add button#coerce; - - let button = root_treeb #subtree_button in - button #misc#set_sensitive false; - button #connect#clicked ~callback:(cb_remove_subtree root_treeb); - box2 #add button#coerce; - - GMisc.separator `HORIZONTAL ~packing:box1#pack (); - - let button = GButton.button ~label:"Close" ~packing:box2#add () in - button #connect#clicked ~callback:window#destroy; - - window #show () - - -let create_tree_mode_window = - let rw = ref None in - let aux () = - let default_number_of_item = 3.0 in - let default_recursion_level = 3.0 in - let single_button = GButton.radio_button ~label:"SINGLE" () in - let browse_button = GButton.radio_button - ~group:single_button#group ~label:"BROWSE" () in - let multiple_button = GButton.radio_button - ~group:browse_button#group ~label:"MULTIPLE" () in - let draw_line_button = GButton.check_button ~label:"Draw line" () in - let view_line_button = GButton.check_button ~label:"View line mode" () in - let no_root_item_button = GButton.check_button - ~label:"Without Root item" () in - let nb_item_spinner = GEdit.spin_button - ~adjustment:(GData.adjustment ~value:default_number_of_item - ~lower:1.0 ~upper:255.0 ~step_incr:1.0 ~page_incr:5.0 - ~page_size:0.0 ()) ~rate:0. ~digits:0 () in - let recursion_spinner = GEdit.spin_button - ~adjustment:(GData.adjustment ~value:default_recursion_level - ~lower:0.0 ~upper:255.0 ~step_incr:1.0 ~page_incr:5.0 - ~page_size:0.0 ()) ~rate:0. ~digits:0 () in - let cb_create_tree _ = - let selection_mode = - if single_button #active then `SINGLE - else if browse_button #active then `BROWSE - else `MULTIPLE in - let nb_item = nb_item_spinner#value_as_int in - let recursion_level = recursion_spinner#value_as_int in - create_tree_sample selection_mode (draw_line_button #active) - (if (view_line_button #active) then `ITEM else `LINE) - (no_root_item_button #active) - nb_item recursion_level - in - match !rw with - | None -> - let window = GWindow.window ~title:"Set Tree Parameters" () in - rw := Some window; - window #connect#destroy ~callback:(fun _ -> rw := None); - - let box1 = GPack.vbox ~packing:window#add () in - - let box2 = GPack.vbox ~spacing:5 ~packing:box1#add - ~border_width:5 () in - - let box3 = GPack.hbox ~spacing:5 ~packing:box2#add () in - - let frame = GBin.frame ~label:"Selection Mode" ~packing:box3#add () - in - - let box4 = GPack.vbox ~packing:frame#add ~border_width:5 () in - - box4 #add single_button#coerce; - box4 #add browse_button#coerce; - box4 #add multiple_button#coerce; - - let frame = GBin.frame ~label:"Options" ~packing:box3#add () in - - let box4 = GPack.vbox ~packing:frame#add ~border_width:5 () in - box4 #add draw_line_button#coerce; - draw_line_button #set_active true; - - box4 #add view_line_button#coerce; - view_line_button #set_active true; - - box4 #add no_root_item_button#coerce; - - let frame = GBin.frame ~label:"Size Parameters" ~packing:box2#add () - in - - let box4 = GPack.hbox ~spacing:5 ~packing:frame#add ~border_width:5 () in - - let box5 = GPack.hbox ~spacing:5 ~packing:box4#add () in - let label = GMisc.label ~text:"Number of items : " - ~xalign:0. ~yalign:0.5 ~packing:box5#pack () in - box5 #pack nb_item_spinner#coerce; - - let label = GMisc.label ~text:"Depth : " ~xalign:0. ~yalign:0.5 - ~packing:box5#pack () in - box5 #pack recursion_spinner#coerce; - - GMisc.separator `HORIZONTAL ~packing:box1#pack (); - - let box2 = GPack.hbox ~homogeneous:true ~spacing:10 ~border_width:5 - ~packing:box1#pack () in - - let button = GButton.button ~label:"Create Tree" - ~packing:box2#add () in - button #connect#clicked ~callback:cb_create_tree; - - let button = GButton.button ~label: "close" ~packing:box2#add () in - button #connect#clicked ~callback: window#destroy; - button #grab_default (); - window #show () - - | Some window -> window #destroy () - in aux - - - -(* Tooltips *) - -let tips_query_widget_entered (toggle : GButton.toggle_button) - (tq : GMisc.tips_query) _ ~text ~privat:_ = - if toggle #active then begin - tq #set_text - (match text with - | None -> "There is no tip!" | Some _ -> "There is a tip!"); - GtkSignal.stop_emit () - end - -let tips_query_widget_selected (w : #widget option) ~text ~privat:tp _ = - (match w with - | None -> () - | Some w -> - Printf.printf "Help \"%s\" requested for <%s>\n" - (match tp with None -> "None" | Some t -> t) - (w #misc#get_type)); - true - - -let create_tooltips = - let rw = ref None in - let aux () = - match !rw with - | None -> - - let window = GWindow.window ~title:"Tooltips" - ~border_width:0 ~allow_shrink:false ~allow_grow:false - ~auto_shrink:true () in - rw := Some window; - let tooltips = GData.tooltips () in - window #connect#destroy - ~callback:(fun _ -> tooltips #destroy (); rw := None); - - let box1 = GPack.vbox ~packing:window#add () in - - let box2 = GPack.vbox ~spacing:10 ~border_width:10 - ~packing:box1#add () in - - let button = GButton.toggle_button ~label:"button1" - ~packing:box2#add () - in - tooltips #set_tip button#coerce ~text:"This is button1" - ~privat:"ContextHelp/buttons/1"; - - let button = GButton.toggle_button ~label:"button2" - ~packing:box2#add () - in - tooltips #set_tip button#coerce - ~text:"This is button 2. This is also a really long tooltip which probably won't fit on a single line and will therefore need to be wrapped. Hopefully the wrapping will work correctly." - ~privat:"ContextHelp/buttons/2_long"; - - let toggle = GButton.toggle_button ~label:"Override TipsQuery Label" - ~packing:box2#add () in - tooltips #set_tip toggle#coerce ~text:"Toggle TipsQuery view." - ~privat:"Hi msw! ;)"; - - let box3 = GPack.vbox ~spacing:5 ~border_width:5 () in - - let button = GButton.button ~label:"[?]" - ~packing:box3#pack () in - - let tips_query = GMisc.tips_query ~packing:box3#add () in - button #connect#clicked ~callback:(tips_query #start); - - tooltips #set_tip button#coerce ~text:"Start the Tooltips Inspector" - ~privat:"ContextHelp/buttons/?"; - - tips_query #set_caller button#coerce; - tips_query #connect#widget_entered - ~callback:(tips_query_widget_entered toggle tips_query); - tips_query #connect#widget_selected ~callback:tips_query_widget_selected; - - let frame = GBin.frame ~label:"Tooltips Inspector" - ~border_width:0 ~packing:(box2#pack ~expand:true ~padding:10) - ~label_xalign:0.5 ~label_yalign:0.0 () in - frame #add box3#coerce; - - GMisc.separator `HORIZONTAL ~packing:box1#pack (); - - let box2 = GPack.vbox ~spacing: 10 ~border_width: 10 - ~packing: box1#pack () in - - let button = GButton.button ~label: "close" ~packing: box2#add () in - button #connect#clicked ~callback: window#destroy; - button #grab_default (); - tooltips #set_tip button#coerce ~text:"Push this button to close window" - ~privat:"ContextHelp/buttons/Close"; - - window #show (); - - | Some window -> window #destroy () - in aux - - -(* Labels *) -let create_labels = - let rw = ref None in - let aux () = - match !rw with - | None -> - - let window = GWindow.window ~title:"Labels" ~border_width:5 () in - rw := Some window; - window #connect#destroy - ~callback:(fun _ -> rw := None); - - let hbox = GPack.hbox ~spacing:5 ~packing:window#add () in - let vbox = GPack.vbox ~spacing:5 ~packing:hbox#add () in - - let frame = GBin.frame ~label:"Normal Label" - ~packing:vbox#pack () in - GMisc.label ~text:"This is a normal label" ~packing:frame#add (); - - let frame = GBin.frame ~label:"Multi_line Label" - ~packing:vbox#pack () in - GMisc.label ~packing:frame#add - ~text:"This is a multi-line label.\nSecond line\nThird line" (); - - let frame = GBin.frame ~label:"Left Justified Label" - ~packing:vbox#pack () in - GMisc.label ~packing:frame#add ~justify:`LEFT - ~text:"This is a left justified\nmulti_line label\nThird line" (); - - let frame = GBin.frame ~label:"Right Justified Label" - ~packing:vbox#pack () in - GMisc.label ~packing:frame#add ~justify:`RIGHT - ~text:"This is a right justified\nmulti_line label\nThird line" (); - - let vbox = GPack.vbox ~spacing:5 ~packing:hbox#add () in - - let frame = GBin.frame ~label:"Line wrapped Label" - ~packing:vbox#pack () in - GMisc.label ~packing:frame#add ~line_wrap:true - ~text:"This is an example of a line-wrapped label. It should not be taking up the entire width allocated to it, but automatically wraps the words to fit. The time has come, for all good men, to come to the aid of their party. The sixth sheik's six sheep's sick.\n It supports multiple paragraphs correctly, and correctly adds many extra spaces. " (); - - let frame = GBin.frame ~label:"Underlined Label" - ~packing:vbox#pack () in - GMisc.label ~text:"This label is underlined!\nThis one is underlined in a quite a funky fashion" ~packing:frame#add - ~justify:`LEFT ~pattern:"_________________________ _ _________ _ _____ _ __ __ ___ ____ _____" (); - - window #show (); - - | Some window -> window #destroy () - in aux - - -(* reparent *) - - -let set_parent child old_parent = - let name_opt = function - | None -> "(NULL)" - | Some w -> w#misc#get_type in - Printf.printf - "set parent for \"%s\": new parent: \"%s\", old parent: \"%s\"\n" - child#misc#get_type - (match child#misc#parent with Some p -> p#misc#get_type | None -> "(NULL)") - (name_opt old_parent) - -let reparent_label (label : GMisc.label) new_parent _ = - label #misc#reparent new_parent - - - -let create_reparent = - let rw = ref None in - let aux () = - match !rw with - | None -> - - let window = GWindow.window ~title:"Reparent" ~border_width:5 () in - rw := Some window; - window #connect#destroy ~callback:(fun _ -> rw := None); - - let vbox = GPack.vbox ~packing:window#add () in - let hbox = GPack.hbox ~spacing:5 ~border_width:10 - ~packing:vbox#add () in - - let frame = GBin.frame ~label:"Frame1" ~packing:hbox#add () in - let vbox2 = GPack.vbox ~spacing:5 ~border_width:5 - ~packing:frame#add () in - let label = GMisc.label ~text:"Hello world" - ~packing:vbox2#pack () in - label #misc#connect#parent_set ~callback:(set_parent label); - let button = GButton.button ~label:"switch" - ~packing:vbox2#pack () in - button #connect#clicked ~callback:(reparent_label label vbox2#coerce); - - let frame = GBin.frame ~label:"Frame2" ~packing:hbox#add () in - let vbox2 = GPack.vbox ~spacing:5 ~packing:frame#add ~border_width:5 () in - let button = GButton.button ~label:"switch" - ~packing:vbox2#pack () in - button #connect#clicked ~callback:(reparent_label label vbox2#coerce); - - GMisc.separator `HORIZONTAL ~packing:vbox#pack (); - - let vbox = GPack.vbox ~spacing:10 ~border_width:10 - ~packing:vbox#pack () in - - let button = GButton.button ~label: "close" ~packing:vbox#add () in - button #connect#clicked ~callback: window#destroy; - button #grab_default (); - - window #show (); - - | Some window -> window #destroy () - in aux - - - - -let create_main_window () = - let buttons = [ - "button box", Some create_button_box; - "buttons", Some create_buttons; - "check buttons", Some create_check_buttons; - "clist", None; - "color selection", None; - "ctree", None; - "cursors", None; - "dialog", None; - "entry", None; - "event watcher", None; - "file selection", None; - "font selection", None; - "gamma curve", None; - "handle box", Some create_handle_box; - "item factory", None; - "labels", Some create_labels; - "layout", None; - "list", None; - "menus", Some create_menus; - "modal windows", Some create_modal_window; - "notebooks", None; - "panes", None; - "pixmap", None; - "preview color", None; - "preview gray", None; - "progress bar", None; - "radio buttons", Some create_radio_buttons; - "range controls", None; - "rc file", None; - "reparent", Some create_reparent; - "rulers", None; - "saved position", None; - "scrolled windows", Some create_scrolled_windows; - "shapes", None; - "spinbutton", None; - "statusbar", None; - "test idle", None; - "test mainloop", None; - "test scrolling", None; - "test selection", None; - "test timeout", None; - "text", None; - "toggle buttons", Some create_toggle_buttons; - "toolbar", Some create_toolbar; - "tooltips", Some create_tooltips; - "tree", Some create_tree_mode_window; - "WM hints", None - ] in - - let window = GWindow.window ~title:"main window" ~allow_shrink:false - ~allow_grow:false ~auto_shrink:false ~width:200 ~height:400 ~x:20 ~y:20 () in - - window #connect#destroy ~callback: Main.quit; - - let box1 = GPack.vbox ~packing: window#add () in - - GMisc.label ~text: "Gtk+ v1.2" ~packing:box1#pack (); - - let scrolled_window = GBin.scrolled_window ~border_width: 10 - ~hpolicy: `AUTOMATIC ~vpolicy: `AUTOMATIC - ~packing:box1#add () in - - let box2 = GPack.vbox ~border_width: 10 - ~packing:scrolled_window#add_with_viewport () in - box2 #focus#set_vadjustment (Some scrolled_window#vadjustment); - - let rec aux = function - | [] -> () - | (_, None) :: tl -> aux tl - | (label, Some func) :: tl -> - let button = GButton.button ~label: label ~packing: box2#add () in - button #connect#clicked ~callback: func; - aux tl - in aux buttons; - - GMisc.separator `HORIZONTAL ~packing: box1#pack (); - - let box2 = GPack.vbox ~spacing: 10 ~border_width: 10 - ~packing: box1#pack () in - - let button = GButton.button ~label: "close" ~packing: box2#add () in - button #connect#clicked ~callback: window#destroy; - button #grab_default (); - - window #show (); - - Main.main () - -let _ = create_main_window () - diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/testinput.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/testinput.ml deleted file mode 100644 index a6aceb825..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/testinput.ml +++ /dev/null @@ -1,43 +0,0 @@ -(* $Id$ *) - -open GMain - -let main () = - let window = GWindow.window () in - window#misc#set_name "Test input"; - window#connect#destroy ~callback:Main.quit; - - let vbox = GPack.vbox ~packing:window#add () in - - let drawing_area = - GMisc.drawing_area ~width:200 ~height:200 ~packing:vbox#add () in - - drawing_area#event#connect#key_press ~callback: - begin fun ev -> - let key = GdkEvent.Key.keyval ev in - if key >= 32 && key < 256 then - Printf.printf "I got a %c\n" (Char.chr key) - else - print_string "I got another key\n"; - flush stdout; - true - end; - - drawing_area#event#add - [`EXPOSURE;`LEAVE_NOTIFY;`BUTTON_PRESS; - `POINTER_MOTION;`POINTER_MOTION_HINT;`PROXIMITY_OUT]; - drawing_area#event#set_extensions `ALL; - drawing_area#misc#set_can_focus true; - drawing_area#misc#grab_focus (); - - GButton.button ~label:"Input Dialog" ~packing:vbox#pack (); - - let button = - GButton.button ~label:"Quit" ~packing:vbox#pack () in - - button#connect#clicked ~callback:window#destroy; - - window#show (); - Main.main () - -let _ = main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/tictactoe.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/tictactoe.ml deleted file mode 100644 index be01e19b9..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/tictactoe.ml +++ /dev/null @@ -1,113 +0,0 @@ -(* $Id$ *) - -open GtkNew -open GtkBase - -(* To create a new widget: - create an array sig_array containing the signals defined by - the new widget; - call: - make_new_widget name parent:parent signal_array:sig_array - where name is the name of the new widget (a string) - parent is the type of the parent: of type Gtk.New.object_type - This call returns a triple: - (get_type_func, new_func, sig_array_num) - where get_type_func is the new widget get_type function, - new_func is the function returning a new widget of the new type - sig_array_num is an array containing the Gtk id of the signals - of the new widget. -*) - -module Tictactoe = struct - type t = [`widget|`container|`box|`tictactoe] - module Signals = struct - open GtkSignal - let tictactoe : ([>`tictactoe],_) t = - { name = "tictactoe"; marshaller = marshal_unit } - let emit_tictactoe = emit_unit ~sgn:tictactoe - end - let create : unit -> t Gtk.obj = - let _,tictactoe_new = make_new_widget - ~name:"Tictactoe" ~parent:VBOX ~signals:[Signals.tictactoe] - in fun () -> Object.try_cast (tictactoe_new ()) "Tictactoe" -end - -open GMain - -class tictactoe_signals obj = object - inherit GContainer.container_signals obj - method tictactoe = - GtkSignal.connect ~sgn:Tictactoe.Signals.tictactoe obj ~after -end - -exception Trouve - -class tictactoe ?packing ?show () = - let obj : Tictactoe.t Gtk.obj = Tictactoe.create () in - let box = new GPack.box_skel obj in -object (self) - inherit GObj.widget obj - val mutable buttons = [||] - val mutable buttons_handlers = [||] - val label = GMisc.label ~text:"Go on!" ~packing:box#add () - method clear () = - for i = 0 to 2 do - for j = 0 to 2 do - let button = buttons.(i).(j) - and handler = buttons_handlers.(i).(j) in - button#misc#handler_block handler; - button#set_active false; - button#misc#handler_unblock handler - done - done - method connect = new tictactoe_signals obj - method emit_tictactoe () = - GtkSignal.emit_unit obj ~sgn:Tictactoe.Signals.tictactoe - method toggle () = - let rwins = [| [| 0; 0; 0 |]; [| 1; 1; 1 |]; [| 2; 2; 2 |]; - [| 0; 1; 2 |]; [| 0; 1; 2 |]; [| 0; 1; 2 |]; - [| 0; 1; 2 |]; [| 0; 1; 2 |] |] - and cwins = [| [| 0; 1; 2 |]; [| 0; 1; 2 |]; [| 0; 1; 2 |]; - [| 0; 0; 0 |]; [| 1; 1; 1 |]; [| 2; 2; 2 |]; - [| 0; 1; 2 |]; [| 2; 1; 0 |] |] in - label#set_text"Go on!"; - try - for k = 0 to 7 do - let rec aux i = - (i = 3) || - (buttons.(rwins.(k).(i)).(cwins.(k).(i))#active) && (aux (i+1)) in - if aux 0 then raise Trouve - done - with Trouve -> label#set_text "Win!!"; self#emit_tictactoe () - - initializer - let table = - GPack.table ~rows:3 ~columns:3 ~homogeneous:true ~packing:box#add () in - buttons <- - Array.init 3 ~f: - (fun i -> Array.init 3 ~f: - (fun j -> - GButton.toggle_button ~width:20 ~height:20 - ~packing:(table#attach ~left:i ~top:j ~expand:`BOTH) ())); - buttons_handlers <- - Array.mapi buttons ~f: - (fun i -> Array.mapi ~f: - (fun j button -> button #connect#toggled ~callback:self#toggle)); - GObj.pack_return self ~packing ~show; - () -end - -let win (ttt : tictactoe) _ = - Printf.printf "Gagne!!\n" ; - ttt #clear () - -let essai () = - let window = GWindow.window ~title:"Tictactoe" ~border_width:10 () in - window #connect#destroy ~callback:Main.quit; - let ttt = new tictactoe ~packing:window#add () in - ttt #connect#tictactoe ~callback:(win ttt); - window #show (); - Main.main () - -let _ = essai () - diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/tron.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/tron.ml deleted file mode 100644 index eced44a9c..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/tron.ml +++ /dev/null @@ -1,204 +0,0 @@ -(* $Id$ *) - -(* Tron? Game *) -open GMain - -let m_pi = acos (-1.) -let clRed = `NAME "red" (* `BLACK *) -let clBlue = `NAME "blue" (* `WHITE *) -let clBlack = `BLACK - -type point = {mutable x: int; mutable y: int} - -let main () = -(* Game State *) - let gameSize = 64 in - let gameState = - Array.create_matrix ~dimx:(gameSize+2) ~dimy:(gameSize+2) 0 in - let gameInit _ = - for i=1 to gameSize do - for j=1 to gameSize do - gameState.(i).(j) <- 0; - done - done; - for i=0 to gameSize do - gameState.(0).(i) <- 3; (* left wall *) - gameState.(i).(gameSize+1) <- 3; (* floor *) - gameState.(gameSize+1).(i+1) <- 3; (* right wall *) - gameState.(i+1).(0) <- 3 (* ceiling *) - done in - gameInit (); - let lpos = {x=4; y=4} in - let lspeed = {x=0; y=1} in - let rpos = {x=gameSize-3; y=gameSize-3} in - let rspeed = {x=0; y= -1} in - let keys = "asdfhjkl" in - let keyMapL = [|(-1, 0); (0, -1); (0, 1); (1, 0)|] in - let keyMapR = [|(-1, 0); (0, 1); (0, -1); (1, 0)|] in - -(* User Interface *) - let window = GWindow.window ~border_width:10 ~title:"tron(?)" () in - window#event#connect#delete - ~callback:(fun _ -> prerr_endline "Delete event occured"; false); - window#connect#destroy ~callback:Main.quit; - let vbx = GPack.vbox ~packing:window#add () in - let area = GMisc.drawing_area ~width:((gameSize+2)*4) ~height:((gameSize+2)*4) - ~packing:vbx#add () in - let drawing = area#misc#realize (); new GDraw.drawable (area#misc#window) in - let style = area#misc#style#copy in - style#set_bg [`NORMAL,`WHITE]; - area#misc#set_style style; - drawing#set_background `WHITE; - let area_expose _ = - for i=0 to gameSize+1 do - for j=0 to gameSize+1 do - if gameState.(i).(j) = 1 then begin - drawing#set_foreground clRed; - drawing#rectangle ~filled:true ~x:(i*4) ~y:(j*4) ~width:4 ~height:4 () - end - else if gameState.(i).(j) = 2 then begin - drawing#set_foreground clBlue; - drawing#rectangle ~filled:true ~x:(i*4) ~y:(j*4) ~width:4 ~height:4 () - end - else if gameState.(i).(j) = 3 then begin - drawing#set_foreground clBlack; - drawing#rectangle ~filled:true ~x:(i*4) ~y:(j*4) ~width:4 ~height:4 () - end - done - done; - false - in - area#event#connect#expose ~callback:area_expose; - let control = GPack.table ~rows:3 ~columns:7 ~packing:vbx#pack () in - - let abuttonClicked num (lbl : GMisc.label) _ = begin - let dialog = - GWindow.window ~kind:`DIALOG ~border_width:10 ~title:"Key remap" () in - let dvbx = GPack.box `VERTICAL ~packing:dialog#add () in - let entry = GEdit.entry ~max_length:1 ~packing: dvbx#add () in - let txt = String.make 1 keys.[num] in - entry#set_text txt; - let dquit = GButton.button ~label:"OK" ~packing: dvbx#add () in - dquit#connect#clicked ~callback: - begin fun _ -> - let chr = entry#text.[0] in - let txt2 = String.make 1 chr in - lbl#set_text txt2; - keys.[num]<-chr; - dialog#destroy () - end; - dialog#show () - end in - let attach = control#attach ~expand:`BOTH in - let new_my_button ~label:label ~left:left ~top:top = - let str = String.make 1 keys.[label] in - let btn = GButton.button ~packing:(attach ~left:left ~top:top) () in - let lbl = GMisc.label ~text:str ~packing:(btn#add) () in - btn#connect#clicked ~callback:(abuttonClicked label lbl); - btn - in - new_my_button ~label:0 ~left:1 ~top:2; - new_my_button ~label:1 ~left:2 ~top:1; - new_my_button ~label:2 ~left:2 ~top:3; - new_my_button ~label:3 ~left:3 ~top:2; - new_my_button ~label:4 ~left:5 ~top:2; - new_my_button ~label:5 ~left:6 ~top:3; - new_my_button ~label:6 ~left:6 ~top:1; - new_my_button ~label:7 ~left:7 ~top:2; - let quit = - GButton.button ~label:"Quit" ~packing:(attach ~left:4 ~top:2) () in - quit#connect#clicked ~callback:window#destroy; - let message = GMisc.label ~text:"tron(?) game" ~packing:vbx#pack () in - - let game_step () = - let lx = lpos.x in let ly = lpos.y in - gameState.(lx).(ly) <- 1; - drawing#set_foreground clRed; - drawing#rectangle ~filled:true ~x:(lx*4) ~y:(ly*4) ~width:4 ~height:4 (); - let rx = rpos.x in let ry = rpos.y in - gameState.(rx).(ry) <- 2; - drawing#set_foreground clBlue; - drawing#rectangle ~filled:true ~x:(rx*4) ~y:(ry*4) ~width:4 ~height:4 () - in - game_step (); - let keyDown ev = begin - let key = GdkEvent.Key.keyval ev in - for i=0 to (Array.length keyMapL)-1 do - let (x, y) = keyMapL.(i) in - let k = keys.[i] in - if key = Char.code k then begin - lspeed.x <- x; - lspeed.y <- y - end; - let (x, y) = keyMapR.(i) in - let k = keys.[i+4] in - if key = Char.code k then begin - rspeed.x <- x; - rspeed.y <- y - end - done; - false end in - window#event#connect#key_press ~callback:keyDown; - let safe_check _ = - if lpos.x == rpos.x && lpos.y == rpos.y then - 3 - else - (* player 1 *) - (if gameState.(lpos.x).(lpos.y) != 0 then 2 else 0) - + - (* player 2 *) - (if gameState.(rpos.x).(rpos.y) != 0 then 1 else 0) - in - let timerID = ref (* dummy *) (Timeout.add ~ms:100 ~callback:(fun _ -> true)) in - let timerTimer _ = begin - lpos.x <- lpos.x+lspeed.x; - lpos.y <- lpos.y+lspeed.y; - rpos.x <- rpos.x+rspeed.x; - rpos.y <- rpos.y+rspeed.y; - let result = safe_check() in - if result!=0 then begin - Timeout.remove (!timerID); - message#set_text ("player "^string_of_int result^" won.") - end - else begin - game_step() - end; - true - end in - let count = ref 3 in - let timerTimer2 _ = begin -(* message#set_label (string_of_int (!count)); *) - if (!count==0) then begin - Timeout.remove (!timerID); - timerID := Timeout.add ~ms:100 ~callback:timerTimer - end - else begin - count := !count-1; - end; - true - end in - let restartClicked () = - Timeout.remove !timerID; - gameInit(); - lpos.x <- 4; lpos.y <- 4; - lspeed.x <- 0; lspeed.y <- 1; - rpos.x <- gameSize-3; rpos.y <- gameSize-3; - rspeed.x <- 0; rspeed.y <- -1; - drawing#set_foreground `WHITE; - drawing#rectangle ~filled:true ~x:0 ~y:0 - ~width:((gameSize+2)*4) ~height:((gameSize+2)*4) (); - area_expose(); - count := 3; - timerID := Timeout.add ~ms:300 ~callback:timerTimer2; - in - let restart = - GButton.button ~label: "Restart" ~packing:(attach ~left:4 ~top:3) () in - restart#connect#clicked ~callback:restartClicked; - restartClicked (); - - window#show (); - Main.main () - -let _ = Printexc.print main () - - diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/xmhtml/test.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/xmhtml/test.ml deleted file mode 100644 index 6c9d3715a..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/examples/xmhtml/test.ml +++ /dev/null @@ -1,38 +0,0 @@ -(* $Id$ *) - -let test_string2 = String.concat ~sep:"" [ - "\n"; - "The Gtk/XmHTML test\n"; - "This is the Gtk/XmHTML test program

    \n"; - "You can invoke this program with a command line argument, like this:\n"; - "


    "; - "./xtest filename.html"; - "
    "; - "Click here to load a different
    test message"; - ""; -] - -let read_file file = - let ic = open_in file in - let b = Buffer.create 16384 and s = String.create 1024 and len = ref 0 in - while len := input ic ~buf:s ~pos:0 ~len:1024; !len > 0 do - Buffer.add_substring b s ~pos:0 ~len:!len - done; - Buffer.contents b - -open GMain - -let _ = - let w = GWindow.window ~width:600 ~height:500 () in - w#connect#destroy ~callback:Main.quit; - let source = - if Array.length Sys.argv > 1 then begin - Sys.chdir (Filename.dirname Sys.argv.(1)); - read_file (Filename.basename Sys.argv.(1)) - end - else test_string2 in - let html = GHtml.xmhtml ~source ~packing:w#add () in - html#set_anchor_buttons false; - html#set_anchor_underline [`SINGLE;`DASHED]; - w#show (); - Main.main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gBin.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gBin.ml deleted file mode 100644 index f248ba0f8..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gBin.ml +++ /dev/null @@ -1,153 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open GtkBase -open GtkBin -open GObj -open GContainer - -class scrolled_window obj = object - inherit container_full (obj : Gtk.scrolled_window obj) - method hadjustment = - new GData.adjustment (ScrolledWindow.get_hadjustment obj) - method vadjustment = - new GData.adjustment (ScrolledWindow.get_vadjustment obj) - method set_hadjustment adj = - ScrolledWindow.set_hadjustment obj (GData.as_adjustment adj) - method set_vadjustment adj = - ScrolledWindow.set_vadjustment obj (GData.as_adjustment adj) - method set_hpolicy hpolicy = ScrolledWindow.set_policy' obj ~hpolicy - method set_vpolicy vpolicy = ScrolledWindow.set_policy' obj ~vpolicy - method set_placement = ScrolledWindow.set_placement obj - method add_with_viewport w = - ScrolledWindow.add_with_viewport obj (as_widget w) -end - -let scrolled_window ?hadjustment ?vadjustment ?hpolicy ?vpolicy - ?placement ?border_width ?width ?height ?packing ?show () = - let w = - ScrolledWindow.create () - ?hadjustment:(may_map ~f:GData.as_adjustment hadjustment) - ?vadjustment:(may_map ~f:GData.as_adjustment vadjustment) in - ScrolledWindow.set w ?hpolicy ?vpolicy ?placement; - Container.set w ?border_width ?width ?height; - pack_return (new scrolled_window w) ~packing ~show - -class event_box obj = object - inherit container_full (obj : Gtk.event_box obj) - method event = new GObj.event_ops obj -end - -let event_box ?border_width ?width ?height ?packing ?show () = - let w = EventBox.create () in - Container.set w ?border_width ?width ?height; - pack_return (new event_box w) ~packing ~show - -class handle_box_signals obj = object - inherit container_signals obj - method child_attached ~callback = - GtkSignal.connect ~sgn:HandleBox.Signals.child_attached obj ~after - ~callback:(fun obj -> callback (new widget obj)) - method child_detached ~callback = - GtkSignal.connect ~sgn:HandleBox.Signals.child_detached obj ~after - ~callback:(fun obj -> callback (new widget obj)) -end - -class handle_box obj = object - inherit container (obj : Gtk.handle_box obj) - method set_shadow_type = HandleBox.set_shadow_type obj - method set_handle_position = HandleBox.set_handle_position obj - method set_snap_edge = HandleBox.set_snap_edge obj - method connect = new handle_box_signals obj - method event = new GObj.event_ops obj -end - -let handle_box ?border_width ?width ?height ?packing ?show () = - let w = HandleBox.create () in - let () = Container.set w ?border_width ?width ?height in - pack_return (new handle_box w) ~packing ~show - -class frame_skel obj = object - inherit container obj - method set_label = Frame.set_label obj - method set_label_align ?x ?y () = Frame.set_label_align' obj ?x ?y - method set_shadow_type = Frame.set_shadow_type obj -end - -class frame obj = object - inherit frame_skel (Frame.coerce obj) - method connect = new container_signals obj -end - -let frame ?(label="") ?label_xalign ?label_yalign ?shadow_type - ?border_width ?width ?height ?packing ?show () = - let w = Frame.create label in - Frame.set w ?label_xalign ?label_yalign ?shadow_type; - Container.set w ?border_width ?width ?height; - pack_return (new frame w) ~packing ~show - -class aspect_frame obj = object - inherit frame_skel (obj : Gtk.aspect_frame obj) - method connect = new container_signals obj - method set_alignment ?x ?y () = AspectFrame.set obj ?xalign:x ?yalign:y - method set_ratio ratio = AspectFrame.set obj ~ratio - method set_obey_child obey_child = AspectFrame.set obj ~obey_child -end - -let aspect_frame ?label ?xalign ?yalign ?ratio ?obey_child - ?label_xalign ?label_yalign ?shadow_type - ?border_width ?width ?height ?packing ?show () = - let w = - AspectFrame.create ?label ?xalign ?yalign ?ratio ?obey_child () in - Frame.set w ?label_xalign ?label_yalign ?shadow_type; - Container.set w ?border_width ?width ?height; - pack_return (new aspect_frame w) ~packing ~show - -class viewport obj = object - inherit container_full (obj : Gtk.viewport obj) - method event = new event_ops obj - method set_hadjustment adj = - Viewport.set_hadjustment obj (GData.as_adjustment adj) - method set_vadjustment adj = - Viewport.set_vadjustment obj (GData.as_adjustment adj) - method set_shadow_type = Viewport.set_shadow_type obj - method hadjustment = new GData.adjustment (Viewport.get_hadjustment obj) - method vadjustment = new GData.adjustment (Viewport.get_vadjustment obj) -end - -let viewport ?hadjustment ?vadjustment ?shadow_type - ?border_width ?width ?height ?packing ?show () = - let w = Viewport.create () - ?hadjustment:(may_map ~f:GData.as_adjustment hadjustment) - ?vadjustment:(may_map ~f:GData.as_adjustment vadjustment) in - may shadow_type ~f:(Viewport.set_shadow_type w); - Container.set w ?border_width ?width ?height; - pack_return (new viewport w) ~packing ~show - -class alignment obj = object - inherit container_full (obj : Gtk.alignment obj) - method set_alignment ?x ?y () = Alignment.set ?x ?y obj - method set_scale ?x ?y () = Alignment.set ?xscale:x ?yscale:y obj -end - -let alignment ?x ?y ?xscale ?yscale - ?border_width ?width ?height ?packing ?show () = - let w = Alignment.create ?x ?y ?xscale ?yscale () in - Container.set w ?border_width ?width ?height; - pack_return (new alignment w) ~packing ~show - -let alignment_cast w = new alignment (Alignment.cast w#as_widget) - -class socket obj = object (self) - inherit container_full (obj : Gtk.socket obj) - method steal = Socket.steal obj - method xwindow = - self#misc#realize (); - Gdk.Window.get_xwindow self#misc#window -end - -let socket ?border_width ?width ?height ?packing ?show () = - let w = Socket.create () in - Container.set w ?border_width ?width ?height; - pack_return (new socket w) ?packing ?show diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gBin.mli b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gBin.mli deleted file mode 100644 index 9593650c3..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gBin.mli +++ /dev/null @@ -1,163 +0,0 @@ -(* $Id$ *) - -open Gtk -open GObj -open GContainer - -class scrolled_window : Gtk.scrolled_window obj -> - object - inherit container_full - val obj : Gtk.scrolled_window obj - method add_with_viewport : widget -> unit - method hadjustment : GData.adjustment - method set_hadjustment : GData.adjustment -> unit - method set_hpolicy : Tags.policy_type -> unit - method set_placement : Tags.corner_type -> unit - method set_vadjustment : GData.adjustment -> unit - method set_vpolicy : Tags.policy_type -> unit - method vadjustment : GData.adjustment - end -val scrolled_window : - ?hadjustment:GData.adjustment -> - ?vadjustment:GData.adjustment -> - ?hpolicy:Tags.policy_type -> - ?vpolicy:Tags.policy_type -> - ?placement:Tags.corner_type -> - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> scrolled_window - -class event_box : Gtk.event_box obj -> - object - inherit container_full - val obj : Gtk.event_box obj - method event : event_ops - end -val event_box : - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> event_box - -class handle_box_signals : 'a obj -> - object - inherit container_signals - constraint 'a = [>`handlebox|`container|`widget] - val obj : 'a obj - method child_attached : callback:(widget -> unit) -> GtkSignal.id - method child_detached : callback:(widget -> unit) -> GtkSignal.id - end - -class handle_box : Gtk.handle_box obj -> - object - inherit container - val obj : Gtk.handle_box obj - method event : event_ops - method connect : handle_box_signals - method set_handle_position : Tags.position -> unit - method set_shadow_type : Tags.shadow_type -> unit - method set_snap_edge : Tags.position -> unit - end -val handle_box : - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> handle_box - -class frame_skel : 'a obj -> - object - inherit container - constraint 'a = [>`frame|`container|`widget] - val obj : 'a obj - method set_label : string -> unit - method set_label_align : ?x:clampf -> ?y:clampf -> unit -> unit - method set_shadow_type : Tags.shadow_type -> unit - end -class frame : [>`frame] obj -> - object - inherit frame_skel - val obj : Gtk.frame obj - method connect : GContainer.container_signals - end -val frame : - ?label:string -> - ?label_xalign:clampf -> - ?label_yalign:clampf -> - ?shadow_type:Tags.shadow_type -> - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> frame - -class aspect_frame : Gtk.aspect_frame obj -> - object - inherit frame - val obj : Gtk.aspect_frame obj - method set_alignment : ?x:clampf -> ?y:clampf -> unit -> unit - method set_obey_child : bool -> unit - method set_ratio : clampf -> unit - end -val aspect_frame : - ?label:string -> - ?xalign:clampf -> - ?yalign:clampf -> - ?ratio:float -> - ?obey_child:bool -> - ?label_xalign:clampf -> - ?label_yalign:clampf -> - ?shadow_type:Tags.shadow_type -> - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> aspect_frame - -class viewport : Gtk.viewport obj -> - object - inherit container_full - val obj : Gtk.viewport obj - method event : event_ops - method hadjustment : GData.adjustment - method set_hadjustment : GData.adjustment -> unit - method set_shadow_type : Gtk.Tags.shadow_type -> unit - method set_vadjustment : GData.adjustment -> unit - method vadjustment : GData.adjustment - end -val viewport : - ?hadjustment:GData.adjustment -> - ?vadjustment:GData.adjustment -> - ?shadow_type:Tags.shadow_type -> - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> viewport - -class alignment : Gtk.alignment obj -> - object - inherit container_full - val obj : Gtk.alignment obj - method set_alignment : ?x:Gtk.clampf -> ?y:Gtk.clampf -> unit -> unit - method set_scale : ?x:Gtk.clampf -> ?y:Gtk.clampf -> unit -> unit - end -val alignment : - ?x:Gtk.clampf -> - ?y:Gtk.clampf -> - ?xscale:Gtk.clampf -> - ?yscale:Gtk.clampf -> - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> alignment -val alignment_cast : < as_widget : 'a obj; .. > -> alignment - -class socket : Gtk.socket obj -> - object - inherit container_full - val obj : Gtk.socket obj - method steal : Gdk.xid -> unit - method xwindow : Gdk.xid - end - -val socket : - ?border_width:int -> ?width:int -> ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> socket diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gButton.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gButton.ml deleted file mode 100644 index 08ac70445..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gButton.ml +++ /dev/null @@ -1,124 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open GtkBase -open GtkButton -open GObj -open GContainer - -class button_skel obj = object (self) - inherit container obj - method clicked () = Button.clicked obj - method grab_default () = - Widget.set_can_default obj true; - Widget.grab_default obj -end - -class button_signals obj = object - inherit container_signals obj - method clicked = GtkSignal.connect ~sgn:Button.Signals.clicked ~after obj - method pressed = GtkSignal.connect ~sgn:Button.Signals.pressed ~after obj - method released = GtkSignal.connect ~sgn:Button.Signals.released ~after obj - method enter = GtkSignal.connect ~sgn:Button.Signals.enter ~after obj - method leave = GtkSignal.connect ~sgn:Button.Signals.leave ~after obj -end - -class button obj = object - inherit button_skel (Button.coerce obj) - method connect = new button_signals obj - method event = new GObj.event_ops obj -end - -let button ?label ?border_width ?width ?height ?packing ?show () = - let w = Button.create ?label () in - Container.set w ?border_width ?width ?height; - pack_return (new button w) ~packing ~show - -class toggle_button_signals obj = object - inherit button_signals obj - method toggled = - GtkSignal.connect ~sgn:ToggleButton.Signals.toggled obj ~after -end - -class toggle_button obj = object - inherit button_skel obj - method connect = new toggle_button_signals obj - method active = ToggleButton.get_active obj - method set_active = ToggleButton.set_active obj - method set_draw_indicator = ToggleButton.set_mode obj -end - -let toggle_button ?label ?active ?draw_indicator - ?border_width ?width ?height ?packing ?show () = - let w = ToggleButton.create_toggle ?label () in - ToggleButton.set w ?active ?draw_indicator; - Container.set w ?border_width ?width ?height; - pack_return (new toggle_button w) ~packing ~show - -let check_button ?label ?active ?draw_indicator - ?border_width ?width ?height ?packing ?show () = - let w = ToggleButton.create_check ?label () in - ToggleButton.set w ?active ?draw_indicator; - Container.set w ?border_width ?width ?height; - pack_return (new toggle_button w) ~packing ~show - -class radio_button obj = object - inherit toggle_button (obj : Gtk.radio_button obj) - method set_group = RadioButton.set_group obj - method group = Some obj -end - -let radio_button ?group ?label ?active ?draw_indicator - ?border_width ?width ?height ?packing ?show () = - let w = RadioButton.create ?group ?label () in - ToggleButton.set w ?active ?draw_indicator; - Container.set w ?border_width ?width ?height; - pack_return (new radio_button w) ~packing ~show - -class toolbar obj = object - inherit container_full (obj : Gtk.toolbar obj) - method insert_widget ?tooltip ?tooltip_private ?pos w = - Toolbar.insert_widget obj (as_widget w) ?tooltip ?tooltip_private ?pos - - method insert_button ?text ?tooltip ?tooltip_private ?icon - ?pos ?callback () = - let icon = may_map icon ~f:as_widget in - new button - (Toolbar.insert_button obj ~kind:`BUTTON ?icon ?text - ?tooltip ?tooltip_private ?pos ?callback ()) - - method insert_toggle_button ?text ?tooltip ?tooltip_private ?icon - ?pos ?callback () = - let icon = may_map icon ~f:as_widget in - new toggle_button - (ToggleButton.cast - (Toolbar.insert_button obj ~kind:`TOGGLEBUTTON ?icon ?text - ?tooltip ?tooltip_private ?pos ?callback ())) - - method insert_radio_button ?text ?tooltip ?tooltip_private ?icon - ?pos ?callback () = - let icon = may_map icon ~f:as_widget in - new radio_button - (RadioButton.cast - (Toolbar.insert_button obj ~kind:`RADIOBUTTON ?icon ?text - ?tooltip ?tooltip_private ?pos ?callback ())) - - method insert_space = Toolbar.insert_space obj - - method set_orientation = Toolbar.set_orientation obj - method set_style = Toolbar.set_style obj - method set_space_size = Toolbar.set_space_size obj - method set_space_style = Toolbar.set_space_style obj - method set_tooltips = Toolbar.set_tooltips obj - method set_button_relief = Toolbar.set_button_relief obj - method button_relief = Toolbar.get_button_relief obj -end - -let toolbar ?(orientation=`HORIZONTAL) ?style - ?space_size ?space_style ?tooltips ?button_relief - ?border_width ?width ?height ?packing ?show () = - let w = Toolbar.create orientation ?style () in - Toolbar.set w ?space_size ?space_style ?tooltips ?button_relief; - Container.set w ?border_width ?width ?height; - pack_return (new toolbar w) ~packing ~show diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gButton.mli b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gButton.mli deleted file mode 100644 index ee2653da1..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gButton.mli +++ /dev/null @@ -1,144 +0,0 @@ -(* $Id$ *) - -open Gtk -open GObj -open GContainer - -class button_skel : - 'a obj -> - object - inherit container - constraint 'a = [>`widget|`button|`container] - val obj : 'a obj - method clicked : unit -> unit - method grab_default : unit -> unit - end -class button_signals : - 'b obj -> - object ('a) - inherit container_signals - constraint 'b = [>`button|`container|`widget] - val obj : 'b obj - method clicked : callback:(unit -> unit) -> GtkSignal.id - method enter : callback:(unit -> unit) -> GtkSignal.id - method leave : callback:(unit -> unit) -> GtkSignal.id - method pressed : callback:(unit -> unit) -> GtkSignal.id - method released : callback:(unit -> unit) -> GtkSignal.id - end - -class button : - [>`button] obj -> - object - inherit button_skel - val obj : Gtk.button obj - method event : event_ops - method connect : button_signals - end -val button : - ?label:string -> - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> button - -class toggle_button_signals : - 'b obj -> - object ('a) - inherit button_signals - constraint 'b = [>`toggle|`button|`container|`widget] - val obj : 'b obj - method toggled : callback:(unit -> unit) -> GtkSignal.id - end - -class toggle_button : - 'a obj -> - object - inherit button_skel - constraint 'a = [>`toggle|`button|`container|`widget] - val obj : 'a obj - method active : bool - method connect : toggle_button_signals - method set_active : bool -> unit - method set_draw_indicator : bool -> unit - end -val toggle_button : - ?label:string -> - ?active:bool -> - ?draw_indicator:bool -> - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> toggle_button -val check_button : - ?label:string -> - ?active:bool -> - ?draw_indicator:bool -> - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> toggle_button - -class radio_button : - Gtk.radio_button obj -> - object - inherit toggle_button - val obj : Gtk.radio_button obj - method group : Gtk.radio_button group - method set_group : Gtk.radio_button group -> unit - end -val radio_button : - ?group:Gtk.radio_button group -> - ?label:string -> - ?active:bool -> - ?draw_indicator:bool -> - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> radio_button - -class toolbar : - Gtk.toolbar obj -> - object - inherit container_full - val obj : Gtk.toolbar obj - method button_relief : Tags.relief_style - method insert_button : - ?text:string -> - ?tooltip:string -> - ?tooltip_private:string -> - ?icon:widget -> - ?pos:int -> ?callback:(unit -> unit) -> unit -> button - method insert_radio_button : - ?text:string -> - ?tooltip:string -> - ?tooltip_private:string -> - ?icon:widget -> - ?pos:int -> ?callback:(unit -> unit) -> unit -> radio_button - method insert_space : ?pos:int -> unit -> unit - method insert_toggle_button : - ?text:string -> - ?tooltip:string -> - ?tooltip_private:string -> - ?icon:widget -> - ?pos:int -> ?callback:(unit -> unit) -> unit -> toggle_button - method insert_widget : - ?tooltip:string -> - ?tooltip_private:string -> ?pos:int -> widget -> unit - method set_button_relief : Tags.relief_style -> unit - method set_orientation : Tags.orientation -> unit - method set_space_size : int -> unit - method set_space_style : [`EMPTY|`LINE] -> unit - method set_style : Tags.toolbar_style -> unit - method set_tooltips : bool -> unit - end -val toolbar : - ?orientation:Tags.orientation -> - ?style:Tags.toolbar_style -> - ?space_size:int -> - ?space_style:[`EMPTY|`LINE] -> - ?tooltips:bool -> - ?button_relief:Tags.relief_style -> - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> toolbar diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gContainer.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gContainer.ml deleted file mode 100644 index 2ea765e83..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gContainer.ml +++ /dev/null @@ -1,75 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open GtkBase -open GObj -open GData - -class focus obj = object - val obj = obj - method circulate = Container.focus obj - method set (child : widget option) = - let child = may_map child ~f:(fun x -> x#as_widget) in - Container.set_focus_child obj (Gpointer.optboxed child) - method set_hadjustment adj = - Container.set_focus_hadjustment obj - (Gpointer.optboxed (may_map adj ~f:as_adjustment)) - method set_vadjustment adj = - Container.set_focus_vadjustment obj - (Gpointer.optboxed (may_map adj ~f:as_adjustment)) -end - -class container obj = object (self) - inherit widget obj - method add w = - (* Hack to avoid creating a bin class *) - if GtkBase.Object.is_a obj "GtkBin" && Container.children obj <> [] then - raise (Gtk.Error "GContainer.container#add: already full"); - Container.add obj (as_widget w) - method remove w = Container.remove obj (as_widget w) - method children = List.map ~f:(new widget) (Container.children obj) - method set_border_width = Container.set_border_width obj - method focus = new focus obj -end - -class container_signals obj = object - inherit widget_signals obj - method add ~callback = - GtkSignal.connect ~sgn:Container.Signals.add obj ~after - ~callback:(fun w -> callback (new widget w)) - method remove ~callback = - GtkSignal.connect ~sgn:Container.Signals.remove obj ~after - ~callback:(fun w -> callback (new widget w)) -end - -class container_full obj = object - inherit container obj - method connect = new container_signals obj -end - -let cast_container (w : widget) = - new container_full (GtkBase.Container.cast w#as_widget) - -class virtual ['a] item_container obj = object (self) - inherit widget obj - method add (w : 'a) = - Container.add obj w#as_item - method remove (w : 'a) = - Container.remove obj w#as_item - method private virtual wrap : Gtk.widget obj -> 'a - method children : 'a list = - List.map ~f:self#wrap (Container.children obj) - method set_border_width = Container.set_border_width obj - method focus = new focus obj - method virtual insert : 'a -> pos:int -> unit - method append (w : 'a) = self#insert w ~pos:(-1) - method prepend (w : 'a) = self#insert w ~pos:0 -end - -class item_signals obj = object - inherit container_signals obj - method select = GtkSignal.connect ~sgn:Item.Signals.select obj ~after - method deselect = GtkSignal.connect ~sgn:Item.Signals.deselect obj ~after - method toggle = GtkSignal.connect ~sgn:Item.Signals.toggle obj ~after -end diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gContainer.mli b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gContainer.mli deleted file mode 100644 index 290982942..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gContainer.mli +++ /dev/null @@ -1,79 +0,0 @@ -(* $Id$ *) - -open Gtk -open GObj - -class focus : - 'a obj -> - object - constraint 'a = [>`container] - val obj : 'a obj - method circulate : Tags.direction_type -> bool - method set : widget option -> unit - method set_hadjustment : GData.adjustment option -> unit - method set_vadjustment : GData.adjustment option -> unit - end - -class container : - 'a obj -> - object - inherit widget - constraint 'a = [>`container|`widget] - val obj : 'a obj - method add : widget -> unit - method children : widget list - method remove : widget -> unit - method focus : focus - method set_border_width : int -> unit - end - -class container_signals : - 'a obj -> - object - inherit widget_signals - constraint 'a = [>`container|`widget] - val obj : 'a obj - method add : callback:(widget -> unit) -> GtkSignal.id - method remove : callback:(widget -> unit) -> GtkSignal.id - end - -class container_full : - 'a obj -> - object - inherit container - constraint 'a = [>`container|`widget] - val obj : 'a obj - method connect : container_signals - end - -val cast_container : widget -> container_full -(* may raise [Gtk.Cannot_cast "GtkContainer"] *) - -class virtual ['a] item_container : - 'c obj -> - object - constraint 'a = < as_item : [>`widget] obj; .. > - constraint 'c = [>`container|`widget] - inherit widget - val obj : 'c obj - method add : 'a -> unit - method append : 'a -> unit - method children : 'a list - method virtual insert : 'a -> pos:int -> unit - method prepend : 'a -> unit - method remove : 'a -> unit - method focus : focus - method set_border_width : int -> unit - method private virtual wrap : Gtk.widget obj -> 'a - end - -class item_signals : - 'a obj -> - object - inherit container_signals - constraint 'a = [>`container|`item|`widget] - val obj : 'a obj - method deselect : callback:(unit -> unit) -> GtkSignal.id - method select : callback:(unit -> unit) -> GtkSignal.id - method toggle : callback:(unit -> unit) -> GtkSignal.id - end diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gData.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gData.ml deleted file mode 100644 index 52aa3f1f4..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gData.ml +++ /dev/null @@ -1,60 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open GtkData -open GObj - -class data_signals obj = object - inherit gtkobj_signals obj - method disconnect_data = - GtkSignal.connect ~sgn:Data.Signals.disconnect obj ~after -end - -class adjustment_signals obj = object - inherit data_signals obj - method changed = GtkSignal.connect ~sgn:Adjustment.Signals.changed obj ~after - method value_changed = - GtkSignal.connect ~sgn:Adjustment.Signals.value_changed obj ~after -end - -class adjustment obj = object - inherit gtkobj obj - method as_adjustment : Gtk.adjustment obj = obj - method connect = new adjustment_signals obj - method set_value = Adjustment.set_value obj - method clamp_page = Adjustment.clamp_page obj - method lower = Adjustment.get_lower obj - method upper = Adjustment.get_upper obj - method value = Adjustment.get_value obj - method step_increment = Adjustment.get_step_increment obj - method page_increment = Adjustment.get_page_increment obj - method page_size = Adjustment.get_page_size obj -end - -let adjustment ?(value=0.) ?(lower=0.) ?(upper=100.) - ?(step_incr=1.) ?(page_incr=10.) ?(page_size=10.) () = - let w = - Adjustment.create ~value ~lower ~upper ~step_incr ~page_incr ~page_size in - new adjustment w - -let as_adjustment (adj : adjustment) = adj#as_adjustment - -class tooltips obj = object - inherit gtkobj (obj : Gtk.tooltips obj) - method as_tooltips = obj - method connect = new data_signals obj - method enable () = Tooltips.enable obj - method disable () = Tooltips.disable obj - method set_tip ?text ?privat w = - Tooltips.set_tip obj (as_widget w) ?text ?privat - method set_delay = Tooltips.set_delay obj -end - -let tooltips ?delay () = - let tt = Tooltips.create () in - Tooltips.set tt ?delay; - new tooltips tt - - - diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gData.mli b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gData.mli deleted file mode 100644 index ae7b29eb5..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gData.mli +++ /dev/null @@ -1,60 +0,0 @@ -(* $Id$ *) - -open Gtk - -class data_signals : - 'a obj -> - object - inherit GObj.gtkobj_signals - constraint 'a = [>`data] - val obj : 'a obj - method disconnect_data : callback:(unit -> unit) -> GtkSignal.id - end - -class adjustment_signals : - 'a obj -> - object - inherit data_signals - constraint 'a = [>`adjustment|`data] - val obj : 'a obj - method changed : callback:(unit -> unit) -> GtkSignal.id - method value_changed : callback:(unit -> unit) -> GtkSignal.id - end - -class adjustment : Gtk.adjustment obj -> - object - inherit GObj.gtkobj - val obj : Gtk.adjustment obj - method as_adjustment : Gtk.adjustment obj - method clamp_page : lower:float -> upper:float -> unit - method connect : adjustment_signals - method set_value : float -> unit - method lower : float - method upper : float - method value : float - method step_increment : float - method page_increment : float - method page_size : float - end -val adjustment : - ?value:float -> - ?lower:float -> - ?upper:float -> - ?step_incr:float -> - ?page_incr:float -> ?page_size:float -> unit -> adjustment - -val as_adjustment : adjustment -> Gtk.adjustment obj - -class tooltips : - Gtk.tooltips obj -> - object - inherit GObj.gtkobj - val obj : Gtk.tooltips obj - method as_tooltips : Gtk.tooltips obj - method connect : data_signals - method disable : unit -> unit - method enable : unit -> unit - method set_delay : int -> unit - method set_tip : ?text:string -> ?privat:string -> GObj.widget -> unit - end -val tooltips : ?delay:int -> unit -> tooltips diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gDraw.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gDraw.ml deleted file mode 100644 index 5782079a0..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gDraw.ml +++ /dev/null @@ -1,163 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gdk - -type color = [ - | `COLOR of Color.t - | `WHITE - | `BLACK - | `NAME of string - | `RGB of int * int * int -] - -let default_colormap = GtkBase.Widget.get_default_colormap - -let color ?(colormap = default_colormap ()) (c : color) = - match c with - | `COLOR col -> col - | #Gdk.Color.spec as def -> Color.alloc ~colormap def - -type optcolor = [ - | `COLOR of Color.t - | `WHITE - | `BLACK - | `NAME of string - | `RGB of int * int * int - | `DEFAULT -] - -let optcolor ?colormap (c : optcolor) = - match c with - | `DEFAULT -> None - | #color as c -> Some (color ?colormap c) - -class ['a] drawable ?(colormap = default_colormap ()) w = -object (self) - val colormap = colormap - val gc = GC.create w - val w : 'a Gdk.drawable = w - method color = color ~colormap - method set_foreground col = GC.set_foreground gc (self#color col) - method set_background col = GC.set_background gc (self#color col) - method gc_values = GC.get_values gc - method set_clip_region region = GC.set_clip_region gc region - method set_line_attributes ?width ?style ?cap ?join () = - let v = GC.get_values gc in - GC.set_line_attributes gc - ~width:(default v.GC.line_width ~opt:width) - ~style:(default v.GC.line_style ~opt:style) - ~cap:(default v.GC.cap_style ~opt:cap) - ~join:(default v.GC.join_style ~opt:join) - method point = Draw.point w gc - method line = Draw.line w gc - method rectangle = Draw.rectangle w gc - method arc = Draw.arc w gc - method polygon ?filled l = Draw.polygon w gc ?filled l - method string s = Draw.string w gc ~string:s - method image ~width ~height ?(xsrc=0) ?(ysrc=0) ?(xdest=0) ?(ydest=0) image = - Draw.image w gc ~image ~width ~height ~xsrc ~ysrc ~xdest ~ydest -end - -class pixmap ?colormap ?mask pm = object - inherit [[`pixmap]] drawable ?colormap pm as pixmap - val bitmap = may_map mask ~f: - begin fun x -> - let mask = new drawable x in - mask#set_foreground `WHITE; - mask - end - val mask : Gdk.bitmap option = mask - method pixmap = w - method mask = mask - method set_line_attributes ?width ?style ?cap ?join () = - pixmap#set_line_attributes ?width ?style ?cap ?join (); - may bitmap ~f:(fun m -> m#set_line_attributes ?width ?style ?cap ?join ()) - method point ~x ~y = - pixmap#point ~x ~y; - may bitmap ~f:(fun m -> m#point ~x ~y) - method line ~x ~y ~x:x' ~y:y' = - pixmap#line ~x ~y ~x:x' ~y:y'; - may bitmap ~f:(fun m -> m#line ~x ~y ~x:x' ~y:y') - method rectangle ~x ~y ~width ~height ?filled () = - pixmap#rectangle ~x ~y ~width ~height ?filled (); - may bitmap ~f:(fun m -> m#rectangle ~x ~y ~width ~height ?filled ()) - method arc ~x ~y ~width ~height ?filled ?start ?angle () = - pixmap#arc ~x ~y ~width ~height ?filled ?start ?angle (); - may bitmap - ~f:(fun m -> m#arc ~x ~y ~width ~height ?filled ?start ?angle ()); - method polygon ?filled l = - pixmap#polygon ?filled l; - may bitmap ~f:(fun m -> m#polygon ?filled l) - method string s ~font ~x ~y = - pixmap#string s ~font ~x ~y; - may bitmap ~f:(fun m -> m#string s ~font ~x ~y) -end - -class type misc_ops = object - method allocation : Gtk.rectangle - method colormap : colormap - method draw : Rectangle.t option -> unit - method hide : unit -> unit - method hide_all : unit -> unit - method intersect : Rectangle.t -> Rectangle.t option - method pointer : int * int - method realize : unit -> unit - method set_app_paintable : bool -> unit - method set_geometry : - ?x:int -> ?y:int -> ?width:int -> ?height:int -> unit -> unit - method show : unit -> unit - method unmap : unit -> unit - method unparent : unit -> unit - method unrealize : unit -> unit - method visible : bool - method visual : visual - method visual_depth : int - method window : window -end - -let pixmap ~(window : < misc : #misc_ops; .. >) - ~width ~height ?(mask=false) () = - window#misc#realize (); - let window = - try window#misc#window - with Gpointer.Null -> failwith "GDraw.pixmap : no window" - and depth = window#misc#visual_depth - and colormap = window#misc#colormap in - let mask = - if not mask then None else - let bm = Bitmap.create window ~width ~height in - let mask = new drawable bm in - mask#set_foreground `BLACK; - mask#rectangle ~x:0 ~y:0 ~width ~height ~filled:true (); - Some bm - in - new pixmap (Pixmap.create window ~width ~height ~depth) ~colormap ?mask - -let pixmap_from_xpm ~window ~file ?colormap ?transparent () = - window#misc#realize (); - let window = - try window#misc#window - with Gpointer.Null -> failwith "GDraw.pixmap_from_xpm : no window" in - let pm, mask = - try Pixmap.create_from_xpm window ~file ?colormap - ?transparent:(may_map transparent ~f:(fun c -> color c)) - with Gpointer.Null -> invalid_arg ("GDraw.pixmap_from_xpm : " ^ file) in - new pixmap pm ?colormap ~mask - -let pixmap_from_xpm_d ~window ~data ?colormap ?transparent () = - window#misc#realize (); - let window = - try window#misc#window - with Gpointer.Null -> failwith "GDraw.pixmap_from_xpm_d : no window" in - let pm, mask = - Pixmap.create_from_xpm_d window ~data ?colormap - ?transparent:(may_map transparent ~f:(fun c -> color c)) in - new pixmap pm ?colormap ~mask - -class drag_context context = object - val context = context - method status ?(time=0) act = DnD.drag_status context act ~time - method suggested_action = DnD.drag_context_suggested_action context - method targets = DnD.drag_context_targets context -end diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gDraw.mli b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gDraw.mli deleted file mode 100644 index 2b5fc8627..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gDraw.mli +++ /dev/null @@ -1,107 +0,0 @@ -(* $Id$ *) - -open Gdk - -type color = - [ `COLOR of Color.t - | `WHITE - | `BLACK - | `NAME of string - | `RGB of int * int * int] - -val color : ?colormap:colormap -> color -> Color.t - -type optcolor = - [ `COLOR of Color.t - | `WHITE - | `BLACK - | `NAME of string - | `RGB of int * int * int - | `DEFAULT ] - -val optcolor : ?colormap:colormap -> optcolor -> Color.t option - -class ['a] drawable : ?colormap:colormap -> 'a Gdk.drawable -> - object - val gc : gc - val w : 'a Gdk.drawable - method arc : - x:int -> - y:int -> - width:int -> - height:int -> - ?filled:bool -> ?start:float -> ?angle:float -> unit -> unit - method color : color -> Color.t - method gc_values : GC.values - method image : - width:int -> - height:int -> - ?xsrc:int -> ?ysrc:int -> ?xdest:int -> ?ydest:int -> image -> unit - method line : x:int -> y:int -> x:int -> y:int -> unit - method point : x:int -> y:int -> unit - method polygon : ?filled:bool -> (int * int) list -> unit - method rectangle : - x:int -> - y:int -> width:int -> height:int -> ?filled:bool -> unit -> unit - method set_background : color -> unit - method set_foreground : color -> unit - method set_clip_region : region -> unit - method set_line_attributes : - ?width:int -> - ?style:GC.gdkLineStyle -> - ?cap:GC.gdkCapStyle -> ?join:GC.gdkJoinStyle -> unit -> unit - method string : string -> font:font -> x:int -> y:int -> unit - end - -class pixmap : - ?colormap:colormap -> ?mask:bitmap -> [ `pixmap] Gdk.drawable -> - object - inherit [[`pixmap]] drawable - val bitmap : [ `bitmap] drawable option - val mask : bitmap option - method mask : bitmap option - method pixmap : Gdk.pixmap - end - -class type misc_ops = - object - method allocation : Gtk.rectangle - method colormap : colormap - method draw : Rectangle.t option -> unit - method hide : unit -> unit - method hide_all : unit -> unit - method intersect : Rectangle.t -> Rectangle.t option - method pointer : int * int - method realize : unit -> unit - method set_app_paintable : bool -> unit - method set_geometry : - ?x:int -> ?y:int -> ?width:int -> ?height:int -> unit -> unit - method show : unit -> unit - method unmap : unit -> unit - method unparent : unit -> unit - method unrealize : unit -> unit - method visible : bool - method visual : visual - method visual_depth : int - method window : window - end - -val pixmap : - window:< misc : #misc_ops; .. > -> - width:int -> height:int -> ?mask:bool -> unit -> pixmap -val pixmap_from_xpm : - window:< misc : #misc_ops; .. > -> - file:string -> - ?colormap:colormap -> ?transparent:color -> unit -> pixmap -val pixmap_from_xpm_d : - window:< misc : #misc_ops; .. > -> - data:string array -> - ?colormap:colormap -> ?transparent:color -> unit -> pixmap - -class drag_context : Gdk.drag_context -> - object - val context : Gdk.drag_context - method status : ?time:int -> Tags.drag_action list -> unit - method suggested_action : Tags.drag_action - method targets : atom list - end diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gEdit.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gEdit.ml deleted file mode 100644 index 467ee4505..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gEdit.ml +++ /dev/null @@ -1,147 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open GtkBase -open GtkEdit -open GObj - -class editable_signals obj = object - inherit widget_signals obj - method activate = GtkSignal.connect ~sgn:Editable.Signals.activate obj ~after - method changed = GtkSignal.connect ~sgn:Editable.Signals.changed obj ~after - method insert_text = - GtkSignal.connect ~sgn:Editable.Signals.insert_text obj ~after - method delete_text = - GtkSignal.connect ~sgn:Editable.Signals.delete_text obj ~after -end - -class editable obj = object - inherit widget obj - method connect = new editable_signals obj - method select_region = Editable.select_region obj - method insert_text = Editable.insert_text obj - method delete_text = Editable.delete_text obj - method get_chars = Editable.get_chars obj - method cut_clipboard () = Editable.cut_clipboard obj - method copy_clipboard () = Editable.copy_clipboard obj - method paste_clipboard () = Editable.paste_clipboard obj - method delete_selection () = Editable.delete_selection obj - method set_position = Editable.set_position obj - method position = Editable.get_position obj - method set_editable = Editable.set_editable obj - method selection = - if Editable.has_selection obj then - Some (Editable.selection_start_pos obj, Editable.selection_end_pos obj) - else None -end - -class entry obj = object - inherit editable obj - method event = new GObj.event_ops obj - method set_text = Entry.set_text obj - method append_text = Entry.append_text obj - method prepend_text = Entry.prepend_text obj - method set_visibility = Entry.set_visibility obj - method set_max_length = Entry.set_max_length obj - method text = Entry.get_text obj - method text_length = Entry.text_length obj -end - -let set_editable ?editable ?(width = -2) ?(height = -2) w = - may editable ~f:(Editable.set_editable w); - if width <> -2 || height <> -2 then Widget.set_usize w ~width ~height - -let entry ?max_length ?text ?visibility ?editable - ?width ?height ?packing ?show () = - let w = Entry.create ?max_length () in - Entry.set w ?text ?visibility; - set_editable w ?editable ?width ?height; - pack_return (new entry w) ~packing ~show - -class spin_button obj = object - inherit entry (obj : Gtk.spin_button obj) - method adjustment = new GData.adjustment (SpinButton.get_adjustment obj) - method value = SpinButton.get_value obj - method value_as_int = SpinButton.get_value_as_int obj - method spin = SpinButton.spin obj - method update = SpinButton.update obj - method set_adjustment adj = - SpinButton.set_adjustment obj (GData.as_adjustment adj) - method set_digits = SpinButton.set_digits obj - method set_value = SpinButton.set_value obj - method set_update_policy = SpinButton.set_update_policy obj - method set_numeric = SpinButton.set_numeric obj - method set_wrap = SpinButton.set_wrap obj - method set_shadow_type = SpinButton.set_shadow_type obj - method set_snap_to_ticks = SpinButton.set_snap_to_ticks obj -end - -let spin_button ?adjustment ?rate ?digits ?value ?update_policy - ?numeric ?wrap ?shadow_type ?snap_to_ticks - ?width ?height ?packing ?show () = - let w = SpinButton.create ?rate ?digits - ?adjustment:(may_map ~f:GData.as_adjustment adjustment) () in - SpinButton.set w ?value ?update_policy - ?numeric ?wrap ?shadow_type ?snap_to_ticks; - set_editable w ?width ?height; - pack_return (new spin_button w) ~packing ~show - -class combo obj = object - inherit GObj.widget (obj : Gtk.combo obj) - method entry = new entry (Combo.entry obj) - method list = new GList.liste (Combo.list obj) - method set_popdown_strings = Combo.set_popdown_strings obj - method set_use_arrows = Combo.set_use_arrows' obj - method set_case_sensitive = Combo.set_case_sensitive obj - method set_value_in_list = Combo.set_value_in_list obj - method disable_activate () = Combo.disable_activate obj - method set_item_string (item : GList.list_item) = - Combo.set_item_string obj item#as_item -end - -let combo ?popdown_strings ?use_arrows - ?case_sensitive ?value_in_list ?ok_if_empty - ?border_width ?width ?height ?packing ?show () = - let w = Combo.create () in - Combo.set w ?popdown_strings ?use_arrows - ?case_sensitive ?value_in_list ?ok_if_empty; - Container.set w ?border_width ?width ?height; - pack_return (new combo w) ~packing ~show - -class text obj = object (self) - inherit editable (obj : Gtk.text obj) as super - method get_chars ~start ~stop:e = - if start < 0 || e > Text.get_length obj || e < start then - invalid_arg "GEdit.text#get_chars"; - super#get_chars ~start ~stop:e - method event = new GObj.event_ops obj - method set_point = Text.set_point obj - method set_hadjustment adj = - Text.set_adjustment obj ~horizontal:(GData.as_adjustment adj) () - method set_vadjustment adj = - Text.set_adjustment obj ~vertical:(GData.as_adjustment adj) () - method set_word_wrap = Text.set_word_wrap obj - method set_line_wrap = Text.set_line_wrap obj - method hadjustment = new GData.adjustment (Text.get_hadjustment obj) - method vadjustment = new GData.adjustment (Text.get_vadjustment obj) - method point = Text.get_point obj - method length = Text.get_length obj - method freeze () = Text.freeze obj - method thaw () = Text.thaw obj - method insert ?font ?foreground ?background text = - let colormap = try Some self#misc#colormap with _ -> None in - Text.insert obj text ?font - ?foreground:(may_map foreground ~f:(GDraw.color ?colormap)) - ?background:(may_map background ~f:(GDraw.color ?colormap)) -end - -let text ?hadjustment ?vadjustment ?editable - ?word_wrap ?line_wrap ?width ?height ?packing ?show () = - let w = Text.create () - ?hadjustment:(may_map ~f:GData.as_adjustment hadjustment) - ?vadjustment:(may_map ~f:GData.as_adjustment vadjustment) in - may word_wrap ~f:(Text.set_word_wrap w); - may line_wrap ~f:(Text.set_line_wrap w); - set_editable w ?editable ?width ?height; - pack_return (new text w) ~packing ~show diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gEdit.mli b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gEdit.mli deleted file mode 100644 index 3b2c286ea..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gEdit.mli +++ /dev/null @@ -1,146 +0,0 @@ -(* $Id$ *) - -open Gtk -open GObj - -class editable_signals : 'a obj -> - object - inherit widget_signals - constraint 'a = [>`editable|`widget] - val obj : 'a obj - method activate : callback:(unit -> unit) -> GtkSignal.id - method changed : callback:(unit -> unit) -> GtkSignal.id - method delete_text : - callback:(start:int -> stop:int -> unit) -> GtkSignal.id - method insert_text : - callback:(string -> pos:int -> unit) -> GtkSignal.id - end - -class editable : 'a obj -> - object - inherit widget - constraint 'a = [>`editable|`widget] - val obj : 'a obj - method connect : editable_signals - method copy_clipboard : unit -> unit - method cut_clipboard : unit -> unit - method delete_selection : unit -> unit - method delete_text : start:int -> stop:int -> unit - method get_chars : start:int -> stop:int -> string - method insert_text : string -> pos:int -> int - method paste_clipboard : unit -> unit - method position : int - method select_region : start:int -> stop:int -> unit - method selection : (int * int) option - method set_editable : bool -> unit - method set_position : int -> unit - end - -class entry : 'a obj -> - object - inherit editable - constraint 'a = [>`entry|`editable|`widget] - val obj : 'a obj - method event : event_ops - method append_text : string -> unit - method prepend_text : string -> unit - method set_max_length : int -> unit - method set_text : string -> unit - method set_visibility : bool -> unit - method text : string - method text_length : int - end -val entry : - ?max_length:int -> - ?text:string -> - ?visibility:bool -> - ?editable:bool -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> entry - -class spin_button : Gtk.spin_button obj -> - object - inherit entry - val obj : Gtk.spin_button obj - method adjustment : GData.adjustment - method set_adjustment : GData.adjustment -> unit - method set_digits : int -> unit - method set_numeric : bool -> unit - method set_shadow_type : Tags.shadow_type -> unit - method set_snap_to_ticks : bool -> unit - method set_update_policy : [`ALWAYS|`IF_VALID] -> unit - method set_value : float -> unit - method set_wrap : bool -> unit - method spin : Tags.spin_type -> unit - method update : unit - method value : float - method value_as_int : int - end -val spin_button : - ?adjustment:GData.adjustment -> - ?rate:float -> - ?digits:int -> - ?value:float -> - ?update_policy:[`ALWAYS|`IF_VALID] -> - ?numeric:bool -> - ?wrap:bool -> - ?shadow_type:Tags.shadow_type -> - ?snap_to_ticks:bool -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> spin_button - -class combo : Gtk.combo obj -> - object - inherit widget - val obj : Gtk.combo obj - method disable_activate : unit -> unit - method entry : entry - method list : GList.liste - method set_case_sensitive : bool -> unit - method set_item_string : GList.list_item -> string -> unit - method set_popdown_strings : string list -> unit - method set_use_arrows : [`NEVER|`DEFAULT|`ALWAYS] -> unit - method set_value_in_list : - ?required:bool -> ?ok_if_empty:bool -> unit -> unit - end -val combo : - ?popdown_strings:string list -> - ?use_arrows:[`NEVER|`DEFAULT|`ALWAYS] -> - ?case_sensitive:bool -> - ?value_in_list:bool -> - ?ok_if_empty:bool -> - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> combo - -class text : Gtk.text obj -> - object - inherit editable - val obj : Gtk.text obj - method event : event_ops - method freeze : unit -> unit - method hadjustment : GData.adjustment - method insert : - ?font:Gdk.font -> - ?foreground:GDraw.color -> ?background:GDraw.color -> string -> unit - method length : int - method point : int - method set_hadjustment : GData.adjustment -> unit - method set_point : int -> unit - method set_vadjustment : GData.adjustment -> unit - method set_word_wrap : bool -> unit - method set_line_wrap : bool -> unit - method thaw : unit -> unit - method vadjustment : GData.adjustment - end -val text : - ?hadjustment:GData.adjustment -> - ?vadjustment:GData.adjustment -> - ?editable:bool -> - ?word_wrap:bool -> - ?line_wrap:bool -> - ?width:int -> - ?height:int -> ?packing:(widget -> unit) -> ?show:bool -> unit -> text diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gHtml.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gHtml.ml deleted file mode 100644 index 1150790c5..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gHtml.ml +++ /dev/null @@ -1,33 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open GtkBase -open GObj -open GtkXmHTML - -class xmhtml obj = object (self) - inherit widget_full (obj : GtkXmHTML.xmhtml obj) - method event = new GObj.event_ops obj - method freeze = freeze obj - method thaw = thaw obj - method source = source obj - method set_fonts = set_font_familty obj - method set_fonts_fixed = set_font_familty_fixed obj - method set_anchor_buttons = set_anchor_buttons obj - method set_anchor_cursor = set_anchor_cursor obj - method set_anchor_underline = set_anchor_underline_type obj - method set_anchor_visited_underline = set_anchor_visited_underline_type obj - method set_anchor_target_underline = set_anchor_target_underline_type obj - method set_topline = set_topline obj - method topline = get_topline obj - method set_strict_checking = set_strict_checking obj - method set_bad_html_warnings = set_bad_html_warnings obj - method set_imagemap_draw = set_imagemap_draw obj -end - -let xmhtml ?source ?border_width ?width ?height ?packing ?show () = - let w = create () in - Container.set w ?border_width ?width ?height; - may source ~f:(GtkXmHTML.source w); - pack_return (new xmhtml w) ~packing ~show diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gList.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gList.ml deleted file mode 100644 index 3b1abe43b..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gList.ml +++ /dev/null @@ -1,162 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open GtkBase -open GtkList -open GObj -open GContainer - -class list_item obj = object - inherit container (obj : Gtk.list_item obj) - method event = new GObj.event_ops obj - method as_item = obj - method select () = Item.select obj - method deselect () = Item.deselect obj - method toggle () = Item.toggle obj - method connect = new item_signals obj -end - -let list_item ?label ?border_width ?width ?height ?packing ?(show=true) () = - let w = ListItem.create ?label () in - Container.set w ?border_width ?width ?height; - let item = new list_item w in - may packing ~f:(fun f -> (f item : unit)); - if show then item#misc#show (); - item - -class liste obj = object - inherit [list_item] item_container (obj : Gtk.liste obj) - method private wrap w = new list_item (ListItem.cast w) - method insert w = Liste.insert_item obj w#as_item - method clear_items = Liste.clear_items obj - method select_item = Liste.select_item obj - method unselect_item = Liste.unselect_item obj - method child_position (w : list_item) = Liste.child_position obj w#as_item -end - -let liste ?selection_mode ?border_width ?width ?height - ?packing ?show () = - let w = Liste.create () in - may selection_mode ~f:(Liste.set_selection_mode w); - Container.set w ?border_width ?width ?height; - pack_return (new liste w) ~packing ~show - -(* Cell lists *) - -class clist_signals obj = object - inherit container_signals obj - method click_column = - GtkSignal.connect ~sgn:CList.Signals.click_column obj ~after - method select_row = - GtkSignal.connect ~sgn:CList.Signals.select_row obj ~after - method unselect_row = - GtkSignal.connect ~sgn:CList.Signals.unselect_row obj ~after - method scroll_vertical = - GtkSignal.connect ~sgn:CList.Signals.scroll_vertical obj ~after - method scroll_horizontal = - GtkSignal.connect ~sgn:CList.Signals.scroll_horizontal obj ~after -end - -class ['a] clist obj = object (self) - inherit widget (obj : Gtk.clist obj) - method set_border_width = Container.set_border_width obj - method event = new GObj.event_ops obj - method connect = new clist_signals obj - method rows = CList.get_rows obj - method columns = CList.get_columns obj - method focus_row = CList.get_focus_row obj - method hadjustment = new GData.adjustment (CList.get_hadjustment obj) - method vadjustment = new GData.adjustment (CList.get_vadjustment obj) - method set_button_actions = CList.set_button_actions obj - method freeze () = CList.freeze obj - method thaw () = CList.thaw obj - method column_title = CList.get_column_title obj - method column_widget col = - new widget (CList.get_column_widget obj col) - method columns_autosize () = CList.columns_autosize obj - method optimal_column_width = CList.optimal_column_width obj - method moveto ?(row_align=0.) ?(col_align=0.) row col = - CList.moveto obj row col ~row_align ~col_align - method row_is_visible = CList.row_is_visible obj - method cell_type = CList.get_cell_type obj - method cell_text = CList.get_text obj - method cell_pixmap row col = - let pm, mask = CList.get_pixmap obj row col in - may_map pm ~f:(fun x -> new GDraw.pixmap ?mask x) - method cell_style row col = - try Some (new style (CList.get_cell_style obj row col)) - with Gpointer.Null -> None - method row_selectable row = CList.get_selectable obj ~row - method row_style row = - try Some (new style (CList.get_row_style obj ~row)) - with Gpointer.Null -> None - method set_shift = CList.set_shift obj - method insert ~row texts = - let texts = List.map texts ~f:(fun x -> Some x) in - CList.insert obj ~row texts - method append = self#insert ~row:self#rows - method prepend = self#insert ~row:0 - method remove = CList.remove obj - method select = CList.select obj - method unselect = CList.unselect obj - method clear () = CList.clear obj - method get_row_column = CList.get_row_column obj - method select_all () = CList.select_all obj - method unselect_all () = CList.unselect_all obj - method swap_rows = CList.swap_rows obj - method row_move = CList.row_move obj - method sort () = CList.sort obj - method set_hadjustment adj = - CList.set_hadjustment obj (GData.as_adjustment adj) - method set_vadjustment adj = - CList.set_vadjustment obj (GData.as_adjustment adj) - method set_shadow_type = CList.set_shadow_type obj - method set_button_actions = CList.set_button_actions obj - method set_selection_mode = CList.set_selection_mode obj - method set_reorderable = CList.set_reorderable obj - method set_use_drag_icons = CList.set_use_drag_icons obj - method set_row_height = CList.set_row_height obj - method set_titles_show = CList.set_titles_show obj - method set_titles_active = CList.set_titles_active obj - method set_sort = CList.set_sort obj - method set_column ?widget = - CList.set_column obj ?widget:(may_map widget ~f:as_widget) - method set_row ?foreground ?background ?selectable ?style = - let color = may_map ~f:(fun c -> Gpointer.optboxed (GDraw.optcolor c)) - and style = may_map ~f:(fun (st : style) -> st#as_style) style in - CList.set_row obj - ?foreground:(color foreground) ?background:(color background) - ?selectable ?style - method set_cell ?text ?pixmap ?spacing ?style = - let pixmap, mask = - match pixmap with None -> None, None - | Some (pm : GDraw.pixmap) -> Some pm#pixmap, pm#mask - and style = may_map ~f:(fun (st : style) -> st#as_style) style in - CList.set_cell obj ?text ?pixmap ?mask ?spacing ?style - method set_row_data n ~data = - CList.set_row_data obj ~row:n (Obj.repr (data : 'a)) - method get_row_data n : 'a = Obj.obj (CList.get_row_data obj ~row:n) - method scroll_vertical = - CList.Signals.emit_scroll obj ~sgn:CList.Signals.scroll_vertical - method scroll_horizontal = - CList.Signals.emit_scroll obj ~sgn:CList.Signals.scroll_horizontal -end - -let clist ?(columns=1) ?titles ?hadjustment ?vadjustment - ?shadow_type ?button_actions ?selection_mode - ?reorderable ?use_drag_icons ?row_height - ?titles_show ?titles_active ?auto_sort ?sort_column ?sort_type - ?border_width ?width ?height ?packing ?show () = - let w = - match titles with None -> CList.create ~cols:columns - | Some titles -> CList.create_with_titles (Array.of_list titles) - in - CList.set w - ?hadjustment:(may_map ~f:GData.as_adjustment hadjustment) - ?vadjustment:(may_map ~f:GData.as_adjustment vadjustment) - ?shadow_type ?button_actions ?selection_mode ?reorderable - ?use_drag_icons ?row_height ?titles_show ?titles_active; - CList.set_sort w ?auto:auto_sort ?column:sort_column ?dir:sort_type (); - Container.set w ?border_width ?width ?height; - pack_return (new clist w) ~packing ~show diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gList.mli b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gList.mli deleted file mode 100644 index 17f4cef96..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gList.mli +++ /dev/null @@ -1,158 +0,0 @@ -(* $Id$ *) - -open Gtk -open GObj -open GContainer - -class list_item : Gtk.list_item obj -> - object - inherit container - val obj : Gtk.list_item obj - method event : event_ops - method as_item : Gtk.list_item obj - method connect : item_signals - method deselect : unit -> unit - method select : unit -> unit - method toggle : unit -> unit - end -val list_item : - ?label:string -> - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(list_item -> unit) -> ?show:bool -> unit -> list_item - -class liste : Gtk.liste obj -> - object - inherit [list_item] item_container - val obj : Gtk.liste obj - method child_position : list_item -> int - method clear_items : start:int -> stop:int -> unit - method insert : list_item -> pos:int -> unit - method select_item : pos:int -> unit - method unselect_item : pos:int -> unit - method private wrap : Gtk.widget obj -> list_item - end -val liste : - ?selection_mode:Tags.selection_mode -> - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> liste - -class clist_signals : 'a obj -> - object - inherit container_signals - constraint 'a = [>`clist|`container|`widget] - val obj : 'a obj - method click_column : callback:(int -> unit) -> GtkSignal.id - method select_row : - callback:(row:int -> - column:int -> event:GdkEvent.Button.t option -> unit) -> - GtkSignal.id - method unselect_row : - callback:(row:int -> - column:int -> event:GdkEvent.Button.t option -> unit) -> - GtkSignal.id - method scroll_horizontal : - callback:(Tags.scroll_type -> pos:clampf -> unit) -> GtkSignal.id - method scroll_vertical : - callback:(Tags.scroll_type -> pos:clampf -> unit) -> GtkSignal.id - end - -class ['a] clist : Gtk.clist obj -> - object - inherit widget - val obj : Gtk.clist obj - method event : event_ops - method append : string list -> int - method cell_pixmap : int -> int -> GDraw.pixmap option - method cell_style : int -> int -> style option - method cell_text : int -> int -> string - method cell_type : int -> int -> Tags.cell_type - method clear : unit -> unit - method column_title : int -> string - method column_widget : int -> widget - method columns : int - method columns_autosize : unit -> unit - method connect : clist_signals - method focus_row : int - method freeze : unit -> unit - method get_row_column : x:int -> y:int -> int * int - method get_row_data : int -> 'a - method hadjustment : GData.adjustment - method insert : row:int -> string list -> int - method moveto : - ?row_align:clampf -> ?col_align:clampf -> int -> int -> unit - method optimal_column_width : int -> int - method prepend : string list -> int - method remove : row:int -> unit - method row_is_visible : int -> Tags.visibility - method row_move : int -> dst:int -> unit - method row_selectable : int -> bool - method row_style : int -> style option - method rows : int - method scroll_vertical : Tags.scroll_type -> pos:clampf -> unit - method scroll_horizontal : Tags.scroll_type -> pos:clampf -> unit - method select : int -> int -> unit - method select_all : unit -> unit - method set_border_width : int -> unit - method set_button_actions : int -> Tags.button_action list -> unit - method set_cell : - ?text:string -> - ?pixmap:GDraw.pixmap -> - ?spacing:int -> ?style:style -> int -> int -> unit - method set_column : - ?widget:widget -> - ?title:string -> - ?title_active:bool -> - ?justification:Tags.justification -> - ?visibility:bool -> - ?resizeable:bool -> - ?auto_resize:bool -> - ?width:int -> ?min_width:int -> ?max_width:int -> int -> unit - method set_hadjustment : GData.adjustment -> unit - method set_reorderable : bool -> unit - method set_row : - ?foreground:GDraw.optcolor -> - ?background:GDraw.optcolor -> - ?selectable:bool -> - ?style:style -> int -> unit - method set_row_data : int -> data:'a -> unit - method set_row_height : int -> unit - method set_selection_mode : Tags.selection_mode -> unit - method set_shadow_type : Tags.shadow_type -> unit - method set_shift : int -> int -> vertical:int -> horizontal:int -> unit - method set_sort : - ?auto:bool -> ?column:int -> ?dir:Tags.sort_type -> unit -> unit - method set_titles_active : bool -> unit - method set_titles_show : bool -> unit - method set_use_drag_icons : bool -> unit - method set_vadjustment : GData.adjustment -> unit - method sort : unit -> unit - method swap_rows : int -> int -> unit - method thaw : unit -> unit - method unselect : int -> int -> unit - method unselect_all : unit -> unit - method vadjustment : GData.adjustment - end -val clist : - ?columns:int -> - ?titles:string list -> - ?hadjustment:GData.adjustment -> - ?vadjustment:GData.adjustment -> - ?shadow_type:Tags.shadow_type -> - ?button_actions:(int * Tags.button_action list) list -> - ?selection_mode:Tags.selection_mode -> - ?reorderable:bool -> - ?use_drag_icons:bool -> - ?row_height:int -> - ?titles_show:bool -> - ?titles_active:bool -> - ?auto_sort:bool -> - ?sort_column:int -> - ?sort_type:Tags.sort_type -> - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> 'a clist diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gMain.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gMain.ml deleted file mode 100644 index 811f490d4..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gMain.ml +++ /dev/null @@ -1,26 +0,0 @@ -(* $Id$ *) - -open Gtk -open GtkMain -open GObj - -module Main : sig - val init : unit -> string (* returns the locale name *) - val main : unit -> unit - val quit : unit -> unit - val version : int * int * int - val flush : unit -> unit -end = Main - -module Grab = struct - open Grab - let add (w : #widget) = add w#as_widget - let remove (w : #widget) = remove w#as_widget - let get_current () = new widget (get_current ()) -end - -module Timeout : sig - type id - val add : ms:int -> callback:(unit -> bool) -> id - val remove : id -> unit -end = Timeout diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gMenu.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gMenu.ml deleted file mode 100644 index 52f05a462..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gMenu.ml +++ /dev/null @@ -1,199 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open GtkData -open GtkBase -open GtkMenu -open GObj -open GContainer - -(* Menu type *) - -class menu_shell_signals obj = object - inherit container_signals obj - method deactivate = - GtkSignal.connect ~sgn:MenuShell.Signals.deactivate obj ~after -end - -class type virtual ['a] pre_menu = object - inherit ['a] item_container - method as_menu : Gtk.menu Gtk.obj - method deactivate : unit -> unit - method connect : menu_shell_signals - method event : event_ops - method popup : button:int -> time:int -> unit - method popdown : unit -> unit - method set_accel_group : accel_group -> unit -end - -(* Menu items *) - -class menu_item_signals obj = object - inherit item_signals obj - method activate = GtkSignal.connect ~sgn:MenuItem.Signals.activate obj -end - - -class ['a] pre_menu_item_skel obj = object - inherit container obj - method as_item = MenuItem.coerce obj - method set_submenu (w : 'a pre_menu) = MenuItem.set_submenu obj w#as_menu - method remove_submenu () = MenuItem.remove_submenu obj - method configure = MenuItem.configure obj - method activate () = MenuItem.activate obj - method right_justify () = MenuItem.right_justify obj - method add_accelerator ~group ?modi:m ?flags key= - Widget.add_accelerator obj ~sgn:MenuItem.Signals.activate group ?flags - ?modi:m ~key -end - -class menu_item obj = object - inherit [menu_item] pre_menu_item_skel obj - method connect = new menu_item_signals obj - method event = new GObj.event_ops obj -end - -class menu_item_skel = [menu_item] pre_menu_item_skel - -let pack_item self ~packing ~show = - may packing ~f:(fun f -> (f (self :> menu_item) : unit)); - if show <> Some false then self#misc#show (); - self - -let menu_item ?label ?border_width ?width ?height ?packing ?show () = - let w = MenuItem.create ?label () in - Container.set w ?border_width ?width ?height; - pack_item (new menu_item w) ?packing ?show - -let tearoff_item ?border_width ?width ?height ?packing ?show () = - let w = MenuItem.tearoff_create () in - Container.set w ?border_width ?width ?height; - pack_item (new menu_item w) ?packing ?show - -class check_menu_item_signals obj = object - inherit menu_item_signals obj - method toggled = - GtkSignal.connect ~sgn:CheckMenuItem.Signals.toggled obj ~after -end - -class check_menu_item obj = object - inherit menu_item_skel obj - method set_active = CheckMenuItem.set_active obj - method set_show_toggle = CheckMenuItem.set_show_toggle obj - method active = CheckMenuItem.get_active obj - method toggled () = CheckMenuItem.toggled obj - method connect = new check_menu_item_signals obj - method event = new GObj.event_ops obj -end - -let check_menu_item ?label ?active ?show_toggle - ?border_width ?width ?height ?packing ?show () = - let w = CheckMenuItem.create ?label () in - CheckMenuItem.set w ?active ?show_toggle; - Container.set w ?border_width ?width ?height; - pack_item (new check_menu_item w) ?packing ?show - -class radio_menu_item obj = object - inherit check_menu_item (obj : Gtk.radio_menu_item obj) - method group = Some obj - method set_group = RadioMenuItem.set_group obj -end - -let radio_menu_item ?group ?label ?active ?show_toggle - ?border_width ?width ?height ?packing ?show () = - let w = RadioMenuItem.create ?group ?label () in - CheckMenuItem.set w ?active ?show_toggle; - Container.set w ?border_width ?width ?height; - pack_item (new radio_menu_item w) ?packing ?show - -(* Menus *) - -class menu_shell obj = object - inherit [menu_item] item_container obj - method private wrap w = new menu_item (MenuItem.cast w) - method insert w = MenuShell.insert obj w#as_item - method deactivate () = MenuShell.deactivate obj - method connect = new menu_shell_signals obj - method event = new GObj.event_ops obj -end - -class menu obj = object - inherit menu_shell obj - method popup = Menu.popup obj - method popdown () = Menu.popdown obj - method as_menu : Gtk.menu obj = obj - method set_accel_group = Menu.set_accel_group obj -end - -let menu ?border_width ?packing ?show () = - let w = Menu.create () in - may border_width ~f:(Container.set_border_width w); - let self = new menu w in - may packing ~f:(fun f -> (f (self :> menu) : unit)); - if show <> Some false then self#misc#show (); - self - -(* Option Menu (GtkButton?) *) - -class option_menu obj = object - inherit GButton.button_skel obj - method connect = new GButton.button_signals obj - method event = new GObj.event_ops obj - method set_menu (menu : menu) = OptionMenu.set_menu obj menu#as_menu - method get_menu = new menu (OptionMenu.get_menu obj) - method remove_menu () = OptionMenu.remove_menu obj - method set_history = OptionMenu.set_history obj -end - -let option_menu ?border_width ?width ?height ?packing ?show () = - let w = OptionMenu.create () in - Container.set w ?border_width ?width ?height; - pack_return (new option_menu w) ~packing ~show - -(* Menu Bar *) - -let menu_bar ?border_width ?width ?height ?packing ?show () = - let w = MenuBar.create () in - Container.set w ?border_width ?width ?height; - pack_return (new menu_shell w) ~packing ~show - -(* Menu Factory *) - -class ['a] factory - ?(accel_group=AccelGroup.create ()) - ?(accel_modi=[`CONTROL]) - ?(accel_flags=[`VISIBLE]) (menu_shell : 'a) = - object (self) - val menu_shell : #menu_shell = menu_shell - val group = accel_group - val m = accel_modi - val flags = accel_flags - method menu = menu_shell - method accel_group = group - method private bind ?key ?callback (item : menu_item) = - menu_shell#append item; - may key ~f:(item#add_accelerator ~group ~modi:m ~flags); - may callback ~f:(fun callback -> item#connect#activate ~callback) - method add_item ?key ?callback ?submenu label = - let item = menu_item ~label () in - self#bind item ?key ?callback; - may (submenu : menu option) ~f:item#set_submenu; - item - method add_check_item ?active ?key ?callback label = - let item = check_menu_item ~label ?active () in - self#bind (item :> menu_item) ?key - ?callback:(may_map callback ~f:(fun f () -> f item#active)); - item - method add_radio_item ?group ?active ?key ?callback label = - let item = radio_menu_item ~label ?group ?active () in - self#bind (item :> menu_item) ?key - ?callback:(may_map callback ~f:(fun f () -> f item#active)); - item - method add_separator () = menu_item ~packing:menu_shell#append () - method add_submenu ?key label = - let item = menu_item ~label () in - self#bind item ?key; - menu ~packing:item#set_submenu (); - method add_tearoff () = tearoff_item ~packing:menu_shell#append () -end diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gMenu.mli b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gMenu.mli deleted file mode 100644 index 505249bea..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gMenu.mli +++ /dev/null @@ -1,196 +0,0 @@ -(* $Id$ *) - -open Gtk -open GObj -open GContainer - -class menu_shell_signals : 'b obj -> - object ('a) - inherit container_signals - constraint 'b = [>`menushell|`container|`widget] - val obj : 'b obj - method deactivate : callback:(unit -> unit) -> GtkSignal.id - end - -class menu_item_signals : 'b obj -> - object ('a) - inherit item_signals - constraint 'b = [>`menuitem|`container|`item|`widget] - val obj : 'b obj - method activate : callback:(unit -> unit) -> GtkSignal.id - end - -class menu_item_skel : - 'a obj -> - object - inherit container - constraint 'a = [>`widget|`container|`menuitem] - val obj : 'a obj - method activate : unit -> unit - method add_accelerator : - group:accel_group -> - ?modi:Gdk.Tags.modifier list -> - ?flags:Tags.accel_flag list -> Gdk.keysym -> unit - method as_item : Gtk.menu_item obj - method configure : show_toggle:bool -> show_indicator:bool -> unit - method remove_submenu : unit -> unit - method right_justify : unit -> unit - method set_submenu : menu -> unit - end -and menu_item : 'a obj -> - object - inherit menu_item_skel - constraint 'a = [>`widget|`container|`item|`menuitem] - val obj : 'a obj - method event : event_ops - method connect : menu_item_signals - end -and menu : Gtk.menu obj -> - object - inherit [menu_item] item_container - val obj : Gtk.menu obj - method add : menu_item -> unit - method event : event_ops - method append : menu_item -> unit - method as_menu : Gtk.menu obj - method children : menu_item list - method connect : menu_shell_signals - method deactivate : unit -> unit - method insert : menu_item -> pos:int -> unit - method popdown : unit -> unit - method popup : button:int -> time:int -> unit - method prepend : menu_item -> unit - method remove : menu_item -> unit - method set_accel_group : accel_group -> unit - method set_border_width : int -> unit - method private wrap : Gtk.widget obj -> menu_item - end - -val menu : - ?border_width:int -> ?packing:(menu -> unit) -> ?show:bool -> unit -> menu -val menu_item : - ?label:string -> - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(menu_item -> unit) -> ?show:bool -> unit -> menu_item -val tearoff_item : - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(menu_item -> unit) -> ?show:bool -> unit -> menu_item - -class check_menu_item_signals : 'a obj -> - object - inherit menu_item_signals - constraint 'a = [>`checkmenuitem|`container|`item|`menuitem|`widget] - val obj : 'a obj - method toggled : callback:(unit -> unit) -> GtkSignal.id - end - -class check_menu_item : 'a obj -> - object - inherit menu_item_skel - constraint 'a = [>`widget|`checkmenuitem|`container|`item|`menuitem] - val obj : 'a obj - method active : bool - method event : event_ops - method connect : check_menu_item_signals - method set_active : bool -> unit - method set_show_toggle : bool -> unit - method toggled : unit -> unit - end -val check_menu_item : - ?label:string -> - ?active:bool -> - ?show_toggle:bool -> - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(menu_item -> unit) -> ?show:bool -> unit -> check_menu_item - -class radio_menu_item : Gtk.radio_menu_item obj -> - object - inherit check_menu_item - val obj : Gtk.radio_menu_item obj - method group : Gtk.radio_menu_item group - method set_group : Gtk.radio_menu_item group -> unit - end -val radio_menu_item : - ?group:Gtk.radio_menu_item group -> - ?label:string -> - ?active:bool -> - ?show_toggle:bool -> - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(menu_item -> unit) -> ?show:bool -> unit -> radio_menu_item - -class menu_shell : 'a obj -> - object - inherit [menu_item] item_container - constraint 'a = [>`widget|`container|`menushell] - val obj : 'a obj - method event : event_ops - method deactivate : unit -> unit - method connect : menu_shell_signals - method insert : menu_item -> pos:int -> unit - method private wrap : Gtk.widget obj -> menu_item - end - -val menu_bar : - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(GObj.widget -> unit) -> ?show:bool -> unit -> menu_shell - -class option_menu : 'a obj -> - object - inherit GButton.button_skel - constraint 'a = [>`optionmenu|`button|`container|`widget] - val obj : 'a obj - method event : event_ops - method connect : GButton.button_signals - method get_menu : menu - method remove_menu : unit -> unit - method set_history : int -> unit - method set_menu : menu -> unit - end -val option_menu : - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(GObj.widget -> unit) -> ?show:bool -> unit -> option_menu - -class ['a] factory : - ?accel_group:accel_group -> - ?accel_modi:Gdk.Tags.modifier list -> - ?accel_flags:Tags.accel_flag list -> - 'a -> - object - constraint 'a = #menu_shell - val flags : Tags.accel_flag list - val group : accel_group - val m : Gdk.Tags.modifier list - val menu_shell : 'a - method accel_group : accel_group - method add_check_item : - ?active:bool -> - ?key:Gdk.keysym -> - ?callback:(bool -> unit) -> string -> check_menu_item - method add_item : - ?key:Gdk.keysym -> - ?callback:(unit -> unit) -> - ?submenu:menu -> string -> menu_item - method add_radio_item : - ?group:Gtk.radio_menu_item group -> - ?active:bool -> - ?key:Gdk.keysym -> - ?callback:(bool -> unit) -> string -> radio_menu_item - method add_separator : unit -> menu_item - method add_submenu : ?key:Gdk.keysym -> string -> menu - method add_tearoff : unit -> menu_item - method private bind : - ?key:Gdk.keysym -> ?callback:(unit -> unit) -> menu_item -> unit - method menu : 'a - end diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gMisc.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gMisc.ml deleted file mode 100644 index 13fd7b4dd..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gMisc.ml +++ /dev/null @@ -1,217 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open GtkBase -open GtkMisc -open GObj - -let separator dir ?(width = -2) ?(height = -2) ?packing ?show () = - let w = Separator.create dir in - if width <> -2 || height <> -2 then Widget.set_usize w ~width ~height; - pack_return (new widget_full w) ~packing ~show - -class statusbar_context obj ctx = object (self) - val obj : statusbar obj = obj - val context : Gtk.statusbar_context = ctx - method context = context - method push text = Statusbar.push obj context ~text - method pop () = Statusbar.pop obj context - method remove = Statusbar.remove obj context - method flash ?(delay=1000) text = - let msg = self#push text in - GtkMain.Timeout.add ~ms:delay ~callback:(fun () -> self#remove msg; false); - () -end - -class statusbar obj = object - inherit GContainer.container_full (obj : Gtk.statusbar obj) - method new_context ~name = - new statusbar_context obj (Statusbar.get_context obj name) -end - -let statusbar ?border_width ?width ?height ?packing ?show () = - let w = Statusbar.create () in - Container.set w ?border_width ?width ?height; - pack_return (new statusbar w) ~packing ~show - -class calendar_signals obj = object - inherit widget_signals obj - method month_changed = - GtkSignal.connect obj ~sgn:Calendar.Signals.month_changed ~after - method day_selected = - GtkSignal.connect obj ~sgn:Calendar.Signals.day_selected ~after - method day_selected_double_click = - GtkSignal.connect obj - ~sgn:Calendar.Signals.day_selected_double_click ~after - method prev_month = - GtkSignal.connect obj ~sgn:Calendar.Signals.prev_month ~after - method next_month = - GtkSignal.connect obj ~sgn:Calendar.Signals.next_month ~after - method prev_year = - GtkSignal.connect obj ~sgn:Calendar.Signals.prev_year ~after - method next_year = - GtkSignal.connect obj ~sgn:Calendar.Signals.next_year ~after -end - -class calendar obj = object - inherit widget (obj : Gtk.calendar obj) - method event = new GObj.event_ops obj - method connect = new calendar_signals obj - method select_month = Calendar.select_month obj - method select_day = Calendar.select_day obj - method mark_day = Calendar.mark_day obj - method unmark_day = Calendar.unmark_day obj - method clear_marks = Calendar.clear_marks obj - method display_options = Calendar.display_options obj - method date = Calendar.get_date obj - method freeze () = Calendar.freeze obj - method thaw () = Calendar.thaw obj -end - -let calendar ?options ?(width = -2) ?(height = -2) ?packing ?show () = - let w = Calendar.create () in - if width <> -2 || height <> -2 then Widget.set_usize w ~width ~height; - may options ~f:(Calendar.display_options w); - pack_return (new calendar w) ~packing ~show - -class drawing_area obj = object - inherit widget_full (obj : Gtk.drawing_area obj) - method event = new GObj.event_ops obj - method set_size = DrawingArea.size obj -end - -let drawing_area ?(width=0) ?(height=0) ?packing ?show () = - let w = DrawingArea.create () in - if width <> 0 || height <> 0 then DrawingArea.size w ~width ~height; - pack_return (new drawing_area w) ~packing ~show - -class misc obj = object - inherit widget obj - method set_alignment = Misc.set_alignment obj - method set_padding = Misc.set_padding obj -end - -class arrow obj = object - inherit misc obj - method set_arrow kind ~shadow = Arrow.set obj ~kind ~shadow -end - -let arrow ~kind ~shadow - ?xalign ?yalign ?xpad ?ypad ?width ?height ?packing ?show () = - let w = Arrow.create ~kind ~shadow in - Misc.set w ?xalign ?yalign ?xpad ?ypad ?width ?height; - pack_return (new arrow w) ~packing ~show - -class image obj = object - inherit misc obj - method set_image ?mask image = Image.set obj image ?mask -end - -let image image ?mask - ?xalign ?yalign ?xpad ?ypad ?width ?height ?packing ?show () = - let w = Image.create image ?mask in - Misc.set w ?xalign ?yalign ?xpad ?ypad ?width ?height; - pack_return (new image w) ~packing ~show - -class label_skel obj = object - inherit misc obj - method set_text = Label.set_text obj - method set_justify = Label.set_justify obj - method set_pattern = Label.set_pattern obj - method set_line_wrap = Label.set_line_wrap obj - method text = Label.get_text obj -end - -class label obj = object - inherit label_skel (Label.coerce obj) - method connect = new widget_signals obj -end - -let label ?(text="") ?justify ?line_wrap ?pattern - ?xalign ?yalign ?xpad ?ypad ?width ?height ?packing ?show () = - let w = Label.create text in - Label.set w ?justify ?line_wrap ?pattern; - Misc.set w ?xalign ?yalign ?xpad ?ypad ?width ?height; - pack_return (new label w) ~packing ~show - -let label_cast w = new label (Label.cast w#as_widget) - -class tips_query_signals obj = object - inherit widget_signals obj - method widget_entered ~callback = - GtkSignal.connect ~sgn:TipsQuery.Signals.widget_entered obj ~after - ~callback:(function None -> callback None - | Some w -> callback (Some (new widget w))) - method widget_selected ~callback = - GtkSignal.connect ~sgn:TipsQuery.Signals.widget_selected obj ~after - ~callback:(function None -> callback None - | Some w -> callback (Some (new widget w))) -end - -class tips_query obj = object - inherit label_skel (obj : Gtk.tips_query obj) - method start () = TipsQuery.start obj - method stop () = TipsQuery.stop obj - method set_caller (w : widget) = TipsQuery.set_caller obj w#as_widget - method set_emit_always = TipsQuery.set_emit_always obj - method set_label_inactive inactive = TipsQuery.set_labels obj ~inactive - method set_label_no_tip no_tip = TipsQuery.set_labels obj ~no_tip - method connect = new tips_query_signals obj -end - -let tips_query ?caller ?emit_always ?label_inactive ?label_no_tip - ?xalign ?yalign ?xpad ?ypad ?width ?height ?packing ?show () = - let w = TipsQuery.create () in - let caller = may_map caller ~f:(fun (w : #widget) -> w#as_widget) in - TipsQuery.set w ?caller ?emit_always ?label_inactive ?label_no_tip; - Misc.set w ?xalign ?yalign ?xpad ?ypad ?width ?height; - pack_return (new tips_query w) ~packing ~show - -class color_selection obj = object - inherit GObj.widget_full (obj : Gtk.color_selection obj) - method set_update_policy = ColorSelection.set_update_policy obj - method set_opacity = ColorSelection.set_opacity obj - method set_color ~red ~green ~blue ?opacity () = - ColorSelection.set_color obj ~red ~green ~blue ?opacity - method get_color = ColorSelection.get_color obj -end - -let color_selection ?border_width ?width ?height ?packing ?show () = - let w = ColorSelection.create () in - Container.set w ?border_width ?width ?height; - pack_return (new color_selection w) ~packing ~show - -class pixmap obj = object - inherit misc (obj : Gtk.pixmap obj) - method connect = new widget_signals obj - method set_pixmap (pm : GDraw.pixmap) = - Pixmap.set obj ~pixmap:pm#pixmap ?mask:pm#mask - method pixmap = - new GDraw.pixmap (Pixmap.pixmap obj) - ?mask:(try Some(Pixmap.mask obj) with Gpointer.Null -> None) -end - -let pixmap (pm : #GDraw.pixmap) ?xalign ?yalign ?xpad ?ypad - ?(width = -2) ?(height = -2) ?packing ?show () = - let w = Pixmap.create pm#pixmap ?mask:pm#mask in - Misc.set w ?xalign ?yalign ?xpad ?ypad; - if width <> -2 || height <> -2 then Widget.set_usize w ~width ~height; - pack_return (new pixmap w) ~packing ~show - -class font_selection obj = object - inherit widget_full (obj : Gtk.font_selection obj) - method notebook = new GPack.notebook obj - method event = new event_ops obj - method font = FontSelection.get_font obj - method font_name = FontSelection.get_font_name obj - method set_font_name = FontSelection.set_font_name obj - method preview_text = FontSelection.get_preview_text obj - method set_preview_text = FontSelection.set_preview_text obj - method set_filter = FontSelection.set_filter obj -end - -let font_selection ?border_width ?width ?height ?packing ?show () = - let w = FontSelection.create () in - Container.set w ?border_width ?width ?height; - pack_return (new font_selection w) ~packing ~show diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gMisc.mli b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gMisc.mli deleted file mode 100644 index 7008369b7..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gMisc.mli +++ /dev/null @@ -1,263 +0,0 @@ -(* $Id$ *) - -open Gtk -open GObj -open GContainer - -val separator : - Tags.orientation -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> widget_full - -class statusbar_context : - Gtk.statusbar obj -> Gtk.statusbar_context -> - object - val context : Gtk.statusbar_context - val obj : Gtk.statusbar obj - method context : Gtk.statusbar_context - method flash : ?delay:int -> string -> unit - method pop : unit -> unit - method push : string -> statusbar_message - method remove : statusbar_message -> unit - end - -class statusbar : Gtk.statusbar obj -> - object - inherit container_full - val obj : Gtk.statusbar obj - method new_context : name:string -> statusbar_context - end -val statusbar : - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> statusbar - -class calendar_signals : 'a obj -> - object - inherit widget_signals - constraint 'a = [>`calendar|`widget] - val obj : 'a obj - method day_selected : callback:(unit -> unit) -> GtkSignal.id - method day_selected_double_click : - callback:(unit -> unit) -> GtkSignal.id - method month_changed : callback:(unit -> unit) -> GtkSignal.id - method next_month : callback:(unit -> unit) -> GtkSignal.id - method next_year : callback:(unit -> unit) -> GtkSignal.id - method prev_month : callback:(unit -> unit) -> GtkSignal.id - method prev_year : callback:(unit -> unit) -> GtkSignal.id - end - -class calendar : Gtk.calendar obj -> - object - inherit widget - val obj : Gtk.calendar obj - method event : event_ops - method clear_marks : unit - method connect : calendar_signals - method date : int * int * int - method display_options : Tags.calendar_display_options list -> unit - method freeze : unit -> unit - method mark_day : int -> unit - method select_day : int -> unit - method select_month : month:int -> year:int -> unit - method thaw : unit -> unit - method unmark_day : int -> unit - end -val calendar : - ?options:Tags.calendar_display_options list -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> calendar - -class drawing_area : Gtk.drawing_area obj -> - object - inherit widget_full - val obj : Gtk.drawing_area obj - method event : event_ops - method set_size : width:int -> height:int -> unit - end -val drawing_area : - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> drawing_area - -class misc : 'a obj -> - object - inherit widget - constraint 'a = [>`misc|`widget] - val obj : 'a obj - method set_alignment : ?x:float -> ?y:float -> unit -> unit - method set_padding : ?x:int -> ?y:int -> unit -> unit - end - -class arrow : 'a obj -> - object - inherit misc - constraint 'a = [>`arrow|`misc|`widget] - val obj : 'a obj - method set_arrow : Tags.arrow_type -> shadow:Tags.shadow_type -> unit - end - -val arrow : - kind:Tags.arrow_type -> - shadow:Tags.shadow_type -> - ?xalign:float -> - ?yalign:float -> - ?xpad:int -> - ?ypad:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> arrow - -class image : 'a obj -> - object - inherit misc - constraint 'a = [>`image|`misc|`widget] - val obj : 'a obj - method set_image : ?mask:Gdk.bitmap -> Gdk.image -> unit - end - -val image : - Gdk.image -> - ?mask:Gdk.bitmap -> - ?xalign:float -> - ?yalign:float -> - ?xpad:int -> - ?ypad:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> image - -class label_skel : 'a obj -> - object - inherit misc - constraint 'a = [>`label|`misc|`widget] - val obj : 'a obj - method set_justify : Tags.justification -> unit - method set_line_wrap : bool -> unit - method set_pattern : string -> unit - method set_text : string -> unit - method text : string - end - -class label : [>`label] obj -> - object - inherit label_skel - val obj : Gtk.label obj - method connect : widget_signals - end -val label : - ?text:string -> - ?justify:Tags.justification -> - ?line_wrap:bool -> - ?pattern:string -> - ?xalign:float -> - ?yalign:float -> - ?xpad:int -> - ?ypad:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> label -val label_cast : < as_widget : 'a obj ; .. > -> label - -class tips_query_signals : 'a obj -> - object - inherit widget_signals - constraint 'a = [>`tipsquery|`widget] - val obj : 'a obj - method widget_entered : - callback:(widget option -> - text:string option -> privat:string option -> unit) -> - GtkSignal.id - method widget_selected : - callback:(widget option -> text:string option -> - privat:string option -> GdkEvent.Button.t option -> bool) -> - GtkSignal.id - end - -class tips_query : Gtk.tips_query obj -> - object - inherit label_skel - val obj : Gtk.tips_query obj - method connect : tips_query_signals - method set_caller : widget -> unit - method set_emit_always : bool -> unit - method set_label_inactive : string -> unit - method set_label_no_tip : string -> unit - method start : unit -> unit - method stop : unit -> unit - end -val tips_query : - ?caller:#widget -> - ?emit_always:bool -> - ?label_inactive:string -> - ?label_no_tip:string -> - ?xalign:float -> - ?yalign:float -> - ?xpad:int -> - ?ypad:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> tips_query - -class pixmap : Gtk.pixmap Gtk.obj -> - object - inherit misc - val obj : Gtk.pixmap Gtk.obj - method connect : GObj.widget_signals - method pixmap : GDraw.pixmap - method set_pixmap : GDraw.pixmap -> unit - end -val pixmap : - #GDraw.pixmap -> - ?xalign:float -> - ?yalign:float -> - ?xpad:int -> - ?ypad:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> pixmap - -class color_selection : Gtk.color_selection obj -> - object - inherit widget_full - val obj : Gtk.color_selection obj - method get_color : Gtk.color - method set_color : - red:float -> green:float -> blue:float -> ?opacity:float -> unit -> unit - method set_opacity : bool -> unit - method set_update_policy : Tags.update_type -> unit - end -val color_selection : - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> color_selection - -class font_selection : Gtk.font_selection obj -> - object - inherit widget_full - val obj : Gtk.font_selection obj - method event : event_ops - method notebook : GPack.notebook - method font : Gdk.font option - method font_name : string option - method preview_text : string - method set_filter : - ?kind:Tags.font_type list -> - ?foundry:string list -> - ?weight:string list -> - ?slant:string list -> - ?setwidth:string list -> - ?spacing:string list -> - ?charset:string list -> Tags.font_filter_type -> unit - method set_font_name : string -> unit - method set_preview_text : string -> unit - end -val font_selection : - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> font_selection diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gObj.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gObj.ml deleted file mode 100644 index 5c4819fa0..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gObj.ml +++ /dev/null @@ -1,292 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open GtkData -open GtkBase - -(* Object *) - -class gtkobj obj = object - val obj = obj - method destroy () = Object.destroy obj - method get_id = Object.get_id obj -end - -class gtkobj_misc obj = object - val obj = obj - method get_type = Type.name (Object.get_type obj) - method disconnect = GtkSignal.disconnect obj - method handler_block = GtkSignal.handler_block obj - method handler_unblock = GtkSignal.handler_unblock obj -end - -class gtkobj_signals ?(after=false) obj = object - val obj = obj - val after = after - method after = {< after = true >} - method destroy = GtkSignal.connect ~sgn:Object.Signals.destroy obj -end - -(* Widget *) - -class event_signals ?(after=false) obj = object - val obj = Widget.coerce obj - val after = after - method after = {< after = true >} - method any = GtkSignal.connect ~sgn:Widget.Signals.Event.any ~after obj - method button_press = - GtkSignal.connect ~sgn:Widget.Signals.Event.button_press ~after obj - method button_release = - GtkSignal.connect ~sgn:Widget.Signals.Event.button_release ~after obj - method configure = - GtkSignal.connect ~sgn:Widget.Signals.Event.configure ~after obj - method delete = - GtkSignal.connect ~sgn:Widget.Signals.Event.delete ~after obj - method destroy = - GtkSignal.connect ~sgn:Widget.Signals.Event.destroy ~after obj - method enter_notify = - GtkSignal.connect ~sgn:Widget.Signals.Event.enter_notify ~after obj - method expose = - GtkSignal.connect ~sgn:Widget.Signals.Event.expose ~after obj - method focus_in = - GtkSignal.connect ~sgn:Widget.Signals.Event.focus_in ~after obj - method focus_out = - GtkSignal.connect ~sgn:Widget.Signals.Event.focus_out ~after obj - method key_press = - GtkSignal.connect ~sgn:Widget.Signals.Event.key_press ~after obj - method key_release = - GtkSignal.connect ~sgn:Widget.Signals.Event.key_release ~after obj - method leave_notify = - GtkSignal.connect ~sgn:Widget.Signals.Event.leave_notify ~after obj - method map = GtkSignal.connect ~sgn:Widget.Signals.Event.map ~after obj - method motion_notify = - GtkSignal.connect ~sgn:Widget.Signals.Event.motion_notify ~after obj - method property_notify = - GtkSignal.connect ~sgn:Widget.Signals.Event.property_notify ~after obj - method proximity_in = - GtkSignal.connect ~sgn:Widget.Signals.Event.proximity_in ~after obj - method proximity_out = - GtkSignal.connect ~sgn:Widget.Signals.Event.proximity_out ~after obj - method selection_clear = - GtkSignal.connect ~sgn:Widget.Signals.Event.selection_clear ~after obj - method selection_notify = - GtkSignal.connect ~sgn:Widget.Signals.Event.selection_notify ~after obj - method selection_request = - GtkSignal.connect ~sgn:Widget.Signals.Event.selection_request ~after obj - method unmap = GtkSignal.connect ~sgn:Widget.Signals.Event.unmap ~after obj -end - -class event_ops obj = object - val obj = Widget.coerce obj - method add = Widget.add_events obj - method connect = new event_signals obj - method send : Gdk.Tags.event_type Gdk.event -> bool = Widget.event obj - method set_extensions = Widget.set_extension_events obj -end - -class style st = object - val style = st - method as_style = style - method copy = {< style = Style.copy style >} - method bg state = Style.get_bg style ~state - method colormap = Style.get_colormap style - method font = Style.get_font style - method set_bg = - List.iter ~f: - (fun (state,c) -> Style.set_bg style ~state ~color:(GDraw.color c)) - method set_font = Style.set_font style - method set_background = Style.set_background style -end - -class selection_data (sel : Selection.t) = object - val sel = sel - method selection = Selection.selection sel - method target = Selection.target sel - method seltype = Selection.seltype sel - method format = Selection.format sel - method data = Selection.get_data sel - method set = Selection.set sel -end - -class drag_signals ?(after=false) obj = object - val obj = Widget.coerce obj - val after = after - method after = {< after = true >} - method beginning ~callback = - GtkSignal.connect ~sgn:Widget.Signals.drag_begin ~after obj - ~callback:(fun context -> callback (new drag_context context)) - method ending ~callback = - GtkSignal.connect ~sgn:Widget.Signals.drag_end ~after obj - ~callback:(fun context -> callback (new drag_context context)) - method data_delete ~callback = - GtkSignal.connect ~sgn:Widget.Signals.drag_data_delete ~after obj - ~callback:(fun context -> callback (new drag_context context)) - method leave ~callback = - GtkSignal.connect ~sgn:Widget.Signals.drag_leave ~after obj - ~callback:(fun context -> callback (new drag_context context)) - method motion ~callback = - GtkSignal.connect ~sgn:Widget.Signals.drag_motion ~after obj - ~callback:(fun context -> callback (new drag_context context)) - method drop ~callback = - GtkSignal.connect ~sgn:Widget.Signals.drag_drop ~after obj - ~callback:(fun context -> callback (new drag_context context)) - method data_get ~callback = - GtkSignal.connect ~sgn:Widget.Signals.drag_data_get ~after obj - ~callback:(fun context data -> callback (new drag_context context) - (new selection_data data)) - method data_received ~callback = - GtkSignal.connect ~sgn:Widget.Signals.drag_data_received ~after obj - ~callback:(fun context ~x ~y data -> callback (new drag_context context) - ~x ~y (new selection_data data)) - -end - -and drag_ops obj = object - val obj = Widget.coerce obj - method connect = new drag_signals obj - method dest_set ?(flags=[`ALL]) ?(actions=[]) targets = - DnD.dest_set obj ~flags ~actions ~targets:(Array.of_list targets) - method dest_unset () = DnD.dest_unset obj - method get_data ?(time=0) ~context:(context : drag_context) target = - DnD.get_data obj (context : < context : Gdk.drag_context; .. >)#context - ~target ~time - method highlight () = DnD.highlight obj - method unhighlight () = DnD.unhighlight obj - method source_set ?modi:m ?(actions=[]) targets = - DnD.source_set obj ?modi:m ~actions ~targets:(Array.of_list targets) - method source_set_icon ?(colormap = Gdk.Color.get_system_colormap ()) - (pix : GDraw.pixmap) = - DnD.source_set_icon obj ~colormap pix#pixmap ?mask:pix#mask - method source_unset () = DnD.source_unset obj -end - -and drag_context context = object - inherit GDraw.drag_context context - method context = context - method finish = DnD.finish context - method source_widget = - new widget (Object.unsafe_cast (DnD.get_source_widget context)) - method set_icon_widget (w : widget) = - DnD.set_icon_widget context (w#as_widget) - method set_icon_pixmap ?(colormap = Gdk.Color.get_system_colormap ()) - (pix : GDraw.pixmap) = - DnD.set_icon_pixmap context ~colormap pix#pixmap ?mask:pix#mask -end - -and misc_signals ?after obj = object - inherit gtkobj_signals ?after obj - method draw ~callback = - GtkSignal.connect obj ~sgn:Widget.Signals.draw ~after ~callback: - begin fun rect -> - callback - { x = Gdk.Rectangle.x rect ; y = Gdk.Rectangle.y rect; - width = Gdk.Rectangle.width rect; - height = Gdk.Rectangle.height rect } - end - method show = GtkSignal.connect ~sgn:Widget.Signals.show ~after obj - method hide = GtkSignal.connect ~sgn:Widget.Signals.hide ~after obj - method map = GtkSignal.connect ~sgn:Widget.Signals.map ~after obj - method unmap = GtkSignal.connect ~sgn:Widget.Signals.unmap ~after obj - method realize = GtkSignal.connect ~sgn:Widget.Signals.realize ~after obj - method state_changed = - GtkSignal.connect ~sgn:Widget.Signals.state_changed ~after obj - method parent_set ~callback = - GtkSignal.connect obj ~sgn:Widget.Signals.parent_set ~after ~callback: - begin function - None -> callback None - | Some w -> callback (Some (new widget (Object.unsafe_cast w))) - end - method style_set ~callback = - GtkSignal.connect obj ~sgn:Widget.Signals.style_set ~after ~callback: - (fun opt -> callback (may opt ~f:(new style))) -end - -and misc_ops obj = object - inherit gtkobj_misc (Widget.coerce obj) - method connect = new misc_signals obj - method show () = Widget.show obj - method unparent () = Widget.unparent obj - method show_all () = Widget.show_all obj - method hide () = Widget.hide obj - method hide_all () = Widget.hide_all obj - method map () = Widget.map obj - method unmap () = Widget.unmap obj - method realize () = Widget.realize obj - method unrealize () = Widget.unrealize obj - method draw = Widget.draw obj - method activate () = Widget.activate obj - method reparent (w : widget) = Widget.reparent obj w#as_widget - method popup = Widget.popup obj - method intersect = Widget.intersect obj - method grab_focus () = Widget.grab_focus obj - method grab_default () = Widget.grab_default obj - method is_ancestor (w : widget) = Widget.is_ancestor obj w#as_widget - method add_accelerator ~sgn:sg ~group ?modi ?flags key = - Widget.add_accelerator obj ~sgn:sg group ~key ?modi ?flags - method remove_accelerator ~group ?modi key = - Widget.remove_accelerator obj group ~key ?modi - method lock_accelerators () = Widget.lock_accelerators obj - method set_name = Widget.set_name obj - method set_state = Widget.set_state obj - method set_sensitive = Widget.set_sensitive obj - method set_can_default = Widget.set_can_default obj - method set_can_focus = Widget.set_can_focus obj - method set_geometry ?(x = -2) ?(y = -2) ?(width = -2) ?(height = -2) () = - if x+y <> -4 then Widget.set_uposition obj ~x ~y; - if width+height <> -4 then Widget.set_usize obj ~width ~height - method set_style (style : style) = Widget.set_style obj style#as_style - (* get functions *) - method name = Widget.get_name obj - method toplevel = - try Some (new widget (Object.unsafe_cast (Widget.get_toplevel obj))) - with Gpointer.Null -> None - method window = Widget.window obj - method colormap = Widget.get_colormap obj - method visual = Widget.get_visual obj - method visual_depth = Gdk.Window.visual_depth (Widget.get_visual obj) - method pointer = Widget.get_pointer obj - method style = new style (Widget.get_style obj) - method visible = Widget.visible obj - method has_focus = Widget.has_focus obj - method parent = - try Some (new widget (Object.unsafe_cast (Widget.parent obj))) - with Gpointer.Null -> None - method set_app_paintable = Widget.set_app_paintable obj - method allocation = Widget.allocation obj -end - -and widget obj = object (self) - inherit gtkobj obj - method as_widget = Widget.coerce obj - method misc = new misc_ops obj - method drag = new drag_ops (Object.unsafe_cast obj) - method coerce = - (self :> < destroy : _; get_id : _; as_widget : _; misc : _; - drag : _; coerce : _ >) -end - -(* just to check that GDraw.misc_ops is compatible with misc_ops *) -let _ = fun (x : #GDraw.misc_ops) -> (x : misc_ops) - -class widget_signals ?after (obj : [> `widget] obj) = - gtkobj_signals ?after obj - -(* -class widget_coerce obj = object - inherit widget obj - method coerce = (self :> widget) -end -*) - -class widget_full obj = object - inherit widget obj - method connect = new widget_signals obj -end - -let as_widget (w : widget) = w#as_widget - -let pack_return self ~packing ~show = - may packing ~f:(fun f -> (f (self :> widget) : unit)); - if show <> Some false then self#misc#show (); - self diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gObj.mli b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gObj.mli deleted file mode 100644 index 7c37cf124..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gObj.mli +++ /dev/null @@ -1,267 +0,0 @@ -(* $Id$ *) - -open Gtk - -(* Object *) - -class gtkobj : - 'a obj -> - object - val obj : 'a obj - method destroy : unit -> unit - method get_id : int - end - -class gtkobj_signals : - ?after:bool -> 'a obj -> - object ('b) - val obj : 'a obj - val after : bool - method after : 'b - method destroy : callback:(unit -> unit) -> GtkSignal.id - end - -class gtkobj_misc : 'a obj -> - object - method get_type : string - method disconnect : GtkSignal.id -> unit - method handler_block : GtkSignal.id -> unit - method handler_unblock : GtkSignal.id -> unit - end - -(* Widget *) - -class event_signals : - ?after:bool -> [>`widget] obj -> - object ('a) - method after : 'a - method any : - callback:(Gdk.Tags.event_type Gdk.event -> bool) -> GtkSignal.id - method button_press : callback:(GdkEvent.Button.t -> bool) -> GtkSignal.id - method button_release : - callback:(GdkEvent.Button.t -> bool) -> GtkSignal.id - method configure : callback:(GdkEvent.Configure.t -> bool) -> GtkSignal.id - method delete : callback:([`DELETE] Gdk.event -> bool) -> GtkSignal.id - method destroy : callback:([`DESTROY] Gdk.event -> bool) -> GtkSignal.id - method enter_notify : - callback:(GdkEvent.Crossing.t -> bool) -> GtkSignal.id - method expose : callback:(GdkEvent.Expose.t -> bool) -> GtkSignal.id - method focus_in : callback:(GdkEvent.Focus.t -> bool) -> GtkSignal.id - method focus_out : callback:(GdkEvent.Focus.t -> bool) -> GtkSignal.id - method key_press : callback:(GdkEvent.Key.t -> bool) -> GtkSignal.id - method key_release : callback:(GdkEvent.Key.t -> bool) -> GtkSignal.id - method leave_notify : - callback:(GdkEvent.Crossing.t -> bool) -> GtkSignal.id - method map : callback:([`MAP] Gdk.event -> bool) -> GtkSignal.id - method motion_notify : - callback:(GdkEvent.Motion.t -> bool) -> GtkSignal.id - method property_notify : - callback:(GdkEvent.Property.t -> bool) -> GtkSignal.id - method proximity_in : - callback:(GdkEvent.Proximity.t -> bool) -> GtkSignal.id - method proximity_out : - callback:(GdkEvent.Proximity.t -> bool) -> GtkSignal.id - method selection_clear : - callback:(GdkEvent.Selection.t -> bool) -> GtkSignal.id - method selection_notify : - callback:(GdkEvent.Selection.t -> bool) -> GtkSignal.id - method selection_request : - callback:(GdkEvent.Selection.t -> bool) -> GtkSignal.id - method unmap : callback:([`UNMAP] Gdk.event -> bool) -> GtkSignal.id - end - -class event_ops : [>`widget] obj -> - object - method add : Gdk.Tags.event_mask list -> unit - method connect : event_signals - method send : Gdk.Tags.event_type Gdk.event -> bool - method set_extensions : Gdk.Tags.extension_events -> unit - end - -class style : Gtk.style -> - object ('a) - val style : Gtk.style - method as_style : Gtk.style - method bg : Tags.state_type -> Gdk.Color.t - method colormap : Gdk.colormap - method copy : 'a - method font : Gdk.font - method set_background : Gdk.window -> Tags.state_type -> unit - method set_bg : (Tags.state_type * GDraw.color) list -> unit - method set_font : Gdk.font -> unit - end - -class selection_data : - GtkData.Selection.t -> - object - val sel : GtkData.Selection.t - method data : string (* May raise Null_pointer *) - method format : int - method selection : Gdk.atom - method seltype : Gdk.atom - method target : Gdk.atom - method set : typ:Gdk.atom -> format:int -> ?data:string -> unit - end - -class drag_ops : [>`widget] obj -> - object - method connect : drag_signals - method dest_set : - ?flags:Tags.dest_defaults list -> - ?actions:Gdk.Tags.drag_action list -> target_entry list -> unit - method dest_unset : unit -> unit - method get_data : ?time:int -> context:drag_context -> Gdk.atom ->unit - method highlight : unit -> unit - method source_set : - ?modi:Gdk.Tags.modifier list -> - ?actions:Gdk.Tags.drag_action list -> target_entry list -> unit - method source_set_icon : ?colormap:Gdk.colormap -> GDraw.pixmap -> unit - method source_unset : unit -> unit - method unhighlight : unit -> unit - end - -and misc_ops : - [>`widget] obj -> - object - inherit gtkobj_misc - val obj : Gtk.widget obj - method activate : unit -> bool - method add_accelerator : - sgn:(Gtk.widget, unit -> unit) GtkSignal.t -> - group:accel_group -> ?modi:Gdk.Tags.modifier list -> - ?flags:Tags.accel_flag list -> Gdk.keysym -> unit - method allocation : rectangle - method colormap : Gdk.colormap - method connect : misc_signals - method draw : Gdk.Rectangle.t option -> unit - method grab_default : unit -> unit - method grab_focus : unit -> unit - method has_focus : bool - method hide : unit -> unit - method hide_all : unit -> unit - method intersect : Gdk.Rectangle.t -> Gdk.Rectangle.t option - method is_ancestor : widget -> bool - method lock_accelerators : unit -> unit - method map : unit -> unit - method name : string - method parent : widget option - method pointer : int * int - method popup : x:int -> y:int -> unit - method realize : unit -> unit - method remove_accelerator : - group:accel_group -> ?modi:Gdk.Tags.modifier list -> Gdk.keysym -> unit - method reparent : widget -> unit - method set_app_paintable : bool -> unit - method set_can_default : bool -> unit - method set_can_focus : bool -> unit - method set_name : string -> unit - method set_sensitive : bool -> unit - method set_state : Tags.state_type -> unit - method set_style : style -> unit - method set_geometry : - ?x:int -> ?y:int -> ?width:int -> ?height:int -> unit -> unit - method show : unit -> unit - method show_all : unit -> unit - method style : style - method toplevel : widget option - method unmap : unit -> unit - method unparent : unit -> unit - method unrealize : unit -> unit - method visible : bool - method visual : Gdk.visual - method visual_depth : int - method window : Gdk.window - end - -and widget : - 'a obj -> - object - inherit gtkobj - constraint 'a = [>`widget] - val obj : 'a obj - method as_widget : Gtk.widget obj - method coerce : widget - method drag : drag_ops - method misc : misc_ops - end - -and misc_signals : - ?after:bool -> Gtk.widget obj -> - object ('b) - inherit gtkobj_signals - val obj : Gtk.widget obj - method after : 'b - method draw : callback:(Gtk.rectangle -> unit) -> GtkSignal.id - method hide : callback:(unit -> unit) -> GtkSignal.id - method map : callback:(unit -> unit) -> GtkSignal.id - method parent_set : callback:(widget option -> unit) -> GtkSignal.id - method realize : callback:(unit -> unit) -> GtkSignal.id - method show : callback:(unit -> unit) -> GtkSignal.id - method state_changed : - callback:(Gtk.Tags.state_type -> unit) -> GtkSignal.id - method style_set : callback:(unit -> unit) -> GtkSignal.id - method unmap : callback:(unit -> unit) -> GtkSignal.id - end - -and drag_context : - Gdk.drag_context -> - object - val context : Gdk.drag_context - method context : Gdk.drag_context - method finish : success:bool -> del:bool -> time:int -> unit - method source_widget : widget - method set_icon_pixmap : - ?colormap:Gdk.colormap -> GDraw.pixmap -> hot_x:int -> hot_y:int -> unit - method set_icon_widget : widget -> hot_x:int -> hot_y:int -> unit - method status : ?time:int -> Gdk.Tags.drag_action list -> unit - method suggested_action : Gdk.Tags.drag_action - method targets : Gdk.atom list - end - -and drag_signals : - ?after:bool -> Gtk.widget obj -> - object ('a) - method after : 'a - method beginning : - callback:(drag_context -> unit) -> GtkSignal.id - method data_delete : - callback:(drag_context -> unit) -> GtkSignal.id - method data_get : - callback:(drag_context -> selection_data -> info:int -> time:int -> unit) - -> GtkSignal.id - method data_received : - callback:(drag_context -> x:int -> y:int -> - selection_data -> info:int -> time:int -> unit) -> GtkSignal.id - method drop : - callback:(drag_context -> x:int -> y:int -> time:int -> bool) -> - GtkSignal.id - method ending : - callback:(drag_context -> unit) -> GtkSignal.id - method leave : - callback:(drag_context -> time:int -> unit) -> GtkSignal.id - method motion : - callback:(drag_context -> x:int -> y:int -> time:int -> bool) -> - GtkSignal.id - end - -class widget_signals : ?after:bool -> 'a obj -> - object - inherit gtkobj_signals - constraint 'a = [>`widget] - val obj : 'a obj - end - -class widget_full : 'a obj -> - object - inherit widget - constraint 'a = [>`widget] - val obj : 'a obj - method connect : widget_signals - end - -val as_widget : widget -> Gtk.widget obj - -val pack_return : - (#widget as 'a) -> - packing:(widget -> unit) option -> show:bool option -> 'a - (* To use in initializers to provide a ?packing: option *) diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gPack.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gPack.ml deleted file mode 100644 index 3641349a9..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gPack.ml +++ /dev/null @@ -1,217 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open GtkBase -open GtkPack -open GObj -open GContainer - -class box_skel obj = object - inherit container obj - method pack ?from:f ?expand ?fill ?padding w = - Box.pack obj (as_widget w) ?from:f ?expand ?fill ?padding - method set_homogeneous = Box.set_homogeneous obj - method set_spacing = Box.set_spacing obj - method set_child_packing ?from:f ?expand ?fill ?padding w = - Box.set_child_packing obj (as_widget w) ?from:f ?expand ?fill ?padding - method reorder_child w = Box.reorder_child obj (as_widget w) -end - -class box obj = object - inherit box_skel obj - method connect = new container_signals obj -end - -let box dir ?homogeneous ?spacing ?border_width ?width ?height - ?packing ?show () = - let w = Box.create dir ?homogeneous ?spacing () in - Container.set w ?border_width ?width ?height; - pack_return (new box w) ~packing ~show - -let vbox = box `VERTICAL -let hbox = box `HORIZONTAL - -class button_box obj = object - inherit box_skel (obj : Gtk.button_box obj) - method connect = new container_signals obj - method set_layout = BBox.set_layout obj - method set_spacing = BBox.set_spacing obj - method set_child_size = BBox.set_child_size obj - method set_child_ipadding = BBox.set_child_ipadding obj -end - -let button_box dir ?spacing ?child_width ?child_height ?child_ipadx - ?child_ipady ?layout ?border_width ?width ?height ?packing ?show ()= - let w = BBox.create dir in - BBox.set w ?spacing ?child_width ?child_height ?child_ipadx - ?child_ipady ?layout; - Container.set w ?border_width ?width ?height; - pack_return (new button_box w) ~packing ~show - -class table obj = object - inherit container_full (obj : Gtk.table obj) - method attach ~left ~top ?right ?bottom ?expand ?fill ?shrink - ?xpadding ?ypadding w = - Table.attach obj (as_widget w) ~left ~top ?right ?bottom ?expand - ?fill ?shrink ?xpadding ?ypadding - method set_row_spacing = Table.set_row_spacing obj - method set_col_spacing = Table.set_col_spacing obj - method set_row_spacings = Table.set_row_spacings obj - method set_col_spacings = Table.set_col_spacings obj - method set_homogeneous = Table.set_homogeneous obj -end - -let table ~rows ~columns ?homogeneous ?row_spacings ?col_spacings - ?border_width ?width ?height ?packing ?show () = - let w = Table.create ~rows ~columns ?homogeneous () in - Table.set w ?row_spacings ?col_spacings; - Container.set w ?border_width ?width ?height; - pack_return (new table w) ~packing ~show - -class fixed obj = object - inherit container_full (obj : Gtk.fixed obj) - method event = new GObj.event_ops obj - method put w = Fixed.put obj (as_widget w) - method move w = Fixed.move obj (as_widget w) -end - -let fixed ?border_width ?width ?height ?packing ?show () = - let w = Fixed.create () in - Container.set w ?border_width ?width ?height; - pack_return (new fixed w) ~packing ~show - -class layout obj = object - inherit container_full (obj : Gtk.layout obj) - method event = new GObj.event_ops obj - method put w = Layout.put obj (as_widget w) - method move w = Layout.move obj (as_widget w) - method set_hadjustment adj = - Layout.set_hadjustment obj (GData.as_adjustment adj) - method set_vadjustment adj = - Layout.set_vadjustment obj (GData.as_adjustment adj) - method set_width width = Layout.set_size obj ~width - method set_height height = Layout.set_size obj ~height - method hadjustment = new GData.adjustment (Layout.get_hadjustment obj) - method vadjustment = new GData.adjustment (Layout.get_vadjustment obj) - method freeze () = Layout.freeze obj - method thaw () = Layout.thaw obj - method width = Layout.get_width obj - method height = Layout.get_height obj -end - -let layout ?hadjustment ?vadjustment ?layout_width ?layout_height - ?border_width ?width ?height ?packing ?show () = - let w = Layout.create - (Gpointer.optboxed (may_map ~f:GData.as_adjustment hadjustment)) - (Gpointer.optboxed (may_map ~f:GData.as_adjustment vadjustment)) in - if layout_width <> None || layout_height <> None then - Layout.set_size w ?width:layout_width ?height:layout_height; - Container.set w ?border_width ?width ?height; - pack_return (new layout w) ~packing ~show - - -class packer obj = object - inherit container_full (obj : Gtk.packer obj) - method pack ?side ?anchor ?expand ?fill - ?border_width ?pad_x ?pad_y ?i_pad_x ?i_pad_y w = - let options = Packer.build_options ?expand ?fill () in - if border_width == None && pad_x == None && pad_y == None && - i_pad_x == None && i_pad_y == None - then Packer.add_defaults obj (as_widget w) ?side ?anchor ~options - else Packer.add obj (as_widget w) ?side ?anchor ~options - ?border_width ?pad_x ?pad_y ?i_pad_x ?i_pad_y - method set_child_packing ?side ?anchor ?expand ?fill - ?border_width ?pad_x ?pad_y ?i_pad_x ?i_pad_y w = - Packer.set_child_packing obj (as_widget w) ?side ?anchor - ~options:(Packer.build_options ?expand ?fill ()) - ?border_width ?pad_x ?pad_y ?i_pad_x ?i_pad_y - method reorder_child w = Packer.reorder_child obj (as_widget w) - method set_spacing = Packer.set_spacing obj - method set_defaults = Packer.set_defaults obj -end - -let packer ?spacing ?border_width ?width ?height ?packing ?show () = - let w = Packer.create () in - may spacing ~f:(Packer.set_spacing w); - Container.set w ?border_width ?width ?height; - pack_return (new packer w) ~packing ~show - -class paned obj = object - inherit container_full (obj : Gtk.paned obj) - method event = new GObj.event_ops obj - method add w = - if List.length (Container.children obj) = 2 then - raise(Error "Gpack.paned#add: already full"); - Container.add obj (as_widget w) - method add1 w = - try ignore(Paned.child1 obj); raise(Error "GPack.paned#add1: already full") - with _ -> Paned.add1 obj (as_widget w) - method add2 w = - try ignore(Paned.child2 obj); raise(Error "GPack.paned#add2: already full") - with _ -> Paned.add2 obj (as_widget w) - method set_handle_size = Paned.set_handle_size obj - method set_gutter_size = Paned.set_gutter_size obj - method child1 = new widget (Paned.child1 obj) - method child2 = new widget (Paned.child2 obj) - method handle_size = Paned.handle_size obj - method gutter_size = Paned.gutter_size obj -end - -let paned dir ?handle_size ?gutter_size - ?border_width ?width ?height ?packing ?show () = - let w = Paned.create dir in - Paned.set w ?handle_size ?gutter_size; - Container.set w ?border_width ?width ?height; - pack_return (new paned w) ~packing ~show - -class notebook_signals obj = object - inherit GContainer.container_signals obj - method switch_page = - GtkSignal.connect obj ~sgn:Notebook.Signals.switch_page ~after -end - -class notebook obj = object (self) - inherit GContainer.container obj - method event = new GObj.event_ops obj - method connect = new notebook_signals obj - method insert_page ?tab_label ?menu_label ~pos child = - Notebook.insert_page obj (as_widget child) ~pos - ~tab_label:(Gpointer.may_box tab_label ~f:as_widget) - ~menu_label:(Gpointer.may_box menu_label ~f:as_widget) - method append_page = self#insert_page ~pos:(-1) - method prepend_page = self#insert_page ~pos:0 - method remove_page = Notebook.remove_page obj - method current_page = Notebook.get_current_page obj - method goto_page = Notebook.set_page obj - method previous_page () = Notebook.prev_page obj - method next_page () = Notebook.next_page obj - method set_tab_pos = Notebook.set_tab_pos obj - method set_show_tabs = Notebook.set_show_tabs obj - method set_homogeneous_tabs = Notebook.set_homogeneous_tabs obj - method set_show_border = Notebook.set_show_border obj - method set_scrollable = Notebook.set_scrollable obj - method set_tab_border = Notebook.set_tab_border obj - method set_popup = Notebook.set_popup obj - method page_num w = Notebook.page_num obj (as_widget w) - method get_nth_page n = new widget (Notebook.get_nth_page obj n) - method get_tab_label w = - new widget (Notebook.get_tab_label obj (as_widget w)) - method get_menu_label w = - new widget (Notebook.get_tab_label obj (as_widget w)) - method set_page ?tab_label ?menu_label page = - let child = as_widget page in - may tab_label - ~f:(fun lbl -> Notebook.set_tab_label obj child (as_widget lbl)); - may menu_label - ~f:(fun lbl -> Notebook.set_menu_label obj child (as_widget lbl)) -end - -let notebook ?tab_pos ?tab_border ?show_tabs ?homogeneous_tabs - ?show_border ?scrollable ?popup - ?border_width ?width ?height ?packing ?show () = - let w = Notebook.create () in - Notebook.set w ?tab_pos ?tab_border ?show_tabs - ?homogeneous_tabs ?show_border ?scrollable ?popup; - Container.set w ?border_width ?width ?height; - pack_return (new notebook w) ~packing ~show diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gPack.mli b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gPack.mli deleted file mode 100644 index 994c8b87f..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gPack.mli +++ /dev/null @@ -1,267 +0,0 @@ -(* $Id$ *) - -open Gtk -open GObj -open GContainer - -class box_skel : - 'a obj -> - object - inherit container - constraint 'a = [>`box|`container|`widget] - val obj : 'a obj - method pack : - ?from:Tags.pack_type -> - ?expand:bool -> ?fill:bool -> ?padding:int -> widget -> unit - method reorder_child : widget -> pos:int -> unit - method set_child_packing : - ?from:Tags.pack_type -> - ?expand:bool -> ?fill:bool -> ?padding:int -> widget -> unit - method set_homogeneous : bool -> unit - method set_spacing : int -> unit - end -class box : - 'a obj -> - object - inherit box_skel - constraint 'a = [>`box|`container|`widget] - val obj : 'a obj - method connect : GContainer.container_signals - end - -val box : - Tags.orientation -> - ?homogeneous:bool -> - ?spacing:int -> - ?border_width:int -> - ?width:int -> - ?height:int -> ?packing:(widget -> unit) -> ?show:bool -> unit -> box -val vbox : - ?homogeneous:bool -> - ?spacing:int -> - ?border_width:int -> - ?width:int -> - ?height:int -> ?packing:(widget -> unit) -> ?show:bool -> unit -> box -val hbox : - ?homogeneous:bool -> - ?spacing:int -> - ?border_width:int -> - ?width:int -> - ?height:int -> ?packing:(widget -> unit) -> ?show:bool -> unit -> box - -class button_box : - Gtk.button_box obj -> - object - inherit container_full - val obj : Gtk.button_box obj - method pack : - ?from:Tags.pack_type -> - ?expand:bool -> ?fill:bool -> ?padding:int -> widget -> unit - method reorder_child : widget -> pos:int -> unit - method set_child_ipadding : ?x:int -> ?y:int -> unit -> unit - method set_child_packing : - ?from:Tags.pack_type -> - ?expand:bool -> ?fill:bool -> ?padding:int -> widget -> unit - method set_child_size : ?width:int -> ?height:int -> unit -> unit - method set_homogeneous : bool -> unit - method set_layout : GtkPack.BBox.bbox_style -> unit - method set_spacing : int -> unit - end -val button_box : - Tags.orientation -> - ?spacing:int -> - ?child_width:int -> - ?child_height:int -> - ?child_ipadx:int -> - ?child_ipady:int -> - ?layout:GtkPack.BBox.bbox_style -> - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> button_box - -class table : - Gtk.table obj -> - object - inherit container_full - val obj : Gtk.table obj - method attach : - left:int -> - top:int -> - ?right:int -> - ?bottom:int -> - ?expand:Tags.expand_type -> - ?fill:Tags.expand_type -> - ?shrink:Tags.expand_type -> - ?xpadding:int -> ?ypadding:int -> widget -> unit - method set_col_spacing : int -> int -> unit - method set_col_spacings : int -> unit - method set_homogeneous : bool -> unit - method set_row_spacing : int -> int -> unit - method set_row_spacings : int -> unit - end -val table : - rows:int -> - columns:int -> - ?homogeneous:bool -> - ?row_spacings:int -> - ?col_spacings:int -> - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> table - -class fixed : - Gtk.fixed obj -> - object - inherit container_full - val obj : Gtk.fixed obj - method event : event_ops - method move : widget -> x:int -> y:int -> unit - method put : widget -> x:int -> y:int -> unit - end -val fixed : - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> fixed - -class layout : - Gtk.layout obj -> - object - inherit container_full - val obj : Gtk.layout obj - method event : event_ops - method freeze : unit -> unit - method hadjustment : GData.adjustment - method height : int - method move : widget -> x:int -> y:int -> unit - method put : widget -> x:int -> y:int -> unit - method set_hadjustment : GData.adjustment -> unit - method set_height : int -> unit - method set_vadjustment : GData.adjustment -> unit - method set_width : int -> unit - method thaw : unit -> unit - method vadjustment : GData.adjustment - method width : int - end -val layout : - ?hadjustment:GData.adjustment -> - ?vadjustment:GData.adjustment -> - ?layout_width:int -> - ?layout_height:int -> - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> layout - -class notebook_signals : 'a obj -> - object - inherit container_signals - constraint 'a = [>`notebook|`container|`widget] - val obj : 'a obj - method switch_page : callback:(int -> unit) -> GtkSignal.id - end - -class notebook : ([> `widget | `container | `notebook] as 'a) obj -> - object - inherit container - val obj : 'a obj - method event : event_ops - method append_page : - ?tab_label:widget -> ?menu_label:widget -> widget -> unit - method connect : notebook_signals - method current_page : int - method get_menu_label : widget -> widget - method get_nth_page : int -> widget - method get_tab_label : widget -> widget - method goto_page : int -> unit - method insert_page : - ?tab_label:widget -> ?menu_label:widget -> pos:int -> widget -> unit - method next_page : unit -> unit - method page_num : widget -> int - method prepend_page : - ?tab_label:widget -> ?menu_label:widget -> widget -> unit - method previous_page : unit -> unit - method remove_page : int -> unit - method set_homogeneous_tabs : bool -> unit - method set_page : - ?tab_label:widget -> ?menu_label:widget -> widget -> unit - method set_popup : bool -> unit - method set_scrollable : bool -> unit - method set_show_border : bool -> unit - method set_show_tabs : bool -> unit - method set_tab_border : int -> unit - method set_tab_pos : Tags.position -> unit - end -val notebook : - ?tab_pos:Tags.position -> - ?tab_border:int -> - ?show_tabs:bool -> - ?homogeneous_tabs:bool -> - ?show_border:bool -> - ?scrollable:bool -> - ?popup:bool -> - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> notebook - -class packer : - Gtk.packer obj -> - object - inherit container_full - val obj : Gtk.packer obj - method pack : - ?side:Tags.side_type -> - ?anchor:Tags.anchor_type -> - ?expand:bool -> - ?fill:Tags.expand_type -> - ?border_width:int -> - ?pad_x:int -> - ?pad_y:int -> ?i_pad_x:int -> ?i_pad_y:int -> widget -> unit - method reorder_child : widget -> pos:int -> unit - method set_child_packing : - ?side:Tags.side_type -> - ?anchor:Tags.anchor_type -> - ?expand:bool -> - ?fill:Tags.expand_type -> - ?border_width:int -> - ?pad_x:int -> - ?pad_y:int -> ?i_pad_x:int -> ?i_pad_y:int -> widget -> unit - method set_defaults : - ?border_width:int -> - ?pad_x:int -> - ?pad_y:int -> ?i_pad_x:int -> ?i_pad_y:int -> unit -> unit - method set_spacing : int -> unit - end -val packer : - ?spacing:int -> - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> packer - -class paned : - Gtk.paned obj -> - object - inherit container_full - val obj : Gtk.paned obj - method add1 : widget -> unit - method add2 : widget -> unit - method event : event_ops - method child1 : widget - method child2 : widget - method gutter_size : int - method handle_size : int - method set_gutter_size : int -> unit - method set_handle_size : int -> unit - end -val paned : - Tags.orientation -> - ?handle_size:int -> - ?gutter_size:int -> - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> paned diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gRange.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gRange.ml deleted file mode 100644 index 7df53ced1..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gRange.ml +++ /dev/null @@ -1,83 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open GtkBase -open GtkRange -open GObj - -class progress obj = object - inherit widget_full obj - method set_adjustment adj = - Progress.set_adjustment obj (GData.as_adjustment adj) - method set_show_text = Progress.set_show_text obj - method set_format_string = Progress.set_format_string obj - method set_text_alignment = Progress.set_text_alignment obj - method set_activity_mode = Progress.set_activity_mode obj - method set_value = Progress.set_value obj - method set_percentage = Progress.set_percentage obj - method configure = Progress.configure obj - method value = Progress.get_value obj - method percentage = Progress.get_percentage obj - method current_text = Progress.get_current_text obj - method adjustment = new GData.adjustment (Progress.get_adjustment obj) -end - -class progress_bar obj = object - inherit progress (obj : Gtk.progress_bar obj) - method event = new GObj.event_ops obj - method set_bar_style = ProgressBar.set_bar_style obj - method set_discrete_blocks = ProgressBar.set_discrete_blocks obj - method set_activity_step = ProgressBar.set_activity_step obj - method set_activity_blocks = ProgressBar.set_activity_blocks obj - method set_orientation = ProgressBar.set_orientation obj -end - -let progress_bar ?adjustment ?bar_style ?discrete_blocks - ?activity_step ?activity_blocks ?value ?percentage ?activity_mode - ?show_text ?format_string ?text_xalign ?text_yalign - ?packing ?show () = - let w = - match adjustment with None -> ProgressBar.create () - | Some adj -> - ProgressBar.create_with_adjustment (GData.as_adjustment adj) - in - ProgressBar.set w ?bar_style ?discrete_blocks - ?activity_step ?activity_blocks; - Progress.set w ?value ?percentage ?activity_mode - ?show_text ?format_string ?text_xalign ?text_yalign; - pack_return (new progress_bar w) ~packing ~show - -class range obj = object - inherit widget_full obj - method adjustment = new GData.adjustment (Range.get_adjustment obj) - method set_adjustment adj = - Range.set_adjustment obj (GData.as_adjustment adj) - method set_update_policy = Range.set_update_policy obj -end - -class scale obj = object - inherit range (obj : Gtk.scale obj) - method set_digits = Scale.set_digits obj - method set_draw_value = Scale.set_draw_value obj - method set_value_pos = Scale.set_value_pos obj -end - -let scale dir ?adjustment ?digits ?draw_value ?value_pos - ?packing ?show () = - let w = - Scale.create dir ?adjustment:(may_map ~f:GData.as_adjustment adjustment) - in - let () = Scale.set w ?digits ?draw_value ?value_pos in - pack_return (new scale w) ~packing ~show - -class scrollbar obj = object - inherit range (obj : Gtk.scrollbar obj) - method event = new GObj.event_ops obj -end - -let scrollbar dir ?adjustment ?update_policy ?packing ?show () = - let w = Scrollbar.create dir - ?adjustment:(may_map ~f:GData.as_adjustment adjustment) in - let () = may update_policy ~f:(Range.set_update_policy w) in - pack_return (new scrollbar w) ~packing ~show diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gRange.mli b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gRange.mli deleted file mode 100644 index ac9b38c27..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gRange.mli +++ /dev/null @@ -1,87 +0,0 @@ -(* $Id$ *) - -open Gtk -open GObj - -class progress : 'a obj -> - object - inherit widget_full - constraint 'a = [>`progress|`widget] - val obj : 'a obj - method adjustment : GData.adjustment - method configure : current:float -> min:float -> max:float -> unit - method current_text : string - method percentage : float - method set_activity_mode : bool -> unit - method set_adjustment : GData.adjustment -> unit - method set_format_string : string -> unit - method set_percentage : float -> unit - method set_show_text : bool -> unit - method set_text_alignment : ?x:float -> ?y:float -> unit -> unit - method set_value : float -> unit - method value : float - end - -class progress_bar : Gtk.progress_bar obj -> - object - inherit progress - val obj : Gtk.progress_bar obj - method event : event_ops - method set_activity_blocks : int -> unit - method set_activity_step : int -> unit - method set_bar_style : [`CONTINUOUS|`DISCRETE] -> unit - method set_discrete_blocks : int -> unit - method set_orientation : Tags.progress_bar_orientation -> unit - end -val progress_bar : - ?adjustment:GData.adjustment -> - ?bar_style:[`CONTINUOUS|`DISCRETE] -> - ?discrete_blocks:int -> - ?activity_step:int -> - ?activity_blocks:int -> - ?value:float -> - ?percentage:float -> - ?activity_mode:bool -> - ?show_text:bool -> - ?format_string:string -> - ?text_xalign:float -> - ?text_yalign:float -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> progress_bar - -class range : 'a obj -> - object - inherit widget_full - constraint 'a = [>`range|`widget] - val obj : 'a obj - method adjustment : GData.adjustment - method set_adjustment : GData.adjustment -> unit - method set_update_policy : Tags.update_type -> unit - end - -class scale : Gtk.scale obj -> - object - inherit range - val obj : Gtk.scale obj - method set_digits : int -> unit - method set_draw_value : bool -> unit - method set_value_pos : Tags.position -> unit - end -val scale : - Tags.orientation -> - ?adjustment:GData.adjustment -> - ?digits:int -> - ?draw_value:bool -> - ?value_pos:Tags.position -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> scale - -class scrollbar : Gtk.scrollbar obj -> - object - inherit range - val obj : Gtk.scrollbar obj - method event : event_ops - end -val scrollbar : - Tags.orientation -> - ?adjustment:GData.adjustment -> - ?update_policy:Tags.update_type -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> scrollbar diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gTree.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gTree.ml deleted file mode 100644 index 80dab7be6..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gTree.ml +++ /dev/null @@ -1,76 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open GtkBase -open GtkTree -open GObj -open GContainer - -class tree_item_signals obj = object - inherit item_signals obj - method expand = GtkSignal.connect obj ~sgn:TreeItem.Signals.expand ~after - method collapse = GtkSignal.connect obj ~sgn:TreeItem.Signals.collapse ~after -end - -class tree_item obj = object - inherit container obj - method event = new GObj.event_ops obj - method as_item : Gtk.tree_item obj = obj - method connect = new tree_item_signals obj - method set_subtree (w : tree) = TreeItem.set_subtree obj w#as_tree - method remove_subtree () = TreeItem.remove_subtree obj - method expand () = TreeItem.expand obj - method collapse () = TreeItem.collapse obj - method subtree = - try Some(new tree (TreeItem.subtree obj)) with Gpointer.Null -> None -end - -and tree_signals obj = object - inherit container_signals obj - method selection_changed = - GtkSignal.connect obj ~sgn:Tree.Signals.selection_changed ~after - method select_child ~callback = - GtkSignal.connect obj ~sgn:Tree.Signals.select_child ~after - ~callback:(fun w -> callback (new tree_item (TreeItem.cast w))) - method unselect_child ~callback = - GtkSignal.connect obj ~sgn:Tree.Signals.unselect_child ~after - ~callback:(fun w -> callback (new tree_item (TreeItem.cast w))) -end - -and tree obj = object (self) - inherit [tree_item] item_container obj - method event = new GObj.event_ops obj - method as_tree = Tree.coerce obj - method insert w ~pos = Tree.insert obj w#as_item ~pos - method connect = new tree_signals obj - method clear_items = Tree.clear_items obj - method select_item = Tree.select_item obj - method unselect_item = Tree.unselect_item obj - method child_position (w : tree_item) = Tree.child_position obj w#as_item - method remove_items items = - Tree.remove_items obj - (List.map ~f:(fun (t : tree_item) -> t#as_item) items) - method set_selection_mode = Tree.set_selection_mode obj - method set_view_mode = Tree.set_view_mode obj - method set_view_lines = Tree.set_view_lines obj - method selection = - List.map ~f:(fun w -> self#wrap (Widget.coerce w)) (Tree.selection obj) - method private wrap w = - new tree_item (TreeItem.cast w) -end - -let tree_item ?label ?border_width ?width ?height ?packing ?show () = - let w = TreeItem.create ?label () in - Container.set w ?border_width ?width ?height; - let self = new tree_item w in - may packing ~f:(fun f -> (f self : unit)); - if show <> Some false then self#misc#show (); - self - -let tree ?selection_mode ?view_mode ?view_lines - ?border_width ?width ?height ?packing ?show () = - let w = Tree.create () in - Tree.set w ?selection_mode ?view_mode ?view_lines; - Container.set w ?border_width ?width ?height; - pack_return (new tree w) ~packing ~show diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gTree.mli b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gTree.mli deleted file mode 100644 index d48e09b2a..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gTree.mli +++ /dev/null @@ -1,72 +0,0 @@ -(* $Id$ *) - -open Gtk -open GObj -open GContainer - -class tree_item_signals : 'a obj -> - object - inherit item_signals - constraint 'a = [>`treeitem|`container|`item|`widget] - val obj : 'a obj - method collapse : callback:(unit -> unit) -> GtkSignal.id - method expand : callback:(unit -> unit) -> GtkSignal.id - end - -class tree_item : Gtk.tree_item obj -> - object - inherit GContainer.container - val obj : Gtk.tree_item obj - method event : event_ops - method as_item : Gtk.tree_item obj - method collapse : unit -> unit - method connect : tree_item_signals - method expand : unit -> unit - method remove_subtree : unit -> unit - method set_subtree : tree -> unit - method subtree : tree option - end - -and tree_signals : Gtk.tree obj -> - object - inherit container_signals - val obj : Gtk.tree obj - method select_child : callback:(tree_item -> unit) -> GtkSignal.id - method selection_changed : callback:(unit -> unit) -> GtkSignal.id - method unselect_child : callback:(tree_item -> unit) -> GtkSignal.id - end - -and tree : Gtk.tree obj -> - object - inherit [tree_item] item_container - val obj : Gtk.tree obj - method event : event_ops - method as_tree : Gtk.tree obj - method child_position : tree_item -> int - method clear_items : start:int -> stop:int -> unit - method connect : tree_signals - method insert : tree_item -> pos:int -> unit - method remove_items : tree_item list -> unit - method select_item : pos:int -> unit - method selection : tree_item list - method set_selection_mode : Tags.selection_mode -> unit - method set_view_lines : bool -> unit - method set_view_mode : [`LINE|`ITEM] -> unit - method unselect_item : pos:int -> unit - method private wrap : Gtk.widget obj -> tree_item - end - -val tree_item : - ?label:string -> - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(tree_item -> unit) -> ?show:bool -> unit -> tree_item - -val tree : - ?selection_mode:Tags.selection_mode -> - ?view_mode:[`LINE|`ITEM] -> - ?view_lines:bool -> - ?border_width:int -> - ?width:int -> - ?height:int -> ?packing:(GObj.widget -> unit) -> ?show:bool -> unit -> tree diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gUtil.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gUtil.ml deleted file mode 100644 index 260c2acee..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gUtil.ml +++ /dev/null @@ -1,80 +0,0 @@ -(* $Id$ *) - -open GObj - -class ['a] memo () = object - constraint 'a = #widget - val tbl = Hashtbl.create 7 - method add (obj : 'a) = - Hashtbl.add tbl ~key:obj#get_id ~data:obj - method find (obj : widget) = Hashtbl.find tbl obj#get_id - method remove (obj : widget) = Hashtbl.remove tbl obj#get_id -end - -let signal_id = ref 0 - -let next_callback_id () : GtkSignal.id = - decr signal_id; Obj.magic (!signal_id : int) - -class ['a] signal () = object (self) - val mutable callbacks : (GtkSignal.id * ('a -> unit)) list = [] - method callbacks = callbacks - method connect ~after ~callback = - let id = next_callback_id () in - callbacks <- - if after then callbacks @ [id,callback] else (id,callback)::callbacks; - id - method call arg = - List.exists callbacks ~f: - begin fun (_,f) -> - let old = GtkSignal.push_callback () in - try f arg; GtkSignal.pop_callback old - with exn -> GtkSignal.pop_callback old; raise exn - end; - () - method disconnect key = - List.mem_assoc key callbacks && - (callbacks <- List.remove_assoc key callbacks; true) -end - -class virtual ml_signals disconnectors = - object (self) - val after = false - method after = {< after = true >} - val mutable disconnectors : (GtkSignal.id -> bool) list = disconnectors - method disconnect key = - ignore (List.exists disconnectors ~f:(fun f -> f key)) - end - -class virtual add_ml_signals obj disconnectors = - object (self) - val mutable disconnectors : (GtkSignal.id -> bool) list = disconnectors - method disconnect key = - if List.exists disconnectors ~f:(fun f -> f key) then () - else GtkSignal.disconnect obj key - end - -class ['a] variable_signals ~(set : 'a signal) ~(changed : 'a signal) = - object - inherit ml_signals [changed#disconnect; set#disconnect] - method changed = changed#connect ~after - method set = set#connect ~after - end - -class ['a] variable x = - object (self) - val changed = new signal () - val set = new signal () - method connect = new variable_signals ~set ~changed - val mutable x : 'a = x - method get = x - method set = set#call - method private equal : 'a -> 'a -> bool = (=) - method private real_set y = - let x0 = x in x <- y; - if changed#callbacks <> [] && not (self#equal x x0) - then changed#call y - initializer - ignore (set#connect ~after:false ~callback:self#real_set) - end - diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gUtil.mli b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gUtil.mli deleted file mode 100644 index cd88d8697..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gUtil.mli +++ /dev/null @@ -1,109 +0,0 @@ -(* $Id$ *) - -open GObj - -(* The memo class provides an easy way to remember the real class of - a widget. - Insert all widgets of class in one single t memo, and you can then - recover their original ML object with #find. -*) - -class ['a] memo : unit -> - object - constraint 'a = #widget - val tbl : (int, 'a) Hashtbl.t - method add : 'a -> unit - method find : widget -> 'a - method remove : widget -> unit - end - -(* The ML signal mechanism allows one to add GTK-like signals to - arbitrary objects. -*) - -val next_callback_id : unit -> GtkSignal.id - -class ['a] signal : - unit -> - object - val mutable callbacks : (GtkSignal.id * ('a -> unit)) list - method callbacks : (GtkSignal.id * ('a -> unit)) list - method call : 'a -> unit - method connect : after:bool -> callback:('a -> unit) -> GtkSignal.id - method disconnect : GtkSignal.id -> bool - end -(* As with GTK signals, you can use [GtkSignal.stop_emit] inside a - callback to prevent other callbacks from being called. *) - -class virtual ml_signals : (GtkSignal.id -> bool) list -> - object ('a) - val after : bool - method after : 'a - method disconnect : GtkSignal.id -> unit - val mutable disconnectors : (GtkSignal.id -> bool) list - end -class virtual add_ml_signals : - 'a Gtk.obj -> (GtkSignal.id -> bool) list -> - object - method disconnect : GtkSignal.id -> unit - val mutable disconnectors : (GtkSignal.id -> bool) list - end - -(* To add ML signals to a LablGTK object: - - class mywidget_signals obj ~mysignal1 ~mysignal2 = object - inherit somewidget_signals obj - inherit add_ml_signals obj [mysignal1#disconnect; mysignal2#disconnect] - method mysignal1 = mysignal1#connect ~after - method mysignal2 = mysignal2#connect ~after - end - - class mywidget obj = object (self) - inherit somewidget obj - val mysignal1 = new signal obj - val mysignal2 = new signal obj - method connect = new mywidget_signals obj ~mysignal1 ~mysignal2 - method call1 = mysignal1#call - method call2 = mysignal2#call - end - - You can also add ML signals to an arbitrary object; just inherit - from [ml_signals] in place of [widget_signals]+[add_ml_signals]. - - class mysignals ~mysignal1 ~mysignal2 = object - inherit ml_signals [mysignal1#disconnect; mysignal2#disconnect] - method mysignal1 = mysignal1#connect ~after - method mysignal2 = mysignal2#connect ~after - end -*) - -(* The variable class provides an easy way to propagate state modifications. - A new variable is created by [new variable init]. The [#set] method just - calls the [set] signal, which by default only calls [real_set]. - [real_set] sets the variable and calls [changed] when needed. - Deep equality is used to compare values, but check is only done if - there are callbacks for [changed]. -*) - -class ['a] variable_signals : - set:'a signal -> changed:'a signal -> - object ('b) - val after : bool - method after : 'b - method set : callback:('a -> unit) -> GtkSignal.id - method changed : callback:('a -> unit) -> GtkSignal.id - method disconnect : GtkSignal.id -> unit - val mutable disconnectors : (GtkSignal.id -> bool) list - end - -class ['a] variable : 'a -> - object - val set : 'a signal - val changed : 'a signal - val mutable x : 'a - method connect : 'a variable_signals - method get : 'a - method set : 'a -> unit - method private equal : 'a -> 'a -> bool - method private real_set : 'a -> unit - end diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gWindow.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gWindow.ml deleted file mode 100644 index 9ee313647..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gWindow.ml +++ /dev/null @@ -1,151 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open GtkBase -open GtkWindow -open GtkMisc -open GObj -open GContainer - -class ['a] window_skel obj = object - constraint 'a = _ #window_skel - inherit container obj - method event = new GObj.event_ops obj - method as_window = Window.coerce obj - method activate_focus () = Window.activate_focus obj - method activate_default () = Window.activate_default obj - method add_accel_group = Window.add_accel_group obj - method set_modal = Window.set_modal obj - method set_default_size = Window.set_default_size obj - method set_position = Window.set_position obj - method set_resize_mode = Container.set_resize_mode obj - method set_transient_for (w : 'a) = - Window.set_transient_for obj w#as_window - method set_title = Window.set_title obj - method set_wm_name name = Window.set_wmclass obj ~name - method set_wm_class cls = Window.set_wmclass obj ~clas:cls - method set_allow_shrink allow_shrink = Window.set_policy obj ~allow_shrink - method set_allow_grow allow_grow = Window.set_policy obj ~allow_grow - method set_auto_shrink auto_shrink = Window.set_policy obj ~auto_shrink - method show () = Widget.show obj -end - -class window obj = object - inherit [window] window_skel (Window.coerce obj) - method connect = new container_signals obj -end - -let window ?kind:(t=`TOPLEVEL) ?title ?wm_name ?wm_class ?position - ?allow_shrink ?allow_grow ?auto_shrink ?modal ?x ?y - ?border_width ?width ?height ?(show=false) () = - let w = Window.create t in - Window.set w ?title ?wm_name ?wm_class ?position - ?allow_shrink ?allow_grow ?auto_shrink ?modal ?x ?y; - Container.set w ?border_width ?width ?height; - if show then Widget.show w; - new window w - -class dialog obj = object - inherit [window] window_skel (Dialog.coerce obj) - method connect = new container_signals obj - method action_area = new GPack.box (Dialog.action_area obj) - method vbox = new GPack.box (Dialog.vbox obj) -end - -let dialog ?title ?wm_name ?wm_class ?position ?allow_shrink - ?allow_grow ?auto_shrink ?modal ?x ?y ?border_width ?width ?height - ?(show=false) () = - let w = Dialog.create () in - Window.set w ?title ?wm_name ?wm_class ?position - ?allow_shrink ?allow_grow ?auto_shrink ?modal ?x ?y; - Container.set w ?border_width ?width ?height; - if show then Widget.show w; - new dialog w - -class color_selection_dialog obj = object - inherit [window] window_skel (obj : Gtk.color_selection_dialog obj) - method connect = new container_signals obj - method ok_button = - new GButton.button (ColorSelection.ok_button obj) - method cancel_button = - new GButton.button (ColorSelection.cancel_button obj) - method help_button = - new GButton.button (ColorSelection.help_button obj) - method colorsel = - new GMisc.color_selection (ColorSelection.colorsel obj) -end - -let color_selection_dialog ?(title="Pick a color") - ?wm_name ?wm_class ?position - ?allow_shrink ?allow_grow ?auto_shrink ?modal ?x ?y - ?border_width ?width ?height ?(show=false) () = - let w = ColorSelection.create_dialog title in - Window.set w ?wm_name ?wm_class ?position - ?allow_shrink ?allow_grow ?auto_shrink ?modal ?x ?y; - Container.set w ?border_width ?width ?height; - if show then Widget.show w; - new color_selection_dialog w - -class file_selection obj = object - inherit [window] window_skel (obj : Gtk.file_selection obj) - method connect = new container_signals obj - method set_filename = FileSelection.set_filename obj - method get_filename = FileSelection.get_filename obj - method set_fileop_buttons = FileSelection.set_fileop_buttons obj - method ok_button = new GButton.button (FileSelection.get_ok_button obj) - method cancel_button = - new GButton.button (FileSelection.get_cancel_button obj) - method help_button = new GButton.button (FileSelection.get_help_button obj) -end - -let file_selection ?(title="Choose a file") ?filename - ?(fileop_buttons=false) - ?wm_name ?wm_class ?position - ?allow_shrink ?allow_grow ?auto_shrink ?modal ?x ?y - ?border_width ?width ?height ?(show=false) () = - let w = FileSelection.create title in - FileSelection.set w ?filename ~fileop_buttons; - Window.set w ?wm_name ?wm_class ?position - ?allow_shrink ?allow_grow ?auto_shrink ?modal ?x ?y; - Container.set w ?border_width ?width ?height; - if show then Widget.show w; - new file_selection w - -class font_selection_dialog obj = object - inherit [window] window_skel (obj : Gtk.font_selection_dialog obj) - method connect = new container_signals obj -(* - method font = FontSelectionDialog.get_font obj - method font_name = FontSelectionDialog.get_font_name obj - method set_font_name = FontSelectionDialog.set_font_name obj - method preview_text = FontSelectionDialog.get_preview_text obj - method set_preview_text = FontSelectionDialog.set_preview_text obj - method set_filter = FontSelectionDialog.set_filter obj -*) - method selection = - new GMisc.font_selection (FontSelectionDialog.font_selection obj) - method ok_button = new GButton.button (FontSelectionDialog.ok_button obj) - method apply_button = - new GButton.button (FontSelectionDialog.apply_button obj) - method cancel_button = - new GButton.button (FontSelectionDialog.cancel_button obj) -end - -let font_selection_dialog ?title ?wm_name ?wm_class ?position - ?allow_shrink ?allow_grow ?auto_shrink ?modal ?x ?y - ?border_width ?width ?height ?(show=false) () = - let w = FontSelectionDialog.create ?title () in - Window.set w ?wm_name ?wm_class ?position - ?allow_shrink ?allow_grow ?auto_shrink ?modal ?x ?y; - Container.set w ?border_width ?width ?height; - if show then Widget.show w; - new font_selection_dialog w - -class plug (obj : Gtk.plug obj) = window obj - -let plug ~window:xid ?border_width ?width ?height ?(show=false) () = - let w = Plug.create xid in - Container.set w ?border_width ?width ?height; - if show then Widget.show w; - new plug w diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gWindow.mli b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gWindow.mli deleted file mode 100644 index 4c89a76b6..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gWindow.mli +++ /dev/null @@ -1,156 +0,0 @@ -(* $Id$ *) - -open Gtk -open GObj - -class ['a] window_skel : 'b obj -> - object - inherit GContainer.container - constraint 'a = 'a #window_skel - constraint 'b = [>`widget|`container|`window] - val obj : 'b obj - method activate_default : unit -> unit - method activate_focus : unit -> unit - method add_accel_group : accel_group -> unit - method event : event_ops - method as_window : Gtk.window obj - method set_allow_grow : bool -> unit - method set_allow_shrink : bool -> unit - method set_auto_shrink : bool -> unit - method set_default_size : width:int -> height:int -> unit - method set_modal : bool -> unit - method set_position : Tags.window_position -> unit - method set_resize_mode : Tags.resize_mode -> unit - method set_title : string -> unit - method set_transient_for : 'a -> unit - method set_wm_class : string -> unit - method set_wm_name : string -> unit - method show : unit -> unit - end - -class window : [>`window] obj -> - object - inherit [window] window_skel - val obj : Gtk.window obj - method connect : GContainer.container_signals - end -val window : - ?kind:Tags.window_type -> - ?title:string -> - ?wm_name:string -> - ?wm_class:string -> - ?position:Tags.window_position -> - ?allow_shrink:bool -> - ?allow_grow:bool -> - ?auto_shrink:bool -> - ?modal:bool -> - ?x:int -> - ?y:int -> - ?border_width:int -> - ?width:int -> ?height:int -> ?show:bool -> unit -> window - -class dialog : [>`dialog] obj -> - object - inherit [window] window_skel - val obj : Gtk.dialog obj - method action_area : GPack.box - method connect : GContainer.container_signals - method event : event_ops - method vbox : GPack.box - end -val dialog : - ?title:string -> - ?wm_name:string -> - ?wm_class:string -> - ?position:Tags.window_position -> - ?allow_shrink:bool -> - ?allow_grow:bool -> - ?auto_shrink:bool -> - ?modal:bool -> - ?x:int -> - ?y:int -> - ?border_width:int -> - ?width:int -> ?height:int -> ?show:bool -> unit -> dialog - -class color_selection_dialog : Gtk.color_selection_dialog obj -> - object - inherit [window] window_skel - val obj : Gtk.color_selection_dialog obj - method cancel_button : GButton.button - method colorsel : GMisc.color_selection - method connect : GContainer.container_signals - method help_button : GButton.button - method ok_button : GButton.button - end -val color_selection_dialog : - ?title:string -> - ?wm_name:string -> - ?wm_class:string -> - ?position:Tags.window_position -> - ?allow_shrink:bool -> - ?allow_grow:bool -> - ?auto_shrink:bool -> - ?modal:bool -> - ?x:int -> - ?y:int -> - ?border_width:int -> - ?width:int -> ?height:int -> ?show:bool -> unit -> color_selection_dialog - -class file_selection : Gtk.file_selection obj -> - object - inherit [window] window_skel - val obj : Gtk.file_selection obj - method cancel_button : GButton.button - method connect : GContainer.container_signals - method get_filename : string - method help_button : GButton.button - method ok_button : GButton.button - method set_filename : string -> unit - method set_fileop_buttons : bool -> unit - end -val file_selection : - ?title:string -> - ?filename:string -> - ?fileop_buttons:bool -> - ?wm_name:string -> - ?wm_class:string -> - ?position:Tags.window_position -> - ?allow_shrink:bool -> - ?allow_grow:bool -> - ?auto_shrink:bool -> - ?modal:bool -> - ?x:int -> - ?y:int -> - ?border_width:int -> - ?width:int -> ?height:int -> ?show:bool -> unit -> file_selection - -class font_selection_dialog : Gtk.font_selection_dialog obj -> - object - inherit [window] window_skel - val obj : Gtk.font_selection_dialog obj - method apply_button : GButton.button - method cancel_button : GButton.button - method connect : GContainer.container_signals - method selection : GMisc.font_selection - method ok_button : GButton.button - end -val font_selection_dialog : - ?title:string -> - ?wm_name:string -> - ?wm_class:string -> - ?position:Tags.window_position -> - ?allow_shrink:bool -> - ?allow_grow:bool -> - ?auto_shrink:bool -> - ?modal:bool -> - ?x:int -> - ?y:int -> - ?border_width:int -> - ?width:int -> ?height:int -> ?show:bool -> unit -> font_selection_dialog - -class plug : Gtk.plug obj -> window - -val plug : - window:Gdk.xid -> - ?border_width:int -> - ?width:int -> ?height:int -> ?show:bool -> unit -> plug diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gaux.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gaux.ml deleted file mode 100644 index a1172915b..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gaux.ml +++ /dev/null @@ -1,17 +0,0 @@ -(* $Id$ *) - -(* Option handling *) - -let may ~f x = - match x with None -> () - | Some x -> let _ = f x in () - -let may_map ~f x = - match x with None -> None - | Some x -> Some (f x) - -let default x ~opt = - match opt with None -> x | Some y -> y - -let may_default f x ~opt = - match opt with None -> f x | Some y -> y diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gdk.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gdk.ml deleted file mode 100644 index c22c4b55c..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gdk.ml +++ /dev/null @@ -1,535 +0,0 @@ -(* $Id$ *) - -open Gaux - -type colormap -type visual -type region -type gc -type 'a drawable -type window = [`window] drawable -type pixmap = [`pixmap] drawable -type bitmap = [`bitmap] drawable -type font -type image -type atom = int -type keysym = int -type 'a event -type drag_context -type cursor -type xid = int32 - -exception Error of string -let _ = Callback.register_exception "gdkerror" (Error"") - -module Tags = struct - type event_type = - [ `NOTHING|`DELETE|`DESTROY|`EXPOSE|`MOTION_NOTIFY|`BUTTON_PRESS - |`TWO_BUTTON_PRESS|`THREE_BUTTON_PRESS - |`BUTTON_RELEASE|`KEY_PRESS - |`KEY_RELEASE|`ENTER_NOTIFY|`LEAVE_NOTIFY|`FOCUS_CHANGE - |`CONFIGURE|`MAP|`UNMAP|`PROPERTY_NOTIFY|`SELECTION_CLEAR - |`SELECTION_REQUEST|`SELECTION_NOTIFY|`PROXIMITY_IN - |`PROXIMITY_OUT|`DRAG_ENTER|`DRAG_LEAVE|`DRAG_MOTION|`DRAG_STATUS - |`DROP_START|`DROP_FINISHED|`CLIENT_EVENT|`VISIBILITY_NOTIFY - |`NO_EXPOSE ] - - type event_mask = - [ `EXPOSURE - |`POINTER_MOTION|`POINTER_MOTION_HINT - |`BUTTON_MOTION|`BUTTON1_MOTION|`BUTTON2_MOTION|`BUTTON3_MOTION - |`BUTTON_PRESS|`BUTTON_RELEASE - |`KEY_PRESS|`KEY_RELEASE - |`ENTER_NOTIFY|`LEAVE_NOTIFY|`FOCUS_CHANGE - |`STRUCTURE|`PROPERTY_CHANGE|`VISIBILITY_NOTIFY - |`PROXIMITY_IN|`PROXIMITY_OUT|`SUBSTRUCTURE - |`ALL_EVENTS ] - - type extension_events = - [ `NONE|`ALL|`CURSOR ] - - type visibility_state = - [ `UNOBSCURED|`PARTIAL|`FULLY_OBSCURED ] - - type input_source = - [ `MOUSE|`PEN|`ERASER|`CURSOR ] - - type notify_type = - [ `ANCESTOR|`VIRTUAL|`INFERIOR|`NONLINEAR|`NONLINEAR_VIRTUAL|`UNKNOWN ] - - type crossing_mode = - [ `NORMAL|`GRAB|`UNGRAB ] - - type modifier = - [ `SHIFT|`LOCK|`CONTROL|`MOD1|`MOD2|`MOD3|`MOD4|`MOD5|`BUTTON1 - |`BUTTON2|`BUTTON3|`BUTTON4|`BUTTON5 ] - - type drag_action = - [ `DEFAULT|`COPY|`MOVE|`LINK|`PRIVATE|`ASK ] - -end -open Tags - -module Convert = struct - external test_modifier : modifier -> int -> bool - = "ml_test_GdkModifier_val" - let modifier i = - List.filter [`SHIFT;`LOCK;`CONTROL;`MOD1;`MOD2;`MOD3;`MOD4;`MOD5; - `BUTTON1;`BUTTON2;`BUTTON3;`BUTTON4;`BUTTON5] - ~f:(fun m -> test_modifier m i) -end - -module Screen = struct - external width : unit -> int = "ml_gdk_screen_width" - external height : unit -> int = "ml_gdk_screen_height" -end - -module Visual = struct - type visual_type = - [ `STATIC_GRAY|`GRAYSCALE|`STATIC_COLOR - |`PSEUDO_COLOR|`TRUE_COLOR|`DIRECT_COLOR ] - - external get_best : ?depth:int -> ?kind:visual_type -> unit -> visual - = "ml_gdk_visual_get_best" - external get_type : visual -> visual_type = "ml_GdkVisual_type" - external depth : visual -> int = "ml_GdkVisual_depth" - external red_mask : visual -> int = "ml_GdkVisual_red_mask" - external red_shift : visual -> int = "ml_GdkVisual_red_shift" - external red_prec : visual -> int = "ml_GdkVisual_red_prec" - external green_mask : visual -> int = "ml_GdkVisual_green_mask" - external green_shift : visual -> int = "ml_GdkVisual_green_shift" - external green_prec : visual -> int = "ml_GdkVisual_green_prec" - external blue_mask : visual -> int = "ml_GdkVisual_blue_mask" - external blue_shift : visual -> int = "ml_GdkVisual_blue_shift" - external blue_prec : visual -> int = "ml_GdkVisual_blue_prec" -end - -module Image = struct - type image_type = - [ `NORMAL|`SHARED|`FASTEST ] - - external create_bitmap : visual: visual -> data: string -> - width: int -> height: int -> image - = "ml_gdk_image_new_bitmap" - external create : kind: image_type -> visual: visual -> - width: int -> height: int -> image - = "ml_gdk_image_new" - external get : - 'a drawable -> x: int -> y: int -> width: int -> height: int -> image - = "ml_gdk_image_get" - external put_pixel : image -> x: int -> y: int -> pixel: int -> unit - = "ml_gdk_image_put_pixel" - external get_pixel : image -> x: int -> y: int -> int - = "ml_gdk_image_get_pixel" - external destroy : image -> unit - = "ml_gdk_image_destroy" -end - -module Color = struct - type t - - external color_white : colormap -> t = "ml_gdk_color_white" - external color_black : colormap -> t = "ml_gdk_color_black" - external color_parse : string -> t = "ml_gdk_color_parse" - external color_alloc : colormap -> t -> bool = "ml_gdk_color_alloc" - external color_create : red:int -> green:int -> blue:int -> t - = "ml_GdkColor" - - external get_system_colormap : unit -> colormap - = "ml_gdk_colormap_get_system" - external colormap_new : visual -> privat:bool -> colormap - = "ml_gdk_colormap_new" - let get_colormap ?(privat=false) vis = colormap_new vis ~privat - - type spec = [ `BLACK | `NAME of string | `RGB of int * int * int | `WHITE] - let color_alloc ~colormap color = - if not (color_alloc colormap color) then raise (Error"Color.alloc"); - color - let alloc ~colormap color = - match color with - `WHITE -> color_white colormap - | `BLACK -> color_black colormap - | `NAME s -> color_alloc ~colormap (color_parse s) - | `RGB (red,green,blue) -> - color_alloc ~colormap (color_create ~red ~green ~blue) - - external red : t -> int = "ml_GdkColor_red" - external blue : t -> int = "ml_GdkColor_blue" - external green : t -> int = "ml_GdkColor_green" - external pixel : t -> int = "ml_GdkColor_pixel" -end - -module Rectangle = struct - type t - external create : x:int -> y:int -> width:int -> height:int -> t - = "ml_GdkRectangle" - external x : t -> int = "ml_GdkRectangle_x" - external y : t -> int = "ml_GdkRectangle_y" - external width : t -> int = "ml_GdkRectangle_width" - external height : t -> int = "ml_GdkRectangle_height" -end - -module Window = struct - type background_pixmap = [ `NONE | `PARENT_RELATIVE | `PIXMAP of pixmap] - external visual_depth : visual -> int = "ml_gdk_visual_get_depth" - external get_visual : window -> visual = "ml_gdk_window_get_visual" - external get_parent : window -> window = "ml_gdk_window_get_parent" - external get_size : window -> int * int = "ml_gdk_window_get_size" - external get_position : window -> int * int = - "ml_gdk_window_get_position" - external root_parent : unit -> window = "ml_GDK_ROOT_PARENT" - external set_back_pixmap : window -> pixmap -> int -> unit = - "ml_gdk_window_set_back_pixmap" - external clear : window -> unit = "ml_gdk_window_clear" - external get_xwindow : window -> xid = "ml_GDK_WINDOW_XWINDOW" - - let set_back_pixmap w pix = - let null_pixmap = (Obj.magic Gpointer.boxed_null : pixmap) in - match pix with - `NONE -> set_back_pixmap w null_pixmap 0 - | `PARENT_RELATIVE -> set_back_pixmap w null_pixmap 1 - | `PIXMAP(pixmap) -> set_back_pixmap w pixmap 0 - (* anything OK, Maybe... *) -end - -module PointArray = struct - type t = { len: int} - external create : len:int -> t = "ml_point_array_new" - external set : t -> pos:int -> x:int -> y:int -> unit = "ml_point_array_set" - let set arr ~pos = - if pos < 0 || pos >= arr.len then invalid_arg "PointArray.set"; - set arr ~pos -end - -module Region = struct - type gdkFillRule = [ `EVEN_ODD_RULE|`WINDING_RULE ] - type gdkOverlapType = [ `IN|`OUT|`PART ] - external create : unit -> region = "ml_gdk_region_new" - external destroy : region -> unit = "ml_gdk_region_destroy" - external polygon : PointArray.t -> gdkFillRule -> region - = "ml_gdk_region_polygon" - let polygon l = - let len = List.length l in - let arr = PointArray.create ~len in - List.fold_left l ~init:0 - ~f:(fun pos (x,y) -> PointArray.set arr ~pos ~x ~y; pos+1); - polygon arr - external intersect : region -> region -> region - = "ml_gdk_regions_intersect" - external union : region -> region -> region - = "ml_gdk_regions_union" - external subtract : region -> region -> region - = "ml_gdk_regions_subtract" - external xor : region -> region -> region - = "ml_gdk_regions_xor" - external union_with_rect : region -> Rectangle.t -> region - = "ml_gdk_region_union_with_rect" - external offset : region -> x:int -> y:int -> unit = "ml_gdk_region_offset" - external shrink : region -> x:int -> y:int -> unit = "ml_gdk_region_shrink" - external empty : region -> bool = "ml_gdk_region_empty" - external equal : region -> region -> bool = "ml_gdk_region_equal" - external point_in : region -> x:int -> y:int -> bool - = "ml_gdk_region_point_in" - external rect_in : region -> Rectangle.t -> gdkOverlapType - = "ml_gdk_region_rect_in" - external get_clipbox : region -> Rectangle.t -> unit - = "ml_gdk_region_get_clipbox" -end - - -module GC = struct - type gdkFunction = [ `COPY|`INVERT|`XOR ] - type gdkFill = [ `SOLID|`TILED|`STIPPLED|`OPAQUE_STIPPLED ] - type gdkSubwindowMode = [ `CLIP_BY_CHILDREN|`INCLUDE_INFERIORS ] - type gdkLineStyle = [ `SOLID|`ON_OFF_DASH|`DOUBLE_DASH ] - type gdkCapStyle = [ `NOT_LAST|`BUTT|`ROUND|`PROJECTING ] - type gdkJoinStyle = [ `MITER|`ROUND|`BEVEL ] - external create : 'a drawable -> gc = "ml_gdk_gc_new" - external set_foreground : gc -> Color.t -> unit = "ml_gdk_gc_set_foreground" - external set_background : gc -> Color.t -> unit = "ml_gdk_gc_set_background" - external set_font : gc -> font -> unit = "ml_gdk_gc_set_font" - external set_function : gc -> gdkFunction -> unit = "ml_gdk_gc_set_function" - external set_fill : gc -> gdkFill -> unit = "ml_gdk_gc_set_fill" - external set_tile : gc -> pixmap -> unit = "ml_gdk_gc_set_tile" - external set_stipple : gc -> pixmap -> unit = "ml_gdk_gc_set_stipple" - external set_ts_origin : gc -> x:int -> y:int -> unit - = "ml_gdk_gc_set_ts_origin" - external set_clip_origin : gc -> x:int -> y:int -> unit - = "ml_gdk_gc_set_clip_origin" - external set_clip_mask : gc -> bitmap -> unit = "ml_gdk_gc_set_clip_mask" - external set_clip_rectangle : gc -> Rectangle.t -> unit - = "ml_gdk_gc_set_clip_rectangle" - external set_clip_region : gc -> region -> unit = "ml_gdk_gc_set_clip_region" - external set_subwindow : gc -> gdkSubwindowMode -> unit - = "ml_gdk_gc_set_subwindow" - external set_exposures : gc -> bool -> unit = "ml_gdk_gc_set_exposures" - external set_line_attributes : - gc -> width:int -> style:gdkLineStyle -> cap:gdkCapStyle -> - join:gdkJoinStyle -> unit - = "ml_gdk_gc_set_line_attributes" - external copy : dst:gc -> gc -> unit = "ml_gdk_gc_copy" - type values = { - foreground : Color.t; - background : Color.t; - font : font option; - fonction : gdkFunction; - fill : gdkFill; - tile : pixmap option; - stipple : pixmap option; - clip_mask : bitmap option; - subwindow_mode : gdkSubwindowMode; - ts_x_origin : int; - ts_y_origin : int; - clip_x_origin : int; - clip_y_origin : int; - graphics_exposures : bool; - line_width : int; - line_style : gdkLineStyle; - cap_style : gdkCapStyle; - join_style : gdkJoinStyle; - } - external get_values : gc -> values = "ml_gdk_gc_get_values" -end - -module Pixmap = struct - external create : window -> width:int -> height:int -> depth:int -> pixmap - = "ml_gdk_pixmap_new" - external create_from_data : - window -> string -> width:int -> height:int -> depth:int -> - fg:Color.t -> bg:Color.t -> pixmap - = "ml_gdk_pixmap_create_from_data_bc" "ml_gk_pixmap_create_from_data" - external create_from_xpm : - window -> ?colormap:colormap -> ?transparent:Color.t -> - file:string -> pixmap * bitmap - = "ml_gdk_pixmap_colormap_create_from_xpm" - external create_from_xpm_d : - window -> ?colormap:colormap -> ?transparent:Color.t -> - data:string array -> pixmap * bitmap - = "ml_gdk_pixmap_colormap_create_from_xpm_d" -end - -module Bitmap = struct - let create : window -> width:int -> height:int -> bitmap = - Obj.magic (Pixmap.create ~depth:1) - external create_from_data : - window -> string -> width:int -> height:int -> bitmap - = "ml_gdk_bitmap_create_from_data" -end - -module Font = struct - external load : string -> font = "ml_gdk_font_load" - external load_fontset : string -> font = "ml_gdk_fontset_load" - external string_width : font -> string -> int = "ml_gdk_string_width" - external char_width : font -> char -> int = "ml_gdk_char_width" - external string_height : font -> string -> int = "ml_gdk_string_height" - external char_height : font -> char -> int = "ml_gdk_char_height" - external string_measure : font -> string -> int = "ml_gdk_string_measure" - external char_measure : font -> char -> int = "ml_gdk_char_measure" - external get_type : font -> [`FONT | `FONTSET] = "ml_GdkFont_type" - external ascent : font -> int = "ml_GdkFont_ascent" - external descent : font -> int = "ml_GdkFont_descent" -end - -module Draw = struct - external point : 'a drawable -> gc -> x:int -> y:int -> unit - = "ml_gdk_draw_point" - external line : 'a drawable -> gc -> x:int -> y:int -> x:int -> y:int -> unit - = "ml_gdk_draw_line_bc" "ml_gdk_draw_line" - external rectangle : - 'a drawable -> gc -> - filled:bool -> x:int -> y:int -> width:int -> height:int -> unit - = "ml_gdk_draw_rectangle_bc" "ml_gdk_draw_rectangle" - let rectangle w gc ~x ~y ~width ~height ?(filled=false) () = - rectangle w gc ~x ~y ~width ~height ~filled - external arc : - 'a drawable -> gc -> filled:bool -> x:int -> y:int -> - width:int -> height:int -> start:int -> angle:int -> unit - = "ml_gdk_draw_arc_bc" "ml_gdk_draw_arc" - let arc w gc ~x ~y ~width ~height ?(filled=false) ?(start=0.) - ?(angle=360.) () = - arc w gc ~x ~y ~width ~height ~filled - ~start:(truncate(start *. 64.)) - ~angle:(truncate(angle *. 64.)) - external polygon : 'a drawable -> gc -> filled:bool -> PointArray.t -> unit - = "ml_gdk_draw_polygon" - let polygon w gc ?(filled=false) l = - let len = List.length l in - let arr = PointArray.create ~len in - List.fold_left l ~init:0 - ~f:(fun pos (x,y) -> PointArray.set arr ~pos ~x ~y; pos+1); - polygon w gc ~filled arr - external string : 'a drawable -> font: font -> gc -> x: int -> y: int -> - string: string -> unit - = "ml_gdk_draw_string_bc" "ml_gdk_draw_string" - external image : 'a drawable -> gc -> image: image -> - xsrc: int -> ysrc: int -> xdest: int -> ydest: int -> - width: int -> height: int -> unit - = "ml_gdk_draw_image_bc" "ml_gdk_draw_image" -end - -module Rgb = struct - external init : unit -> unit = "ml_gdk_rgb_init" - external get_visual : unit -> visual = "ml_gdk_rgb_get_visual" - external get_cmap : unit -> colormap = "ml_gdk_rgb_get_cmap" -end - -module DnD = struct - external drag_status : drag_context -> drag_action list -> time:int -> unit - = "ml_gdk_drag_status" - external drag_context_suggested_action : drag_context -> drag_action - = "ml_GdkDragContext_suggested_action" - external drag_context_targets : drag_context -> atom list - = "ml_GdkDragContext_targets" -end - -module Truecolor = struct - (* Truecolor quick color query *) - - type visual_shift_prec = { - red_shift : int; - red_prec : int; - green_shift : int; - green_prec : int; - blue_shift : int; - blue_prec : int - } - - let shift_prec visual = { - red_shift = Visual.red_shift visual; - red_prec = Visual.red_prec visual; - green_shift = Visual.green_shift visual; - green_prec = Visual.green_prec visual; - blue_shift = Visual.blue_shift visual; - blue_prec = Visual.blue_prec visual; - } - - let color_creator visual = - match Visual.get_type visual with - `TRUE_COLOR | `DIRECT_COLOR -> - let shift_prec = shift_prec visual in - Format.eprintf "red : %d %d, " - shift_prec.red_shift shift_prec.red_prec; - Format.eprintf "green : %d %d, " - shift_prec.green_shift shift_prec.green_prec; - Format.eprintf "blue : %d %d" - shift_prec.blue_shift shift_prec.blue_prec; - Format.pp_print_newline Format.err_formatter (); - let red_lsr = 16 - shift_prec.red_prec - and green_lsr = 16 - shift_prec.green_prec - and blue_lsr = 16 - shift_prec.blue_prec in - fun ~red: red ~green: green ~blue: blue -> - (((red lsr red_lsr) lsl shift_prec.red_shift) lor - ((green lsr green_lsr) lsl shift_prec.green_shift) lor - ((blue lsr blue_lsr) lsl shift_prec.blue_shift)) - | _ -> raise (Invalid_argument "Gdk.Truecolor.color_creator") - - let color_parser visual = - match Visual.get_type visual with - `TRUE_COLOR | `DIRECT_COLOR -> - let shift_prec = shift_prec visual in - let red_lsr = 16 - shift_prec.red_prec - and green_lsr = 16 - shift_prec.green_prec - and blue_lsr = 16 - shift_prec.blue_prec in - let mask = 1 lsl 16 - 1 in - fun pixel -> - ((pixel lsr shift_prec.red_shift) lsl red_lsr) land mask, - ((pixel lsr shift_prec.green_shift) lsl green_lsr) land mask, - ((pixel lsr shift_prec.blue_shift) lsl blue_lsr) land mask - | _ -> raise (Invalid_argument "Gdk.Truecolor.color_parser") -end - -module X = struct - (* X related functions *) - external flush : unit -> unit - = "ml_gdk_flush" - external beep : unit -> unit - = "ml_gdk_beep" -end - -module Cursor = struct - type cursor_type = [ - | `X_CURSOR - | `ARROW - | `BASED_ARROW_DOWN - | `BASED_ARROW_UP - | `BOAT - | `BOGOSITY - | `BOTTOM_LEFT_CORNER - | `BOTTOM_RIGHT_CORNER - | `BOTTOM_SIDE - | `BOTTOM_TEE - | `BOX_SPIRAL - | `CENTER_PTR - | `CIRCLE - | `CLOCK - | `COFFEE_MUG - | `CROSS - | `CROSS_REVERSE - | `CROSSHAIR - | `DIAMOND_CROSS - | `DOT - | `DOTBOX - | `DOUBLE_ARROW - | `DRAFT_LARGE - | `DRAFT_SMALL - | `DRAPED_BOX - | `EXCHANGE - | `FLEUR - | `GOBBLER - | `GUMBY - | `HAND1 - | `HAND2 - | `HEART - | `ICON - | `IRON_CROSS - | `LEFT_PTR - | `LEFT_SIDE - | `LEFT_TEE - | `LEFTBUTTON - | `LL_ANGLE - | `LR_ANGLE - | `MAN - | `MIDDLEBUTTON - | `MOUSE - | `PENCIL - | `PIRATE - | `PLUS - | `QUESTION_ARROW - | `RIGHT_PTR - | `RIGHT_SIDE - | `RIGHT_TEE - | `RIGHTBUTTON - | `RTL_LOGO - | `SAILBOAT - | `SB_DOWN_ARROW - | `SB_H_DOUBLE_ARROW - | `SB_LEFT_ARROW - | `SB_RIGHT_ARROW - | `SB_UP_ARROW - | `SB_V_DOUBLE_ARROW - | `SHUTTLE - | `SIZING - | `SPIDER - | `SPRAYCAN - | `STAR - | `TARGET - | `TCROSS - | `TOP_LEFT_ARROW - | `TOP_LEFT_CORNER - | `TOP_RIGHT_CORNER - | `TOP_SIDE - | `TOP_TEE - | `TREK - | `UL_ANGLE - | `UMBRELLA - | `UR_ANGLE - | `WATCH - | `XTERM - ] - external create : cursor_type -> cursor = "ml_gdk_cursor_new" - external create_from_pixmap : - pixmap -> mask:bitmap -> - fg:Color.t -> bg:Color.t -> x:int -> y:int -> cursor - = "ml_gdk_cursor_new_from_pixmap_bc" "ml_gdk_cursor_new_from_pixmap" - external destroy : cursor -> unit = "ml_gdk_cursor_destroy" -end diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gdk.mli b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gdk.mli deleted file mode 100644 index 2914b60ce..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gdk.mli +++ /dev/null @@ -1,447 +0,0 @@ -(* $Id$ *) - -type colormap -type visual -type region -type gc -type 'a drawable -type window = [`window] drawable -type pixmap = [`pixmap] drawable -type bitmap = [`bitmap] drawable -type font -type image -type atom = int -type keysym = int -type 'a event -type drag_context -type cursor -type xid = int32 - -exception Error of string - -module Tags : sig - type event_type = - [ `NOTHING|`DELETE|`DESTROY|`EXPOSE|`MOTION_NOTIFY|`BUTTON_PRESS - |`TWO_BUTTON_PRESS|`THREE_BUTTON_PRESS - |`BUTTON_RELEASE|`KEY_PRESS - |`KEY_RELEASE|`ENTER_NOTIFY|`LEAVE_NOTIFY|`FOCUS_CHANGE - |`CONFIGURE|`MAP|`UNMAP|`PROPERTY_NOTIFY|`SELECTION_CLEAR - |`SELECTION_REQUEST|`SELECTION_NOTIFY|`PROXIMITY_IN - |`PROXIMITY_OUT|`DRAG_ENTER|`DRAG_LEAVE|`DRAG_MOTION|`DRAG_STATUS - |`DROP_START|`DROP_FINISHED|`CLIENT_EVENT|`VISIBILITY_NOTIFY - |`NO_EXPOSE ] - type event_mask = - [ `EXPOSURE - |`POINTER_MOTION|`POINTER_MOTION_HINT - |`BUTTON_MOTION|`BUTTON1_MOTION|`BUTTON2_MOTION|`BUTTON3_MOTION - |`BUTTON_PRESS|`BUTTON_RELEASE - |`KEY_PRESS|`KEY_RELEASE - |`ENTER_NOTIFY|`LEAVE_NOTIFY|`FOCUS_CHANGE - |`STRUCTURE|`PROPERTY_CHANGE|`VISIBILITY_NOTIFY - |`PROXIMITY_IN|`PROXIMITY_OUT|`SUBSTRUCTURE - |`ALL_EVENTS ] - type extension_events = [ `NONE|`ALL|`CURSOR ] - type visibility_state = [ `UNOBSCURED|`PARTIAL|`FULLY_OBSCURED ] - type input_source = [ `MOUSE|`PEN|`ERASER|`CURSOR ] - type notify_type = - [ `ANCESTOR|`VIRTUAL|`INFERIOR|`NONLINEAR|`NONLINEAR_VIRTUAL|`UNKNOWN ] - type crossing_mode = [ `NORMAL|`GRAB|`UNGRAB ] - type modifier = - [ `SHIFT|`LOCK|`CONTROL|`MOD1|`MOD2|`MOD3|`MOD4|`MOD5|`BUTTON1 - |`BUTTON2|`BUTTON3|`BUTTON4|`BUTTON5 ] - type drag_action = [ `DEFAULT|`COPY|`MOVE|`LINK|`PRIVATE|`ASK ] -end - -module Convert : - sig - val modifier : int -> Tags.modifier list - end - -module Screen : - sig - external width : unit -> int = "ml_gdk_screen_width" - external height : unit -> int = "ml_gdk_screen_height" - end - -module Visual : - sig - type visual_type = - [ `STATIC_GRAY|`GRAYSCALE|`STATIC_COLOR - |`PSEUDO_COLOR|`TRUE_COLOR|`DIRECT_COLOR ] - external get_best : ?depth:int -> ?kind:visual_type -> unit -> visual - = "ml_gdk_visual_get_best" - external get_type : visual -> visual_type = "ml_GdkVisual_type" - external depth : visual -> int = "ml_GdkVisual_depth" - external red_mask : visual -> int = "ml_GdkVisual_red_mask" - external red_shift : visual -> int = "ml_GdkVisual_red_shift" - external red_prec : visual -> int = "ml_GdkVisual_red_prec" - external green_mask : visual -> int = "ml_GdkVisual_green_mask" - external green_shift : visual -> int = "ml_GdkVisual_green_shift" - external green_prec : visual -> int = "ml_GdkVisual_green_prec" - external blue_mask : visual -> int = "ml_GdkVisual_blue_mask" - external blue_shift : visual -> int = "ml_GdkVisual_blue_shift" - external blue_prec : visual -> int = "ml_GdkVisual_blue_prec" - end - -module Image : - sig - type image_type = [ `FASTEST|`NORMAL|`SHARED ] - external create_bitmap : - visual:visual -> data:string -> width:int -> height:int -> image - = "ml_gdk_image_new_bitmap" - external create : - kind:image_type -> - visual:visual -> width:int -> height:int -> image = "ml_gdk_image_new" - external get : - 'a drawable -> x:int -> y:int -> width:int -> height:int -> image - = "ml_gdk_image_get" - external put_pixel : image -> x:int -> y:int -> pixel:int -> unit - = "ml_gdk_image_put_pixel" - external get_pixel : image -> x:int -> y:int -> int - = "ml_gdk_image_get_pixel" - external destroy : image -> unit = "ml_gdk_image_destroy" - end - -module Color : - sig - external get_system_colormap : unit -> colormap - = "ml_gdk_colormap_get_system" - val get_colormap : ?privat:bool -> visual -> colormap - - type t - type spec = [ - | `BLACK - | `NAME of string - | `RGB of int * int * int - | `WHITE - ] - val alloc : colormap:colormap -> spec -> t - external red : t -> int = "ml_GdkColor_red" - external blue : t -> int = "ml_GdkColor_blue" - external green : t -> int = "ml_GdkColor_green" - external pixel : t -> int = "ml_GdkColor_pixel" - end - -module Rectangle : - sig - type t - external create : x:int -> y:int -> width:int -> height:int -> t - = "ml_GdkRectangle" - external x : t -> int = "ml_GdkRectangle_x" - external y : t -> int = "ml_GdkRectangle_y" - external width : t -> int = "ml_GdkRectangle_width" - external height : t -> int = "ml_GdkRectangle_height" - end - -module Window : - sig - type background_pixmap = [ `NONE|`PARENT_RELATIVE|`PIXMAP of pixmap ] - external visual_depth : visual -> int = "ml_gdk_visual_get_depth" - external get_visual : window -> visual = "ml_gdk_window_get_visual" - external get_parent : window -> window = "ml_gdk_window_get_parent" - external get_size : window -> int * int = "ml_gdk_window_get_size" - external get_position : window -> int * int - = "ml_gdk_window_get_position" - external root_parent : unit -> window = "ml_GDK_ROOT_PARENT" - external clear : window -> unit = "ml_gdk_window_clear" - external get_xwindow : window -> xid = "ml_GDK_WINDOW_XWINDOW" - val set_back_pixmap : window -> background_pixmap -> unit - end - -module PointArray : - sig - type t = { len: int } - external create : len:int -> t = "ml_point_array_new" - val set : t -> pos:int -> x:int -> y:int -> unit - end - -module Region : - sig - type gdkFillRule = [ `EVEN_ODD_RULE|`WINDING_RULE ] - type gdkOverlapType = [ `IN|`OUT|`PART ] - external create : unit -> region = "ml_gdk_region_new" - external destroy : region -> unit = "ml_gdk_region_destroy" - val polygon : (int * int) list -> gdkFillRule -> region - external intersect : region -> region -> region - = "ml_gdk_regions_intersect" - external union : region -> region -> region - = "ml_gdk_regions_union" - external subtract : region -> region -> region - = "ml_gdk_regions_subtract" - external xor : region -> region -> region - = "ml_gdk_regions_xor" - external union_with_rect : region -> Rectangle.t -> region - = "ml_gdk_region_union_with_rect" - external offset : region -> x:int -> y:int -> unit = "ml_gdk_region_offset" - external shrink : region -> x:int -> y:int -> unit = "ml_gdk_region_shrink" - external empty : region -> bool = "ml_gdk_region_empty" - external equal : region -> region -> bool = "ml_gdk_region_equal" - external point_in : region -> x:int -> y:int -> bool - = "ml_gdk_region_point_in" - external rect_in : region -> Rectangle.t -> gdkOverlapType - = "ml_gdk_region_rect_in" - external get_clipbox : region -> Rectangle.t -> unit - = "ml_gdk_region_get_clipbox" - end - -module GC : - sig - type gdkFunction = [ `COPY|`INVERT|`XOR ] - type gdkFill = [ `SOLID|`TILED|`STIPPLED|`OPAQUE_STIPPLED ] - type gdkSubwindowMode = [ `CLIP_BY_CHILDREN|`INCLUDE_INFERIORS ] - type gdkLineStyle = [ `SOLID|`ON_OFF_DASH|`DOUBLE_DASH ] - type gdkCapStyle = [ `NOT_LAST|`BUTT|`ROUND|`PROJECTING ] - type gdkJoinStyle = [ `MITER|`ROUND|`BEVEL ] - external create : 'a drawable -> gc = "ml_gdk_gc_new" - external set_foreground : gc -> Color.t -> unit - = "ml_gdk_gc_set_foreground" - external set_background : gc -> Color.t -> unit - = "ml_gdk_gc_set_background" - external set_font : gc -> font -> unit = "ml_gdk_gc_set_font" - external set_function : gc -> gdkFunction -> unit - = "ml_gdk_gc_set_function" - external set_fill : gc -> gdkFill -> unit = "ml_gdk_gc_set_fill" - external set_tile : gc -> pixmap -> unit = "ml_gdk_gc_set_tile" - external set_stipple : gc -> pixmap -> unit = "ml_gdk_gc_set_stipple" - external set_ts_origin : gc -> x:int -> y:int -> unit - = "ml_gdk_gc_set_ts_origin" - external set_clip_origin : gc -> x:int -> y:int -> unit - = "ml_gdk_gc_set_clip_origin" - external set_clip_mask : gc -> bitmap -> unit = "ml_gdk_gc_set_clip_mask" - external set_clip_rectangle : gc -> Rectangle.t -> unit - = "ml_gdk_gc_set_clip_rectangle" - external set_clip_region : gc -> region -> unit - = "ml_gdk_gc_set_clip_region" - external set_subwindow : gc -> gdkSubwindowMode -> unit - = "ml_gdk_gc_set_subwindow" - external set_exposures : gc -> bool -> unit = "ml_gdk_gc_set_exposures" - external set_line_attributes : - gc -> - width:int -> - style:gdkLineStyle -> cap:gdkCapStyle -> join:gdkJoinStyle -> unit - = "ml_gdk_gc_set_line_attributes" - external copy : dst:gc -> gc -> unit = "ml_gdk_gc_copy" - type values = { - foreground : Color.t; - background : Color.t; - font : font option; - fonction : gdkFunction; - fill : gdkFill; - tile : pixmap option; - stipple : pixmap option; - clip_mask : bitmap option; - subwindow_mode : gdkSubwindowMode; - ts_x_origin : int; - ts_y_origin : int; - clip_x_origin : int; - clip_y_origin : int; - graphics_exposures : bool; - line_width : int; - line_style : gdkLineStyle; - cap_style : gdkCapStyle; - join_style : gdkJoinStyle; - } - external get_values : gc -> values = "ml_gdk_gc_get_values" - end - -module Pixmap : - sig - external create : - window -> width:int -> height:int -> depth:int -> pixmap - = "ml_gdk_pixmap_new" - external create_from_data : - window -> - string -> - width:int -> - height:int -> depth:int -> fg:Color.t -> bg:Color.t -> pixmap - = "ml_gdk_pixmap_create_from_data_bc" "ml_gk_pixmap_create_from_data" - external create_from_xpm : - window -> - ?colormap:colormap -> - ?transparent:Color.t -> file:string -> pixmap * bitmap - = "ml_gdk_pixmap_colormap_create_from_xpm" - external create_from_xpm_d : - window -> - ?colormap:colormap -> - ?transparent:Color.t -> data:string array -> pixmap * bitmap - = "ml_gdk_pixmap_colormap_create_from_xpm_d" - end - -module Bitmap : - sig - val create : window -> width:int -> height:int -> bitmap - external create_from_data : - window -> string -> width:int -> height:int -> bitmap - = "ml_gdk_bitmap_create_from_data" - end - -module Font : - sig - external load : string -> font = "ml_gdk_font_load" - external load_fontset : string -> font = "ml_gdk_fontset_load" - external string_width : font -> string -> int = "ml_gdk_string_width" - external char_width : font -> char -> int = "ml_gdk_char_width" - external string_height : font -> string -> int = "ml_gdk_string_height" - external char_height : font -> char -> int = "ml_gdk_char_height" - external string_measure : font -> string -> int = "ml_gdk_string_measure" - external char_measure : font -> char -> int = "ml_gdk_char_measure" - external get_type : font -> [`FONT | `FONTSET] = "ml_GdkFont_type" - external ascent : font -> int = "ml_GdkFont_ascent" - external descent : font -> int = "ml_GdkFont_descent" - end - -module Draw : - sig - external point : 'a drawable -> gc -> x:int -> y:int -> unit - = "ml_gdk_draw_point" - external line : - 'a drawable -> gc -> x:int -> y:int -> x:int -> y:int -> unit - = "ml_gdk_draw_line_bc" "ml_gdk_draw_line" - val rectangle : - 'a drawable -> gc -> - x:int -> y:int -> width:int -> height:int -> ?filled:bool -> unit -> unit - val arc : - 'a drawable -> gc -> - x:int -> y:int -> width:int -> height:int -> - ?filled:bool -> ?start:float -> ?angle:float -> unit -> unit - val polygon : - 'a drawable -> gc -> ?filled:bool ->(int * int) list -> unit - external string : - 'a drawable -> - font:font -> gc -> x:int -> y:int -> string:string -> unit - = "ml_gdk_draw_string_bc" "ml_gdk_draw_string" - external image : - 'a drawable -> - gc -> - image:image -> - xsrc:int -> - ysrc:int -> xdest:int -> ydest:int -> width:int -> height:int -> unit - = "ml_gdk_draw_image_bc" "ml_gdk_draw_image" - end - -module Rgb : - sig - external init : unit -> unit = "ml_gdk_rgb_init" - external get_visual : unit -> visual = "ml_gdk_rgb_get_visual" - external get_cmap : unit -> colormap = "ml_gdk_rgb_get_cmap" - end - -module DnD : - sig - external drag_status : - drag_context -> Tags.drag_action list -> time:int -> unit - = "ml_gdk_drag_status" - external drag_context_suggested_action : drag_context -> Tags.drag_action - = "ml_GdkDragContext_suggested_action" - external drag_context_targets : drag_context -> atom list - = "ml_GdkDragContext_targets" - end - -module Truecolor : - sig - val color_creator : visual -> (red: int -> green: int -> blue: int -> int) - (* [color_creator visual] creates a function to calculate - the pixel color id for given red, green and blue component - value ([0..65535]) at the client side. [visual] must have - `TRUE_COLOR or `DIRECT_COLOR type. This function improves - the speed of the color query of true color visual greatly. *) - (* WARN: this approach is not theoretically correct for true color - visual, because we need gamma correction. *) - - val color_parser : visual -> int -> int * int * int - end - -module X : - (* X related functions *) - sig - val flush : unit -> unit (* also in GtkMain *) - val beep : unit -> unit - end - -module Cursor : sig - type cursor_type = [ - | `X_CURSOR - | `ARROW - | `BASED_ARROW_DOWN - | `BASED_ARROW_UP - | `BOAT - | `BOGOSITY - | `BOTTOM_LEFT_CORNER - | `BOTTOM_RIGHT_CORNER - | `BOTTOM_SIDE - | `BOTTOM_TEE - | `BOX_SPIRAL - | `CENTER_PTR - | `CIRCLE - | `CLOCK - | `COFFEE_MUG - | `CROSS - | `CROSS_REVERSE - | `CROSSHAIR - | `DIAMOND_CROSS - | `DOT - | `DOTBOX - | `DOUBLE_ARROW - | `DRAFT_LARGE - | `DRAFT_SMALL - | `DRAPED_BOX - | `EXCHANGE - | `FLEUR - | `GOBBLER - | `GUMBY - | `HAND1 - | `HAND2 - | `HEART - | `ICON - | `IRON_CROSS - | `LEFT_PTR - | `LEFT_SIDE - | `LEFT_TEE - | `LEFTBUTTON - | `LL_ANGLE - | `LR_ANGLE - | `MAN - | `MIDDLEBUTTON - | `MOUSE - | `PENCIL - | `PIRATE - | `PLUS - | `QUESTION_ARROW - | `RIGHT_PTR - | `RIGHT_SIDE - | `RIGHT_TEE - | `RIGHTBUTTON - | `RTL_LOGO - | `SAILBOAT - | `SB_DOWN_ARROW - | `SB_H_DOUBLE_ARROW - | `SB_LEFT_ARROW - | `SB_RIGHT_ARROW - | `SB_UP_ARROW - | `SB_V_DOUBLE_ARROW - | `SHUTTLE - | `SIZING - | `SPIDER - | `SPRAYCAN - | `STAR - | `TARGET - | `TCROSS - | `TOP_LEFT_ARROW - | `TOP_LEFT_CORNER - | `TOP_RIGHT_CORNER - | `TOP_SIDE - | `TOP_TEE - | `TREK - | `UL_ANGLE - | `UMBRELLA - | `UR_ANGLE - | `WATCH - | `XTERM - ] - external create : cursor_type -> cursor = "ml_gdk_cursor_new" - external create_from_pixmap : - pixmap -> mask:bitmap -> - fg:Color.t -> bg:Color.t -> x:int -> y:int -> cursor - = "ml_gdk_cursor_new_from_pixmap_bc" "ml_gdk_cursor_new_from_pixmap" - external destroy : cursor -> unit = "ml_gdk_cursor_destroy" -end diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gdkEvent.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gdkEvent.ml deleted file mode 100644 index 87c0e888f..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gdkEvent.ml +++ /dev/null @@ -1,159 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gdk -open Tags - -external coerce : 'a event -> event_type event = "%identity" -external unsafe_copy : Gpointer.boxed -> #event_type event - = "ml_gdk_event_copy" -external copy : (#event_type as 'a) event -> 'a event - = "ml_gdk_event_copy" -external get_type : 'a event -> 'a = "ml_GdkEventAny_type" -external get_window : 'a event -> window = "ml_GdkEventAny_window" -external get_send_event : 'a event -> bool = "ml_GdkEventAny_send_event" - -external create : (#event_type as 'a) -> 'a event - = "ml_gdk_event_new" -external set_window : 'a event -> window -> unit - = "ml_gdk_event_set_window" - -module Expose = struct - type t = [ `EXPOSE ] event - let cast (ev : event_type event) : t = - match get_type ev with `EXPOSE -> Obj.magic ev - | _ -> invalid_arg "GdkEvent.Expose.cast" - external area : t -> Rectangle.t = "ml_GdkEventExpose_area" - external count : t -> int = "ml_GdkEventExpose_count" -end - -module Visibility = struct - type t = [ `VISIBILITY_NOTIFY ] event - let cast (ev : event_type event) : t = - match get_type ev with `VISIBILITY_NOTIFY -> Obj.magic ev - | _ -> invalid_arg "GdkEvent.Visibility.cast" - external visibility : t -> visibility_state - = "ml_GdkEventVisibility_state" -end - -module Motion = struct - type t = [ `MOTION_NOTIFY ] event - let cast (ev : event_type event) : t = - match get_type ev with `MOTION_NOTIFY -> Obj.magic ev - | _ -> invalid_arg "GdkEvent.Motion.cast" - external time : t -> int = "ml_GdkEventMotion_time" - external x : t -> float = "ml_GdkEventMotion_x" - external y : t -> float = "ml_GdkEventMotion_y" - external pressure : t -> float = "ml_GdkEventMotion_pressure" - external xtilt : t -> float = "ml_GdkEventMotion_xtilt" - external ytilt : t -> float = "ml_GdkEventMotion_ytilt" - external state : t -> int = "ml_GdkEventMotion_state" - external is_hint : t -> bool = "ml_GdkEventMotion_is_hint" - external source : t -> input_source = "ml_GdkEventMotion_source" - external deviceid : t -> int = "ml_GdkEventMotion_deviceid" - external x_root : t -> float = "ml_GdkEventMotion_x_root" - external y_root : t -> float = "ml_GdkEventMotion_y_root" -end - -module Button = struct - type types = - [ `BUTTON_PRESS|`TWO_BUTTON_PRESS|`THREE_BUTTON_PRESS|`BUTTON_RELEASE ] - type t = types event - let cast (ev : event_type event) : t = - match get_type ev with - `BUTTON_PRESS|`TWO_BUTTON_PRESS|`THREE_BUTTON_PRESS|`BUTTON_RELEASE - -> Obj.magic ev - | _ -> invalid_arg "GdkEvent.Button.cast" - external time : t -> int = "ml_GdkEventButton_time" - external x : t -> float = "ml_GdkEventButton_x" - external y : t -> float = "ml_GdkEventButton_y" - external pressure : t -> float = "ml_GdkEventButton_pressure" - external xtilt : t -> float = "ml_GdkEventButton_xtilt" - external ytilt : t -> float = "ml_GdkEventButton_ytilt" - external state : t -> int = "ml_GdkEventButton_state" - external button : t -> int = "ml_GdkEventButton_button" - external source : t -> input_source = "ml_GdkEventButton_source" - external deviceid : t -> int = "ml_GdkEventButton_deviceid" - external x_root : t -> float = "ml_GdkEventButton_x_root" - external y_root : t -> float = "ml_GdkEventButton_y_root" - external set_type : t -> #types -> unit - = "ml_gdk_event_set_type" - external set_button : t -> int -> unit - = "ml_gdk_event_button_set_button" -end - -module Key = struct - type t = [ `KEY_PRESS|`KEY_RELEASE ] event - let cast (ev : event_type event) : t = - match get_type ev with - `KEY_PRESS|`KEY_RELEASE -> Obj.magic ev - | _ -> invalid_arg "GdkEvent.Key.cast" - external time : t -> int = "ml_GdkEventKey_time" - external state : t -> int = "ml_GdkEventKey_state" - external keyval : t -> keysym = "ml_GdkEventKey_keyval" - external string : t -> string = "ml_GdkEventKey_string" - let state ev = Convert.modifier (state ev) -end - -module Crossing = struct - type t = [ `ENTER_NOTIFY|`LEAVE_NOTIFY ] event - let cast (ev : event_type event) : t = - match get_type ev with - `ENTER_NOTIFY|`LEAVE_NOTIFY -> Obj.magic ev - | _ -> invalid_arg "GdkEvent.Crossing.cast" - external subwindow : t -> window = "ml_GdkEventCrossing_subwindow" - external detail : t -> notify_type = "ml_GdkEventCrossing_detail" -end - -module Focus = struct - type t = [ `FOCUS_CHANGE ] event - let cast (ev : event_type event) : t = - match get_type ev with `FOCUS_CHANGE -> Obj.magic ev - | _ -> invalid_arg "GdkEvent.Focus.cast" - external focus_in : t -> bool = "ml_GdkEventFocus_in" -end - -module Configure = struct - type t = [ `CONFIGURE ] event - let cast (ev : event_type event) : t = - match get_type ev with `CONFIGURE -> Obj.magic ev - | _ -> invalid_arg "GdkEvent.Configure.cast" - external x : t -> int = "ml_GdkEventConfigure_x" - external y : t -> int = "ml_GdkEventConfigure_y" - external width : t -> int = "ml_GdkEventConfigure_width" - external height : t -> int = "ml_GdkEventConfigure_height" -end - -module Property = struct - type t = [ `PROPERTY_NOTIFY ] event - let cast (ev : event_type event) : t = - match get_type ev with `PROPERTY_NOTIFY -> Obj.magic ev - | _ -> invalid_arg "GdkEvent.Property.cast" - external atom : t -> atom = "ml_GdkEventProperty_atom" - external time : t -> int = "ml_GdkEventProperty_time" - external state : t -> int = "ml_GdkEventProperty_state" -end - -module Selection = struct - type t = [ `SELECTION_CLEAR|`SELECTION_REQUEST|`SELECTION_NOTIFY ] event - let cast (ev : event_type event) : t = - match get_type ev with - `SELECTION_CLEAR|`SELECTION_REQUEST|`SELECTION_NOTIFY -> Obj.magic ev - | _ -> invalid_arg "GdkEvent.Selection.cast" - external selection : t -> atom = "ml_GdkEventSelection_selection" - external target : t -> atom = "ml_GdkEventSelection_target" - external property : t -> atom = "ml_GdkEventSelection_property" - external requestor : t -> int = "ml_GdkEventSelection_requestor" - external time : t -> int = "ml_GdkEventSelection_time" -end - -module Proximity = struct - type t = [ `PROXIMITY_IN|`PROXIMITY_OUT ] event - let cast (ev : event_type event) : t = - match get_type ev with - `PROXIMITY_IN|`PROXIMITY_OUT -> Obj.magic ev - | _ -> invalid_arg "GdkEvent.Proximity.cast" - external time : t -> int = "ml_GdkEventProximity_time" - external source : t -> input_source = "ml_GdkEventProximity_source" - external deviceid : t -> int = "ml_GdkEventProximity_deviceid" -end diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gdkKeysyms.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gdkKeysyms.ml deleted file mode 100644 index b0257b439..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gdkKeysyms.ml +++ /dev/null @@ -1,1320 +0,0 @@ -(* $Id$ *) - -open Gdk -let _VoidSymbol : keysym = 0xFFFFFF -let _BackSpace : keysym = 0xFF08 -let _Tab : keysym = 0xFF09 -let _Linefeed : keysym = 0xFF0A -let _Clear : keysym = 0xFF0B -let _Return : keysym = 0xFF0D -let _Pause : keysym = 0xFF13 -let _Scroll_Lock : keysym = 0xFF14 -let _Sys_Req : keysym = 0xFF15 -let _Escape : keysym = 0xFF1B -let _Delete : keysym = 0xFFFF -let _Multi_key : keysym = 0xFF20 -let _SingleCandidate : keysym = 0xFF3C -let _MultipleCandidate : keysym = 0xFF3D -let _PreviousCandidate : keysym = 0xFF3E -let _Kanji : keysym = 0xFF21 -let _Muhenkan : keysym = 0xFF22 -let _Henkan_Mode : keysym = 0xFF23 -let _Henkan : keysym = 0xFF23 -let _Romaji : keysym = 0xFF24 -let _Hiragana : keysym = 0xFF25 -let _Katakana : keysym = 0xFF26 -let _Hiragana_Katakana : keysym = 0xFF27 -let _Zenkaku : keysym = 0xFF28 -let _Hankaku : keysym = 0xFF29 -let _Zenkaku_Hankaku : keysym = 0xFF2A -let _Touroku : keysym = 0xFF2B -let _Massyo : keysym = 0xFF2C -let _Kana_Lock : keysym = 0xFF2D -let _Kana_Shift : keysym = 0xFF2E -let _Eisu_Shift : keysym = 0xFF2F -let _Eisu_toggle : keysym = 0xFF30 -let _Zen_Koho : keysym = 0xFF3D -let _Mae_Koho : keysym = 0xFF3E -let _Home : keysym = 0xFF50 -let _Left : keysym = 0xFF51 -let _Up : keysym = 0xFF52 -let _Right : keysym = 0xFF53 -let _Down : keysym = 0xFF54 -let _Prior : keysym = 0xFF55 -let _Page_Up : keysym = 0xFF55 -let _Next : keysym = 0xFF56 -let _Page_Down : keysym = 0xFF56 -let _End : keysym = 0xFF57 -let _Begin : keysym = 0xFF58 -let _Select : keysym = 0xFF60 -let _Print : keysym = 0xFF61 -let _Execute : keysym = 0xFF62 -let _Insert : keysym = 0xFF63 -let _Undo : keysym = 0xFF65 -let _Redo : keysym = 0xFF66 -let _Menu : keysym = 0xFF67 -let _Find : keysym = 0xFF68 -let _Cancel : keysym = 0xFF69 -let _Help : keysym = 0xFF6A -let _Break : keysym = 0xFF6B -let _Mode_switch : keysym = 0xFF7E -let _script_switch : keysym = 0xFF7E -let _Num_Lock : keysym = 0xFF7F -let _KP_Space : keysym = 0xFF80 -let _KP_Tab : keysym = 0xFF89 -let _KP_Enter : keysym = 0xFF8D -let _KP_F1 : keysym = 0xFF91 -let _KP_F2 : keysym = 0xFF92 -let _KP_F3 : keysym = 0xFF93 -let _KP_F4 : keysym = 0xFF94 -let _KP_Home : keysym = 0xFF95 -let _KP_Left : keysym = 0xFF96 -let _KP_Up : keysym = 0xFF97 -let _KP_Right : keysym = 0xFF98 -let _KP_Down : keysym = 0xFF99 -let _KP_Prior : keysym = 0xFF9A -let _KP_Page_Up : keysym = 0xFF9A -let _KP_Next : keysym = 0xFF9B -let _KP_Page_Down : keysym = 0xFF9B -let _KP_End : keysym = 0xFF9C -let _KP_Begin : keysym = 0xFF9D -let _KP_Insert : keysym = 0xFF9E -let _KP_Delete : keysym = 0xFF9F -let _KP_Equal : keysym = 0xFFBD -let _KP_Multiply : keysym = 0xFFAA -let _KP_Add : keysym = 0xFFAB -let _KP_Separator : keysym = 0xFFAC -let _KP_Subtract : keysym = 0xFFAD -let _KP_Decimal : keysym = 0xFFAE -let _KP_Divide : keysym = 0xFFAF -let _KP_0 : keysym = 0xFFB0 -let _KP_1 : keysym = 0xFFB1 -let _KP_2 : keysym = 0xFFB2 -let _KP_3 : keysym = 0xFFB3 -let _KP_4 : keysym = 0xFFB4 -let _KP_5 : keysym = 0xFFB5 -let _KP_6 : keysym = 0xFFB6 -let _KP_7 : keysym = 0xFFB7 -let _KP_8 : keysym = 0xFFB8 -let _KP_9 : keysym = 0xFFB9 -let _F1 : keysym = 0xFFBE -let _F2 : keysym = 0xFFBF -let _F3 : keysym = 0xFFC0 -let _F4 : keysym = 0xFFC1 -let _F5 : keysym = 0xFFC2 -let _F6 : keysym = 0xFFC3 -let _F7 : keysym = 0xFFC4 -let _F8 : keysym = 0xFFC5 -let _F9 : keysym = 0xFFC6 -let _F10 : keysym = 0xFFC7 -let _F11 : keysym = 0xFFC8 -let _L1 : keysym = 0xFFC8 -let _F12 : keysym = 0xFFC9 -let _L2 : keysym = 0xFFC9 -let _F13 : keysym = 0xFFCA -let _L3 : keysym = 0xFFCA -let _F14 : keysym = 0xFFCB -let _L4 : keysym = 0xFFCB -let _F15 : keysym = 0xFFCC -let _L5 : keysym = 0xFFCC -let _F16 : keysym = 0xFFCD -let _L6 : keysym = 0xFFCD -let _F17 : keysym = 0xFFCE -let _L7 : keysym = 0xFFCE -let _F18 : keysym = 0xFFCF -let _L8 : keysym = 0xFFCF -let _F19 : keysym = 0xFFD0 -let _L9 : keysym = 0xFFD0 -let _F20 : keysym = 0xFFD1 -let _L10 : keysym = 0xFFD1 -let _F21 : keysym = 0xFFD2 -let _R1 : keysym = 0xFFD2 -let _F22 : keysym = 0xFFD3 -let _R2 : keysym = 0xFFD3 -let _F23 : keysym = 0xFFD4 -let _R3 : keysym = 0xFFD4 -let _F24 : keysym = 0xFFD5 -let _R4 : keysym = 0xFFD5 -let _F25 : keysym = 0xFFD6 -let _R5 : keysym = 0xFFD6 -let _F26 : keysym = 0xFFD7 -let _R6 : keysym = 0xFFD7 -let _F27 : keysym = 0xFFD8 -let _R7 : keysym = 0xFFD8 -let _F28 : keysym = 0xFFD9 -let _R8 : keysym = 0xFFD9 -let _F29 : keysym = 0xFFDA -let _R9 : keysym = 0xFFDA -let _F30 : keysym = 0xFFDB -let _R10 : keysym = 0xFFDB -let _F31 : keysym = 0xFFDC -let _R11 : keysym = 0xFFDC -let _F32 : keysym = 0xFFDD -let _R12 : keysym = 0xFFDD -let _F33 : keysym = 0xFFDE -let _R13 : keysym = 0xFFDE -let _F34 : keysym = 0xFFDF -let _R14 : keysym = 0xFFDF -let _F35 : keysym = 0xFFE0 -let _R15 : keysym = 0xFFE0 -let _Shift_L : keysym = 0xFFE1 -let _Shift_R : keysym = 0xFFE2 -let _Control_L : keysym = 0xFFE3 -let _Control_R : keysym = 0xFFE4 -let _Caps_Lock : keysym = 0xFFE5 -let _Shift_Lock : keysym = 0xFFE6 -let _Meta_L : keysym = 0xFFE7 -let _Meta_R : keysym = 0xFFE8 -let _Alt_L : keysym = 0xFFE9 -let _Alt_R : keysym = 0xFFEA -let _Super_L : keysym = 0xFFEB -let _Super_R : keysym = 0xFFEC -let _Hyper_L : keysym = 0xFFED -let _Hyper_R : keysym = 0xFFEE -let _ISO_Lock : keysym = 0xFE01 -let _ISO_Level2_Latch : keysym = 0xFE02 -let _ISO_Level3_Shift : keysym = 0xFE03 -let _ISO_Level3_Latch : keysym = 0xFE04 -let _ISO_Level3_Lock : keysym = 0xFE05 -let _ISO_Group_Shift : keysym = 0xFF7E -let _ISO_Group_Latch : keysym = 0xFE06 -let _ISO_Group_Lock : keysym = 0xFE07 -let _ISO_Next_Group : keysym = 0xFE08 -let _ISO_Next_Group_Lock : keysym = 0xFE09 -let _ISO_Prev_Group : keysym = 0xFE0A -let _ISO_Prev_Group_Lock : keysym = 0xFE0B -let _ISO_First_Group : keysym = 0xFE0C -let _ISO_First_Group_Lock : keysym = 0xFE0D -let _ISO_Last_Group : keysym = 0xFE0E -let _ISO_Last_Group_Lock : keysym = 0xFE0F -let _ISO_Left_Tab : keysym = 0xFE20 -let _ISO_Move_Line_Up : keysym = 0xFE21 -let _ISO_Move_Line_Down : keysym = 0xFE22 -let _ISO_Partial_Line_Up : keysym = 0xFE23 -let _ISO_Partial_Line_Down : keysym = 0xFE24 -let _ISO_Partial_Space_Left : keysym = 0xFE25 -let _ISO_Partial_Space_Right : keysym = 0xFE26 -let _ISO_Set_Margin_Left : keysym = 0xFE27 -let _ISO_Set_Margin_Right : keysym = 0xFE28 -let _ISO_Release_Margin_Left : keysym = 0xFE29 -let _ISO_Release_Margin_Right : keysym = 0xFE2A -let _ISO_Release_Both_Margins : keysym = 0xFE2B -let _ISO_Fast_Cursor_Left : keysym = 0xFE2C -let _ISO_Fast_Cursor_Right : keysym = 0xFE2D -let _ISO_Fast_Cursor_Up : keysym = 0xFE2E -let _ISO_Fast_Cursor_Down : keysym = 0xFE2F -let _ISO_Continuous_Underline : keysym = 0xFE30 -let _ISO_Discontinuous_Underline : keysym = 0xFE31 -let _ISO_Emphasize : keysym = 0xFE32 -let _ISO_Center_Object : keysym = 0xFE33 -let _ISO_Enter : keysym = 0xFE34 -let _dead_grave : keysym = 0xFE50 -let _dead_acute : keysym = 0xFE51 -let _dead_circumflex : keysym = 0xFE52 -let _dead_tilde : keysym = 0xFE53 -let _dead_macron : keysym = 0xFE54 -let _dead_breve : keysym = 0xFE55 -let _dead_abovedot : keysym = 0xFE56 -let _dead_diaeresis : keysym = 0xFE57 -let _dead_abovering : keysym = 0xFE58 -let _dead_doubleacute : keysym = 0xFE59 -let _dead_caron : keysym = 0xFE5A -let _dead_cedilla : keysym = 0xFE5B -let _dead_ogonek : keysym = 0xFE5C -let _dead_iota : keysym = 0xFE5D -let _dead_voiced_sound : keysym = 0xFE5E -let _dead_semivoiced_sound : keysym = 0xFE5F -let _dead_belowdot : keysym = 0xFE60 -let _First_Virtual_Screen : keysym = 0xFED0 -let _Prev_Virtual_Screen : keysym = 0xFED1 -let _Next_Virtual_Screen : keysym = 0xFED2 -let _Last_Virtual_Screen : keysym = 0xFED4 -let _Terminate_Server : keysym = 0xFED5 -let _AccessX_Enable : keysym = 0xFE70 -let _AccessX_Feedback_Enable : keysym = 0xFE71 -let _RepeatKeys_Enable : keysym = 0xFE72 -let _SlowKeys_Enable : keysym = 0xFE73 -let _BounceKeys_Enable : keysym = 0xFE74 -let _StickyKeys_Enable : keysym = 0xFE75 -let _MouseKeys_Enable : keysym = 0xFE76 -let _MouseKeys_Accel_Enable : keysym = 0xFE77 -let _Overlay1_Enable : keysym = 0xFE78 -let _Overlay2_Enable : keysym = 0xFE79 -let _AudibleBell_Enable : keysym = 0xFE7A -let _Pointer_Left : keysym = 0xFEE0 -let _Pointer_Right : keysym = 0xFEE1 -let _Pointer_Up : keysym = 0xFEE2 -let _Pointer_Down : keysym = 0xFEE3 -let _Pointer_UpLeft : keysym = 0xFEE4 -let _Pointer_UpRight : keysym = 0xFEE5 -let _Pointer_DownLeft : keysym = 0xFEE6 -let _Pointer_DownRight : keysym = 0xFEE7 -let _Pointer_Button_Dflt : keysym = 0xFEE8 -let _Pointer_Button1 : keysym = 0xFEE9 -let _Pointer_Button2 : keysym = 0xFEEA -let _Pointer_Button3 : keysym = 0xFEEB -let _Pointer_Button4 : keysym = 0xFEEC -let _Pointer_Button5 : keysym = 0xFEED -let _Pointer_DblClick_Dflt : keysym = 0xFEEE -let _Pointer_DblClick1 : keysym = 0xFEEF -let _Pointer_DblClick2 : keysym = 0xFEF0 -let _Pointer_DblClick3 : keysym = 0xFEF1 -let _Pointer_DblClick4 : keysym = 0xFEF2 -let _Pointer_DblClick5 : keysym = 0xFEF3 -let _Pointer_Drag_Dflt : keysym = 0xFEF4 -let _Pointer_Drag1 : keysym = 0xFEF5 -let _Pointer_Drag2 : keysym = 0xFEF6 -let _Pointer_Drag3 : keysym = 0xFEF7 -let _Pointer_Drag4 : keysym = 0xFEF8 -let _Pointer_Drag5 : keysym = 0xFEFD -let _Pointer_EnableKeys : keysym = 0xFEF9 -let _Pointer_Accelerate : keysym = 0xFEFA -let _Pointer_DfltBtnNext : keysym = 0xFEFB -let _Pointer_DfltBtnPrev : keysym = 0xFEFC -let _3270_Duplicate : keysym = 0xFD01 -let _3270_FieldMark : keysym = 0xFD02 -let _3270_Right2 : keysym = 0xFD03 -let _3270_Left2 : keysym = 0xFD04 -let _3270_BackTab : keysym = 0xFD05 -let _3270_EraseEOF : keysym = 0xFD06 -let _3270_EraseInput : keysym = 0xFD07 -let _3270_Reset : keysym = 0xFD08 -let _3270_Quit : keysym = 0xFD09 -let _3270_PA1 : keysym = 0xFD0A -let _3270_PA2 : keysym = 0xFD0B -let _3270_PA3 : keysym = 0xFD0C -let _3270_Test : keysym = 0xFD0D -let _3270_Attn : keysym = 0xFD0E -let _3270_CursorBlink : keysym = 0xFD0F -let _3270_AltCursor : keysym = 0xFD10 -let _3270_KeyClick : keysym = 0xFD11 -let _3270_Jump : keysym = 0xFD12 -let _3270_Ident : keysym = 0xFD13 -let _3270_Rule : keysym = 0xFD14 -let _3270_Copy : keysym = 0xFD15 -let _3270_Play : keysym = 0xFD16 -let _3270_Setup : keysym = 0xFD17 -let _3270_Record : keysym = 0xFD18 -let _3270_ChangeScreen : keysym = 0xFD19 -let _3270_DeleteWord : keysym = 0xFD1A -let _3270_ExSelect : keysym = 0xFD1B -let _3270_CursorSelect : keysym = 0xFD1C -let _3270_PrintScreen : keysym = 0xFD1D -let _3270_Enter : keysym = 0xFD1E -let _space : keysym = 0x020 -let _exclam : keysym = 0x021 -let _quotedbl : keysym = 0x022 -let _numbersign : keysym = 0x023 -let _dollar : keysym = 0x024 -let _percent : keysym = 0x025 -let _ampersand : keysym = 0x026 -let _apostrophe : keysym = 0x027 -let _quoteright : keysym = 0x027 -let _parenleft : keysym = 0x028 -let _parenright : keysym = 0x029 -let _asterisk : keysym = 0x02a -let _plus : keysym = 0x02b -let _comma : keysym = 0x02c -let _minus : keysym = 0x02d -let _period : keysym = 0x02e -let _slash : keysym = 0x02f -let _0 : keysym = 0x030 -let _1 : keysym = 0x031 -let _2 : keysym = 0x032 -let _3 : keysym = 0x033 -let _4 : keysym = 0x034 -let _5 : keysym = 0x035 -let _6 : keysym = 0x036 -let _7 : keysym = 0x037 -let _8 : keysym = 0x038 -let _9 : keysym = 0x039 -let _colon : keysym = 0x03a -let _semicolon : keysym = 0x03b -let _less : keysym = 0x03c -let _equal : keysym = 0x03d -let _greater : keysym = 0x03e -let _question : keysym = 0x03f -let _at : keysym = 0x040 -let _A : keysym = 0x041 -let _B : keysym = 0x042 -let _C : keysym = 0x043 -let _D : keysym = 0x044 -let _E : keysym = 0x045 -let _F : keysym = 0x046 -let _G : keysym = 0x047 -let _H : keysym = 0x048 -let _I : keysym = 0x049 -let _J : keysym = 0x04a -let _K : keysym = 0x04b -let _L : keysym = 0x04c -let _M : keysym = 0x04d -let _N : keysym = 0x04e -let _O : keysym = 0x04f -let _P : keysym = 0x050 -let _Q : keysym = 0x051 -let _R : keysym = 0x052 -let _S : keysym = 0x053 -let _T : keysym = 0x054 -let _U : keysym = 0x055 -let _V : keysym = 0x056 -let _W : keysym = 0x057 -let _X : keysym = 0x058 -let _Y : keysym = 0x059 -let _Z : keysym = 0x05a -let _bracketleft : keysym = 0x05b -let _backslash : keysym = 0x05c -let _bracketright : keysym = 0x05d -let _asciicircum : keysym = 0x05e -let _underscore : keysym = 0x05f -let _grave : keysym = 0x060 -let _quoteleft : keysym = 0x060 -let _a : keysym = 0x061 -let _b : keysym = 0x062 -let _c : keysym = 0x063 -let _d : keysym = 0x064 -let _e : keysym = 0x065 -let _f : keysym = 0x066 -let _g : keysym = 0x067 -let _h : keysym = 0x068 -let _i : keysym = 0x069 -let _j : keysym = 0x06a -let _k : keysym = 0x06b -let _l : keysym = 0x06c -let _m : keysym = 0x06d -let _n : keysym = 0x06e -let _o : keysym = 0x06f -let _p : keysym = 0x070 -let _q : keysym = 0x071 -let _r : keysym = 0x072 -let _s : keysym = 0x073 -let _t : keysym = 0x074 -let _u : keysym = 0x075 -let _v : keysym = 0x076 -let _w : keysym = 0x077 -let _x : keysym = 0x078 -let _y : keysym = 0x079 -let _z : keysym = 0x07a -let _braceleft : keysym = 0x07b -let _bar : keysym = 0x07c -let _braceright : keysym = 0x07d -let _asciitilde : keysym = 0x07e -let _nobreakspace : keysym = 0x0a0 -let _exclamdown : keysym = 0x0a1 -let _cent : keysym = 0x0a2 -let _sterling : keysym = 0x0a3 -let _currency : keysym = 0x0a4 -let _yen : keysym = 0x0a5 -let _brokenbar : keysym = 0x0a6 -let _section : keysym = 0x0a7 -let _diaeresis : keysym = 0x0a8 -let _copyright : keysym = 0x0a9 -let _ordfeminine : keysym = 0x0aa -let _guillemotleft : keysym = 0x0ab -let _notsign : keysym = 0x0ac -let _hyphen : keysym = 0x0ad -let _registered : keysym = 0x0ae -let _macron : keysym = 0x0af -let _degree : keysym = 0x0b0 -let _plusminus : keysym = 0x0b1 -let _twosuperior : keysym = 0x0b2 -let _threesuperior : keysym = 0x0b3 -let _acute : keysym = 0x0b4 -let _mu : keysym = 0x0b5 -let _paragraph : keysym = 0x0b6 -let _periodcentered : keysym = 0x0b7 -let _cedilla : keysym = 0x0b8 -let _onesuperior : keysym = 0x0b9 -let _masculine : keysym = 0x0ba -let _guillemotright : keysym = 0x0bb -let _onequarter : keysym = 0x0bc -let _onehalf : keysym = 0x0bd -let _threequarters : keysym = 0x0be -let _questiondown : keysym = 0x0bf -let _Agrave : keysym = 0x0c0 -let _Aacute : keysym = 0x0c1 -let _Acircumflex : keysym = 0x0c2 -let _Atilde : keysym = 0x0c3 -let _Adiaeresis : keysym = 0x0c4 -let _Aring : keysym = 0x0c5 -let _AE : keysym = 0x0c6 -let _Ccedilla : keysym = 0x0c7 -let _Egrave : keysym = 0x0c8 -let _Eacute : keysym = 0x0c9 -let _Ecircumflex : keysym = 0x0ca -let _Ediaeresis : keysym = 0x0cb -let _Igrave : keysym = 0x0cc -let _Iacute : keysym = 0x0cd -let _Icircumflex : keysym = 0x0ce -let _Idiaeresis : keysym = 0x0cf -let _ETH : keysym = 0x0d0 -let _Eth : keysym = 0x0d0 -let _Ntilde : keysym = 0x0d1 -let _Ograve : keysym = 0x0d2 -let _Oacute : keysym = 0x0d3 -let _Ocircumflex : keysym = 0x0d4 -let _Otilde : keysym = 0x0d5 -let _Odiaeresis : keysym = 0x0d6 -let _multiply : keysym = 0x0d7 -let _Ooblique : keysym = 0x0d8 -let _Ugrave : keysym = 0x0d9 -let _Uacute : keysym = 0x0da -let _Ucircumflex : keysym = 0x0db -let _Udiaeresis : keysym = 0x0dc -let _Yacute : keysym = 0x0dd -let _THORN : keysym = 0x0de -let _Thorn : keysym = 0x0de -let _ssharp : keysym = 0x0df -let _agrave : keysym = 0x0e0 -let _aacute : keysym = 0x0e1 -let _acircumflex : keysym = 0x0e2 -let _atilde : keysym = 0x0e3 -let _adiaeresis : keysym = 0x0e4 -let _aring : keysym = 0x0e5 -let _ae : keysym = 0x0e6 -let _ccedilla : keysym = 0x0e7 -let _egrave : keysym = 0x0e8 -let _eacute : keysym = 0x0e9 -let _ecircumflex : keysym = 0x0ea -let _ediaeresis : keysym = 0x0eb -let _igrave : keysym = 0x0ec -let _iacute : keysym = 0x0ed -let _icircumflex : keysym = 0x0ee -let _idiaeresis : keysym = 0x0ef -let _eth : keysym = 0x0f0 -let _ntilde : keysym = 0x0f1 -let _ograve : keysym = 0x0f2 -let _oacute : keysym = 0x0f3 -let _ocircumflex : keysym = 0x0f4 -let _otilde : keysym = 0x0f5 -let _odiaeresis : keysym = 0x0f6 -let _division : keysym = 0x0f7 -let _oslash : keysym = 0x0f8 -let _ugrave : keysym = 0x0f9 -let _uacute : keysym = 0x0fa -let _ucircumflex : keysym = 0x0fb -let _udiaeresis : keysym = 0x0fc -let _yacute : keysym = 0x0fd -let _thorn : keysym = 0x0fe -let _ydiaeresis : keysym = 0x0ff -let _Aogonek : keysym = 0x1a1 -let _breve : keysym = 0x1a2 -let _Lstroke : keysym = 0x1a3 -let _Lcaron : keysym = 0x1a5 -let _Sacute : keysym = 0x1a6 -let _Scaron : keysym = 0x1a9 -let _Scedilla : keysym = 0x1aa -let _Tcaron : keysym = 0x1ab -let _Zacute : keysym = 0x1ac -let _Zcaron : keysym = 0x1ae -let _Zabovedot : keysym = 0x1af -let _aogonek : keysym = 0x1b1 -let _ogonek : keysym = 0x1b2 -let _lstroke : keysym = 0x1b3 -let _lcaron : keysym = 0x1b5 -let _sacute : keysym = 0x1b6 -let _caron : keysym = 0x1b7 -let _scaron : keysym = 0x1b9 -let _scedilla : keysym = 0x1ba -let _tcaron : keysym = 0x1bb -let _zacute : keysym = 0x1bc -let _doubleacute : keysym = 0x1bd -let _zcaron : keysym = 0x1be -let _zabovedot : keysym = 0x1bf -let _Racute : keysym = 0x1c0 -let _Abreve : keysym = 0x1c3 -let _Lacute : keysym = 0x1c5 -let _Cacute : keysym = 0x1c6 -let _Ccaron : keysym = 0x1c8 -let _Eogonek : keysym = 0x1ca -let _Ecaron : keysym = 0x1cc -let _Dcaron : keysym = 0x1cf -let _Dstroke : keysym = 0x1d0 -let _Nacute : keysym = 0x1d1 -let _Ncaron : keysym = 0x1d2 -let _Odoubleacute : keysym = 0x1d5 -let _Rcaron : keysym = 0x1d8 -let _Uring : keysym = 0x1d9 -let _Udoubleacute : keysym = 0x1db -let _Tcedilla : keysym = 0x1de -let _racute : keysym = 0x1e0 -let _abreve : keysym = 0x1e3 -let _lacute : keysym = 0x1e5 -let _cacute : keysym = 0x1e6 -let _ccaron : keysym = 0x1e8 -let _eogonek : keysym = 0x1ea -let _ecaron : keysym = 0x1ec -let _dcaron : keysym = 0x1ef -let _dstroke : keysym = 0x1f0 -let _nacute : keysym = 0x1f1 -let _ncaron : keysym = 0x1f2 -let _odoubleacute : keysym = 0x1f5 -let _udoubleacute : keysym = 0x1fb -let _rcaron : keysym = 0x1f8 -let _uring : keysym = 0x1f9 -let _tcedilla : keysym = 0x1fe -let _abovedot : keysym = 0x1ff -let _Hstroke : keysym = 0x2a1 -let _Hcircumflex : keysym = 0x2a6 -let _Iabovedot : keysym = 0x2a9 -let _Gbreve : keysym = 0x2ab -let _Jcircumflex : keysym = 0x2ac -let _hstroke : keysym = 0x2b1 -let _hcircumflex : keysym = 0x2b6 -let _idotless : keysym = 0x2b9 -let _gbreve : keysym = 0x2bb -let _jcircumflex : keysym = 0x2bc -let _Cabovedot : keysym = 0x2c5 -let _Ccircumflex : keysym = 0x2c6 -let _Gabovedot : keysym = 0x2d5 -let _Gcircumflex : keysym = 0x2d8 -let _Ubreve : keysym = 0x2dd -let _Scircumflex : keysym = 0x2de -let _cabovedot : keysym = 0x2e5 -let _ccircumflex : keysym = 0x2e6 -let _gabovedot : keysym = 0x2f5 -let _gcircumflex : keysym = 0x2f8 -let _ubreve : keysym = 0x2fd -let _scircumflex : keysym = 0x2fe -let _kra : keysym = 0x3a2 -let _kappa : keysym = 0x3a2 -let _Rcedilla : keysym = 0x3a3 -let _Itilde : keysym = 0x3a5 -let _Lcedilla : keysym = 0x3a6 -let _Emacron : keysym = 0x3aa -let _Gcedilla : keysym = 0x3ab -let _Tslash : keysym = 0x3ac -let _rcedilla : keysym = 0x3b3 -let _itilde : keysym = 0x3b5 -let _lcedilla : keysym = 0x3b6 -let _emacron : keysym = 0x3ba -let _gcedilla : keysym = 0x3bb -let _tslash : keysym = 0x3bc -let _ENG : keysym = 0x3bd -let _eng : keysym = 0x3bf -let _Amacron : keysym = 0x3c0 -let _Iogonek : keysym = 0x3c7 -let _Eabovedot : keysym = 0x3cc -let _Imacron : keysym = 0x3cf -let _Ncedilla : keysym = 0x3d1 -let _Omacron : keysym = 0x3d2 -let _Kcedilla : keysym = 0x3d3 -let _Uogonek : keysym = 0x3d9 -let _Utilde : keysym = 0x3dd -let _Umacron : keysym = 0x3de -let _amacron : keysym = 0x3e0 -let _iogonek : keysym = 0x3e7 -let _eabovedot : keysym = 0x3ec -let _imacron : keysym = 0x3ef -let _ncedilla : keysym = 0x3f1 -let _omacron : keysym = 0x3f2 -let _kcedilla : keysym = 0x3f3 -let _uogonek : keysym = 0x3f9 -let _utilde : keysym = 0x3fd -let _umacron : keysym = 0x3fe -let _overline : keysym = 0x47e -let _kana_fullstop : keysym = 0x4a1 -let _kana_openingbracket : keysym = 0x4a2 -let _kana_closingbracket : keysym = 0x4a3 -let _kana_comma : keysym = 0x4a4 -let _kana_conjunctive : keysym = 0x4a5 -let _kana_middledot : keysym = 0x4a5 -let _kana_WO : keysym = 0x4a6 -let _kana_a : keysym = 0x4a7 -let _kana_i : keysym = 0x4a8 -let _kana_u : keysym = 0x4a9 -let _kana_e : keysym = 0x4aa -let _kana_o : keysym = 0x4ab -let _kana_ya : keysym = 0x4ac -let _kana_yu : keysym = 0x4ad -let _kana_yo : keysym = 0x4ae -let _kana_tsu : keysym = 0x4af -let _kana_tu : keysym = 0x4af -let _prolongedsound : keysym = 0x4b0 -let _kana_A : keysym = 0x4b1 -let _kana_I : keysym = 0x4b2 -let _kana_U : keysym = 0x4b3 -let _kana_E : keysym = 0x4b4 -let _kana_O : keysym = 0x4b5 -let _kana_KA : keysym = 0x4b6 -let _kana_KI : keysym = 0x4b7 -let _kana_KU : keysym = 0x4b8 -let _kana_KE : keysym = 0x4b9 -let _kana_KO : keysym = 0x4ba -let _kana_SA : keysym = 0x4bb -let _kana_SHI : keysym = 0x4bc -let _kana_SU : keysym = 0x4bd -let _kana_SE : keysym = 0x4be -let _kana_SO : keysym = 0x4bf -let _kana_TA : keysym = 0x4c0 -let _kana_CHI : keysym = 0x4c1 -let _kana_TI : keysym = 0x4c1 -let _kana_TSU : keysym = 0x4c2 -let _kana_TU : keysym = 0x4c2 -let _kana_TE : keysym = 0x4c3 -let _kana_TO : keysym = 0x4c4 -let _kana_NA : keysym = 0x4c5 -let _kana_NI : keysym = 0x4c6 -let _kana_NU : keysym = 0x4c7 -let _kana_NE : keysym = 0x4c8 -let _kana_NO : keysym = 0x4c9 -let _kana_HA : keysym = 0x4ca -let _kana_HI : keysym = 0x4cb -let _kana_FU : keysym = 0x4cc -let _kana_HU : keysym = 0x4cc -let _kana_HE : keysym = 0x4cd -let _kana_HO : keysym = 0x4ce -let _kana_MA : keysym = 0x4cf -let _kana_MI : keysym = 0x4d0 -let _kana_MU : keysym = 0x4d1 -let _kana_ME : keysym = 0x4d2 -let _kana_MO : keysym = 0x4d3 -let _kana_YA : keysym = 0x4d4 -let _kana_YU : keysym = 0x4d5 -let _kana_YO : keysym = 0x4d6 -let _kana_RA : keysym = 0x4d7 -let _kana_RI : keysym = 0x4d8 -let _kana_RU : keysym = 0x4d9 -let _kana_RE : keysym = 0x4da -let _kana_RO : keysym = 0x4db -let _kana_WA : keysym = 0x4dc -let _kana_N : keysym = 0x4dd -let _voicedsound : keysym = 0x4de -let _semivoicedsound : keysym = 0x4df -let _kana_switch : keysym = 0xFF7E -let _Arabic_comma : keysym = 0x5ac -let _Arabic_semicolon : keysym = 0x5bb -let _Arabic_question_mark : keysym = 0x5bf -let _Arabic_hamza : keysym = 0x5c1 -let _Arabic_maddaonalef : keysym = 0x5c2 -let _Arabic_hamzaonalef : keysym = 0x5c3 -let _Arabic_hamzaonwaw : keysym = 0x5c4 -let _Arabic_hamzaunderalef : keysym = 0x5c5 -let _Arabic_hamzaonyeh : keysym = 0x5c6 -let _Arabic_alef : keysym = 0x5c7 -let _Arabic_beh : keysym = 0x5c8 -let _Arabic_tehmarbuta : keysym = 0x5c9 -let _Arabic_teh : keysym = 0x5ca -let _Arabic_theh : keysym = 0x5cb -let _Arabic_jeem : keysym = 0x5cc -let _Arabic_hah : keysym = 0x5cd -let _Arabic_khah : keysym = 0x5ce -let _Arabic_dal : keysym = 0x5cf -let _Arabic_thal : keysym = 0x5d0 -let _Arabic_ra : keysym = 0x5d1 -let _Arabic_zain : keysym = 0x5d2 -let _Arabic_seen : keysym = 0x5d3 -let _Arabic_sheen : keysym = 0x5d4 -let _Arabic_sad : keysym = 0x5d5 -let _Arabic_dad : keysym = 0x5d6 -let _Arabic_tah : keysym = 0x5d7 -let _Arabic_zah : keysym = 0x5d8 -let _Arabic_ain : keysym = 0x5d9 -let _Arabic_ghain : keysym = 0x5da -let _Arabic_tatweel : keysym = 0x5e0 -let _Arabic_feh : keysym = 0x5e1 -let _Arabic_qaf : keysym = 0x5e2 -let _Arabic_kaf : keysym = 0x5e3 -let _Arabic_lam : keysym = 0x5e4 -let _Arabic_meem : keysym = 0x5e5 -let _Arabic_noon : keysym = 0x5e6 -let _Arabic_ha : keysym = 0x5e7 -let _Arabic_heh : keysym = 0x5e7 -let _Arabic_waw : keysym = 0x5e8 -let _Arabic_alefmaksura : keysym = 0x5e9 -let _Arabic_yeh : keysym = 0x5ea -let _Arabic_fathatan : keysym = 0x5eb -let _Arabic_dammatan : keysym = 0x5ec -let _Arabic_kasratan : keysym = 0x5ed -let _Arabic_fatha : keysym = 0x5ee -let _Arabic_damma : keysym = 0x5ef -let _Arabic_kasra : keysym = 0x5f0 -let _Arabic_shadda : keysym = 0x5f1 -let _Arabic_sukun : keysym = 0x5f2 -let _Arabic_switch : keysym = 0xFF7E -let _Serbian_dje : keysym = 0x6a1 -let _Macedonia_gje : keysym = 0x6a2 -let _Cyrillic_io : keysym = 0x6a3 -let _Ukrainian_ie : keysym = 0x6a4 -let _Ukranian_je : keysym = 0x6a4 -let _Macedonia_dse : keysym = 0x6a5 -let _Ukrainian_i : keysym = 0x6a6 -let _Ukranian_i : keysym = 0x6a6 -let _Ukrainian_yi : keysym = 0x6a7 -let _Ukranian_yi : keysym = 0x6a7 -let _Cyrillic_je : keysym = 0x6a8 -let _Serbian_je : keysym = 0x6a8 -let _Cyrillic_lje : keysym = 0x6a9 -let _Serbian_lje : keysym = 0x6a9 -let _Cyrillic_nje : keysym = 0x6aa -let _Serbian_nje : keysym = 0x6aa -let _Serbian_tshe : keysym = 0x6ab -let _Macedonia_kje : keysym = 0x6ac -let _Byelorussian_shortu : keysym = 0x6ae -let _Cyrillic_dzhe : keysym = 0x6af -let _Serbian_dze : keysym = 0x6af -let _numerosign : keysym = 0x6b0 -let _Serbian_DJE : keysym = 0x6b1 -let _Macedonia_GJE : keysym = 0x6b2 -let _Cyrillic_IO : keysym = 0x6b3 -let _Ukrainian_IE : keysym = 0x6b4 -let _Ukranian_JE : keysym = 0x6b4 -let _Macedonia_DSE : keysym = 0x6b5 -let _Ukrainian_I : keysym = 0x6b6 -let _Ukranian_I : keysym = 0x6b6 -let _Ukrainian_YI : keysym = 0x6b7 -let _Ukranian_YI : keysym = 0x6b7 -let _Cyrillic_JE : keysym = 0x6b8 -let _Serbian_JE : keysym = 0x6b8 -let _Cyrillic_LJE : keysym = 0x6b9 -let _Serbian_LJE : keysym = 0x6b9 -let _Cyrillic_NJE : keysym = 0x6ba -let _Serbian_NJE : keysym = 0x6ba -let _Serbian_TSHE : keysym = 0x6bb -let _Macedonia_KJE : keysym = 0x6bc -let _Byelorussian_SHORTU : keysym = 0x6be -let _Cyrillic_DZHE : keysym = 0x6bf -let _Serbian_DZE : keysym = 0x6bf -let _Cyrillic_yu : keysym = 0x6c0 -let _Cyrillic_a : keysym = 0x6c1 -let _Cyrillic_be : keysym = 0x6c2 -let _Cyrillic_tse : keysym = 0x6c3 -let _Cyrillic_de : keysym = 0x6c4 -let _Cyrillic_ie : keysym = 0x6c5 -let _Cyrillic_ef : keysym = 0x6c6 -let _Cyrillic_ghe : keysym = 0x6c7 -let _Cyrillic_ha : keysym = 0x6c8 -let _Cyrillic_i : keysym = 0x6c9 -let _Cyrillic_shorti : keysym = 0x6ca -let _Cyrillic_ka : keysym = 0x6cb -let _Cyrillic_el : keysym = 0x6cc -let _Cyrillic_em : keysym = 0x6cd -let _Cyrillic_en : keysym = 0x6ce -let _Cyrillic_o : keysym = 0x6cf -let _Cyrillic_pe : keysym = 0x6d0 -let _Cyrillic_ya : keysym = 0x6d1 -let _Cyrillic_er : keysym = 0x6d2 -let _Cyrillic_es : keysym = 0x6d3 -let _Cyrillic_te : keysym = 0x6d4 -let _Cyrillic_u : keysym = 0x6d5 -let _Cyrillic_zhe : keysym = 0x6d6 -let _Cyrillic_ve : keysym = 0x6d7 -let _Cyrillic_softsign : keysym = 0x6d8 -let _Cyrillic_yeru : keysym = 0x6d9 -let _Cyrillic_ze : keysym = 0x6da -let _Cyrillic_sha : keysym = 0x6db -let _Cyrillic_e : keysym = 0x6dc -let _Cyrillic_shcha : keysym = 0x6dd -let _Cyrillic_che : keysym = 0x6de -let _Cyrillic_hardsign : keysym = 0x6df -let _Cyrillic_YU : keysym = 0x6e0 -let _Cyrillic_A : keysym = 0x6e1 -let _Cyrillic_BE : keysym = 0x6e2 -let _Cyrillic_TSE : keysym = 0x6e3 -let _Cyrillic_DE : keysym = 0x6e4 -let _Cyrillic_IE : keysym = 0x6e5 -let _Cyrillic_EF : keysym = 0x6e6 -let _Cyrillic_GHE : keysym = 0x6e7 -let _Cyrillic_HA : keysym = 0x6e8 -let _Cyrillic_I : keysym = 0x6e9 -let _Cyrillic_SHORTI : keysym = 0x6ea -let _Cyrillic_KA : keysym = 0x6eb -let _Cyrillic_EL : keysym = 0x6ec -let _Cyrillic_EM : keysym = 0x6ed -let _Cyrillic_EN : keysym = 0x6ee -let _Cyrillic_O : keysym = 0x6ef -let _Cyrillic_PE : keysym = 0x6f0 -let _Cyrillic_YA : keysym = 0x6f1 -let _Cyrillic_ER : keysym = 0x6f2 -let _Cyrillic_ES : keysym = 0x6f3 -let _Cyrillic_TE : keysym = 0x6f4 -let _Cyrillic_U : keysym = 0x6f5 -let _Cyrillic_ZHE : keysym = 0x6f6 -let _Cyrillic_VE : keysym = 0x6f7 -let _Cyrillic_SOFTSIGN : keysym = 0x6f8 -let _Cyrillic_YERU : keysym = 0x6f9 -let _Cyrillic_ZE : keysym = 0x6fa -let _Cyrillic_SHA : keysym = 0x6fb -let _Cyrillic_E : keysym = 0x6fc -let _Cyrillic_SHCHA : keysym = 0x6fd -let _Cyrillic_CHE : keysym = 0x6fe -let _Cyrillic_HARDSIGN : keysym = 0x6ff -let _Greek_ALPHAaccent : keysym = 0x7a1 -let _Greek_EPSILONaccent : keysym = 0x7a2 -let _Greek_ETAaccent : keysym = 0x7a3 -let _Greek_IOTAaccent : keysym = 0x7a4 -let _Greek_IOTAdiaeresis : keysym = 0x7a5 -let _Greek_OMICRONaccent : keysym = 0x7a7 -let _Greek_UPSILONaccent : keysym = 0x7a8 -let _Greek_UPSILONdieresis : keysym = 0x7a9 -let _Greek_OMEGAaccent : keysym = 0x7ab -let _Greek_accentdieresis : keysym = 0x7ae -let _Greek_horizbar : keysym = 0x7af -let _Greek_alphaaccent : keysym = 0x7b1 -let _Greek_epsilonaccent : keysym = 0x7b2 -let _Greek_etaaccent : keysym = 0x7b3 -let _Greek_iotaaccent : keysym = 0x7b4 -let _Greek_iotadieresis : keysym = 0x7b5 -let _Greek_iotaaccentdieresis : keysym = 0x7b6 -let _Greek_omicronaccent : keysym = 0x7b7 -let _Greek_upsilonaccent : keysym = 0x7b8 -let _Greek_upsilondieresis : keysym = 0x7b9 -let _Greek_upsilonaccentdieresis : keysym = 0x7ba -let _Greek_omegaaccent : keysym = 0x7bb -let _Greek_ALPHA : keysym = 0x7c1 -let _Greek_BETA : keysym = 0x7c2 -let _Greek_GAMMA : keysym = 0x7c3 -let _Greek_DELTA : keysym = 0x7c4 -let _Greek_EPSILON : keysym = 0x7c5 -let _Greek_ZETA : keysym = 0x7c6 -let _Greek_ETA : keysym = 0x7c7 -let _Greek_THETA : keysym = 0x7c8 -let _Greek_IOTA : keysym = 0x7c9 -let _Greek_KAPPA : keysym = 0x7ca -let _Greek_LAMDA : keysym = 0x7cb -let _Greek_LAMBDA : keysym = 0x7cb -let _Greek_MU : keysym = 0x7cc -let _Greek_NU : keysym = 0x7cd -let _Greek_XI : keysym = 0x7ce -let _Greek_OMICRON : keysym = 0x7cf -let _Greek_PI : keysym = 0x7d0 -let _Greek_RHO : keysym = 0x7d1 -let _Greek_SIGMA : keysym = 0x7d2 -let _Greek_TAU : keysym = 0x7d4 -let _Greek_UPSILON : keysym = 0x7d5 -let _Greek_PHI : keysym = 0x7d6 -let _Greek_CHI : keysym = 0x7d7 -let _Greek_PSI : keysym = 0x7d8 -let _Greek_OMEGA : keysym = 0x7d9 -let _Greek_alpha : keysym = 0x7e1 -let _Greek_beta : keysym = 0x7e2 -let _Greek_gamma : keysym = 0x7e3 -let _Greek_delta : keysym = 0x7e4 -let _Greek_epsilon : keysym = 0x7e5 -let _Greek_zeta : keysym = 0x7e6 -let _Greek_eta : keysym = 0x7e7 -let _Greek_theta : keysym = 0x7e8 -let _Greek_iota : keysym = 0x7e9 -let _Greek_kappa : keysym = 0x7ea -let _Greek_lamda : keysym = 0x7eb -let _Greek_lambda : keysym = 0x7eb -let _Greek_mu : keysym = 0x7ec -let _Greek_nu : keysym = 0x7ed -let _Greek_xi : keysym = 0x7ee -let _Greek_omicron : keysym = 0x7ef -let _Greek_pi : keysym = 0x7f0 -let _Greek_rho : keysym = 0x7f1 -let _Greek_sigma : keysym = 0x7f2 -let _Greek_finalsmallsigma : keysym = 0x7f3 -let _Greek_tau : keysym = 0x7f4 -let _Greek_upsilon : keysym = 0x7f5 -let _Greek_phi : keysym = 0x7f6 -let _Greek_chi : keysym = 0x7f7 -let _Greek_psi : keysym = 0x7f8 -let _Greek_omega : keysym = 0x7f9 -let _Greek_switch : keysym = 0xFF7E -let _leftradical : keysym = 0x8a1 -let _topleftradical : keysym = 0x8a2 -let _horizconnector : keysym = 0x8a3 -let _topintegral : keysym = 0x8a4 -let _botintegral : keysym = 0x8a5 -let _vertconnector : keysym = 0x8a6 -let _topleftsqbracket : keysym = 0x8a7 -let _botleftsqbracket : keysym = 0x8a8 -let _toprightsqbracket : keysym = 0x8a9 -let _botrightsqbracket : keysym = 0x8aa -let _topleftparens : keysym = 0x8ab -let _botleftparens : keysym = 0x8ac -let _toprightparens : keysym = 0x8ad -let _botrightparens : keysym = 0x8ae -let _leftmiddlecurlybrace : keysym = 0x8af -let _rightmiddlecurlybrace : keysym = 0x8b0 -let _topleftsummation : keysym = 0x8b1 -let _botleftsummation : keysym = 0x8b2 -let _topvertsummationconnector : keysym = 0x8b3 -let _botvertsummationconnector : keysym = 0x8b4 -let _toprightsummation : keysym = 0x8b5 -let _botrightsummation : keysym = 0x8b6 -let _rightmiddlesummation : keysym = 0x8b7 -let _lessthanequal : keysym = 0x8bc -let _notequal : keysym = 0x8bd -let _greaterthanequal : keysym = 0x8be -let _integral : keysym = 0x8bf -let _therefore : keysym = 0x8c0 -let _variation : keysym = 0x8c1 -let _infinity : keysym = 0x8c2 -let _nabla : keysym = 0x8c5 -let _approximate : keysym = 0x8c8 -let _similarequal : keysym = 0x8c9 -let _ifonlyif : keysym = 0x8cd -let _implies : keysym = 0x8ce -let _identical : keysym = 0x8cf -let _radical : keysym = 0x8d6 -let _includedin : keysym = 0x8da -let _includes : keysym = 0x8db -let _intersection : keysym = 0x8dc -let _union : keysym = 0x8dd -let _logicaland : keysym = 0x8de -let _logicalor : keysym = 0x8df -let _partialderivative : keysym = 0x8ef -let _function : keysym = 0x8f6 -let _leftarrow : keysym = 0x8fb -let _uparrow : keysym = 0x8fc -let _rightarrow : keysym = 0x8fd -let _downarrow : keysym = 0x8fe -let _blank : keysym = 0x9df -let _soliddiamond : keysym = 0x9e0 -let _checkerboard : keysym = 0x9e1 -let _ht : keysym = 0x9e2 -let _ff : keysym = 0x9e3 -let _cr : keysym = 0x9e4 -let _lf : keysym = 0x9e5 -let _nl : keysym = 0x9e8 -let _vt : keysym = 0x9e9 -let _lowrightcorner : keysym = 0x9ea -let _uprightcorner : keysym = 0x9eb -let _upleftcorner : keysym = 0x9ec -let _lowleftcorner : keysym = 0x9ed -let _crossinglines : keysym = 0x9ee -let _horizlinescan1 : keysym = 0x9ef -let _horizlinescan3 : keysym = 0x9f0 -let _horizlinescan5 : keysym = 0x9f1 -let _horizlinescan7 : keysym = 0x9f2 -let _horizlinescan9 : keysym = 0x9f3 -let _leftt : keysym = 0x9f4 -let _rightt : keysym = 0x9f5 -let _bott : keysym = 0x9f6 -let _topt : keysym = 0x9f7 -let _vertbar : keysym = 0x9f8 -let _emspace : keysym = 0xaa1 -let _enspace : keysym = 0xaa2 -let _em3space : keysym = 0xaa3 -let _em4space : keysym = 0xaa4 -let _digitspace : keysym = 0xaa5 -let _punctspace : keysym = 0xaa6 -let _thinspace : keysym = 0xaa7 -let _hairspace : keysym = 0xaa8 -let _emdash : keysym = 0xaa9 -let _endash : keysym = 0xaaa -let _signifblank : keysym = 0xaac -let _ellipsis : keysym = 0xaae -let _doubbaselinedot : keysym = 0xaaf -let _onethird : keysym = 0xab0 -let _twothirds : keysym = 0xab1 -let _onefifth : keysym = 0xab2 -let _twofifths : keysym = 0xab3 -let _threefifths : keysym = 0xab4 -let _fourfifths : keysym = 0xab5 -let _onesixth : keysym = 0xab6 -let _fivesixths : keysym = 0xab7 -let _careof : keysym = 0xab8 -let _figdash : keysym = 0xabb -let _leftanglebracket : keysym = 0xabc -let _decimalpoint : keysym = 0xabd -let _rightanglebracket : keysym = 0xabe -let _marker : keysym = 0xabf -let _oneeighth : keysym = 0xac3 -let _threeeighths : keysym = 0xac4 -let _fiveeighths : keysym = 0xac5 -let _seveneighths : keysym = 0xac6 -let _trademark : keysym = 0xac9 -let _signaturemark : keysym = 0xaca -let _trademarkincircle : keysym = 0xacb -let _leftopentriangle : keysym = 0xacc -let _rightopentriangle : keysym = 0xacd -let _emopencircle : keysym = 0xace -let _emopenrectangle : keysym = 0xacf -let _leftsinglequotemark : keysym = 0xad0 -let _rightsinglequotemark : keysym = 0xad1 -let _leftdoublequotemark : keysym = 0xad2 -let _rightdoublequotemark : keysym = 0xad3 -let _prescription : keysym = 0xad4 -let _minutes : keysym = 0xad6 -let _seconds : keysym = 0xad7 -let _latincross : keysym = 0xad9 -let _hexagram : keysym = 0xada -let _filledrectbullet : keysym = 0xadb -let _filledlefttribullet : keysym = 0xadc -let _filledrighttribullet : keysym = 0xadd -let _emfilledcircle : keysym = 0xade -let _emfilledrect : keysym = 0xadf -let _enopencircbullet : keysym = 0xae0 -let _enopensquarebullet : keysym = 0xae1 -let _openrectbullet : keysym = 0xae2 -let _opentribulletup : keysym = 0xae3 -let _opentribulletdown : keysym = 0xae4 -let _openstar : keysym = 0xae5 -let _enfilledcircbullet : keysym = 0xae6 -let _enfilledsqbullet : keysym = 0xae7 -let _filledtribulletup : keysym = 0xae8 -let _filledtribulletdown : keysym = 0xae9 -let _leftpointer : keysym = 0xaea -let _rightpointer : keysym = 0xaeb -let _club : keysym = 0xaec -let _diamond : keysym = 0xaed -let _heart : keysym = 0xaee -let _maltesecross : keysym = 0xaf0 -let _dagger : keysym = 0xaf1 -let _doubledagger : keysym = 0xaf2 -let _checkmark : keysym = 0xaf3 -let _ballotcross : keysym = 0xaf4 -let _musicalsharp : keysym = 0xaf5 -let _musicalflat : keysym = 0xaf6 -let _malesymbol : keysym = 0xaf7 -let _femalesymbol : keysym = 0xaf8 -let _telephone : keysym = 0xaf9 -let _telephonerecorder : keysym = 0xafa -let _phonographcopyright : keysym = 0xafb -let _caret : keysym = 0xafc -let _singlelowquotemark : keysym = 0xafd -let _doublelowquotemark : keysym = 0xafe -let _cursor : keysym = 0xaff -let _leftcaret : keysym = 0xba3 -let _rightcaret : keysym = 0xba6 -let _downcaret : keysym = 0xba8 -let _upcaret : keysym = 0xba9 -let _overbar : keysym = 0xbc0 -let _downtack : keysym = 0xbc2 -let _upshoe : keysym = 0xbc3 -let _downstile : keysym = 0xbc4 -let _underbar : keysym = 0xbc6 -let _jot : keysym = 0xbca -let _quad : keysym = 0xbcc -let _uptack : keysym = 0xbce -let _circle : keysym = 0xbcf -let _upstile : keysym = 0xbd3 -let _downshoe : keysym = 0xbd6 -let _rightshoe : keysym = 0xbd8 -let _leftshoe : keysym = 0xbda -let _lefttack : keysym = 0xbdc -let _righttack : keysym = 0xbfc -let _hebrew_doublelowline : keysym = 0xcdf -let _hebrew_aleph : keysym = 0xce0 -let _hebrew_bet : keysym = 0xce1 -let _hebrew_beth : keysym = 0xce1 -let _hebrew_gimel : keysym = 0xce2 -let _hebrew_gimmel : keysym = 0xce2 -let _hebrew_dalet : keysym = 0xce3 -let _hebrew_daleth : keysym = 0xce3 -let _hebrew_he : keysym = 0xce4 -let _hebrew_waw : keysym = 0xce5 -let _hebrew_zain : keysym = 0xce6 -let _hebrew_zayin : keysym = 0xce6 -let _hebrew_chet : keysym = 0xce7 -let _hebrew_het : keysym = 0xce7 -let _hebrew_tet : keysym = 0xce8 -let _hebrew_teth : keysym = 0xce8 -let _hebrew_yod : keysym = 0xce9 -let _hebrew_finalkaph : keysym = 0xcea -let _hebrew_kaph : keysym = 0xceb -let _hebrew_lamed : keysym = 0xcec -let _hebrew_finalmem : keysym = 0xced -let _hebrew_mem : keysym = 0xcee -let _hebrew_finalnun : keysym = 0xcef -let _hebrew_nun : keysym = 0xcf0 -let _hebrew_samech : keysym = 0xcf1 -let _hebrew_samekh : keysym = 0xcf1 -let _hebrew_ayin : keysym = 0xcf2 -let _hebrew_finalpe : keysym = 0xcf3 -let _hebrew_pe : keysym = 0xcf4 -let _hebrew_finalzade : keysym = 0xcf5 -let _hebrew_finalzadi : keysym = 0xcf5 -let _hebrew_zade : keysym = 0xcf6 -let _hebrew_zadi : keysym = 0xcf6 -let _hebrew_qoph : keysym = 0xcf7 -let _hebrew_kuf : keysym = 0xcf7 -let _hebrew_resh : keysym = 0xcf8 -let _hebrew_shin : keysym = 0xcf9 -let _hebrew_taw : keysym = 0xcfa -let _hebrew_taf : keysym = 0xcfa -let _Hebrew_switch : keysym = 0xFF7E -let _Thai_kokai : keysym = 0xda1 -let _Thai_khokhai : keysym = 0xda2 -let _Thai_khokhuat : keysym = 0xda3 -let _Thai_khokhwai : keysym = 0xda4 -let _Thai_khokhon : keysym = 0xda5 -let _Thai_khorakhang : keysym = 0xda6 -let _Thai_ngongu : keysym = 0xda7 -let _Thai_chochan : keysym = 0xda8 -let _Thai_choching : keysym = 0xda9 -let _Thai_chochang : keysym = 0xdaa -let _Thai_soso : keysym = 0xdab -let _Thai_chochoe : keysym = 0xdac -let _Thai_yoying : keysym = 0xdad -let _Thai_dochada : keysym = 0xdae -let _Thai_topatak : keysym = 0xdaf -let _Thai_thothan : keysym = 0xdb0 -let _Thai_thonangmontho : keysym = 0xdb1 -let _Thai_thophuthao : keysym = 0xdb2 -let _Thai_nonen : keysym = 0xdb3 -let _Thai_dodek : keysym = 0xdb4 -let _Thai_totao : keysym = 0xdb5 -let _Thai_thothung : keysym = 0xdb6 -let _Thai_thothahan : keysym = 0xdb7 -let _Thai_thothong : keysym = 0xdb8 -let _Thai_nonu : keysym = 0xdb9 -let _Thai_bobaimai : keysym = 0xdba -let _Thai_popla : keysym = 0xdbb -let _Thai_phophung : keysym = 0xdbc -let _Thai_fofa : keysym = 0xdbd -let _Thai_phophan : keysym = 0xdbe -let _Thai_fofan : keysym = 0xdbf -let _Thai_phosamphao : keysym = 0xdc0 -let _Thai_moma : keysym = 0xdc1 -let _Thai_yoyak : keysym = 0xdc2 -let _Thai_rorua : keysym = 0xdc3 -let _Thai_ru : keysym = 0xdc4 -let _Thai_loling : keysym = 0xdc5 -let _Thai_lu : keysym = 0xdc6 -let _Thai_wowaen : keysym = 0xdc7 -let _Thai_sosala : keysym = 0xdc8 -let _Thai_sorusi : keysym = 0xdc9 -let _Thai_sosua : keysym = 0xdca -let _Thai_hohip : keysym = 0xdcb -let _Thai_lochula : keysym = 0xdcc -let _Thai_oang : keysym = 0xdcd -let _Thai_honokhuk : keysym = 0xdce -let _Thai_paiyannoi : keysym = 0xdcf -let _Thai_saraa : keysym = 0xdd0 -let _Thai_maihanakat : keysym = 0xdd1 -let _Thai_saraaa : keysym = 0xdd2 -let _Thai_saraam : keysym = 0xdd3 -let _Thai_sarai : keysym = 0xdd4 -let _Thai_saraii : keysym = 0xdd5 -let _Thai_saraue : keysym = 0xdd6 -let _Thai_sarauee : keysym = 0xdd7 -let _Thai_sarau : keysym = 0xdd8 -let _Thai_sarauu : keysym = 0xdd9 -let _Thai_phinthu : keysym = 0xdda -let _Thai_maihanakat_maitho : keysym = 0xdde -let _Thai_baht : keysym = 0xddf -let _Thai_sarae : keysym = 0xde0 -let _Thai_saraae : keysym = 0xde1 -let _Thai_sarao : keysym = 0xde2 -let _Thai_saraaimaimuan : keysym = 0xde3 -let _Thai_saraaimaimalai : keysym = 0xde4 -let _Thai_lakkhangyao : keysym = 0xde5 -let _Thai_maiyamok : keysym = 0xde6 -let _Thai_maitaikhu : keysym = 0xde7 -let _Thai_maiek : keysym = 0xde8 -let _Thai_maitho : keysym = 0xde9 -let _Thai_maitri : keysym = 0xdea -let _Thai_maichattawa : keysym = 0xdeb -let _Thai_thanthakhat : keysym = 0xdec -let _Thai_nikhahit : keysym = 0xded -let _Thai_leksun : keysym = 0xdf0 -let _Thai_leknung : keysym = 0xdf1 -let _Thai_leksong : keysym = 0xdf2 -let _Thai_leksam : keysym = 0xdf3 -let _Thai_leksi : keysym = 0xdf4 -let _Thai_lekha : keysym = 0xdf5 -let _Thai_lekhok : keysym = 0xdf6 -let _Thai_lekchet : keysym = 0xdf7 -let _Thai_lekpaet : keysym = 0xdf8 -let _Thai_lekkao : keysym = 0xdf9 -let _Hangul : keysym = 0xff31 -let _Hangul_Start : keysym = 0xff32 -let _Hangul_End : keysym = 0xff33 -let _Hangul_Hanja : keysym = 0xff34 -let _Hangul_Jamo : keysym = 0xff35 -let _Hangul_Romaja : keysym = 0xff36 -let _Hangul_Codeinput : keysym = 0xff37 -let _Hangul_Jeonja : keysym = 0xff38 -let _Hangul_Banja : keysym = 0xff39 -let _Hangul_PreHanja : keysym = 0xff3a -let _Hangul_PostHanja : keysym = 0xff3b -let _Hangul_SingleCandidate : keysym = 0xff3c -let _Hangul_MultipleCandidate : keysym = 0xff3d -let _Hangul_PreviousCandidate : keysym = 0xff3e -let _Hangul_Special : keysym = 0xff3f -let _Hangul_switch : keysym = 0xFF7E -let _Hangul_Kiyeog : keysym = 0xea1 -let _Hangul_SsangKiyeog : keysym = 0xea2 -let _Hangul_KiyeogSios : keysym = 0xea3 -let _Hangul_Nieun : keysym = 0xea4 -let _Hangul_NieunJieuj : keysym = 0xea5 -let _Hangul_NieunHieuh : keysym = 0xea6 -let _Hangul_Dikeud : keysym = 0xea7 -let _Hangul_SsangDikeud : keysym = 0xea8 -let _Hangul_Rieul : keysym = 0xea9 -let _Hangul_RieulKiyeog : keysym = 0xeaa -let _Hangul_RieulMieum : keysym = 0xeab -let _Hangul_RieulPieub : keysym = 0xeac -let _Hangul_RieulSios : keysym = 0xead -let _Hangul_RieulTieut : keysym = 0xeae -let _Hangul_RieulPhieuf : keysym = 0xeaf -let _Hangul_RieulHieuh : keysym = 0xeb0 -let _Hangul_Mieum : keysym = 0xeb1 -let _Hangul_Pieub : keysym = 0xeb2 -let _Hangul_SsangPieub : keysym = 0xeb3 -let _Hangul_PieubSios : keysym = 0xeb4 -let _Hangul_Sios : keysym = 0xeb5 -let _Hangul_SsangSios : keysym = 0xeb6 -let _Hangul_Ieung : keysym = 0xeb7 -let _Hangul_Jieuj : keysym = 0xeb8 -let _Hangul_SsangJieuj : keysym = 0xeb9 -let _Hangul_Cieuc : keysym = 0xeba -let _Hangul_Khieuq : keysym = 0xebb -let _Hangul_Tieut : keysym = 0xebc -let _Hangul_Phieuf : keysym = 0xebd -let _Hangul_Hieuh : keysym = 0xebe -let _Hangul_A : keysym = 0xebf -let _Hangul_AE : keysym = 0xec0 -let _Hangul_YA : keysym = 0xec1 -let _Hangul_YAE : keysym = 0xec2 -let _Hangul_EO : keysym = 0xec3 -let _Hangul_E : keysym = 0xec4 -let _Hangul_YEO : keysym = 0xec5 -let _Hangul_YE : keysym = 0xec6 -let _Hangul_O : keysym = 0xec7 -let _Hangul_WA : keysym = 0xec8 -let _Hangul_WAE : keysym = 0xec9 -let _Hangul_OE : keysym = 0xeca -let _Hangul_YO : keysym = 0xecb -let _Hangul_U : keysym = 0xecc -let _Hangul_WEO : keysym = 0xecd -let _Hangul_WE : keysym = 0xece -let _Hangul_WI : keysym = 0xecf -let _Hangul_YU : keysym = 0xed0 -let _Hangul_EU : keysym = 0xed1 -let _Hangul_YI : keysym = 0xed2 -let _Hangul_I : keysym = 0xed3 -let _Hangul_J_Kiyeog : keysym = 0xed4 -let _Hangul_J_SsangKiyeog : keysym = 0xed5 -let _Hangul_J_KiyeogSios : keysym = 0xed6 -let _Hangul_J_Nieun : keysym = 0xed7 -let _Hangul_J_NieunJieuj : keysym = 0xed8 -let _Hangul_J_NieunHieuh : keysym = 0xed9 -let _Hangul_J_Dikeud : keysym = 0xeda -let _Hangul_J_Rieul : keysym = 0xedb -let _Hangul_J_RieulKiyeog : keysym = 0xedc -let _Hangul_J_RieulMieum : keysym = 0xedd -let _Hangul_J_RieulPieub : keysym = 0xede -let _Hangul_J_RieulSios : keysym = 0xedf -let _Hangul_J_RieulTieut : keysym = 0xee0 -let _Hangul_J_RieulPhieuf : keysym = 0xee1 -let _Hangul_J_RieulHieuh : keysym = 0xee2 -let _Hangul_J_Mieum : keysym = 0xee3 -let _Hangul_J_Pieub : keysym = 0xee4 -let _Hangul_J_PieubSios : keysym = 0xee5 -let _Hangul_J_Sios : keysym = 0xee6 -let _Hangul_J_SsangSios : keysym = 0xee7 -let _Hangul_J_Ieung : keysym = 0xee8 -let _Hangul_J_Jieuj : keysym = 0xee9 -let _Hangul_J_Cieuc : keysym = 0xeea -let _Hangul_J_Khieuq : keysym = 0xeeb -let _Hangul_J_Tieut : keysym = 0xeec -let _Hangul_J_Phieuf : keysym = 0xeed -let _Hangul_J_Hieuh : keysym = 0xeee -let _Hangul_RieulYeorinHieuh : keysym = 0xeef -let _Hangul_SunkyeongeumMieum : keysym = 0xef0 -let _Hangul_SunkyeongeumPieub : keysym = 0xef1 -let _Hangul_PanSios : keysym = 0xef2 -let _Hangul_KkogjiDalrinIeung : keysym = 0xef3 -let _Hangul_SunkyeongeumPhieuf : keysym = 0xef4 -let _Hangul_YeorinHieuh : keysym = 0xef5 -let _Hangul_AraeA : keysym = 0xef6 -let _Hangul_AraeAE : keysym = 0xef7 -let _Hangul_J_PanSios : keysym = 0xef8 -let _Hangul_J_KkogjiDalrinIeung : keysym = 0xef9 -let _Hangul_J_YeorinHieuh : keysym = 0xefa -let _Korean_Won : keysym = 0xeff diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gdk_tags.var b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gdk_tags.var deleted file mode 100644 index a443fc039..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gdk_tags.var +++ /dev/null @@ -1,165 +0,0 @@ -(* $Id$ *) - -exception ml_raise_gdk - -type gdkEventType = "GDK_" - [ `NOTHING | `DELETE | `DESTROY | `EXPOSE | `MOTION_NOTIFY | `BUTTON_PRESS - | `TWO_BUTTON_PRESS "GDK_2BUTTON_PRESS" - | `THREE_BUTTON_PRESS "GDK_3BUTTON_PRESS" - | `BUTTON_RELEASE | `KEY_PRESS - | `KEY_RELEASE | `ENTER_NOTIFY | `LEAVE_NOTIFY | `FOCUS_CHANGE - | `CONFIGURE | `MAP | `UNMAP | `PROPERTY_NOTIFY | `SELECTION_CLEAR - | `SELECTION_REQUEST | `SELECTION_NOTIFY | `PROXIMITY_IN - | `PROXIMITY_OUT - | `DRAG_ENTER | `DRAG_LEAVE | `DRAG_MOTION | `DRAG_STATUS - | `DROP_START | `DROP_FINISHED | `CLIENT_EVENT | `VISIBILITY_NOTIFY - | `NO_EXPOSE ] - -type event_mask = "GDK_" - [ `EXPOSURE - | `POINTER_MOTION | `POINTER_MOTION_HINT - | `BUTTON_MOTION | `BUTTON1_MOTION | `BUTTON2_MOTION | `BUTTON3_MOTION - | `BUTTON_PRESS | `BUTTON_RELEASE - | `KEY_PRESS | `KEY_RELEASE - | `ENTER_NOTIFY | `LEAVE_NOTIFY | `FOCUS_CHANGE - | `STRUCTURE | `PROPERTY_CHANGE | `VISIBILITY_NOTIFY - | `PROXIMITY_IN | `PROXIMITY_OUT | `SUBSTRUCTURE - | `ALL_EVENTS ] "_MASK" - -type public extension_events = "GDK_EXTENSION_EVENTS_" - [ `NONE | `ALL | `CURSOR ] - -type gdkVisibilityState = "GDK_VISIBILITY_" - [ `UNOBSCURED | `PARTIAL | `FULLY_OBSCURED ] - -type gdkInputSource = "GDK_SOURCE_" - [ `MOUSE | `PEN | `ERASER | `CURSOR ] - -type gdkCrossingMode = "GDK_CROSSING_" - [ `NORMAL | `GRAB | `UNGRAB ] - -type gdkNotifyType = "GDK_NOTIFY_" - [ `ANCESTOR | `VIRTUAL | `INFERIOR | `NONLINEAR | `NONLINEAR_VIRTUAL - | `UNKNOWN ] - -type gdkFillRule = "GDK_" - [ `EVEN_ODD_RULE | `WINDING_RULE ] - -type gdkOverlapType = "GDK_OVERLAP_RECTANGLE_" - [ `IN | `OUT | `PART ] - -type gdkFunction = "GDK_" - [ `COPY | `INVERT | `XOR ] - -type gdkFill = "GDK_" - [ `SOLID | `TILED | `STIPPLED | `OPAQUE_STIPPLED ] - -type gdkSubwindowMode = "GDK_" - [ `CLIP_BY_CHILDREN | `INCLUDE_INFERIORS ] - -type gdkLineStyle = "GDK_LINE_" - [ `SOLID | `ON_OFF_DASH | `DOUBLE_DASH ] - -type gdkCapStyle = "GDK_CAP_" - [ `NOT_LAST | `BUTT | `ROUND | `PROJECTING ] - -type gdkJoinStyle = "GDK_JOIN_" - [ `MITER | `ROUND | `BEVEL ] - -type gdkModifier = "GDK_" - [ `SHIFT | `LOCK | `CONTROL | `MOD1 | `MOD2 | `MOD3 | `MOD4 | `MOD5 - | `BUTTON1 | `BUTTON2 | `BUTTON3 | `BUTTON4 | `BUTTON5 ] "_MASK" - -type gdkImageType = "GDK_IMAGE_" - [ `NORMAL | `SHARED | `FASTEST ] - -type gdkVisualType = "GDK_VISUAL_" - [ `STATIC_GRAY | `GRAYSCALE | `STATIC_COLOR | `PSEUDO_COLOR - | `TRUE_COLOR | `DIRECT_COLOR ] - -type gdkFontType = "GDK_FONT_" - [ `FONT | `FONTSET ] - -type gdkDragAction = "GDK_ACTION_" - [ `DEFAULT | `COPY | `MOVE | `LINK | `PRIVATE | `ASK ] - -type gdkCursorType = "GDK_" [ - | `NUM_GLYPHS - | `X_CURSOR - | `ARROW - | `BASED_ARROW_DOWN - | `BASED_ARROW_UP - | `BOAT - | `BOGOSITY - | `BOTTOM_LEFT_CORNER - | `BOTTOM_RIGHT_CORNER - | `BOTTOM_SIDE - | `BOTTOM_TEE - | `BOX_SPIRAL - | `CENTER_PTR - | `CIRCLE - | `CLOCK - | `COFFEE_MUG - | `CROSS - | `CROSS_REVERSE - | `CROSSHAIR - | `DIAMOND_CROSS - | `DOT - | `DOTBOX - | `DOUBLE_ARROW - | `DRAFT_LARGE - | `DRAFT_SMALL - | `DRAPED_BOX - | `EXCHANGE - | `FLEUR - | `GOBBLER - | `GUMBY - | `HAND1 - | `HAND2 - | `HEART - | `ICON - | `IRON_CROSS - | `LEFT_PTR - | `LEFT_SIDE - | `LEFT_TEE - | `LEFTBUTTON - | `LL_ANGLE - | `LR_ANGLE - | `MAN - | `MIDDLEBUTTON - | `MOUSE - | `PENCIL - | `PIRATE - | `PLUS - | `QUESTION_ARROW - | `RIGHT_PTR - | `RIGHT_SIDE - | `RIGHT_TEE - | `RIGHTBUTTON - | `RTL_LOGO - | `SAILBOAT - | `SB_DOWN_ARROW - | `SB_H_DOUBLE_ARROW - | `SB_LEFT_ARROW - | `SB_RIGHT_ARROW - | `SB_UP_ARROW - | `SB_V_DOUBLE_ARROW - | `SHUTTLE - | `SIZING - | `SPIDER - | `SPRAYCAN - | `STAR - | `TARGET - | `TCROSS - | `TOP_LEFT_ARROW - | `TOP_LEFT_CORNER - | `TOP_RIGHT_CORNER - | `TOP_SIDE - | `TOP_TEE - | `TREK - | `UL_ANGLE - | `UMBRELLA - | `UR_ANGLE - | `WATCH - | `XTERM - ] diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/glGtk.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/glGtk.ml deleted file mode 100644 index c7020a4fd..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/glGtk.ml +++ /dev/null @@ -1,86 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk - -type visual_options = [ - | `USE_GL - | `BUFFER_SIZE of int - | `LEVEL of int - | `RGBA - | `DOUBLEBUFFER - | `STEREO - | `AUX_BUFFERS of int - | `RED_SIZE of int - | `GREEN_SIZE of int - | `BLUE_SIZE of int - | `ALPHA_SIZE of int - | `DEPTH_SIZE of int - | `STENCIL_SIZE of int - | `ACCUM_GREEN_SIZE of int - | `ACCUM_ALPHA_SIZE of int -] - -type gl_area = [`widget|`drawing|`glarea] - -module Raw = struct - external create : - visual_options list -> share:[>`glarea] optobj -> gl_area obj - = "ml_gtk_gl_area_new" - - external swap_buffers : [>`glarea] obj -> unit - = "ml_gtk_gl_area_swapbuffers" - - external make_current : [>`glarea] obj -> bool - = "ml_gtk_gl_area_make_current" -end - -class area_signals obj = -object (connect) - inherit GObj.widget_signals obj - method display ~callback = - (new GObj.event_signals ~after obj)#expose ~callback: - begin fun ev -> - if GdkEvent.Expose.count ev = 0 then - if Raw.make_current obj then callback () - else prerr_endline "GlGtk-WARNING **: could not make current"; - true - end - method reshape ~callback = - (new GObj.event_signals ~after obj)#configure ~callback: - begin fun ev -> - if Raw.make_current obj then begin - callback ~width:(GdkEvent.Configure.width ev) - ~height:(GdkEvent.Configure.height ev) - end - else prerr_endline "GlGtk-WARNING **: could not make current"; - true - end - method realize ~callback = - let connect = new GObj.misc_signals ~after (GtkBase.Widget.coerce obj) in - connect#realize ~callback: - begin fun ev -> - if Raw.make_current obj then callback () - else prerr_endline "GlGtk-WARNING **: could not make current" - end -end - -class area obj = object (self) - inherit GObj.widget (obj : gl_area obj) - method as_area = obj - method event = new GObj.event_ops obj - method connect = new area_signals obj - method set_size = GtkMisc.DrawingArea.size obj - method swap_buffers () = Raw.swap_buffers obj - method make_current () = - if not (Raw.make_current obj) then - raise (Gl.GLerror "make_current") -end - -let area options ?share ?(width=0) ?(height=0) ?packing ?show () = - let share = - match share with Some (x : area) -> Some x#as_area | None -> None in - let w = Raw.create options ~share:(Gpointer.optboxed share) in - if width <> 0 || height <> 0 then GtkMisc.DrawingArea.size w ~width ~height; - GtkBase.Widget.add_events w [`EXPOSURE]; - GObj.pack_return (new area w) ~packing ~show diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/glGtk.mli b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/glGtk.mli deleted file mode 100644 index 599f24a09..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/glGtk.mli +++ /dev/null @@ -1,63 +0,0 @@ -(* $Id$ *) - -open Gtk -open GObj - -type visual_options = [ - `USE_GL - | `BUFFER_SIZE of int - | `LEVEL of int - | `RGBA - | `DOUBLEBUFFER - | `STEREO - | `AUX_BUFFERS of int - | `RED_SIZE of int - | `GREEN_SIZE of int - | `BLUE_SIZE of int - | `ALPHA_SIZE of int - | `DEPTH_SIZE of int - | `STENCIL_SIZE of int - | `ACCUM_GREEN_SIZE of int - | `ACCUM_ALPHA_SIZE of int -] -type gl_area = [`widget|`drawing|`glarea] - -module Raw : - sig - external create : - visual_options list -> share:[>`glarea] optobj -> gl_area obj - = "ml_gtk_gl_area_new" - external swap_buffers : [>`glarea] obj -> unit - = "ml_gtk_gl_area_swapbuffers" - external make_current : [>`glarea] obj -> bool - = "ml_gtk_gl_area_make_current" - end - -class area_signals : 'a obj -> - object - inherit widget_signals - constraint 'a = [>`glarea|`widget] - val obj : 'a obj - method display : callback:(unit -> unit) -> GtkSignal.id - method realize : callback:(unit -> unit) -> GtkSignal.id - method reshape : - callback:(width:int -> height:int -> unit) -> GtkSignal.id - end - -class area : gl_area obj -> - object - inherit widget - val obj : gl_area obj - method event : event_ops - method as_area : gl_area obj - method connect : area_signals - method make_current : unit -> unit - method set_size : width:int -> height:int -> unit - method swap_buffers : unit -> unit - end - -val area : - visual_options list -> - ?share:area -> - ?width:int -> - ?height:int -> ?packing:(widget -> unit) -> ?show:bool -> unit -> area diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/glib.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/glib.ml deleted file mode 100644 index 2fd014099..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/glib.ml +++ /dev/null @@ -1,21 +0,0 @@ -(* $Id$ *) - -type warning_func = string -> unit - -external set_warning_handler : (string -> unit) -> warning_func - = "ml_g_set_warning_handler" - -type print_func = string -> unit - -external set_print_handler : (string -> unit) -> print_func - = "ml_g_set_print_handler" - -module Main = struct - type t - external create : bool -> t = "ml_g_main_new" - external iteration : bool -> bool = "ml_g_main_iteration" - external pending : unit -> bool = "ml_g_main_pending" - external is_running : t -> bool = "ml_g_main_is_running" - external quit : t -> unit = "ml_g_main_quit" - external destroy : t -> unit = "ml_g_main_destroy" -end diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gpointer.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gpointer.ml deleted file mode 100644 index 7d28a1f9d..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gpointer.ml +++ /dev/null @@ -1,41 +0,0 @@ -(* $Id$ *) - -(* marked pointers *) -type 'a optaddr - -let optaddr : 'a option -> 'a optaddr = - function - None -> Obj.magic 0 - | Some x -> Obj.magic x - -(* naked pointers *) -type optstring - -external get_null : unit -> optstring = "ml_get_null" -let raw_null = get_null () - -let optstring : string option -> optstring = - function - None -> raw_null - | Some x -> Obj.magic x - -(* boxed pointers *) -type boxed -let boxed_null : boxed = Obj.magic (0, raw_null) - -type 'a optboxed - -let optboxed : 'a option -> 'a optboxed = - function - None -> Obj.magic boxed_null - | Some obj -> Obj.magic obj - -let may_box ~f obj : 'a optboxed = - match obj with - None -> Obj.magic boxed_null - | Some obj -> Obj.magic (f obj : 'a) - -(* Exceptions *) - -exception Null -let _ = Callback.register_exception "null_pointer" Null diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtk.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtk.ml deleted file mode 100644 index 0c7892e6f..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtk.ml +++ /dev/null @@ -1,158 +0,0 @@ -(* $Id$ *) - -exception Error of string -exception Warning of string -exception Cannot_cast of string * string -type 'a obj -type 'a optobj = 'a obj Gpointer.optboxed -type clampf = float - -module Tags = struct - type arrow_type = [ `UP|`DOWN|`LEFT|`RIGHT ] - type attach_options = [ `EXPAND|`SHRINK|`FILL ] - type direction_type = [ `TAB_FORWARD|`TAB_BACKWARD|`UP|`DOWN|`LEFT|`RIGHT ] - type justification = [ `LEFT|`RIGHT|`CENTER|`FILL ] - type match_type = [ `ALL|`ALL_TAIL|`HEAD|`TAIL|`EXACT|`LAST ] - type metric_type = [ `PIXELS|`INCHES|`CENTIMETERS ] - type orientation = [ `HORIZONTAL|`VERTICAL ] - type corner_type = [ `TOP_LEFT|`BOTTOM_LEFT|`TOP_RIGHT|`BOTTOM_RIGHT ] - type pack_type = [ `START|`END ] - type path_type = [ `WIDGET|`WIDGET_CLASS|`CLASS ] - type policy_type = [ `ALWAYS|`AUTOMATIC|`NEVER ] - type position = [ `LEFT|`RIGHT|`TOP|`BOTTOM ] - type preview_type = [ `COLOR|`GRAYSCALE ] - type relief_style = [ `NORMAL|`HALF|`NONE ] - type resize_mode = [ `PARENT|`QUEUE|`IMMEDIATE ] - type signal_run_type = [ `FIRST|`LAST|`BOTH|`NO_RECURSE|`ACTION|`NO_HOOKS ] - type scroll_type = - [ `NONE|`STEP_FORWARD|`STEP_BACKWARD|`PAGE_BACKWARD|`PAGE_FORWARD|`JUMP ] - type selection_mode = [ `SINGLE|`BROWSE|`MULTIPLE|`EXTENDED ] - type shadow_type = [ `NONE|`IN|`OUT|`ETCHED_IN|`ETCHED_OUT ] - type state_type = [ `NORMAL|`ACTIVE|`PRELIGHT|`SELECTED|`INSENSITIVE ] - type submenu_direction = [ `LEFT|`RIGHT ] - type submenu_placement = [ `TOP_BOTTOM|`LEFT_RIGHT ] - type toolbar_style = [ `ICONS|`TEXT|`BOTH ] - type trough_type = [ `NONE|`START|`END|`JUMP ] - type update_type = [ `CONTINUOUS|`DISCONTINUOUS|`DELAYED ] - type visibility = [ `NONE|`PARTIAL|`FULL ] - type window_position = [ `NONE|`CENTER|`MOUSE|`CENTER_ALWAYS ] - type window_type = [ `TOPLEVEL|`DIALOG|`POPUP ] - type sort_type = [ `ASCENDING|`DESCENDING ] - type fundamental_type = - [ `INVALID|`NONE|`CHAR|`BOOL|`INT|`UINT|`LONG|`ULONG|`FLOAT|`DOUBLE - |`STRING|`ENUM|`FLAGS|`BOXED|`FOREIGN|`CALLBACK|`ARGS|`POINTER - |`SIGNAL|`C_CALLBACK|`OBJECT ] - - type accel_flag = [ `VISIBLE|`SIGNAL_VISIBLE|`LOCKED ] - type button_box_style = [ `DEFAULT_STYLE|`SPREAD|`EDGE|`START|`END ] - type expand_type = [ `X|`Y|`BOTH|`NONE ] - type packer_options = [ `PACK_EXPAND|`FILL_X|`FILL_Y ] - type side_type = [ `TOP|`BOTTOM|`LEFT|`RIGHT ] - type anchor_type = [ `CENTER|`NORTH|`NW|`NE|`SOUTH|`SW|`SE|`WEST|`EAST ] - type update_policy = [ `ALWAYS|`IF_VALID|`SNAP_TO_TICKS ] - type cell_type = [ `EMPTY|`TEXT|`PIXMAP|`PIXTEXT|`WIDGET ] - type button_action = [ `SELECTS|`DRAGS|`EXPANDS ] - type calendar_display_options = - [ `SHOW_HEADING|`SHOW_DAY_NAMES|`NO_MONTH_CHANGE|`SHOW_WEEK_NUMBERS - |`WEEK_START_MONDAY ] - type spin_button_update_policy = [ `ALWAYS|`IF_VALID ] - type spin_type = - [ `STEP_FORWARD|`STEP_BACKWARD|`PAGE_FORWARD|`PAGE_BACKWARD - |`HOME|`END|`USER_DEFINED of float ] - type progress_bar_style = [ `CONTINUOUS|`DISCRETE ] - type progress_bar_orientation = - [ `LEFT_TO_RIGHT|`RIGHT_TO_LEFT|`BOTTOM_TO_TOP|`TOP_TO_BOTTOM ] - type dest_defaults = [ `MOTION|`HIGHLIGHT|`DROP|`ALL ] - type target_flags = [ `SAME_APP|`SAME_WIDGET ] - type font_metric_type = [ `PIXELS|`POINTS ] - type font_type = [ `BITMAP|`SCALABLE|`SCALABLE_BITMAP|`ALL ] - type font_filter_type = [ `BASE|`USER ] -end -open Tags - -type gtk_type -type gtk_class - -type accel_group - -type style -type 'a group = 'a obj option - -type statusbar_message -type statusbar_context - -type color = { red: float; green: float; blue: float; opacity: float } -type rectangle = { x: int; y: int; width: int; height: int } -type target_entry = { target: string; flags: target_flags list; info: int } - -type data = [`data] -type adjustment = [`data|`adjustment] -type tooltips = [`data|`tooltips] -type widget = [`widget] -type container = [`widget|`container] -type alignment = [`widget|`container|`bin|`alignment] -type event_box = [`widget|`container|`bin|`eventbox] -type frame = [`widget|`container|`bin|`frame] -type aspect_frame = [`widget|`container|`bin|`frame|`aspect] -type handle_box = [`widget|`container|`bin|`handlebox] -type invisible = [`widget|`container|`bin|`invisible] -type item = [`widget|`container|`bin|`item] -type list_item = [`widget|`container|`bin|`item|`listitem] -type menu_item = [`widget|`container|`bin|`item|`menuitem] -type check_menu_item = [`widget|`container|`bin|`item|`menuitem|`checkmenuitem] -type radio_menu_item = - [`widget|`container|`bin|`item|`menuitem|`checkmenuitem|`radiomenuitem] -type tree_item = [`widget|`container|`bin|`item|`treeitem] -type viewport = [`widget|`container|`bin|`viewport] -type window = [`widget|`container|`bin|`window] -type color_selection_dialog = [`widget|`container|`window|`colorseldialog] -type dialog = [`widget|`container|`bin|`window|`dialog] -type input_dialog = [`widget|`container|`bin|`window|`dialog|`inputdialog] -type file_selection = [`widget|`container|`bin|`window|`filesel] -type font_selection_dialog = [`widget|`container|`bin|`window|`fontseldialog] -type plug = [`widget|`container|`bin|`window|`plug] -type box = [`widget|`container|`box] -type button_box = [`widget|`container|`box|`bbox] -type gamma_curve = [`widget|`container|`bbox|`gamma] -type color_selection = [`widget|`container|`box|`colorsel] -type combo = [`widget|`container|`box|`combo] -type statusbar = [`widget|`container|`box|`statusbar] -type button = [`widget|`container|`button] -type toggle_button = [`widget|`container|`button|`toggle] -type radio_button = [`widget|`container|`button|`toggle|`radio] -type option_menu = [`widget|`container|`button|`optionmenu] -type clist = [`widget|`container|`clist] -type fixed = [`widget|`container|`fixed] -type layout = [`widget|`container|`layout] -type liste = [`widget|`container|`list] -type menu_shell = [`widget|`container|`menushell] -type menu = [`widget|`container|`menushell|`menu] -type menu_bar = [`widget|`container|`menushell|`menubar] -type notebook = [`widget|`container|`notebook] -type font_selection = [`widget|`container|`notebook|`fontsel] -type packer = [`widget|`container|`packer] -type paned = [`widget|`container|`paned] -type scrolled_window = [`widget|`container|`scrolled] -type socket = [`widget|`container|`socket] -type table = [`widget|`container|`table] -type toolbar = [`widget|`container|`toolbar] -type tree = [`widget|`container|`tree] -type calendar = [`widget|`calendar] -type drawing_area = [`widget|`drawing] -type editable = [`widget|`editable] -type entry = [`widget|`editable|`entry] -type spin_button = [`widget|`editable|`entry|`spinbutton] -type text = [`widget|`editable|`text] -type misc = [`widget|`misc] -type arrow = [`widget|`misc|`arrow] -type image = [`widget|`misc|`image] -type label = [`widget|`misc|`label] -type tips_query = [`widget|`misc|`label|`tipsquery] -type pixmap = [`widget|`misc|`pixmap] -type progress = [`widget|`progress] -type progress_bar = [`widget|`progress|`progressbar] -type range = [`widget|`range] -type scale = [`widget|`range|`scale] -type scrollbar = [`widget|`range|`scrollbar] -type ruler = [`widget|`ruler] -type separator = [`widget|`separator] diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkArgv.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkArgv.ml deleted file mode 100644 index 5e60c8d5e..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkArgv.ml +++ /dev/null @@ -1,106 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk - -type data = - | NONE - | CHAR of char - | BOOL of bool - | INT of int - | FLOAT of float - | STRING of string option - | OBJECT of unit obj option - | POINTER of Gpointer.boxed option - -type 'a result = - [ `NONE - | `CHAR of char | `BOOL of bool | `INT of int - | `UINT of int32 | `LONG of nativeint | `ULONG of nativeint - | `FLOAT of float | `DOUBLE of float - | `STRING of string option | `ENUM of int | `FLAGS of int32 - | `BOXED of Gpointer.boxed option - | `POINTER of Gpointer.boxed option - | `OBJECT of 'a obj option ] - -module Arg = struct - type t - external shift : t -> pos:int -> t = "ml_gtk_arg_shift" - external get_type : t -> gtk_type = "ml_gtk_arg_get_type" - external get : t -> data = "ml_gtk_arg_get" - external set_retloc : t -> 'a result -> unit = "ml_gtk_arg_set_retloc" - external get_pointer : t -> Gpointer.boxed = "ml_gtk_arg_get_pointer" - external get_nativeint : t -> nativeint = "ml_gtk_arg_get_nativeint" - - (* Safely get an argument *) - (* - external get_char : t -> char = "ml_gtk_arg_get_char" - external get_bool : t -> bool = "ml_gtk_arg_get_bool" - external get_int : t -> int = "ml_gtk_arg_get_int" - external get_float : t -> float = "ml_gtk_arg_get_float" - external get_string : t -> string option = "ml_gtk_arg_get_string" - external get_object : t -> unit obj option = "ml_gtk_arg_get_object" - *) - (* Safely set a result - Beware: this is not the opposite of get, arguments and results - are two different ways to use GtkArg. *) - (* - external set_char : t -> char -> unit = "ml_gtk_arg_set_char" - external set_bool : t -> bool -> unit = "ml_gtk_arg_set_bool" - external set_int : t -> int -> unit = "ml_gtk_arg_set_int" - external set_nativeint : t -> nativeint -> unit = "ml_gtk_arg_set_nativeint" - external set_float : t -> float -> unit = "ml_gtk_arg_set_float" - external set_string : t -> string -> unit = "ml_gtk_arg_set_string" - external set_pointer : t -> Gpointer.boxed -> unit = "ml_gtk_arg_set_pointer" - external set_object : t -> 'a obj -> unit = "ml_gtk_arg_set_object" - *) -end - -open Arg -type raw_obj -type t = { referent: raw_obj; nargs: int; args: Arg.t } -let nth arg ~pos = - if pos < 0 || pos >= arg.nargs then invalid_arg "GtkArg.Vect.nth"; - shift arg.args ~pos -let result arg = - if arg.nargs < 0 then invalid_arg "GtkArgv.result"; - shift arg.args ~pos:arg.nargs -external wrap_object : raw_obj -> unit obj = "Val_GtkObject" -let referent arg = - if arg.referent == Obj.magic (-1) then invalid_arg "GtkArgv.referent"; - wrap_object arg.referent -let get_result_type arg = get_type (result arg) -let get_type arg ~pos = get_type (nth arg ~pos) -let get arg ~pos = get (nth arg ~pos) -let set_result arg = set_retloc (result arg) - -let get_args arg = - let rec loop args ~pos = - if pos < 0 then args - else loop (get arg ~pos :: args) ~pos:(pos-1) - in loop [] ~pos:(arg.nargs - 1) - -let get_pointer arg ~pos = get_pointer (nth arg ~pos) -let get_nativeint arg ~pos = get_nativeint (nth arg ~pos) - -(* -let get_char arg ~pos = get_char (nth arg ~pos) -let get_bool arg ~pos = get_bool (nth arg ~pos) -let get_int arg ~pos = get_int (nth arg ~pos) -let get_float arg ~pos = get_float (nth arg ~pos) -let get_string arg ~pos = get_string (nth arg ~pos) -let get_object arg ~pos = get_object (nth arg ~pos) -let set_result_char arg = set_char (result arg) -let set_result_bool arg = set_bool (result arg) -let set_result_int arg = set_int (result arg) -let set_result_nativeint arg = set_nativeint (result arg) -let set_result_float arg = set_float (result arg) -let set_result_string arg = set_string (result arg) -let set_result_pointer arg = set_pointer (result arg) -let set_result_object arg = set_object (result arg) -*) - -external string_at_pointer : ?pos:int -> ?len:int -> Gpointer.boxed -> string - = "ml_string_at_pointer" -external int_at_pointer : Gpointer.boxed -> int - = "ml_int_at_pointer" diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkBase.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkBase.ml deleted file mode 100644 index 3b1a00fdf..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkBase.ml +++ /dev/null @@ -1,414 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open Tags - -module Type = struct - external name : gtk_type -> string = "ml_gtk_type_name" - external from_name : string -> gtk_type = "ml_gtk_type_from_name" - external parent : gtk_type -> gtk_type = "ml_gtk_type_parent" - external get_class : gtk_type -> gtk_class = "ml_gtk_type_class" - external parent_class : gtk_type -> gtk_class = "ml_gtk_type_parent_class" - external is_a : gtk_type -> gtk_type -> bool = "ml_gtk_type_is_a" - external fundamental : gtk_type -> fundamental_type - = "ml_gtk_type_fundamental" -end - -module Object = struct - external get_type : 'a obj -> gtk_type = "ml_gtk_object_type" - let is_a obj name = - Type.is_a (get_type obj) (Type.from_name name) - external destroy : 'a obj -> unit = "ml_gtk_object_destroy" - external coerce : 'a obj -> unit obj = "%identity" - external unsafe_cast : 'a obj -> 'b obj = "%identity" - let try_cast w name = - if is_a w name then unsafe_cast w - else raise (Cannot_cast(Type.name(get_type w), name)) - let get_id (obj : 'a obj) : int = (snd (Obj.magic obj) lor 0) - module Signals = struct - open GtkSignal - let destroy : (_,_) t = - { name = "destroy"; marshaller = marshal_unit } - end -end - -module Widget = struct - let cast w : widget obj = Object.try_cast w "GtkWidget" - external coerce : [>`widget] obj -> widget obj = "%identity" - external unparent : [>`widget] obj -> unit = "ml_gtk_widget_unparent" - external show : [>`widget] obj -> unit = "ml_gtk_widget_show" - external show_now : [>`widget] obj -> unit = "ml_gtk_widget_show_now" - external show_all : [>`widget] obj -> unit = "ml_gtk_widget_show_all" - external hide : [>`widget] obj -> unit = "ml_gtk_widget_hide" - external hide_all : [>`widget] obj -> unit = "ml_gtk_widget_hide_all" - external map : [>`widget] obj -> unit = "ml_gtk_widget_map" - external unmap : [>`widget] obj -> unit = "ml_gtk_widget_unmap" - external realize : [>`widget] obj -> unit = "ml_gtk_widget_realize" - external unrealize : [>`widget] obj -> unit = "ml_gtk_widget_unrealize" - external queue_draw : [>`widget] obj -> unit = "ml_gtk_widget_queue_draw" - external queue_resize : [>`widget] obj -> unit = "ml_gtk_widget_queue_resize" - external draw : [>`widget] obj -> Gdk.Rectangle.t option -> unit - = "ml_gtk_widget_draw" - external draw_focus : [>`widget] obj -> unit - = "ml_gtk_widget_draw_focus" - external draw_default : [>`widget] obj -> unit - = "ml_gtk_widget_draw_default" - external event : [>`widget] obj -> 'a Gdk.event -> bool - = "ml_gtk_widget_event" - external activate : [>`widget] obj -> bool - = "ml_gtk_widget_activate" - external reparent : [>`widget] obj -> [>`widget] obj -> unit - = "ml_gtk_widget_reparent" - external popup : [>`widget] obj -> x:int -> y:int -> unit - = "ml_gtk_widget_popup" - external intersect : - [>`widget] obj -> Gdk.Rectangle.t -> Gdk.Rectangle.t option - = "ml_gtk_widget_intersect" - external set_can_default : [>`widget] obj -> bool -> unit - = "ml_gtk_widget_set_can_default" - external set_can_focus : [>`widget] obj -> bool -> unit - = "ml_gtk_widget_set_can_focus" - external grab_focus : [>`widget] obj -> unit - = "ml_gtk_widget_grab_focus" - external grab_default : [>`widget] obj -> unit - = "ml_gtk_widget_grab_default" - external set_name : [>`widget] obj -> string -> unit - = "ml_gtk_widget_set_name" - external get_name : [>`widget] obj -> string - = "ml_gtk_widget_get_name" - external set_state : [>`widget] obj -> state_type -> unit - = "ml_gtk_widget_set_state" - external set_sensitive : [>`widget] obj -> bool -> unit - = "ml_gtk_widget_set_sensitive" - external set_uposition : [>`widget] obj -> x:int -> y:int -> unit - = "ml_gtk_widget_set_uposition" - external set_usize : [>`widget] obj -> width:int -> height:int -> unit - = "ml_gtk_widget_set_usize" - external add_events : [>`widget] obj -> Gdk.Tags.event_mask list -> unit - = "ml_gtk_widget_add_events" - external set_events : [>`widget] obj -> Gdk.Tags.event_mask list -> unit - = "ml_gtk_widget_set_events" - external set_extension_events : - [>`widget] obj -> Gdk.Tags.extension_events -> unit - = "ml_gtk_widget_set_extension_events" - external get_toplevel : [>`widget] obj -> widget obj - = "ml_gtk_widget_get_toplevel" - external get_ancestor : [>`widget] obj -> gtk_type -> widget obj - = "ml_gtk_widget_get_ancestor" - external get_colormap : [>`widget] obj -> Gdk.colormap - = "ml_gtk_widget_get_colormap" - external get_visual : [>`widget] obj -> Gdk.visual - = "ml_gtk_widget_get_visual" - external get_pointer : [>`widget] obj -> int * int - = "ml_gtk_widget_get_pointer" - external is_ancestor : [>`widget] obj -> [>`widget] obj -> bool - = "ml_gtk_widget_is_ancestor" - external set_style : [>`widget] obj -> style -> unit - = "ml_gtk_widget_set_style" - external set_rc_style : [>`widget] obj -> unit - = "ml_gtk_widget_set_rc_style" - external ensure_style : [>`widget] obj -> unit - = "ml_gtk_widget_ensure_style" - external get_style : [>`widget] obj -> style - = "ml_gtk_widget_get_style" - external restore_default_style : [>`widget] obj -> unit - = "ml_gtk_widget_restore_default_style" - external add_accelerator : - ([>`widget] as 'a) obj -> sgn:('a,unit->unit) GtkSignal.t -> - accel_group -> key:Gdk.keysym -> ?modi:Gdk.Tags.modifier list -> - ?flags:accel_flag list -> unit - = "ml_gtk_widget_add_accelerator_bc" "ml_gtk_widget_add_accelerator" - external remove_accelerator : - [>`widget] obj -> accel_group -> - key:Gdk.keysym -> ?modi:Gdk.Tags.modifier list -> unit - = "ml_gtk_widget_remove_accelerator" - external lock_accelerators : [>`widget] obj -> unit - = "ml_gtk_widget_lock_accelerators" - external unlock_accelerators : [>`widget] obj -> unit - = "ml_gtk_widget_unlock_accelerators" - external accelerators_locked : [>`widget] obj -> bool - = "ml_gtk_widget_accelerators_locked" - external window : [>`widget] obj -> Gdk.window - = "ml_GtkWidget_window" - external visible : [>`widget] obj -> bool - = "ml_GTK_WIDGET_VISIBLE" - external has_focus : [>`widget] obj -> bool - = "ml_GTK_WIDGET_HAS_FOCUS" - external parent : [>`widget] obj -> widget obj - = "ml_gtk_widget_parent" - external set_app_paintable : [>`widget] obj -> bool -> unit - = "ml_gtk_widget_set_app_paintable" - external allocation : [>`widget] obj -> rectangle - = "ml_gtk_widget_allocation" - external set_colormap : [>`widget] obj -> Gdk.colormap -> unit - = "ml_gtk_widget_set_colormap" - external set_visual : [>`widget] obj -> Gdk.visual -> unit - = "ml_gtk_widget_set_visual" - external set_default_colormap : Gdk.colormap -> unit - = "ml_gtk_widget_set_default_colormap" - external set_default_visual : Gdk.visual -> unit - = "ml_gtk_widget_set_default_visual" - external get_default_colormap : unit -> Gdk.colormap - = "ml_gtk_widget_get_default_colormap" - external get_default_visual : unit -> Gdk.visual - = "ml_gtk_widget_get_default_visual" - external push_colormap : Gdk.colormap -> unit - = "ml_gtk_widget_push_colormap" - external push_visual : Gdk.visual -> unit - = "ml_gtk_widget_push_visual" - external pop_colormap : unit -> unit - = "ml_gtk_widget_pop_colormap" - external pop_visual : unit -> unit - = "ml_gtk_widget_pop_visual" - module Signals = struct - open GtkArgv - open GtkSignal - let marshal f _ = function - | OBJECT(Some p) :: _ -> f (cast p) - | _ -> invalid_arg "GtkBase.Widget.Signals.marshal" - let marshal_opt f _ = function - | OBJECT(Some obj) :: _ -> f (Some (cast obj)) - | OBJECT None :: _ -> f None - | _ -> invalid_arg "GtkBase.Widget.Signals.marshal_opt" - let marshal_style f _ = function - | POINTER p :: _ -> f (Obj.magic p : Gtk.style option) - | _ -> invalid_arg "GtkBase.Widget.Signals.marshal_opt" - let marshal_drag1 f _ = function - | POINTER(Some p) :: _ -> f (Obj.magic p : Gdk.drag_context) - | _ -> invalid_arg "GtkBase.Widget.Signals.marshal_drag1" - let marshal_drag2 f _ = function - | POINTER(Some p) :: INT time :: _ -> - f (Obj.magic p : Gdk.drag_context) ~time - | _ -> invalid_arg "GtkBase.Widget.Signals.marshal_drag2" - let marshal_drag3 f argv = function - | POINTER(Some p) :: INT x :: INT y :: INT time :: _ -> - let res = f (Obj.magic p : Gdk.drag_context) ~x ~y ~time - in GtkArgv.set_result argv (`BOOL res) - | _ -> invalid_arg "GtkBase.Widget.Signals.marshal_drag3" - let show : ([>`widget],_) t = - { name = "show"; marshaller = marshal_unit } - let hide : ([>`widget],_) t = - { name = "hide"; marshaller = marshal_unit } - let map : ([>`widget],_) t = - { name = "map"; marshaller = marshal_unit } - let unmap : ([>`widget],_) t = - { name = "unmap"; marshaller = marshal_unit } - let realize : ([>`widget],_) t = - { name = "realize"; marshaller = marshal_unit } - let draw : ([>`widget],_) t = - let marshal f _ = function - | POINTER(Some p) :: _ -> f (Obj.magic p : Gdk.Rectangle.t) - | _ -> invalid_arg "GtkBase.Widget.Signals.marshal_draw" - in { name = "draw"; marshaller = marshal } - let draw_focus : ([>`widget],_) t = - { name = "draw_focus"; marshaller = marshal_unit } - let draw_default : ([>`widget],_) t = - { name = "draw_default"; marshaller = marshal_unit } - external val_state : int -> state_type = "ml_Val_state_type" - let state_changed : ([>`widget],_) t = - let marshal f = marshal_int (fun x -> f (val_state x)) in - { name = "state_changed"; marshaller = marshal } - let parent_set : ([>`widget],_) t = - { name = "parent_set"; marshaller = marshal_opt } - let style_set : ([>`widget],_) t = - { name = "style_set"; marshaller = marshal_style } - let drag_begin : ([>`widget],_) t = - { name = "drag_begin"; marshaller = marshal_drag1 } - let drag_end : ([>`widget],_) t = - { name = "drag_end"; marshaller = marshal_drag1 } - let drag_data_delete : ([>`widget],_) t = - { name = "drag_data_delete"; marshaller = marshal_drag1 } - let drag_leave : ([>`widget],_) t = - { name = "drag_leave"; marshaller = marshal_drag2 } - let drag_motion : ([>`widget],_) t = - { name = "drag_motion"; marshaller = marshal_drag3 } - let drag_drop : ([>`widget],_) t = - { name = "drag_drop"; marshaller = marshal_drag3 } - let drag_data_get : ([>`widget],_) t = - let marshal f argv = function - | POINTER(Some p) :: POINTER(Some q) :: INT info :: INT time :: _ -> - f (Obj.magic p : Gdk.drag_context) - (Obj.magic q : GtkData.Selection.t) - ~info - ~time - | _ -> invalid_arg "GtkBase.Widget.Signals.marshal_drag_data_get" - in - { name = "drag_data_get"; marshaller = marshal } - let drag_data_received : ([>`widget],_) t = - let marshal f _ = function - | POINTER(Some p) :: INT x :: INT y :: POINTER(Some q) :: - INT info :: INT time :: _ -> - f (Obj.magic p : Gdk.drag_context) ~x ~y - (Obj.magic q : GtkData.Selection.t) - ~info ~time - | _ -> invalid_arg "GtkBase.Widget.Signals.marshal_drag_data_received" - in - { name = "drag_data_received"; marshaller = marshal } - - module Event = struct - let marshal f argv = function - | [POINTER(Some p)] -> - let ev = GdkEvent.unsafe_copy p in - GtkArgv.set_result argv (`BOOL(f ev)) - | _ -> invalid_arg "GtkBase.Widget.Event.marshal" - let any : ([>`widget], Gdk.Tags.event_type Gdk.event -> bool) t = - { name = "event"; marshaller = marshal } - let button_press : ([>`widget], GdkEvent.Button.t -> bool) t = - { name = "button_press_event"; marshaller = marshal } - let button_release : ([>`widget], GdkEvent.Button.t -> bool) t = - { name = "button_release_event"; marshaller = marshal } - let motion_notify : ([>`widget], GdkEvent.Motion.t -> bool) t = - { name = "motion_notify_event"; marshaller = marshal } - let delete : ([>`widget], [`DELETE] Gdk.event -> bool) t = - { name = "delete_event"; marshaller = marshal } - let destroy : ([>`widget], [`DESTROY] Gdk.event -> bool) t = - { name = "destroy_event"; marshaller = marshal } - let expose : ([>`widget], GdkEvent.Expose.t -> bool) t = - { name = "expose_event"; marshaller = marshal } - let key_press : ([>`widget], GdkEvent.Key.t -> bool) t = - { name = "key_press_event"; marshaller = marshal } - let key_release : ([>`widget], GdkEvent.Key.t -> bool) t = - { name = "key_release_event"; marshaller = marshal } - let enter_notify : ([>`widget], GdkEvent.Crossing.t -> bool) t = - { name = "enter_notify_event"; marshaller = marshal } - let leave_notify : ([>`widget], GdkEvent.Crossing.t -> bool) t = - { name = "leave_notify_event"; marshaller = marshal } - let configure : ([>`widget], GdkEvent.Configure.t -> bool) t = - { name = "configure_event"; marshaller = marshal } - let focus_in : ([>`widget], GdkEvent.Focus.t -> bool) t = - { name = "focus_in_event"; marshaller = marshal } - let focus_out : ([>`widget], GdkEvent.Focus.t -> bool) t = - { name = "focus_out_event"; marshaller = marshal } - let map : ([>`widget], [`MAP] Gdk.event -> bool) t = - { name = "map_event"; marshaller = marshal } - let unmap : ([>`widget], [`UNMAP] Gdk.event -> bool) t = - { name = "unmap_event"; marshaller = marshal } - let property_notify : ([>`widget], GdkEvent.Property.t -> bool) t = - { name = "property_notify_event"; marshaller = marshal } - let selection_clear : ([>`widget], GdkEvent.Selection.t -> bool) t = - { name = "selection_clear_event"; marshaller = marshal } - let selection_request : ([>`widget], GdkEvent.Selection.t -> bool) t = - { name = "selection_request_event"; marshaller = marshal } - let selection_notify : ([>`widget], GdkEvent.Selection.t -> bool) t = - { name = "selection_notify_event"; marshaller = marshal } - let proximity_in : ([>`widget], GdkEvent.Proximity.t -> bool) t = - { name = "proximity_in_event"; marshaller = marshal } - let proximity_out : ([>`widget], GdkEvent.Proximity.t -> bool) t = - { name = "proximity_out_event"; marshaller = marshal } - end - end -end - -module Container = struct - let cast w : container obj = Object.try_cast w "GtkContainer" - external coerce : [>`container] obj -> container obj = "%identity" - external set_border_width : [>`container] obj -> int -> unit - = "ml_gtk_container_set_border_width" - external set_resize_mode : [>`container] obj -> resize_mode -> unit - = "ml_gtk_container_set_resize_mode" - external add : [>`container] obj -> [>`widget] obj -> unit - = "ml_gtk_container_add" - external remove : [>`container] obj -> [>`widget] obj -> unit - = "ml_gtk_container_remove" - let set ?border_width ?(width = -2) ?(height = -2) w = - may border_width ~f:(set_border_width w); - if width <> -2 || height <> -2 then - Widget.set_usize w ?width ?height - external foreach : [>`container] obj -> f:(widget obj-> unit) -> unit - = "ml_gtk_container_foreach" - let children w = - let l = ref [] in - foreach w ~f:(fun c -> l := c :: !l); - List.rev !l - external focus : [>`container] obj -> direction_type -> bool - = "ml_gtk_container_focus" - (* Called by Widget.grab_focus *) - external set_focus_child : [>`container] obj -> [>`widget] optobj -> unit - = "ml_gtk_container_set_focus_child" - external set_focus_vadjustment : - [>`container] obj -> [>`adjustment] optobj -> unit - = "ml_gtk_container_set_focus_vadjustment" - external set_focus_hadjustment : - [>`container] obj -> [>`adjustment] optobj -> unit - = "ml_gtk_container_set_focus_hadjustment" - module Signals = struct - open GtkSignal - let add : ([>`container],_) t = - { name = "add"; marshaller = Widget.Signals.marshal } - let remove : ([>`container],_) t = - { name = "remove"; marshaller = Widget.Signals.marshal } - let need_resize : ([>`container],_) t = - let marshal f argv _ = GtkArgv.set_result argv (`BOOL(f ())) in - { name = "need_resize"; marshaller = marshal } - external val_direction : int -> direction_type = "ml_Val_direction_type" - let focus : ([>`container],_) t = - let marshal f argv = function - | GtkArgv.INT dir :: _ -> - GtkArgv.set_result argv (`BOOL(f (val_direction dir))) - | _ -> invalid_arg "GtkBase.Container.Signals.marshal_focus" - in { name = "focus"; marshaller = marshal } - end -end - -module Item = struct - let cast w : item obj = Object.try_cast w "GtkItem" - external coerce : [>`item] obj -> item obj = "%identity" - external select : [>`item] obj -> unit = "ml_gtk_item_select" - external deselect : [>`item] obj -> unit = "ml_gtk_item_deselect" - external toggle : [>`item] obj -> unit = "ml_gtk_item_toggle" - module Signals = struct - open GtkSignal - let select : ([>`item],_) t = - { name = "select"; marshaller = marshal_unit } - let deselect : ([>`item],_) t = - { name = "deselect"; marshaller = marshal_unit } - let toggle : ([>`item],_) t = - { name = "toggle"; marshaller = marshal_unit } - end -end - - -module DnD = struct - external dest_set : - [>`widget] obj -> flags:dest_defaults list -> - targets:target_entry array -> actions:Gdk.Tags.drag_action list -> unit - = "ml_gtk_drag_dest_set" - external dest_unset : [>`widget] obj -> unit - = "ml_gtk_drag_dest_unset" - external finish : - Gdk.drag_context -> success:bool -> del:bool -> time:int -> unit - = "ml_gtk_drag_finish" - external get_data : - [>`widget] obj -> Gdk.drag_context -> target:Gdk.atom -> time:int -> unit - = "ml_gtk_drag_get_data" - external get_source_widget : Gdk.drag_context -> widget obj - = "ml_gtk_drag_get_source_widget" - external highlight : [>`widget] obj -> unit = "ml_gtk_drag_highlight" - external unhighlight : [>`widget] obj -> unit = "ml_gtk_drag_unhighlight" - external set_icon_widget : - Gdk.drag_context -> [>`widget] obj -> hot_x:int -> hot_y:int -> unit - = "ml_gtk_drag_set_icon_widget" - external set_icon_pixmap : - Gdk.drag_context -> colormap:Gdk.colormap -> - Gdk.pixmap -> ?mask:Gdk.bitmap -> hot_x:int -> hot_y:int -> unit - = "ml_gtk_drag_set_icon_pixmap_bc" "ml_gtk_drag_set_icon_pixmap" - external set_icon_default : Gdk.drag_context -> unit - = "ml_gtk_drag_set_icon_default" - external set_default_icon : - colormap:Gdk.colormap -> Gdk.pixmap -> - ?mask:Gdk.bitmap -> hot_x:int -> hot_y:int -> unit - = "ml_gtk_drag_set_default_icon" - external source_set : - [>`widget] obj -> ?modi:Gdk.Tags.modifier list -> - targets:target_entry array -> actions:Gdk.Tags.drag_action list -> unit - = "ml_gtk_drag_source_set" - external source_set_icon : - [>`widget] obj -> colormap:Gdk.colormap -> - Gdk.pixmap -> ?mask:Gdk.bitmap -> unit - = "ml_gtk_drag_source_set_icon" - external source_unset : [>`widget] obj -> unit - = "ml_gtk_drag_source_unset" -(* external dest_handle_event : [>`widget] -> *) -end - diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkBin.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkBin.ml deleted file mode 100644 index ab4cc7e85..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkBin.ml +++ /dev/null @@ -1,170 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open Tags -open GtkBase - -module Alignment = struct - let cast w : alignment obj = Object.try_cast w "GtkAlignment" - external create : - x:clampf -> y:clampf -> xscale:clampf -> yscale:clampf -> alignment obj - = "ml_gtk_alignment_new" - let create ?(x=0.5) ?(y=0.5) ?(xscale=1.) ?(yscale=1.) () = - create ~x ~y ~xscale ~yscale - external set : - ?x:clampf -> ?y:clampf -> ?xscale:clampf -> ?yscale:clampf -> - [>`alignment] obj -> unit - = "ml_gtk_alignment_set" -end - -module EventBox = struct - let cast w : event_box obj = Object.try_cast w "GtkEventBox" - external create : unit -> event_box obj = "ml_gtk_event_box_new" -end - -module Frame = struct - let cast w : frame obj = Object.try_cast w "GtkFrame" - external coerce : [>`frame] obj -> frame obj = "%identity" - external create : string -> frame obj = "ml_gtk_frame_new" - external set_label : [>`frame] obj -> string -> unit - = "ml_gtk_frame_set_label" - external set_label_align : [>`frame] obj -> x:clampf -> y:clampf -> unit - = "ml_gtk_frame_set_label_align" - external set_shadow_type : [>`frame] obj -> shadow_type -> unit - = "ml_gtk_frame_set_shadow_type" - external get_label_xalign : [>`frame] obj -> float - = "ml_gtk_frame_get_label_xalign" - external get_label_yalign : [>`frame] obj -> float - = "ml_gtk_frame_get_label_yalign" - let set_label_align' ?x ?y w = - set_label_align w - ~x:(may_default get_label_xalign w ~opt:x) - ~y:(may_default get_label_yalign w ~opt:y) - let set ?label ?label_xalign ?label_yalign ?shadow_type w = - may label ~f:(set_label w); - if label_xalign <> None || label_yalign <> None then - set_label_align' w ?x:label_xalign ?y:label_yalign; - may shadow_type ~f:(set_shadow_type w) -end - -module AspectFrame = struct - let cast w : aspect_frame obj = Object.try_cast w "GtkAspectFrame" - external create : - label:string -> xalign:clampf -> - yalign:clampf -> ratio:float -> obey_child:bool -> aspect_frame obj - = "ml_gtk_aspect_frame_new" - let create ?(label="") ?(xalign=0.5) ?(yalign=0.5) - ?(ratio=1.0) ?(obey_child=true) () = - create ~label ~xalign ~yalign ~ratio ~obey_child - external set : - [>`aspect] obj -> - xalign:clampf -> yalign:clampf -> ratio:float -> obey_child:bool -> unit - = "ml_gtk_aspect_frame_set" - external get_xalign : [>`aspect] obj -> clampf - = "ml_gtk_aspect_frame_get_xalign" - external get_yalign : [>`aspect] obj -> clampf - = "ml_gtk_aspect_frame_get_yalign" - external get_ratio : [>`aspect] obj -> clampf - = "ml_gtk_aspect_frame_get_ratio" - external get_obey_child : [>`aspect] obj -> bool - = "ml_gtk_aspect_frame_get_obey_child" - let set ?xalign ?yalign ?ratio ?obey_child w = - if xalign <> None || yalign <> None || ratio <> None || obey_child <> None - then set w - ~xalign:(may_default get_xalign w ~opt:xalign) - ~yalign:(may_default get_yalign w ~opt:yalign) - ~ratio:(may_default get_ratio w ~opt:ratio) - ~obey_child:(may_default get_obey_child w ~opt:obey_child) -end - -module HandleBox = struct - let cast w : handle_box obj = Object.try_cast w "GtkHandleBox" - external create : unit -> handle_box obj = "ml_gtk_handle_box_new" - external set_shadow_type : [>`handlebox] obj -> shadow_type -> unit = - "ml_gtk_handle_box_set_shadow_type" - external set_handle_position : [>`handlebox] obj -> position -> unit = - "ml_gtk_handle_box_set_handle_position" - external set_snap_edge : [>`handlebox] obj -> position -> unit = - "ml_gtk_handle_box_set_snap_edge" - module Signals = struct - open GtkSignal - let child_attached : ([>`handlebox],_) t = - { name = "child_attached"; marshaller = Widget.Signals.marshal } - let child_detached : ([>`handlebox],_) t = - { name = "child_detached"; marshaller = Widget.Signals.marshal } - end -end - -module Viewport = struct - let cast w : viewport obj = Object.try_cast w "GtkViewport" - external create : - [>`adjustment] optobj -> [>`adjustment] optobj -> viewport obj - = "ml_gtk_viewport_new" - let create ?hadjustment ?vadjustment () = - create (Gpointer.optboxed hadjustment) (Gpointer.optboxed vadjustment) - external get_hadjustment : [>`viewport] obj -> adjustment obj - = "ml_gtk_viewport_get_hadjustment" - external get_vadjustment : [>`viewport] obj -> adjustment obj - = "ml_gtk_viewport_get_vadjustment" - external set_hadjustment : [>`viewport] obj -> [>`adjustment] obj -> unit - = "ml_gtk_viewport_set_hadjustment" - external set_vadjustment : [>`viewport] obj -> [>`adjustment] obj -> unit - = "ml_gtk_viewport_set_vadjustment" - external set_shadow_type : [>`viewport] obj -> shadow_type -> unit - = "ml_gtk_viewport_set_shadow_type" - let set ?hadjustment ?vadjustment ?shadow_type w = - may hadjustment ~f:(set_hadjustment w); - may vadjustment ~f:(set_vadjustment w); - may shadow_type ~f:(set_shadow_type w) -end - -module ScrolledWindow = struct - let cast w : scrolled_window obj = Object.try_cast w "GtkScrolledWindow" - external create : - [>`adjustment] optobj -> [>`adjustment] optobj -> scrolled_window obj - = "ml_gtk_scrolled_window_new" - let create ?hadjustment ?vadjustment () = - create (Gpointer.optboxed hadjustment) (Gpointer.optboxed vadjustment) - external set_hadjustment : [>`scrolled] obj -> [>`adjustment] obj -> unit - = "ml_gtk_scrolled_window_set_hadjustment" - external set_vadjustment : [>`scrolled] obj -> [>`adjustment] obj -> unit - = "ml_gtk_scrolled_window_set_vadjustment" - external get_hadjustment : [>`scrolled] obj -> adjustment obj - = "ml_gtk_scrolled_window_get_hadjustment" - external get_vadjustment : [>`scrolled] obj -> adjustment obj - = "ml_gtk_scrolled_window_get_vadjustment" - external set_policy : [>`scrolled] obj -> policy_type -> policy_type -> unit - = "ml_gtk_scrolled_window_set_policy" - external add_with_viewport : [>`scrolled] obj -> [>`widget] obj -> unit - = "ml_gtk_scrolled_window_add_with_viewport" - external get_hscrollbar_policy : [>`scrolled] obj -> policy_type - = "ml_gtk_scrolled_window_get_hscrollbar_policy" - external get_vscrollbar_policy : [>`scrolled] obj -> policy_type - = "ml_gtk_scrolled_window_get_vscrollbar_policy" - external set_placement : [>`scrolled] obj -> corner_type -> unit - = "ml_gtk_scrolled_window_set_placement" - let set_policy' ?hpolicy ?vpolicy w = - set_policy w - (may_default get_hscrollbar_policy w ~opt:hpolicy) - (may_default get_vscrollbar_policy w ~opt:vpolicy) - let set ?hpolicy ?vpolicy ?placement w = - if hpolicy <> None || vpolicy <> None then - set_policy' w ?hpolicy ?vpolicy; - may placement ~f:(set_placement w) -end - -module Socket = struct - let cast w : socket obj = Object.try_cast w "GtkSocket" - external coerce : [>`socket] obj -> socket obj = "%identity" - external create : unit -> socket obj = "ml_gtk_socket_new" - external steal : [>`socket] obj -> Gdk.xid -> unit = "ml_gtk_socket_steal" -end - -(* -module Invisible = struct - let cast w : socket obj = Object.try_cast w "GtkInvisible" - external coerce : [>`invisible] obj -> invisible obj = "%identity" - external create : unit -> invisible obj = "ml_gtk_invisible_new" -end -*) diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkButton.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkButton.ml deleted file mode 100644 index 6d9ddf500..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkButton.ml +++ /dev/null @@ -1,148 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open Tags -open GtkBase - -module Button = struct - let cast w : button obj = Object.try_cast w "GtkButton" - external coerce : [>`button] obj -> button obj = "%identity" - external create : unit -> button obj = "ml_gtk_button_new" - external create_with_label : string -> button obj - = "ml_gtk_button_new_with_label" - let create ?label () = - match label with None -> create () - | Some x -> create_with_label x - external pressed : [>`button] obj -> unit = "ml_gtk_button_pressed" - external released : [>`button] obj -> unit = "ml_gtk_button_released" - external clicked : [>`button] obj -> unit = "ml_gtk_button_clicked" - external enter : [>`button] obj -> unit = "ml_gtk_button_enter" - external leave : [>`button] obj -> unit = "ml_gtk_button_leave" - module Signals = struct - open GtkSignal - let pressed : ([>`button],_) t = - { name = "pressed"; marshaller = marshal_unit } - let released : ([>`button],_) t = - { name = "released"; marshaller = marshal_unit } - let clicked : ([>`button],_) t = - { name = "clicked"; marshaller = marshal_unit } - let enter : ([>`button],_) t = - { name = "enter"; marshaller = marshal_unit } - let leave : ([>`button],_) t = - { name = "leave"; marshaller = marshal_unit } - end -end - -module ToggleButton = struct - let cast w : toggle_button obj = Object.try_cast w "GtkToggleButton" - external coerce : [>`toggle] obj -> toggle_button obj = "%identity" - external toggle_button_create : unit -> toggle_button obj - = "ml_gtk_toggle_button_new" - external toggle_button_create_with_label : string -> toggle_button obj - = "ml_gtk_toggle_button_new_with_label" - external check_button_create : unit -> toggle_button obj - = "ml_gtk_check_button_new" - external check_button_create_with_label : string -> toggle_button obj - = "ml_gtk_check_button_new_with_label" - let create_toggle ?label () = - match label with None -> toggle_button_create () - | Some label -> toggle_button_create_with_label label - let create_check ?label () = - match label with None -> check_button_create () - | Some label -> check_button_create_with_label label - external set_mode : [>`toggle] obj -> bool -> unit - = "ml_gtk_toggle_button_set_mode" - external set_active : [>`toggle] obj -> bool -> unit - = "ml_gtk_toggle_button_set_active" - let set ?active ?draw_indicator w = - may ~f:(set_mode w) draw_indicator; - may ~f:(set_active w) active - external get_active : [>`toggle] obj -> bool - = "ml_gtk_toggle_button_get_active" - external toggled : [>`toggle] obj -> unit - = "ml_gtk_toggle_button_toggled" - module Signals = struct - open GtkSignal - let toggled : ([>`toggle],_) t = - { name = "toggled"; marshaller = marshal_unit } - end -end - -module RadioButton = struct - let cast w : radio_button obj = Object.try_cast w "GtkRadioButton" - external create : radio_button group -> radio_button obj - = "ml_gtk_radio_button_new" - external create_with_label : radio_button group -> string -> radio_button obj - = "ml_gtk_radio_button_new_with_label" - external set_group : [>`radio] obj -> radio_button group -> unit - = "ml_gtk_radio_button_set_group" - let create ?(group = None) ?label () = - match label with None -> create group - | Some label -> create_with_label group label -end - -module Toolbar = struct - let cast w : toolbar obj = Object.try_cast w "GtkToolbar" - external create : orientation -> style:toolbar_style -> toolbar obj - = "ml_gtk_toolbar_new" - let create dir ?(style=`BOTH) () = create dir ~style - external insert_space : [>`toolbar] obj -> pos:int -> unit - = "ml_gtk_toolbar_insert_space" - let insert_space w ?(pos = -1) () = insert_space w ~pos - external insert_button : - [>`toolbar] obj -> kind:[`BUTTON|`TOGGLEBUTTON|`RADIOBUTTON] -> - text:string -> tooltip:string -> - tooltip_private:string -> - icon:[>`widget] optobj -> pos:int -> button obj - = "ml_gtk_toolbar_insert_element_bc" "ml_gtk_toolbar_insert_element" - let insert_button w ?(kind=`BUTTON) ?(text="") ?(tooltip="") - ?(tooltip_private="") ?icon ?(pos = -1) ?callback () = - let b =insert_button w ~kind ~text ~tooltip ~tooltip_private ~pos - ~icon:(Gpointer.optboxed icon) - in - match callback with - | None -> b - | Some c -> GtkSignal.connect b ~sgn:Button.Signals.clicked - ~callback: c; b - external insert_widget : - [>`toolbar] obj -> [>`widget] obj -> - tooltip:string -> tooltip_private:string -> pos:int -> unit - = "ml_gtk_toolbar_insert_widget" - let insert_widget w ?(tooltip="") ?(tooltip_private="") ?(pos = -1) w' = - insert_widget w w' ~tooltip ~tooltip_private ~pos - external set_orientation : [>`toolbar] obj -> orientation -> unit = - "ml_gtk_toolbar_set_orientation" - external set_style : [>`toolbar] obj -> toolbar_style -> unit = - "ml_gtk_toolbar_set_style" - external set_space_size : [>`toolbar] obj -> int -> unit = - "ml_gtk_toolbar_set_space_size" - external set_space_style : [>`toolbar] obj -> [ `EMPTY|`LINE ] -> unit = - "ml_gtk_toolbar_set_space_style" - external set_tooltips : [>`toolbar] obj -> bool -> unit = - "ml_gtk_toolbar_set_tooltips" - external set_button_relief : [>`toolbar] obj -> relief_style -> unit = - "ml_gtk_toolbar_set_button_relief" - external get_button_relief : [>`toolbar] obj -> relief_style = - "ml_gtk_toolbar_get_button_relief" - let set ?orientation ?style ?space_size - ?space_style ?tooltips ?button_relief w = - may orientation ~f:(set_orientation w); - may style ~f:(set_style w); - may space_size ~f:(set_space_size w); - may space_style ~f:(set_space_style w); - may tooltips ~f:(set_tooltips w); - may button_relief ~f:(set_button_relief w) - module Signals = struct - open GtkSignal - external val_orientation : int -> orientation = "ml_Val_orientation" - external val_toolbar_style : int -> toolbar_style - = "ml_Val_toolbar_style" - let orientation_changed : ([>`toolbar],_) t = - let marshal f = marshal_int (fun x -> f (val_orientation x)) in - { name = "orientation_changed"; marshaller = marshal } - let style_changed : ([>`toolbar],_) t = - let marshal f = marshal_int (fun x -> f (val_toolbar_style x)) in - { name = "style_changed"; marshaller = marshal } - end -end diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkData.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkData.ml deleted file mode 100644 index 5b7f90ec0..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkData.ml +++ /dev/null @@ -1,148 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open Tags - -module AccelGroup = struct - external create : unit -> accel_group = "ml_gtk_accel_group_new" - external activate : - accel_group -> key:Gdk.keysym -> ?modi:Gdk.Tags.modifier list -> bool - = "ml_gtk_accel_group_activate" - external groups_activate : - 'a obj -> key:Gdk.keysym -> ?modi:Gdk.Tags.modifier list -> bool - = "ml_gtk_accel_groups_activate" - external attach : accel_group -> 'a obj -> unit - = "ml_gtk_accel_group_attach" - external detach : accel_group -> 'a obj -> unit - = "ml_gtk_accel_group_detach" - external lock : accel_group -> unit - = "ml_gtk_accel_group_lock" - external unlock : accel_group -> unit - = "ml_gtk_accel_group_unlock" - external lock_entry : - accel_group -> key:Gdk.keysym -> ?modi:Gdk.Tags.modifier list -> bool - = "ml_gtk_accel_group_lock_entry" - external add : - accel_group -> key:Gdk.keysym -> ?modi:Gdk.Tags.modifier list -> - ?flags:accel_flag list -> - call:'a obj -> sgn:('a,unit->unit) GtkSignal.t -> unit - = "ml_gtk_accel_group_add_bc" "ml_gtk_accel_group_add" - external remove : - accel_group -> - key:Gdk.keysym -> ?modi:Gdk.Tags.modifier list -> call:'a obj -> unit - = "ml_gtk_accel_group_remove" - external valid : key:Gdk.keysym -> ?modi:Gdk.Tags.modifier list -> bool - = "ml_gtk_accelerator_valid" - external set_default_mod_mask : Gdk.Tags.modifier list option -> unit - = "ml_gtk_accelerator_set_default_mod_mask" -end - -module Style = struct - external create : unit -> style = "ml_gtk_style_new" - external copy : style -> style = "ml_gtk_style_copy" - external attach : style -> Gdk.window -> style = "ml_gtk_style_attach" - external detach : style -> unit = "ml_gtk_style_detach" - external set_background : style -> Gdk.window -> state_type -> unit - = "ml_gtk_style_set_background" - external draw_hline : - style -> Gdk.window -> state_type -> x:int -> x:int -> y:int -> unit - = "ml_gtk_draw_hline_bc" "ml_gtk_draw_hline" - external draw_vline : - style -> Gdk.window -> state_type -> y:int -> y:int -> x:int -> unit - = "ml_gtk_draw_vline_bc" "ml_gtk_draw_vline" - external get_bg : style -> state:state_type -> Gdk.Color.t - = "ml_gtk_style_get_bg" - external set_bg : style -> state:state_type -> color:Gdk.Color.t -> unit - = "ml_gtk_style_set_bg" - external get_dark_gc : style -> state:state_type -> Gdk.gc - = "ml_gtk_style_get_dark_gc" - external get_light_gc : style -> state:state_type -> Gdk.gc - = "ml_gtk_style_get_light_gc" - external get_colormap : style -> Gdk.colormap = "ml_gtk_style_get_colormap" - external get_font : style -> Gdk.font = "ml_gtk_style_get_font" - external set_font : style -> Gdk.font -> unit = "ml_gtk_style_set_font" -(* - let set st ?:background ?:font = - let may_set f = may fun:(f st) in - may_set set_background background; - may_set set_font font -*) -end - -module Data = struct - module Signals = struct - open GtkSignal - let disconnect : ([>`data],_) t = - { name = "disconnect"; marshaller = marshal_unit } - end -end - -module Adjustment = struct - external create : - value:float -> lower:float -> upper:float -> - step_incr:float -> page_incr:float -> page_size:float -> adjustment obj - = "ml_gtk_adjustment_new_bc" "ml_gtk_adjustment_new" - external set_value : [>`adjustment] obj -> float -> unit - = "ml_gtk_adjustment_set_value" - external clamp_page : - [>`adjustment] obj -> lower:float -> upper:float -> unit - = "ml_gtk_adjustment_clamp_page" - external get_lower : [>`adjustment] obj -> float - = "ml_gtk_adjustment_get_lower" - external get_upper : [>`adjustment] obj -> float - = "ml_gtk_adjustment_get_upper" - external get_value : [>`adjustment] obj -> float - = "ml_gtk_adjustment_get_value" - external get_step_increment : [>`adjustment] obj -> float - = "ml_gtk_adjustment_get_step_increment" - external get_page_increment : [>`adjustment] obj -> float - = "ml_gtk_adjustment_get_page_increment" - external get_page_size : [>`adjustment] obj -> float - = "ml_gtk_adjustment_get_page_size" - module Signals = struct - open GtkSignal - let changed : ([>`adjustment],_) t = - { name = "changed"; marshaller = marshal_unit } - let value_changed : ([>`adjustment],_) t = - { name = "value_changed"; marshaller = marshal_unit } - end -end - -module Tooltips = struct - external create : unit -> tooltips obj = "ml_gtk_tooltips_new" - external enable : [>`tooltips] obj -> unit = "ml_gtk_tooltips_enable" - external disable : [>`tooltips] obj -> unit = "ml_gtk_tooltips_disable" - external set_delay : [>`tooltips] obj -> int -> unit - = "ml_gtk_tooltips_set_delay" - external set_tip : - [>`tooltips] obj -> - [>`widget] obj -> ?text:string -> ?privat:string -> unit - = "ml_gtk_tooltips_set_tip" - external set_colors : - [>`tooltips] obj -> - ?foreground:Gdk.Color.t -> ?background:Gdk.Color.t -> unit -> unit - = "ml_gtk_tooltips_set_colors" - let set ?delay ?foreground ?background tt = - may ~f:(set_delay tt) delay; - if foreground <> None || background <> None then - set_colors tt ?foreground ?background () -end - - -module Selection = struct - type t - external selection : t -> Gdk.atom - = "ml_gtk_selection_data_selection" - external target : t -> Gdk.atom - = "ml_gtk_selection_data_target" - external seltype : t -> Gdk.atom - = "ml_gtk_selection_data_type" - external format : t -> int - = "ml_gtk_selection_data_format" - external get_data : t -> string - = "ml_gtk_selection_data_get_data" (* May raise Gpointer.null *) - external set : - t -> typ:Gdk.atom -> format:int -> ?data:string -> unit - = "ml_gtk_selection_data_set" -end diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkEdit.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkEdit.ml deleted file mode 100644 index bef2fedb9..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkEdit.ml +++ /dev/null @@ -1,223 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open Tags -open GtkBase - -module Editable = struct - let cast w : editable obj = Object.try_cast w "GtkEditable" - external coerce : [>`editable] obj -> editable obj = "%identity" - external select_region : [>`editable] obj -> start:int -> stop:int -> unit - = "ml_gtk_editable_select_region" - external insert_text : [>`editable] obj -> string -> pos:int -> int - = "ml_gtk_editable_insert_text" - external delete_text : [>`editable] obj -> start:int -> stop:int -> unit - = "ml_gtk_editable_delete_text" - external get_chars : [>`editable] obj -> start:int -> stop:int -> string - = "ml_gtk_editable_get_chars" - external cut_clipboard : [>`editable] obj -> unit - = "ml_gtk_editable_cut_clipboard" - external copy_clipboard : [>`editable] obj -> unit - = "ml_gtk_editable_copy_clipboard" - external paste_clipboard : [>`editable] obj -> unit - = "ml_gtk_editable_paste_clipboard" - external claim_selection : - [>`editable] obj -> claim:bool -> time:int -> unit - = "ml_gtk_editable_claim_selection" - external delete_selection : [>`editable] obj -> unit - = "ml_gtk_editable_delete_selection" - external changed : [>`editable] obj -> unit = "ml_gtk_editable_changed" - external set_position : [>`editable] obj -> int -> unit - = "ml_gtk_editable_set_position" - external get_position : [>`editable] obj -> int - = "ml_gtk_editable_get_position" - external set_editable : [>`editable] obj -> bool -> unit - = "ml_gtk_editable_set_editable" - external selection_start_pos : [>`editable] obj -> int - = "ml_gtk_editable_selection_start_pos" - external selection_end_pos : [>`editable] obj -> int - = "ml_gtk_editable_selection_end_pos" - external has_selection : [>`editable] obj -> bool - = "ml_gtk_editable_has_selection" - module Signals = struct - open GtkArgv - open GtkSignal - let activate : ([>`editable],_) t = - { name = "activate"; marshaller = marshal_unit } - let changed : ([>`editable],_) t = - { name = "changed"; marshaller = marshal_unit } - let marshal_insert f argv = function - | STRING _ :: INT len :: POINTER(Some pos) :: _ -> - (* XXX These two accesses are implementation-dependent *) - let s = string_at_pointer (get_pointer argv ~pos:0) ~len - and pos = int_at_pointer pos in - f s ~pos - | _ -> invalid_arg "GtkEdit.Editable.Signals.marshal_insert" - let insert_text : ([>`editable],_) t = - { name = "insert_text"; marshaller = marshal_insert } - let marshal_delete f _ = function - | INT start :: INT stop :: _ -> - f ~start ~stop - | _ -> invalid_arg "GtkEdit.Editable.Signals.marshal_delete" - let delete_text : ([>`editable],_) t = - { name = "delete_text"; marshaller = marshal_delete } - end -end - -module Entry = struct - let cast w : entry obj = Object.try_cast w "GtkEntry" - external coerce : [>`entry] obj -> entry obj = "%identity" - external create : unit -> entry obj = "ml_gtk_entry_new" - external create_with_max_length : int -> entry obj - = "ml_gtk_entry_new_with_max_length" - let create ?max_length () = - match max_length with None -> create () - | Some len -> create_with_max_length len - external set_text : [>`entry] obj -> string -> unit - = "ml_gtk_entry_set_text" - external append_text : [>`entry] obj -> string -> unit - = "ml_gtk_entry_append_text" - external prepend_text : [>`entry] obj -> string -> unit - = "ml_gtk_entry_prepend_text" - external get_text : [>`entry] obj -> string = "ml_gtk_entry_get_text" - external set_visibility : [>`entry] obj -> bool -> unit - = "ml_gtk_entry_set_visibility" - external set_max_length : [>`entry] obj -> int -> unit - = "ml_gtk_entry_set_max_length" - let set ?text ?visibility ?max_length w = - let may_set f = may ~f:(f w) in - may_set set_text text; - may_set set_visibility visibility; - may_set set_max_length max_length - external text_length : [>`entry] obj -> int - = "ml_GtkEntry_text_length" -end - -module SpinButton = struct - let cast w : spin_button obj = Object.try_cast w "GtkSpinButton" - external create : - [>`adjustment] optobj -> rate:float -> digits:int -> spin_button obj - = "ml_gtk_spin_button_new" - let create ?adjustment ?(rate=0.5) ?(digits=0) () = - create (Gpointer.optboxed adjustment) ~rate ~digits - external configure : - [>`spinbutton] obj -> adjustment:[>`adjustment] obj -> - rate:float -> digits:int -> unit - = "ml_gtk_spin_button_configure" - external set_adjustment : [>`spinbutton] obj -> [>`adjustment] obj -> unit - = "ml_gtk_spin_button_set_adjustment" - external get_adjustment : [>`spinbutton] obj -> adjustment obj - = "ml_gtk_spin_button_get_adjustment" - external set_digits : [>`spinbutton] obj -> int -> unit - = "ml_gtk_spin_button_set_digits" - external get_value : [>`spinbutton] obj -> float - = "ml_gtk_spin_button_get_value_as_float" - let get_value_as_int w = truncate (get_value w +. 0.5) - external set_value : [>`spinbutton] obj -> float -> unit - = "ml_gtk_spin_button_set_value" - external set_update_policy : - [>`spinbutton] obj -> [`ALWAYS|`IF_VALID] -> unit - = "ml_gtk_spin_button_set_update_policy" - external set_numeric : [>`spinbutton] obj -> bool -> unit - = "ml_gtk_spin_button_set_numeric" - external spin : [>`spinbutton] obj -> spin_type -> unit - = "ml_gtk_spin_button_spin" - external set_wrap : [>`spinbutton] obj -> bool -> unit - = "ml_gtk_spin_button_set_wrap" - external set_shadow_type : [>`spinbutton] obj -> shadow_type -> unit - = "ml_gtk_spin_button_set_shadow_type" - external set_snap_to_ticks : [>`spinbutton] obj -> bool -> unit - = "ml_gtk_spin_button_set_snap_to_ticks" - external update : [>`spinbutton] obj -> unit - = "ml_gtk_spin_button_update" - let set ?adjustment ?digits ?value ?update_policy - ?numeric ?wrap ?shadow_type ?snap_to_ticks w = - let may_set f = may ~f:(f w) in - may_set set_adjustment adjustment; - may_set set_digits digits; - may_set set_value value; - may_set set_update_policy update_policy; - may_set set_numeric numeric; - may_set set_wrap wrap; - may_set set_shadow_type shadow_type; - may_set set_snap_to_ticks snap_to_ticks -end - -module Text = struct - let cast w : text obj = Object.try_cast w "GtkText" - external create : [>`adjustment] optobj -> [>`adjustment] optobj -> text obj - = "ml_gtk_text_new" - let create ?hadjustment ?vadjustment () = - create (Gpointer.optboxed hadjustment) (Gpointer.optboxed vadjustment) - external set_word_wrap : [>`text] obj -> bool -> unit - = "ml_gtk_text_set_word_wrap" - external set_line_wrap : [>`text] obj -> bool -> unit - = "ml_gtk_text_set_line_wrap" - external set_adjustment : - [>`text] obj -> ?horizontal:[>`adjustment] obj -> - ?vertical:[>`adjustment] obj -> unit -> unit - = "ml_gtk_text_set_adjustments" - external get_hadjustment : [>`text] obj -> adjustment obj - = "ml_gtk_text_get_hadj" - external get_vadjustment : [>`text] obj -> adjustment obj - = "ml_gtk_text_get_vadj" - external set_point : [>`text] obj -> int -> unit - = "ml_gtk_text_set_point" - external get_point : [>`text] obj -> int = "ml_gtk_text_get_point" - external get_length : [>`text] obj -> int = "ml_gtk_text_get_length" - external freeze : [>`text] obj -> unit = "ml_gtk_text_freeze" - external thaw : [>`text] obj -> unit = "ml_gtk_text_thaw" - external insert : - [>`text] obj -> ?font:Gdk.font -> ?foreground:Gdk.Color.t -> - ?background:Gdk.Color.t -> string -> unit - = "ml_gtk_text_insert" - let set ?hadjustment ?vadjustment ?word_wrap w = - if hadjustment <> None || vadjustment <> None then - set_adjustment w ?horizontal: hadjustment ?vertical: vadjustment (); - may word_wrap ~f:(set_word_wrap w) -end - -module Combo = struct - let cast w : combo obj = Object.try_cast w "GtkCombo" - external create : unit -> combo obj = "ml_gtk_combo_new" - external set_value_in_list : - [>`combo] obj -> ?required:bool -> ?ok_if_empty:bool -> unit -> unit - = "ml_gtk_combo_set_value_in_list" - external set_use_arrows : [>`combo] obj -> bool -> unit - = "ml_gtk_combo_set_use_arrows" - external set_use_arrows_always : [>`combo] obj -> bool -> unit - = "ml_gtk_combo_set_use_arrows_always" - external set_case_sensitive : [>`combo] obj -> bool -> unit - = "ml_gtk_combo_set_case_sensitive" - external set_item_string : [>`combo] obj -> [>`item] obj -> string -> unit - = "ml_gtk_combo_set_item_string" - external entry : [>`combo] obj -> entry obj= "ml_gtk_combo_entry" - external list : [>`combo] obj -> liste obj= "ml_gtk_combo_list" - let set_popdown_strings combo strings = - GtkList.Liste.clear_items (list combo) ~start:0 ~stop:(-1); - List.iter strings ~f: - begin fun s -> - let li = GtkList.ListItem.create_with_label s in - Widget.show li; - Container.add (list combo) li - end - let set_use_arrows' w (mode : [`NEVER|`DEFAULT|`ALWAYS]) = - let def,always = - match mode with - `NEVER -> false, false - | `DEFAULT -> true, false - | `ALWAYS -> true, true - in - set_use_arrows w def; - set_use_arrows_always w always - let set ?popdown_strings ?use_arrows - ?case_sensitive ?value_in_list ?ok_if_empty w = - may popdown_strings ~f:(set_popdown_strings w); - may use_arrows ~f:(set_use_arrows' w); - may case_sensitive ~f:(set_case_sensitive w); - if value_in_list <> None || ok_if_empty <> None then - set_value_in_list w ?required:value_in_list ?ok_if_empty () - external disable_activate : [>`combo] obj -> unit - = "ml_gtk_combo_disable_activate" -end diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkInit.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkInit.ml deleted file mode 100644 index 5ce40db5f..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkInit.ml +++ /dev/null @@ -1,5 +0,0 @@ -(* $Id$ *) - -(* Does the initialization for toplevels *) - -let locale = GtkMain.Main.init () diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkList.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkList.ml deleted file mode 100644 index 4d2ae0951..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkList.ml +++ /dev/null @@ -1,294 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open Tags -open GtkBase - -module ListItem = struct - let cast w : list_item obj = Object.try_cast w "GtkListItem" - external create : unit -> list_item obj = "ml_gtk_list_item_new" - external create_with_label : string -> list_item obj - = "ml_gtk_list_item_new_with_label" - let create ?label () = - match label with None -> create () - | Some label -> create_with_label label -end - -module Liste = struct - let cast w : liste obj = Object.try_cast w "GtkList" - external create : unit -> liste obj = "ml_gtk_list_new" - external insert_item : - [>`list] obj -> [>`listitem] obj -> pos:int -> unit - = "ml_gtk_list_insert_item" - let insert_items l wl ~pos = - let wl = if pos < 0 then wl else List.rev wl in - List.iter wl ~f:(insert_item l ~pos) - let append_items l = insert_items l ~pos:(-1) - let prepend_items l = insert_items l ~pos:0 - external clear_items : [>`list] obj -> start:int -> stop:int -> unit = - "ml_gtk_list_clear_items" - external select_item : [>`list] obj -> pos:int -> unit - = "ml_gtk_list_select_item" - external unselect_item : [>`list] obj -> pos:int -> unit - = "ml_gtk_list_unselect_item" - external select_child : [>`list] obj -> [>`listitem] obj -> unit - = "ml_gtk_list_select_child" - external unselect_child : [>`list] obj -> [>`listitem] obj -> unit - = "ml_gtk_list_unselect_child" - external child_position : [>`list] obj -> [>`listitem] obj -> int - = "ml_gtk_list_child_position" - external set_selection_mode : [>`list] obj -> selection_mode -> unit - = "ml_gtk_list_set_selection_mode" - module Signals = struct - open GtkSignal - let selection_changed : ([>`list],_) t = - { name = "selection_changed"; marshaller = marshal_unit } - let select_child : ([>`list],_) t = - { name = "select_child"; marshaller = Widget.Signals.marshal } - let unselect_child : ([>`list],_) t = - { name = "unselect_child"; marshaller = Widget.Signals.marshal } - end -end - -module CList = struct - let cast w : clist obj = Object.try_cast w "GtkCList" - external create : cols:int -> clist obj = "ml_gtk_clist_new" - external create_with_titles : string array -> clist obj - = "ml_gtk_clist_new_with_titles" - external get_rows : [>`clist] obj -> int = "ml_gtk_clist_get_rows" - external get_columns : [>`clist] obj -> int = "ml_gtk_clist_get_columns" - external get_focus_row : [>`clist] obj -> int - = "ml_gtk_clist_get_focus_row" - external set_hadjustment : [>`clist] obj -> [>`adjustment] obj -> unit - = "ml_gtk_clist_set_hadjustment" - external set_vadjustment : [>`clist] obj -> [>`adjustment] obj -> unit - = "ml_gtk_clist_set_vadjustment" - external get_hadjustment : [>`clist] obj -> adjustment obj - = "ml_gtk_clist_get_hadjustment" - external get_vadjustment : [>`clist] obj -> adjustment obj - = "ml_gtk_clist_get_vadjustment" - external set_shadow_type : [>`clist] obj -> shadow_type -> unit - = "ml_gtk_clist_set_shadow_type" - external set_selection_mode : [>`clist] obj -> selection_mode -> unit - = "ml_gtk_clist_set_selection_mode" - external set_reorderable : [>`clist] obj -> bool -> unit - = "ml_gtk_clist_set_reorderable" - external set_use_drag_icons : [>`clist] obj -> bool -> unit - = "ml_gtk_clist_set_use_drag_icons" - external set_button_actions : - [>`clist] obj -> int -> button_action list -> unit - = "ml_gtk_clist_set_button_actions" - external freeze : [>`clist] obj -> unit = "ml_gtk_clist_freeze" - external thaw : [>`clist] obj -> unit = "ml_gtk_clist_thaw" - external column_titles_show : [>`clist] obj -> unit - = "ml_gtk_clist_column_titles_show" - external column_titles_hide : [>`clist] obj -> unit - = "ml_gtk_clist_column_titles_hide" - external column_title_active : [>`clist] obj -> int -> unit - = "ml_gtk_clist_column_title_active" - external column_title_passive : [>`clist] obj -> int -> unit - = "ml_gtk_clist_column_title_passive" - external column_titles_active : [>`clist] obj -> unit - = "ml_gtk_clist_column_titles_active" - external column_titles_passive : [>`clist] obj -> unit - = "ml_gtk_clist_column_titles_passive" - external set_column_title : [>`clist] obj -> int -> string -> unit - = "ml_gtk_clist_set_column_title" - external get_column_title : [>`clist] obj -> int -> string - = "ml_gtk_clist_get_column_title" - external set_column_widget : [>`clist] obj -> int -> [>`widget] obj -> unit - = "ml_gtk_clist_set_column_widget" - external get_column_widget : [>`clist] obj -> int -> widget obj - = "ml_gtk_clist_get_column_widget" - external set_column_justification : - [>`clist] obj -> int -> justification -> unit - = "ml_gtk_clist_set_column_justification" - external set_column_visibility : [>`clist] obj -> int -> bool -> unit - = "ml_gtk_clist_set_column_visibility" - external set_column_resizeable : [>`clist] obj -> int -> bool -> unit - = "ml_gtk_clist_set_column_resizeable" - external set_column_auto_resize : [>`clist] obj -> int -> bool -> unit - = "ml_gtk_clist_set_column_auto_resize" - external columns_autosize : [>`clist] obj -> unit - = "ml_gtk_clist_columns_autosize" - external optimal_column_width : [>`clist] obj -> int -> int - = "ml_gtk_clist_optimal_column_width" - external set_column_width : [>`clist] obj -> int -> int -> unit - = "ml_gtk_clist_set_column_width" - external set_column_min_width : [>`clist] obj -> int -> int -> unit - = "ml_gtk_clist_set_column_min_width" - external set_column_max_width : [>`clist] obj -> int -> int -> unit - = "ml_gtk_clist_set_column_max_width" - external set_row_height : [>`clist] obj -> int -> unit - = "ml_gtk_clist_set_row_height" - external moveto : - [>`clist] obj -> - int -> int -> row_align:clampf -> col_align:clampf -> unit - = "ml_gtk_clist_moveto" - external row_is_visible : [>`clist] obj -> int -> visibility - = "ml_gtk_clist_row_is_visible" - external get_cell_type : [>`clist] obj -> int -> int -> cell_type - = "ml_gtk_clist_get_cell_type" - external set_text : [>`clist] obj -> int -> int -> string -> unit - = "ml_gtk_clist_set_text" - external get_text : [>`clist] obj -> int -> int -> string - = "ml_gtk_clist_get_text" - external set_pixmap : - [>`clist] obj -> - int -> int -> Gdk.pixmap -> Gdk.bitmap Gpointer.optboxed -> unit - = "ml_gtk_clist_set_pixmap" - external get_pixmap : - [>`clist] obj -> int -> int -> Gdk.pixmap option * Gdk.bitmap option - = "ml_gtk_clist_get_pixmap" - external set_pixtext : - [>`clist] obj -> int -> int -> - string -> int -> Gdk.pixmap -> Gdk.bitmap Gpointer.optboxed -> unit - = "ml_gtk_clist_set_pixtext_bc" "ml_gtk_clist_set_pixtext" - external set_foreground : - [>`clist] obj -> row:int -> Gdk.Color.t Gpointer.optboxed -> unit - = "ml_gtk_clist_set_foreground" - external set_background : - [>`clist] obj -> row:int -> Gdk.Color.t Gpointer.optboxed -> unit - = "ml_gtk_clist_set_background" - external get_cell_style : [>`clist] obj -> int -> int -> Gtk.style - = "ml_gtk_clist_get_cell_style" - external set_cell_style : [>`clist] obj -> int -> int -> Gtk.style -> unit - = "ml_gtk_clist_set_cell_style" - external get_row_style : [>`clist] obj -> row:int -> Gtk.style - = "ml_gtk_clist_get_row_style" - external set_row_style : [>`clist] obj -> row:int -> Gtk.style -> unit - = "ml_gtk_clist_set_row_style" - external set_selectable : [>`clist] obj -> row:int -> bool -> unit - = "ml_gtk_clist_set_selectable" - external get_selectable : [>`clist] obj -> row:int -> bool - = "ml_gtk_clist_get_selectable" - external set_shift : - [>`clist] obj -> int -> int -> vertical:int -> horizontal:int -> unit - = "ml_gtk_clist_set_shift" - external insert : [>`clist] obj -> row:int -> Gpointer.optstring array -> int - = "ml_gtk_clist_insert" - let insert w ~row texts = - let len = get_columns w in - if List.length texts > len then invalid_arg "CList.insert"; - let arr = Array.create (get_columns w) None in - List.fold_left texts ~init:0 - ~f:(fun pos text -> arr.(pos) <- text; pos+1); - let r = insert w ~row (Array.map ~f:Gpointer.optstring arr) in - if r = -1 then invalid_arg "GtkCList::insert"; - r - external remove : [>`clist] obj -> row:int -> unit - = "ml_gtk_clist_remove" - external set_row_data : [>`clist] obj -> row:int -> Obj.t -> unit - = "ml_gtk_clist_set_row_data" - external get_row_data : [>`clist] obj -> row:int -> Obj.t - = "ml_gtk_clist_get_row_data" - external select : [>`clist] obj -> int -> int -> unit - = "ml_gtk_clist_select_row" - external unselect : [>`clist] obj -> int -> int -> unit - = "ml_gtk_clist_unselect_row" - external clear : [>`clist] obj -> unit = "ml_gtk_clist_clear" - external get_row_column : [>`clist] obj -> x:int -> y:int -> int * int - = "ml_gtk_clist_get_selection_info" - external select_all : [>`clist] obj -> unit = "ml_gtk_clist_select_all" - external unselect_all : [>`clist] obj -> unit = "ml_gtk_clist_unselect_all" - external swap_rows : [>`clist] obj -> int -> int -> unit - = "ml_gtk_clist_swap_rows" - external row_move : [>`clist] obj -> int -> dst:int -> unit - = "ml_gtk_clist_row_move" - external set_sort_column : [>`clist] obj -> int -> unit - = "ml_gtk_clist_set_sort_column" - external set_sort_type : [>`clist] obj -> sort_type -> unit - = "ml_gtk_clist_set_sort_type" - external sort : [>`clist] obj -> unit - = "ml_gtk_clist_sort" - external set_auto_sort : [>`clist] obj -> bool -> unit - = "ml_gtk_clist_set_auto_sort" - let set_titles_show w = function - true -> column_titles_show w - | false -> column_titles_hide w - let set_titles_active w = function - true -> column_titles_active w - | false -> column_titles_passive w - let set ?hadjustment ?vadjustment ?shadow_type - ?(button_actions=[]) ?selection_mode ?reorderable - ?use_drag_icons ?row_height ?titles_show ?titles_active w = - let may_set f param = may param ~f:(f w) in - may_set set_hadjustment hadjustment; - may_set set_vadjustment vadjustment; - may_set set_shadow_type shadow_type; - List.iter button_actions ~f:(fun (n,act) -> set_button_actions w n act); - may_set set_selection_mode selection_mode; - may_set set_reorderable reorderable; - may_set set_use_drag_icons use_drag_icons; - may_set set_row_height row_height; - may_set set_titles_show titles_show; - may_set set_titles_active titles_active - let set_sort w ?auto ?column ?dir:sort_type () = - may auto ~f:(set_auto_sort w); - may column ~f:(set_sort_column w); - may sort_type ~f:(set_sort_type w) - let set_cell w ?text ?pixmap ?mask ?(spacing=0) ?style row col = - begin match text, pixmap with - | Some text, None -> - set_text w row col text - | None, Some pm -> - set_pixmap w row col pm (Gpointer.optboxed mask) - | Some text, Some pm -> - set_pixtext w row col text spacing pm (Gpointer.optboxed mask) - | _ -> () - end; - may style ~f:(set_cell_style w row col) - let set_column w ?widget ?title ?title_active ?justification - ?visibility ?resizeable ?auto_resize ?width ?min_width ?max_width - col = - let may_set f param = may param ~f:(f w col) in - may_set set_column_widget widget; - may_set set_column_title title; - may title_active - ~f:(fun active -> if active then column_title_active w col - else column_title_passive w col); - may_set set_column_justification justification; - may_set set_column_visibility visibility; - may_set set_column_resizeable resizeable; - may_set set_column_auto_resize auto_resize; - may_set set_column_width width; - may_set set_column_min_width min_width; - may_set set_column_max_width max_width - let set_row w ?foreground ?background ?selectable ?style row = - let may_set f = may ~f:(f w ~row) in - may_set set_foreground foreground; - may_set set_background background; - may_set set_selectable selectable; - may_set set_row_style style - module Signals = struct - open GtkArgv - open GtkSignal - let marshal_select f argv = function - | INT row :: INT column :: POINTER p :: _ -> - let event : GdkEvent.Button.t option = - may_map ~f:GdkEvent.unsafe_copy p - in - f ~row ~column ~event - | _ -> invalid_arg "GtkList.CList.Signals.marshal_select" - let select_row : ([>`clist],_) t = - { name = "select_row"; marshaller = marshal_select } - let unselect_row : ([>`clist],_) t = - { name = "unselect_row"; marshaller = marshal_select } - let click_column : ([>`clist],_) t = - { name = "click_column"; marshaller = marshal_int } - external val_scroll_type : int -> scroll_type = "ml_Val_scroll_type" - let marshal_scroll f argv = function - | INT st :: FLOAT (pos : clampf) :: _ -> - f (val_scroll_type st) ~pos - | _ -> invalid_arg "GtkList.CList.Signals.marshal_scroll" - let scroll_horizontal : ([>`clist],_) t = - { name = "scroll_horizontal"; marshaller = marshal_scroll } - let scroll_vertical : ([>`clist],_) t = - { name = "scroll_vertical"; marshaller = marshal_scroll } - external emit_scroll : - 'a obj -> name:string -> Tags.scroll_type -> pos:clampf -> unit - = "ml_gtk_signal_emit_scroll" - let emit_scroll = emit ~emitter:emit_scroll - end -end diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkMain.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkMain.ml deleted file mode 100644 index 7ef344303..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkMain.ml +++ /dev/null @@ -1,50 +0,0 @@ -(* $Id$ *) - -open Gtk - -let _ = Callback.register_exception "gtkerror" (Error"") - -module Timeout = struct - type id - external add : ms:int -> callback:(GtkArgv.t -> unit) -> id - = "ml_gtk_timeout_add" - let add ~ms ~callback = - add ~ms ~callback:(fun arg -> GtkArgv.set_result arg (`BOOL(callback ()))) - external remove : id -> unit = "ml_gtk_timeout_remove" -end - -module Main = struct - external init : string array -> string array = "ml_gtk_init" - (* external exit : int -> unit = "ml_gtk_exit" *) - external set_locale : unit -> string = "ml_gtk_set_locale" - (* external main : unit -> unit = "ml_gtk_main" *) - let locale = set_locale () - let init () = - (* let locale = set_locale () in *) - let argv = init Sys.argv in - Array.blit ~src:argv ~dst:Sys.argv ~len:(Array.length argv) - ~src_pos:0 ~dst_pos:0; - Obj.truncate (Obj.repr Sys.argv) ~len:(Array.length argv); - locale - open Glib - let loops = ref [] - let main () = - let loop = (Main.create true) in - loops := loop :: !loops; - while Main.is_running loop do Main.iteration true done; - loops := List.tl !loops - and quit () = Main.quit (List.hd !loops) - external get_version : unit -> int * int * int = "ml_gtk_get_version" - let version = get_version () - - let flush = Gdk.X.flush -end - -module Grab = struct - external add : [>`widget] obj -> unit = "ml_gtk_grab_add" - external remove : [>`widget] obj -> unit = "ml_gtk_grab_remove" - external get_current : unit -> widget obj= "ml_gtk_grab_get_current" -end - -let _ = Glib.set_warning_handler (fun msg -> raise (Warning msg)) -let _ = Glib.set_print_handler (fun msg -> print_string msg) diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkMenu.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkMenu.ml deleted file mode 100644 index 2f1eb30f0..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkMenu.ml +++ /dev/null @@ -1,144 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open GtkBase - -module MenuItem = struct - let cast w : menu_item obj = Object.try_cast w "GtkMenuItem" - external coerce : [>`menuitem] obj -> menu_item obj = "%identity" - external create : unit -> menu_item obj = "ml_gtk_menu_item_new" - external create_with_label : string -> menu_item obj - = "ml_gtk_menu_item_new_with_label" - external tearoff_create : unit -> menu_item obj - = "ml_gtk_tearoff_menu_item_new" - let create ?label () = - match label with None -> create () - | Some label -> create_with_label label - external set_submenu : [>`menuitem] obj -> [>`menu] obj -> unit - = "ml_gtk_menu_item_set_submenu" - external remove_submenu : [>`menuitem] obj -> unit - = "ml_gtk_menu_item_remove_submenu" - external configure : - [>`menuitem] obj -> show_toggle:bool -> show_indicator:bool -> unit - = "ml_gtk_menu_item_configure" - external activate : [>`menuitem] obj -> unit - = "ml_gtk_menu_item_activate" - external right_justify : [>`menuitem] obj -> unit - = "ml_gtk_menu_item_right_justify" - module Signals = struct - open GtkSignal - let activate : ([>`menuitem],_) t = - { name = "activate"; marshaller = marshal_unit } - let activate_item : ([>`menuitem],_) t = - { name = "activate_item"; marshaller = marshal_unit } - end -end - -module CheckMenuItem = struct - let cast w : check_menu_item obj = Object.try_cast w "GtkCheckMenuItem" - external coerce : [>`checkmenuitem] obj -> check_menu_item obj = "%identity" - external create : unit -> check_menu_item obj = "ml_gtk_check_menu_item_new" - external create_with_label : string -> check_menu_item obj - = "ml_gtk_check_menu_item_new_with_label" - let create ?label () = - match label with None -> create () - | Some label -> create_with_label label - external set_active : [>`checkmenuitem] obj -> bool -> unit - = "ml_gtk_check_menu_item_set_active" - external get_active : [>`checkmenuitem] obj -> bool - = "ml_gtk_check_menu_item_get_active" - external set_show_toggle : [>`checkmenuitem] obj -> bool -> unit - = "ml_gtk_check_menu_item_set_show_toggle" - let set ?active ?show_toggle w = - may active ~f:(set_active w); - may show_toggle ~f:(set_show_toggle w) - external toggled : [>`checkmenuitem] obj -> unit - = "ml_gtk_check_menu_item_toggled" - module Signals = struct - open GtkSignal - let toggled : ([>`checkmenuitem],_) t = - { name = "toggled"; marshaller = marshal_unit } - end -end - -module RadioMenuItem = struct - let cast w : radio_menu_item obj = Object.try_cast w "GtkRadioMenuItem" - external create : radio_menu_item group -> radio_menu_item obj - = "ml_gtk_radio_menu_item_new" - external create_with_label : - radio_menu_item group -> string -> radio_menu_item obj - = "ml_gtk_radio_menu_item_new_with_label" - let create ?(group = None) ?label () = - match label with None -> create group - | Some label -> create_with_label group label - external set_group : [>`radiomenuitem] obj -> radio_menu_item group -> unit - = "ml_gtk_radio_menu_item_set_group" -end - -module OptionMenu = struct - let cast w : option_menu obj = Object.try_cast w "GtkOptionMenu" - external create : unit -> option_menu obj = "ml_gtk_option_menu_new" - external get_menu : [>`optionmenu] obj -> menu obj - = "ml_gtk_option_menu_get_menu" - external set_menu : [>`optionmenu] obj -> [>`menu] obj -> unit - = "ml_gtk_option_menu_set_menu" - external remove_menu : [>`optionmenu] obj -> unit - = "ml_gtk_option_menu_remove_menu" - external set_history : [>`optionmenu] obj -> int -> unit - = "ml_gtk_option_menu_set_history" - let set ?menu ?history w = - may menu ~f:(set_menu w); - may history ~f:(set_history w) -end - -module MenuShell = struct - let cast w : menu_shell obj = Object.try_cast w "GtkMenuShell" - external coerce : [>`menushell] obj -> menu_shell obj = "%identity" - external append : [>`menushell] obj -> [>`widget] obj -> unit - = "ml_gtk_menu_shell_append" - external prepend : [>`menushell] obj -> [>`widget] obj -> unit - = "ml_gtk_menu_shell_prepend" - external insert : [>`menushell] obj -> [>`widget] obj -> pos:int -> unit - = "ml_gtk_menu_shell_insert" - external deactivate : [>`menushell] obj -> unit - = "ml_gtk_menu_shell_deactivate" - module Signals = struct - open GtkSignal - let deactivate : ([>`menushell],_) t = - { name = "deactivate"; marshaller = marshal_unit } - end -end - -module Menu = struct - let cast w : menu obj = Object.try_cast w "GtkMenu" - external create : unit -> menu obj = "ml_gtk_menu_new" - external popup : - [>`menu] obj -> [>`menushell] optobj -> - [>`menuitem] optobj -> button:int -> time:int -> unit - = "ml_gtk_menu_popup" - let popup ?parent_menu ?parent_item w = - popup w (Gpointer.optboxed parent_menu) (Gpointer.optboxed parent_item) - external popdown : [>`menu] obj -> unit = "ml_gtk_menu_popdown" - external get_active : [>`menu] obj -> widget obj= "ml_gtk_menu_get_active" - external set_active : [>`menu] obj -> int -> unit = "ml_gtk_menu_set_active" - external set_accel_group : [>`menu] obj -> accel_group -> unit - = "ml_gtk_menu_set_accel_group" - external get_accel_group : [>`menu] obj -> accel_group - = "ml_gtk_menu_get_accel_group" - external ensure_uline_accel_group : [>`menu] obj -> accel_group - = "ml_gtk_menu_ensure_uline_accel_group" - external attach_to_widget : [>`menu] obj -> [>`widget] obj -> unit - = "ml_gtk_menu_attach_to_widget" - external get_attach_widget : [>`menu] obj -> widget obj - = "ml_gtk_menu_get_attach_widget" - external detach : [>`menu] obj -> unit = "ml_gtk_menu_detach" - let set ?active ?accel_group w = - may active ~f:(set_active w); - may accel_group ~f:(set_accel_group w) -end - -module MenuBar = struct - let cast w : menu_bar obj = Object.try_cast w "GtkMenuBar" - external create : unit -> menu_bar obj = "ml_gtk_menu_bar_new" -end diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkMisc.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkMisc.ml deleted file mode 100644 index ded7f487a..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkMisc.ml +++ /dev/null @@ -1,323 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open Tags -open GtkBase - -module GammaCurve = struct - let cast w : gamma_curve obj = Object.try_cast w "GtkGammaCurve" - external create : unit -> gamma_curve obj = "ml_gtk_gamma_curve_new" - external get_gamma : [>`gamma] obj -> float = "ml_gtk_gamma_curve_get_gamma" -end - -module ColorSelection = struct - let cast w : color_selection obj = Object.try_cast w "GtkColorSelection" - external create : unit -> color_selection obj = "ml_gtk_color_selection_new" - external create_dialog : string -> color_selection_dialog obj - = "ml_gtk_color_selection_dialog_new" - external set_update_policy : [>`colorsel] obj -> update_type -> unit - = "ml_gtk_color_selection_set_update_policy" - external set_opacity : [>`colorsel] obj -> bool -> unit - = "ml_gtk_color_selection_set_opacity" - let set ?update_policy ?opacity w = - may update_policy ~f:(set_update_policy w); - may opacity ~f:(set_opacity w) - external set_color : - [>`colorsel] obj -> - red:float -> green:float -> blue:float -> ?opacity:float -> unit - = "ml_gtk_color_selection_set_color" - external get_color : [>`colorsel] obj -> color - = "ml_gtk_color_selection_get_color" - - external ok_button : [>`colorseldialog] obj -> button obj = - "ml_gtk_color_selection_dialog_ok_button" - external cancel_button : [>`colorseldialog] obj -> button obj = - "ml_gtk_color_selection_dialog_cancel_button" - external help_button : [>`colorseldialog] obj -> button obj = - "ml_gtk_color_selection_dialog_help_button" - external colorsel : [>`colorseldialog] obj -> color_selection obj = - "ml_gtk_color_selection_dialog_colorsel" - module Signals = struct - open GtkSignal - let color_changed : ([>`colorsel],_) t = - { name = "color_changed"; marshaller = marshal_unit } - end -end - -module Statusbar = struct - let cast w : statusbar obj = Object.try_cast w "GtkStatusbar" - external create : unit -> statusbar obj = "ml_gtk_statusbar_new" - external get_context : [>`statusbar] obj -> string -> statusbar_context - = "ml_gtk_statusbar_get_context_id" - external push : - [>`statusbar] obj -> - statusbar_context -> text:string -> statusbar_message - = "ml_gtk_statusbar_push" - external pop : [>`statusbar] obj -> statusbar_context -> unit - = "ml_gtk_statusbar_pop" - external remove : - [>`statusbar] obj -> statusbar_context -> statusbar_message -> unit - = "ml_gtk_statusbar_remove" - module Signals = struct - open GtkSignal - let text_pushed : ([>`statusbar],_) t = - let marshal f _ = function - | GtkArgv.INT ctx :: GtkArgv.STRING s :: _ -> - f (Obj.magic ctx : statusbar_context) s - | _ -> invalid_arg "GtkMisc.Statusbar.Signals.marshal_text" - in - { name = "text_pushed"; marshaller = marshal } - end -end - -module Calendar = struct - let cast w : calendar obj = Object.try_cast w "GtkCalendar" - external create : unit -> calendar obj = "ml_gtk_calendar_new" - external select_month : [>`calendar] obj -> month:int -> year:int -> unit - = "ml_gtk_calendar_select_month" - external select_day : [>`calendar] obj -> int -> unit - = "ml_gtk_calendar_select_day" - external mark_day : [>`calendar] obj -> int -> unit - = "ml_gtk_calendar_mark_day" - external unmark_day : [>`calendar] obj -> int -> unit - = "ml_gtk_calendar_unmark_day" - external clear_marks : [>`calendar] obj -> unit - = "ml_gtk_calendar_clear_marks" - external display_options : - [>`calendar] obj -> Tags.calendar_display_options list -> unit - = "ml_gtk_calendar_display_options" - external get_date : [>`calendar] obj -> int * int * int - = "ml_gtk_calendar_get_date" (* year * month * day *) - external freeze : [>`calendar] obj -> unit - = "ml_gtk_calendar_freeze" - external thaw : [>`calendar] obj -> unit - = "ml_gtk_calendar_thaw" - module Signals = struct - open GtkSignal - let month_changed : ([>`calendar],_) t = - { name = "month_changed"; marshaller = marshal_unit } - let day_selected : ([>`calendar],_) t = - { name = "day_selected"; marshaller = marshal_unit } - let day_selected_double_click : ([>`calendar],_) t = - { name = "day_selected_double_click"; marshaller = marshal_unit } - let prev_month : ([>`calendar],_) t = - { name = "prev_month"; marshaller = marshal_unit } - let next_month : ([>`calendar],_) t = - { name = "next_month"; marshaller = marshal_unit } - let prev_year : ([>`calendar],_) t = - { name = "prev_year"; marshaller = marshal_unit } - let next_year : ([>`calendar],_) t = - { name = "next_year"; marshaller = marshal_unit } - end -end - -module DrawingArea = struct - let cast w : drawing_area obj = Object.try_cast w "GtkDrawingArea" - external create : unit -> drawing_area obj = "ml_gtk_drawing_area_new" - external size : [>`drawing] obj -> width:int -> height:int -> unit - = "ml_gtk_drawing_area_size" -end - -(* Does not seem very useful ... -module Curve = struct - type t = [widget drawing curve] obj - let cast w : t = Object.try_cast w "GtkCurve" - external create : unit -> t = "ml_gtk_curve_new" - external reset : [>`curve] obj -> unit = "ml_gtk_curve_reset" - external set_gamma : [>`curve] obj -> float -> unit - = "ml_gtk_curve_set_gamma" - external set_range : - [>`curve] obj -> min_x:float -> max_x:float -> - min_y:float -> max_y:float -> unit - = "ml_gtk_curve_set_gamma" -end -*) - -module Misc = struct - let cast w : misc obj = Object.try_cast w "GtkMisc" - external coerce : [>`misc] obj -> misc obj = "%identity" - external set_alignment : [>`misc] obj -> x:float -> y:float -> unit - = "ml_gtk_misc_set_alignment" - external set_padding : [>`misc] obj -> x:int -> y:int -> unit - = "ml_gtk_misc_set_padding" - external get_xalign : [>`misc] obj -> float = "ml_gtk_misc_get_xalign" - external get_yalign : [>`misc] obj -> float = "ml_gtk_misc_get_yalign" - external get_xpad : [>`misc] obj -> int = "ml_gtk_misc_get_xpad" - external get_ypad : [>`misc] obj -> int = "ml_gtk_misc_get_ypad" - let set_alignment w ?x ?y () = - set_alignment w ~x:(may_default get_xalign w ~opt:x) - ~y:(may_default get_yalign w ~opt:y) - let set_padding w ?x ?y () = - set_padding w ~x:(may_default get_xpad w ~opt:x) - ~y:(may_default get_ypad w ~opt:y) - let set ?xalign ?yalign ?xpad ?ypad ?(width = -2) ?(height = -2) w = - if xalign <> None || yalign <> None then - set_alignment w ?x:xalign ?y:yalign (); - if xpad <> None || ypad <> None then - set_padding w ?x:xpad ?y:ypad (); - if width <> -2 || height <> -2 then Widget.set_usize w ~width ~height -end - -module Arrow = struct - let cast w : arrow obj = Object.try_cast w "GtkArrow" - external create : kind:arrow_type -> shadow:shadow_type -> arrow obj - = "ml_gtk_arrow_new" - external set : [>`arrow] obj -> kind:arrow_type -> shadow:shadow_type -> unit - = "ml_gtk_arrow_set" -end - -module Image = struct - let cast w : image obj = Object.try_cast w "GtkImage" - external create : Gdk.image -> ?mask:Gdk.bitmap -> image obj - = "ml_gtk_image_new" - let create ?mask img = create img ?mask - external set : [>`image] obj -> Gdk.image -> ?mask:Gdk.bitmap -> unit - = "ml_gtk_image_set" -end - -module Label = struct - let cast w : label obj = Object.try_cast w "GtkLabel" - external coerce : [>`label] obj -> label obj = "%identity" - external create : string -> label obj = "ml_gtk_label_new" - external set_text : [>`label] obj -> string -> unit = "ml_gtk_label_set_text" - external set_justify : [>`label] obj -> justification -> unit - = "ml_gtk_label_set_justify" - external set_pattern : [>`label] obj -> string -> unit - = "ml_gtk_label_set_pattern" - external set_line_wrap : [>`label] obj -> bool -> unit - = "ml_gtk_label_set_line_wrap" - let set ?text ?justify ?line_wrap ?pattern w = - may ~f:(set_text w) text; - may ~f:(set_justify w) justify; - may ~f:(set_line_wrap w) line_wrap; - may ~f:(set_pattern w) pattern - external get_text : [>`label] obj -> string = "ml_gtk_label_get_label" -end - -module TipsQuery = struct - let cast w : tips_query obj = Object.try_cast w "GtkTipsQuery" - external create : unit -> tips_query obj = "ml_gtk_tips_query_new" - external start : [>`tipsquery] obj -> unit = "ml_gtk_tips_query_start_query" - external stop : [>`tipsquery] obj -> unit = "ml_gtk_tips_query_stop_query" - external set_caller : [>`tipsquery] obj -> [>`widget] obj -> unit - = "ml_gtk_tips_query_set_caller" - external set_labels : - [>`tipsquery] obj -> inactive:string -> no_tip:string -> unit - = "ml_gtk_tips_query_set_labels" - external set_emit_always : [>`tipsquery] obj -> bool -> unit - = "ml_gtk_tips_query_set_emit_always" - external get_caller : [>`tipsquery] obj -> widget obj - = "ml_gtk_tips_query_get_caller" - external get_label_inactive : [>`tipsquery] obj -> string - = "ml_gtk_tips_query_get_label_inactive" - external get_label_no_tip : [>`tipsquery] obj -> string - = "ml_gtk_tips_query_get_label_no_tip" - external get_emit_always : [>`tipsquery] obj -> bool - = "ml_gtk_tips_query_get_emit_always" - let set_labels ?inactive ?no_tip w = - set_labels w - ~inactive:(may_default get_label_inactive w ~opt:inactive) - ~no_tip:(may_default get_label_no_tip w ~opt:no_tip) - let set ?caller ?emit_always ?label_inactive ?label_no_tip w = - may caller ~f:(set_caller w); - may emit_always ~f:(set_emit_always w); - if label_inactive <> None || label_no_tip <> None then - set_labels w ?inactive:label_inactive ?no_tip:label_no_tip - module Signals = struct - open GtkArgv - open GtkSignal - let start_query : ([>`tipsquery],_) t = - { name = "start_query"; marshaller = marshal_unit } - let stop_query : ([>`tipsquery],_) t = - { name = "stop_query"; marshaller = marshal_unit } - let widget_entered : - ([>`tipsquery], - widget obj option -> - text:string option -> privat:string option -> unit) t = - let marshal f _ = function - | OBJECT opt :: STRING text :: STRING privat :: _ -> - f (may_map ~f:Widget.cast opt) ~text ~privat - | _ -> invalid_arg "GtkMisc.TipsQuery.Signals.marshal_entered" - in - { name = "widget_entered"; marshaller = marshal } - let widget_selected : - ([>`tipsquery], - widget obj option -> - text:string option -> - privat:string option -> GdkEvent.Button.t option -> bool) t = - let marshal f argv = function - | OBJECT obj :: STRING text :: STRING privat :: POINTER p :: _ -> - let stop = - f (may_map ~f:Widget.cast obj) ~text ~privat - (may_map ~f:GdkEvent.unsafe_copy p) - in set_result argv (`BOOL stop) - | _ -> invalid_arg "GtkMisc.TipsQuery.Signals.marshal_selected" - in - { name = "widget_selected"; marshaller = marshal } - end -end - -module Pixmap = struct - let cast w : pixmap obj = Object.try_cast w "GtkPixmap" - external create : Gdk.pixmap -> ?mask:Gdk.bitmap -> pixmap obj - = "ml_gtk_pixmap_new" - let create ?mask img = create img ?mask - external set : - [>`pixmap] obj -> ?pixmap:Gdk.pixmap -> ?mask:Gdk.bitmap -> unit - = "ml_gtk_pixmap_set" - external pixmap : [>`pixmap] obj -> Gdk.pixmap = "ml_GtkPixmap_pixmap" - external mask : [>`pixmap] obj -> Gdk.bitmap = "ml_GtkPixmap_mask" -end - -module Separator = struct - let cast w : separator obj = Object.try_cast w "GtkSeparator" - external hseparator_new : unit -> separator obj = "ml_gtk_hseparator_new" - external vseparator_new : unit -> separator obj = "ml_gtk_vseparator_new" - let create (dir : Tags.orientation) = - if dir = `HORIZONTAL then hseparator_new () else vseparator_new () -end - -module FontSelection = struct - type null_terminated - let null_terminated arg : null_terminated = - match arg with None -> Obj.magic Gpointer.raw_null - | Some l -> - let len = List.length l in - let arr = Array.create (len + 1) "" in - let rec loop i = function - [] -> arr.(i) <- Obj.magic Gpointer.raw_null - | s::l -> arr.(i) <- s; loop (i+1) l - in loop 0 l; - Obj.magic (arr : string array) - let cast w : font_selection obj = - Object.try_cast w "GtkFontSelection" - external create : unit -> font_selection obj - = "ml_gtk_font_selection_new" - external get_font : [>`fontsel] obj -> Gdk.font - = "ml_gtk_font_selection_get_font" - let get_font w = - try Some (get_font w) with Gpointer.Null -> None - external get_font_name : [>`fontsel] obj -> string - = "ml_gtk_font_selection_get_font_name" - let get_font_name w = - try Some (get_font_name w) with Gpointer.Null -> None - external set_font_name : [>`fontsel] obj -> string -> unit - = "ml_gtk_font_selection_set_font_name" - external set_filter : - [>`fontsel] obj -> font_filter_type -> font_type list -> - null_terminated -> null_terminated -> null_terminated -> - null_terminated -> null_terminated -> null_terminated -> unit - = "ml_gtk_font_selection_set_filter_bc" - "ml_gtk_font_selection_set_filter" - let set_filter w ?kind:(tl=[`ALL]) ?foundry - ?weight ?slant ?setwidth ?spacing ?charset filter = - set_filter w filter tl (null_terminated foundry) - (null_terminated weight) (null_terminated slant) - (null_terminated setwidth) (null_terminated spacing) - (null_terminated charset) - external get_preview_text : [>`fontsel] obj -> string - = "ml_gtk_font_selection_get_preview_text" - external set_preview_text : [>`fontsel] obj -> string -> unit - = "ml_gtk_font_selection_set_preview_text" -end diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkNew.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkNew.ml deleted file mode 100644 index 532a709d7..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkNew.ml +++ /dev/null @@ -1,56 +0,0 @@ -(* $Id$ *) - -open Gtk - -type t - -(* if you modify this type modify widget_info_array - in ml_gtk.c in accordance *) -type object_type = - | OBJECT | WIDGET | MISC | LABEL | ACCELLABEL | TIPSQUERY | ARROW - | IMAGE | PIXMAP | CONTAINER | BIN | ALIGNMENT | FRAME | ASPECTFRAME - | BUTTON | TOGGLEBUTTON | CHECKBUTTON | RADIOBUTTON | OPTIONMENU - | ITEM | MENUITEM | CHECKMENUITEM | RADIOMENUITEM | TEAROFFMENUITEM - | LISTITEM | TREEITEM | WINDOW | COLORSELECTIONDIALOG | DIALOG - | INPUTDIALOG | FILESELECTION | FONTSELECTIONDIALOG | PLUG - | EVENTBOX | HANDLEBOX | SCROLLEDWINDOW | VIEWPORT | BOX - | BUTTONBOX | HBUTTONBOX | VBUTTONBOX | VBOX | COLORSELECTION - | GAMMACURVE | HBOX | COMBO | STATUSBAR | CLIST | CTREE | FIXED - | NOTEBOOK | FONTSELECTION | PANED | HPANED | VPANED | LAYOUT - | LIST | MENUSHELL | MENUBAR | MENU | PACKER | SOCKET | TABLE - | TOOLBAR | TREE | CALENDAR | DRAWINGAREA | CURVE | EDITABLE - | ENTRY | SPINBUTTON | TEXT | RULER | HRULER | VRULER | RANGE - | SCALE | HSCALE | VSCALE | SCROLLBAR | HSCROLLBAR | VSCROLLBAR - | SEPARATOR | HSEPARATOR | VSEPARATOR | PREVIEW | PROGRESS - | PROGRESSBAR | DATA | ADJUSTMENT | TOOLTIPS | ITEMFACTORY - -external set_ml_class_init : (t -> unit) -> unit = "set_ml_class_init" -external signal_new : string -> int -> t -> object_type -> int -> int - = "ml_gtk_signal_new" -external object_class_add_signals : t -> int array -> int -> unit - = "ml_gtk_object_class_add_signals" -external type_unique : - name:string -> parent:object_type -> nsignals:int -> gtk_type - = "ml_gtk_type_unique" -external type_new : gtk_type -> unit obj - = "ml_gtk_type_new" - -open GtkSignal - -let make_new_widget ~name ~parent - ~(signals : ('a, unit -> unit) GtkSignal.t list) = - let nsignals = List.length signals in - let new_type = type_unique ~name ~parent ~nsignals in - let signal_num_array = Array.create nsignals 0 in - let class_init_func classe = - List.fold_left signals ~init:0 ~f: - (fun i signal -> - signal_num_array.(i) <- signal_new signal.name 1 classe parent i; - i+1); - object_class_add_signals classe signal_num_array nsignals - in - new_type, - (fun () -> - set_ml_class_init class_init_func; - type_new new_type) - (* , signal_num_array *) diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkPack.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkPack.ml deleted file mode 100644 index 20adb0505..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkPack.ml +++ /dev/null @@ -1,318 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open Tags -open GtkBase - -module Box = struct - let cast w : box obj = Object.try_cast w "GtkBox" - external coerce : [>`box] obj -> box obj = "%identity" - external pack_start : - [>`box] obj -> [>`widget] obj -> - expand:bool -> fill:bool -> padding:int -> unit - = "ml_gtk_box_pack_start" - external pack_end : - [>`box] obj -> [>`widget] obj -> - expand:bool -> fill:bool -> padding:int -> unit - = "ml_gtk_box_pack_end" - let pack box ?from:( dir = (`START : pack_type)) - ?(expand=false) ?(fill=true) ?(padding=0) child = - (match dir with `START -> pack_start | `END -> pack_end) - box child ~expand ~fill ~padding - external reorder_child : [>`box] obj -> [>`widget] obj -> pos:int -> unit - = "ml_gtk_box_reorder_child" - external set_homogeneous : [>`box] obj -> bool -> unit - = "ml_gtk_box_set_homogeneous" - external set_spacing : [>`box] obj -> int -> unit - = "ml_gtk_box_set_spacing" - let set ?homogeneous ?spacing w = - may homogeneous ~f:(set_homogeneous w); - may spacing ~f:(set_spacing w) - type packing = - { expand: bool; fill: bool; padding: int; pack_type: pack_type } - external query_child_packing : [>`box] obj -> [>`widget] obj -> packing - = "ml_gtk_box_query_child_packing" - external set_child_packing : - [>`box] obj -> [>`widget] obj -> - ?expand:bool -> ?fill:bool -> ?padding:int -> ?from:pack_type -> unit - = "ml_gtk_box_set_child_packing_bc" "ml_gtk_box_set_child_packing" - external hbox_new : homogeneous:bool -> spacing:int -> box obj - = "ml_gtk_hbox_new" - external vbox_new : homogeneous:bool -> spacing:int -> box obj - = "ml_gtk_vbox_new" - let create (dir : orientation) ?(homogeneous=false) ?(spacing=0) () = - (match dir with `HORIZONTAL -> hbox_new | `VERTICAL -> vbox_new) - ~homogeneous ~spacing -end - -module BBox = struct - (* Omitted defaults setting *) - let cast w : button_box obj = Object.try_cast w "GtkBBox" - external coerce : [>`bbox] obj -> button_box obj = "%identity" - type bbox_style = [ `DEFAULT_STYLE|`SPREAD|`EDGE|`START|`END ] - external get_spacing : [>`bbox] obj -> int = "ml_gtk_button_box_get_spacing" - external get_child_width : [>`bbox] obj -> int - = "ml_gtk_button_box_get_child_min_width" - external get_child_height : [>`bbox] obj -> int - = "ml_gtk_button_box_get_child_min_height" - external get_child_ipadx : [>`bbox] obj -> int - = "ml_gtk_button_box_get_child_ipad_x" - external get_child_ipady : [>`bbox] obj -> int - = "ml_gtk_button_box_get_child_ipad_y" - external get_layout : [>`bbox] obj -> bbox_style - = "ml_gtk_button_box_get_layout_style" - external set_spacing : [>`bbox] obj -> int -> unit - = "ml_gtk_button_box_set_spacing" - external set_child_size : [>`bbox] obj -> width:int -> height:int -> unit - = "ml_gtk_button_box_set_child_size" - external set_child_ipadding : [>`bbox] obj -> x:int -> y:int -> unit - = "ml_gtk_button_box_set_child_ipadding" - external set_layout : [>`bbox] obj -> bbox_style -> unit - = "ml_gtk_button_box_set_layout" - let set_child_size w ?width ?height () = - set_child_size w ~width:(may_default get_child_width w ~opt:width) - ~height:(may_default get_child_height w ~opt:height) - let set_child_ipadding w ?x ?y () = - set_child_ipadding w - ~x:(may_default get_child_ipadx w ~opt:x) - ~y:(may_default get_child_ipady w ~opt:y) - let set ?spacing ?child_width ?child_height ?child_ipadx - ?child_ipady ?layout w = - may spacing ~f:(set_spacing w); - if child_width <> None || child_height <> None then - set_child_size w ?width:child_width ?height:child_height (); - if child_ipadx <> None || child_ipady <> None then - set_child_ipadding w ?x:child_ipadx ?y:child_ipady (); - may layout ~f:(set_layout w) - external set_child_size_default : width:int -> height:int -> unit - = "ml_gtk_button_box_set_child_size_default" - external set_child_ipadding_default : x:int -> y:int -> unit - = "ml_gtk_button_box_set_child_ipadding_default" - external create_hbbox : unit -> button_box obj = "ml_gtk_hbutton_box_new" - external create_vbbox : unit -> button_box obj = "ml_gtk_vbutton_box_new" - let create (dir : orientation) = - if dir = `HORIZONTAL then create_hbbox () else create_vbbox () -end - -module Fixed = struct - let cast w : fixed obj = Object.try_cast w "GtkFixed" - external create : unit -> fixed obj = "ml_gtk_fixed_new" - external put : [>`fixed] obj -> [>`widget] obj -> x:int -> y:int -> unit - = "ml_gtk_fixed_put" - external move : [>`fixed] obj -> [>`widget] obj -> x:int -> y:int -> unit - = "ml_gtk_fixed_move" -end - -module Layout = struct - let cast w : layout obj = Object.try_cast w "GtkLayout" - external create : - [>`adjustment] optobj -> [>`adjustment] optobj -> layout obj - = "ml_gtk_layout_new" - external put : [>`layout] obj -> [>`widget] obj -> x:int -> y:int -> unit - = "ml_gtk_layout_put" - external move : [>`layout] obj -> [>`widget] obj -> x:int -> y:int -> unit - = "ml_gtk_layout_move" - external set_size : [>`layout] obj -> width:int -> height:int -> unit - = "ml_gtk_layout_set_size" - external get_hadjustment : [>`layout] obj -> adjustment obj - = "ml_gtk_layout_get_hadjustment" - external get_vadjustment : [>`layout] obj -> adjustment obj - = "ml_gtk_layout_get_vadjustment" - external set_hadjustment : [>`layout] obj -> [>`adjustment] obj -> unit - = "ml_gtk_layout_set_hadjustment" - external set_vadjustment : [>`layout] obj -> [>`adjustment] obj -> unit - = "ml_gtk_layout_set_vadjustment" - external freeze : [>`layout] obj -> unit - = "ml_gtk_layout_freeze" - external thaw : [>`layout] obj -> unit - = "ml_gtk_layout_thaw" - external get_height : [>`layout] obj -> int - = "ml_gtk_layout_get_height" - external get_width : [>`layout] obj -> int - = "ml_gtk_layout_get_width" - let set_size ?width ?height w = - set_size w ~width:(may_default get_width w ~opt:width) - ~height:(may_default get_height w ~opt:height) -end - - -module Packer = struct - let cast w : packer obj = Object.try_cast w "GtkPacker" - external create : unit -> packer obj = "ml_gtk_packer_new" - external add : - [>`packer] obj -> [>`widget] obj -> - ?side:side_type -> ?anchor:anchor_type -> - ?options:packer_options list -> - ?border_width:int -> ?pad_x:int -> ?pad_y:int -> - ?i_pad_x:int -> ?i_pad_y:int -> unit - = "ml_gtk_packer_add_bc" "ml_gtk_packer_add" - external add_defaults : - [>`packer] obj -> [>`widget] obj -> - ?side:side_type -> ?anchor:anchor_type -> - ?options:packer_options list -> unit - = "ml_gtk_packer_add_defaults" - external set_child_packing : - [>`packer] obj -> [>`widget] obj -> - ?side:side_type -> ?anchor:anchor_type -> - ?options:packer_options list -> - ?border_width:int -> ?pad_x:int -> ?pad_y:int -> - ?i_pad_x:int -> ?i_pad_y:int -> unit - = "ml_gtk_packer_set_child_packing_bc" "ml_gtk_packer_set_child_packing" - external reorder_child : [>`packer] obj -> [>`widget] obj -> pos:int -> unit - = "ml_gtk_packer_reorder_child" - external set_spacing : [>`packer] obj -> int -> unit - = "ml_gtk_packer_set_spacing" - external set_defaults : - [>`packer] obj -> ?border_width:int -> ?pad_x:int -> ?pad_y:int -> - ?i_pad_x:int -> ?i_pad_y:int -> unit -> unit - = "ml_gtk_packer_set_defaults_bc" "ml_gtk_packer_set_defaults" - - let build_options ?(expand=false) ?(fill=`BOTH) () = - (if expand then [`PACK_EXPAND] else []) @ - (match (fill : expand_type) with `NONE -> [] - | `X -> [`FILL_X] - | `Y -> [`FILL_Y] - | `BOTH -> [`FILL_X;`FILL_Y]) -end - -module Paned = struct - let cast w : paned obj = Object.try_cast w "GtkPaned" - external add1 : [>`paned] obj -> [>`widget] obj -> unit - = "ml_gtk_paned_add1" - external add2 : [>`paned] obj -> [>`widget] obj -> unit - = "ml_gtk_paned_add2" - external set_handle_size : [>`paned] obj -> int -> unit - = "ml_gtk_paned_set_handle_size" - external set_gutter_size : [>`paned] obj -> int -> unit - = "ml_gtk_paned_set_gutter_size" - let set ?handle_size ?gutter_size w = - may ~f:(set_handle_size w) handle_size; - may ~f:(set_gutter_size w) gutter_size - external child1 : [>`paned] obj -> widget obj = "ml_gtk_paned_child1" - external child2 : [>`paned] obj -> widget obj = "ml_gtk_paned_child2" - external handle_size : [>`paned] obj -> int = "ml_gtk_paned_handle_size" - external gutter_size : [>`paned] obj -> int = "ml_gtk_paned_handle_size" - external hpaned_new : unit -> paned obj = "ml_gtk_hpaned_new" - external vpaned_new : unit -> paned obj = "ml_gtk_vpaned_new" - let create (dir : orientation) = - if dir = `HORIZONTAL then hpaned_new () else vpaned_new () -end - -module Table = struct - let cast w : table obj = Object.try_cast w "GtkTable" - external create : int -> int -> homogeneous:bool -> table obj - = "ml_gtk_table_new" - let create ~rows:r ~columns:c ?(homogeneous=false) () = - create r c ~homogeneous - external attach : - [>`table] obj -> [>`widget] obj -> left:int -> right:int -> - top:int -> bottom:int -> xoptions:attach_options list -> - yoptions:attach_options list -> xpadding:int -> ypadding:int -> unit - = "ml_gtk_table_attach_bc" "ml_gtk_table_attach" - let has_x : expand_type -> bool = - function `X|`BOTH -> true | `Y|`NONE -> false - let has_y : expand_type -> bool = - function `Y|`BOTH -> true | `X|`NONE -> false - let attach t ~left ~top ?(right=left+1) ?(bottom=top+1) - ?(expand=`NONE) ?(fill=`BOTH) ?(shrink=`NONE) - ?(xpadding=0) ?(ypadding=0) w = - let xoptions = if has_x shrink then [`SHRINK] else [] in - let xoptions = if has_x fill then `FILL::xoptions else xoptions in - let xoptions = if has_x expand then `EXPAND::xoptions else xoptions in - let yoptions = if has_y shrink then [`SHRINK] else [] in - let yoptions = if has_y fill then `FILL::yoptions else yoptions in - let yoptions = if has_y expand then `EXPAND::yoptions else yoptions in - attach t w ~left ~top ~right ~bottom ~xoptions ~yoptions - ~xpadding ~ypadding - external set_row_spacing : [>`table] obj -> int -> int -> unit - = "ml_gtk_table_set_row_spacing" - external set_col_spacing : [>`table] obj -> int -> int -> unit - = "ml_gtk_table_set_col_spacing" - external set_row_spacings : [>`table] obj -> int -> unit - = "ml_gtk_table_set_row_spacings" - external set_col_spacings : [>`table] obj -> int -> unit - = "ml_gtk_table_set_col_spacings" - external set_homogeneous : [>`table] obj -> bool -> unit - = "ml_gtk_table_set_homogeneous" - let set ?homogeneous ?row_spacings ?col_spacings w = - may row_spacings ~f:(set_row_spacings w); - may col_spacings ~f:(set_col_spacings w); - may homogeneous ~f:(set_homogeneous w) -end - -module Notebook = struct - let cast w : notebook obj = Object.try_cast w "GtkNotebook" - external create : unit -> notebook obj = "ml_gtk_notebook_new" - external insert_page : - [>`notebook] obj -> [>`widget] obj -> tab_label:[>`widget] optobj -> - menu_label:[>`widget] optobj -> pos:int -> unit - = "ml_gtk_notebook_insert_page_menu" - (* default is append to end *) - external remove_page : [>`notebook] obj -> int -> unit - = "ml_gtk_notebook_remove_page" - external get_current_page : [>`notebook] obj -> int - = "ml_gtk_notebook_get_current_page" - external set_page : [>`notebook] obj -> int -> unit - = "ml_gtk_notebook_set_page" - external set_tab_pos : [>`notebook] obj -> position -> unit - = "ml_gtk_notebook_set_tab_pos" - external set_homogeneous_tabs : [>`notebook] obj -> bool -> unit - = "ml_gtk_notebook_set_homogeneous_tabs" - external set_show_tabs : [>`notebook] obj -> bool -> unit - = "ml_gtk_notebook_set_show_tabs" - external set_show_border : [>`notebook] obj -> bool -> unit - = "ml_gtk_notebook_set_show_border" - external set_scrollable : [>`notebook] obj -> bool -> unit - = "ml_gtk_notebook_set_scrollable" - external set_tab_border : [>`notebook] obj -> int -> unit - = "ml_gtk_notebook_set_tab_border" - external popup_enable : [>`notebook] obj -> unit - = "ml_gtk_notebook_popup_enable" - external popup_disable : [>`notebook] obj -> unit - = "ml_gtk_notebook_popup_disable" - external get_nth_page : [>`notebook] obj -> int -> widget obj - = "ml_gtk_notebook_get_nth_page" - external page_num : [>`notebook] obj -> [>`widget] obj -> int - = "ml_gtk_notebook_page_num" - external next_page : [>`notebook] obj -> unit - = "ml_gtk_notebook_next_page" - external prev_page : [>`notebook] obj -> unit - = "ml_gtk_notebook_prev_page" - external get_tab_label : [>`notebook] obj -> [>`widget] obj -> widget obj - = "ml_gtk_notebook_get_tab_label" - external set_tab_label : - [>`notebook] obj -> [>`widget] obj -> [>`widget] obj -> unit - = "ml_gtk_notebook_set_tab_label" - external get_menu_label : [>`notebook] obj -> [>`widget] obj -> widget obj - = "ml_gtk_notebook_get_menu_label" - external set_menu_label : - [>`notebook] obj -> [>`widget] obj -> [>`widget] obj -> unit - = "ml_gtk_notebook_set_menu_label" - external reorder_child : [>`notebook] obj -> [>`widget] obj -> int -> unit - = "ml_gtk_notebook_reorder_child" - - let set_popup w = function - true -> popup_enable w - | false -> popup_disable w - let set ?page ?tab_pos ?show_tabs ?homogeneous_tabs - ?show_border ?scrollable ?tab_border ?popup w = - let may_set f = may ~f:(f w) in - may_set set_page page; - may_set set_tab_pos tab_pos; - may_set set_show_tabs show_tabs; - may_set set_homogeneous_tabs homogeneous_tabs; - may_set set_show_border show_border; - may_set set_scrollable scrollable; - may_set set_tab_border tab_border; - may_set set_popup popup - module Signals = struct - open GtkArgv - open GtkSignal - let marshal_page f argv = function - | _ :: INT page :: _ -> f page - | _ -> invalid_arg "GtkPack.Notebook.Signals.marshal_page" - let switch_page : ([>`notebook],_) t = - { name = "switch_page"; marshaller = marshal_page } - end -end diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkRange.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkRange.ml deleted file mode 100644 index b67e49b2e..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkRange.ml +++ /dev/null @@ -1,147 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open Tags -open GtkBase - -module Progress = struct - let cast w : progress obj = Object.try_cast w "GtkProgress" - external set_show_text : [>`progress] obj -> bool -> unit - = "ml_gtk_progress_set_show_text" - external set_text_alignment : - [>`progress] obj -> ?x:float -> ?y:float -> unit -> unit - = "ml_gtk_progress_set_show_text" - external set_format_string : [>`progress] obj -> string -> unit - = "ml_gtk_progress_set_format_string" - external set_adjustment : [>`progress] obj -> [>`adjustment] obj -> unit - = "ml_gtk_progress_set_adjustment" - external configure : - [>`progress] obj -> current:float -> min:float -> max:float -> unit - = "ml_gtk_progress_configure" - external set_percentage : [>`progress] obj -> float -> unit - = "ml_gtk_progress_set_percentage" - external set_value : [>`progress] obj -> float -> unit - = "ml_gtk_progress_set_value" - external get_value : [>`progress] obj -> float - = "ml_gtk_progress_get_value" - external get_percentage : [>`progress] obj -> float - = "ml_gtk_progress_get_current_percentage" - external set_activity_mode : [>`progress] obj -> bool -> unit - = "ml_gtk_progress_set_activity_mode" - external get_current_text : [>`progress] obj -> string - = "ml_gtk_progress_get_current_text" - external get_adjustment : [>`progress] obj -> adjustment obj - = "ml_gtk_progress_get_adjustment" - let set ?value ?percentage ?activity_mode - ?show_text ?format_string ?text_xalign ?text_yalign w = - may value ~f:(set_value w); - may percentage ~f:(set_percentage w); - may activity_mode ~f:(set_activity_mode w); - may show_text ~f:(set_show_text w); - may format_string ~f:(set_format_string w); - if text_xalign <> None || text_yalign <> None then - set_text_alignment w ?x:text_xalign ?y:text_yalign () -end - -module ProgressBar = struct - let cast w : progress_bar obj = Object.try_cast w "GtkProgressBar" - external create : unit -> progress_bar obj = "ml_gtk_progress_bar_new" - external create_with_adjustment : [>`adjustment] obj -> progress_bar obj - = "ml_gtk_progress_bar_new_with_adjustment" - external set_bar_style : - [>`progressbar] obj -> [`CONTINUOUS|`DISCRETE] -> unit - = "ml_gtk_progress_bar_set_bar_style" - external set_discrete_blocks : [>`progressbar] obj -> int -> unit - = "ml_gtk_progress_bar_set_discrete_blocks" - external set_activity_step : [>`progressbar] obj -> int -> unit - = "ml_gtk_progress_bar_set_activity_step" - external set_activity_blocks : [>`progressbar] obj -> int -> unit - = "ml_gtk_progress_bar_set_activity_blocks" - external set_orientation : - [>`progressbar] obj -> Tags.progress_bar_orientation -> unit - = "ml_gtk_progress_bar_set_orientation" - let set ?bar_style ?discrete_blocks ?activity_step ?activity_blocks w = - let may_set f opt = may opt ~f:(f w) in - may_set set_bar_style bar_style; - may_set set_discrete_blocks discrete_blocks; - may_set set_activity_step activity_step; - may_set set_activity_blocks activity_blocks -end - -module Range = struct - let cast w : range obj = Object.try_cast w "GtkRange" - external coerce : [>`range] obj -> range obj = "%identity" - external get_adjustment : [>`range] obj -> adjustment obj - = "ml_gtk_range_get_adjustment" - external set_adjustment : [>`range] obj -> [>`adjustment] obj -> unit - = "ml_gtk_range_set_adjustment" - external set_update_policy : [>`range] obj -> update_type -> unit - = "ml_gtk_range_set_update_policy" - let set ?adjustment ?update_policy w = - may adjustment ~f:(set_adjustment w); - may update_policy ~f:(set_update_policy w) -end - -module Scale = struct - let cast w : scale obj = Object.try_cast w "GtkScale" - external hscale_new : [>`adjustment] optobj -> scale obj - = "ml_gtk_hscale_new" - external vscale_new : [>`adjustment] optobj -> scale obj - = "ml_gtk_vscale_new" - let create ?adjustment (dir : orientation) = - let create = if dir = `HORIZONTAL then hscale_new else vscale_new in - create (Gpointer.optboxed adjustment) - external set_digits : [>`scale] obj -> int -> unit - = "ml_gtk_scale_set_digits" - external set_draw_value : [>`scale] obj -> bool -> unit - = "ml_gtk_scale_set_draw_value" - external set_value_pos : [>`scale] obj -> position -> unit - = "ml_gtk_scale_set_value_pos" - external get_value_width : [>`scale] obj -> int - = "ml_gtk_scale_get_value_width" - external draw_value : [>`scale] obj -> unit - = "ml_gtk_scale_draw_value" - let set ?digits ?draw_value ?value_pos w = - may digits ~f:(set_digits w); - may draw_value ~f:(set_draw_value w); - may value_pos ~f:(set_value_pos w) -end - -module Scrollbar = struct - let cast w : scrollbar obj = Object.try_cast w "GtkScrollbar" - external hscrollbar_new : [>`adjustment] optobj -> scrollbar obj - = "ml_gtk_hscrollbar_new" - external vscrollbar_new : [>`adjustment] optobj -> scrollbar obj - = "ml_gtk_vscrollbar_new" - let create ?adjustment (dir : orientation) = - let create = if dir = `HORIZONTAL then hscrollbar_new else vscrollbar_new - in create (Gpointer.optboxed adjustment) -end - -module Ruler = struct - let cast w : ruler obj = Object.try_cast w "GtkRuler" - external hruler_new : unit -> ruler obj = "ml_gtk_hruler_new" - external vruler_new : unit -> ruler obj = "ml_gtk_vruler_new" - let create (dir : orientation) = - if dir = `HORIZONTAL then hruler_new () else vruler_new () - external set_metric : [>`ruler] obj -> metric_type -> unit - = "ml_gtk_ruler_set_metric" - external set_range : - [>`ruler] obj -> - lower:float -> upper:float -> position:float -> max_size:float -> unit - = "ml_gtk_ruler_set_range" - external get_lower : [>`ruler] obj -> float = "ml_gtk_ruler_get_lower" - external get_upper : [>`ruler] obj -> float = "ml_gtk_ruler_get_upper" - external get_position : [>`ruler] obj -> float = "ml_gtk_ruler_get_position" - external get_max_size : [>`ruler] obj -> float = "ml_gtk_ruler_get_max_size" - let set_range ?lower ?upper ?position ?max_size w = - set_range w ~lower:(may_default get_lower w ~opt:lower) - ~upper:(may_default get_upper w ~opt:upper) - ~position:(may_default get_position w ~opt:position) - ~max_size:(may_default get_max_size w ~opt:max_size) - let set ?metric ?lower ?upper ?position ?max_size w = - may metric ~f:(set_metric w); - if lower <> None || upper <> None || position <> None || max_size <> None - then set_range w ?lower ?upper ?position ?max_size -end diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkSignal.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkSignal.ml deleted file mode 100644 index 8fa460288..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkSignal.ml +++ /dev/null @@ -1,65 +0,0 @@ -(* $Id$ *) - -open Gtk - -type id -type ('a,'b) t = - { name: string; - marshaller: ('b -> GtkArgv.t -> GtkArgv.data list -> unit) } - -let enter_callback = ref (fun () -> ()) -and exit_callback = ref (fun () -> ()) - -let stop_emit_ref = ref false -let stop_emit () = stop_emit_ref := true - -type saved_state = State of bool -let push_callback () = - !enter_callback (); - let old = !stop_emit_ref in - stop_emit_ref := false; - State old - -let pop_callback (State old) = - let res = !stop_emit_ref in - stop_emit_ref := old; - !exit_callback (); - res - -external connect : - 'a obj -> name:string -> callback:(GtkArgv.t -> unit) -> after:bool -> id - = "ml_gtk_signal_connect" -external emit_stop_by_name : 'a obj -> name:string -> unit - = "ml_gtk_signal_emit_stop_by_name" -let connect ~(sgn : ('a, _) t) ~callback ?(after=false) (obj : 'a obj) = - let callback argv = - let old = push_callback () in - let exn = - try sgn.marshaller callback argv (GtkArgv.get_args argv); None - with exn -> Some exn - in - if pop_callback old then emit_stop_by_name obj ~name:sgn.name; - Gaux.may ~f:raise exn - in - connect obj ~name:sgn.name ~callback ~after -external disconnect : 'a obj -> id -> unit - = "ml_gtk_signal_disconnect" -external handler_block : 'a obj -> id -> unit - = "ml_gtk_signal_handler_block" -external handler_unblock : 'a obj -> id -> unit - = "ml_gtk_signal_handler_unblock" - -let marshal_unit f _ _ = f () -let marshal_int f _ = function - | GtkArgv.INT n :: _ -> f n - | _ -> invalid_arg "GtkSignal.marshal_int" - -let emit (obj : 'a obj) ~(sgn : ('a, 'b) t) - ~(emitter : 'a obj -> name:string -> 'b) = - emitter obj ~name:sgn.name -external emit_none : 'a obj -> name:string -> unit -> unit - = "ml_gtk_signal_emit_none" -let emit_unit obj ~sgn = emit obj ~emitter:emit_none ~sgn () -external emit_int : 'a obj -> name:string -> int -> unit - = "ml_gtk_signal_emit_int" -let emit_int = emit ~emitter:emit_int diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkSignal.mli b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkSignal.mli deleted file mode 100644 index 0ef2ab2ea..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkSignal.mli +++ /dev/null @@ -1,45 +0,0 @@ -(* $Id$ *) - -open Gtk - -type id -type ('a,'b) t = - { name: string; - marshaller: ('b -> GtkArgv.t -> GtkArgv.data list -> unit) } - -val stop_emit : unit -> unit - (* Call [stop_emit ()] in a callback to prohibit further handling - of the current signal invocation, by calling [emit_stop_by_name]. - Be careful about where you use it, since the concept of current - signal may be tricky. *) - -val connect : - sgn:('a, 'b) t -> callback:'b -> ?after:bool -> 'a obj -> id - (* You may use [stop_emit] inside the callback *) - -external disconnect : 'a obj -> id -> unit - = "ml_gtk_signal_disconnect" -external emit_stop_by_name : 'a obj -> name:string -> unit - = "ml_gtk_signal_emit_stop_by_name" - (* Unsafe: use [stop_emit] instead. *) -external handler_block : 'a obj -> id -> unit - = "ml_gtk_signal_handler_block" -external handler_unblock : 'a obj -> id -> unit - = "ml_gtk_signal_handler_unblock" - -(* Some marshaller functions, to build signals *) -val marshal_unit : (unit -> unit) -> GtkArgv.t -> GtkArgv.data list -> unit -val marshal_int : (int -> unit) -> GtkArgv.t -> GtkArgv.data list -> unit - -(* Emitter functions *) -val emit : - 'a obj -> sgn:('a, 'b) t -> emitter:('a obj -> name:string -> 'b) -> 'b -val emit_unit : 'a obj -> sgn:('a, unit -> unit) t -> unit -val emit_int : 'a obj -> sgn:('a, int -> unit) t -> int -> unit - -(* Internal functions. *) -val enter_callback : (unit -> unit) ref -val exit_callback : (unit -> unit) ref -type saved_state -val push_callback : unit -> saved_state -val pop_callback : saved_state -> bool diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkThInit.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkThInit.ml deleted file mode 100644 index 517f80be4..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkThInit.ml +++ /dev/null @@ -1,5 +0,0 @@ -(* $Id$ *) - -(* Start the main thread in a threaded toplevel *) - -let thread = GtkThread.start () diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkThread.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkThread.ml deleted file mode 100644 index 3ab577e3e..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkThread.ml +++ /dev/null @@ -1,33 +0,0 @@ -(* $Id$ *) - -open GtkMain - -(* We check first whether there are some event pending, and run - some iterations. We then need to delay, thus focing a thread switch. *) - -let main () = - try - let loop = (Glib.Main.create true) in - Main.loops := loop :: !Main.loops; - while Glib.Main.is_running loop do - let i = ref 0 in - while !i < 100 && Glib.Main.pending () do - Glib.Main.iteration true; - incr i - done; - Thread.delay 0.001 - done; - Main.loops := List.tl !Main.loops - with exn -> - Main.loops := List.tl !Main.loops; - raise exn - -let start = Thread.create main - -let _ = - let mutex = Mutex.create () in - let depth = ref 0 in - GtkSignal.enter_callback := - (fun () -> if !depth = 0 then Mutex.lock mutex; incr depth); - GtkSignal.exit_callback := - (fun () -> decr depth; if !depth = 0 then Mutex.unlock mutex) diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkTree.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkTree.ml deleted file mode 100644 index 926074167..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkTree.ml +++ /dev/null @@ -1,122 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open Tags -open GtkBase - -module TreeItem = struct - let cast w : tree_item obj = Object.try_cast w "GtkTreeItem" - external create : unit -> tree_item obj = "ml_gtk_tree_item_new" - external create_with_label : string -> tree_item obj - = "ml_gtk_tree_item_new_with_label" - let create ?label () = - match label with None -> create () - | Some label -> create_with_label label - external set_subtree : [>`treeitem] obj -> [>`widget] obj -> unit - = "ml_gtk_tree_item_set_subtree" - external remove_subtree : [>`treeitem] obj -> unit - = "ml_gtk_tree_item_remove_subtree" - external expand : [>`treeitem] obj -> unit - = "ml_gtk_tree_item_expand" - external collapse : [>`treeitem] obj -> unit - = "ml_gtk_tree_item_collapse" - external subtree : [>`treeitem] obj -> tree obj - = "ml_GTK_TREE_ITEM_SUBTREE" - module Signals = struct - open GtkSignal - let expand : ([>`treeitem],_) t = - { name = "expand"; marshaller = marshal_unit } - let collapse : ([>`treeitem],_) t = - { name = "collapse"; marshaller = marshal_unit } - end -end - -module Tree = struct - let cast w : tree obj = Object.try_cast w "GtkTree" - external coerce : [>`tree] obj -> tree obj = "%identity" - external create : unit -> tree obj = "ml_gtk_tree_new" - external insert : [>`tree] obj -> [>`treeitem] obj -> pos:int -> unit - = "ml_gtk_tree_insert" - external remove_items : [>`tree] obj -> [>`treeitem] obj list -> unit - = "ml_gtk_tree_remove_items" - external clear_items : [>`tree] obj -> start:int -> stop:int -> unit - = "ml_gtk_tree_clear_items" - external select_item : [>`tree] obj -> pos:int -> unit - = "ml_gtk_tree_select_item" - external unselect_item : [>`tree] obj -> pos:int -> unit - = "ml_gtk_tree_unselect_item" - external child_position : [>`tree] obj -> [>`treeitem] obj -> int - = "ml_gtk_tree_child_position" - external set_selection_mode : [>`tree] obj -> selection_mode -> unit - = "ml_gtk_tree_set_selection_mode" - external set_view_mode : [>`tree] obj -> [`LINE|`ITEM] -> unit - = "ml_gtk_tree_set_view_mode" - external set_view_lines : [>`tree] obj -> bool -> unit - = "ml_gtk_tree_set_view_lines" - external selection : [>`tree] obj -> tree_item obj list = - "ml_gtk_tree_selection" - let set ?selection_mode ?view_mode ?view_lines w = - let may_set f = may ~f:(f w) in - may_set set_selection_mode selection_mode; - may_set set_view_mode view_mode; - may_set set_view_lines view_lines - module Signals = struct - open GtkSignal - let selection_changed : ([>`tree],_) t = - { name = "selection_changed"; marshaller = marshal_unit } - let select_child : ([>`tree],_) t = - { name = "select_child"; marshaller = Widget.Signals.marshal } - let unselect_child : ([>`tree],_) t = - { name = "unselect_child"; marshaller = Widget.Signals.marshal } - end -end -(* -module CTree = struct - type t - type node = [`ctree] obj * t - let cast w : ctree obj = Object.try_cast w "GtkCTree" - external create : cols:int -> treecol:int -> ctree obj = "ml_gtk_ctree_new" - external insert_node : - [>`ctree] obj -> ?parent:node -> ?sibling:node -> - titles:optstring array -> - spacing:int -> ?pclosed:Gdk.pixmap -> ?mclosed:Gdk.bitmap obj -> - ?popened:Gdk.pixmap -> ?mopened:Gdk.bitmap obj -> - is_leaf:bool -> expanded:bool -> node - = "ml_gtk_ctree_insert_node_bc" "ml_gtk_ctree_insert_node" - let insert_node' - w ?parent ?sibling ?(spacing = 0) ?(is_leaf = true) - ?(expanded = false) - ?pclosed ?mclosed ?popened ?mopened titles = - let len = GtkList.CList.get_columns w in - if List.length titles > len then invalid_arg "CTree.insert_node"; - let arr = Array.create ~len None in - List.fold_left titles ~acc:0 - ~f:(fun ~acc text -> arr.(acc) <- Some text; acc+1); - insert_node w - ?parent ?sibling ~titles:(Array.map ~f:optstring arr) - ~spacing ~is_leaf ~expanded - ?pclosed ?mclosed ?popened ?mopened - external node_set_row_data : [>`ctree] obj -> node:node -> Obj.t -> unit - = "ml_gtk_ctree_node_set_row_data" - external node_get_row_data : [>`ctree] obj -> node:node -> Obj.t - = "ml_gtk_ctree_node_get_row_data" - external set_indent : [>`ctree] obj -> int -> unit - = "ml_gtk_ctree_set_indent" - module Signals = struct - open GtkSignal - let marshal_select f argv = - let node : node = - match GtkArgv.get_pointer argv ~pos:0 with - Some p -> Obj.magic p - | None -> invalid_arg "GtkTree.CTree.Signals.marshal_select" - in - f ~node ~column:(GtkArgv.get_int argv ~pos:1) - - let tree_select_row : ([>`ctree],_) t = - { name = "tree_select_row"; marshaller = marshal_select } - let tree_unselect_row : ([>`ctree],_) t = - { name = "tree_unselect_row"; marshaller = marshal_select } - end -end -*) diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkWindow.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkWindow.ml deleted file mode 100644 index ffe00e921..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkWindow.ml +++ /dev/null @@ -1,189 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open Tags -open GtkBase - -module Window = struct - let cast w : window obj = Object.try_cast w "GtkWindow" - external coerce : [>`window] obj -> window obj = "%identity" - external create : window_type -> window obj = "ml_gtk_window_new" - external set_title : [>`window] obj -> string -> unit - = "ml_gtk_window_set_title" - external set_wmclass : [>`window] obj -> name:string -> clas:string -> unit - = "ml_gtk_window_set_title" - external get_wmclass_name : [>`window] obj -> string - = "ml_gtk_window_get_wmclass_name" - external get_wmclass_class : [>`window] obj -> string - = "ml_gtk_window_get_wmclass_class" - (* set_focus/default are called by Widget.grab_focus/default *) - external set_focus : [>`window] obj -> [>`widget] obj -> unit - = "ml_gtk_window_set_focus" - external set_default : [>`window] obj -> [>`widget] obj -> unit - = "ml_gtk_window_set_default" - external set_policy : - [>`window] obj -> - allow_shrink:bool -> allow_grow:bool -> auto_shrink:bool -> unit - = "ml_gtk_window_set_policy" - external get_allow_shrink : [>`window] obj -> bool - = "ml_gtk_window_get_allow_shrink" - external get_allow_grow : [>`window] obj -> bool - = "ml_gtk_window_get_allow_grow" - external get_auto_shrink : [>`window] obj -> bool - = "ml_gtk_window_get_auto_shrink" - external activate_focus : [>`window] obj -> bool - = "ml_gtk_window_activate_focus" - external activate_default : [>`window] obj -> bool - = "ml_gtk_window_activate_default" - external set_modal : [>`window] obj -> bool -> unit - = "ml_gtk_window_set_modal" - external set_default_size : - [>`window] obj -> width:int -> height:int -> unit - = "ml_gtk_window_set_default_size" - external set_position : [>`window] obj -> window_position -> unit - = "ml_gtk_window_set_position" - external set_transient_for : [>`window] obj ->[>`window] obj -> unit - = "ml_gtk_window_set_transient_for" - - let set_wmclass ?name ?clas:wm_class w = - set_wmclass w ~name:(may_default get_wmclass_name w ~opt:name) - ~clas:(may_default get_wmclass_class w ~opt:wm_class) - let set_policy ?allow_shrink ?allow_grow ?auto_shrink w = - set_policy w - ~allow_shrink:(may_default get_allow_shrink w ~opt:allow_shrink) - ~allow_grow:(may_default get_allow_grow w ~opt:allow_grow) - ~auto_shrink:(may_default get_auto_shrink w ~opt:auto_shrink) - let set ?title ?wm_name ?wm_class ?position ?allow_shrink ?allow_grow - ?auto_shrink ?modal ?(x = -2) ?(y = -2) w = - may title ~f:(set_title w); - if wm_name <> None || wm_class <> None then - set_wmclass w ?name:wm_name ?clas:wm_class; - may position ~f:(set_position w); - if allow_shrink <> None || allow_grow <> None || auto_shrink <> None then - set_policy w ?allow_shrink ?allow_grow ?auto_shrink; - may ~f:(set_modal w) modal; - if x <> -2 || y <> -2 then Widget.set_uposition w ~x ~y - external add_accel_group : [>`window] obj -> accel_group -> unit - = "ml_gtk_window_add_accel_group" - external remove_accel_group : - [>`window] obj -> accel_group -> unit - = "ml_gtk_window_remove_accel_group" - external activate_focus : [>`window] obj -> unit - = "ml_gtk_window_activate_focus" - external activate_default : [>`window] obj -> unit - = "ml_gtk_window_activate_default" - module Signals = struct - open GtkSignal - let move_resize : ([>`window],_) t = - { name = "move_resize"; marshaller = marshal_unit } - let set_focus : ([>`window],_) t = - { name = "set_focus"; marshaller = Widget.Signals.marshal_opt } - end -end - -module Dialog = struct - let cast w : dialog obj = Object.try_cast w "GtkDialog" - external coerce : [>`dialog] obj -> dialog obj = "%identity" - external create : unit -> dialog obj = "ml_gtk_dialog_new" - external action_area : [>`dialog] obj -> box obj - = "ml_GtkDialog_action_area" - external vbox : [>`dialog] obj -> box obj - = "ml_GtkDialog_vbox" -end - -module InputDialog = struct - let cast w : input_dialog obj = Object.try_cast w "GtkInputDialog" - external create : unit -> input_dialog obj = "ml_gtk_input_dialog_new" - module Signals = struct - open GtkSignal - let enable_device : ([>`inputdialog],_) t = - { name = "enable_device"; marshaller = marshal_int } - let disable_device : ([>`inputdialog],_) t = - { name = "disable_device"; marshaller = marshal_int } - end -end - -module FileSelection = struct - let cast w : file_selection obj = Object.try_cast w "GtkFileSelection" - external create : string -> file_selection obj = "ml_gtk_file_selection_new" - external set_filename : [>`filesel] obj -> string -> unit - = "ml_gtk_file_selection_set_filename" - external get_filename : [>`filesel] obj -> string - = "ml_gtk_file_selection_get_filename" - external show_fileop_buttons : [>`filesel] obj -> unit - = "ml_gtk_file_selection_show_fileop_buttons" - external hide_fileop_buttons : [>`filesel] obj -> unit - = "ml_gtk_file_selection_hide_fileop_buttons" - external get_ok_button : [>`filesel] obj -> button obj - = "ml_gtk_file_selection_get_ok_button" - external get_cancel_button : [>`filesel] obj -> button obj - = "ml_gtk_file_selection_get_cancel_button" - external get_help_button : [>`filesel] obj -> button obj - = "ml_gtk_file_selection_get_help_button" - let set_fileop_buttons w = function - true -> show_fileop_buttons w - | false -> hide_fileop_buttons w - let set ?filename ?fileop_buttons w = - may filename ~f:(set_filename w); - may fileop_buttons ~f:(set_fileop_buttons w) -end - -module FontSelectionDialog = struct - let cast w : font_selection_dialog obj = - Object.try_cast w "GtkFontSelectionDialog" - external create : ?title:string -> unit -> font_selection_dialog obj - = "ml_gtk_font_selection_dialog_new" - external font_selection : [>`fontseldialog] obj -> font_selection obj - = "ml_gtk_font_selection_dialog_fontsel" - external ok_button : [>`fontseldialog] obj -> button obj - = "ml_gtk_font_selection_dialog_ok_button" - external apply_button : [>`fontseldialog] obj -> button obj - = "ml_gtk_font_selection_dialog_apply_button" - external cancel_button : [>`fontseldialog] obj -> button obj - = "ml_gtk_font_selection_dialog_cancel_button" -(* - type null_terminated - let null_terminated arg : null_terminated = - match arg with None -> Obj.magic Gpointer.raw_null - | Some l -> - let len = List.length l in - let arr = Array.create (len + 1) "" in - let rec loop i = function - [] -> arr.(i) <- Obj.magic Gpointer.raw_null - | s::l -> arr.(i) <- s; loop (i+1) l - in loop 0 l; - Obj.magic (arr : string array) - external get_font : [>`fontseldialog] obj -> Gdk.font - = "ml_gtk_font_selection_dialog_get_font" - let get_font w = - try Some (get_font w) with Gpointer.Null -> None - external get_font_name : [>`fontseldialog] obj -> string - = "ml_gtk_font_selection_dialog_get_font_name" - let get_font_name w = - try Some (get_font_name w) with Gpointer.Null -> None - external set_font_name : [>`fontseldialog] obj -> string -> unit - = "ml_gtk_font_selection_dialog_set_font_name" - external set_filter : - [>`fontseldialog] obj -> font_filter_type -> font_type list -> - null_terminated -> null_terminated -> null_terminated -> - null_terminated -> null_terminated -> null_terminated -> unit - = "ml_gtk_font_selection_dialog_set_filter_bc" - "ml_gtk_font_selection_dialog_set_filter" - let set_filter w ?kind:(tl=[`ALL]) ?foundry - ?weight ?slant ?setwidth ?spacing ?charset filter = - set_filter w filter tl (null_terminated foundry) - (null_terminated weight) (null_terminated slant) - (null_terminated setwidth) (null_terminated spacing) - (null_terminated charset) - external get_preview_text : [>`fontseldialog] obj -> string - = "ml_gtk_font_selection_dialog_get_preview_text" - external set_preview_text : [>`fontseldialog] obj -> string -> unit - = "ml_gtk_font_selection_dialog_set_preview_text" -*) -end - -module Plug = struct - let cast w : plug obj = Object.try_cast w "GtkPlug" - external create : Gdk.xid -> plug obj = "ml_gtk_plug_new" -end diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkXmHTML.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkXmHTML.ml deleted file mode 100644 index 3bf5791a4..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkXmHTML.ml +++ /dev/null @@ -1,109 +0,0 @@ -(* $Id$ *) - -open Gtk - -type string_direction = [ - | `R_TO_L - | `L_TO_R -] - -type position = [ - | `END - | `CENTER - | `BEGINNING -] - -type line_type = [ - | `SOLID - | `DASHED - | `SINGLE - | `DOUBLE - | `STRIKE - | `UNDER - | `NONE -] - -type dither_type = [ - | `QUICK - | `BEST - | `FAST - | `SLOW - | `DISABLED -] - -type xmhtml = [`widget|`container|`xmhtml] - -external create : unit -> xmhtml obj = "ml_gtk_xmhtml_new" -external freeze : [> `xmhtml] obj -> unit = "ml_gtk_xmhtml_freeze" -external thaw : [> `xmhtml] obj -> unit = "ml_gtk_xmhtml_thaw" -external source : [> `xmhtml] obj -> string -> unit = "ml_gtk_xmhtml_source" -(* external get_source : [> `xmhtml] obj -> string = "ml_gtk_xmhtml_get_source" *) -external set_string_direction : [> `xmhtml] obj -> string_direction -> unit - = "ml_gtk_xmhtml_set_string_direction" -external set_alignment : [> `xmhtml] obj -> position -> unit - = "ml_gtk_xmhtml_set_alignment" -(* external set_outline : [> `xmhtml] obj -> bool -> unit - = "ml_gtk_xmhtml_outline" *) -external set_font_familty : - [> `xmhtml] obj -> family:string -> sizes:string -> unit - = "ml_gtk_xmhtml_set_font_familty" -external set_font_familty_fixed : - [> `xmhtml] obj -> family:string -> sizes:string -> unit - = "ml_gtk_xmhtml_set_font_familty_fixed" -external set_font_charset : [> `xmhtml] obj -> string -> unit - = "ml_gtk_xmhtml_set_font_charset" -external set_allow_body_colors : [> `xmhtml] obj -> bool -> unit - = "ml_gtk_xmhtml_set_allow_body_colors" -external set_hilight_on_enter : [> `xmhtml] obj -> bool -> unit - = "ml_gtk_xmhtml_set_hilight_on_enter" -external set_anchor_underline_type : [> `xmhtml] obj -> line_type list -> unit - = "ml_gtk_xmhtml_set_anchor_underline_type" -external set_anchor_visited_underline_type : - [> `xmhtml] obj -> line_type list -> unit - = "ml_gtk_xmhtml_set_anchor_visited_underline_type" -external set_anchor_target_underline_type : - [> `xmhtml] obj -> line_type list -> unit - = "ml_gtk_xmhtml_set_anchor_target_underline_type" -external set_allow_color_switching : [> `xmhtml] obj -> bool -> unit - = "ml_gtk_xmhtml_set_allow_color_switching" -external set_dithering : [> `xmhtml] obj -> dither_type -> unit - = "ml_gtk_xmhtml_set_dithering" -external set_allow_font_switching : [> `xmhtml] obj -> bool -> unit - = "ml_gtk_xmhtml_set_allow_font_switching" -external set_max_image_colors : [> `xmhtml] obj -> int -> unit - = "ml_gtk_xmhtml_set_max_image_colors" -external set_allow_images : [> `xmhtml] obj -> bool -> unit - = "ml_gtk_xmhtml_set_allow_images" -external set_plc_intervals : - [> `xmhtml] obj -> min:int -> max:int -> default:int -> unit - = "ml_gtk_xmhtml_set_plc_intervals" -(* -external set_def_body_image_url : [> `xmhtml] obj -> string -> unit - = "ml_gtk_xmhtml_set_def_body_image_url" -*) -external set_anchor_buttons : [> `xmhtml] obj -> bool -> unit - = "ml_gtk_xmhtml_set_anchor_buttons" -external set_anchor_cursor : [> `xmhtml] obj -> Gdk.cursor option -> unit - = "ml_gtk_xmhtml_set_anchor_cursor" -external set_topline : [> `xmhtml] obj -> int -> unit - = "ml_gtk_xmhtml_set_topline" -external get_topline : [> `xmhtml] obj -> int - = "ml_gtk_xmhtml_get_topline" -external set_freeze_animations : [> `xmhtml] obj -> bool -> unit - = "ml_gtk_xmhtml_set_freeze_animations" -external set_screen_gamma : [> `xmhtml] obj -> float -> unit - = "ml_gtk_xmhtml_set_screen_gamma" -external set_perfect_colors : [> `xmhtml] obj -> bool -> unit - = "ml_gtk_xmhtml_set_perfect_colors" -external set_uncompress_command : [> `xmhtml] obj -> string -> unit - = "ml_gtk_xmhtml_set_uncompress_command" -external set_strict_checking : [> `xmhtml] obj -> bool -> unit - = "ml_gtk_xmhtml_set_strict_checking" -external set_bad_html_warnings : [> `xmhtml] obj -> bool -> unit - = "ml_gtk_xmhtml_set_bad_html_warnings" -external set_allow_form_coloring : [> `xmhtml] obj -> bool -> unit - = "ml_gtk_xmhtml_set_allow_form_coloring" -external set_imagemap_draw : [> `xmhtml] obj -> bool -> unit - = "ml_gtk_xmhtml_set_imagemap_draw" -external set_alpha_processing : [> `xmhtml] obj -> bool -> unit - = "ml_gtk_xmhtml_set_alpha_processing" diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtk_tags.var b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtk_tags.var deleted file mode 100644 index eb4ead78d..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtk_tags.var +++ /dev/null @@ -1,171 +0,0 @@ -(* $Id$ *) - -exception ml_raise_gtk - -type arrow_type = "GTK_ARROW_" - [ `UP | `DOWN | `LEFT | `RIGHT ] - -type attach_options = "GTK_" - [ `EXPAND | `SHRINK | `FILL ] - -type button_box_style = "GTK_BUTTONBOX_" - [ `DEFAULT_STYLE | `SPREAD | `EDGE | `START | `END ] - -type direction_type = "GTK_DIR_" - [ `TAB_FORWARD | `TAB_BACKWARD | `UP | `DOWN | `LEFT | `RIGHT ] - -type justification = "GTK_JUSTIFY_" - [ `LEFT | `RIGHT | `CENTER | `FILL ] - -type match_type = "GTK_MATCH_" - [ `ALL | `ALL_TAIL | `HEAD | `TAIL | `EXACT | `LAST ] - -type metric_type = "GTK_" - [ `PIXELS | `INCHES | `CENTIMETERS ] - -type orientation = "GTK_ORIENTATION_" - [ `HORIZONTAL | `VERTICAL ] - -type corner_type = "GTK_CORNER_" - [ `TOP_LEFT | `BOTTOM_LEFT | `TOP_RIGHT | `BOTTOM_RIGHT ] - -type pack_type = "GTK_PACK_" - [ `START | `END ] - -type path_type = "GTK_PATH_" - [ `WIDGET | `WIDGET_CLASS | `CLASS ] - -type policy_type = "GTK_POLICY_" - [ `ALWAYS | `AUTOMATIC | `NEVER ] - -type position = "GTK_POS_" - [ `LEFT | `RIGHT | `TOP | `BOTTOM ] - -type preview_type = "GTK_PREVIEW_" - [ `COLOR | `GRAYSCALE ] - -type relief_style = "GTK_RELIEF_" - [ `NORMAL | `HALF | `NONE ] - -type resize_mode = "GTK_RESIZE_" - [ `PARENT | `QUEUE | `IMMEDIATE ] - -type signal_run_type = "GTK_RUN_" - [ `FIRST | `LAST | `BOTH | `NO_RECURSE | `ACTION | `NO_HOOKS ] - -type scroll_type = "GTK_SCROLL_" - [ `NONE | `STEP_FORWARD | `STEP_BACKWARD | `PAGE_BACKWARD - | `PAGE_FORWARD | `JUMP ] - -type selection_mode = "GTK_SELECTION_" - [ `SINGLE | `BROWSE | `MULTIPLE | `EXTENDED ] - -type shadow_type = "GTK_SHADOW_" - [ `NONE | `IN | `OUT | `ETCHED_IN | `ETCHED_OUT ] - -type state_type = "GTK_STATE_" - [ `NORMAL | `ACTIVE | `PRELIGHT | `SELECTED | `INSENSITIVE ] - -type submenu_direction = "GTK_DIRECTION_" - [ `LEFT | `RIGHT ] - -type submenu_placement = "GTK_" - [ `TOP_BOTTOM | `LEFT_RIGHT ] - -type toolbar_style = "GTK_TOOLBAR_" - [ `ICONS | `TEXT | `BOTH ] - -type trough_type = "GTK_TROUGH_" - [ `NONE | `START | `END | `JUMP ] - -type update_type = "GTK_UPDATE_" - [ `CONTINUOUS | `DISCONTINUOUS | `DELAYED ] - -type visibility = "GTK_VISIBILITY_" - [ `NONE | `PARTIAL | `FULL ] - -type window_position = "GTK_WIN_POS_" - [ `NONE | `CENTER | `MOUSE | `CENTER_ALWAYS ] - -type window_type = "GTK_WINDOW_" - [ `TOPLEVEL | `DIALOG | `POPUP ] - -type sort_type = "GTK_SORT_" - [ `ASCENDING | `DESCENDING ] - - -type fundamental_type = "GTK_TYPE_" - [ `INVALID | `NONE | `CHAR | `BOOL | `INT | `UINT | `LONG | `ULONG - | `FLOAT | `DOUBLE | `STRING | `ENUM | `FLAGS | `BOXED | `FOREIGN - | `CALLBACK | `ARGS | `POINTER | `SIGNAL | `C_CALLBACK | `OBJECT ] - -type cell_type = "GTK_CELL_" - [ `EMPTY | `TEXT | `PIXMAP | `PIXTEXT | `WIDGET ] - -type toolbar_child = "GTK_TOOLBAR_CHILD_" - [ `SPACE | `BUTTON | `TOGGLEBUTTON | `RADIOBUTTON | `WIDGET ] - -type toolbar_space_style = "GTK_TOOLBAR_SPACE_" - [ `EMPTY | `LINE ] - -type tree_view_mode = "GTK_TREE_VIEW_" - [ `LINE | `ITEM ] - -type spin_type = "GTK_SPIN_" - [ `STEP_FORWARD | `STEP_BACKWARD | `PAGE_FORWARD | `PAGE_BACKWARD - | `HOME | `END | `USER_DEFINED ] - -type accel_flag = "GTK_ACCEL_" - [ `VISIBLE | `SIGNAL_VISIBLE | `LOCKED ] - -type packer_options = "GTK_" - [ `PACK_EXPAND | `FILL_X | `FILL_Y ] - -type side_type = "GTK_SIDE_" - [ `TOP | `BOTTOM | `LEFT | `RIGHT ] - -type anchor_type = "GTK_ANCHOR_" - [ `CENTER | `NORTH | `NW | `NE | `SOUTH | `SW | `SE | `WEST | `EAST ] - -type button_action = "GTK_BUTTON_" - [ `SELECTS | `DRAGS | `EXPANDS ] - -type calendar_display_options = "GTK_CALENDAR_" - [ `SHOW_HEADING | `SHOW_DAY_NAMES | `NO_MONTH_CHANGE | `SHOW_WEEK_NUMBERS - | `WEEK_START_MONDAY ] - -type progress_bar_style = "GTK_PROGRESS_" - [ `CONTINUOUS | `DISCRETE ] - -type progress_bar_orientation = "GTK_PROGRESS_" - [ `LEFT_TO_RIGHT | `RIGHT_TO_LEFT | `BOTTOM_TO_TOP | `TOP_TO_BOTTOM ] - -type dest_defaults = "GTK_DEST_DEFAULT_" - [ `MOTION | `HIGHLIGHT | `DROP | `ALL ] - -type target_flags = "GTK_TARGET_" - [ `SAME_APP | `SAME_WIDGET ] - -type font_metric_type = "GTK_FONT_METRIC_" - [ `PIXELS | `POINTS ] - -type font_type = "GTK_FONT_" - [ `BITMAP | `SCALABLE | `SCALABLE_BITMAP | `ALL ] - -type font_filter_type = "GTK_FONT_FILTER_" - [ `BASE | `USER ] - -(* -type tree_pos = "GTK_CTREE_POS_" - [ `BEFORE | `AS_CHILD | `AFTER ] - -type tree_line_style = "GTK_CTREE_LINES_" - [ `NONE | `SOLID | `DOTTED | `TABBED ] - -type tree_expander_style = "GTK_CTREE_EXPANDER_" - [ `NONE | `SQUARE | `TRIANGLE | `CIRCULAR ] - -type tree_expansion_type = "GTK_CTREE_EXPANSION_" - [ `EXPAND | `EXPAND_RECURSIVE | `COLLAPSE | `COLLAPSE_RECURSIVE - | `TOGGLE | `TOGGLE_RECURSIVE ] -*) diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkgl_tags.var b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkgl_tags.var deleted file mode 100644 index 57a9f7365..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkgl_tags.var +++ /dev/null @@ -1,19 +0,0 @@ -(* $Id$ *) - -type visual_options = "GDK_GL_" [ - | `USE_GL - | `BUFFER_SIZE - | `LEVEL - | `RGBA - | `DOUBLEBUFFER - | `STEREO - | `AUX_BUFFERS - | `RED_SIZE - | `GREEN_SIZE - | `BLUE_SIZE - | `ALPHA_SIZE - | `DEPTH_SIZE - | `STENCIL_SIZE - | `ACCUM_GREEN_SIZE - | `ACCUM_ALPHA_SIZE -] diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkxmhtml_tags.var b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkxmhtml_tags.var deleted file mode 100644 index ad9393103..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkxmhtml_tags.var +++ /dev/null @@ -1,30 +0,0 @@ -(* $Id$ *) - -type string_direction = "TSTRING_DIRECTION_" [ - | `R_TO_L - | `L_TO_R -] - -type position = "TALIGNMENT_" [ - | `END - | `CENTER - | `BEGINNING -] - -type line_type = "LINE_" [ - | `SOLID - | `DASHED - | `SINGLE - | `DOUBLE - | `STRIKE - | `UNDER - | `NONE "NO_LINE" -] - -type dither_type = "Xm" [ - | `QUICK - | `BEST - | `FAST - | `SLOW - | `DISABLED -] diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/lablgl.patch b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/lablgl.patch deleted file mode 100644 index c48de24d7..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/lablgl.patch +++ /dev/null @@ -1,112 +0,0 @@ -Index: Makefile -=================================================================== -RCS file: /staff2/garrigue/repos/lablGL/Makefile,v -retrieving revision 1.33 -retrieving revision 1.34 -diff -c -r1.33 -r1.34 -*** Makefile 1998/09/17 03:16:06 1.33 ---- Makefile 1999/06/18 07:39:08 1.34 -*************** -*** 12,22 **** - OTHERLIBS=-L$(LABLTKDIR) -llabltk41 $(LIBS) - - # Files -! MLOBJS = raw.cmo togl.cmo \ - gl.cmo glLight.cmo glList.cmo glMap.cmo \ - glMat.cmo glMisc.cmo glPix.cmo glClear.cmo \ - glTex.cmo glDraw.cmo glFunc.cmo gluMisc.cmo \ - gluNurbs.cmo gluQuadric.cmo gluTess.cmo gluMat.cmo - OPTOBJS = $(MLOBJS:.cmo=.cmx) - COBJS = ml_gl.o ml_glu.o ml_togl.o ml_raw.o \ - $(TOGLDIR)/togl.o ---- 12,23 ---- - OTHERLIBS=-L$(LABLTKDIR) -llabltk41 $(LIBS) - - # Files -! LIBOBJS = raw.cmo \ - gl.cmo glLight.cmo glList.cmo glMap.cmo \ - glMat.cmo glMisc.cmo glPix.cmo glClear.cmo \ - glTex.cmo glDraw.cmo glFunc.cmo gluMisc.cmo \ - gluNurbs.cmo gluQuadric.cmo gluTess.cmo gluMat.cmo -+ MLOBJS = $(LIBOBJS) togl.cmo - OPTOBJS = $(MLOBJS:.cmo=.cmx) - COBJS = ml_gl.o ml_glu.o ml_togl.o ml_raw.o \ - $(TOGLDIR)/togl.o -*************** -*** 53,60 **** - var2switch: var2switch.cmo - $(LINKER) var2switch.cmo -o $@ - -! lablgl.cma: $(MLOBJS) -! $(LIBRARIAN) -o lablgl.cma $(MLOBJS) - - lablgl.cmxa: $(OPTOBJS) - $(OPTLIB) -o lablgl.cmxa $(OPTOBJS) ---- 54,61 ---- - var2switch: var2switch.cmo - $(LINKER) var2switch.cmo -o $@ - -! lablgl.cma: $(LIBOBJS) -! $(LIBRARIAN) -o lablgl.cma $(LIBOBJS) - - lablgl.cmxa: $(OPTOBJS) - $(OPTLIB) -o lablgl.cmxa $(OPTOBJS) -*************** -*** 66,74 **** - $(TOGLDIR)/togl.o: - cd $(TOGLDIR) && $(MAKE) togl.o - -! lablgltop: lablgl.cma liblablgl.a - olablmktop $(OLABLINC) -custom -o lablgltop \ -! unix.cma tk41.cma lablgl.cma \ - -cclib "-L. -llablgl -lunix $(OTHERLIBS)" - - lablgl: lablgl.in Makefile.config ---- 67,75 ---- - $(TOGLDIR)/togl.o: - cd $(TOGLDIR) && $(MAKE) togl.o - -! lablgltop: lablgl.cma togl.cmo liblablgl.a - olablmktop $(OLABLINC) -custom -o lablgltop \ -! unix.cma tk41.cma lablgl.cma togl.cmo \ - -cclib "-L. -llablgl -lunix $(OTHERLIBS)" - - lablgl: lablgl.in Makefile.config -*************** -*** 107,113 **** - if test -d $(INSTALLDIR); then : ; else mkdir -p $(INSTALLDIR); fi - cp $(MLOBJS:.cmo=.cmi) $(INSTALLDIR) - cp $(MLOBJS:.cmo=.mli) $(INSTALLDIR) -! cp lablgl.cma liblablgl.a $(INSTALLDIR) - cp lablgltop $(INSTALLDIR) - cp lablgl lablgllink $(BINDIR) - if test -f lablgl.cmxa; then : ; \ ---- 108,114 ---- - if test -d $(INSTALLDIR); then : ; else mkdir -p $(INSTALLDIR); fi - cp $(MLOBJS:.cmo=.cmi) $(INSTALLDIR) - cp $(MLOBJS:.cmo=.mli) $(INSTALLDIR) -! cp lablgl.cma togl.cmo liblablgl.a $(INSTALLDIR) - cp lablgltop $(INSTALLDIR) - cp lablgl lablgllink $(BINDIR) - if test -f lablgl.cmxa; then : ; \ -Index: lablgllink.in -=================================================================== -RCS file: /staff2/garrigue/repos/lablGL/lablgllink.in,v -retrieving revision 1.2 -retrieving revision 1.3 -diff -c -r1.2 -r1.3 -*** lablgllink.in 1998/09/16 10:26:17 1.2 ---- lablgllink.in 1999/06/18 07:39:09 1.3 -*************** -*** 1,5 **** - #!/bin/sh - - exec olablc -custom @INCLUDES@ -I @INSTALLDIR@ \ -! tk41.cma lablgl.cma $* -cclib "-L@INSTALLDIR@ -llablgl" \ - -cclib "@OTHERLIBS@" ---- 1,5 ---- - #!/bin/sh - - exec olablc -custom @INCLUDES@ -I @INSTALLDIR@ \ -! tk41.cma lablgl.cma togl.cmo $* -cclib "-L@INSTALLDIR@ -llablgl" \ - -cclib "@OTHERLIBS@" diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/lablgtk.in b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/lablgtk.in deleted file mode 100644 index 98015140c..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/lablgtk.in +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/sh - -thread="no" - -case $1 in --help) - echo "Usage: lablgtk [-thread] [script-file]" - echo " -thread use the threaded version of the toplevel" - ;; --thread) - thread=yes - shift - ;; -esac - -if test $thread = yes; then - toplevel="@INSTALLDIR@/lablgtktop_t -I @LIBDIR@/threads" -else - toplevel=@INSTALLDIR@/lablgtktop -fi - -exec $toplevel -w s \ - -I @LABLGLDIR@ \ - -I @INSTALLDIR@ $* diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/ml_gdk.c b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/ml_gdk.c deleted file mode 100644 index 9ab1c1eb9..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/ml_gdk.c +++ /dev/null @@ -1,522 +0,0 @@ -/* $Id$ */ - -#include -#include -#ifdef _WIN32 -#include -#else -#include -#endif -#include -#include -#include -#include - -#include "wrappers.h" -#include "ml_glib.h" -#include "ml_gdk.h" -#include "gdk_tags.h" - -void ml_raise_gdk (const char *errmsg) -{ - static value * exn = NULL; - if (exn == NULL) - exn = caml_named_value ("gdkerror"); - raise_with_string (*exn, (char*)errmsg); -} - -#include "gdk_tags.c" - -Make_OptFlags_val (GdkModifier_val) -Make_Flags_val (Event_mask_val) - -#define Make_test(conv) \ -value ml_test_##conv (value mask, value test) \ -{ return Val_bool (conv(mask) & Int_val(test)); } - -Make_test(GdkModifier_val) - -/* Colormap */ - -Make_Val_final_pointer (GdkColormap, gdk_colormap_ref, gdk_colormap_unref, 0) -ML_0 (gdk_colormap_get_system, Val_GdkColormap) - -/* Screen geometry */ -ML_0 (gdk_screen_width, Val_int) -ML_0 (gdk_screen_height, Val_int) - -/* Visual */ -value ml_gdk_visual_get_best (value depth, value type) -{ - GdkVisual *vis; - if (type == Val_unit) - if (depth == Val_unit) vis = gdk_visual_get_best (); - else vis = gdk_visual_get_best_with_depth (Int_val(Field(depth,0))); - else - if (depth == Val_unit) - vis = gdk_visual_get_best_with_type - (GdkVisualType_val(Field(type,0))); - else vis = gdk_visual_get_best_with_both - (Int_val(Field(depth,0)),GdkVisualType_val(Field(type,0))); - if (!vis) ml_raise_gdk("Gdk.Visual.get_best"); - return Val_GdkVisual(vis); -} - -Make_Extractor (GdkVisual,GdkVisual_val,type,Val_gdkVisualType) -Make_Extractor (GdkVisual,GdkVisual_val,depth,Val_int) -Make_Extractor (GdkVisual,GdkVisual_val,red_mask,Val_int) -Make_Extractor (GdkVisual,GdkVisual_val,red_shift,Val_int) -Make_Extractor (GdkVisual,GdkVisual_val,red_prec,Val_int) -Make_Extractor (GdkVisual,GdkVisual_val,green_mask,Val_int) -Make_Extractor (GdkVisual,GdkVisual_val,green_shift,Val_int) -Make_Extractor (GdkVisual,GdkVisual_val,green_prec,Val_int) -Make_Extractor (GdkVisual,GdkVisual_val,blue_mask,Val_int) -Make_Extractor (GdkVisual,GdkVisual_val,blue_shift,Val_int) -Make_Extractor (GdkVisual,GdkVisual_val,blue_prec,Val_int) - -/* Image */ - -Make_Val_final_pointer (GdkImage, Ignore, gdk_image_destroy, 0) -GdkImage *GdkImage_val(value val) -{ - if (!Field(val,1)) ml_raise_gdk ("attempt to use destroyed GdkImage"); - return (GdkImage*)(Field(val,1)); -} -value ml_gdk_image_destroy (value val) -{ - if (Field(val,1)) gdk_image_destroy((GdkImage*)(Field(val,1))); - Field(val,1) = NULL; - return Val_unit; -} -ML_4 (gdk_image_new_bitmap, GdkVisual_val, String_val, Int_val, Int_val, - Val_GdkImage) -ML_4 (gdk_image_new, GdkImageType_val, GdkVisual_val, Int_val, Int_val, - Val_GdkImage) -ML_5 (gdk_image_get, GdkWindow_val, Int_val, Int_val, Int_val, Int_val, - Val_GdkImage) -ML_4 (gdk_image_put_pixel, GdkImage_val, Int_val, Int_val, Int_val, Unit) -ML_3 (gdk_image_get_pixel, GdkImage_val, Int_val, Int_val, Val_int) - -/* Color */ - -ML_2 (gdk_colormap_new, GdkVisual_val, Bool_val, Val_GdkColormap) - -value ml_gdk_color_white (value cmap) -{ - GdkColor color; - gdk_color_white (GdkColormap_val(cmap), &color); - return Val_copy(color); -} - -value ml_gdk_color_black (value cmap) -{ - GdkColor color; - gdk_color_black (GdkColormap_val(cmap), &color); - return Val_copy(color); -} - -value ml_gdk_color_parse (char *spec) -{ - GdkColor color; - if (!gdk_color_parse (spec, &color)) - ml_raise_gdk ("color_parse"); - return Val_copy(color); -} - -ML_2 (gdk_color_alloc, GdkColormap_val, GdkColor_val, Val_bool) - -value ml_GdkColor (value red, value green, value blue) -{ - GdkColor color; - color.red = Int_val(red); - color.green = Int_val(green); - color.blue = Int_val(blue); - color.pixel = 0; - return Val_copy(color); -} - -Make_Extractor (GdkColor, GdkColor_val, red, Val_int) -Make_Extractor (GdkColor, GdkColor_val, green, Val_int) -Make_Extractor (GdkColor, GdkColor_val, blue, Val_int) -Make_Extractor (GdkColor, GdkColor_val, pixel, Val_int) - -/* Rectangle */ - -value ml_GdkRectangle (value x, value y, value width, value height) -{ - GdkRectangle rectangle; - rectangle.x = Int_val(x); - rectangle.y = Int_val(y); - rectangle.width = Int_val(width); - rectangle.height = Int_val(height); - return Val_copy(rectangle); -} - -Make_Extractor (GdkRectangle, GdkRectangle_val, x, Val_int) -Make_Extractor (GdkRectangle, GdkRectangle_val, y, Val_int) -Make_Extractor (GdkRectangle, GdkRectangle_val, width, Val_int) -Make_Extractor (GdkRectangle, GdkRectangle_val, height, Val_int) - -/* Window */ - -Make_Val_final_pointer (GdkWindow, gdk_window_ref, gdk_window_unref, 0) -Make_Extractor (gdk_visual_get, GdkVisual_val, depth, Val_int) -ML_1 (gdk_window_get_visual, GdkWindow_val, Val_GdkVisual) -ML_3 (gdk_window_set_back_pixmap, GdkWindow_val, GdkPixmap_val, Int_val, Unit) -ML_1 (gdk_window_clear, GdkWindow_val, Unit) -ML_0 (GDK_ROOT_PARENT, Val_GdkWindow) -ML_1 (gdk_window_get_parent, GdkWindow_val, Val_GdkWindow) -ML_1 (GDK_WINDOW_XWINDOW, GdkWindow_val, Val_XID) -value ml_gdk_window_get_position (value window) -{ - int x, y; - value ret; - - gdk_window_get_position (GdkWindow_val(window), &x, &y); - - ret = alloc_small (2,0); - Field(ret,0) = Val_int(x); - Field(ret,1) = Val_int(y); - return ret; -} - -value ml_gdk_window_get_size (value window) -{ - int x, y; - value ret; - - gdk_window_get_size (GdkWindow_val(window), &x, &y); - - ret = alloc_small (2,0); - Field(ret,0) = Val_int(x); - Field(ret,1) = Val_int(y); - return ret; -} - -/* Cursor */ - -ML_1 (gdk_cursor_new, GdkCursorType_val, Val_GdkCursor) -ML_6 (gdk_cursor_new_from_pixmap, GdkPixmap_val, GdkPixmap_val, - GdkColor_val, GdkColor_val, Int_val, Int_val, Val_GdkCursor) -ML_bc6 (ml_gdk_cursor_new_from_pixmap) -ML_1 (gdk_cursor_destroy, GdkCursor_val, Unit) - -/* Pixmap */ - -Make_Val_final_pointer (GdkPixmap, gdk_pixmap_ref, gdk_pixmap_unref, 0) -Make_Val_final_pointer (GdkBitmap, gdk_bitmap_ref, gdk_bitmap_unref, 0) -Make_Val_final_pointer_ext (GdkPixmap, _no_ref, Ignore, gdk_pixmap_unref, 20) -Make_Val_final_pointer_ext (GdkBitmap, _no_ref, Ignore, gdk_bitmap_unref, 20) -ML_4 (gdk_pixmap_new, GdkWindow_val, Int_val, Int_val, Int_val, - Val_GdkPixmap_no_ref) -ML_4 (gdk_bitmap_create_from_data, GdkWindow_val, - String_val, Int_val, Int_val, Val_GdkBitmap_no_ref) -ML_7 (gdk_pixmap_create_from_data, GdkWindow_val, String_val, - Int_val, Int_val, Int_val, GdkColor_val, GdkColor_val, - Val_GdkPixmap_no_ref) -ML_bc7 (ml_gdk_pixmap_create_from_data) - -value ml_gdk_pixmap_colormap_create_from_xpm - (value window, value colormap, value transparent, char *filename) -{ - CAMLparam0(); - GdkBitmap *mask; - CAMLlocal2(vpixmap, vmask); - value ret; - - vpixmap = Val_GdkPixmap_no_ref - (gdk_pixmap_colormap_create_from_xpm - (GdkWindow_val(window), Option_val(colormap,GdkColormap_val,NULL), - &mask, Option_val(transparent,GdkColor_val,NULL), filename)); - vmask = Val_GdkBitmap_no_ref (mask); - - ret = alloc_small (2,0); - Field(ret,0) = vpixmap; - Field(ret,1) = vmask; - CAMLreturn(ret); -} - -value ml_gdk_pixmap_colormap_create_from_xpm_d - (value window, value colormap, value transparent, char **data) -{ - CAMLparam0(); - GdkBitmap *mask; - CAMLlocal2(vpixmap, vmask); - value ret; - - vpixmap = Val_GdkPixmap_no_ref - (gdk_pixmap_colormap_create_from_xpm_d - (GdkWindow_val(window), Option_val(colormap,GdkColormap_val,NULL), - &mask, Option_val(transparent,GdkColor_val,NULL), data)); - vmask = Val_GdkBitmap_no_ref (mask); - - ret = alloc_small (2, 0); - Field(ret,0) = vpixmap; - Field(ret,1) = vmask; - CAMLreturn(ret); -} - -/* Font */ - -Make_Val_final_pointer (GdkFont, gdk_font_ref, gdk_font_unref, 0) -Make_Val_final_pointer_ext (GdkFont, _no_ref, Ignore, gdk_font_unref, 20) -ML_1 (gdk_font_load, String_val, Val_GdkFont_no_ref) -ML_1 (gdk_fontset_load, String_val, Val_GdkFont_no_ref) -ML_2 (gdk_string_width, GdkFont_val, String_val, Val_int) -ML_2 (gdk_char_width, GdkFont_val, (gchar)Long_val, Val_int) -ML_2 (gdk_string_height, GdkFont_val, String_val, Val_int) -ML_2 (gdk_char_height, GdkFont_val, (gchar)Long_val, Val_int) -ML_2 (gdk_string_measure, GdkFont_val, String_val, Val_int) -ML_2 (gdk_char_measure, GdkFont_val, (char)Long_val, Val_int) -Make_Extractor (GdkFont, GdkFont_val, type, Val_gdkFontType) -Make_Extractor (GdkFont, GdkFont_val, ascent, Val_int) -Make_Extractor (GdkFont, GdkFont_val, descent, Val_int) - -/* Region */ - -#define PointArray_val(val) ((GdkPoint*)&Field(val,1)) -#define PointArrayLen_val(val) Int_val(Field(val,0)) -Make_Val_final_pointer (GdkRegion, Ignore, gdk_region_destroy, 0) -GdkRegion *GdkRegion_val(value val) -{ - if (!Field(val,1)) ml_raise_gdk ("attempt to use destroyed GdkRegion"); - return (GdkRegion*)(Field(val,1)); -} -value ml_gdk_region_destroy (value val) -{ - if (Field(val,1)) gdk_region_destroy((GdkRegion*)(Field(val,1))); - Field(val,1) = NULL; - return Val_unit; -} -ML_0 (gdk_region_new, Val_GdkRegion) -ML_2 (gdk_region_polygon, Insert(PointArray_val(arg1)) PointArrayLen_val, - GdkFillRule_val, Val_GdkRegion) -ML_2 (gdk_regions_intersect, GdkRegion_val, GdkRegion_val, Val_GdkRegion) -ML_2 (gdk_regions_union, GdkRegion_val, GdkRegion_val, Val_GdkRegion) -ML_2 (gdk_regions_subtract, GdkRegion_val, GdkRegion_val, Val_GdkRegion) -ML_2 (gdk_regions_xor, GdkRegion_val, GdkRegion_val, Val_GdkRegion) -ML_2 (gdk_region_union_with_rect, GdkRegion_val, GdkRectangle_val, - Val_GdkRegion) -ML_3 (gdk_region_offset, GdkRegion_val, Int_val, Int_val, Unit) -ML_3 (gdk_region_shrink, GdkRegion_val, Int_val, Int_val, Unit) -ML_1 (gdk_region_empty, GdkRegion_val, Val_bool) -ML_2 (gdk_region_equal, GdkRegion_val, GdkRegion_val, Val_bool) -ML_3 (gdk_region_point_in, GdkRegion_val, Int_val, Int_val, Val_bool) -ML_2 (gdk_region_rect_in, GdkRegion_val, GdkRectangle_val, Val_gdkOverlapType) -ML_2 (gdk_region_get_clipbox, GdkRegion_val, GdkRectangle_val, Unit) - - -/* GC */ - -Make_Val_final_pointer (GdkGC, gdk_gc_ref, gdk_gc_unref, 0) -Make_Val_final_pointer_ext (GdkGC, _no_ref, Ignore, gdk_gc_unref, 20) -ML_1 (gdk_gc_new, GdkWindow_val, Val_GdkGC_no_ref) -ML_2 (gdk_gc_set_foreground, GdkGC_val, GdkColor_val, Unit) -ML_2 (gdk_gc_set_background, GdkGC_val, GdkColor_val, Unit) -ML_2 (gdk_gc_set_font, GdkGC_val, GdkFont_val, Unit) -ML_2 (gdk_gc_set_function, GdkGC_val, GdkFunction_val, Unit) -ML_2 (gdk_gc_set_fill, GdkGC_val, GdkFill_val, Unit) -ML_2 (gdk_gc_set_tile, GdkGC_val, GdkPixmap_val, Unit) -ML_2 (gdk_gc_set_stipple, GdkGC_val, GdkPixmap_val, Unit) -ML_3 (gdk_gc_set_ts_origin, GdkGC_val, Int_val, Int_val, Unit) -ML_3 (gdk_gc_set_clip_origin, GdkGC_val, Int_val, Int_val, Unit) -ML_2 (gdk_gc_set_clip_mask, GdkGC_val, GdkBitmap_val, Unit) -ML_2 (gdk_gc_set_clip_rectangle, GdkGC_val, GdkRectangle_val, Unit) -ML_2 (gdk_gc_set_clip_region, GdkGC_val, GdkRegion_val, Unit) -ML_2 (gdk_gc_set_subwindow, GdkGC_val, GdkSubwindowMode_val, Unit) -ML_2 (gdk_gc_set_exposures, GdkGC_val, Bool_val, Unit) -ML_5 (gdk_gc_set_line_attributes, GdkGC_val, Int_val, GdkLineStyle_val, - GdkCapStyle_val, GdkJoinStyle_val, Unit) -ML_2 (gdk_gc_copy, GdkGC_val, GdkGC_val, Unit) -value ml_gdk_gc_get_values (value gc) -{ - CAMLparam0(); - GdkGCValues values; - int i; - CAMLlocal2(ret, tmp); - - gdk_gc_get_values (GdkGC_val(gc), &values); - ret = alloc (18, 0); - tmp = Val_copy(values.foreground); Store_field(ret, 0, tmp); - tmp = Val_copy(values.background); Store_field(ret, 1, tmp); - if (values.font) { - tmp = ml_some(Val_GdkFont(values.font)); - Store_field(ret, 2, tmp); - } - Field(ret,3) = Val_gdkFunction(values.function); - Field(ret,4) = Val_gdkFill(values.fill); - if (values.tile) { - tmp = ml_some(Val_GdkPixmap(values.tile)); - Store_field(ret, 5, tmp); - } - if (values.tile) { - tmp = ml_some(Val_GdkPixmap(values.stipple)); - Store_field(ret, 6, tmp); - } - if (values.tile) { - tmp = ml_some(Val_GdkPixmap(values.clip_mask)); - Store_field(ret, 7, tmp); - } - Field(ret,8) = Val_gdkSubwindowMode(values.subwindow_mode); - Field(ret,9) = Val_int(values.ts_x_origin); - Field(ret,10) = Val_int(values.ts_y_origin); - Field(ret,11) = Val_int(values.clip_x_origin); - Field(ret,12) = Val_int(values.clip_y_origin); - Field(ret,13) = Val_bool(values.graphics_exposures); - Field(ret,14) = Val_int(values.line_width); - Field(ret,15) = Val_gdkLineStyle(values.line_style); - Field(ret,16) = Val_gdkCapStyle(values.cap_style); - Field(ret,17) = Val_gdkJoinStyle(values.join_style); - CAMLreturn(ret); -} - -/* Draw */ - -value ml_point_array_new (value len) -{ - value ret = alloc (1 + Wosize_asize(Int_val(len)*sizeof(GdkPoint)), - Abstract_tag); - Field(ret,0) = len; - return ret; -} -value ml_point_array_set (value arr, value pos, value x, value y) -{ - GdkPoint *pt = PointArray_val(arr) + Int_val(pos); - pt->x = Int_val(x); - pt->y = Int_val(y); - return Val_unit; -} - -ML_4 (gdk_draw_point, GdkDrawable_val, GdkGC_val, Int_val, Int_val, Unit) -ML_6 (gdk_draw_line, GdkDrawable_val, GdkGC_val, Int_val, Int_val, - Int_val, Int_val, Unit) -ML_bc6 (ml_gdk_draw_line) -ML_7 (gdk_draw_rectangle, GdkDrawable_val, GdkGC_val, Bool_val, - Int_val, Int_val, Int_val, Int_val, Unit) -ML_bc7 (ml_gdk_draw_rectangle) -ML_9 (gdk_draw_arc, GdkDrawable_val, GdkGC_val, Bool_val, Int_val, Int_val, - Int_val, Int_val, Int_val, Int_val, Unit) -ML_bc9 (ml_gdk_draw_arc) -ML_4 (gdk_draw_polygon, GdkDrawable_val, GdkGC_val, Bool_val, - Insert(PointArray_val(arg4)) PointArrayLen_val, Unit) -ML_6 (gdk_draw_string, GdkDrawable_val, GdkFont_val, GdkGC_val, Int_val, Int_val, String_val, Unit) -ML_bc6 (ml_gdk_draw_string) - -ML_9 (gdk_draw_image, GdkDrawable_val, GdkGC_val, GdkImage_val, Int_val, Int_val, Int_val, Int_val, Int_val, Int_val, Unit) -ML_bc9 (ml_gdk_draw_image) - -/* RGB */ - -ML_0 (gdk_rgb_init, Unit) -ML_0 (gdk_rgb_get_visual, Val_GdkVisual) -ML_0 (gdk_rgb_get_cmap, Val_GdkColormap) - -/* Events */ - -/* Have a major collection every 1000 events */ -Make_Val_final_pointer (GdkEvent, Ignore, gdk_event_free, 1) -ML_1 (gdk_event_copy, GdkEvent_val, Val_GdkEvent) - -value ml_gdk_event_new (value event_type) -{ - GdkEvent event; - memset (&event, 0, sizeof(GdkEvent)); - event.type = GdkEventType_val(event_type); - event.any.send_event = TRUE; - return Val_copy(event); -} - -#define GdkEvent_arg(type) (GdkEvent##type*)GdkEvent_val - -Make_Extractor (GdkEventAny, GdkEvent_arg(Any), type, Val_gdkEventType) -Make_Extractor (GdkEventAny, GdkEvent_arg(Any), window, Val_GdkWindow) -Make_Extractor (GdkEventAny, GdkEvent_arg(Any), send_event, Val_bool) -Make_Setter (gdk_event_set, GdkEvent_arg(Any), GdkEventType_val, type) -Make_Setter (gdk_event_set, GdkEvent_arg(Any), GdkWindow_val, window) - -Make_Extractor (GdkEventExpose, GdkEvent_arg(Expose), area, Val_copy) -Make_Extractor (GdkEventExpose, GdkEvent_arg(Expose), count, Val_int) - -Make_Extractor (GdkEventVisibility, GdkEvent_arg(Visibility), state, - Val_gdkVisibilityState) - -Make_Extractor (GdkEventMotion, GdkEvent_arg(Motion), time, Val_int) -Make_Extractor (GdkEventMotion, GdkEvent_arg(Motion), x, copy_double) -Make_Extractor (GdkEventMotion, GdkEvent_arg(Motion), y, copy_double) -Make_Extractor (GdkEventMotion, GdkEvent_arg(Motion), pressure, copy_double) -Make_Extractor (GdkEventMotion, GdkEvent_arg(Motion), xtilt, copy_double) -Make_Extractor (GdkEventMotion, GdkEvent_arg(Motion), ytilt, copy_double) -Make_Extractor (GdkEventMotion, GdkEvent_arg(Motion), state, Val_int) -Make_Extractor (GdkEventMotion, GdkEvent_arg(Motion), is_hint, Val_int) -Make_Extractor (GdkEventMotion, GdkEvent_arg(Motion), source, Val_gdkInputSource) -Make_Extractor (GdkEventMotion, GdkEvent_arg(Motion), deviceid, Val_int) -Make_Extractor (GdkEventMotion, GdkEvent_arg(Motion), x_root, copy_double) -Make_Extractor (GdkEventMotion, GdkEvent_arg(Motion), y_root, copy_double) - -Make_Extractor (GdkEventButton, GdkEvent_arg(Button), time, Val_int) -Make_Extractor (GdkEventButton, GdkEvent_arg(Button), x, copy_double) -Make_Extractor (GdkEventButton, GdkEvent_arg(Button), y, copy_double) -Make_Extractor (GdkEventButton, GdkEvent_arg(Button), pressure, copy_double) -Make_Extractor (GdkEventButton, GdkEvent_arg(Button), xtilt, copy_double) -Make_Extractor (GdkEventButton, GdkEvent_arg(Button), ytilt, copy_double) -Make_Extractor (GdkEventButton, GdkEvent_arg(Button), state, Val_int) -Make_Extractor (GdkEventButton, GdkEvent_arg(Button), button, Val_int) -Make_Extractor (GdkEventButton, GdkEvent_arg(Button), source, Val_gdkInputSource) -Make_Extractor (GdkEventButton, GdkEvent_arg(Button), deviceid, Val_int) -Make_Extractor (GdkEventButton, GdkEvent_arg(Button), x_root, copy_double) -Make_Extractor (GdkEventButton, GdkEvent_arg(Button), y_root, copy_double) - -Make_Setter (gdk_event_button_set, GdkEvent_arg(Button), Int_val, button) - -Make_Extractor (GdkEventKey, GdkEvent_arg(Key), time, Val_int) -Make_Extractor (GdkEventKey, GdkEvent_arg(Key), state, Val_int) -Make_Extractor (GdkEventKey, GdkEvent_arg(Key), keyval, Val_int) -Make_Extractor (GdkEventKey, GdkEvent_arg(Key), string, Val_string) - -Make_Extractor (GdkEventCrossing, GdkEvent_arg(Crossing), subwindow, - Val_GdkWindow) -Make_Extractor (GdkEventCrossing, GdkEvent_arg(Crossing), detail, - Val_gdkNotifyType) - -Make_Extractor (GdkEventFocus, GdkEvent_arg(Focus), in, Val_int) - -Make_Extractor (GdkEventConfigure, GdkEvent_arg(Configure), x, Val_int) -Make_Extractor (GdkEventConfigure, GdkEvent_arg(Configure), y, Val_int) -Make_Extractor (GdkEventConfigure, GdkEvent_arg(Configure), width, Val_int) -Make_Extractor (GdkEventConfigure, GdkEvent_arg(Configure), height, Val_int) - -Make_Extractor (GdkEventProperty, GdkEvent_arg(Property), atom, Val_int) -Make_Extractor (GdkEventProperty, GdkEvent_arg(Property), time, Val_int) -Make_Extractor (GdkEventProperty, GdkEvent_arg(Property), state, Val_int) - -Make_Extractor (GdkEventSelection, GdkEvent_arg(Selection), selection, Val_int) -Make_Extractor (GdkEventSelection, GdkEvent_arg(Selection), target, Val_int) -Make_Extractor (GdkEventSelection, GdkEvent_arg(Selection), property, Val_int) -Make_Extractor (GdkEventSelection, GdkEvent_arg(Selection), requestor, Val_int) -Make_Extractor (GdkEventSelection, GdkEvent_arg(Selection), time, Val_int) - -Make_Extractor (GdkEventProximity, GdkEvent_arg(Proximity), time, Val_int) -Make_Extractor (GdkEventProximity, GdkEvent_arg(Proximity), source, - Val_gdkInputSource) -Make_Extractor (GdkEventProximity, GdkEvent_arg(Proximity), deviceid, Val_int) - -/* DnD */ -Make_Val_final_pointer (GdkDragContext, gdk_drag_context_ref, gdk_drag_context_unref, 0) -Make_Flags_val (GdkDragAction_val) -ML_3 (gdk_drag_status, GdkDragContext_val, Flags_GdkDragAction_val, Int_val, Unit) -Make_Extractor (GdkDragContext, GdkDragContext_val, suggested_action, Val_gdkDragAction) -value val_int(gpointer i) -{ - return Val_int (GPOINTER_TO_INT(i)); -} -value ml_GdkDragContext_targets (value c) -{ - GList *t; - - t = (GdkDragContext_val(c))->targets; - return Val_GList (t, val_int); -} - -/* Misc */ -ML_0 (gdk_flush, Unit) -ML_0 (gdk_beep, Unit) diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/ml_gdk.h b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/ml_gdk.h deleted file mode 100644 index 5d699ace2..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/ml_gdk.h +++ /dev/null @@ -1,53 +0,0 @@ -/* $Id$ */ - -#define GdkColormap_val(val) ((GdkColormap*)Pointer_val(val)) -extern value Val_GdkColormap (GdkColormap *); - -#define GdkColor_val(val) ((GdkColor*)MLPointer_val(val)) -#define Val_GdkColor Val_pointer - -#define GdkRectangle_val(val) ((GdkRectangle*)MLPointer_val(val)) -#define Val_GdkRectangle Val_pointer - -#define GdkDrawable_val(val) ((GdkDrawable*)Pointer_val(val)) - -#define GdkWindow_val(val) ((GdkWindow*)Pointer_val(val)) -extern value Val_GdkWindow (GdkWindow *); - -#define GdkCursor_val(val) ((GdkCursor*)Pointer_val(val)) -#define Val_GdkCursor Val_pointer - -#define GdkPixmap_val(val) ((GdkPixmap*)Pointer_val(val)) -extern value Val_GdkPixmap (GdkPixmap *); - -#define GdkBitmap_val(val) ((GdkBitmap*)Pointer_val(val)) -extern value Val_GdkBitmap (GdkBitmap *); - -extern GdkImage *GdkImage_val (value); /* check argument */ -extern value Val_GdkImage (GdkImage *); /* finalizer is destroy! */ - -#define GdkFont_val(val) ((GdkFont*)Pointer_val(val)) -extern value Val_GdkFont (GdkFont *); - -extern GdkRegion *GdkRegion_val (value); /* check argument */ -extern value Val_GdkRegion (GdkRegion *); /* finalizer is destroy! */ - -#define GdkGC_val(val) ((GdkGC*)Pointer_val(val)) -extern value Val_GdkGC (GdkGC *); - -#define GdkEvent_val (GdkEvent*)MLPointer_val - -#define GdkVisual_val(val) ((GdkVisual*) val) -#define Val_GdkVisual(visual) ((value) visual) - -#define Val_XID copy_int32 -#define XID_val Int32_val - -extern int OptFlags_GdkModifier_val (value); -extern int Flags_Event_mask_val (value); -extern lookup_info ml_table_extension_events[]; -#define Extension_events_val(key) ml_lookup_to_c (ml_table_extension_events, key) - -#define GdkDragContext_val(val) ((GdkDragContext*)Pointer_val(val)) -extern value Val_GdkDragContext (GdkDragContext *); -extern int Flags_GdkDragAction_val (value); diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/ml_glib.c b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/ml_glib.c deleted file mode 100644 index b7d3fcbc2..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/ml_glib.c +++ /dev/null @@ -1,135 +0,0 @@ -/* $Id$ */ - -#include -#include -#include -#include -#include - -#include "wrappers.h" -#include "ml_glib.h" - -/* -value Val_GSList (GSList *list, value (*func)(gpointer)) -{ - value new_cell, result, last_cell, cell; - - if (list == NULL) return Val_unit; - - last_cell = cell = Val_unit; - result = func(list->data); - Begin_roots3 (last_cell, cell, result); - cell = last_cell = alloc_tuple (2); - Field(cell,0) = result; - Field(cell,1) = Val_unit; - list = list->next; - while (list != NULL) { - result = func(list->data); - new_cell = alloc_tuple(2); - Field(new_cell,0) = result; - Field(new_cell,1) = Val_unit; - modify(&Field(last_cell,1), new_cell); - last_cell = new_cell; - list = list->next; - } - End_roots (); - return cell; -} - -GSList *GSList_val (value list, gpointer (*func)(value)) -{ - GSList *res = NULL; - GSList **current = &res; - value cell = list; - if (list == Val_unit) return res; - Begin_root (cell); - while (cell != Val_unit) { - *current = g_slist_alloc (); - (*current)->data = func(Field(cell,0)); - cell = Field(cell,1); - current = &(*current)->next; - } - End_roots (); - return res; -} -*/ - -value Val_GList (GList *list, value (*func)(gpointer)) -{ - value new_cell, result, last_cell, cell; - - if (list == NULL) return Val_unit; - - last_cell = cell = Val_unit; - result = func(list->data); - Begin_roots3 (last_cell, cell, result); - cell = last_cell = alloc_small(2,0); - Field(cell,0) = result; - Field(cell,1) = Val_unit; - list = list->next; - while (list != NULL) { - result = func(list->data); - new_cell = alloc_small(2,0); - Field(new_cell,0) = result; - Field(new_cell,1) = Val_unit; - modify(&Field(last_cell,1), new_cell); - last_cell = new_cell; - list = list->next; - } - End_roots (); - return cell; -} - -GList *GList_val (value list, gpointer (*func)(value)) -{ - CAMLparam1(list); - GList *res = NULL; - if (list == Val_unit) CAMLreturn (res); - for (; Is_block(list); list = Field(list,1)) - res = g_list_append (res, func(Field(list,0))); - CAMLreturn (res); -} - -static value ml_warning_handler = 0L; - -static void ml_warning_wrapper (const gchar *msg) -{ - value arg = copy_string ((char*)msg); - callback (ml_warning_handler, arg); -} - -value ml_g_set_warning_handler (value clos) -{ - value old_handler = ml_warning_handler ? ml_warning_handler : clos; - if (!ml_warning_handler) register_global_root (&ml_warning_handler); - g_set_warning_handler (ml_warning_wrapper); - ml_warning_handler = clos; - return old_handler; -} - -static value ml_print_handler = 0L; - -static void ml_print_wrapper (const gchar *msg) -{ - value arg = copy_string ((char*)msg); - callback (ml_print_handler, arg); -} - -value ml_g_set_print_handler (value clos) -{ - value old_handler = ml_print_handler ? ml_print_handler : clos; - if (!ml_print_handler) register_global_root (&ml_print_handler); - g_set_print_handler (ml_print_wrapper); - ml_print_handler = clos; - return old_handler; -} - -value ml_get_null (value unit) { return 0L; } - -#define GMainLoop_val(val) ((GMainLoop*)Addr_val(val)) -ML_1 (g_main_new, Bool_val, Val_addr) -ML_1 (g_main_iteration, Bool_val, Val_bool) -ML_0 (g_main_pending, Val_bool) -ML_1 (g_main_is_running, GMainLoop_val, Val_bool) -ML_1 (g_main_quit, GMainLoop_val, Unit) -ML_1 (g_main_destroy, GMainLoop_val, Unit) diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/ml_glib.h b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/ml_glib.h deleted file mode 100644 index f0b45db4c..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/ml_glib.h +++ /dev/null @@ -1,10 +0,0 @@ -/* $Id$ */ - -/* -value Val_GSList (GSList *list, value (*func)(gpointer)); - -GSList *GSList_val (value list, gpointer (*func)(value)); -*/ - -value Val_GList (GList *list, value (*func)(gpointer)); -GList *GList_val (value list, gpointer (*func)(value)); diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/ml_gtk.c b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/ml_gtk.c deleted file mode 100644 index 0ee12a24d..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/ml_gtk.c +++ /dev/null @@ -1,2170 +0,0 @@ -/* $Id$ */ - -#include -#include -#include -#include -#include -#include -#include - -#include "wrappers.h" -#include "ml_glib.h" -#include "ml_gdk.h" -#include "ml_gtk.h" -#include "gtk_tags.h" - -void ml_raise_gtk (const char *errmsg) -{ - static value * exn = NULL; - if (exn == NULL) - exn = caml_named_value ("gtkerror"); - raise_with_string (*exn, (char*)errmsg); -} - -value copy_string_and_free (char *str) -{ - value res; - res = copy_string_check (str); - g_free (str); - return res; -} - -value *ml_gtk_root_new (value v) -{ - value *p = stat_alloc(sizeof(value)); - *p = v; - register_global_root (p); - return p; -} - -void ml_gtk_root_destroy (gpointer data) -{ - remove_global_root ((value *)data); - stat_free (data); -} - -/* conversion functions */ - -#include "gtk_tags.c" - -ML_1 (Val_direction_type, Int_val, Id) -ML_1 (Val_orientation, Int_val, Id) -ML_1 (Val_toolbar_style, Int_val, Id) -ML_1 (Val_state_type, Int_val, Id) -ML_1 (Val_scroll_type, Int_val, Id) - -Make_Flags_val (Attach_options_val) -Make_Flags_val (Button_action_val) -Make_Flags_val (Dest_defaults_val) -Make_Flags_val (Target_flags_val) -Make_Flags_val (Font_type_val) - -/* gtkobject.h */ - -Make_Val_final_pointer(GtkObject, gtk_object_ref, gtk_object_unref, 0) - -#define gtk_object_ref_and_sink(w) (gtk_object_ref(w), gtk_object_sink(w)) -Make_Val_final_pointer_ext(GtkObject, _sink , gtk_object_ref_and_sink, - gtk_object_unref, 20) - -/* gtkaccelgroup.h */ - -#define GtkAccelGroup_val(val) ((GtkAccelGroup*)Pointer_val(val)) -Make_Val_final_pointer (GtkAccelGroup, gtk_accel_group_ref, - gtk_accel_group_unref, 0) -Make_Val_final_pointer_ext (GtkAccelGroup, _no_ref, Ignore, - gtk_accel_group_unref, 20) -Make_OptFlags_val (Accel_flag_val) - -#define Signal_name_val(val) String_val(Field(val,0)) - -ML_0 (gtk_accel_group_new, Val_GtkAccelGroup_no_ref) -ML_0 (gtk_accel_group_get_default, Val_GtkAccelGroup) -ML_3 (gtk_accel_group_activate, GtkAccelGroup_val, Int_val, - OptFlags_GdkModifier_val, Val_bool) -ML_3 (gtk_accel_groups_activate, GtkObject_val, Int_val, - OptFlags_GdkModifier_val, Val_bool) -ML_2 (gtk_accel_group_attach, GtkAccelGroup_val, GtkObject_val, Unit) -ML_2 (gtk_accel_group_detach, GtkAccelGroup_val, GtkObject_val, Unit) -ML_1 (gtk_accel_group_lock, GtkAccelGroup_val, Unit) -ML_1 (gtk_accel_group_unlock, GtkAccelGroup_val, Unit) -ML_3 (gtk_accel_group_lock_entry, GtkAccelGroup_val, Int_val, - OptFlags_GdkModifier_val, Unit) -ML_3 (gtk_accel_group_unlock_entry, GtkAccelGroup_val, Int_val, - OptFlags_GdkModifier_val, Unit) -ML_6 (gtk_accel_group_add, GtkAccelGroup_val, Int_val, - OptFlags_GdkModifier_val, OptFlags_Accel_flag_val, - GtkObject_val, Signal_name_val, Unit) -ML_bc6 (ml_gtk_accel_group_add) -ML_4 (gtk_accel_group_remove, GtkAccelGroup_val, Int_val, - OptFlags_GdkModifier_val, GtkObject_val, Unit) -ML_2 (gtk_accelerator_valid, Int_val, OptFlags_GdkModifier_val, Val_bool) -ML_1 (gtk_accelerator_set_default_mod_mask, OptFlags_GdkModifier_val, Unit) - -/* gtkstyle.h */ - -#define GtkStyle_val(val) ((GtkStyle*)Pointer_val(val)) -Make_Val_final_pointer (GtkStyle, gtk_style_ref, gtk_style_unref, 0) -Make_Val_final_pointer_ext (GtkStyle, _no_ref, Ignore, gtk_style_unref, 20) -ML_0 (gtk_style_new, Val_GtkStyle_no_ref) -ML_1 (gtk_style_copy, GtkStyle_val, Val_GtkStyle_no_ref) -ML_2 (gtk_style_attach, GtkStyle_val, GdkWindow_val, Val_GtkStyle) -ML_1 (gtk_style_detach, GtkStyle_val, Unit) -ML_3 (gtk_style_set_background, GtkStyle_val, GdkWindow_val, State_type_val, Unit) -ML_6 (gtk_draw_hline, GtkStyle_val, GdkWindow_val, State_type_val, - Int_val, Int_val, Int_val, Unit) -ML_bc6 (ml_gtk_draw_hline) -ML_6 (gtk_draw_vline, GtkStyle_val, GdkWindow_val, State_type_val, - Int_val, Int_val, Int_val, Unit) -ML_bc6 (ml_gtk_draw_vline) -Make_Array_Extractor (gtk_style_get, GtkStyle_val, State_type_val, bg, Val_copy) -Make_Array_Setter (gtk_style_set, GtkStyle_val, State_type_val, *GdkColor_val, bg) -Make_Extractor (gtk_style_get, GtkStyle_val, colormap, Val_GdkColormap) -Make_Extractor (gtk_style_get, GtkStyle_val, depth, Val_int) -Make_Extractor (gtk_style_get, GtkStyle_val, font, Val_GdkFont) -/* Make_Setter (gtk_style_set, GtkStyle_val, GdkFont_val, font) */ -value ml_gtk_style_set_font (value st, value font) -{ - GtkStyle *style = GtkStyle_val(st); - if (style->font) gdk_font_unref(style->font); - style->font = GdkFont_val(font); - gdk_font_ref(style->font); - return Val_unit; -} -Make_Array_Extractor (gtk_style_get, GtkStyle_val, State_type_val, dark_gc, Val_GdkGC) -Make_Array_Extractor (gtk_style_get, GtkStyle_val, State_type_val, light_gc, Val_GdkGC) - -/* gtktypeutils.h */ - -ML_1 (gtk_type_name, Int_val, Val_string) -ML_1 (gtk_type_from_name, String_val, Val_int) -ML_1 (gtk_type_parent, Int_val, Val_int) -ML_1 (gtk_type_class, Int_val, (value)) -ML_1 (gtk_type_parent_class, Int_val, (value)) -ML_2 (gtk_type_is_a, Int_val, Int_val, Val_bool) -value ml_gtk_type_fundamental (value type) -{ - return Val_fundamental_type (GTK_FUNDAMENTAL_TYPE (Int_val(type))); -} - -/* gtkobject.h */ - -/* ML_1 (GTK_OBJECT_TYPE, GtkObject_val, Val_int) */ -value ml_gtk_object_type (value val) -{ - return Val_int (GtkObject_val(val)->klass->type); -} - -ML_1 (gtk_object_destroy, GtkObject_val, Unit) -ML_1 (gtk_object_ref, GtkObject_val, Unit) -ML_1 (gtk_object_unref, GtkObject_val, Unit) -ML_1 (gtk_object_sink, GtkObject_val, Unit) - -Make_Extractor (gtk_class,(GtkObjectClass *),type,Val_int) - -/* gtkdata.h */ - -/* gtkadjustment.h */ - -#define GtkAdjustment_val(val) check_cast(GTK_ADJUSTMENT,val) -ML_6 (gtk_adjustment_new, Float_val, Float_val, Float_val, Float_val, - Float_val, Float_val, Val_GtkObject_sink) -ML_bc6 (ml_gtk_adjustment_new) -ML_2 (gtk_adjustment_set_value, GtkAdjustment_val, Float_val, Unit) -ML_3 (gtk_adjustment_clamp_page, GtkAdjustment_val, - Float_val, Float_val, Unit) -Make_Extractor (gtk_adjustment_get, GtkAdjustment_val, lower, copy_double) -Make_Extractor (gtk_adjustment_get, GtkAdjustment_val, upper, copy_double) -Make_Extractor (gtk_adjustment_get, GtkAdjustment_val, value, copy_double) -Make_Extractor (gtk_adjustment_get, GtkAdjustment_val, step_increment, - copy_double) -Make_Extractor (gtk_adjustment_get, GtkAdjustment_val, page_increment, - copy_double) -Make_Extractor (gtk_adjustment_get, GtkAdjustment_val, page_size, copy_double) - -/* gtktooltips.h */ - -#define GtkWidget_val(val) check_cast(GTK_WIDGET,val) -#define GtkTooltips_val(val) check_cast(GTK_TOOLTIPS,val) -ML_0 (gtk_tooltips_new, Val_GtkAny) -ML_1 (gtk_tooltips_enable, GtkTooltips_val, Unit) -ML_1 (gtk_tooltips_disable, GtkTooltips_val, Unit) -ML_2 (gtk_tooltips_set_delay, GtkTooltips_val, Int_val, Unit) -ML_4 (gtk_tooltips_set_tip, GtkTooltips_val, GtkWidget_val, - String_option_val, String_option_val, Unit) -ML_3 (gtk_tooltips_set_colors, GtkTooltips_val, - Option_val(arg2, GdkColor_val, NULL) Ignore, - Option_val(arg3, GdkColor_val, NULL) Ignore, - Unit) - -/* gtkwidget.h */ - -value ml_gtk_widget_set_can_default (value val, value bool) -{ - GtkWidget *w = GtkWidget_val(val); - guint32 saved_flags = GTK_WIDGET_FLAGS(w); - if (Bool_val(bool)) GTK_WIDGET_SET_FLAGS(w, GTK_CAN_DEFAULT); - else GTK_WIDGET_UNSET_FLAGS(w, GTK_CAN_DEFAULT); - if (saved_flags != GTK_WIDGET_FLAGS(w)) - gtk_widget_queue_resize (w); - return Val_unit; -} -value ml_gtk_widget_set_can_focus (value val, value bool) -{ - GtkWidget *w = GtkWidget_val(val); - guint32 saved_flags = GTK_WIDGET_FLAGS(w); - if (Bool_val(bool)) GTK_WIDGET_SET_FLAGS(w, GTK_CAN_FOCUS); - else GTK_WIDGET_UNSET_FLAGS(w, GTK_CAN_FOCUS); - if (saved_flags != GTK_WIDGET_FLAGS(w)) - gtk_widget_queue_resize (w); - return Val_unit; -} -ML_1 (gtk_widget_unparent, GtkWidget_val, Unit) -ML_1 (gtk_widget_show, GtkWidget_val, Unit) -ML_1 (gtk_widget_show_now, GtkWidget_val, Unit) -ML_1 (gtk_widget_show_all, GtkWidget_val, Unit) -ML_1 (gtk_widget_hide, GtkWidget_val, Unit) -ML_1 (gtk_widget_hide_all, GtkWidget_val, Unit) -ML_1 (gtk_widget_map, GtkWidget_val, Unit) -ML_1 (gtk_widget_unmap, GtkWidget_val, Unit) -ML_1 (gtk_widget_realize, GtkWidget_val, Unit) -ML_1 (gtk_widget_unrealize, GtkWidget_val, Unit) -ML_1 (gtk_widget_queue_draw, GtkWidget_val, Unit) -ML_1 (gtk_widget_queue_resize, GtkWidget_val, Unit) -ML_2 (gtk_widget_draw, GtkWidget_val, - Option_val(arg2,GdkRectangle_val,NULL) Ignore, Unit) -ML_1 (gtk_widget_draw_focus, GtkWidget_val, Unit) -ML_1 (gtk_widget_draw_default, GtkWidget_val, Unit) -/* ML_1 (gtk_widget_draw_children, GtkWidget_val, Unit) */ -ML_2 (gtk_widget_event, GtkWidget_val, GdkEvent_val, Val_bool) -ML_1 (gtk_widget_activate, GtkWidget_val, Val_bool) -ML_2 (gtk_widget_reparent, GtkWidget_val, GtkWidget_val, Unit) -ML_3 (gtk_widget_popup, GtkWidget_val, Int_val, Int_val, Unit) -value ml_gtk_widget_intersect (value w, value area) -{ - GdkRectangle inter; - if (gtk_widget_intersect(GtkWidget_val(w), GdkRectangle_val(area), &inter)) - return ml_some (Val_copy (inter)); - return Val_unit; -} -/* ML_1 (gtk_widget_basic, GtkWidget_val, Val_bool) */ -ML_1 (gtk_widget_grab_focus, GtkWidget_val, Unit) -ML_1 (gtk_widget_grab_default, GtkWidget_val, Unit) -ML_2 (gtk_widget_set_name, GtkWidget_val, String_val, Unit) -ML_1 (gtk_widget_get_name, GtkWidget_val, Val_string) -ML_2 (gtk_widget_set_state, GtkWidget_val, State_type_val, Unit) -ML_2 (gtk_widget_set_sensitive, GtkWidget_val, Bool_val, Unit) -ML_3 (gtk_widget_set_uposition, GtkWidget_val, Int_val, Int_val, Unit) -ML_3 (gtk_widget_set_usize, GtkWidget_val, Int_val, Int_val, Unit) -ML_2 (gtk_widget_add_events, GtkWidget_val, Flags_Event_mask_val, Unit) -ML_2 (gtk_widget_set_events, GtkWidget_val, Flags_Event_mask_val, Unit) -ML_2 (gtk_widget_set_extension_events, GtkWidget_val, Extension_events_val, - Unit) -ML_1 (gtk_widget_get_toplevel, GtkWidget_val, Val_GtkWidget) -ML_2 (gtk_widget_get_ancestor, GtkWidget_val, Int_val, Val_GtkWidget) -ML_1 (gtk_widget_get_colormap, GtkWidget_val, Val_GdkColormap) -ML_1 (gtk_widget_get_visual, GtkWidget_val, (value)) -value ml_gtk_widget_get_pointer (value w) -{ - int x,y; - value ret; - gtk_widget_get_pointer (GtkWidget_val(w), &x, &y); - ret = alloc_small (2,0); - Field(ret,0) = Val_int(x); - Field(ret,1) = Val_int(y); - return ret; -} -ML_2 (gtk_widget_is_ancestor, GtkWidget_val, GtkWidget_val, Val_bool) -/* ML_2 (gtk_widget_is_child, GtkWidget_val, GtkWidget_val, Val_bool) */ -ML_2 (gtk_widget_set_style, GtkWidget_val, GtkStyle_val, Unit) -ML_1 (gtk_widget_set_rc_style, GtkWidget_val, Unit) -ML_1 (gtk_widget_ensure_style, GtkWidget_val, Unit) -ML_1 (gtk_widget_get_style, GtkWidget_val, Val_GtkStyle) -ML_1 (gtk_widget_restore_default_style, GtkWidget_val, Unit) - -ML_6 (gtk_widget_add_accelerator, GtkWidget_val, Signal_name_val, - GtkAccelGroup_val, Char_val, OptFlags_GdkModifier_val, - OptFlags_Accel_flag_val, Unit) -ML_bc6 (ml_gtk_widget_add_accelerator) -ML_4 (gtk_widget_remove_accelerator, GtkWidget_val, GtkAccelGroup_val, - Char_val, OptFlags_GdkModifier_val, Unit) -ML_1 (gtk_widget_lock_accelerators, GtkWidget_val, Unit) -ML_1 (gtk_widget_unlock_accelerators, GtkWidget_val, Unit) -ML_1 (gtk_widget_accelerators_locked, GtkWidget_val, Val_bool) - -ML_1 (GTK_WIDGET_VISIBLE, GtkWidget_val, Val_bool) -ML_1 (GTK_WIDGET_HAS_FOCUS, GtkWidget_val, Val_bool) - -Make_Extractor (GtkWidget, GtkWidget_val, window, Val_GdkWindow) -Make_Extractor (gtk_widget, GtkWidget_val, parent, Val_GtkWidget) -static value Val_GtkAllocation (GtkAllocation allocation) -{ - value ret = alloc_small (4, 0); - Field(ret,0) = Val_int(allocation.x); - Field(ret,1) = Val_int(allocation.y); - Field(ret,2) = Val_int(allocation.width); - Field(ret,3) = Val_int(allocation.height); - return ret; -} -Make_Extractor (gtk_widget, GtkWidget_val, allocation, Val_GtkAllocation) -/* -#define GtkAllocation_val(val) ((GtkAllocation*)Pointer_val(val)) -Make_Extractor (gtk_allocation, GtkAllocation_val, x, Val_int) -Make_Extractor (gtk_allocation, GtkAllocation_val, y, Val_int) -Make_Extractor (gtk_allocation, GtkAllocation_val, width, Val_int) -Make_Extractor (gtk_allocation, GtkAllocation_val, height, Val_int) -*/ - -ML_2 (gtk_widget_set_app_paintable, GtkWidget_val, Bool_val, Unit) - -ML_2 (gtk_widget_set_visual, GtkWidget_val, GdkVisual_val, Unit) -ML_2 (gtk_widget_set_colormap, GtkWidget_val, GdkColormap_val, Unit) -ML_1 (gtk_widget_set_default_visual, GdkVisual_val, Unit) -ML_1 (gtk_widget_set_default_colormap, GdkColormap_val, Unit) -ML_0 (gtk_widget_get_default_visual, Val_GdkVisual) -ML_0 (gtk_widget_get_default_colormap, Val_GdkColormap) -ML_1 (gtk_widget_push_visual, GdkVisual_val, Unit) -ML_1 (gtk_widget_push_colormap, GdkColormap_val, Unit) -ML_0 (gtk_widget_pop_visual, Unit) -ML_0 (gtk_widget_pop_colormap, Unit) - -/* gtkdnd.h */ - -value ml_gtk_drag_dest_set (value w, value f, value t, value a) -{ - GtkTargetEntry *targets = (GtkTargetEntry *)Val_unit; - int n_targets, i; - - CAMLparam4 (w,f,t,a); - n_targets = Wosize_val(t); - if (n_targets) - targets = (GtkTargetEntry *) - alloc (Wosize_asize(n_targets * sizeof(GtkTargetEntry)), - Abstract_tag); - for (i=0; ilength < 0) ml_raise_null_pointer(); - ret = alloc_string (data->length); - if (data->length) memcpy ((void*)ret, data->data, data->length); - return ret; -} - -ML_4 (gtk_selection_data_set, GtkSelectionData_val, Int_val, Int_val, - Insert((guchar*)String_option_val(arg4)) - Option_val(arg4, string_length, -1) Ignore, - Unit) - -/* gtkcontainer.h */ - -#define GtkContainer_val(val) check_cast(GTK_CONTAINER,val) -ML_2 (gtk_container_set_border_width, GtkContainer_val, Int_val, Unit) -ML_2 (gtk_container_set_resize_mode, GtkContainer_val, Resize_mode_val, Unit) -ML_2 (gtk_container_add, GtkContainer_val, GtkWidget_val, Unit) -ML_2 (gtk_container_remove, GtkContainer_val, GtkWidget_val, Unit) -static void ml_gtk_simple_callback (GtkWidget *w, gpointer data) -{ - value val, *clos = (value*)data; - val = Val_GtkWidget(w); - callback (*clos, val); -} -value ml_gtk_container_foreach (value w, value clos) -{ - CAMLparam1(clos); - gtk_container_foreach (GtkContainer_val(w), ml_gtk_simple_callback, - &clos); - CAMLreturn(Val_unit); -} -ML_1 (gtk_container_register_toplevel, GtkContainer_val, Unit) -ML_1 (gtk_container_unregister_toplevel, GtkContainer_val, Unit) -ML_2 (gtk_container_focus, GtkContainer_val, Direction_type_val, Val_bool) -ML_2 (gtk_container_set_focus_child, GtkContainer_val, GtkWidget_val, Unit) -ML_2 (gtk_container_set_focus_vadjustment, GtkContainer_val, - GtkAdjustment_val, Unit) -ML_2 (gtk_container_set_focus_hadjustment, GtkContainer_val, - GtkAdjustment_val, Unit) - -/* gtkbin.h */ - -/* gtkalignment.h */ - -#define GtkAlignment_val(val) check_cast(GTK_ALIGNMENT,val) -ML_4 (gtk_alignment_new, Float_val, Float_val, Float_val, Float_val, - Val_GtkWidget_sink) -value ml_gtk_alignment_set (value x, value y, - value xscale, value yscale, value val) -{ - GtkAlignment *alignment = GtkAlignment_val(val); - gtk_alignment_set (alignment, - Option_val(x, Float_val, alignment->xalign), - Option_val(y, Float_val, alignment->yalign), - Option_val(xscale, Float_val, alignment->xscale), - Option_val(yscale, Float_val, alignment->xscale)); - return Val_unit; -} - -/* gtkeventbox.h */ - -ML_0 (gtk_event_box_new, Val_GtkWidget_sink) - -/* gtkframe.h */ - -#define GtkFrame_val(val) check_cast(GTK_FRAME,val) -ML_1 (gtk_frame_new, Optstring_val, Val_GtkWidget_sink) -ML_2 (gtk_frame_set_label, GtkFrame_val, Optstring_val, Unit) -ML_3 (gtk_frame_set_label_align, GtkFrame_val, Float_val, Float_val, Unit) -ML_2 (gtk_frame_set_shadow_type, GtkFrame_val, Shadow_type_val, Unit) -Make_Extractor (gtk_frame_get, GtkFrame_val, label_xalign, copy_double) -Make_Extractor (gtk_frame_get, GtkFrame_val, label_yalign, copy_double) - -/* gtkaspectframe.h */ - -#define GtkAspectFrame_val(val) check_cast(GTK_ASPECT_FRAME,val) -ML_5 (gtk_aspect_frame_new, Optstring_val, - Float_val, Float_val, Float_val, Bool_val, Val_GtkWidget_sink) -ML_5 (gtk_aspect_frame_set, GtkAspectFrame_val, Float_val, Float_val, - Float_val, Bool_val, Unit) -Make_Extractor (gtk_aspect_frame_get, GtkAspectFrame_val, xalign, copy_double) -Make_Extractor (gtk_aspect_frame_get, GtkAspectFrame_val, yalign, copy_double) -Make_Extractor (gtk_aspect_frame_get, GtkAspectFrame_val, ratio, copy_double) -Make_Extractor (gtk_aspect_frame_get, GtkAspectFrame_val, obey_child, Val_bool) - -/* gtkhandlebox.h */ - -#define GtkHandleBox_val(val) check_cast(GTK_HANDLE_BOX,val) -ML_0 (gtk_handle_box_new, Val_GtkWidget_sink) -ML_2 (gtk_handle_box_set_shadow_type, GtkHandleBox_val, Shadow_type_val, Unit) -ML_2 (gtk_handle_box_set_handle_position, GtkHandleBox_val, Position_val, Unit) -ML_2 (gtk_handle_box_set_snap_edge, GtkHandleBox_val, Position_val, Unit) - -/* gtkinvisible.h */ -/* private class -ML_0 (gtk_invisible_new, Val_GtkWidget_sink) -*/ - -/* gtkitem.h */ - -#define GtkItem_val(val) check_cast(GTK_ITEM,val) -ML_1 (gtk_item_select, GtkItem_val, Unit) -ML_1 (gtk_item_deselect, GtkItem_val, Unit) -ML_1 (gtk_item_toggle, GtkItem_val, Unit) - -/* gtklistitem.h */ - -ML_0 (gtk_list_item_new, Val_GtkWidget_sink) -ML_1 (gtk_list_item_new_with_label, String_val, Val_GtkWidget_sink) - -/* gtkmenuitem.h */ - -#define GtkMenuItem_val(val) check_cast(GTK_MENU_ITEM,val) -ML_0 (gtk_menu_item_new, Val_GtkWidget_sink) -ML_0 (gtk_tearoff_menu_item_new, Val_GtkWidget_sink) -ML_1 (gtk_menu_item_new_with_label, String_val, Val_GtkWidget_sink) -ML_2 (gtk_menu_item_set_submenu, GtkMenuItem_val, GtkWidget_val, Unit) -ML_1 (gtk_menu_item_remove_submenu, GtkMenuItem_val, Unit) -ML_2 (gtk_menu_item_set_placement, GtkMenuItem_val, - Submenu_placement_val, Unit) -ML_3 (gtk_menu_item_configure, GtkMenuItem_val, Bool_val, Bool_val, Unit) -ML_1 (gtk_menu_item_activate, GtkMenuItem_val, Unit) -ML_1 (gtk_menu_item_right_justify, GtkMenuItem_val, Unit) - -/* gtkcheckmenuitem.h */ - -#define GtkCheckMenuItem_val(val) check_cast(GTK_CHECK_MENU_ITEM,val) -ML_0 (gtk_check_menu_item_new, Val_GtkWidget_sink) -ML_1 (gtk_check_menu_item_new_with_label, String_val, Val_GtkWidget_sink) -ML_2 (gtk_check_menu_item_set_active, GtkCheckMenuItem_val, Bool_val, Unit) -ML_2 (gtk_check_menu_item_set_show_toggle, GtkCheckMenuItem_val, - Bool_val, Unit) -ML_1 (gtk_check_menu_item_toggled, GtkCheckMenuItem_val, Unit) -Make_Extractor (gtk_check_menu_item_get, GtkCheckMenuItem_val, - active, Val_bool) - -/* gtkradiomenuitem.h */ - -#define GtkRadioMenuItem_val(val) check_cast(GTK_RADIO_MENU_ITEM,val) -static GSList* item_group_val(value val) -{ - return (val == Val_unit ? NULL : - gtk_radio_menu_item_group(GtkRadioMenuItem_val(Field(val,0)))); -} -ML_1 (gtk_radio_menu_item_new, item_group_val, Val_GtkWidget_sink) -ML_2 (gtk_radio_menu_item_new_with_label, item_group_val, - String_val, Val_GtkWidget_sink) -ML_2 (gtk_radio_menu_item_set_group, GtkRadioMenuItem_val, - item_group_val, Unit) - -/* gtktreeitem.h */ - -#define GtkTreeItem_val(val) check_cast(GTK_TREE_ITEM,val) -ML_0 (gtk_tree_item_new, Val_GtkWidget_sink) -ML_1 (gtk_tree_item_new_with_label, String_val, Val_GtkWidget_sink) -ML_2 (gtk_tree_item_set_subtree, GtkTreeItem_val, GtkWidget_val, Unit) -ML_1 (gtk_tree_item_remove_subtree, GtkTreeItem_val, Unit) -ML_1 (gtk_tree_item_expand, GtkTreeItem_val, Unit) -ML_1 (gtk_tree_item_collapse, GtkTreeItem_val, Unit) -ML_1 (GTK_TREE_ITEM_SUBTREE, GtkTreeItem_val, Val_GtkWidget) - -/* gtkviewport.h */ - -#define GtkViewport_val(val) check_cast(GTK_VIEWPORT,val) -ML_2 (gtk_viewport_new, GtkAdjustment_val, GtkAdjustment_val, - Val_GtkWidget_sink) -ML_1 (gtk_viewport_get_hadjustment, GtkViewport_val, Val_GtkWidget_sink) -ML_1 (gtk_viewport_get_vadjustment, GtkViewport_val, Val_GtkWidget) -ML_2 (gtk_viewport_set_hadjustment, GtkViewport_val, GtkAdjustment_val, Unit) -ML_2 (gtk_viewport_set_vadjustment, GtkViewport_val, GtkAdjustment_val, Unit) -ML_2 (gtk_viewport_set_shadow_type, GtkViewport_val, Shadow_type_val, Unit) - -/* gtkdialog.h */ - -static void window_unref (GtkObject *w) -{ - /* If the window exists and is still not visible, then unreference twice. - This should be enough to destroy it. */ - if (!GTK_OBJECT_DESTROYED(w) && !GTK_WIDGET_VISIBLE(w)) - gtk_object_unref (w); - gtk_object_unref (w); -} -Make_Val_final_pointer_ext (GtkObject, _window, gtk_object_ref, window_unref, - 20) -#define Val_GtkWidget_window(w) Val_GtkObject_window((GtkObject*)w) - -#define GtkDialog_val(val) check_cast(GTK_DIALOG,val) -ML_0 (gtk_dialog_new, Val_GtkWidget_window) -Make_Extractor (GtkDialog, GtkDialog_val, action_area, Val_GtkWidget) -Make_Extractor (GtkDialog, GtkDialog_val, vbox, Val_GtkWidget) - -/* gtkinputdialog.h */ - -ML_0 (gtk_input_dialog_new, Val_GtkWidget_window) - -/* gtkfileselection.h */ - -#define GtkFileSelection_val(val) check_cast(GTK_FILE_SELECTION,val) -ML_1 (gtk_file_selection_new, String_val, Val_GtkWidget_window) -ML_2 (gtk_file_selection_set_filename, GtkFileSelection_val, String_val, Unit) -ML_1 (gtk_file_selection_get_filename, GtkFileSelection_val, Val_string) -ML_1 (gtk_file_selection_show_fileop_buttons, GtkFileSelection_val, Unit) -ML_1 (gtk_file_selection_hide_fileop_buttons, GtkFileSelection_val, Unit) -Make_Extractor (gtk_file_selection_get, GtkFileSelection_val, ok_button, - Val_GtkWidget) -Make_Extractor (gtk_file_selection_get, GtkFileSelection_val, cancel_button, - Val_GtkWidget) -Make_Extractor (gtk_file_selection_get, GtkFileSelection_val, help_button, - Val_GtkWidget) - -/* gtkwindow.h */ - -#define GtkWindow_val(val) check_cast(GTK_WINDOW,val) -ML_1 (gtk_window_new, Window_type_val, Val_GtkWidget_window) -ML_2 (gtk_window_set_title, GtkWindow_val, String_val, Unit) -ML_3 (gtk_window_set_wmclass, GtkWindow_val, String_val, String_val, Unit) -Make_Extractor (gtk_window_get, GtkWindow_val, wmclass_name, Val_optstring) -Make_Extractor (gtk_window_get, GtkWindow_val, wmclass_class, Val_optstring) -ML_2 (gtk_window_set_focus, GtkWindow_val, GtkWidget_val, Unit) -ML_2 (gtk_window_set_default, GtkWindow_val, GtkWidget_val, Unit) -ML_4 (gtk_window_set_policy, GtkWindow_val, Bool_val, Bool_val, Bool_val, Unit) -Make_Extractor (gtk_window_get, GtkWindow_val, allow_shrink, Val_bool) -Make_Extractor (gtk_window_get, GtkWindow_val, allow_grow, Val_bool) -Make_Extractor (gtk_window_get, GtkWindow_val, auto_shrink, Val_bool) -ML_2 (gtk_window_add_accel_group, GtkWindow_val, - GtkAccelGroup_val, Unit) -ML_2 (gtk_window_remove_accel_group, GtkWindow_val, - GtkAccelGroup_val, Unit) -ML_1 (gtk_window_activate_focus, GtkWindow_val, Val_bool) -ML_1 (gtk_window_activate_default, GtkWindow_val, Val_bool) -ML_2 (gtk_window_set_modal, GtkWindow_val, Bool_val, Unit) -ML_3 (gtk_window_set_default_size, GtkWindow_val, Int_val, Int_val, Unit) -ML_2 (gtk_window_set_position, GtkWindow_val, Window_position_val, Unit) -ML_2 (gtk_window_set_transient_for, GtkWindow_val, GtkWindow_val, Unit) - -/* gtkcolorsel.h */ - -#define GtkColorSelection_val(val) check_cast(GTK_COLOR_SELECTION,val) -#define GtkColorSelectionDialog_val(val) check_cast(GTK_COLOR_SELECTION_DIALOG,val) -ML_0 (gtk_color_selection_new, Val_GtkWidget_sink) -ML_2 (gtk_color_selection_set_update_policy, GtkColorSelection_val, - Update_type_val, Unit) -ML_2 (gtk_color_selection_set_opacity, GtkColorSelection_val, - Bool_val, Unit) -value ml_gtk_color_selection_set_color (value w, value red, value green, - value blue, value opacity) -{ - double color[4]; - color[0] = Double_val(red); - color[1] = Double_val(green); - color[2] = Double_val(blue); - color[3] = Option_val(opacity,Double_val,0.0); - gtk_color_selection_set_color (GtkColorSelection_val(w), color); - return Val_unit; -} -value ml_gtk_color_selection_get_color (value w) -{ - value ret; - double color[4]; - color[3] = 0.0; - gtk_color_selection_get_color (GtkColorSelection_val(w), color); - ret = alloc (4*Double_wosize, Double_array_tag); - Store_double_field (ret, 0, color[0]); - Store_double_field (ret, 1, color[1]); - Store_double_field (ret, 2, color[2]); - Store_double_field (ret, 3, color[3]); - return ret; -} -ML_1 (gtk_color_selection_dialog_new, String_val, Val_GtkWidget_window) -Make_Extractor (gtk_color_selection_dialog, GtkColorSelectionDialog_val, ok_button, Val_GtkWidget) -Make_Extractor (gtk_color_selection_dialog, GtkColorSelectionDialog_val, cancel_button, Val_GtkWidget) -Make_Extractor (gtk_color_selection_dialog, GtkColorSelectionDialog_val, help_button, Val_GtkWidget) -Make_Extractor (gtk_color_selection_dialog, GtkColorSelectionDialog_val, colorsel, Val_GtkWidget) - -/* gtkfontsel.h */ - -#define GtkFontSelection_val(val) \ - check_cast(GTK_FONT_SELECTION,val) -ML_0 (gtk_font_selection_new, Val_GtkWidget_sink) -ML_1 (gtk_font_selection_get_font, GtkFontSelection_val, - Val_GdkFont) -ML_1 (gtk_font_selection_get_font_name, GtkFontSelection_val, - copy_string_check) -ML_2 (gtk_font_selection_set_font_name, GtkFontSelection_val, - String_val, Val_bool) -ML_9 (gtk_font_selection_set_filter, GtkFontSelection_val, - Font_filter_type_val, Flags_Font_type_val, - (gchar**), (gchar**), (gchar**), - (gchar**), (gchar**), (gchar**), Unit) -ML_bc9 (ml_gtk_font_selection_set_filter) -ML_1 (gtk_font_selection_get_preview_text, GtkFontSelection_val, - copy_string) -ML_2 (gtk_font_selection_set_preview_text, GtkFontSelection_val, - String_val, Unit) - -#define GtkFontSelectionDialog_val(val) \ - check_cast(GTK_FONT_SELECTION_DIALOG,val) -ML_1 (gtk_font_selection_dialog_new, String_option_val, Val_GtkWidget_window) -/* -ML_1 (gtk_font_selection_dialog_get_font, GtkFontSelectionDialog_val, - Val_GdkFont) -ML_1 (gtk_font_selection_dialog_get_font_name, GtkFontSelectionDialog_val, - copy_string_check) -ML_2 (gtk_font_selection_dialog_set_font_name, GtkFontSelectionDialog_val, - String_val, Val_bool) -ML_9 (gtk_font_selection_dialog_set_filter, GtkFontSelectionDialog_val, - Font_filter_type_val, Flags_Font_type_val, - (gchar**), (gchar**), (gchar**), - (gchar**), (gchar**), (gchar**), Unit) -ML_bc9 (ml_gtk_font_selection_dialog_set_filter) -ML_1 (gtk_font_selection_dialog_get_preview_text, GtkFontSelectionDialog_val, - copy_string) -ML_2 (gtk_font_selection_dialog_set_preview_text, GtkFontSelectionDialog_val, - String_val, Unit) -*/ -Make_Extractor (gtk_font_selection_dialog, GtkFontSelectionDialog_val, - fontsel, Val_GtkWidget) -Make_Extractor (gtk_font_selection_dialog, GtkFontSelectionDialog_val, - ok_button, Val_GtkWidget) -Make_Extractor (gtk_font_selection_dialog, GtkFontSelectionDialog_val, - apply_button, Val_GtkWidget) -Make_Extractor (gtk_font_selection_dialog, GtkFontSelectionDialog_val, - cancel_button, Val_GtkWidget) - -/* gtkplug.h */ - -ML_1 (gtk_plug_new, XID_val, Val_GtkWidget_window) - -/* gtkbox.h */ - -#define GtkBox_val(val) check_cast(GTK_BOX,val) -ML_5 (gtk_box_pack_start, GtkBox_val, GtkWidget_val, Bool_val, Bool_val, - Int_val, Unit) -ML_5 (gtk_box_pack_end, GtkBox_val, GtkWidget_val, Bool_val, Bool_val, - Int_val, Unit) -ML_2 (gtk_box_set_homogeneous, GtkBox_val, Bool_val, Unit) -ML_2 (gtk_box_set_spacing, GtkBox_val, Int_val, Unit) -ML_3 (gtk_box_reorder_child, GtkBox_val, GtkWidget_val, Int_val, Unit) -value ml_gtk_box_query_child_packing (value box, value child) -{ - int expand, fill; - unsigned int padding; - GtkPackType pack_type; - value ret; - gtk_box_query_child_packing (GtkBox_val(box), GtkWidget_val(child), - &expand, &fill, &padding, &pack_type); - ret = alloc_small(4,0); - Field(ret,0) = Val_bool(expand); - Field(ret,1) = Val_bool(fill); - Field(ret,2) = Val_int(padding); - Field(ret,3) = Val_pack_type(pack_type); - return ret; -} -value ml_gtk_box_set_child_packing (value vbox, value vchild, value vexpand, - value vfill, value vpadding, value vpack) -{ - GtkBox *box = GtkBox_val(vbox); - GtkWidget *child = GtkWidget_val(vchild); - int expand, fill; - unsigned int padding; - GtkPackType pack; - gtk_box_query_child_packing (box, child, &expand, &fill, &padding, &pack); - gtk_box_set_child_packing (box, child, - Option_val(vexpand, Bool_val, expand), - Option_val(vfill, Bool_val, fill), - Option_val(vpadding, Int_val, padding), - Option_val(vpack, Pack_type_val, pack)); - return Val_unit; -} -ML_bc6 (ml_gtk_box_set_child_packing) - -ML_2 (gtk_hbox_new, Bool_val, Int_val, Val_GtkWidget_sink) -ML_2 (gtk_vbox_new, Bool_val, Int_val, Val_GtkWidget_sink) - -/* gtkbbox.h */ - -#define GtkButtonBox_val(val) check_cast(GTK_BUTTON_BOX,val) -Make_Extractor (gtk_button_box_get, GtkButtonBox_val, spacing, Val_int) -Make_Extractor (gtk_button_box_get, GtkButtonBox_val, child_min_width, Val_int) -Make_Extractor (gtk_button_box_get, GtkButtonBox_val, child_min_height, - Val_int) -Make_Extractor (gtk_button_box_get, GtkButtonBox_val, child_ipad_x, Val_int) -Make_Extractor (gtk_button_box_get, GtkButtonBox_val, child_ipad_y, Val_int) -Make_Extractor (gtk_button_box_get, GtkButtonBox_val, layout_style, - Val_button_box_style) -ML_2 (gtk_button_box_set_spacing, GtkButtonBox_val, Int_val, Unit) -ML_3 (gtk_button_box_set_child_size, GtkButtonBox_val, - Int_val, Int_val, Unit) -ML_3 (gtk_button_box_set_child_ipadding, GtkButtonBox_val, - Int_val, Int_val, Unit) -ML_2 (gtk_button_box_set_layout, GtkButtonBox_val, Button_box_style_val, Unit) -ML_2 (gtk_button_box_set_child_size_default, Int_val, Int_val, Unit) -ML_2 (gtk_button_box_set_child_ipadding_default, Int_val, Int_val, Unit) - -ML_0 (gtk_hbutton_box_new, Val_GtkWidget_sink) -ML_0 (gtk_vbutton_box_new, Val_GtkWidget_sink) - -/* gtklist.h */ - -#define GtkList_val(val) check_cast(GTK_LIST,val) -ML_0 (gtk_list_new, Val_GtkWidget_sink) -value ml_gtk_list_insert_item (value list, value item, value pos) -{ - GList *tmp_list = g_list_alloc (); - tmp_list->data = GtkWidget_val(item); - tmp_list->next = NULL; - tmp_list->prev = NULL; - gtk_list_insert_items (GtkList_val(list), tmp_list, Int_val(pos)); - return Val_unit; -} -ML_3 (gtk_list_clear_items, GtkList_val, Int_val, Int_val, Unit) -ML_2 (gtk_list_select_item, GtkList_val, Int_val, Unit) -ML_2 (gtk_list_unselect_item, GtkList_val, Int_val, Unit) -ML_2 (gtk_list_select_child, GtkList_val, GtkWidget_val, Unit) -ML_2 (gtk_list_unselect_child, GtkList_val, GtkWidget_val, Unit) -ML_2 (gtk_list_child_position, GtkList_val, GtkWidget_val, Val_int) -ML_2 (gtk_list_set_selection_mode, GtkList_val, Selection_mode_val, Unit) - -/* gtkcombo.h */ - -#define GtkCombo_val(val) check_cast(GTK_COMBO,val) -ML_0 (gtk_combo_new, Val_GtkWidget_sink) -ML_3 (gtk_combo_set_value_in_list, GtkCombo_val, - Option_val(arg2, Bool_val, GtkCombo_val(arg1)->value_in_list) Ignore, - Option_val(arg3, Bool_val, GtkCombo_val(arg1)->ok_if_empty) Ignore, - Unit) -ML_2 (gtk_combo_set_use_arrows, GtkCombo_val, Bool_val, Unit) -ML_2 (gtk_combo_set_use_arrows_always, GtkCombo_val, Bool_val, Unit) -ML_2 (gtk_combo_set_case_sensitive, GtkCombo_val, Bool_val, Unit) -ML_3 (gtk_combo_set_item_string, GtkCombo_val, GtkItem_val, String_val, Unit) -ML_1 (gtk_combo_disable_activate, GtkCombo_val, Unit) -Make_Extractor (gtk_combo, GtkCombo_val, entry, Val_GtkWidget) -Make_Extractor (gtk_combo, GtkCombo_val, list, Val_GtkWidget) - -/* gtkstatusbar.h */ - -#define GtkStatusbar_val(val) check_cast(GTK_STATUSBAR,val) -ML_0 (gtk_statusbar_new, Val_GtkWidget_sink) -ML_2 (gtk_statusbar_get_context_id, GtkStatusbar_val, String_val, Val_int) -ML_3 (gtk_statusbar_push, GtkStatusbar_val, Int_val, String_val, Val_int) -ML_2 (gtk_statusbar_pop, GtkStatusbar_val, Int_val, Unit) -ML_3 (gtk_statusbar_remove, GtkStatusbar_val, Int_val, Int_val, Unit) - -/* gtkgamma.h */ - -#define GtkGammaCurve_val(val) check_cast(GTK_GAMMA_CURVE,val) -ML_0 (gtk_gamma_curve_new, Val_GtkWidget_sink) -Make_Extractor (gtk_gamma_curve_get, GtkGammaCurve_val, gamma, copy_double) - -/* gtkbutton.h */ - -#define GtkButton_val(val) check_cast(GTK_BUTTON,val) -ML_0 (gtk_button_new, Val_GtkWidget_sink) -ML_1 (gtk_button_new_with_label, String_val, Val_GtkWidget_sink) -ML_1 (gtk_button_pressed, GtkButton_val, Unit) -ML_1 (gtk_button_released, GtkButton_val, Unit) -ML_1 (gtk_button_clicked, GtkButton_val, Unit) -ML_1 (gtk_button_enter, GtkButton_val, Unit) -ML_1 (gtk_button_leave, GtkButton_val, Unit) - -/* gtkoptionmenu.h */ - -#define GtkOptionMenu_val(val) check_cast(GTK_OPTION_MENU,val) -ML_0 (gtk_option_menu_new, Val_GtkWidget_sink) -ML_1 (gtk_option_menu_get_menu, GtkOptionMenu_val, Val_GtkWidget_sink) -ML_2 (gtk_option_menu_set_menu, GtkOptionMenu_val, GtkWidget_val, Unit) -ML_1 (gtk_option_menu_remove_menu, GtkOptionMenu_val, Unit) -ML_2 (gtk_option_menu_set_history, GtkOptionMenu_val, Int_val, Unit) - -/* gtktogglebutton.h */ - -#define GtkToggleButton_val(val) check_cast(GTK_TOGGLE_BUTTON,val) -ML_0 (gtk_toggle_button_new, Val_GtkWidget_sink) -ML_1 (gtk_toggle_button_new_with_label, String_val, Val_GtkWidget_sink) -ML_2 (gtk_toggle_button_set_mode, GtkToggleButton_val, Bool_val, Unit) -ML_2 (gtk_toggle_button_set_active, GtkToggleButton_val, Bool_val, Unit) -ML_1 (gtk_toggle_button_toggled, GtkToggleButton_val, Unit) -Make_Extractor (gtk_toggle_button_get, GtkToggleButton_val, active, Val_bool) - -/* gtkcheckbutton.h */ - -#define GtkCheckButton_val(val) check_cast(GTK_CHECK_BUTTON,val) -ML_0 (gtk_check_button_new, Val_GtkWidget_sink) -ML_1 (gtk_check_button_new_with_label, String_val, Val_GtkWidget_sink) - -/* gtkradiobutton.h */ - -#define GtkRadioButton_val(val) check_cast(GTK_RADIO_BUTTON,val) -static GSList* button_group_val(value val) -{ - return (val == Val_unit ? NULL : - gtk_radio_button_group(GtkRadioButton_val(Field(val,0)))); -} -ML_1 (gtk_radio_button_new, button_group_val, - Val_GtkWidget_sink) -ML_2 (gtk_radio_button_new_with_label, button_group_val, - String_val, Val_GtkWidget_sink) -ML_2 (gtk_radio_button_set_group, GtkRadioButton_val, button_group_val, Unit) - -/* gtkclist.h */ - -#define GtkCList_val(val) check_cast(GTK_CLIST,val) -ML_1 (gtk_clist_new, Int_val, Val_GtkWidget_sink) -ML_1 (gtk_clist_new_with_titles, Insert(Wosize_val(arg1)) (char **), - Val_GtkWidget_sink) -Make_Extractor (gtk_clist_get, GtkCList_val, rows, Val_int) -Make_Extractor (gtk_clist_get, GtkCList_val, columns, Val_int) -Make_Extractor (gtk_clist_get, GtkCList_val, focus_row, Val_int) -ML_2 (gtk_clist_set_hadjustment, GtkCList_val, GtkAdjustment_val, Unit) -ML_2 (gtk_clist_set_vadjustment, GtkCList_val, GtkAdjustment_val, Unit) -ML_1 (gtk_clist_get_hadjustment, GtkCList_val, Val_GtkAny) -ML_1 (gtk_clist_get_vadjustment, GtkCList_val, Val_GtkAny) -ML_2 (gtk_clist_set_shadow_type, GtkCList_val, Shadow_type_val, Unit) -ML_2 (gtk_clist_set_selection_mode, GtkCList_val, Selection_mode_val, Unit) -ML_2 (gtk_clist_set_reorderable, GtkCList_val, Bool_val, Unit) -ML_2 (gtk_clist_set_use_drag_icons, GtkCList_val, Bool_val, Unit) -ML_3 (gtk_clist_set_button_actions, GtkCList_val, Int_val, - (guint8)Flags_Button_action_val, Unit) -ML_1 (gtk_clist_freeze, GtkCList_val, Unit) -ML_1 (gtk_clist_thaw, GtkCList_val, Unit) -ML_1 (gtk_clist_column_titles_show, GtkCList_val, Unit) -ML_1 (gtk_clist_column_titles_hide, GtkCList_val, Unit) -ML_2 (gtk_clist_column_title_active, GtkCList_val, Int_val, Unit) -ML_2 (gtk_clist_column_title_passive, GtkCList_val, Int_val, Unit) -ML_1 (gtk_clist_column_titles_active, GtkCList_val, Unit) -ML_1 (gtk_clist_column_titles_passive, GtkCList_val, Unit) -ML_3 (gtk_clist_set_column_title, GtkCList_val, Int_val, String_val, Unit) -ML_2 (gtk_clist_get_column_title, GtkCList_val, Int_val, Val_string) -ML_3 (gtk_clist_set_column_widget, GtkCList_val, Int_val, GtkWidget_val, Unit) -ML_2 (gtk_clist_get_column_widget, GtkCList_val, Int_val, Val_GtkWidget) -ML_3 (gtk_clist_set_column_justification, GtkCList_val, Int_val, - Justification_val, Unit) -ML_3 (gtk_clist_set_column_visibility, GtkCList_val, Int_val, Bool_val, Unit) -ML_3 (gtk_clist_set_column_resizeable, GtkCList_val, Int_val, Bool_val, Unit) -ML_3 (gtk_clist_set_column_auto_resize, GtkCList_val, Int_val, Bool_val, Unit) -ML_1 (gtk_clist_columns_autosize, GtkCList_val, Unit) -ML_2 (gtk_clist_optimal_column_width, GtkCList_val, Int_val, Val_int) -ML_3 (gtk_clist_set_column_width, GtkCList_val, Int_val, Int_val, Unit) -ML_3 (gtk_clist_set_column_min_width, GtkCList_val, Int_val, Int_val, Unit) -ML_3 (gtk_clist_set_column_max_width, GtkCList_val, Int_val, Int_val, Unit) -ML_2 (gtk_clist_set_row_height, GtkCList_val, Int_val, Unit) -ML_5 (gtk_clist_moveto, GtkCList_val, Int_val, Int_val, - Double_val, Double_val, Unit) -ML_2 (gtk_clist_row_is_visible, GtkCList_val, Int_val, Val_visibility) -ML_3 (gtk_clist_get_cell_type, GtkCList_val, Int_val, Int_val, Val_cell_type) -ML_4 (gtk_clist_set_text, GtkCList_val, Int_val, Int_val, Optstring_val, Unit) -value ml_gtk_clist_get_text (value clist, value row, value column) -{ - char *text; - if (!gtk_clist_get_text (GtkCList_val(clist), Int_val(row), - Int_val(column), &text)) - invalid_argument ("Gtk.Clist.get_text"); - return Val_optstring(text); -} -ML_5 (gtk_clist_set_pixmap, GtkCList_val, Int_val, Int_val, GdkPixmap_val, - GdkBitmap_val, Unit) -value ml_gtk_clist_get_pixmap (value clist, value row, value column) -{ - CAMLparam0 (); - GdkPixmap *pixmap; - GdkBitmap *bitmap; - CAMLlocal2 (vpixmap,vbitmap); - value ret; - - if (!gtk_clist_get_pixmap (GtkCList_val(clist), Int_val(row), - Int_val(column), &pixmap, &bitmap)) - invalid_argument ("Gtk.Clist.get_pixmap"); - vpixmap = Val_option (pixmap, Val_GdkPixmap); - vbitmap = Val_option (bitmap, Val_GdkBitmap); - - ret = alloc_small (2,0); - Field(ret,0) = vpixmap; - Field(ret,1) = vbitmap; - CAMLreturn(ret); -} -ML_7 (gtk_clist_set_pixtext, GtkCList_val, Int_val, Int_val, String_val, - (guint8)Long_val, GdkPixmap_val, GdkBitmap_val, Unit) -ML_bc7 (ml_gtk_clist_set_pixtext) -ML_3 (gtk_clist_set_foreground, GtkCList_val, Int_val, GdkColor_val, Unit) -ML_3 (gtk_clist_set_background, GtkCList_val, Int_val, GdkColor_val, Unit) -ML_3 (gtk_clist_get_cell_style, GtkCList_val, Int_val, Int_val, Val_GtkStyle) -ML_4 (gtk_clist_set_cell_style, GtkCList_val, Int_val, Int_val, GtkStyle_val, - Unit) -ML_2 (gtk_clist_get_row_style, GtkCList_val, Int_val, Val_GtkStyle) -ML_3 (gtk_clist_set_row_style, GtkCList_val, Int_val, GtkStyle_val, Unit) -ML_3 (gtk_clist_set_selectable, GtkCList_val, Int_val, Bool_val, Unit) -ML_2 (gtk_clist_get_selectable, GtkCList_val, Int_val, Val_bool) -ML_5 (gtk_clist_set_shift, GtkCList_val, Int_val, Int_val, Int_val, Int_val, - Unit) -/* ML_2 (gtk_clist_append, GtkCList_val, (char **), Val_int) */ -ML_3 (gtk_clist_insert, GtkCList_val, Int_val, (char **), Val_int) -ML_2 (gtk_clist_remove, GtkCList_val, Int_val, Unit) -value ml_gtk_clist_set_row_data (value w, value row, value data) -{ - value *data_p = ml_gtk_root_new (data); - gtk_clist_set_row_data_full (GtkCList_val(w), Int_val(row), - data_p, ml_gtk_root_destroy); - return Val_unit; -} -ML_2 (gtk_clist_get_row_data, GtkCList_val, Int_val, *(value*)Check_null) -ML_3 (gtk_clist_select_row, GtkCList_val, Int_val, Int_val, Unit) -ML_3 (gtk_clist_unselect_row, GtkCList_val, Int_val, Int_val, Unit) -ML_1 (gtk_clist_clear, GtkCList_val, Unit) -value ml_gtk_clist_get_selection_info (value clist, value x, value y) -{ - int row, column; - value ret; - if (!gtk_clist_get_selection_info (GtkCList_val(clist), Int_val(x), - Int_val(y), &row, &column)) - invalid_argument ("Gtk.Clist.get_selection_info"); - ret = alloc_small (2,0); - Field(ret,0) = row; - Field(ret,1) = column; - return ret; -} -ML_1 (gtk_clist_select_all, GtkCList_val, Unit) -ML_1 (gtk_clist_unselect_all, GtkCList_val, Unit) -ML_3 (gtk_clist_swap_rows, GtkCList_val, Int_val, Int_val, Unit) -ML_3 (gtk_clist_row_move, GtkCList_val, Int_val, Int_val, Unit) -ML_2 (gtk_clist_set_sort_column, GtkCList_val, Int_val, Unit) -ML_2 (gtk_clist_set_sort_type, GtkCList_val, Sort_type_val, Unit) -ML_1 (gtk_clist_sort, GtkCList_val, Unit) -ML_2 (gtk_clist_set_auto_sort, GtkCList_val, Bool_val, Unit) - -/* gtkctree.h */ -#define GtkCTree_val(val) check_cast(GTK_CTREE,val) -/* Beware: this definition axpects arg1 to be a GtkCTree */ -/* -#define GtkCTreeNode_val(val) \ - (gtk_ctree_find(GtkCTree_val(arg1),NULL,(GtkCTreeNode*)(val-1)) \ - ? (GtkCTreeNode*)(val-1) : (ml_raise_gtk ("Bad GtkCTreeNode"), NULL)) -#define Val_GtkCTreeNode Val_addr -ML_2 (gtk_ctree_new, Int_val, Int_val, Val_GtkWidget_sink) -ML_3 (gtk_ctree_new_with_titles, Int_val, Int_val, (char **), - Val_GtkWidget_sink) -ML_11 (gtk_ctree_insert_node, GtkCTree_val, GtkCTreeNode_val, - GtkCTreeNode_val, (char**), Int_val, GdkPixmap_val, GdkBitmap_val, - GdkPixmap_val, GdkBitmap_val, Bool_val, Bool_val, - Val_GtkCTreeNode) -ML_2 (gtk_ctree_remove_node, GtkCTree_val, GtkCTreeNode_val, Unit) -ML_2 (gtk_ctree_is_viewable, GtkCTree_val, GtkCTreeNode_val, Val_bool) -*/ - -/* gtkfixed.h */ - -#define GtkFixed_val(val) check_cast(GTK_FIXED,val) -ML_0 (gtk_fixed_new, Val_GtkWidget_sink) -ML_4 (gtk_fixed_put, GtkFixed_val, GtkWidget_val, (gint16)Long_val, (gint16)Long_val, Unit) -ML_4 (gtk_fixed_move, GtkFixed_val, GtkWidget_val, (gint16)Long_val, (gint16)Long_val, Unit) - -/* gtklayout.h */ - -#define GtkLayout_val(val) check_cast(GTK_LAYOUT,val) -ML_2 (gtk_layout_new, GtkAdjustment_val, GtkAdjustment_val, Val_GtkWidget_sink) -ML_4 (gtk_layout_put, GtkLayout_val, GtkWidget_val, Int_val, Int_val, Unit) -ML_4 (gtk_layout_move, GtkLayout_val, GtkWidget_val, Int_val, Int_val, Unit) -ML_3 (gtk_layout_set_size, GtkLayout_val, Int_val, Int_val, Unit) -ML_1 (gtk_layout_get_hadjustment, GtkLayout_val, Val_GtkAny) -ML_1 (gtk_layout_get_vadjustment, GtkLayout_val, Val_GtkAny) -ML_2 (gtk_layout_set_hadjustment, GtkLayout_val, GtkAdjustment_val, Unit) -ML_2 (gtk_layout_set_vadjustment, GtkLayout_val, GtkAdjustment_val, Unit) -ML_1 (gtk_layout_freeze, GtkLayout_val, Unit) -ML_1 (gtk_layout_thaw, GtkLayout_val, Unit) -Make_Extractor (gtk_layout_get, GtkLayout_val, width, Val_int) -Make_Extractor (gtk_layout_get, GtkLayout_val, height, Val_int) - -/* gtkmenushell.h */ - -#define GtkMenuShell_val(val) check_cast(GTK_MENU_SHELL,val) -ML_2 (gtk_menu_shell_append, GtkMenuShell_val, GtkWidget_val, Unit) -ML_2 (gtk_menu_shell_prepend, GtkMenuShell_val, GtkWidget_val, Unit) -ML_3 (gtk_menu_shell_insert, GtkMenuShell_val, GtkWidget_val, Int_val, Unit) -ML_1 (gtk_menu_shell_deactivate, GtkMenuShell_val, Unit) - -/* gtkmenu.h */ - -#define GtkMenu_val(val) check_cast(GTK_MENU,val) -ML_0 (gtk_menu_new, Val_GtkWidget_sink) -ML_5 (gtk_menu_popup, GtkMenu_val, GtkWidget_val, GtkWidget_val, - Insert(NULL) Insert(NULL) Int_val, Int_val, Unit) -ML_1 (gtk_menu_popdown, GtkMenu_val, Unit) -ML_1 (gtk_menu_get_active, GtkMenu_val, Val_GtkWidget) -ML_2 (gtk_menu_set_active, GtkMenu_val, Int_val, Unit) -ML_2 (gtk_menu_set_accel_group, GtkMenu_val, GtkAccelGroup_val, Unit) -ML_1 (gtk_menu_get_accel_group, GtkMenu_val, Val_GtkAccelGroup) -ML_1 (gtk_menu_ensure_uline_accel_group, GtkMenu_val, Val_GtkAccelGroup) -value ml_gtk_menu_attach_to_widget (value menu, value widget) -{ - gtk_menu_attach_to_widget (GtkMenu_val(menu), GtkWidget_val(widget), NULL); - return Val_unit; -} -ML_1 (gtk_menu_get_attach_widget, GtkMenu_val, Val_GtkWidget) -ML_1 (gtk_menu_detach, GtkMenu_val, Unit) - -/* gtkmenubar.h */ - -#define GtkMenuBar_val(val) check_cast(GTK_MENU_BAR,val) -ML_0 (gtk_menu_bar_new, Val_GtkWidget_sink) - -/* gtknotebook.h */ - -#define GtkNotebook_val(val) check_cast(GTK_NOTEBOOK,val) -ML_0 (gtk_notebook_new, Val_GtkWidget_sink) - -ML_5 (gtk_notebook_insert_page_menu, GtkNotebook_val, GtkWidget_val, - GtkWidget_val, GtkWidget_val, Int_val, Unit) -ML_2 (gtk_notebook_remove_page, GtkNotebook_val, Int_val, Unit) - -ML_2 (gtk_notebook_set_tab_pos, GtkNotebook_val, Position_val, Unit) -ML_2 (gtk_notebook_set_homogeneous_tabs, GtkNotebook_val, Bool_val, Unit) -ML_2 (gtk_notebook_set_show_tabs, GtkNotebook_val, Bool_val, Unit) -ML_2 (gtk_notebook_set_show_border, GtkNotebook_val, Bool_val, Unit) -ML_2 (gtk_notebook_set_scrollable, GtkNotebook_val, Bool_val, Unit) -ML_2 (gtk_notebook_set_tab_border, GtkNotebook_val, Int_val, Unit) -ML_1 (gtk_notebook_popup_enable, GtkNotebook_val, Unit) -ML_1 (gtk_notebook_popup_disable, GtkNotebook_val, Unit) - -ML_1 (gtk_notebook_get_current_page, GtkNotebook_val, Val_int) -ML_2 (gtk_notebook_set_page, GtkNotebook_val, Int_val, Unit) -ML_2 (gtk_notebook_get_nth_page, GtkNotebook_val, Int_val, Val_GtkWidget) -ML_2 (gtk_notebook_page_num, GtkNotebook_val, GtkWidget_val, Val_int) -ML_1 (gtk_notebook_next_page, GtkNotebook_val, Unit) -ML_1 (gtk_notebook_prev_page, GtkNotebook_val, Unit) - -ML_2 (gtk_notebook_get_tab_label, GtkNotebook_val, GtkWidget_val, - Val_GtkWidget) -ML_3 (gtk_notebook_set_tab_label, GtkNotebook_val, GtkWidget_val, - GtkWidget_val, Unit) -ML_2 (gtk_notebook_get_menu_label, GtkNotebook_val, GtkWidget_val, - Val_GtkWidget) -ML_3 (gtk_notebook_set_menu_label, GtkNotebook_val, GtkWidget_val, - GtkWidget_val, Unit) -ML_3 (gtk_notebook_reorder_child, GtkNotebook_val, GtkWidget_val, - Int_val, Unit) - - -/* gtkpacker.h */ - -Make_OptFlags_val(Packer_options_val) - -#define GtkPacker_val(val) check_cast(GTK_PACKER,val) -ML_0 (gtk_packer_new, Val_GtkWidget_sink) -ML_10 (gtk_packer_add, GtkPacker_val, GtkWidget_val, - Option_val(arg3,Side_type_val,GTK_SIDE_TOP) Ignore, - Option_val(arg4,Anchor_type_val,GTK_ANCHOR_CENTER) Ignore, - OptFlags_Packer_options_val, - Option_val(arg6,Int_val,GtkPacker_val(arg1)->default_border_width) Ignore, - Option_val(arg7,Int_val,GtkPacker_val(arg1)->default_pad_x) Ignore, - Option_val(arg8,Int_val,GtkPacker_val(arg1)->default_pad_y) Ignore, - Option_val(arg9,Int_val,GtkPacker_val(arg1)->default_i_pad_x) Ignore, - Option_val(arg10,Int_val,GtkPacker_val(arg1)->default_i_pad_y) Ignore, - Unit) -ML_bc10 (ml_gtk_packer_add) -ML_5 (gtk_packer_add_defaults, GtkPacker_val, GtkWidget_val, - Option_val(arg3,Side_type_val,GTK_SIDE_TOP) Ignore, - Option_val(arg4,Anchor_type_val,GTK_ANCHOR_CENTER) Ignore, - OptFlags_Packer_options_val, Unit) -ML_10 (gtk_packer_set_child_packing, GtkPacker_val, GtkWidget_val, - Option_val(arg3,Side_type_val,GTK_SIDE_TOP) Ignore, - Option_val(arg4,Anchor_type_val,GTK_ANCHOR_CENTER) Ignore, - OptFlags_Packer_options_val, - Option_val(arg6,Int_val,GtkPacker_val(arg1)->default_border_width) Ignore, - Option_val(arg7,Int_val,GtkPacker_val(arg1)->default_pad_x) Ignore, - Option_val(arg8,Int_val,GtkPacker_val(arg1)->default_pad_y) Ignore, - Option_val(arg9,Int_val,GtkPacker_val(arg1)->default_i_pad_x) Ignore, - Option_val(arg10,Int_val,GtkPacker_val(arg1)->default_i_pad_y) Ignore, - Unit) -ML_bc10 (ml_gtk_packer_set_child_packing) -ML_3 (gtk_packer_reorder_child, GtkPacker_val, GtkWidget_val, - Int_val, Unit) -ML_2 (gtk_packer_set_spacing, GtkPacker_val, Int_val, Unit) -value ml_gtk_packer_set_defaults (value w, value border_width, - value pad_x, value pad_y, - value i_pad_x, value i_pad_y) -{ - GtkPacker *p = GtkPacker_val(w); - if (Is_block(border_width)) - gtk_packer_set_default_border_width (p,Int_val(Field(border_width,0))); - if (Is_block(pad_x) || Is_block(pad_y)) - gtk_packer_set_default_pad - (p, Option_val(pad_x,Int_val,p->default_pad_x), - Option_val(pad_y,Int_val,p->default_pad_y)); - if (Is_block(i_pad_x) || Is_block(i_pad_y)) - gtk_packer_set_default_ipad - (p, Option_val(pad_x,Int_val,p->default_i_pad_x), - Option_val(pad_y,Int_val,p->default_i_pad_y)); - return Val_unit; -} -ML_bc6 (ml_gtk_packer_set_defaults) - -/* gtkpaned.h */ - -#define GtkPaned_val(val) check_cast(GTK_PANED,val) -ML_0 (gtk_hpaned_new, Val_GtkWidget_sink) -ML_0 (gtk_vpaned_new, Val_GtkWidget_sink) -ML_2 (gtk_paned_add1, GtkPaned_val, GtkWidget_val, Unit) -ML_2 (gtk_paned_add2, GtkPaned_val, GtkWidget_val, Unit) -ML_2 (gtk_paned_set_handle_size, GtkPaned_val, (gint16)Int_val, Unit) -ML_2 (gtk_paned_set_gutter_size, GtkPaned_val, (gint16)Int_val, Unit) -Make_Extractor (gtk_paned, GtkPaned_val, child1, Val_GtkWidget) -Make_Extractor (gtk_paned, GtkPaned_val, child2, Val_GtkWidget) -Make_Extractor (gtk_paned, GtkPaned_val, handle_size, Val_int) -Make_Extractor (gtk_paned, GtkPaned_val, gutter_size, Val_int) - -/* gtkscrolledwindow.h */ - -#define GtkScrolledWindow_val(val) check_cast(GTK_SCROLLED_WINDOW,val) -ML_2 (gtk_scrolled_window_new, GtkAdjustment_val ,GtkAdjustment_val, - Val_GtkWidget_sink) -ML_2 (gtk_scrolled_window_set_hadjustment, GtkScrolledWindow_val , - GtkAdjustment_val, Unit) -ML_2 (gtk_scrolled_window_set_vadjustment, GtkScrolledWindow_val , - GtkAdjustment_val, Unit) -ML_1 (gtk_scrolled_window_get_hadjustment, GtkScrolledWindow_val, - Val_GtkWidget) -ML_1 (gtk_scrolled_window_get_vadjustment, GtkScrolledWindow_val, - Val_GtkWidget) -ML_3 (gtk_scrolled_window_set_policy, GtkScrolledWindow_val, - Policy_type_val, Policy_type_val, Unit) -Make_Extractor (gtk_scrolled_window_get, GtkScrolledWindow_val, - hscrollbar_policy, Val_policy_type) -Make_Extractor (gtk_scrolled_window_get, GtkScrolledWindow_val, - vscrollbar_policy, Val_policy_type) -ML_2 (gtk_scrolled_window_set_placement, GtkScrolledWindow_val, - Corner_type_val, Unit) -ML_2 (gtk_scrolled_window_add_with_viewport, GtkScrolledWindow_val, - GtkWidget_val, Unit) - -/* gtksocket.h */ - -#define GtkSocket_val(val) check_cast(GTK_SOCKET,val) -ML_0 (gtk_socket_new, Val_GtkWidget_sink) -ML_2 (gtk_socket_steal, GtkSocket_val, XID_val, Unit) - -/* gtktable.h */ - -#define GtkTable_val(val) check_cast(GTK_TABLE,val) -ML_3 (gtk_table_new, Int_val, Int_val, Int_val, Val_GtkWidget_sink) -ML_10 (gtk_table_attach, GtkTable_val, GtkWidget_val, - Int_val, Int_val, Int_val, Int_val, - Flags_Attach_options_val, Flags_Attach_options_val, - Int_val, Int_val, Unit) -ML_bc10 (ml_gtk_table_attach) -ML_3 (gtk_table_set_row_spacing, GtkTable_val, Int_val, Int_val, Unit) -ML_3 (gtk_table_set_col_spacing, GtkTable_val, Int_val, Int_val, Unit) -ML_2 (gtk_table_set_row_spacings, GtkTable_val, Int_val, Unit) -ML_2 (gtk_table_set_col_spacings, GtkTable_val, Int_val, Unit) -ML_2 (gtk_table_set_homogeneous, GtkTable_val, Bool_val, Unit) - -/* gtktoolbar.h */ - -#define GtkToolbar_val(val) check_cast(GTK_TOOLBAR,val) -ML_2 (gtk_toolbar_new, Orientation_val, Toolbar_style_val, Val_GtkWidget_sink) -ML_2 (gtk_toolbar_insert_space, GtkToolbar_val, Int_val, Unit) -ML_7 (gtk_toolbar_insert_element, GtkToolbar_val, Toolbar_child_val, - Insert(NULL) Optstring_val, Optstring_val, Optstring_val, GtkWidget_val, - Insert(NULL) Insert(NULL) Int_val, Val_GtkWidget) -ML_bc7 (ml_gtk_toolbar_insert_element) -ML_5 (gtk_toolbar_insert_widget, GtkToolbar_val, GtkWidget_val, - Optstring_val, Optstring_val, Int_val, Unit) -ML_2 (gtk_toolbar_set_orientation, GtkToolbar_val, Orientation_val, Unit) -ML_2 (gtk_toolbar_set_style, GtkToolbar_val, Toolbar_style_val, Unit) -ML_2 (gtk_toolbar_set_space_size, GtkToolbar_val, Int_val, Unit) -ML_2 (gtk_toolbar_set_space_style, GtkToolbar_val, Toolbar_space_style_val, Unit) -ML_2 (gtk_toolbar_set_tooltips, GtkToolbar_val, Bool_val, Unit) -ML_2 (gtk_toolbar_set_button_relief, GtkToolbar_val, Relief_style_val, Unit) -ML_1 (gtk_toolbar_get_button_relief, GtkToolbar_val, Val_relief_style) - -/* gtktree.h */ - -#define GtkTree_val(val) check_cast(GTK_TREE,val) -ML_0 (gtk_tree_new, Val_GtkWidget_sink) -ML_3 (gtk_tree_insert, GtkTree_val, GtkWidget_val, Int_val, Unit) -ML_3 (gtk_tree_clear_items, GtkTree_val, Int_val, Int_val, Unit) -ML_2 (gtk_tree_select_item, GtkTree_val, Int_val, Unit) -ML_2 (gtk_tree_unselect_item, GtkTree_val, Int_val, Unit) -ML_2 (gtk_tree_child_position, GtkTree_val, GtkWidget_val, Val_int) -ML_2 (gtk_tree_set_selection_mode, GtkTree_val, Selection_mode_val, Unit) -ML_2 (gtk_tree_set_view_mode, GtkTree_val, Tree_view_mode_val, Unit) -ML_2 (gtk_tree_set_view_lines, GtkTree_val, Bool_val, Unit) - -static value val_gtkany (gpointer p) { return Val_GtkAny(p); } -value ml_gtk_tree_selection (value tree) -{ - GList *selection = GTK_TREE_SELECTION(GtkTree_val(tree)); - return Val_GList(selection, val_gtkany); -} -static gpointer gtkobject_val (value val) { return GtkObject_val(val); } -value ml_gtk_tree_remove_items (value tree, value items) -{ - GList *items_list = GList_val (items, gtkobject_val); - gtk_tree_remove_items (GtkTree_val(tree), items_list); - return Val_unit; -} - -/* gtkcalendar.h */ - -#define GtkCalendar_val(val) check_cast(GTK_CALENDAR,val) -ML_0 (gtk_calendar_new, Val_GtkWidget_sink) -ML_3 (gtk_calendar_select_month, GtkCalendar_val, Int_val, Int_val, Unit) -ML_2 (gtk_calendar_select_day, GtkCalendar_val, Int_val, Unit) -ML_2 (gtk_calendar_mark_day, GtkCalendar_val, Int_val, Unit) -ML_2 (gtk_calendar_unmark_day, GtkCalendar_val, Int_val, Unit) -ML_1 (gtk_calendar_clear_marks, GtkCalendar_val, Unit) -Make_Flags_val (Calendar_display_options_val) -ML_2 (gtk_calendar_display_options, GtkCalendar_val, - Flags_Calendar_display_options_val, Unit) -value ml_gtk_calendar_get_date (value w) -{ - guint year, month, day; - value ret; - - gtk_calendar_get_date (GtkCalendar_val(w), &year, &month, &day); - ret = alloc_small (3, 0); - Field(ret,0) = Val_int(year); - Field(ret,1) = Val_int(month); - Field(ret,2) = Val_int(day); - return ret; -} -ML_1 (gtk_calendar_freeze, GtkCalendar_val, Unit) -ML_1 (gtk_calendar_thaw, GtkCalendar_val, Unit) - -/* gtkdrawingarea.h */ - -#define GtkDrawingArea_val(val) check_cast(GTK_DRAWING_AREA,val) -ML_0 (gtk_drawing_area_new, Val_GtkWidget_sink) -ML_3 (gtk_drawing_area_size, GtkDrawingArea_val, Int_val, Int_val, Unit) - -/* gtkeditable.h */ - -#define GtkEditable_val(val) check_cast(GTK_EDITABLE,val) -ML_3 (gtk_editable_select_region, GtkEditable_val, Int_val, Int_val, Unit) -value ml_gtk_editable_insert_text (value w, value s, value pos) -{ - int position = Int_val(pos); - gtk_editable_insert_text (GtkEditable_val(w), String_val(s), - string_length(s), &position); - return Val_int(position); -} -ML_3 (gtk_editable_delete_text, GtkEditable_val, Int_val, Int_val, Unit) -ML_3 (gtk_editable_get_chars, GtkEditable_val, Int_val, Int_val, - copy_string_and_free) -ML_1 (gtk_editable_cut_clipboard, GtkEditable_val, Unit) -ML_1 (gtk_editable_copy_clipboard, GtkEditable_val, Unit) -ML_1 (gtk_editable_paste_clipboard, GtkEditable_val, Unit) -ML_3 (gtk_editable_claim_selection, GtkEditable_val, Bool_val, Int_val, Unit) -ML_1 (gtk_editable_delete_selection, GtkEditable_val, Unit) -ML_1 (gtk_editable_changed, GtkEditable_val, Unit) -ML_2 (gtk_editable_set_position, GtkEditable_val, Int_val, Unit) -ML_1 (gtk_editable_get_position, GtkEditable_val, Val_int) -ML_2 (gtk_editable_set_editable, GtkEditable_val, Bool_val, Unit) -Make_Extractor (gtk_editable, GtkEditable_val, selection_start_pos, Val_int) -Make_Extractor (gtk_editable, GtkEditable_val, selection_end_pos, Val_int) -Make_Extractor (gtk_editable, GtkEditable_val, has_selection, Val_bool) - -/* gtkentry.h */ - -#define GtkEntry_val(val) check_cast(GTK_ENTRY,val) -ML_0 (gtk_entry_new, Val_GtkWidget_sink) -ML_1 (gtk_entry_new_with_max_length, (gint16)Long_val, Val_GtkWidget_sink) -ML_2 (gtk_entry_set_text, GtkEntry_val, String_val, Unit) -ML_2 (gtk_entry_append_text, GtkEntry_val, String_val, Unit) -ML_2 (gtk_entry_prepend_text, GtkEntry_val, String_val, Unit) -ML_1 (gtk_entry_get_text, GtkEntry_val, Val_string) -ML_3 (gtk_entry_select_region, GtkEntry_val, Int_val, Int_val, Unit) -ML_2 (gtk_entry_set_visibility, GtkEntry_val, Bool_val, Unit) -ML_2 (gtk_entry_set_max_length, GtkEntry_val, (gint16)Long_val, Unit) -Make_Extractor (GtkEntry, GtkEntry_val, text_length, Val_int) - -/* gtkspinbutton.h */ - -#define GtkSpinButton_val(val) check_cast(GTK_SPIN_BUTTON,val) -ML_3 (gtk_spin_button_new, GtkAdjustment_val, - Float_val, Int_val, Val_GtkWidget_sink) -ML_2 (gtk_spin_button_set_adjustment, GtkSpinButton_val, GtkAdjustment_val, - Unit) -ML_1 (gtk_spin_button_get_adjustment, GtkSpinButton_val, Val_GtkAny) -ML_2 (gtk_spin_button_set_digits, GtkSpinButton_val, Int_val, Unit) -ML_1 (gtk_spin_button_get_value_as_float, GtkSpinButton_val, copy_double) -ML_2 (gtk_spin_button_set_value, GtkSpinButton_val, Float_val, Unit) -ML_2 (gtk_spin_button_set_update_policy, GtkSpinButton_val, - Update_type_val, Unit) -ML_2 (gtk_spin_button_set_numeric, GtkSpinButton_val, Bool_val, Unit) -ML_2 (gtk_spin_button_spin, GtkSpinButton_val, - Insert (Is_long(arg2) ? Spin_type_val(arg2) : GTK_SPIN_USER_DEFINED) - (Is_long(arg2) ? 0.0 : Float_val(Field(arg2,1))) Ignore, Unit) -ML_2 (gtk_spin_button_set_wrap, GtkSpinButton_val, Bool_val, Unit) -ML_2 (gtk_spin_button_set_shadow_type, GtkSpinButton_val, Shadow_type_val, Unit) -ML_2 (gtk_spin_button_set_snap_to_ticks, GtkSpinButton_val, Bool_val, Unit) -ML_4 (gtk_spin_button_configure, GtkSpinButton_val, GtkAdjustment_val, - Float_val, Int_val, Unit) -ML_1 (gtk_spin_button_update, GtkSpinButton_val, Unit) - -/* gtktext.h */ - -#define GtkText_val(val) check_cast(GTK_TEXT,val) -ML_2 (gtk_text_new, GtkAdjustment_val, GtkAdjustment_val, Val_GtkWidget_sink) -ML_2 (gtk_text_set_word_wrap, GtkText_val, Bool_val, Unit) -ML_2 (gtk_text_set_line_wrap, GtkText_val, Bool_val, Unit) -ML_3 (gtk_text_set_adjustments, GtkText_val, - Option_val(arg2,GtkAdjustment_val,GtkText_val(arg1)->hadj) Ignore, - Option_val(arg3,GtkAdjustment_val,GtkText_val(arg1)->vadj) Ignore, - Unit) -Make_Extractor (gtk_text_get, GtkText_val, hadj, Val_GtkWidget) -Make_Extractor (gtk_text_get, GtkText_val, vadj, Val_GtkWidget) -ML_2 (gtk_text_set_point, GtkText_val, Int_val, Unit) -ML_1 (gtk_text_get_point, GtkText_val, Val_int) -ML_1 (gtk_text_get_length, GtkText_val, Val_int) -ML_1 (gtk_text_freeze, GtkText_val, Unit) -ML_1 (gtk_text_thaw, GtkText_val, Unit) -value ml_gtk_text_insert (value text, value font, value fore, value back, - value str) -{ - gtk_text_insert (GtkText_val(text), - Option_val(font,GdkFont_val,NULL), - Option_val(fore,GdkColor_val,NULL), - Option_val(back,GdkColor_val,NULL), - String_val(str), string_length(str)); - return Val_unit; -} -ML_2 (gtk_text_forward_delete, GtkText_val, Int_val, Val_int) -ML_2 (gtk_text_backward_delete, GtkText_val, Int_val, Val_int) - -/* gtkmisc.h */ - -#define GtkMisc_val(val) check_cast(GTK_MISC,val) -ML_3 (gtk_misc_set_alignment, GtkMisc_val, Double_val, Double_val, Unit) -ML_3 (gtk_misc_set_padding, GtkMisc_val, Int_val, Int_val, Unit) -Make_Extractor (gtk_misc_get, GtkMisc_val, xalign, copy_double) -Make_Extractor (gtk_misc_get, GtkMisc_val, yalign, copy_double) -Make_Extractor (gtk_misc_get, GtkMisc_val, xpad, Val_int) -Make_Extractor (gtk_misc_get, GtkMisc_val, ypad, Val_int) - -/* gtkarrow.h */ - -#define GtkArrow_val(val) check_cast(GTK_ARROW,val) -ML_2 (gtk_arrow_new, Arrow_type_val, Shadow_type_val, Val_GtkWidget_sink) -ML_3 (gtk_arrow_set, GtkArrow_val, Arrow_type_val, Shadow_type_val, Unit) - -/* gtkimage.h */ - -#define GtkImage_val(val) check_cast(GTK_IMAGE,val) -ML_2 (gtk_image_new, GdkImage_val, - Option_val (arg2, GdkBitmap_val, NULL) Ignore, Val_GtkWidget_sink) -ML_3 (gtk_image_set, GtkImage_val, GdkImage_val, - Option_val (arg2, GdkBitmap_val, NULL) Ignore, Unit) - -/* gtklabel.h */ - -#define GtkLabel_val(val) check_cast(GTK_LABEL,val) -ML_1 (gtk_label_new, String_val, Val_GtkWidget_sink) -ML_2 (gtk_label_set_text, GtkLabel_val, String_val, Unit) -ML_2 (gtk_label_set_pattern, GtkLabel_val, String_val, Unit) -ML_2 (gtk_label_set_justify, GtkLabel_val, Justification_val, Unit) -ML_2 (gtk_label_set_line_wrap, GtkLabel_val, Bool_val, Unit) -Make_Extractor (gtk_label_get, GtkLabel_val, label, Val_string) - -/* gtktipsquery.h */ - -#define GtkTipsQuery_val(val) check_cast(GTK_TIPS_QUERY,val) -ML_0 (gtk_tips_query_new, Val_GtkWidget_sink) -ML_1 (gtk_tips_query_start_query, GtkTipsQuery_val, Unit) -ML_1 (gtk_tips_query_stop_query, GtkTipsQuery_val, Unit) -ML_2 (gtk_tips_query_set_caller, GtkTipsQuery_val, GtkWidget_val, Unit) -ML_3 (gtk_tips_query_set_labels, GtkTipsQuery_val, - String_val, String_val, Unit) -value ml_gtk_tips_query_set_emit_always (value w, value arg) -{ - GtkTipsQuery_val(w)->emit_always = Bool_val(arg); - return Val_unit; -} -Make_Extractor (gtk_tips_query_get, GtkTipsQuery_val, emit_always, Val_bool) -Make_Extractor (gtk_tips_query_get, GtkTipsQuery_val, caller, Val_GtkWidget) -Make_Extractor (gtk_tips_query_get, GtkTipsQuery_val, label_inactive, - Val_string) -Make_Extractor (gtk_tips_query_get, GtkTipsQuery_val, label_no_tip, - Val_string) - -/* gtkpixmap.h */ - -#define GtkPixmap_val(val) check_cast(GTK_PIXMAP,val) -ML_2 (gtk_pixmap_new, GdkPixmap_val, - Option_val (arg2, GdkBitmap_val, NULL) Ignore, - Val_GtkWidget_sink) -value ml_gtk_pixmap_set (value val, value pixmap, value mask) -{ - GtkPixmap *w = GtkPixmap_val(val); - gtk_pixmap_set (w, Option_val(pixmap,GdkPixmap_val,w->pixmap), - Option_val(mask,GdkBitmap_val,w->mask)); - return Val_unit; -} -Make_Extractor (GtkPixmap, GtkPixmap_val, pixmap, Val_GdkPixmap) -Make_Extractor (GtkPixmap, GtkPixmap_val, mask, Val_GdkBitmap) - -/* gtkpreview.h */ -/* -#define GtkPreview_val(val) GTK_PREVIEW(Pointer_val(val)) -ML_1 (gtk_preview_new, Preview_val, Val_GtkWidget_sink) -ML_3 (gtk_preview_size, GtkPreview_val, Int_val, Int_val, Unit) -ML_9 (gtk_preview_put, GtkPreview_val, GdkWindow_val, GdkGC_val, - Int_val, Int_val, Int_val, Int_val, Int_val, Int_val, Unit) -ML_bc9 (ml_gtk_preview_put) -*/ - -/* gtkprogress.h */ - -#define GtkProgress_val(val) check_cast(GTK_PROGRESS,val) -ML_2 (gtk_progress_set_show_text, GtkProgress_val, Bool_val, Unit) -ML_3 (gtk_progress_set_text_alignment, GtkProgress_val, - Option_val(arg2,Float_val,(GtkProgress_val(arg1))->x_align) Ignore, - Option_val(arg3,Float_val,(GtkProgress_val(arg1))->y_align) Ignore, Unit) -ML_2 (gtk_progress_set_format_string, GtkProgress_val, String_val, Unit) -ML_2 (gtk_progress_set_adjustment, GtkProgress_val, GtkAdjustment_val, Unit) -ML_4 (gtk_progress_configure, GtkProgress_val, - Float_val, Float_val, Float_val, Unit) -ML_2 (gtk_progress_set_percentage, GtkProgress_val, Float_val, Unit) -ML_2 (gtk_progress_set_value, GtkProgress_val, Float_val, Unit) -ML_1 (gtk_progress_get_value, GtkProgress_val, copy_double) -ML_1 (gtk_progress_get_current_percentage, GtkProgress_val, copy_double) -ML_2 (gtk_progress_set_activity_mode, GtkProgress_val, Bool_val, Unit) -ML_1 (gtk_progress_get_current_text, GtkProgress_val, Val_string) -Make_Extractor (gtk_progress_get, GtkProgress_val, adjustment, - Val_GtkAny) - -/* gtkprogressbar.h */ - -#define GtkProgressBar_val(val) check_cast(GTK_PROGRESS_BAR,val) -ML_0 (gtk_progress_bar_new, Val_GtkWidget_sink) -ML_1 (gtk_progress_bar_new_with_adjustment, GtkAdjustment_val, - Val_GtkWidget_sink) -ML_2 (gtk_progress_bar_set_bar_style, GtkProgressBar_val, - Progress_bar_style_val, Unit) -ML_2 (gtk_progress_bar_set_discrete_blocks, GtkProgressBar_val, Int_val, Unit) -ML_2 (gtk_progress_bar_set_activity_step, GtkProgressBar_val, Int_val, Unit) -ML_2 (gtk_progress_bar_set_activity_blocks, GtkProgressBar_val, Int_val, Unit) -ML_2 (gtk_progress_bar_set_orientation, GtkProgressBar_val, - Progress_bar_orientation_val, Unit) -/* ML_2 (gtk_progress_bar_update, GtkProgressBar_val, Float_val, Unit) */ - -/* gtkrange.h */ - -#define GtkRange_val(val) check_cast(GTK_RANGE,val) -ML_1 (gtk_range_get_adjustment, GtkRange_val, Val_GtkAny) -ML_2 (gtk_range_set_adjustment, GtkRange_val, GtkAdjustment_val, Unit) -ML_2 (gtk_range_set_update_policy, GtkRange_val, Update_type_val, Unit) - -/* gtkscale.h */ - -#define GtkScale_val(val) check_cast(GTK_SCALE,val) -ML_2 (gtk_scale_set_digits, GtkScale_val, Int_val, Unit) -ML_2 (gtk_scale_set_draw_value, GtkScale_val, Bool_val, Unit) -ML_2 (gtk_scale_set_value_pos, GtkScale_val, Position_val, Unit) -ML_1 (gtk_scale_get_value_width, GtkScale_val, Val_int) -ML_1 (gtk_scale_draw_value, GtkScale_val, Unit) -ML_1 (gtk_hscale_new, GtkAdjustment_val, Val_GtkWidget_sink) -ML_1 (gtk_vscale_new, GtkAdjustment_val, Val_GtkWidget_sink) - -/* gtkscrollbar.h */ - -ML_1 (gtk_hscrollbar_new, GtkAdjustment_val, Val_GtkWidget_sink) -ML_1 (gtk_vscrollbar_new, GtkAdjustment_val, Val_GtkWidget_sink) - -/* gtkruler.h */ - -#define GtkRuler_val(val) check_cast(GTK_RULER,val) -ML_2 (gtk_ruler_set_metric, GtkRuler_val, Metric_type_val, Unit) -ML_5 (gtk_ruler_set_range, GtkRuler_val, Float_val, - Float_val, Float_val, Float_val, Unit) -Make_Extractor (gtk_ruler_get, GtkRuler_val, lower, copy_double) -Make_Extractor (gtk_ruler_get, GtkRuler_val, upper, copy_double) -Make_Extractor (gtk_ruler_get, GtkRuler_val, position, copy_double) -Make_Extractor (gtk_ruler_get, GtkRuler_val, max_size, copy_double) -ML_1 (gtk_ruler_draw_ticks, GtkRuler_val, Unit) -ML_1 (gtk_ruler_draw_pos, GtkRuler_val, Unit) -ML_0 (gtk_hruler_new, Val_GtkWidget_sink) -ML_0 (gtk_vruler_new, Val_GtkWidget_sink) - -/* gtk[hv]separator.h */ - -ML_0 (gtk_hseparator_new, Val_GtkWidget_sink) -ML_0 (gtk_vseparator_new, Val_GtkWidget_sink) - -/* gtkmain.h */ - -value ml_gtk_init (value argv) -{ - CAMLparam1 (argv); - int argc = Wosize_val(argv), i; - CAMLlocal1 (copy); - - copy = (argc ? alloc (argc, Abstract_tag) : Atom(0)); - for (i = 0; i < argc; i++) Field(copy,i) = Field(argv,i); - gtk_init (&argc, (char ***)©); - - argv = (argc ? alloc (argc, 0) : Atom(0)); - for (i = 0; i < argc; i++) modify(&Field(argv,i), Field(copy,i)); - CAMLreturn (argv); -} -ML_1 (gtk_exit, Int_val, Unit) -ML_0 (gtk_set_locale, Val_string) -ML_0 (gtk_main, Unit) -ML_1 (gtk_main_iteration_do, Bool_val, Val_bool) -ML_0 (gtk_main_quit, Unit) -ML_1 (gtk_grab_add, GtkWidget_val, Unit) -ML_1 (gtk_grab_remove, GtkWidget_val, Unit) -ML_0 (gtk_grab_get_current, Val_GtkWidget) -value ml_gtk_get_version (value unit) -{ - value ret = alloc_small(3,0); - Field(ret,0) = Val_int(gtk_major_version); - Field(ret,1) = Val_int(gtk_minor_version); - Field(ret,2) = Val_int(gtk_micro_version); - return ret; -} - -/* Marshalling */ - -void ml_gtk_callback_marshal (GtkObject *object, gpointer data, - guint nargs, GtkArg *args) -{ - value vargs = alloc_small(3,0); - - CAMLparam1 (vargs); - Field(vargs,0) = (value) object; - Field(vargs,1) = Val_int(nargs); - Field(vargs,2) = (value) args; - - callback (*(value*)data, vargs); - - Field(vargs,0) = Val_int(-1); - Field(vargs,1) = Val_int(-1); - CAMLreturn0; -} - -value ml_gtk_arg_shift (GtkArg *args, value index) -{ - return (value) (&args[Int_val(index)]); -} - -value ml_gtk_arg_get_type (GtkArg *arg) -{ - return Val_int (arg->type); -} - -value ml_gtk_arg_get (GtkArg *arg) -{ - CAMLparam0(); - CAMLlocal1(tmp); - value ret; - GtkFundamentalType type = GTK_FUNDAMENTAL_TYPE(arg->type); - int tag; - - switch (type) { - case GTK_TYPE_CHAR: - tag = 0; - tmp = Int_val(GTK_VALUE_CHAR(*arg)); - break; - case GTK_TYPE_BOOL: - tag = 1; - tmp = Val_bool(GTK_VALUE_BOOL(*arg)); - break; - case GTK_TYPE_INT: - case GTK_TYPE_ENUM: - case GTK_TYPE_UINT: - case GTK_TYPE_FLAGS: - tag = 2; - tmp = Val_int (GTK_VALUE_INT(*arg)); break; - case GTK_TYPE_LONG: - case GTK_TYPE_ULONG: - tag = 2; - tmp = Val_int (GTK_VALUE_LONG(*arg)); break; - case GTK_TYPE_FLOAT: - tag = 3; - tmp = copy_double ((double)GTK_VALUE_FLOAT(*arg)); break; - case GTK_TYPE_DOUBLE: - tag = 3; - tmp = copy_double (GTK_VALUE_DOUBLE(*arg)); break; - case GTK_TYPE_STRING: - tag = 4; - tmp = Val_option (GTK_VALUE_STRING(*arg), copy_string); break; - case GTK_TYPE_OBJECT: - tag = 5; - tmp = Val_option (GTK_VALUE_OBJECT(*arg), Val_GtkObject); break; - case GTK_TYPE_BOXED: - case GTK_TYPE_POINTER: - tag = 6; - tmp = Val_option (GTK_VALUE_POINTER(*arg), Val_pointer); break; - default: - tag = -1; ret = Val_unit; - } - if (tag != -1) { - ret = alloc_small(1,tag); - Field(ret,0) = tmp; - } - CAMLreturn(ret); -} - -value ml_gtk_arg_set_retloc (GtkArg *arg, value val) -{ - value type = Fundamental_type_val(Is_block(val) ? Field(val,0) : val); - value data = (Is_block(val) ? Field(val,1) : 0); - if (GTK_FUNDAMENTAL_TYPE(arg->type) != GTK_TYPE_POINTER - && GTK_FUNDAMENTAL_TYPE(arg->type) != type) - ml_raise_gtk ("GtkArgv.Arg.set : argument type mismatch"); - switch (type) { - case GTK_TYPE_CHAR: *GTK_RETLOC_CHAR(*arg) = Int_val(data); break; - case GTK_TYPE_BOOL: *GTK_RETLOC_BOOL(*arg) = Int_val(data); break; - case GTK_TYPE_INT: - case GTK_TYPE_ENUM: *GTK_RETLOC_INT(*arg) = Int_val(data); break; - case GTK_TYPE_UINT: - case GTK_TYPE_FLAGS: *GTK_RETLOC_UINT(*arg) = Int32_val(data); break; - case GTK_TYPE_LONG: - case GTK_TYPE_ULONG: *GTK_RETLOC_LONG(*arg) = Nativeint_val(data); break; - case GTK_TYPE_FLOAT: *GTK_RETLOC_FLOAT(*arg) = Float_val(data); break; - case GTK_TYPE_DOUBLE: *GTK_RETLOC_DOUBLE(*arg) = Double_val(data); break; - case GTK_TYPE_STRING: - *GTK_RETLOC_STRING(*arg) = Option_val(data, String_val, NULL); - break; - case GTK_TYPE_BOXED: - case GTK_TYPE_POINTER: - case GTK_TYPE_OBJECT: - *GTK_RETLOC_POINTER(*arg) = Option_val(data, Pointer_val, NULL); - break; - } - return Val_unit; -} - -/* -value ml_gtk_arg_get_char (GtkArg *arg) -{ - if (GTK_FUNDAMENTAL_TYPE(arg->type) != GTK_TYPE_CHAR) - ml_raise_gtk ("argument type mismatch"); - return Val_char (GTK_VALUE_CHAR(*arg)); -} - -value ml_gtk_arg_get_bool (GtkArg *arg) -{ - if (GTK_FUNDAMENTAL_TYPE(arg->type) != GTK_TYPE_BOOL) - ml_raise_gtk ("argument type mismatch"); - return Val_bool (GTK_VALUE_BOOL(*arg)); -} - -value ml_gtk_arg_get_int (GtkArg *arg) -{ - switch (GTK_FUNDAMENTAL_TYPE(arg->type)) { - case GTK_TYPE_INT: - case GTK_TYPE_UINT: - return Val_int (GTK_VALUE_INT(*arg)); - case GTK_TYPE_LONG: - case GTK_TYPE_ULONG: - return Val_long (GTK_VALUE_LONG(*arg)); - case GTK_TYPE_ENUM: - return Val_int (GTK_VALUE_ENUM(*arg)); - case GTK_TYPE_FLAGS: - return Val_int (GTK_VALUE_FLAGS(*arg)); - default: - ml_raise_gtk ("argument type mismatch"); - } - return Val_unit; -} -*/ -value ml_gtk_arg_get_nativeint(GtkArg *arg) { - - switch(GTK_FUNDAMENTAL_TYPE(arg->type)) { - case GTK_TYPE_INT: - case GTK_TYPE_UINT: - return copy_nativeint (GTK_VALUE_INT(*arg)); - case GTK_TYPE_LONG: - case GTK_TYPE_ULONG: - return copy_nativeint (GTK_VALUE_LONG(*arg)); - case GTK_TYPE_ENUM: - return copy_nativeint (GTK_VALUE_ENUM(*arg)); - case GTK_TYPE_FLAGS: - return copy_nativeint (GTK_VALUE_FLAGS(*arg)); - default: - ml_raise_gtk ("argument type mismatch"); - } - return Val_unit; -} -/* -value ml_gtk_arg_get_float (GtkArg *arg) -{ - switch (GTK_FUNDAMENTAL_TYPE(arg->type)) { - case GTK_TYPE_FLOAT: - return copy_double ((double)GTK_VALUE_FLOAT(*arg)); - case GTK_TYPE_DOUBLE: - return copy_double (GTK_VALUE_DOUBLE(*arg)); - default: - ml_raise_gtk ("argument type mismatch"); - } - return Val_unit; -} - -value ml_gtk_arg_get_string (GtkArg *arg) -{ - char *p; - if (GTK_FUNDAMENTAL_TYPE(arg->type) != GTK_TYPE_STRING) - ml_raise_gtk ("argument type mismatch"); - p = GTK_VALUE_STRING(*arg); - return Val_option (p, copy_string); -} -*/ -value ml_gtk_arg_get_pointer (GtkArg *arg) -{ - gpointer p = NULL; - switch (GTK_FUNDAMENTAL_TYPE(arg->type)) { - case GTK_TYPE_STRING: - case GTK_TYPE_BOXED: - case GTK_TYPE_POINTER: - case GTK_TYPE_OBJECT: - p = GTK_VALUE_POINTER(*arg); break; - default: - ml_raise_gtk ("GtkArgv.get_pointer : argument type mismatch"); - } - return Val_pointer(p); -} -/* -value ml_gtk_arg_get_object (GtkArg *arg) -{ - GtkObject *p; - if (GTK_FUNDAMENTAL_TYPE(arg->type) != GTK_TYPE_OBJECT) - ml_raise_gtk ("argument type mismatch"); - p = GTK_VALUE_OBJECT(*arg); - return Val_option (p, Val_GtkObject); -} -*/ - -value ml_string_at_pointer (value ofs, value len, value ptr) -{ - char *start = ((char*)Pointer_val(ptr)) + Option_val(ofs, Int_val, 0); - int length = Option_val(len, Int_val, strlen(start)); - value ret = alloc_string(length); - memcpy ((char*)ret, start, length); - return ret; -} - -value ml_int_at_pointer (value ptr) -{ - return Val_int(*(int*)Pointer_val(ptr)); -} - -/* -value ml_gtk_arg_set_char (GtkArg *arg, value val) -{ - switch (GTK_FUNDAMENTAL_TYPE(arg->type)) { - case GTK_TYPE_POINTER: - case GTK_TYPE_CHAR: - *GTK_RETLOC_CHAR(*arg) = Char_val(val); break; - default: - ml_raise_gtk ("argument type mismatch"); - } - return Val_unit; -} - -value ml_gtk_arg_set_bool (GtkArg *arg, value val) -{ - switch (GTK_FUNDAMENTAL_TYPE(arg->type)) { - case GTK_TYPE_POINTER: - case GTK_TYPE_BOOL: - *GTK_RETLOC_BOOL(*arg) = Bool_val(val); break; - default: - ml_raise_gtk ("argument type mismatch"); - } - return Val_unit; -} - -value ml_gtk_arg_set_int (GtkArg *arg, value val) -{ - switch (GTK_FUNDAMENTAL_TYPE(arg->type)) { - case GTK_TYPE_POINTER: - case GTK_TYPE_INT: - case GTK_TYPE_UINT: - *GTK_RETLOC_INT(*arg) = Int_val(val); break; - case GTK_TYPE_LONG: - case GTK_TYPE_ULONG: - *GTK_RETLOC_LONG(*arg) = Long_val(val); break; - case GTK_TYPE_ENUM: - *GTK_RETLOC_ENUM(*arg) = Int_val(val); break; - case GTK_TYPE_FLAGS: - *GTK_RETLOC_FLAGS(*arg) = Int_val(val); break; - default: - ml_raise_gtk ("argument type mismatch"); - } - return Val_unit; -} - -value ml_gtk_arg_set_nativeint (GtkArg *arg, value val) -{ - switch (GTK_FUNDAMENTAL_TYPE(arg->type)) { - case GTK_TYPE_POINTER: - case GTK_TYPE_INT: - case GTK_TYPE_UINT: - *GTK_RETLOC_INT(*arg) = Nativeint_val(val); break; - case GTK_TYPE_LONG: - case GTK_TYPE_ULONG: - *GTK_RETLOC_LONG(*arg) = Nativeint_val(val); break; - case GTK_TYPE_ENUM: - *GTK_RETLOC_ENUM(*arg) = Nativeint_val(val); break; - case GTK_TYPE_FLAGS: - *GTK_RETLOC_FLAGS(*arg) = Nativeint_val(val); break; - default: - ml_raise_gtk ("argument type mismatch"); - } - return Val_unit; -} - -value ml_gtk_arg_set_float (GtkArg *arg, value val) -{ - switch (GTK_FUNDAMENTAL_TYPE(arg->type)) { - case GTK_TYPE_POINTER: - case GTK_TYPE_FLOAT: - *GTK_RETLOC_FLOAT(*arg) = (float) Double_val(val); break; - case GTK_TYPE_DOUBLE: - *GTK_RETLOC_DOUBLE(*arg) = Double_val(val); break; - default: - ml_raise_gtk ("argument type mismatch"); - } - return Val_unit; -} - -value ml_gtk_arg_set_string (GtkArg *arg, value val) -{ - switch (GTK_FUNDAMENTAL_TYPE(arg->type)) { - case GTK_TYPE_POINTER: - case GTK_TYPE_STRING: - *GTK_RETLOC_STRING(*arg) = String_val(val); break; - default: - ml_raise_gtk ("argument type mismatch"); - } - return Val_unit; -} - -value ml_gtk_arg_set_pointer (GtkArg *arg, value val) -{ - switch (GTK_FUNDAMENTAL_TYPE(arg->type)) { - case GTK_TYPE_BOXED: - *GTK_RETLOC_BOXED(*arg) = Pointer_val(val); break; - case GTK_TYPE_POINTER: - *GTK_RETLOC_POINTER(*arg) = Pointer_val(val); break; - default: - ml_raise_gtk ("argument type mismatch"); - } - return Val_unit; -} - -value ml_gtk_arg_set_object (GtkArg *arg, value val) -{ - switch (GTK_FUNDAMENTAL_TYPE(arg->type)) { - case GTK_TYPE_POINTER: - case GTK_TYPE_OBJECT: - *GTK_RETLOC_OBJECT(*arg) = GtkObject_val(val); break; - default: - ml_raise_gtk ("argument type mismatch"); - } - return Val_unit; -} -*/ - -/* gtksignal.h */ - -value ml_gtk_signal_connect (value object, value name, value clos, value after) -{ - value *clos_p = ml_gtk_root_new (clos); - return Val_int (gtk_signal_connect_full - (GtkObject_val(object), String_val(name), NULL, - ml_gtk_callback_marshal, clos_p, - ml_gtk_root_destroy, FALSE, Bool_val(after))); -} - -ML_2 (gtk_signal_disconnect, GtkObject_val, Int_val, Unit) -ML_2 (gtk_signal_emit_stop_by_name, GtkObject_val, String_val, Unit) -ML_2 (gtk_signal_handler_block, GtkObject_val, Int_val, Unit) -ML_2 (gtk_signal_handler_unblock, GtkObject_val, Int_val, Unit) -ML_2_name (ml_gtk_signal_emit_none, gtk_signal_emit_by_name, - GtkObject_val, String_val, Unit) -ML_3_name (ml_gtk_signal_emit_int, gtk_signal_emit_by_name, - GtkObject_val, String_val, Int_val, Unit) -ML_4_name (ml_gtk_signal_emit_scroll, gtk_signal_emit_by_name, - GtkObject_val, String_val, Scroll_type_val, Double_val, Unit) - -/* gtkmain.h (again) */ - -value ml_gtk_timeout_add (value interval, value clos) -{ - value *clos_p = ml_gtk_root_new (clos); - return Val_int (gtk_timeout_add_full - (Int_val(interval), NULL, ml_gtk_callback_marshal, clos_p, - ml_gtk_root_destroy)); -} -ML_1 (gtk_timeout_remove, Int_val, Unit) - -/* -#include "ml_gtkcaller.h" -ML_0 (gtk_caller_new, Val_GtkWidget) -*/ - -static value ml_class_init=0; - -static void class_init (value class) -{ - callback(ml_class_init, class); -} - - -value set_ml_class_init (value class_func) -{ - if (!ml_class_init) register_global_root (&ml_class_init); - ml_class_init = class_func; - return Val_unit; -} - -value ml_gtk_type_new (value type) -{ - return Val_GtkWidget_sink(gtk_type_new(Int_val(type))); -} - - -struct widget_info { - guint size; - guint class_size; - guint (*get_type_func)(void); -} -widget_info_array[] = { - { sizeof(GtkObject), sizeof(GtkObjectClass), gtk_object_get_type }, - { sizeof(GtkWidget), sizeof(GtkWidgetClass), gtk_widget_get_type }, - { sizeof(GtkMisc), sizeof(GtkMiscClass), gtk_misc_get_type }, - { sizeof(GtkLabel), sizeof(GtkLabelClass), gtk_label_get_type }, - { sizeof(GtkAccelLabel), sizeof(GtkAccelLabelClass), gtk_accel_label_get_type }, - { sizeof(GtkTipsQuery), sizeof(GtkTipsQueryClass), gtk_tips_query_get_type }, - { sizeof(GtkArrow), sizeof(GtkArrowClass), gtk_arrow_get_type }, - { sizeof(GtkImage), sizeof(GtkImageClass), gtk_image_get_type }, - { sizeof(GtkPixmap), sizeof(GtkPixmapClass), gtk_pixmap_get_type }, - { sizeof(GtkContainer), sizeof(GtkContainerClass), gtk_container_get_type }, - { sizeof(GtkBin), sizeof(GtkBinClass), gtk_bin_get_type }, - { sizeof(GtkAlignment), sizeof(GtkAlignmentClass), gtk_alignment_get_type }, - { sizeof(GtkFrame), sizeof(GtkFrameClass), gtk_frame_get_type }, - { sizeof(GtkAspectFrame), sizeof(GtkAspectFrameClass), gtk_aspect_frame_get_type }, - { sizeof(GtkButton), sizeof(GtkButtonClass), gtk_button_get_type }, - { sizeof(GtkToggleButton), sizeof(GtkToggleButtonClass), gtk_toggle_button_get_type }, - { sizeof(GtkCheckButton), sizeof(GtkCheckButtonClass), gtk_check_button_get_type }, - { sizeof(GtkRadioButton), sizeof(GtkRadioButtonClass), gtk_radio_button_get_type }, - { sizeof(GtkOptionMenu), sizeof(GtkOptionMenuClass), gtk_option_menu_get_type }, - { sizeof(GtkItem), sizeof(GtkItemClass), gtk_item_get_type }, - { sizeof(GtkMenuItem), sizeof(GtkMenuItemClass), gtk_menu_item_get_type }, - { sizeof(GtkCheckMenuItem), sizeof(GtkCheckMenuItemClass), gtk_check_menu_item_get_type }, - { sizeof(GtkRadioMenuItem), sizeof(GtkRadioMenuItemClass), gtk_radio_menu_item_get_type }, - { sizeof(GtkTearoffMenuItem), sizeof(GtkTearoffMenuItemClass), gtk_tearoff_menu_item_get_type }, - { sizeof(GtkListItem), sizeof(GtkListItemClass), gtk_list_item_get_type }, - { sizeof(GtkTreeItem), sizeof(GtkTreeItemClass), gtk_tree_item_get_type }, - { sizeof(GtkWindow), sizeof(GtkWindowClass), gtk_window_get_type }, - { sizeof(GtkColorSelectionDialog), sizeof(GtkColorSelectionDialogClass), gtk_color_selection_dialog_get_type }, - { sizeof(GtkDialog), sizeof(GtkDialogClass), gtk_dialog_get_type }, - { sizeof(GtkInputDialog), sizeof(GtkInputDialogClass), gtk_input_dialog_get_type }, - { sizeof(GtkFileSelection), sizeof(GtkFileSelectionClass), gtk_file_selection_get_type }, - { sizeof(GtkFontSelectionDialog), sizeof(GtkFontSelectionDialogClass), gtk_font_selection_dialog_get_type }, - { sizeof(GtkPlug), sizeof(GtkPlugClass), gtk_plug_get_type }, - { sizeof(GtkEventBox), sizeof(GtkEventBoxClass), gtk_event_box_get_type }, - { sizeof(GtkHandleBox), sizeof(GtkHandleBoxClass), gtk_handle_box_get_type }, - { sizeof(GtkScrolledWindow), sizeof(GtkScrolledWindowClass), gtk_scrolled_window_get_type }, - { sizeof(GtkViewport), sizeof(GtkViewportClass), gtk_viewport_get_type }, - { sizeof(GtkBox), sizeof(GtkBoxClass), gtk_box_get_type }, - { sizeof(GtkButtonBox), sizeof(GtkButtonBoxClass), gtk_button_box_get_type }, - { sizeof(GtkHButtonBox), sizeof(GtkHButtonBoxClass), gtk_hbutton_box_get_type }, - { sizeof(GtkVButtonBox), sizeof(GtkVButtonBoxClass), gtk_vbutton_box_get_type }, - { sizeof(GtkVBox), sizeof(GtkVBoxClass), gtk_vbox_get_type }, - { sizeof(GtkColorSelection), sizeof(GtkColorSelectionClass), gtk_color_selection_get_type }, - { sizeof(GtkGammaCurve), sizeof(GtkGammaCurveClass), gtk_gamma_curve_get_type }, - { sizeof(GtkHBox), sizeof(GtkHBoxClass), gtk_hbox_get_type }, - { sizeof(GtkCombo), sizeof(GtkComboClass), gtk_combo_get_type }, - { sizeof(GtkStatusbar), sizeof(GtkStatusbarClass), gtk_statusbar_get_type }, - { sizeof(GtkCList), sizeof(GtkCListClass), gtk_clist_get_type }, - { sizeof(GtkCTree), sizeof(GtkCTreeClass), gtk_ctree_get_type }, - { sizeof(GtkFixed), sizeof(GtkFixedClass), gtk_fixed_get_type }, - { sizeof(GtkNotebook), sizeof(GtkNotebookClass), gtk_notebook_get_type }, - { sizeof(GtkFontSelection), sizeof(GtkFontSelectionClass), gtk_font_selection_get_type }, - { sizeof(GtkPaned), sizeof(GtkPanedClass), gtk_paned_get_type }, - { sizeof(GtkHPaned), sizeof(GtkHPanedClass), gtk_hpaned_get_type }, - { sizeof(GtkVPaned), sizeof(GtkVPanedClass), gtk_vpaned_get_type }, - { sizeof(GtkLayout), sizeof(GtkLayoutClass), gtk_layout_get_type }, - { sizeof(GtkList), sizeof(GtkListClass), gtk_list_get_type }, - { sizeof(GtkMenuShell), sizeof(GtkMenuShellClass), gtk_menu_shell_get_type }, - { sizeof(GtkMenuBar), sizeof(GtkMenuBarClass), gtk_menu_bar_get_type }, - { sizeof(GtkMenu), sizeof(GtkMenuClass), gtk_menu_get_type }, - { sizeof(GtkPacker), sizeof(GtkPackerClass), gtk_packer_get_type }, - { sizeof(GtkSocket), sizeof(GtkSocketClass), gtk_socket_get_type }, - { sizeof(GtkTable), sizeof(GtkTableClass), gtk_table_get_type }, - { sizeof(GtkToolbar), sizeof(GtkToolbarClass), gtk_toolbar_get_type }, - { sizeof(GtkTree), sizeof(GtkTreeClass), gtk_tree_get_type }, - { sizeof(GtkCalendar), sizeof(GtkCalendarClass), gtk_calendar_get_type }, - { sizeof(GtkDrawingArea), sizeof(GtkDrawingAreaClass), gtk_drawing_area_get_type }, - { sizeof(GtkCurve), sizeof(GtkCurveClass), gtk_curve_get_type }, - { sizeof(GtkEditable), sizeof(GtkEditableClass), gtk_editable_get_type }, - { sizeof(GtkEntry), sizeof(GtkEntryClass), gtk_entry_get_type }, - { sizeof(GtkSpinButton), sizeof(GtkSpinButtonClass), gtk_spin_button_get_type }, - { sizeof(GtkText), sizeof(GtkTextClass), gtk_text_get_type }, - { sizeof(GtkRuler), sizeof(GtkRulerClass), gtk_ruler_get_type }, - { sizeof(GtkHRuler), sizeof(GtkHRulerClass), gtk_hruler_get_type }, - { sizeof(GtkVRuler), sizeof(GtkVRulerClass), gtk_vruler_get_type }, - { sizeof(GtkRange), sizeof(GtkRangeClass), gtk_range_get_type }, - { sizeof(GtkScale), sizeof(GtkScaleClass), gtk_scale_get_type }, - { sizeof(GtkHScale), sizeof(GtkHScaleClass), gtk_hscale_get_type }, - { sizeof(GtkVScale), sizeof(GtkVScaleClass), gtk_vscale_get_type }, - { sizeof(GtkScrollbar), sizeof(GtkScrollbarClass), gtk_scrollbar_get_type }, - { sizeof(GtkHScrollbar), sizeof(GtkHScrollbarClass), gtk_hscrollbar_get_type }, - { sizeof(GtkVScrollbar), sizeof(GtkVScrollbarClass), gtk_vscrollbar_get_type }, - { sizeof(GtkSeparator), sizeof(GtkSeparatorClass), gtk_separator_get_type }, - { sizeof(GtkHSeparator), sizeof(GtkHSeparatorClass), gtk_hseparator_get_type }, - { sizeof(GtkVSeparator), sizeof(GtkVSeparatorClass), gtk_vseparator_get_type }, - { sizeof(GtkPreview), sizeof(GtkPreviewClass), gtk_preview_get_type }, - { sizeof(GtkProgress), sizeof(GtkProgressClass), gtk_progress_get_type }, - { sizeof(GtkProgressBar), sizeof(GtkProgressBarClass), gtk_progress_bar_get_type }, - { sizeof(GtkData), sizeof(GtkDataClass), gtk_data_get_type }, - { sizeof(GtkAdjustment), sizeof(GtkAdjustmentClass), gtk_adjustment_get_type }, - { sizeof(GtkTooltips), sizeof(GtkTooltipsClass), gtk_tooltips_get_type }, - { sizeof(GtkItemFactory), sizeof(GtkItemFactoryClass), gtk_item_factory_get_type } -}; - - -value ml_gtk_type_unique (value name, value parent, value nsignals) -{ - struct widget_info * wi; - GtkTypeInfo ttt_info; - - wi = widget_info_array + Int_val(parent); - ttt_info.type_name = String_val(name); - ttt_info.object_size = wi->size; - ttt_info.class_size = wi->class_size + Int_val(nsignals)*sizeof(void *); - ttt_info.class_init_func = (GtkClassInitFunc) class_init; - ttt_info.object_init_func = (GtkObjectInitFunc) NULL; - ttt_info.reserved_1 = NULL; - ttt_info.reserved_2 = NULL; - ttt_info.base_class_init_func = (GtkClassInitFunc) NULL; - - return Val_int(gtk_type_unique(wi->get_type_func (), &ttt_info)); -} - -static guint sig[100]; - -value ml_gtk_object_class_add_signals (value class, value signals, - value nsignals) -{ - int i; - for (i=0; iclass_size+Int_val(num)*sizeof(void *); - return Val_int(gtk_signal_new (String_val(name), Int_val(run_type), - ((GtkObjectClass *)classe)->type, offset, - gtk_signal_default_marshaller, GTK_TYPE_NONE, 0)); - *(((int *)classe)+offset) = 0; -} - -ML_1 (gtk_rc_add_default_file, String_val, Unit) diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/ml_gtk.h b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/ml_gtk.h deleted file mode 100644 index 29c2da5c3..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/ml_gtk.h +++ /dev/null @@ -1,15 +0,0 @@ -/* $Id$ */ - -#define GtkObject_val(obj) ((GtkObject*)Field(obj,1)) -value Val_GtkObject (GtkObject *w); -value Val_GtkObject_sink (GtkObject *w); -#define Val_GtkAny(w) Val_GtkObject((GtkObject*)w) -#define Val_GtkAny_sink(w) Val_GtkObject_sink((GtkObject*)w) -#define Val_GtkWidget Val_GtkAny -#define Val_GtkWidget_sink Val_GtkAny_sink - -#ifdef GTK_NO_CHECK_CASTS -#define check_cast(f,v) f(Pointer_val(v)) -#else -#define check_cast(f,v) (Pointer_val(v) == NULL ? NULL : f(Pointer_val(v))) -#endif diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/ml_gtkgl.c b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/ml_gtkgl.c deleted file mode 100644 index 5e0efd718..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/ml_gtkgl.c +++ /dev/null @@ -1,54 +0,0 @@ -/* $Id$ */ - -#include -#include -#include -#include -#include -#include -#include - -#include "wrappers.h" -#include "ml_glib.h" -#include "ml_gdk.h" -#include "ml_gtk.h" -#include "gtkgl_tags.h" - -/* Conversion functions */ -#include "gtkgl_tags.c" - -#define GtkGLArea_val(val) ((GtkGLArea*)GtkObject_val(val)) - -value ml_gtk_gl_area_new (value list, value share) -{ - value cursor, res; - int len, i; - int *attrs; - - for (len = 0, cursor = list; cursor != Val_unit; cursor = Field(cursor,1)) - { - if (Is_block(Field(cursor,0))) len += 2; - else len++; - } - - attrs = (int*) stat_alloc ((len+1)*sizeof(int)); - - for (i = 0, cursor = list; cursor != Val_unit; cursor = Field(cursor,1)) - { - value option = Field(cursor,0); - if (Is_block(option)) { - attrs[i++] = Visual_options_val(Field(option,0)); - attrs[i++] = Int_val(Field(option,1)); - } - else attrs[i++] = Visual_options_val(option); - } - attrs[i] = GDK_GL_NONE; - - res = Val_GtkObject - ((GtkObject*)gtk_gl_area_share_new(attrs,GtkGLArea_val(share))); - stat_free(attrs); - return res; -} - -ML_1 (gtk_gl_area_make_current, GtkGLArea_val, Val_bool) -ML_1 (gtk_gl_area_swapbuffers, GtkGLArea_val, Unit) diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/ml_gtkxmhtml.c b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/ml_gtkxmhtml.c deleted file mode 100644 index 3f9c3c6c4..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/ml_gtkxmhtml.c +++ /dev/null @@ -1,76 +0,0 @@ -/* $Id$ */ - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "wrappers.h" -#include "ml_glib.h" -#include "ml_gdk.h" -#include "ml_gtk.h" -#include "gtkxmhtml_tags.h" - -/* conversion functions */ - -#include "gtkxmhtml_tags.c" - -Make_Flags_val (Line_type_val) - -#define GtkXmHTML_val(val) ((GtkXmHTML*)GtkObject_val(val)) - -ML_0 (gtk_xmhtml_new, Val_GtkAny_sink) -ML_1 (gtk_xmhtml_freeze, GtkXmHTML_val, Unit) -ML_1 (gtk_xmhtml_thaw, GtkXmHTML_val, Unit) -ML_2 (gtk_xmhtml_source, GtkXmHTML_val, String_val, Unit) -ML_2 (gtk_xmhtml_set_string_direction, GtkXmHTML_val, String_direction_val, - Unit) -ML_2 (gtk_xmhtml_set_alignment, GtkXmHTML_val, Position_val, Unit) -/* ML_2 (gtk_xmhtml_outline, GtkXmHTML_val, Bool_val, Unit) */ -ML_3 (gtk_xmhtml_set_font_familty, GtkXmHTML_val, String_val, String_val, Unit) -ML_3 (gtk_xmhtml_set_font_familty_fixed, GtkXmHTML_val, String_val, String_val, - Unit) -ML_2 (gtk_xmhtml_set_font_charset, GtkXmHTML_val, String_val, Unit) -ML_2 (gtk_xmhtml_set_allow_body_colors, GtkXmHTML_val, Bool_val, Unit) -ML_2 (gtk_xmhtml_set_hilight_on_enter, GtkXmHTML_val, Bool_val, Unit) -ML_2 (gtk_xmhtml_set_anchor_underline_type, GtkXmHTML_val, Flags_Line_type_val, - Unit) -ML_2 (gtk_xmhtml_set_anchor_visited_underline_type, GtkXmHTML_val, - Flags_Line_type_val, Unit) -ML_2 (gtk_xmhtml_set_anchor_target_underline_type, GtkXmHTML_val, - Flags_Line_type_val, Unit) -ML_2 (gtk_xmhtml_set_allow_color_switching, GtkXmHTML_val, Bool_val, Unit) -ML_2 (gtk_xmhtml_set_dithering, GtkXmHTML_val, Dither_type_val, Unit) -ML_2 (gtk_xmhtml_set_allow_font_switching, GtkXmHTML_val, Bool_val, Unit) -ML_2 (gtk_xmhtml_set_max_image_colors, GtkXmHTML_val, Int_val, Unit) -ML_2 (gtk_xmhtml_set_allow_images, GtkXmHTML_val, Bool_val, Unit) -ML_4 (gtk_xmhtml_set_plc_intervals, GtkXmHTML_val, Int_val, Int_val, Int_val, - Unit) -/* ML_2 (gtk_xmhtml_set_def_body_image_url, GtkXmHTML_val, String_val, Unit) */ -ML_2 (gtk_xmhtml_set_anchor_buttons, GtkXmHTML_val, Bool_val, Unit) -value ml_gtk_xmhtml_set_anchor_cursor(value html, value cursor) -{ - gtk_xmhtml_set_anchor_cursor - (GtkXmHTML_val(html), Option_val(cursor, GdkCursor_val, NULL), - Bool_val(cursor)); - return Val_unit; -} -ML_2 (gtk_xmhtml_set_topline, GtkXmHTML_val, Int_val, Unit) -ML_1 (gtk_xmhtml_get_topline, GtkXmHTML_val, Val_int) -ML_2 (gtk_xmhtml_set_freeze_animations, GtkXmHTML_val, Bool_val, Unit) -/* ML_1 (gtk_xmhtml_get_source, GtkXmHTML_val, copy_string) */ -ML_2 (gtk_xmhtml_set_screen_gamma, GtkXmHTML_val, Float_val, Unit) -/* ML_2 (gtk_xmhtml_set_event_proc, GtkXmHTML_val, ???, Unit) */ -ML_2 (gtk_xmhtml_set_perfect_colors, GtkXmHTML_val, Bool_val, Unit) -ML_2 (gtk_xmhtml_set_uncompress_command, GtkXmHTML_val, String_val, Unit) -ML_2 (gtk_xmhtml_set_strict_checking, GtkXmHTML_val, Bool_val, Unit) -ML_2 (gtk_xmhtml_set_bad_html_warnings, GtkXmHTML_val, Bool_val, Unit) -ML_2 (gtk_xmhtml_set_allow_form_coloring, GtkXmHTML_val, Bool_val, Unit) -ML_2 (gtk_xmhtml_set_imagemap_draw, GtkXmHTML_val, Bool_val, Unit) -ML_2 (gtk_xmhtml_set_mime_type, GtkXmHTML_val, String_val, Unit) -ML_2 (gtk_xmhtml_set_alpha_processing, GtkXmHTML_val, Bool_val, Unit) -ML_2 (gtk_xmhtml_set_rgb_conv_mode, GtkXmHTML_val, Dither_type_val, Unit) diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/var2conv.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/var2conv.ml deleted file mode 100644 index 6730d1451..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/var2conv.ml +++ /dev/null @@ -1,99 +0,0 @@ -(* $Id$ *) - -(* Compile a list of variant tags into CPP defines *) - -(* hash_variant, from ctype.ml *) - -let hash_variant s = - let accu = ref 0 in - for i = 0 to String.length s - 1 do - accu := 223 * !accu + Char.code s.[i] - done; - (* reduce to 31 bits *) - accu := !accu land (1 lsl 31 - 1); - (* make it signed for 64 bits architectures *) - if !accu > 0x3FFFFFFF then !accu - (1 lsl 31) else !accu - -open Genlex - -let lexer = make_lexer ["type"; "public"; "exception"; "="; "["; "]"; "`"; "|"] - -let exn_name = ref "invalid_argument" - -let may_string = parser - [< ' String s >] -> s - | [< >] -> "" - -let may_bar = parser - [< ' Kwd "|" >] -> () - | [< >] -> () - -let rec ident_list = parser - [< ' Kwd "`"; ' Ident x; trans = may_string; _ = may_bar; s >] -> - (x, trans) :: ident_list s - | [< >] -> [] - -let may_public = parser - [< ' Kwd "public" >] -> true - | [< >] -> false - -open Printf - -let declaration = parser - [< ' Kwd "type"; public = may_public; ' Ident name; ' Kwd "="; - prefix = may_string; ' Kwd "["; _ = may_bar; - tags = ident_list; ' Kwd "]"; suffix = may_string >] -> - let ctag tag trans = - if trans <> "" then trans else - let tag = - if tag.[0] = '_' then - String.sub tag ~pos:1 ~len:(String.length tag -1) - else tag - in - match - if prefix = "" then None, "" - else - Some (prefix.[String.length prefix - 1]), - String.sub prefix ~pos:0 ~len:(String.length prefix - 1) - with - Some '#', prefix -> - prefix ^ String.uncapitalize tag ^ suffix - | Some '^', prefix -> - prefix ^ String.uppercase tag ^ suffix - | _ -> - prefix ^ tag ^ suffix - and cname = - String.capitalize name - in - let tags = - Sort.list tags - ~order:(fun (tag1,_) (tag2,_) -> hash_variant tag1 < hash_variant tag2) - in - printf "/* %s : conversion table */\n" name; - if not public then printf "static "; - printf "lookup_info ml_table_%s[] = {\n" name; - printf " { 0, %d },\n" (List.length tags); - List.iter tags ~f: - begin fun (tag,trans) -> - printf " { MLTAG_%s, %s },\n" tag (ctag tag trans) - end; - printf "};\n\n"; - printf "#define Val_%s(data) ml_lookup_from_c (ml_table_%s, data)\n" - name name; - printf "#define %s_val(key) ml_lookup_to_c (ml_table_%s, key)\n\n" - cname name; - | [< 'Kwd"exception"; 'Ident name >] -> - exn_name := name - | [< >] -> raise End_of_file - -let main () = - let chars = Stream.of_channel stdin in - let s = lexer chars in - try - while true do declaration s done - with End_of_file -> () - | Stream.Error err -> - Printf.eprintf "Parsing error \"%s\" at character %d on input stream" - err (Stream.count chars) - -let _ = Printexc.print main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/var2def.ml b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/var2def.ml deleted file mode 100644 index 617c4c62d..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/var2def.ml +++ /dev/null @@ -1,44 +0,0 @@ -(* $Id$ *) - -(* Compile a list of variant tags into CPP defines *) - -(* hash_variant, from ctype.ml *) - -let hash_variant s = - let accu = ref 0 in - for i = 0 to String.length s - 1 do - accu := 223 * !accu + Char.code s.[i] - done; - (* reduce to 31 bits *) - accu := !accu land (1 lsl 31 - 1); - (* make it signed for 64 bits architectures *) - if !accu > 0x3FFFFFFF then !accu - (1 lsl 31) else !accu - -open Genlex - -let lexer = make_lexer ["`"; "["; "]"; "|"] - -let main () = - let s = lexer (Stream.of_channel stdin) in - let tags = Hashtbl.create 57 in - while match s with parser - [< ' Kwd "`"; ' Ident tag >] -> - let hash = hash_variant tag in - begin try - let tag' = Hashtbl.find tags hash in - if tag <> tag' then - failwith (String.concat ~sep:" " ["Doublon tag:";tag;"and";tag']) - with Not_found -> - Hashtbl.add ~key:hash ~data:tag tags; - print_string "#define MLTAG_"; - print_string tag; - print_string "\tVal_int("; - print_int hash; - print_string ")\n" - end; - true - | [< ' _ >] -> true - | [< >] -> false - do () done - -let _ = Printexc.print main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/wrappers.c b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/wrappers.c deleted file mode 100644 index 7e83aa99b..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/wrappers.c +++ /dev/null @@ -1,76 +0,0 @@ -/* $Id$ */ - -#include -#include -#include -#include -#include -#include - -#include "wrappers.h" - -value copy_memblock_indirected (void *src, asize_t size) -{ - value ret = alloc (Wosize_asize(size)+2, Abstract_tag); - if (!src) ml_raise_null_pointer (); - - Field(ret,1) = 2; - memcpy (&Field(ret,2), src, size); - return ret; -} - -value ml_some (value v) -{ - CAMLparam1(v); - value ret = alloc_small(1,0); - Field(ret,0) = v; - CAMLreturn(ret); -} - -void ml_raise_null_pointer () -{ - static value * exn = NULL; - if (exn == NULL) - exn = caml_named_value ("null_pointer"); - raise_constant (*exn); -} - -value Val_pointer (void *ptr) -{ - value ret = alloc_small (2, Abstract_tag); - if (!ptr) ml_raise_null_pointer (); - Field(ret,1) = (value)ptr; - return ret; -} - -value copy_string_check (const char*str) -{ - if (!str) ml_raise_null_pointer (); - return copy_string ((char*) str); -} - -value copy_string_or_null (const char*str) -{ - return copy_string (str ? (char*) str : ""); -} - -value ml_lookup_from_c (lookup_info *table, int data) -{ - int i; - for (i = table[0].data; i > 0; i--) - if (table[i].data == data) return table[i].key; - invalid_argument ("ml_lookup_from_c"); -} - -int ml_lookup_to_c (lookup_info *table, value key) -{ - int first = 1, last = table[0].data, current; - - while (first < last) { - current = (first+last)/2; - if (table[current].key >= key) last = current; - else first = current + 1; - } - if (table[first].key == key) return table[first].data; - invalid_argument ("ml_lookup_to_c"); -} diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/wrappers.h b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/wrappers.h deleted file mode 100644 index 1fcffcf02..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/wrappers.h +++ /dev/null @@ -1,222 +0,0 @@ -/* $Id$ */ - -#ifndef _wrappers_ -#define _wrappers_ - -#include -#include - -value copy_memblock_indirected (void *src, asize_t size); -value ml_some (value); -void ml_raise_null_pointer (void) Noreturn; -value Val_pointer (void *); -value copy_string_check (const char*); -value copy_string_or_null (const char *); - -typedef struct { value key; int data; } lookup_info; -value ml_lookup_from_c (lookup_info *table, int data); -int ml_lookup_to_c (lookup_info *table, value key); - -/* Wrapper generators */ - -#define ML_0(cname, conv) \ -value ml_##cname (value unit) { return conv (cname ()); } -#define ML_1(cname, conv1, conv) \ -value ml_##cname (value arg1) { return conv (cname (conv1 (arg1))); } -#define ML_1_post(cname, conv1, conv, post) \ -value ml_##cname (value arg1) \ -{ value ret = conv (cname (conv1(arg1))); post; return ret; } -#define ML_2(cname, conv1, conv2, conv) \ -value ml_##cname (value arg1, value arg2) \ -{ return conv (cname (conv1(arg1), conv2(arg2))); } -#define ML_2_name(mlname, cname, conv1, conv2, conv) \ -value mlname (value arg1, value arg2) \ -{ return conv (cname (conv1(arg1), conv2(arg2))); } -#define ML_3(cname, conv1, conv2, conv3, conv) \ -value ml_##cname (value arg1, value arg2, value arg3) \ -{ return conv (cname (conv1(arg1), conv2(arg2), conv3(arg3))); } -#define ML_3_name(mlname, cname, conv1, conv2, conv3, conv) \ -value mlname (value arg1, value arg2, value arg3) \ -{ return conv (cname (conv1(arg1), conv2(arg2), conv3(arg3))); } -#define ML_4(cname, conv1, conv2, conv3, conv4, conv) \ -value ml_##cname (value arg1, value arg2, value arg3, value arg4) \ -{ return conv (cname (conv1(arg1), conv2(arg2), conv3(arg3), conv4(arg4))); } -#define ML_4_name(mlname, cname, conv1, conv2, conv3, conv4, conv) \ -value mlname (value arg1, value arg2, value arg3, value arg4) \ -{ return conv (cname (conv1(arg1), conv2(arg2), conv3(arg3), conv4(arg4))); } -#define ML_5(cname, conv1, conv2, conv3, conv4, conv5, conv) \ -value ml_##cname (value arg1, value arg2, value arg3, value arg4, value arg5) \ -{ return conv (cname (conv1(arg1), conv2(arg2), conv3(arg3), conv4(arg4), \ - conv5(arg5))); } -#define ML_6(cname, conv1, conv2, conv3, conv4, conv5, conv6, conv) \ -value ml_##cname (value arg1, value arg2, value arg3, value arg4, value arg5, \ - value arg6) \ -{ return conv (cname (conv1(arg1), conv2(arg2), conv3(arg3), conv4(arg4), \ - conv5(arg5), conv6(arg6))); } -#define ML_7(cname, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv) \ -value ml_##cname (value arg1, value arg2, value arg3, value arg4, value arg5, \ - value arg6, value arg7) \ -{ return conv (cname (conv1(arg1), conv2(arg2), conv3(arg3), conv4(arg4), \ - conv5(arg5), conv6(arg6), conv7(arg7))); } -#define ML_8(cname, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8, \ - conv) \ -value ml_##cname (value arg1, value arg2, value arg3, value arg4, value arg5, \ - value arg6, value arg7, value arg8) \ -{ return conv (cname (conv1(arg1), conv2(arg2), conv3(arg3), conv4(arg4), \ - conv5(arg5), conv6(arg6), conv7(arg7), conv8(arg8))); } -#define ML_9(cname, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8, \ - conv9, conv) \ -value ml_##cname (value arg1, value arg2, value arg3, value arg4, value arg5, \ - value arg6, value arg7, value arg8, value arg9) \ -{ return conv (cname (conv1(arg1), conv2(arg2), conv3(arg3), conv4(arg4), \ - conv5(arg5), conv6(arg6), conv7(arg7), conv8(arg8), \ - conv9(arg9))); } -#define ML_10(cname, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8, \ - conv9, conv10, conv) \ -value ml_##cname (value arg1, value arg2, value arg3, value arg4, value arg5, \ - value arg6, value arg7, value arg8, value arg9, value arg10)\ -{ return conv (cname (conv1(arg1), conv2(arg2), conv3(arg3), conv4(arg4), \ - conv5(arg5), conv6(arg6), conv7(arg7), conv8(arg8), \ - conv9(arg9), conv10(arg10))); } -#define ML_11(cname, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8, \ - conv9, conv10, conv11, conv) \ -value ml_##cname (value arg1, value arg2, value arg3, value arg4, value arg5, \ - value arg6, value arg7, value arg8, value arg9, value arg10,\ - value arg11) \ -{ return conv (cname (conv1(arg1), conv2(arg2), conv3(arg3), conv4(arg4), \ - conv5(arg5), conv6(arg6), conv7(arg7), conv8(arg8), \ - conv9(arg9), conv10(arg10), conv11(arg11))); } -#define ML_12(cname, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8, \ - conv9, conv10, conv11, conv12, conv) \ -value ml_##cname (value arg1, value arg2, value arg3, value arg4, value arg5, \ - value arg6, value arg7, value arg8, value arg9, value arg10,\ - value arg11, value arg12) \ -{ return conv (cname (conv1(arg1), conv2(arg2), conv3(arg3), conv4(arg4), \ - conv5(arg5), conv6(arg6), conv7(arg7), conv8(arg8), \ - conv9(arg9), conv10(arg10), conv11(arg11), \ - conv12(arg12))); } - -/* Use with care: needs the argument index */ -#define Ignore(x) -#define Insert(x) (x), -#define Split(x,f,g) f(x), g(x) Ignore -#define Split3(x,f,g,h) f(x), g(x), h(x) Ignore -#define Pair(x,f,g) f(Field(x,0)), g(Field(x,1)) Ignore -#define Triple(x,f,g,h) f(Field(x,0)), g(Field(x,1)), h(Field(x,2)) Ignore - -/* For more than 5 arguments */ -#define ML_bc6(cname) \ -value cname##_bc (value *argv, int argn) \ -{ return cname(argv[0],argv[1],argv[2],argv[3],argv[4],argv[5]); } -#define ML_bc7(cname) \ -value cname##_bc (value *argv, int argn) \ -{ return cname(argv[0],argv[1],argv[2],argv[3],argv[4],argv[5],argv[6]); } -#define ML_bc8(cname) \ -value cname##_bc (value *argv, int argn) \ -{ return cname(argv[0],argv[1],argv[2],argv[3],argv[4],argv[5],argv[6], \ - argv[7]); } -#define ML_bc9(cname) \ -value cname##_bc (value *argv, int argn) \ -{ return cname(argv[0],argv[1],argv[2],argv[3],argv[4],argv[5],argv[6], \ - argv[7],argv[8]); } -#define ML_bc10(cname) \ -value cname##_bc (value *argv, int argn) \ -{ return cname(argv[0],argv[1],argv[2],argv[3],argv[4],argv[5],argv[6], \ - argv[7],argv[8],argv[9]); } -#define ML_bc11(cname) \ -value cname##_bc (value *argv, int argn) \ -{ return cname(argv[0],argv[1],argv[2],argv[3],argv[4],argv[5],argv[6], \ - argv[7],argv[8],argv[9],argv[10]); } -#define ML_bc12(cname) \ -value cname##_bc (value *argv, int argn) \ -{ return cname(argv[0],argv[1],argv[2],argv[3],argv[4],argv[5],argv[6], \ - argv[7],argv[8],argv[9],argv[10],argv[11]); } - -/* result conversion */ -#define Unit(x) ((x), Val_unit) -#define Id(x) x -#define Val_char Val_int - -/* parameter conversion */ -#define Bool_ptr(x) ((long) x - 1) -#define Char_val Int_val -#define Float_val(x) ((float)Double_val(x)) - -#define Option_val(val,unwrap,default) \ -((long)val-1 ? unwrap(Field(val,0)) : default) -#define String_option_val(s) Option_val(s,String_val,NULL) - -/* Utility */ - -#define Copy_array(ret,l,src,conv) \ - if (!l) ret = Atom(0); \ - else if (l <= Max_young_wosize) { int i; ret = alloc_tuple(l); \ - for(i=0;ifield); } - -#define Make_Setter(name,conv1,conv2,field) \ -value ml_##name##_##field (value val, value new) \ -{ (conv1(val))->field = conv2(new); return Val_unit; } - -#define Make_Array_Extractor(name,conv1,conv2,field,conv) \ -value ml_##name##_##field (value val, value index) \ -{ return conv ((conv1(val))->field[conv2(index)]); } - -#define Make_Array_Setter(name,conv1,conv2,conv3,field) \ -value ml_##name##_##field (value val, value index, value new) \ -{ (conv1(val))->field[conv2(index)] = conv3(new); return Val_unit; } - -/* ML value is [flag list] */ -#define Make_Flags_val(conv) \ -int Flags_##conv (value list) \ -{ int flags = 0L; \ - while Is_block(list) { flags |= conv(Field(list,0)); list = Field(list,1); }\ - return flags; } - -/* ML value is [flag list option] */ -#define Make_OptFlags_val(conv) \ -int OptFlags_##conv (value list) \ -{ int flags = 0L; \ - if Is_block(list) list = Field(list,0); \ - while Is_block(list) { flags |= conv(Field(list,0)); list = Field(list,1); }\ - return flags; } - -#define Val_copy(val) copy_memblock_indirected (&val, sizeof(val)) -#define Val_string copy_string_check -#define Val_optstring copy_string_or_null -#define Optstring_val(v) (string_length(v) ? String_val(v) : (char*)NULL) -#define Val_option(v,f) (v ? ml_some(f(v)) : Val_unit) - -#define Check_null(v) (v ? v : (ml_raise_null_pointer (), v)) - -#endif /* _wrappers_ */ diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0-1.spec b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0-1.spec deleted file mode 100644 index 8ab9a2222..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0-1.spec +++ /dev/null @@ -1,143 +0,0 @@ -Summary: LablGTK : an interface to the GIMP Tool Kit for OCaml -Name: lablgtk_20001129 -Version: 0.1.0 -Release: 1 -Copyright: LGPL -Group: Development/Libraries -Source: ftp://ftp.kurims.kyoto-u.ac.jp/pub/lang/olabl/lablgtk_20001129-0.1.0.tar.gz -%description -LablGTK is an interface to the GIMP Tool Kit for OCaml. - -%prep -%setup - -%build -make configure -make -make opt - -%install -make install - -%files -%doc CHANGES COPYING README doc - -/usr/lib/ocaml/lablgtk/gBin.cmi -/usr/lib/ocaml/lablgtk/gBin.ml -/usr/lib/ocaml/lablgtk/gBin.mli -/usr/lib/ocaml/lablgtk/gButton.cmi -/usr/lib/ocaml/lablgtk/gButton.ml -/usr/lib/ocaml/lablgtk/gButton.mli -/usr/lib/ocaml/lablgtk/gContainer.cmi -/usr/lib/ocaml/lablgtk/gContainer.ml -/usr/lib/ocaml/lablgtk/gContainer.mli -/usr/lib/ocaml/lablgtk/gData.cmi -/usr/lib/ocaml/lablgtk/gData.ml -/usr/lib/ocaml/lablgtk/gData.mli -/usr/lib/ocaml/lablgtk/gDraw.cmi -/usr/lib/ocaml/lablgtk/gDraw.ml -/usr/lib/ocaml/lablgtk/gDraw.mli -/usr/lib/ocaml/lablgtk/gEdit.cmi -/usr/lib/ocaml/lablgtk/gEdit.ml -/usr/lib/ocaml/lablgtk/gEdit.mli -/usr/lib/ocaml/lablgtk/gList.cmi -/usr/lib/ocaml/lablgtk/gList.ml -/usr/lib/ocaml/lablgtk/gList.mli -/usr/lib/ocaml/lablgtk/gMain.cmi -/usr/lib/ocaml/lablgtk/gMain.ml -/usr/lib/ocaml/lablgtk/gMenu.cmi -/usr/lib/ocaml/lablgtk/gMenu.ml -/usr/lib/ocaml/lablgtk/gMenu.mli -/usr/lib/ocaml/lablgtk/gMisc.cmi -/usr/lib/ocaml/lablgtk/gMisc.ml -/usr/lib/ocaml/lablgtk/gMisc.mli -/usr/lib/ocaml/lablgtk/gObj.cmi -/usr/lib/ocaml/lablgtk/gObj.ml -/usr/lib/ocaml/lablgtk/gObj.mli -/usr/lib/ocaml/lablgtk/gPack.cmi -/usr/lib/ocaml/lablgtk/gPack.ml -/usr/lib/ocaml/lablgtk/gPack.mli -/usr/lib/ocaml/lablgtk/gRange.cmi -/usr/lib/ocaml/lablgtk/gRange.ml -/usr/lib/ocaml/lablgtk/gRange.mli -/usr/lib/ocaml/lablgtk/gTree.cmi -/usr/lib/ocaml/lablgtk/gTree.ml -/usr/lib/ocaml/lablgtk/gTree.mli -/usr/lib/ocaml/lablgtk/gUtil.cmi -/usr/lib/ocaml/lablgtk/gUtil.ml -/usr/lib/ocaml/lablgtk/gUtil.mli -/usr/lib/ocaml/lablgtk/gWindow.cmi -/usr/lib/ocaml/lablgtk/gWindow.ml -/usr/lib/ocaml/lablgtk/gWindow.mli -/usr/lib/ocaml/lablgtk/gaux.cmi -/usr/lib/ocaml/lablgtk/gaux.ml -/usr/lib/ocaml/lablgtk/gdk.cmi -/usr/lib/ocaml/lablgtk/gdk.ml -/usr/lib/ocaml/lablgtk/gdk.mli -/usr/lib/ocaml/lablgtk/gdkEvent.cmi -/usr/lib/ocaml/lablgtk/gdkEvent.ml -/usr/lib/ocaml/lablgtk/gdkKeysyms.cmi -/usr/lib/ocaml/lablgtk/gdkKeysyms.ml -/usr/lib/ocaml/lablgtk/gdk_tags.h -/usr/lib/ocaml/lablgtk/glGtk.mli -/usr/lib/ocaml/lablgtk/glib.cmi -/usr/lib/ocaml/lablgtk/glib.ml -/usr/lib/ocaml/lablgtk/gpointer.cmi -/usr/lib/ocaml/lablgtk/gpointer.ml -/usr/lib/ocaml/lablgtk/gtk.cmi -/usr/lib/ocaml/lablgtk/gtk.ml -/usr/lib/ocaml/lablgtk/gtkArgv.cmi -/usr/lib/ocaml/lablgtk/gtkArgv.ml -/usr/lib/ocaml/lablgtk/gtkBase.cmi -/usr/lib/ocaml/lablgtk/gtkBase.ml -/usr/lib/ocaml/lablgtk/gtkBin.cmi -/usr/lib/ocaml/lablgtk/gtkBin.ml -/usr/lib/ocaml/lablgtk/gtkButton.cmi -/usr/lib/ocaml/lablgtk/gtkButton.ml -/usr/lib/ocaml/lablgtk/gtkData.cmi -/usr/lib/ocaml/lablgtk/gtkData.ml -/usr/lib/ocaml/lablgtk/gtkEdit.cmi -/usr/lib/ocaml/lablgtk/gtkEdit.ml -/usr/lib/ocaml/lablgtk/gtkInit.cmi -/usr/lib/ocaml/lablgtk/gtkInit.cmo -/usr/lib/ocaml/lablgtk/gtkInit.cmx -/usr/lib/ocaml/lablgtk/gtkInit.ml -/usr/lib/ocaml/lablgtk/gtkInit.o -/usr/lib/ocaml/lablgtk/gtkList.cmi -/usr/lib/ocaml/lablgtk/gtkList.ml -/usr/lib/ocaml/lablgtk/gtkMain.cmi -/usr/lib/ocaml/lablgtk/gtkMain.ml -/usr/lib/ocaml/lablgtk/gtkMenu.cmi -/usr/lib/ocaml/lablgtk/gtkMenu.ml -/usr/lib/ocaml/lablgtk/gtkMisc.cmi -/usr/lib/ocaml/lablgtk/gtkMisc.ml -/usr/lib/ocaml/lablgtk/gtkNew.cmi -/usr/lib/ocaml/lablgtk/gtkNew.ml -/usr/lib/ocaml/lablgtk/gtkPack.cmi -/usr/lib/ocaml/lablgtk/gtkPack.ml -/usr/lib/ocaml/lablgtk/gtkRange.cmi -/usr/lib/ocaml/lablgtk/gtkRange.ml -/usr/lib/ocaml/lablgtk/gtkSignal.cmi -/usr/lib/ocaml/lablgtk/gtkSignal.ml -/usr/lib/ocaml/lablgtk/gtkSignal.mli -/usr/lib/ocaml/lablgtk/gtkThInit.cmi -/usr/lib/ocaml/lablgtk/gtkThInit.cmo -/usr/lib/ocaml/lablgtk/gtkThInit.ml -/usr/lib/ocaml/lablgtk/gtkThread.cmi -/usr/lib/ocaml/lablgtk/gtkThread.cmo -/usr/lib/ocaml/lablgtk/gtkThread.ml -/usr/lib/ocaml/lablgtk/gtkTree.cmi -/usr/lib/ocaml/lablgtk/gtkTree.ml -/usr/lib/ocaml/lablgtk/gtkWindow.cmi -/usr/lib/ocaml/lablgtk/gtkWindow.ml -/usr/lib/ocaml/lablgtk/gtk_tags.h -/usr/lib/ocaml/lablgtk/lablgtk.a -/usr/lib/ocaml/lablgtk/lablgtk.cma -/usr/lib/ocaml/lablgtk/lablgtk.cmxa -/usr/lib/ocaml/lablgtk/lablgtktop -/usr/lib/ocaml/lablgtk/lablgtktop_t -/usr/lib/ocaml/lablgtk/liblablgtk.a -/usr/lib/ocaml/lablgtk/ml_gdk.h -/usr/lib/ocaml/lablgtk/ml_glib.h -/usr/lib/ocaml/lablgtk/ml_gtk.h -/usr/lib/ocaml/lablgtk/wrappers.h diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0.tar.gz b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0.tar.gz deleted file mode 100644 index dbb907aba49fa8879069f440d49f47f554bc8825..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 407998 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

    ;n$*Z0@D|7wCNzyt{a4fb%a?pbn(WH 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

    x09C4z`GQ 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

    Bl{Ri{yU&4uA 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 z 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�{M70+Z+ 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 aIlbxfy~+Rom2^Q6QjkDY2pBd7*#7|d)xenm diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/.cvsignore b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/.cvsignore deleted file mode 100644 index 0ea779d00..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/.cvsignore +++ /dev/null @@ -1,10 +0,0 @@ -.depend -config.make -varcc -lablgtk -lablgtktop -lablgtktop_t -lablgtkrun -*_tags.c -*_tags.h - diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/CHANGES b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/CHANGES deleted file mode 100644 index 5b6669cc5..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/CHANGES +++ /dev/null @@ -1,365 +0,0 @@ -$Id$ - -2000.11.29 - * remove unison port, since unison already works with this snapshot - -2000.11.16 - * internal change: switch from var2def/var2conv to varcc, - and split ml_gtk.c in smaller files - -2000.8.29 - * bugs in color selection reported by Nicolas George - * changed the license - -2000.8.21 - * correct GtkStyle.set_font bug reported by Patrick Doane - -2000.7.27 - * changed GUtil.signal and GUtil.variable for better usability - * suppressed obsolete color settings in tooltips - -2000.6.19 - * patch by Michael Welsh for Gdk regions - -2000.6.15 - * add CList.set_cell_style/set_row_style - * change set_usize/set_uposition into set_geometry - * return an option rather than raise an exception for null pointers - * map empty strings to NULL when meaningful - * Gdk.Font.get_type/ascent/descent - -2000.6.14 - * add GDraw.optcolor for functions with a default (Jerome suggested) - -2000.6.8 - * apply Jerome Vouillon's patch - * changes in GtkSignal and GtkArgv.ml - -2000.6.7 - * create #misc#connect for widget generic signals - -2000.6.6 - * move notebook from GMisc to GPack - * #connect#event, #add_event, #misc#event, #misc#set_events_extension - transferred to #event su-bobject. - * #connect#drag -> #drag#connect. - * #get_type, #connect#disconnect, #connect#stop_emit transferred to #misc. - -2000.5.25 - * split misc.ml into gaux.ml and gpointer.ml - -2000.5.23 - * add GMisc.notebook#get_{tab,menu}_label. Rename nth_page to get_nth_page. - * modified ML signals in GUtil, to allow signals without widget. - -2000.5.22 - * Incompatible!: Change default for ~expand in Box.pack, - Pack.build_options, Table.build_options. Now defaults to false/`NONE. - This means that all options default to false/`NONE, except ~show - (true for all widgets except windows) and ~fill (always true but - effect controlled by ~expand). - * add GtkArgv.get_nativeint and GtkArgv.set_nativeint. - * make offset and length optional in GtkArgv.string_at_pointer. - -2000.5.10 - * rename GtkFrame to GtkBin and GFrame to GBin - * move socket to GBin - -2000.5.9 - * add arrow and image classes to GMisc - * add list and set_item_string methods to GEdit.combo - * add socket and plug classes to GContainer and GWindow - * two new examples: combo.ml and socket.ml - -2000.4.28 - * add GUtil.variable - -2000.4.27 - * add GtkXmHTML widget - -2000.4.26 - * release 1.00 - -2000.4.24 - * merge in changes for ocaml 3.00: label and syntax changes, autolink - * added better visual and colormap handling to Gdk - * GdkObj renamed to GDraw, GtkPixmap moved to GMisc - * Initialize Gtk in gtkInit.cmo/cmx, start a thread in gtkInitThread.cmo. - These are only included in toplevels, link them explicitely or call - GMain.Main.init and GtkThread.start otherwise. - * install to caml standard library - * many other forgotten changes... - -2000.3.02 - * move locale setting inside GtkMain.init, since it requires an - X display - -2000.2.24 - * add checks in add methods, to avoid critical errors - -2000.2.23 - * add dcalendar.ml (submitted by Ken Wakita) and csview.ml - * correct bug in GdkObj.pixmap#line - -1999.12.19 - * release lablGTK beta2 - -1999.12.16 - * upgraded unison to version 1.169 - * radio groups are of type {radio_menu_item,radio_button} obj option, - otherwise you could not use them several times - -1999.12.13 - * added GtkEdit::{insert_text,delete_text} signals - * better syntax highlighting and ergonomy in the browser's shell - -1999.11... - * switched to Objective Caml 3 - * constructors are no longer classes, but simple functions - -1999.10.29 - * changed GtkArgv.get_{string,pointer,object} to return option types - -1999.10.27 - * added radtest/CHANGES for cooperative editing on radtest - -1999.10.21 - * added a UI for unison - (ask bcpierce@saul.cis.upenn.edu about how to get unison) - -1999.10.20 - * corrected CList signals - * moved initialization out of the library, in gtkInit.cmo - -1999.10.15 - * release lablGTK beta1 - -1999.10.13 - * improved gtkThread.ml (no timer) - * modify Sys.argv in place (gtkMain.ml) - * add set_row_data and get_row_data for GtkCList - -1999.10.11 - * bugfixes in Makefile, radtest and lv - -1999.10.6 - * added Gdk.X.flush and Gdk.X.beep - * Gdk.X.flush is exported in GtkMain.Main - -1999.9.9 - * added font selection dialog - -1999.8.25 - * re-added connect#draw - -1999.8.10 - * reduced the number of methods in widget - * moved disconnect and stop_emit to object_signals - * moved ?:after to each signal - * more functions in applications/browser - -1999.8.9 - * Major change: created one set_param method by parameter, - rather than grouping them and using options. - You can get previous versions with tag "changing_set" - * corrected examples, radtest and browser for these changes - * a bit of clean-up in radtest (treew.ml and Makefile) - -1999.8.5 - * corrected a bad bug with indirected pointers in caml heap - -1999.7.15 - * add GdkKeysyms for exotic keysyms - -1999.7.14 - * moved Truecolor inside Gdk - * added COPYING - * prepared for release - -1999.7.12 - * clean up drag-and-drop - -1999.7.9 - * corrected bug in Container.children - * added ML signal support in GUtil - -1999.7.6 - * added DnD, improved radtest (Hubert) - * small corrections (Jacques) - -1999.7.1 - * added some gdk functions related window and ximage - * also added applications/lv, "labl image viewer" with - the camlimage library. - (JPF) - -1999.7.1 - * added applications/lablglade (Koji) - -1999.6.28 - * added applications/radtest (Hubert) - -1999.6.23 - * improved variant conversions for space. - -1999.6.22 - * updated olabl.patch. With this new version you can access fields - of records without opening modules. You can also use several times - the same label in one module. - * examples/GL/morph3d.ml uses it. - -1999.6.21 - * moved event functions to GdkEvent - -1999.6.20 - * new example: radtest.ml (Hubert) - -1999.6.18 - * added GL extension - -1999.6.15 - * grouped set methods into set_ - * added width and height option to all classes - * windows not shown are automatically destroyed by the GC - -1999.6.14 - * added GPack.layout, GPack.packer, GPack.paned, GMisc.notebook, - GRange.scale, GMisc.calendar - * added 3 examples - * #add_events only available on windowed widgets - -1999.6.11 - * added CList widget in GList module, and examples/clist.ml - * improved pixmap abstraction in GdkObj / GPix - -1999.6.10 - * suppressed almost all raw pointers from the code. Pointers are now - either boxed (second field of an abstract block) or marked (lowest - bit set to 1). - -1999.6.9 - * added GtkBase.Object.get_id and GObj.gtkobj#get_id to get an - unique identifier to gtk objects. Nice for hash-tables, etc... - * GUtil.memo is such an hash-table, allowing you to recover an - object's wrapper. - * added a show option to all classes, commanding whether the widget - should be shown immediately. It is by default true on all widgets - except in module GWindow. - * moved non-OO examples to examples/old. Do "cvs update -d old" to - get them. - * changes in Gdk/GtkData/GObj about styles. - -1999.6.8 - * updated olabl.patch - -1999.6.7 - * split gtk.ml into gtk*.ml - -1999.6.5 - * grouped Container focus operations in a "focus" subwidget - -1999.6.4 - * slightly reorganized widget grouping - -1999.6.3 - * disabled gtk_caller - * subtle hack to have GTree get the right interface - * switched completely to the new widget scheme (including examples) - * added olabl.patch to apply to olabl-2.02 to compile new sources - -1999.6.2 - * integrated changes from Hubert in Gtk, GtkObj and testgtk.ml - * added G* modules to replace GtkObj. "make lablgtk2" for it - -1999.6.1 - * added experimental GtkMenu for a cleaner approach to OO (Jacques) - -1999.5.31 - * GtkObj: list, tree and menu_shell inherit from item_container (Jacques) - * Argv.get_{string,pointer,object} may raise Null_pointer (Jacques) - * Support for creating new widgets (Hubert) - -1999.5.28 - * a few stylistic corrections - * added Packer in gtk.ml - -1999.5.27 - * new Gtk.Main.main Gtk.Main.quit and GtkThread.main (for modal windows) - * added x: and y: to Window.setter - * new methods: object#get_type widget#misc#lock_accelerators - widget#misc#visible widget#misc#parent container#set_focus#vadjustment - container#set_focus#hadjustment (could be container#set_focus#adjustment with a dir param) - window#set_modal window#set_position window#set_default_size - window#set_transient_for - menu#set_accel_group - * new classes: handle_box_skel handle_box_signals handle_box - bbox color_selection color_selection_dialog toolbar - and the corresponding modules in gtk.ml - new class type: is_window and method as_window - * new param tearoff: in new_menu_item - new param x: and y: modal: in Window.setter - * Widget.event and Widget.activate return bool - * new example: examples/testgtk.ml and test.xpm - (Hubert) - -1999.5.25 - * upgraded to gtk+-1.2.3 (all examples work) - * suppressed deprecated function calls and corrected examples - * added a patch to use toplevel threads in olabl-2.02 - -1998.12.13 - * upgraded to olabl-2.01 - -1998.12.9 - * replicated Main, Timeout and Grab to GtkObj (no need to open Gtk anymore) - * moved some non standard classes to GtkExt - -1998.12.8 - * added the first application, xxaplay, Playstation audio track - player for linux. (How architecture specific!) (Furuse) - -1998.12.8 - * more widgets in GtkObj - * refined memory management - * all variants in upper case - -1998.12.7 - * after deeper thought, re-introduced the connect sub-object - * simplified GtkObj: use simple inheritance and allow easy subtyping - * updated olabl.diffs for bugs in class functions parsing and printing - * add ThreadObj for concurrent object programming - (Jacques) - -1998.12.3 - * pousse.ml is now a reversi game (idea for strategy ?) - * solved startup bug (a value checker for ocaml is now available) - (Jacques) - -1998.12.2 - * added GdkObj for high level drawing primitives (Jacques) - -1998.11.30 - * removed cast checking for NULL valued widgets (ml_gtk.[ch]) - * module Arg is renamed as GtkArg because of the name corrision with - the module Arg in the standard library - * Makefile : native code compilation added - (Furuse) - -1998.11.29 - * renamed widget_ops sub-object to misc - * various improvements of set functions - (Jacques) - -1998.11.28 - * switched to object-oriented model. GtkObj is now the standard way - to access the library, but not all objects are ready (see README) - * removed inheritance in gtk.ml - (Jacques) - -1998.11.24 - * added inheritance in gtk.ml - -1998.11.22 - * added gtkObj.ml and examples/*_obj.ml - * various modifications in gtk.ml - diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/COPYING b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/COPYING deleted file mode 100644 index d417b8b7e..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/COPYING +++ /dev/null @@ -1,28 +0,0 @@ -This library is made available under the LGPL. -You should have got a copy of the LGPL with Objective Caml. -The LGPL applies to all the files in this directory, but not in -subdirectories. - -For the examples subdirectory, there is no specific licensing policy, -but you may freely take inspiration from the code, and copy parts of -it in your application. - -For the applications subdirectory, stricter rules apply: - -* You are free to do anything you want with this code as long as it is - for personal use. - -* Redistribution can only be "as is". Binary distribution and bug - fixes are allowed, but you cannot extensively modify the code - without asking the authors. - -The authors may choose to remove any of the above restrictions on a -per request basis. - -Authors: - Jacques Garrigue - Hubert Fauque - Jun Furuse - Koji Kagawa - -$Id$ \ No newline at end of file diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/Makefile b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/Makefile deleted file mode 100644 index a0ac04f33..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/Makefile +++ /dev/null @@ -1,187 +0,0 @@ -# $Id$ -# Makefile for lablgtk. - -TARGETS = varcc lablgtktop lablgtktop_t lablgtkrun lablgtk - -all: $(TARGETS) - -opt: lablgtkopt - -configure: - @rm -f config.make - @$(MAKE) --no-print-directory -f configure.mk - -depend: - @rm -f .depend - @$(MAKE) --no-print-directory -f configure.mk .depend - -.depend config.make: - @$(MAKE) --no-print-directory -f configure.mk - -COMPILER = $(CAMLC) $(MLFLAGS) -w s -labels -c -LINKER = $(CAMLC) $(MLFLAGS) -COMPOPT = $(CAMLOPT) $(MLFLAGS) -w s -labels -c -LINKOPT = $(CAMLOPT) $(MLFLAGS) -TOPLEVEL = ocamlmktop $(MLFLAGS) - -include config.make - -INSTALLDIR = $(LIBDIR)/lablgtk -LABLGLDIR = $(LIBDIR)/lablGL - -MLLIBS = lablgtk.cma -CLIBS = liblablgtk.a -MLLINK = unix.cma str.cma - -ifdef DEBUG -CFLAGS = -g $(GTKCFLAGS) -MLLINK += -cclib -lcamlrund -MLFLAGS = -g -else -CFLAGS = -O -DGTK_NO_CHECK_CASTS -DGTK_DISABLE_COMPAT_H $(GTKCFLAGS) -endif - -THFLAGS = -thread -THLINK = unix.cma threads.cma - -ifdef USE_CC -CCOMPILER = $(CC) -c -I$(LIBDIR) $(CFLAGS) -else -CCOMPILER = ocamlc -c -ccopt "$(CFLAGS)" -endif - -ifdef USE_GL -MLFLAGS += -I $(LABLGLDIR) -MLLINK += lablgl.cma -MLLIBS += lablgtkgl.cma -CLIBS += liblablgtkgl.a -GLLINK = -cclib -llablgtkgl -cclib -lgtkgl -GLMLOBJS = glGtk.cmo -GLCOBJS = ml_gtkgl.o - -endif - -ifdef USE_GNOME -MLLIBS += lablgnome.cma -CLIBS += liblablgnome.a -GNOMEMLOBJS = gtkXmHTML.cmo gHtml.cmo -GNOMECOBJS = ml_gtkxmhtml.o -endif - -# Rules -.SUFFIXES: .ml .mli .cmo .cmi .cmx .c .o .var .h .opt .def -.c.o: - $(CCOMPILER) $< -.ml.cmo: - $(COMPILER) $< -.mli.cmi: - $(COMPILER) $< -.ml.cmx: - $(COMPOPT) $< -.var.h: - ./varcc $< - -# Targets -GTKOBJS = ml_gtk.o ml_gtkbin.o ml_gtkbutton.o ml_gtkedit.o ml_gtklist.o \ - ml_gtkmenu.o ml_gtkmisc.o ml_gtknew.o ml_gtkpack.o ml_gtkrange.o \ - ml_gtktree.o -COBJS = ml_gdk.o ml_glib.o wrappers.o $(GTKOBJS) -MLOBJS = gaux.cmo gpointer.cmo glib.cmo gdk.cmo gdkEvent.cmo gdkKeysyms.cmo \ - gtk.cmo gtkArgv.cmo gtkSignal.cmo \ - gtkData.cmo gtkBase.cmo gtkPack.cmo gtkButton.cmo \ - gtkMenu.cmo gtkMisc.cmo gtkWindow.cmo gtkTree.cmo gtkList.cmo \ - gtkBin.cmo gtkEdit.cmo gtkRange.cmo gtkMain.cmo gtkNew.cmo \ - gDraw.cmo \ - gObj.cmo gMain.cmo gData.cmo gContainer.cmo gPack.cmo gButton.cmo \ - gMenu.cmo gMisc.cmo gWindow.cmo gTree.cmo gList.cmo gBin.cmo \ - gEdit.cmo gRange.cmo gUtil.cmo -THOBJS = gtkThread.cmo -INITOBJS = gtkInit.cmo -THINITOBJS = gtkThInit.cmo -ALLOBJS = $(MLOBJS) $(GLMLOBJS) $(GNOMEMLOBJS) $(THOBJS) \ - $(INITOBJS) $(THINITOBJS) - -lablgtktop: $(CLIBS) $(MLLIBS) $(INITOBJS) - $(TOPLEVEL) -o $@ $(MLLINK) -ccopt -L. $(MLLIBS) $(INITOBJS) - -lablgtktop_t: $(CLIBS) $(MLLIBS) $(THOBJS) $(INITOBJS) $(THINITOBJS) - $(TOPLEVEL) $(THFLAGS) -o $@ $(THLINK) $(MLLINK) \ - -ccopt -L. $(MLLIBS) $(THOBJS) $(INITOBJS) $(THINITOBJS) - -lablgtk: Makefile config.make lablgtk.in - sed -e "s|@INSTALLDIR@|$(INSTALLDIR)|g" \ - -e "s|@LABLGLDIR@|$(LABLGLDIR)|g" \ - -e "s|@LIBDIR@|$(LIBDIR)|g" \ - < lablgtk.in > $@ - chmod 755 $@ - -lablgtkrun: $(CLIBS) $(MLLIBS) - $(LINKER) -o $@ -make-runtime $(MLLINK) -ccopt -L. $(MLLIBS) - -lablgtkopt: $(CLIBS) $(MLLIBS:.cma=.cmxa) $(INITOBJS:.cmo=.cmx) \ - $(THOBJS:.cmo=.cmx) - -install: - if test -d $(INSTALLDIR); then : ; else mkdir -p $(INSTALLDIR); fi - cp $(ALLOBJS:.cmo=.cmi) $(INSTALLDIR) - cp *.mli $(INSTALLDIR) - cp *.h $(INSTALLDIR) - cp $(ALLOBJS:.cmo=.ml) $(INSTALLDIR) - cp $(MLLIBS) $(THOBJS) $(INITOBJS) $(THINITOBJS) $(INSTALLDIR) - cp $(CLIBS) $(INSTALLDIR) - cp lablgtktop lablgtktop_t $(INSTALLDIR) - cp lablgtk lablgtkrun $(BINDIR) - if test -f lablgtk.cmxa; then \ - cp $(MLLIBS:.cma=.cmxa) $(MLLIBS:.cma=.a) \ - $(INITOBJS:.cmo=.cmx) $(INITOBJS:.cmo=.o) $(INSTALLDIR); fi - if test -f gtkThread.cmx; then \ - cp $(THOBJS:.cmo=.cmx) $(THOBJS:.cmo=.o) $(INSTALLDIR); fi - -liblablgtk.a: $(COBJS) - ar rc $@ $(COBJS) - $(RANLIB) $@ -lablgtk.cma: $(MLOBJS) - $(LINKER) -a -custom -o $@ $(MLOBJS) \ - -cclib -llablgtk $(GTKLIBS) -lablgtk.cmxa: $(MLOBJS:.cmo=.cmx) - $(LINKOPT) -a -o $@ $(MLOBJS:.cmo=.cmx) \ - -cclib -llablgtk $(GTKLIBS) - -liblablgtkgl.a: $(GLCOBJS) - ar rc $@ $(GLCOBJS) - $(RANLIB) $@ -lablgtkgl.cma: $(GLMLOBJS) - $(LINKER) -a -custom -o $@ $(GLLINK) $(GLMLOBJS) -lablgtkgl.cmxa: $(GLMLOBJS:.cmo=.cmx) - $(LINKOPT) -a -o $@ $(GLLINK) $(GLMLOBJS:.cmo=.cmx) - -liblablgnome.a: $(GNOMECOBJS) - ar rc $@ $(GNOMECOBJS) - $(RANLIB) $@ -lablgnome.cma: $(GNOMEMLOBJS) - $(LINKER) -a -custom -o $@ $(GNOMEMLOBJS) \ - -cclib -llablgnome $(GNOMELIBS) -lablgnome.cmxa: $(GNOMEMLOBJS:.cmo=.cmx) - $(LINKOPT) -a -o $@ $(GNOMEMLOBJS:.cmo=.cmx) \ - -cclib -llablgnome $(GNOMELIBS) - -gtkThread.cmo: gtkThread.ml - $(COMPILER) $(THFLAGS) gtkThread.ml - -gtkThread.cmx: gtkThread.ml - if test -f $(LIBDIR)/libthreadsnat.a; then \ - $(COMPOPT) $(THFLAGS) gtkThread.ml; fi - -varcc: varcc.cmo - $(LINKER) -o $@ varcc.cmo - rm -f *_tags.h *_tags.c - -clean: - rm -f *.cm* *.o *.a *_tags.[ch] $(TARGETS) - -$(GTKOBJS): gtk_tags.h ml_gtk.h ml_gdk.h wrappers.h -ml_gdk.o: gdk_tags.h ml_gdk.h wrappers.h -ml_gtkgl.o: gtkgl_tags.h ml_gtk.h ml_gdk.h wrappers.h -ml_gtkxmhtml.o: gtkxmhtml_tags.h ml_gtk.h ml_gdk.h wrappers.h - -include .depend diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/Makefile.nt b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/Makefile.nt deleted file mode 100644 index bdf5b6cfd..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/Makefile.nt +++ /dev/null @@ -1,147 +0,0 @@ -# $Id$ -# Makefile for lablgtk. - -EXE = .exe -TARGETS = var2conv var2def lablgtk$(EXE) lablgtk_t$(EXE) \ - lablgtkrun$(EXE) config.make - -all: $(TARGETS) - -opt: lablgtkopt - -CAMLC = ocamlc -CAMLOPT = ocamlopt -COMPILER = $(CAMLC) $(MLFLAGS) -w s -labels -c -LINKER = $(CAMLC) $(MLFLAGS) -COMPOPT = $(CAMLOPT) $(MLFLAGS) -w s -labels -c -LINKOPT = $(CAMLOPT) $(MLFLAGS) - -TOPLEVEL = ocamlmktop $(MLFLAGS) -### How to invoke the librarian -MKLIB=lib /nologo /debugtype:CV /out: - -!include config.make.nt - -INSTALLDIR = $(LIBDIR:/=\)\lablgtk -BINDIR = $(LIBDIR:/=\)\..\bin -LABLGLDIR = $(LIBDIR)/lablGL - -CFLAGS = -O -DGTK_NO_CHECK_CASTS -DGTK_DISABLE_COMPAT_H $(GTKCFLAGS) -LDFLAGS = $(GTKLIBS) - -THFLAGS = -thread -THLIBS = unix.cma threads.cma - -!if $(USE_CC) == 1 -CCOMPILER = $(CC) -c -I$(LIBDIR) $(CFLAGS) -!else -CCOMPILER = ocamlc -c -ccopt "$(CFLAGS)" -!endif - -!if $(USE_GL) == 1 -MLFLAGS = $(MLFLAGS) -I $(LIBDIR)/lablGL -GLLINK = -I $(LABLGLDIR) lablgl.cma -cclib -lgtkgl -GLMLOBJS = glGtk.cmo -GLCOBJS = ml_gtkgl.o -!endif - -# Rules -.SUFFIXES: .ml .mli .cmo .cmi .cmx .c .obj .var .h .opt .def -.c.obj: - $(CCOMPILER) $< -.ml.cmo: - $(COMPILER) $< -.mli.cmi: - $(COMPILER) $< -.ml.cmx: - $(COMPOPT) $< -.var.h: - ocamlrun ./var2def < $< > $@ -.var.c: - ocamlrun ./var2conv < $< > $@ - -# Targets -COBJS = ml_gtk.obj ml_gdk.obj ml_glib.obj wrappers.obj $(GLCOBJS) -OLDMLOBJS = misc.cmo glib.cmo gdk.cmo gtk.cmo gdkObj.cmo gtkObj.cmo gtkExt.cmo -MLOBJS = misc.cmo glib.cmo gdk.cmo gdkEvent.cmo gdkKeysyms.cmo \ - gtk.cmo gtkArgv.cmo gtkSignal.cmo \ - gtkData.cmo gtkBase.cmo gtkPack.cmo gtkButton.cmo \ - gtkMenu.cmo gtkMisc.cmo gtkWindow.cmo gtkTree.cmo gtkList.cmo \ - gtkFrame.cmo gtkEdit.cmo gtkRange.cmo gtkMain.cmo gtkNew.cmo \ - gDraw.cmo \ - gObj.cmo gMain.cmo gData.cmo gContainer.cmo gPack.cmo gButton.cmo \ - gMenu.cmo gMisc.cmo gWindow.cmo gTree.cmo gList.cmo gFrame.cmo \ - gEdit.cmo gRange.cmo gUtil.cmo $(GLMLOBJS) -THOBJS = gtkThread.cmo threadObj.cmo -INITOBJS = gtkInit.cmo -THINITOBJS = gtkThInit.cmo -ALLOBJS = $(MLOBJS) $(THOBJS) $(INITOBJS) $(THINITOBJS) - -lablgtk$(EXE): liblablgtk.lib lablgtk.cma $(INITOBJS) - $(TOPLEVEL) -custom -o $@ unix.cma str.cma $(GLLINK) \ - lablgtk.cma $(INITOBJS) - -lablgtk_t$(EXE): liblablgtk.lib lablgtk.cma $(THOBJS) $(INITOBJS) $(THINITOBJS) - $(TOPLEVEL) -custom $(THFLAGS) -o $@ $(THLIBS) str.cma $(GLLINK) \ - lablgtk.cma $(THOBJS) $(INITOBJS) $(THINITOBJS) - -lablgtkrun$(EXE): liblablgtk.lib lablgtk.cma - $(LINKER) -o $@ -make-runtime $(GLLINK) lablgtk.cma - -lablgtkopt: liblablgtk.lib lablgtk.cmxa gtkInit.cmx - -install: - if not exist $(INSTALLDIR) mkdir $(INSTALLDIR) - cp $(ALLOBJS:.cmo=.cmi) $(INSTALLDIR) - cp *.mli $(INSTALLDIR) - cp $(ALLOBJS:.cmo=.ml) $(INSTALLDIR) - cp lablgtk.cma $(THOBJS) $(INITOBJS) $(THINITOBJS) $(INSTALLDIR) - cp liblablgtk.lib $(INSTALLDIR) - cp lablgtk$(EXE) lablgtk_t$(EXE) lablgtkrun$(EXE) $(BINDIR) - if exist lablgtk.cmxa cp lablgtk.cmxa lablgtk.lib gtkInit.cmx gtkInit.obj $(INSTALLDIR) - -liblablgtk.lib: $(COBJS) - $(MKLIB)$@ $(COBJS) - -lablgtk.cma: $(MLOBJS) - $(LINKER) -a -custom -o $@ $(MLOBJS) \ - -cclib -llablgtk $(GTKLIBS) - -lablgtk.cmxa: $(MLOBJS:.cmo=.cmx) - $(LINKOPT) -a -o $@ $(MLOBJS:.cmo=.cmx) \ - -cclib -llablgtk $(GTKLIBS) - -gtkThread.cmo: gtkThread.ml - $(COMPILER) $(THFLAGS) gtkThread.ml - -threadObj.cmo: threadObj.ml - $(COMPILER) $(THFLAGS) threadObj.ml - -gtkThread.cmx: gtkThread.ml - $(COMPOPT) $(THFLAGS) gtkThread.ml - -threadObj.cmx: threadObj.ml - $(COMPOPT) $(THFLAGS) threadObj.ml - -var2conv: var2conv.cmo - $(LINKER) -o $@ var2conv.cmo - rm -f *_tags.c - -var2def: var2def.cmo - $(LINKER) -o $@ var2def.cmo - rm -f *_tags.h - -clean: - rm -f *.cm* *.obj *.lib *_tags.[ch] $(TARGETS) - -config.make: config.make.nt - cp config.make.nt config.make - -depend .depend: - ocamldep *.ml *.mli > .depend - -ml_gtk.obj: gtk_tags.c gtk_tags.h ml_gtk.h ml_gdk.h wrappers.h -ml_gdk.obj: gdk_tags.c gdk_tags.h ml_gdk.h wrappers.h -ml_gtkgl.obj: gtkgl_tags.c gtkgl_tags.h ml_gtk.h ml_gdk.h wrappers.h - -!include .depend diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/README b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/README deleted file mode 100644 index 78c4ed3da..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/README +++ /dev/null @@ -1,239 +0,0 @@ - - LablGTK : an interface to the GIMP Tool Kit - - -Needed: - ocaml-3.00 - gtk-1.2.x - gmake (there is no standard for conditionals) - -How to compile: - - You should normally not need to modify Makefiles. - First type "make configure ". - Options are - USE_CC=1 to use $(CC) rather than gcc - USE_GL=1 to compile with OpenGL support (see lower) - USE_GNOME=1 to compile GtkXmHTML support (requires gnome) - - Then just type "make" to build the library and toplevels. - - On FreeBSD, you need to link with libxpg4.so for Japanese - output. - -Contents: - - gdk.ml low-level interface to the General Drawing Kit - gtk.ml low-level interface to the GIMP Tool Kit - gtkThread.ml main loop for threaded version - g[A-Z]*.ml object-oriented interface to GTK - gdkObj.ml object-oriented interface to GDK - - lablgtk toplevel - - examples/*.ml various examples - applications/* applications using the library - radtest a very experimental RAD for lablgtk - (by Hubert Fauque) - browser the begin of a port of OCamlBrowser - (by Jacques Garrigue) - unison a frontend for the Unison file synchronizer - see the README for details. - -Upgrading from lablgtk-1.00: - There are a few incompatibilities between this version and the - previous release. We do not describe them all, since usually a type - error message will inform you. - * all signals are no longer under #connect. #connect#event changed - to #event#connect, and some signals are under #misc#connect or - #grab#connect. See lower for a description of the new widget - structure. - * some defaults changed. In particular GPack.box#pack have now all - its parameter defaulting to false rather than true. See lower for - the new default policy. Beware that this does not cause type - errors, just changes in the aspect. - -How to run the examples: - In the examples directory just type: - lablgtk -labels examples/???.ml - - Before installing lablgtk you have to be more explicit: - ../lablgtktop -labels -w s -I .. ???.ml - -How to link them: - lablgtktop contains an extra module GtkInit, whose only contents is: - let locale = GtkMain.Main.init () - You must either add this line, or add this module to your link, - before calling any Gtk function. - ocamlc -I CAMLLIB/lablgtk -labels -w s lablgtk.cma gtkInit.cmo ???.ml -o ??? - -How to use the threaded toplevel: - - % lablgtk -thread (or lablgtktop_t before installing) - Objective Caml version 3.00 - - # let w = GWindow.window ~show:true ();; - - You should at once see a window appear. - The GTK main loop is running in a separate thread. Any command - is immediately reflected by the system. - Beware that you cannot switch threads within a callback, that is the - only thread related command you may use in a callback is - Thread.create. On the other hand, all newly created threads will be - run directly by the caml main loop, so they can use all thread - operations. - -Structure of the (raw) Gtk* modules: - - These modules are composed of one submodule for each class. - Signals specific to a widget are in a Signals inner module. - A setter function is defined to give access to set_param functions. - -Structure of the G[A-Z]* modules: - - These modules provide classes to wrap the raw function calls. - Here are the widget classes contained in each module: - - GDraw Gdk pixmaps, etc... - GObj gtkobj, widget, style - GData data, adjustment, tooltips - GContainer container, item_container - GWindow window, dialog, color_selection_dialog, file_selection, plug - GPack box, button_box, table, fixed, layout, packer, paned, notebook - GBin scrolled_window, event_box, handle_box, frame, - aspect_frame, viewport, socket - GButton button, toggle_button, check_button, radio_button, toolbar - GMenu menu_item, tearoff_item, check_menu_item, radio_menu_item, - menu_shell, menu, option_menu, menu_bar, factory - GMisc separator, statusbar, calendar, drawing_area, - misc, arrow, image, pixmap, label, tips_query, - color_selection, font_selection - GTree tree_item, tree - GList list_item, liste, clist - GEdit editable, entry, spin_button, combo, text - GRange progress, progress_bar, range, scale, scrollbar - - While subtyping follows the Gtk widget hierarchy, you cannot always - use width subtyping (i.e. #super is not unifiable with all the - subclasses of super). Still, it works for some classes, like - #widget and #container, and allows subtyping without coercion towards - these classes (cf. #container in pousse.ml for instance). - - Practically, each widget class is composed of: - * a coerce method, returning the object coerced to the type widget. - * an as_widget method, returning the raw Gtk widget used for packing, etc... - * a connect sub-object, allowing one to widget specific - signals (this is what prevents width subtyping in subclasses.) - * a misc sub-object, giving access to miscellanous functionality of - the basic gtkwidget class, and a misc#connect sub-object. - * an event sub-object, for Xevent related functions (only if the widget - has an Xwindow), and an event#connect sub-object. - * a grab sub-object, containing drag and drop functions, - and a grab#connect sub-object. - * widget specific methods. - - Here is a diagram of the structure (- for methods, + for sub-objects) - - coerce : widget - - as_widget : Gtk.widget obj - - destroy : unit -> unit - - ... - + connect : mywidget_signals - | - after - | - signal_name : callback:(... -> ...) -> GtkSignal.id - + misc : misc_ops - | - show, hide, disconnect, ... - | + connect : misc_signals - + event : event_ops - | - add, ... - | + connect : event_signals - + grab : grab_ops - | - ... - | + connect : grab_signals - - You create a widget by [. options ... ()]. - Many optional arguments are admitted. The last two of them, packing: - and show:, allow you respectively to call a function on your newly - created widget, and to decide wether to show it immediately or not. - By default all widgets except toplevel windows (GWindow module) are - shown immediately. - -Default arguments: - For many constructor or method arguments, default values are provided. - Generally, this default value is defined by GTK, and you must refer - to GTK's documentation. - For ML defined defaults, usually default values are either false, 0, None - or `NONE, according to the expected type. - Important exceptions are ~show, which default to true in all widgets - except those in GWindow, and ~fill, which defaults to true or `BOTH. - -Note about unit as method argument: - - O'Caml introduces no distinction between methods having side-effects - and methods simply returning a value. In practice, this is - confusing, and awkward when used as callbacks. For this reason all - methods having noticeable side-effects should take arguments, and - unit if they have no argument. - -Memory management: - - Important efforts have been dedicated to cooperate with Gtk's - reference counting mechanism. As a result you should generally be - able to use Gdk/Gtk data structures without caring about memory - management. They will be freed when nobody points to them any more. - This also means that you do not need to pay too much attention to - whether a data structure is still alive or not. If it is not, you - should get an error rather than a core dump. - The case of Gtk objects deserves special care. Since they are - interactive, we cannot just destroy them when they are no longer - referenced. They have to be explicitely destroyed. If a widget was - added to a container widget, it will automatically be destroyed when - its last container is destroyed. For this reason you need only - destroy toplevel widgets. - -GL extension - - You can use lablgtk in combination with LablGL - - * get and install lablGL 0.94 from - http://wwwfun.kurims.kyoto-u.ac.jp/soft/olabl/lablgl.html - * get and install gtkglarea-1.2.x.tar.gz from - http://www.student.oulu.fi/~jlof/gtkglarea/index.html - * reconfigure: "make configure USE_GL=1" - - You can then use the widget GlGtk.gl_area as an OpenGL window. - Some examples are in examples/GL, but basically any LablGL example - can be easily ported. - -Windows port - - A Win32 port is provided. In order to compile it, you will need to - get and unpack glib-dev-????.zip and gtk+-dev-????.zip from - http://www.gimp.org/~tml/gimp/win32/ - Do not forget to get also extralibs-dev-????.zip, since you will - need some of the DLLs. - - Edit config.make.nt, then, using Visual C++, - nmake -f Makefile.nt - nmake -f Makefile.nt opt (if you have an MS Assembler) - Then install with - nmake -f Makefile.nt install - - Since the link is dynamic you will also need to have in your path: - gnu-intl.dll (extralibs), glib-1.3.dll, module-1.3.dll and - gthread-1.3.dll (glib), gdk-1.3.dll and gtk-1.3.dll (gtk+). - - I checked with the 2000-02-02 version of these libraries. - Currently threads do not seem to work, but otherwise everything - seems OK. In particular, you can run all examples, and build - applications\unison as usual. - -Authors: - Jacques Garrigue - Hubert Fauque - Jun Furuse - Koji Kagawa - -Bug reports: - Jacques Garrigue - -$Id$ diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/browser/.cvsignore b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/browser/.cvsignore deleted file mode 100644 index bc09d7470..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/browser/.cvsignore +++ /dev/null @@ -1,3 +0,0 @@ -olabl-src -browser -.depend \ No newline at end of file diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/browser/Makefile b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/browser/Makefile deleted file mode 100644 index 8822e4738..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/browser/Makefile +++ /dev/null @@ -1,41 +0,0 @@ -# $Id$ -# Makefile for lablgtk. - -all: browser - -CAMLC = ocamlc -CAMLOPT = ocamlopt -COMPILER = $(CAMLC) $(MLFLAGS) -labels -w s -c -LINKER = $(CAMLC) $(MLFLAGS) -COMPOPT = $(CAMLOPT) $(MLFLAGS) -labels -w s -c -LINKOPT = $(CAMLOPT) $(MLFLAGS) - -RANLIB = ranlib - -include ../../config.make - -MLFLAGS = -I ../.. -I ocaml-src/utils -I ocaml-src/parsing - -# Rules -.SUFFIXES: .ml .mli .cmo .cmi .cmx .c .o .var .h .opt .def -.ml.cmo: - $(COMPILER) $< -.mli.cmi: - $(COMPILER) $< -.ml.cmx: - $(COMPOPT) $< - -# Targets -MLOBJS = text.cmo file.cmo lexical.cmo shell.cmo editor.cmo - -browser: $(MLOBJS) - $(LINKER) -o $@ toplevellib.cma str.cma unix.cma \ - lablgtk.cma $(MLOBJS) - -clean: - rm -f *.cm* browser - -.depend: - ocamldep *.ml *.mli > .depend - -include .depend diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/browser/README b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/browser/README deleted file mode 100644 index f2ed1ec2e..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/browser/README +++ /dev/null @@ -1,18 +0,0 @@ - Browser: the beginning of a port of the OCamlBrowser - -Installation: - -* make a link from a directory where the O'Caml distribution is - compiled to ocaml-src - ln -s /path/to/ocaml-3.00 ocaml-src - (actually only the directory parsing needs to be compiled) - -* just type "make" - -Use: - -When you run browser, you just get a customized editor with lexical -coloring. Nothing very fancy. -In the file menu you can open a shell, running olabl as subprocess. - -Jacques Garrigue diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/browser/TODO b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/browser/TODO deleted file mode 100644 index 0c8bb5357..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/browser/TODO +++ /dev/null @@ -1,4 +0,0 @@ -* lexical coloring (done) -* hyperlinks (call signal with position) -* keyboard popup -* protection diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/browser/editor.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/browser/editor.ml deleted file mode 100644 index d4adbfbc7..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/browser/editor.ml +++ /dev/null @@ -1,101 +0,0 @@ -(* $Id$ *) - -open GMain - -class editor ?packing ?show () = - let text = GEdit.text ~editable:true ?packing ?show () in -object (self) - inherit GObj.widget text#as_widget - - val mutable filename = None - - method text = text - - method load_file name = - try - let ic = open_in name in - filename <- Some name; - text#freeze (); - text#delete_text ~start:0 ~stop:text#length; - let buf = String.create 1024 and len = ref 0 in - while len := input ic ~buf ~pos:0 ~len:1024; !len > 0 do - if !len = 1024 then text#insert buf - else text#insert (String.sub buf ~pos:0 ~len:!len) - done; - text#set_point 0; - text#thaw (); - close_in ic - with _ -> () - - method open_file () = File.dialog ~title:"Open" ~callback:self#load_file () - - method save_file () = - File.dialog ~title:"Save" ?filename () ~callback: - begin fun name -> - try - if Sys.file_exists name then Sys.rename ~src:name ~dst:(name ^ "~"); - let oc = open_out name in - output_string oc (text#get_chars ~start:0 ~stop:text#length); - close_out oc - with _ -> prerr_endline "Save failed" - end -end - -open GdkKeysyms - -class editor_window ?(show=false) () = - let window = GWindow.window ~width:500 ~height:300 - ~title:"Program Editor" () in - let vbox = GPack.vbox ~packing:window#add () in - - let menubar = GMenu.menu_bar ~packing:vbox#pack () in - let factory = new GMenu.factory menubar in - let accel_group = factory#accel_group - and file_menu = factory#add_submenu "File" - and edit_menu = factory#add_submenu "Edit" - and comp_menu = factory#add_submenu "Compiler" in - - let hbox = GPack.hbox ~packing:vbox#add () in - let scrollbar = - GRange.scrollbar `VERTICAL ~packing:(hbox#pack ~from:`END) () - and editor = new editor ~packing:hbox#add () in -object (self) - inherit GObj.widget window#as_widget - - method window = window - method editor = editor - method show = window#show - - initializer - window#connect#destroy ~callback:Main.quit; - let factory = new GMenu.factory file_menu ~accel_group in - factory#add_item "Open..." ~key:_O ~callback:editor#open_file; - factory#add_item "Save..." ~key:_S ~callback:editor#save_file; - factory#add_item "Shell" - ~callback:(fun () -> Shell.f ~prog:"ocaml" ~title:"Objective Caml Shell"); - factory#add_separator (); - factory#add_item "Quit" ~key:_Q ~callback:window#destroy; - let factory = new GMenu.factory edit_menu ~accel_group in - factory#add_item "Copy" ~key:_C ~callback:editor#text#copy_clipboard; - factory#add_item "Cut" ~key:_X ~callback:editor#text#cut_clipboard; - factory#add_item "Paste" ~key:_V ~callback:editor#text#paste_clipboard; - factory#add_separator (); - factory#add_check_item "Word wrap" ~active:false - ~callback:editor#text#set_word_wrap; - factory#add_check_item "Read only" ~active:false - ~callback:(fun b -> editor#text#set_editable (not b)); - let factory = new GMenu.factory comp_menu ~accel_group in - factory#add_item "Lex" ~key:_L - ~callback:(fun () -> Lexical.tag editor#text); - window#add_accel_group accel_group; - editor#text#set_vadjustment scrollbar#adjustment; - if show then self#show () -end - -let _ = - Main.init (); - if Array.length Sys.argv >= 2 && Sys.argv.(1) = "-shell" then - Shell.f ~prog:"ocaml" ~title:"Objective Caml Shell" - else - ignore (new editor_window ~show:true ()); - Main.main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/browser/file.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/browser/file.ml deleted file mode 100644 index e9c0cf34f..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/browser/file.ml +++ /dev/null @@ -1,13 +0,0 @@ -(* $Id$ *) - -let dialog ~title ~callback ?filename () = - let sel = - GWindow.file_selection ~title ~modal:true ?filename () in - sel#cancel_button#connect#clicked ~callback:sel#destroy; - sel#ok_button#connect#clicked ~callback: - begin fun () -> - let name = sel#get_filename in - sel#destroy (); - callback name - end; - sel#show () diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/browser/lexical.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/browser/lexical.ml deleted file mode 100644 index 9acb9c060..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/browser/lexical.ml +++ /dev/null @@ -1,155 +0,0 @@ -(* $Id$ *) - -open Parser - -type tags = [`none|`control|`define|`structure|`char|`infix|`label|`uident] - -let colors : (tags * GDraw.color) list Lazy.t = - lazy - (List.map ~f:(fun (tag,col) -> tag, `COLOR (GDraw.color (`NAME col))) - [ `control, "blue"; - `define, "forestgreen"; - `structure, "purple"; - `char, "gray40"; - `infix, "indianred4"; - `label, "brown"; - `uident, "midnightblue"; - `none, "black" ]) - -let tag ?(start=0) ?stop:pend (tw : GEdit.text) = - let pend = Gaux.default tw#length ~opt:pend in - let colors = Lazy.force colors in - tw#freeze (); - let position = tw#position - and text = tw#get_chars ~start ~stop:pend in - let replace ~start:pstart ~stop:pend ~tag = - if pend > pstart then begin - tw#delete_text ~start:(start+pstart) ~stop:(start+pend); - tw#set_point (start+pstart); - tw#insert ~foreground:(List.assoc tag colors) - (String.sub text ~pos:pstart ~len:(pend-pstart)); - end - and next_lf = ref (-1) in - let colorize ~start:rstart ~stop:rend ~tag = - let rstart = ref rstart in - while !rstart < rend do - if !next_lf < !rstart then begin - try next_lf := String.index_from text !rstart '\n' - with Not_found -> next_lf := pend-start - end; - replace ~start:!rstart ~stop:(min !next_lf rend) ~tag; - rstart := !next_lf + 1 - done - in - let buffer = Lexing.from_string text - and last = ref (EOF, 0, 0) - and last_pos = ref 0 in - try - while true do - let token = Lexer.token buffer - and start = Lexing.lexeme_start buffer - and stop = Lexing.lexeme_end buffer in - let tag = - match token with - AMPERAMPER - | AMPERSAND - | BARBAR - | DO | DONE - | DOWNTO - | ELSE - | FOR - | IF - | LAZY - | MATCH - | OR - | THEN - | TO - | TRY - | WHEN - | WHILE - | WITH - -> `control - | AND - | AS - | BAR - | CLASS - | CONSTRAINT - | EXCEPTION - | EXTERNAL - | FUN - | FUNCTION - | FUNCTOR - | IN - | INHERIT - | INITIALIZER - | LET - | METHOD - | MODULE - | MUTABLE - | NEW - | OF - | PARSER - | PRIVATE - | REC - | TYPE - | VAL - | VIRTUAL - -> `define - | BEGIN - | END - | INCLUDE - | OBJECT - | OPEN - | SIG - | STRUCT - -> `structure - | CHAR _ - | STRING _ - -> `char - | BACKQUOTE - | INFIXOP1 _ - | INFIXOP2 _ - | INFIXOP3 _ - | INFIXOP4 _ - | PREFIXOP _ - | QUESTION2 - | SHARP - -> `infix - | LABEL _ - | OPTLABEL _ - | QUESTION - | TILDE - -> `label - | UIDENT _ -> `uident - | LIDENT _ -> - begin match !last with - (QUESTION | TILDE), _, _ -> `label - | _ -> `none - end - | COLON -> - begin match !last with - LIDENT _, lstart, lstop when lstop = start -> - colorize ~tag:`none ~start:!last_pos ~stop:lstart; - colorize ~tag:`label ~start:lstart ~stop; - last_pos := stop; - `none - | _ -> `none - end - | EOF -> raise End_of_file - | _ -> `none - in - if tag <> `none then begin - colorize ~tag:`none ~start:!last_pos ~stop:start; - colorize ~tag ~start ~stop; - last_pos := stop - end; - last := (token, start, stop) - done - with exn -> - colorize ~tag:`none ~start:!last_pos ~stop:(pend-start); - tw#thaw (); - tw#set_position position; - tw#set_point position; - match exn with - End_of_file | Lexer.Error _ -> () - | _ -> raise exn diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/browser/list2.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/browser/list2.ml deleted file mode 100644 index 0d7798a6a..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/browser/list2.ml +++ /dev/null @@ -1,25 +0,0 @@ -(* $Id$ *) - -let rec cut l ~len = - if len <= 0 then [], l else - match l with - a::l -> - let l1, l2 = cut l ~len:(len-1) in - a::l1, l2 - | [] -> - invalid_arg "cut_list" - -let rec chop l ~len = - if l = [] then [] else - let l1, l2 = - try cut_list l ~len - with Invalid_argument _ -> l, [] - in - l1 :: chop l2 ~len - - -let rec iteri_aux ~f:f ~i = function - [] -> () - | a::l -> f ~i a; iteri_aux ~f:f ~i:(i+1) l - -let iteri = iteri_aux ~i:0 diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/browser/shell.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/browser/shell.ml deleted file mode 100644 index fbe0f92a0..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/browser/shell.ml +++ /dev/null @@ -1,255 +0,0 @@ -(* $Id$ *) - -open GdkKeysyms -open Printf - -(* Nice history class. May reuse *) - -class ['a] history () = object - val mutable history = ([] : 'a list) - val mutable count = 0 - method empty = history = [] - method add s = count <- 0; history <- s :: history - method previous = - let s = List.nth history count in - count <- (count + 1) mod List.length history; - s - method next = - let l = List.length history in - count <- (l + count - 1) mod l; - List.nth history ((l + count - 1) mod l) -end - -(* The shell class. Now encapsulated *) - -let protect f x = try f x with _ -> () - -class shell ~prog ~args ~env ?packing ?show () = - let (in2,out1) = Unix.pipe () - and (in1,out2) = Unix.pipe () - and (err1,err2) = Unix.pipe () in - let _ = List.iter ~f:Unix.set_nonblock [out1;in1;err1] in -object (self) - val textw = GEdit.text ~editable:true ?packing ?show () - val pid = Unix.create_process_env - ~prog ~args ~env ~stdin:in2 ~stdout:out2 ~stderr:err2 - val out = Unix.out_channel_of_descr out1 - val h = new history () - val mutable alive = true - val mutable reading = false - val mutable input_start = 0 - method text = textw - method alive = alive - method kill () = - textw#set_editable false; - if alive then begin - alive <- false; - protect close_out out; - List.iter ~f:(protect Unix.close) [in1; err1; in2; out2; err2]; - try - Unix.kill ~pid ~signal:Sys.sigkill; - Unix.waitpid pid ~mode:[]; () - with _ -> () - end - method interrupt () = - if alive then try - reading <- false; - Unix.kill ~pid ~signal:Sys.sigint - with Unix.Unix_error _ -> () - method send s = - if alive then try - output_string out s; - flush out - with Sys_error _ -> () - method private read ~fd ~len = - try - let buf = String.create len in - let len = Unix.read fd ~buf ~pos:0 ~len in - if len > 0 then begin - textw#set_position textw#length; - self#insert (String.sub buf ~pos:0 ~len); - input_start <- textw#position; - end; - len - with Unix.Unix_error _ -> 0 - method history (dir : [`next|`previous]) = - if not h#empty then begin - if reading then begin - textw#delete_text ~start:input_start ~stop:textw#position; - end else begin - reading <- true; - input_start <- textw#position - end; - self#insert (if dir = `previous then h#previous else h#next); - end - val mutable lexing = false - method private lex ~start ~stop:e = - if not lexing && start < e then begin - lexing <- true; - Lexical.tag textw ~start ~stop:e; - lexing <- false - end - method insert ?(lex=true) text = - let start = Text.line_start textw in - textw#insert text; - if lex then self#lex ~start ~stop:(Text.line_end textw) - method private keypress c = - if not reading & c > " " then begin - reading <- true; - input_start <- textw#position - end - method private return () = - if reading then reading <- false - else input_start <- textw#position; - textw#set_position (Text.line_end textw); - let s = textw#get_chars ~start:input_start ~stop:textw#position in - h#add s; - self#send s; - self#send "\n" - method private paste () = - if not reading then begin - reading <- true; - input_start <- textw#position; - end - initializer - textw#event#connect#key_press ~callback: - begin fun ev -> - if GdkEvent.Key.keyval ev = _Return && GdkEvent.Key.state ev = [] - then self#return () - else self#keypress (GdkEvent.Key.string ev); - false - end; - textw#connect#after#insert_text ~callback: - begin fun s ~pos -> - if not lexing then - self#lex ~start:(Text.line_start textw ~pos:(pos - String.length s)) - ~stop:(Text.line_end textw ~pos) - end; - textw#connect#after#delete_text ~callback: - begin fun ~start:pos ~stop -> - if not lexing then - self#lex ~start:(Text.line_start textw ~pos) - ~stop:(Text.line_end textw ~pos) - end; - textw#event#connect#button_press ~callback: - begin fun ev -> - if GdkEvent.Button.button ev = 2 then self#paste (); - false - end; - textw#connect#destroy ~callback:self#kill; - GMain.Timeout.add ~ms:100 ~callback: - begin fun () -> - if alive then begin - List.iter [err1;in1] - ~f:(fun fd -> while self#read ~fd ~len:1024 = 1024 do () done); - true - end else false - end; - () -end - -(* Specific use of shell, for LablBrowser *) - -let shells : (string * shell) list ref = ref [] - -(* Called before exiting *) -let kill_all () = - List.iter !shells ~f:(fun (_,sh) -> if sh#alive then sh#kill ()); - shells := [] -let _ = at_exit kill_all - -let get_all () = - let all = List.filter !shells ~f:(fun (_,sh) -> sh#alive) in - shells := all; - all - -let may_exec prog = - try Unix.access prog ~perm:[Unix.X_OK]; true - with Unix.Unix_error _ -> false - -let f ~prog ~title = - let progargs = - List.filter ~f:((<>) "") (Str.split ~sep:(Str.regexp " ") prog) in - if progargs = [] then () else - let prog = List.hd progargs in - let path = try Sys.getenv "PATH" with Not_found -> "/bin:/usr/bin" in - let exec_path = Str.split ~sep:(Str.regexp":") path in - let prog = - if not (Filename.is_implicit prog) then - if may_exec prog then prog else "" - else - List.fold_left exec_path ~init:"" ~f: - begin fun acc dir -> - if acc <> "" then acc else - let prog = Filename.concat dir prog in - if may_exec prog then prog else acc - end - in - if prog = "" then () else - let reg = Str.regexp "TERM=" in - let env = Array.map (Unix.environment ()) ~f: - begin fun s -> - if Str.string_match ~pat:reg s ~pos:0 then "TERM=dumb" else s - end in - let load_path = - List.flatten (List.map !Config.load_path ~f:(fun dir -> ["-I"; dir])) in - let args = Array.of_list (progargs @ load_path) in - let current_dir = ref (Unix.getcwd ()) in - - let tl = GWindow.window ~title ~width:500 ~height:300 () in - let vbox = GPack.vbox ~packing:tl#add () in - let menus = GMenu.menu_bar ~packing:vbox#pack () in - let f = new GMenu.factory menus in - let accel_group = f#accel_group in - let file_menu = f#add_submenu "File" - and history_menu = f#add_submenu "History" - and signal_menu = f#add_submenu "Signal" in - - let hbox = GPack.hbox ~packing:vbox#add () in - let sh = new shell ~prog ~env ~args ~packing:hbox#add () in - let sb = - GRange.scrollbar `VERTICAL ~adjustment:sh#text#vadjustment - ~packing:hbox#pack () - in - - let f = new GMenu.factory file_menu ~accel_group in - f#add_item "Use..." ~callback: - begin fun () -> - File.dialog ~title:"Use File" ~filename:(!current_dir ^ "/") () ~callback: - begin fun name -> - current_dir := Filename.dirname name; - if Filename.check_suffix name ".ml" then - let cmd = "#use \"" ^ name ^ "\";;\n" in - sh#insert cmd; - sh#send cmd - end - end; - f#add_item "Load..." ~callback: - begin fun () -> - File.dialog ~title:"Load File" ~filename:(!current_dir ^ "/") () ~callback: - begin fun name -> - current_dir := Filename.dirname name; - if Filename.check_suffix name ".cmo" or - Filename.check_suffix name ".cma" - then - let cmd = Printf.sprintf "#load \"%s\";;\n" name in - sh#insert cmd; - sh#send cmd - end - end; - f#add_item "Import path" ~callback: - begin fun () -> - List.iter (List.rev !Config.load_path) - ~f:(fun dir -> sh#send (sprintf "#directory \"%s\";;\n" dir)) - end; - f#add_item "Close" ~key:_W ~callback:tl#destroy; - - let h = new GMenu.factory history_menu ~accel_group ~accel_modi:[`MOD1] in - h#add_item "Previous" ~key:_P ~callback:(fun () -> sh#history `previous); - h#add_item "Next" ~key:_N ~callback:(fun () -> sh#history `next); - let s = new GMenu.factory signal_menu ~accel_group in - s#add_item "Interrupt" ~key:_G ~callback:sh#interrupt; - s#add_item "Kill" ~callback:sh#kill; - shells := (title, sh) :: !shells; - tl#add_accel_group accel_group; - tl#show () diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/browser/text.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/browser/text.ml deleted file mode 100644 index 729f3105a..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/browser/text.ml +++ /dev/null @@ -1,16 +0,0 @@ -(* $Id$ *) - -open GEdit - -let line_start ?pos (text : GEdit.text) = - let pos = Gaux.default text#position ~opt:pos in - if pos = 0 then 0 else - let start = max 0 (pos-256) in - let buffer = text#get_chars ~start ~stop:pos in - try start + String.rindex buffer '\n' with Not_found -> 0 - -let line_end ?pos (text : GEdit.text) = - let pos = Gaux.default text#position ~opt:pos in - if pos = text#length then text#length else - let buffer = text#get_chars ~start:pos ~stop:(min text#length (pos+256)) in - try pos + String.index buffer '\n' with Not_found -> text#length diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/browser/useunix.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/browser/useunix.ml deleted file mode 100644 index c4860a8ca..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/browser/useunix.ml +++ /dev/null @@ -1,36 +0,0 @@ -(* $Id$ *) - -open Unix - -let get_files_in_directory dir = - try - let dirh = opendir dir in - let rec get_them () = - try - let x = readdir dirh in - x :: get_them () - with - _ -> closedir dirh; [] - in - Sort.list ~order:(<) (get_them ()) - with Unix_error _ -> [] - -let is_directory name = - try - (stat name).st_kind = S_DIR - with _ -> false - -let get_directories_in_files ~path = - List.filter ~pred:(fun x -> is_directory (path ^ "/" ^ x)) - -(************************************************** Subshell call *) -let subshell ~cmd = - let rc = open_process_in ~cmd in - let rec it () = - try - let x = input_line rc in x :: it () - with _ -> [] - in - let answer = it () in - close_process_in rc; - answer diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/browser/widgets.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/browser/widgets.ml deleted file mode 100644 index c27ca9fbb..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/browser/widgets.ml +++ /dev/null @@ -1,34 +0,0 @@ -(* $Id$ *) - -open GObj - -class multibox ~rows ~columns ?(row_view = rows) ?(col_view = columns) - ?packing ?show () = - let sw = - GBin.scrolled_window ~hpolicy:`AUTOMATIC ~vpolicy:`AUTOMATIC - ?show ?packing () in - let vp = GBin.viewport ~shadow_type:`NONE ~packing:sw#add in - let table = - GPack.table ~columns ~rows ~homogeneous:true ~packing:vp#add () in - let buttons = - Array.init ~len:columns - ~f:(fun left -> Array.init ~len:rows - ~f:(fun top -> GButton.button - ~packing:(table#attach ~top ~left ~expand:`BOTH))) - in - object (self) - inherit widget sw#as_widget - method cell ~col ~row = buttons.(col).(row) - initializer - let id = ref None in - id := Some - (sw#event#connect#expose ~after:true ~callback: - begin fun _ -> - may !id ~f:sw#connect#disconnect; - let height = table#misc#allocation.height * row_view / rows - and width = table#misc#allocation.width * col_view / columns in - vp#misc#set_size ~height ~width; - false - end); - table#focus#set_vadjustment vp#vadjustment - end diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/.cvsignore b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/.cvsignore deleted file mode 100644 index a2d75da3e..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/.cvsignore +++ /dev/null @@ -1,3 +0,0 @@ -.depend radtest -*_parser.ml *_parser.mli -*_lexer.ml diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/CHANGES b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/CHANGES deleted file mode 100644 index e87fc0a9a..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/CHANGES +++ /dev/null @@ -1,16 +0,0 @@ -$Id$ - -2000.05.15 - * suppressed treew.ml; replaced by ti*.ml - * new widgets - * less known bugs (Hubert) -1999.10.28 - * re-objectified property.ml - * split it into common.mli/property.ml/propwin.ml - * undo is back - * restructure menu code in main.ml - -1999.10.27 - * simplified property.ml, and corrected treew.ml accordingly. - undo is temporarily disabled. - (Jacques) \ No newline at end of file diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/Makefile b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/Makefile deleted file mode 100644 index 175eca980..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/Makefile +++ /dev/null @@ -1,86 +0,0 @@ -# $Id$ -# Makefile for lablgtk. - -all: radtest - -CAMLC = ocamlc -CAMLOPT = ocamlopt -COMPILER = $(CAMLC) $(MLFLAGS) -c -LINKER = $(CAMLC) $(MLFLAGS) -COMPOPT = $(CAMLOPT) $(MLFLAGS) -c -LINKOPT = $(CAMLOPT) $(MLFLAGS) - -RANLIB = ranlib - -include ../../config.make - -MLFLAGS = -I ../.. -w s -labels - -ifdef DEBUG -CFLAGS = -g $(GTKCFLAGS) -MLFLAGS += -g -else -CFLAGS = -O -DGTK_NO_CHECK_CASTS -DGTK_DISABLE_COMPAT_H $(GTKCFLAGS) -endif - -ifdef USE_CC -CCOMPILER = $(CC) -c -I$(LIBDIR) $(CFLAGS) -else -CCOMPILER = ocamlc -c -ccopt "$(CFLAGS)" -endif - - -# Rules -.SUFFIXES: .ml .mli .cmo .cmi .cmx .c .o .var .h .opt .def -.c.o: - $(CCOMPILER) $< -.ml.cmo: - $(COMPILER) $< -.mli.cmi: - $(COMPILER) $< -.ml.cmx: - $(COMPOPT) $< - -# Targets -MLOBJS = utils.cmo property.cmo propwin.cmo \ - load_parser.cmo load_lexer.cmo tiBase.cmo tiContainer.cmo tiBin.cmo \ - tiButton.cmo tiEdit.cmo tiList.cmo tiMisc.cmo tiPack.cmo tiWindow.cmo \ - tiWidget.cmo main.cmo - -MLSRC = common.mli utils.ml property.mli property.ml propwin.mli \ - propwin.ml \ - load_parser.ml load_lexer.ml tiBase.ml tiContainer.ml tiBin.ml \ - tiButton.ml tiEdit.ml tiList.ml tiMisc.ml tiPack.ml tiWindow.ml \ - tiWidget.ml main.ml - -radtest: $(MLOBJS) libgtk2.a gtk2.cma - $(LINKER) -o $@ lablgtk.cma gtkInit.cmo -I . gtk2.cma \ - $(MLOBJS) - -radtestopt: $(MLOBJS:.cmo=.cmx) libgtk2.a gtk2.cmxa - $(LINKOPT) -o $@ lablgtk.cmxa gtkInit.cmx -I . gtk2.cmxa \ - $(MLOBJS:.cmo=.cmx) - -%.mli %.ml: %.mly - ocamlyacc $< - -%.ml: %.mll - ocamllex $< - -libgtk2.a: gtktree2.o gtktreeitem2.o ml_gtk2.o - ar rc $@ gtktree2.o gtktreeitem2.o ml_gtk2.o - $(RANLIB) $@ - -gtk2.cma: gtkTree2.cmo gTree2.cmo gToolbar2.cmo libgtk2.a - $(LINKER) -a -o $@ gtkTree2.cmo gTree2.cmo gToolbar2.cmo -cclib -lgtk2 - -gtk2.cmxa: gtkTree2.cmx gTree2.cmx gToolbar2.cmx libgtk2.a - $(LINKOPT) -a -o $@ gtkTree2.cmx gTree2.cmx gToolbar2.cmx -cclib -lgtk2 - -clean: - rm -f *.cm* *.o *.a radtest *_parser.ml *_parser.mli *_lexer.ml - -.depend: $(MLSRC) load_parser.ml load_lexer.ml - ocamldep $(MLSRC) load_parser.ml* load_lexer.ml* > .depend - -include .depend diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/README b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/README deleted file mode 100644 index aedd81fff..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/README +++ /dev/null @@ -1,24 +0,0 @@ - Lablgtk RADTEST - -Author: Hubert Fauque, hubert.fauque@inria.fr - -This is an experimental R.A.D. for Lablgtk. -You can compile it simply by make. - - -When radtest starts a new empty project is open; -you can add new windows to this project by clicking on -the window icon at the top of the icons window; - -by clicking on an item in the tree window with the third button -you can add or remove widgets; -you can also drag widgets from the icons window and drop them -on the tree; - -when a widget is selected (click on it in the tree) you can -move it up or down (if its parent is a box) with CTRL-up_arrow -or CTRL-down_arrow; with up_arrow and down_arrow you select -the widget which is above or below the currently selected widget; - -Save the project by Project->Save, and load an already existing -project by Project->Open. diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/aspectframe.xpm b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/aspectframe.xpm deleted file mode 100644 index 66b9ca14d..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/aspectframe.xpm +++ /dev/null @@ -1,33 +0,0 @@ -/* XPM */ -static char *aspectframe_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 6 1", -" c Gray0", -". c #7b7b7b", -"X c #d6d6d6", -"o c #b3cece", -"O c Gray100", -"+ c None", -/* pixels */ -"+++++++++++++++++++++", -"+++++ + +++++++++++", -"+...X X X X......O+", -"+.OOX X X XOOOOO.O+", -"+.OXX X X XXXXXX.O+", -"+.OXXXXXXXXXXXXXXX.O+", -"+.OXXXXXXX.XXXXXXX.O+", -"+.OXXXXXX...XXXXXX.O+", -"+.OXXXXX.X.X.XXXXX.O+", -"+.OXXXXXXX.XXXXXXX.O+", -"+.OXX.XXXX.XXXX.XX.O+", -"+.OX.XXXXX.XXXXX.X.O+", -"+.O................O+", -"+.OX.XXXXX.XXXXX.X.O+", -"+.OXX.XXXX.XXXX.XX.O+", -"+.OXXXXX.X.X.XXXXX.O+", -"+.OXXXXXX...XXXXXX.O+", -"+.OXXXXXXX.XXXXXXX.O+", -"+..................O+", -"+OOOOOOOOOOOOOOOOOOO+", -"+++++++++++++++++++++" -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/button.xpm b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/button.xpm deleted file mode 100644 index 62ebc3074..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/button.xpm +++ /dev/null @@ -1,33 +0,0 @@ -/* XPM */ -static char *button_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 6 1", -" c Gray0", -". c #7b7b7b", -"X c #d6d6d6", -"o c #b3cece", -"O c Gray100", -"+ c None", -/* pixels */ -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+OOOOOOOOOOOOOOOOOO +", -"+OXXXXXXXXXXXXXXXX. +", -"+OXXXXXXXXXXXXXXXX. +", -"+OXXX XXX XXX XX. +", -"+OXX XXX XX XX XXX. +", -"+OXX XXX XX X XXXX. +", -"+OXX XXX XX XXXXX. +", -"+OXX XXX XX X XXXX. +", -"+OXX XXX XX XX XXX. +", -"+OXXX XXX XXX XX. +", -"+OXXXXXXXXXXXXXXXX. +", -"+OXXXXXXXXXXXXXXXX. +", -"+OXXXXXXXXXXXXXXXX. +", -"+O................. +", -"+ +", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++" -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/checkbutton.xpm b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/checkbutton.xpm deleted file mode 100644 index 314ba97ce..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/checkbutton.xpm +++ /dev/null @@ -1,33 +0,0 @@ -/* XPM */ -static char *checkbutton_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 6 1", -" c Gray0", -". c #7b7b7b", -"X c #d6d6d6", -"o c #b3cece", -"O c Gray100", -"+ c None", -/* pixels */ -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++OOOOOOOOOOO+++++", -"+++++OXXXXXXXXX +++++", -"+++++OXXXXXXXX. +++++", -"+++++OXXXXXXXX. +++++", -"+++++OXXXXXXXX. +++++", -"+++++OXXXXXXXX. +++++", -"+++++OXXXXXXXX. +++++", -"+++++OXXXXXXXX. +++++", -"+++++OXXXXXXXX. +++++", -"+++++OX........ +++++", -"+++++O +++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++" -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/clist.xpm b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/clist.xpm deleted file mode 100644 index 2dd61e709..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/clist.xpm +++ /dev/null @@ -1,30 +0,0 @@ -/* XPM */ -static char *clist_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 3 1", -" c Gray0", -". c Gray87", -"X c Gray100", -/* pixels */ -" ", -" ...... ...... ..... ", -" ...... ...... ..... ", -" ...... ...... ..... ", -" ", -" XXXXXX XXXXXX XXXXX ", -" XXXXXX XXXXXX XXXXX ", -" XXXXXX XXXXXX XXXXX ", -" ", -" XXXXXX XXXXXX XXXXX ", -" XXXXXX XXXXXX XXXXX ", -" XXXXXX XXXXXX XXXXX ", -" ", -" XXXXXX XXXXXX XXXXX ", -" XXXXXX XXXXXX XXXXX ", -" XXXXXX XXXXXX XXXXX ", -" ", -" XXXXXX XXXXXX XXXXX ", -" XXXXXX XXXXXX XXXXX ", -" XXXXXX XXXXXX XXXXX ", -" " -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/colorselection.xpm b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/colorselection.xpm deleted file mode 100644 index 0bb0914d0..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/colorselection.xpm +++ /dev/null @@ -1,35 +0,0 @@ -/* XPM */ -static char *colorselection_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 8 1", -" c Gray0", -". c #7b7b7b", -"X c Blue", -"o c Green", -"O c Red", -"+ c #b3cece", -"@ c Gray100", -"# c None", -/* pixels */ -"#####################", -"#####################", -"#####################", -"#####################", -"#####################", -"##................###", -"##.@@@@@@@@@@@@@@. ##", -"##.@@@@@@@@@@@@@@. ##", -"##.@@@@@@@@@@@@@@. ##", -"##.@@OOOoooXXX@@@. ##", -"##.@@OOOoooXXX@@@. ##", -"##.@@OOOoooXXX@@@. ##", -"##.@@OOOoooXXX@@@. ##", -"##.@@@@@@@@@@@@@@. ##", -"##.@@@@@@@@@@@@@@. ##", -"##.@@@@@@@@@@@@@@. ##", -"##................ ##", -"### ##", -"#####################", -"#####################", -"#####################" -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/combo.xpm b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/combo.xpm deleted file mode 100644 index 3b4055b6d..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/combo.xpm +++ /dev/null @@ -1,34 +0,0 @@ -/* XPM */ -static char *combo_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 7 1", -" c Gray0", -". c #7b7b7b", -"X c #d6d6d6", -"o c #b3cece", -"O c Gray87", -"+ c Gray100", -"@ c None", -/* pixels */ -"@@@@@@@@@@@@@@@@@@@@@", -" ", -" +++++++++++++ OOOOO ", -" +++++++++++++ OOO ", -" +++++++++++++ O ", -" ", -" +++++++++++++ ++++++", -" +++++++++++++ XXXXX ", -" +.........+++ XX XX ", -" +++++++++++++ X X ", -" +++++++++++++ XXXXX ", -" +...........+ ", -" +++++++++++++ +++++ ", -" +++++++++++++ +XXXX ", -" +..........++ ..... ", -" +++++++++++++ +++++ ", -" +++++++++++++ XXXXX ", -" +...........+ X X ", -" +++++++++++++ XX XX ", -" +++++++++++++ XXXXX ", -" " -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/common.mli b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/common.mli deleted file mode 100644 index 7050f9f94..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/common.mli +++ /dev/null @@ -1,27 +0,0 @@ -(* $Id$ *) - -type range = - | String - | Int - | Float of float * float - | Enum of string list - | Enum_string of string list - | Adjust - | CList_titles - | File - -class type prop = - object - method name : string (* name of the property *) - method range : range (* range of its values *) - method get : string (* current value *) - method set : string -> unit (* change value *) - method modified : bool (* value differs from default *) - method code : string (* encoded value for the ml code *) - method save_code : string (* encoded value for saving *) - end - -class type tiwidget_base = object - method name : string - method proplist : (string * prop) list -end diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/entry.xpm b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/entry.xpm deleted file mode 100644 index cb9004135..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/entry.xpm +++ /dev/null @@ -1,33 +0,0 @@ -/* XPM */ -static char *entry_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 6 1", -" c Gray0", -". c #7b7b7b", -"X c #d6d6d6", -"o c #b3cece", -"O c Gray100", -"+ c None", -/* pixels */ -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"....................O", -". XO", -". OOOOOOOOOOOOOOOOOXO", -". OOOOOOOOOOOOOOO OXO", -". OOOOOOOO OOOOOO OXO", -". OOOOOOOO OOOOOO OXO", -". OOO OO X OOO OXO", -". OO XOX O O. OO OXO", -". OOOOOO O OOO OO OXO", -". OOO O OOO OO OXO", -". OO XOO O OOO OO OXO", -". OO XOO O OO. OO OXO", -". OOO O OOO OXO", -". OOOOOOOOOOOOOOO OXO", -". OOOOOOOOOOOOOOOOOXO", -".XXXXXXXXXXXXXXXXXXXO", -"OOOOOOOOOOOOOOOOOOOOO", -"+++++++++++++++++++++", -"+++++++++++++++++++++" -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/eventbox.xpm b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/eventbox.xpm deleted file mode 100644 index 73da445d2..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/eventbox.xpm +++ /dev/null @@ -1,34 +0,0 @@ -/* XPM */ -static char *eventbox_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 7 1", -" c Gray0", -". c #7b7b7b", -"X c Blue", -"o c #d6d6d6", -"O c #b3cece", -"+ c Gray100", -"@ c None", -/* pixels */ -"@@@@@@@@@@X+@@@@@@@@@", -"@@@@@@@@@XX+@@@@@@@@@", -"@@@@@@@@XX+@@@@@@@@@@", -"@@@@@@@XX+@@@@@@@@@@@", -"@@@@@@@@XX+@@@@@@@@@@", -"@@@@@@@@@XX+@@@@@@@@@", -"@@@@@@@@@@XX+@@@@@@@@", -"@@@++++++XX++++++ @@@", -"@@@+ooooXX+ooooo. @@@", -"@@@+oooXX+oooooo. @@@", -"@@@+ooooXX+ooooo. @@@", -"@@@+oooooXX+oooo. @@@", -"@@@+ooooooXX+ooo. @@@", -"@@@+oooooooooooo. @@@", -"@@@+oooooooooooo. @@@", -"@@@+oooooooooooo. @@@", -"@@@+............. @@@", -"@@@ @@@", -"@@@@@@@@@@@@@@@@@@@@@", -"@@@@@@@@@@@@@@@@@@@@@", -"@@@@@@@@@@@@@@@@@@@@@" -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/fixed.xpm b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/fixed.xpm deleted file mode 100644 index 2e0481572..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/fixed.xpm +++ /dev/null @@ -1,31 +0,0 @@ -/* XPM */ -static char *fixed_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 4 1", -" c Gray0", -". c #7b7b7b", -"X c #d6d6d6", -"o c Gray100", -/* pixels */ -"oooooooooooooooooooo ", -"oXXXXXXXXXXXXXXXXXX. ", -"oXXXXXXXXXXXXXXXXXX. ", -"oXooooo XXXXXXXXXXX. ", -"oXoXXX. XXXXXXXXXXX. ", -"oXoXXX. XXXXooooo X. ", -"oXo.... XXXXoXXX. X. ", -"oX XXXXoXXX. X. ", -"oXXXXXXXXXXXo.... X. ", -"oXXXXXXXXXXX X. ", -"oXXXXXXXXXXXXXXXXXX. ", -"oXXXXooooo XXXXXXXX. ", -"oXXXXoXXX. XXXXXXXX. ", -"oXXXXoXXX. XXXXXXXX. ", -"oXXXXo.... XXXXXXXX. ", -"oXXXX XXXXXXXX. ", -"oXXXXXXXXXXXXXXXXXX. ", -"oXXXXXXXXXXXXXXXXXX. ", -"oXXXXXXXXXXXXXXXXXX. ", -"o................... ", -" " -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/frame.xpm b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/frame.xpm deleted file mode 100644 index c8c8b5782..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/frame.xpm +++ /dev/null @@ -1,33 +0,0 @@ -/* XPM */ -static char *frame_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 6 1", -" c Gray0", -". c #7b7b7b", -"X c #d6d6d6", -"o c #b3cece", -"O c Gray100", -"+ c None", -/* pixels */ -"+++++++++++++++++++++", -"+++++ + +++++++++++", -"+...X X X X......O+", -"+.OOX X X XOOOOO.O+", -"+.OXX X X XXXXXX.O+", -"+.OXXXXXXXXXXXXXXX.O+", -"+.OXXXXXXXXXXXXXXX.O+", -"+.OXXXXXXXXXXXXXXX.O+", -"+.OXXXXXXXXXXXXXXX.O+", -"+.OXXXXXXXXXXXXXXX.O+", -"+.OXXXXXXXXXXXXXXX.O+", -"+.OXXXXXXXXXXXXXXX.O+", -"+.OXXXXXXXXXXXXXXX.O+", -"+.OXXXXXXXXXXXXXXX.O+", -"+.OXXXXXXXXXXXXXXX.O+", -"+.OXXXXXXXXXXXXXXX.O+", -"+.OXXXXXXXXXXXXXXX.O+", -"+.OXXXXXXXXXXXXXXX.O+", -"+..................O+", -"+OOOOOOOOOOOOOOOOOOO+", -"+++++++++++++++++++++" -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/gToolbar2.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/gToolbar2.ml deleted file mode 100644 index c2ad0a854..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/gToolbar2.ml +++ /dev/null @@ -1,65 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open GtkBase -open GtkButton -open GObj -open GContainer -open GButton - -module Toolbar2 = struct - external set_text : [>`toolbar] obj -> string -> int -> unit = - "ml_gtk_toolbar2_set_text" - external set_icon : [>`toolbar] obj -> [>`widget] obj -> int -> unit = - "ml_gtk_toolbar2_set_icon" -end - -class toolbar2 obj = object - inherit container_full (obj : Gtk.toolbar obj) - method insert_widget ?tooltip ?tooltip_private ?pos w = - Toolbar.insert_widget obj (as_widget w) ?tooltip ?tooltip_private ?pos - - method insert_button ?text ?tooltip ?tooltip_private ?icon - ?pos ?callback () = - let icon = may_map icon ~f:as_widget in - new button - (Toolbar.insert_button obj ~kind:`BUTTON ?icon ?text - ?tooltip ?tooltip_private ?pos ?callback ()) - - method insert_toggle_button ?text ?tooltip ?tooltip_private ?icon - ?pos ?callback () = - let icon = may_map icon ~f:as_widget in - new toggle_button - (ToggleButton.cast - (Toolbar.insert_button obj ~kind:`TOGGLEBUTTON ?icon ?text - ?tooltip ?tooltip_private ?pos ?callback ())) - - method insert_radio_button ?text ?tooltip ?tooltip_private ?icon - ?pos ?callback () = - let icon = may_map icon ~f:as_widget in - new radio_button - (RadioButton.cast - (Toolbar.insert_button obj ~kind:`RADIOBUTTON ?icon ?text - ?tooltip ?tooltip_private ?pos ?callback ())) - - method insert_space = Toolbar.insert_space obj - - method set_orientation = Toolbar.set_orientation obj - method set_style = Toolbar.set_style obj - method set_space_size = Toolbar.set_space_size obj - method set_space_style = Toolbar.set_space_style obj - method set_tooltips = Toolbar.set_tooltips obj - method set_button_relief = Toolbar.set_button_relief obj - method button_relief = Toolbar.get_button_relief obj - method set_text = Toolbar2.set_text obj - method set_icon (icon : widget) = Toolbar2.set_icon obj icon#as_widget -end - -let toolbar2 ?(orientation=`HORIZONTAL) ?style - ?space_size ?space_style ?tooltips ?button_relief - ?border_width ?width ?height ?packing ?show () = - let w = Toolbar.create orientation ?style () in - Toolbar.set w ?space_size ?space_style ?tooltips ?button_relief; - Container.set w ?border_width ?width ?height; - pack_return (new toolbar2 w) ~packing ~show diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/gTree2.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/gTree2.ml deleted file mode 100644 index 62c38ac57..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/gTree2.ml +++ /dev/null @@ -1,78 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open GtkBase -open GtkTree2 -open GObj -open GContainer - -class tree_item_signals obj = object - inherit item_signals obj - method expand = GtkSignal.connect obj ~sgn:TreeItem.Signals.expand ~after - method collapse = GtkSignal.connect obj ~sgn:TreeItem.Signals.collapse ~after -end - -class tree_item obj = object - inherit container obj - method event = new GObj.event_ops obj - method as_item : Gtk.tree_item obj = obj - method connect = new tree_item_signals obj - method set_subtree (w : tree) = TreeItem.set_subtree obj w#as_tree - method remove_subtree () = TreeItem.remove_subtree obj - method expand () = TreeItem.expand obj - method collapse () = TreeItem.collapse obj - method subtree = - try Some(new tree (TreeItem.subtree obj)) with Gpointer.Null -> None -end - -and tree_signals obj = object - inherit container_signals obj - method selection_changed = - GtkSignal.connect obj ~sgn:Tree.Signals.selection_changed ~after - method select_child ~callback = - GtkSignal.connect obj ~sgn:Tree.Signals.select_child ~after - ~callback:(fun w -> callback (new tree_item (TreeItem.cast w))) - method unselect_child ~callback = - GtkSignal.connect obj ~sgn:Tree.Signals.unselect_child ~after - ~callback:(fun w -> callback (new tree_item (TreeItem.cast w))) -end - -and tree obj = object (self) - inherit [tree_item] item_container obj - method event = new GObj.event_ops obj - method as_tree = Tree.coerce obj - method insert w ~pos = Tree.insert obj w#as_item ~pos - method connect = new tree_signals obj - method clear_items = Tree.clear_items obj - method select_item = Tree.select_item obj - method unselect_item = Tree.unselect_item obj - method child_position (w : tree_item) = Tree.child_position obj w#as_item - method remove_items items = - Tree.remove_items obj - (List.map ~f:(fun (t : tree_item) -> t#as_item) items) -(* method set_selection_mode = Tree.set_selection_mode obj - method set_view_mode = Tree.set_view_mode obj *) - method set_view_lines = Tree.set_view_lines obj - method selection = - List.map ~f:(fun w -> self#wrap (Widget.coerce w)) (Tree.selection obj) - method item_up ~pos = - Tree.item_up obj pos - method private wrap w = - new tree_item (TreeItem.cast w) -end - -let tree_item ?label ?border_width ?width ?height ?packing ?show () = - let w = TreeItem.create ?label () in - Container.set w ?border_width ?width ?height; - let self = new tree_item w in - may packing ~f:(fun f -> (f self : unit)); - if show <> Some false then self#misc#show (); - self - -let tree ?selection_mode ?view_mode ?view_lines - ?border_width ?width ?height ?packing ?show () = - let w = Tree.create () in - Tree.set w ?selection_mode ?view_mode ?view_lines; - Container.set w ?border_width ?width ?height; - pack_return (new tree w) ~packing ~show diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/gTree2.mli b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/gTree2.mli deleted file mode 100644 index c288e157e..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/gTree2.mli +++ /dev/null @@ -1,73 +0,0 @@ -(* $Id$ *) - -open Gtk -open GObj -open GContainer - -class tree_item_signals : 'a obj -> - object - inherit item_signals - constraint 'a = [>`treeitem|`container|`item|`widget] - val obj : 'a obj - method collapse : callback:(unit -> unit) -> GtkSignal.id - method expand : callback:(unit -> unit) -> GtkSignal.id - end - -class tree_item : Gtk.tree_item obj -> - object - inherit GContainer.container - val obj : Gtk.tree_item obj - method event : event_ops - method as_item : Gtk.tree_item obj - method collapse : unit -> unit - method connect : tree_item_signals - method expand : unit -> unit - method remove_subtree : unit -> unit - method set_subtree : tree -> unit - method subtree : tree option - end - -and tree_signals : Gtk.tree obj -> - object - inherit container_signals - val obj : Gtk.tree obj - method select_child : callback:(tree_item -> unit) -> GtkSignal.id - method selection_changed : callback:(unit -> unit) -> GtkSignal.id - method unselect_child : callback:(tree_item -> unit) -> GtkSignal.id - end - -and tree : Gtk.tree obj -> - object - inherit [tree_item] item_container - val obj : Gtk.tree obj - method event : event_ops - method as_tree : Gtk.tree obj - method child_position : tree_item -> int - method clear_items : start:int -> stop:int -> unit - method connect : tree_signals - method insert : tree_item -> pos:int -> unit - method item_up : pos:int -> unit - method remove_items : tree_item list -> unit - method select_item : pos:int -> unit - method selection : tree_item list -(* method set_selection_mode : Tags.selection_mode -> unit *) - method set_view_lines : bool -> unit -(* method set_view_mode : [`LINE|`ITEM] -> unit *) - method unselect_item : pos:int -> unit - method private wrap : Gtk.widget obj -> tree_item - end - -val tree_item : - ?label:string -> - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(tree_item -> unit) -> ?show:bool -> unit -> tree_item - -val tree : - ?selection_mode:Tags.selection_mode -> - ?view_mode:[`LINE|`ITEM] -> - ?view_lines:bool -> - ?border_width:int -> - ?width:int -> - ?height:int -> ?packing:(GObj.widget -> unit) -> ?show:bool -> unit -> tree diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/gtkTree2.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/gtkTree2.ml deleted file mode 100644 index 46d1e0220..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/gtkTree2.ml +++ /dev/null @@ -1,82 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open Tags -open GtkBase - -module TreeItem = struct - let cast w : tree_item obj = - if Object.is_a w "GtkTreeItem" then Obj.magic w - else invalid_arg "Gtk.TreeItem.cast" - external create : unit -> tree_item obj = "ml_gtk_tree_item2_new" - external create_with_label : string -> tree_item obj - = "ml_gtk_tree_item2_new_with_label" - let create ?label () = - match label with None -> create () - | Some label -> create_with_label label - external set_subtree : [>`treeitem] obj -> [>`widget] obj -> unit - = "ml_gtk_tree_item2_set_subtree" - external remove_subtree : [>`treeitem] obj -> unit - = "ml_gtk_tree_item2_remove_subtree" - external expand : [>`treeitem] obj -> unit - = "ml_gtk_tree_item2_expand" - external collapse : [>`treeitem] obj -> unit - = "ml_gtk_tree_item2_collapse" - external subtree : [>`treeitem] obj -> tree obj - = "ml_GTK_TREE_ITEM2_SUBTREE" - let subtree t = try subtree t with Gpointer.Null -> raise Not_found - module Signals = struct - open GtkSignal - let expand : ([>`treeitem],_) t = - { name = "expand"; marshaller = marshal_unit } - let collapse : ([>`treeitem],_) t = - { name = "collapse"; marshaller = marshal_unit } - end -end - -module Tree = struct - let cast w : tree obj = - if Object.is_a w "GtkTree" then Obj.magic w - else invalid_arg "Gtk.Tree.cast" - external coerce : [>`tree] obj -> tree obj = "%identity" - external create : unit -> tree obj = "ml_gtk_tree2_new" - external insert : [>`tree] obj -> [>`treeitem] obj -> pos:int -> unit - = "ml_gtk_tree2_insert" - external remove_items : [>`tree] obj -> [>`treeitem] obj list -> unit - = "ml_gtk_tree2_remove_items" - external clear_items : [>`tree] obj -> start:int -> stop:int -> unit - = "ml_gtk_tree2_clear_items" - external select_item : [>`tree] obj -> pos:int -> unit - = "ml_gtk_tree2_select_item" - external unselect_item : [>`tree] obj -> pos:int -> unit - = "ml_gtk_tree2_unselect_item" - external child_position : [>`tree] obj -> [>`treeitem] obj -> int - = "ml_gtk_tree2_child_position" -(* external set_selection_mode : [>`tree] obj -> selection_mode -> unit - = "ml_gtk_tree2_set_selection_mode" - external set_view_mode : [>`tree] obj -> [`LINE|`ITEM] -> unit - = "ml_gtk_tree2_set_view_mode" -*) - external set_view_lines : [>`tree] obj -> bool -> unit - = "ml_gtk_tree2_set_view_lines" - external selection : [>`tree] obj -> tree_item obj list = - "ml_gtk_tree2_selection" - external item_up : [>`tree] obj -> int -> unit = - "ml_gtk_tree2_item_up" - - let set ?selection_mode ?view_mode ?view_lines w = - let may_set f = may ~f:(f w) in -(* may_set set_selection_mode selection_mode; - may_set set_view_mode view_mode; *) - may_set set_view_lines view_lines - module Signals = struct - open GtkSignal - let selection_changed : ([>`tree],_) t = - { name = "selection_changed"; marshaller = marshal_unit } - let select_child : ([>`tree],_) t = - { name = "select_child"; marshaller = Widget.Signals.marshal } - let unselect_child : ([>`tree],_) t = - { name = "unselect_child"; marshaller = Widget.Signals.marshal } - end -end diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/gtktree2.c b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/gtktree2.c deleted file mode 100644 index db37a1f9d..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/gtktree2.c +++ /dev/null @@ -1,1385 +0,0 @@ -/* GTK - The GIMP Toolkit - * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library 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 - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -/* - * Modified by the GTK+ Team and others 1997-1999. See the AUTHORS - * file for a list of people on the GTK+ Team. See the ChangeLog - * files for a list of changes. These files are distributed with - * GTK+ at ftp://ftp.gtk.org/pub/gtk/. - */ - -#include "gtktree2.h" -#include "gtktreeitem2.h" - -#include -#include -#include - -enum { - SELECTION_CHANGED, - SELECT_CHILD, - UNSELECT_CHILD, - LAST_SIGNAL -}; - -static void gtk_tree2_class_init (GtkTree2Class *klass); -static void gtk_tree2_init (GtkTree2 *tree); -static void gtk_tree2_destroy (GtkObject *object); -static void gtk_tree2_map (GtkWidget *widget); -static void gtk_tree2_unmap (GtkWidget *widget); -static void gtk_tree2_realize (GtkWidget *widget); -static void gtk_tree2_draw (GtkWidget *widget, - GdkRectangle *area); -static gint gtk_tree2_expose (GtkWidget *widget, - GdkEventExpose *event); -static gint gtk_tree2_motion_notify (GtkWidget *widget, - GdkEventMotion *event); -static gint gtk_tree2_button_press (GtkWidget *widget, - GdkEventButton *event); -static gint gtk_tree2_button_release (GtkWidget *widget, - GdkEventButton *event); -static void gtk_tree2_size_request (GtkWidget *widget, - GtkRequisition *requisition); -static void gtk_tree2_size_allocate (GtkWidget *widget, - GtkAllocation *allocation); -static void gtk_tree2_add (GtkContainer *container, - GtkWidget *widget); -static void gtk_tree2_forall (GtkContainer *container, - gboolean include_internals, - GtkCallback callback, - gpointer callback_data); - -static void gtk_real_tree2_select_child (GtkTree2 *tree, - GtkWidget *child); -static void gtk_real_tree2_unselect_child (GtkTree2 *tree, - GtkWidget *child); - -static GtkType gtk_tree2_child_type (GtkContainer *container); - -static GtkContainerClass *parent_class = NULL; -static guint tree_signals[LAST_SIGNAL] = { 0 }; - -GtkType -gtk_tree2_get_type (void) -{ - static GtkType tree_type = 0; - - if (!tree_type) - { - static const GtkTypeInfo tree_info = - { - "GtkTree2", - sizeof (GtkTree2), - sizeof (GtkTree2Class), - (GtkClassInitFunc) gtk_tree2_class_init, - (GtkObjectInitFunc) gtk_tree2_init, - /* reserved_1 */ NULL, - /* reserved_2 */ NULL, - (GtkClassInitFunc) NULL, - }; - - tree_type = gtk_type_unique (gtk_container_get_type (), &tree_info); - } - - return tree_type; -} - -static void -gtk_tree2_class_init (GtkTree2Class *class) -{ - GtkObjectClass *object_class; - GtkWidgetClass *widget_class; - GtkContainerClass *container_class; - - object_class = (GtkObjectClass*) class; - widget_class = (GtkWidgetClass*) class; - container_class = (GtkContainerClass*) class; - - parent_class = gtk_type_class (gtk_container_get_type ()); - - tree_signals[SELECTION_CHANGED] = - gtk_signal_new ("selection_changed", - GTK_RUN_FIRST, - object_class->type, - GTK_SIGNAL_OFFSET (GtkTree2Class, selection_changed), - gtk_marshal_NONE__NONE, - GTK_TYPE_NONE, 0); - tree_signals[SELECT_CHILD] = - gtk_signal_new ("select_child", - GTK_RUN_FIRST, - object_class->type, - GTK_SIGNAL_OFFSET (GtkTree2Class, select_child), - gtk_marshal_NONE__POINTER, - GTK_TYPE_NONE, 1, - GTK_TYPE_WIDGET); - tree_signals[UNSELECT_CHILD] = - gtk_signal_new ("unselect_child", - GTK_RUN_FIRST, - object_class->type, - GTK_SIGNAL_OFFSET (GtkTree2Class, unselect_child), - gtk_marshal_NONE__POINTER, - GTK_TYPE_NONE, 1, - GTK_TYPE_WIDGET); - - gtk_object_class_add_signals (object_class, tree_signals, LAST_SIGNAL); - - object_class->destroy = gtk_tree2_destroy; - - widget_class->map = gtk_tree2_map; - widget_class->unmap = gtk_tree2_unmap; - widget_class->realize = gtk_tree2_realize; - widget_class->draw = gtk_tree2_draw; - widget_class->expose_event = gtk_tree2_expose; - widget_class->motion_notify_event = gtk_tree2_motion_notify; - widget_class->button_press_event = gtk_tree2_button_press; - widget_class->button_release_event = gtk_tree2_button_release; - widget_class->size_request = gtk_tree2_size_request; - widget_class->size_allocate = gtk_tree2_size_allocate; - - container_class->add = gtk_tree2_add; - container_class->remove = - (void (*)(GtkContainer *, GtkWidget *)) gtk_tree2_remove_item; - container_class->forall = gtk_tree2_forall; - container_class->child_type = gtk_tree2_child_type; - - class->selection_changed = NULL; - class->select_child = gtk_real_tree2_select_child; - class->unselect_child = gtk_real_tree2_unselect_child; -} - -static GtkType -gtk_tree2_child_type (GtkContainer *container) -{ - return GTK_TYPE_TREE_ITEM2; -} - -static void -gtk_tree2_init (GtkTree2 *tree) -{ - tree->children = NULL; - tree->root_tree = NULL; - tree->selection = NULL; - tree->tree_owner = NULL; - tree->selection_mode = GTK_SELECTION_SINGLE; - tree->indent_value = 9; - tree->current_indent = 0; - tree->level = 0; - tree->view_mode = GTK_TREE2_VIEW_LINE; - tree->view_line = 1; -} - -GtkWidget* -gtk_tree2_new (void) -{ - return GTK_WIDGET (gtk_type_new (gtk_tree2_get_type ())); -} - -void -gtk_tree2_append (GtkTree2 *tree, - GtkWidget *tree_item) -{ - g_return_if_fail (tree != NULL); - g_return_if_fail (GTK_IS_TREE2 (tree)); - g_return_if_fail (tree_item != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (tree_item)); - - gtk_tree2_insert (tree, tree_item, -1); -} - -void -gtk_tree2_prepend (GtkTree2 *tree, - GtkWidget *tree_item) -{ - g_return_if_fail (tree != NULL); - g_return_if_fail (GTK_IS_TREE2 (tree)); - g_return_if_fail (tree_item != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (tree_item)); - - gtk_tree2_insert (tree, tree_item, 0); -} - -void -gtk_tree2_insert (GtkTree2 *tree, - GtkWidget *tree_item, - gint position) -{ - gint nchildren; - - g_return_if_fail (tree != NULL); - g_return_if_fail (GTK_IS_TREE2 (tree)); - g_return_if_fail (tree_item != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (tree_item)); - - nchildren = g_list_length (tree->children); - - if ((position < 0) || (position > nchildren)) - position = nchildren; - - if (position == nchildren) - tree->children = g_list_append (tree->children, tree_item); - else - tree->children = g_list_insert (tree->children, tree_item, position); - - gtk_widget_set_parent (tree_item, GTK_WIDGET (tree)); - - if (GTK_WIDGET_REALIZED (tree_item->parent)) - gtk_widget_realize (tree_item); - - if (GTK_WIDGET_VISIBLE (tree_item->parent) && GTK_WIDGET_VISIBLE (tree_item)) - { - if (GTK_WIDGET_MAPPED (tree_item->parent)) - gtk_widget_map (tree_item); - - gtk_widget_queue_resize (tree_item); - } -} - -/* moves the pos child up in the tree */ -void -gtk_tree2_item_up (GtkTree2 *tree, - gint position) -{ - gint nchildren, i; - GList *children, *tmp; - - g_return_if_fail (tree != NULL); - g_return_if_fail (GTK_IS_TREE2 (tree)); - - children = (tree->children); - nchildren = g_list_length (tree->children); - - if ((position < 1) || (position >= nchildren)) - return; - - for (i=1; i < position; i++) - children = (children->next); - - tmp = children->next; - if (position == 1) - { - tree->children = children->next; - children->next->prev = NULL; - } - else - { - children->prev->next = children->next; - children->next->prev = children->prev; - } - children->next = tmp->next; - children->prev = tmp; - if (tmp->next) - tmp->next->prev = children; - tmp->next = children; - - if (GTK_WIDGET_VISIBLE (tree)) - { -/* if (GTK_WIDGET_VISIBLE (GTK_WIDGET(children->data))) - gtk_widget_queue_resize (GTK_WIDGET(children->data)); - if (GTK_WIDGET_VISIBLE (GTK_WIDGET(tmp->data))) - gtk_widget_queue_resize (GTK_WIDGET(tmp->data)); -*/ - gtk_widget_queue_resize (GTK_WIDGET(tree)); - } -} - -static void -gtk_tree2_add (GtkContainer *container, - GtkWidget *child) -{ - GtkTree2 *tree; - - g_return_if_fail (container != NULL); - g_return_if_fail (GTK_IS_TREE2 (container)); - g_return_if_fail (GTK_IS_TREE_ITEM2 (child)); - - tree = GTK_TREE2 (container); - - tree->children = g_list_append (tree->children, child); - - gtk_widget_set_parent (child, GTK_WIDGET (container)); - - if (GTK_WIDGET_REALIZED (child->parent)) - gtk_widget_realize (child); - - if (GTK_WIDGET_VISIBLE (child->parent) && GTK_WIDGET_VISIBLE (child)) - { - if (GTK_WIDGET_MAPPED (child->parent)) - gtk_widget_map (child); - - gtk_widget_queue_resize (child); - } - - if (!tree->selection && (tree->selection_mode == GTK_SELECTION_BROWSE)) - gtk_tree2_select_child (tree, child); -} - -static gint -gtk_tree2_button_press (GtkWidget *widget, - GdkEventButton *event) -{ - GtkTree2 *tree; - GtkWidget *item; - - g_return_val_if_fail (widget != NULL, FALSE); - g_return_val_if_fail (GTK_IS_TREE2 (widget), FALSE); - g_return_val_if_fail (event != NULL, FALSE); - - tree = GTK_TREE2 (widget); - item = gtk_get_event_widget ((GdkEvent*) event); - - while (item && !GTK_IS_TREE_ITEM2 (item)) - item = item->parent; - - if (!item || (item->parent != widget)) - return FALSE; - - switch(event->button) - { - case 1: - gtk_tree2_select_child (tree, item); - break; - case 2: - if(GTK_TREE_ITEM2(item)->subtree) gtk_tree_item2_expand(GTK_TREE_ITEM2(item)); - break; - case 3: - if(GTK_TREE_ITEM2(item)->subtree) gtk_tree_item2_collapse(GTK_TREE_ITEM2(item)); - break; - } - - return TRUE; -} - -static gint -gtk_tree2_button_release (GtkWidget *widget, - GdkEventButton *event) -{ - GtkTree2 *tree; - GtkWidget *item; - - g_return_val_if_fail (widget != NULL, FALSE); - g_return_val_if_fail (GTK_IS_TREE2 (widget), FALSE); - g_return_val_if_fail (event != NULL, FALSE); - - tree = GTK_TREE2 (widget); - item = gtk_get_event_widget ((GdkEvent*) event); - - return TRUE; -} - -gint -gtk_tree2_child_position (GtkTree2 *tree, - GtkWidget *child) -{ - GList *children; - gint pos; - - - g_return_val_if_fail (tree != NULL, -1); - g_return_val_if_fail (GTK_IS_TREE2 (tree), -1); - g_return_val_if_fail (child != NULL, -1); - - pos = 0; - children = tree->children; - - while (children) - { - if (child == GTK_WIDGET (children->data)) - return pos; - - pos += 1; - children = children->next; - } - - - return -1; -} - -void -gtk_tree2_clear_items (GtkTree2 *tree, - gint start, - gint end) -{ - GtkWidget *widget; - GList *clear_list; - GList *tmp_list; - guint nchildren; - guint index; - - g_return_if_fail (tree != NULL); - g_return_if_fail (GTK_IS_TREE2 (tree)); - - nchildren = g_list_length (tree->children); - - if (nchildren > 0) - { - if ((end < 0) || (end > nchildren)) - end = nchildren; - - if (start >= end) - return; - - tmp_list = g_list_nth (tree->children, start); - clear_list = NULL; - index = start; - while (tmp_list && index <= end) - { - widget = tmp_list->data; - tmp_list = tmp_list->next; - index++; - - clear_list = g_list_prepend (clear_list, widget); - } - - gtk_tree2_remove_items (tree, clear_list); - } -} - -static void -gtk_tree2_destroy (GtkObject *object) -{ - GtkTree2 *tree; - GtkWidget *child; - GList *children; - - g_return_if_fail (object != NULL); - g_return_if_fail (GTK_IS_TREE2 (object)); - - tree = GTK_TREE2 (object); - - children = tree->children; - while (children) - { - child = children->data; - children = children->next; - - gtk_widget_ref (child); - gtk_widget_unparent (child); - gtk_widget_destroy (child); - gtk_widget_unref (child); - } - - g_list_free (tree->children); - tree->children = NULL; - - if (tree->root_tree == tree) - { - GList *node; - for (node = tree->selection; node; node = node->next) - gtk_widget_unref ((GtkWidget *)node->data); - g_list_free (tree->selection); - tree->selection = NULL; - } - - if (GTK_OBJECT_CLASS (parent_class)->destroy) - (* GTK_OBJECT_CLASS (parent_class)->destroy) (object); -} - -static void -gtk_tree2_draw (GtkWidget *widget, - GdkRectangle *area) -{ - GtkTree2 *tree; - GtkWidget *subtree; - GtkWidget *child; - GdkRectangle child_area; - GList *children; - - - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_TREE2 (widget)); - g_return_if_fail (area != NULL); - - if (GTK_WIDGET_DRAWABLE (widget)) - { - tree = GTK_TREE2 (widget); - - children = tree->children; - while (children) - { - child = children->data; - children = children->next; - - if (gtk_widget_intersect (child, area, &child_area)) - gtk_widget_draw (child, &child_area); - - if((subtree = GTK_TREE_ITEM2(child)->subtree) && - GTK_WIDGET_VISIBLE(subtree) && - gtk_widget_intersect (subtree, area, &child_area)) - gtk_widget_draw (subtree, &child_area); - } - } - -} - -static gint -gtk_tree2_expose (GtkWidget *widget, - GdkEventExpose *event) -{ - GtkTree2 *tree; - GtkWidget *child; - GdkEventExpose child_event; - GList *children; - - - g_return_val_if_fail (widget != NULL, FALSE); - g_return_val_if_fail (GTK_IS_TREE2 (widget), FALSE); - g_return_val_if_fail (event != NULL, FALSE); - - if (GTK_WIDGET_DRAWABLE (widget)) - { - tree = GTK_TREE2 (widget); - - child_event = *event; - - children = tree->children; - while (children) - { - child = children->data; - children = children->next; - - if (GTK_WIDGET_NO_WINDOW (child) && - gtk_widget_intersect (child, &event->area, &child_event.area)) - gtk_widget_event (child, (GdkEvent*) &child_event); - } - } - - - return FALSE; -} - -static void -gtk_tree2_forall (GtkContainer *container, - gboolean include_internals, - GtkCallback callback, - gpointer callback_data) -{ - GtkTree2 *tree; - GtkWidget *child; - GList *children; - - - g_return_if_fail (container != NULL); - g_return_if_fail (GTK_IS_TREE2 (container)); - g_return_if_fail (callback != NULL); - - tree = GTK_TREE2 (container); - children = tree->children; - - while (children) - { - child = children->data; - children = children->next; - - (* callback) (child, callback_data); - - if (include_internals && GTK_TREE_ITEM2(child)->subtree) - (* callback) (GTK_TREE_ITEM2(child)->subtree, callback_data); - } -} - -static void -gtk_tree2_map (GtkWidget *widget) -{ - GtkTree2 *tree; - GtkWidget *child; - GList *children; - - - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_TREE2 (widget)); - - GTK_WIDGET_SET_FLAGS (widget, GTK_MAPPED); - tree = GTK_TREE2 (widget); - - if(GTK_IS_TREE2(widget->parent)) - { - /* set root tree for this tree */ - tree->root_tree = GTK_TREE2(widget->parent)->root_tree; - - tree->level = GTK_TREE2(GTK_WIDGET(tree)->parent)->level+1; - tree->indent_value = GTK_TREE2(GTK_WIDGET(tree)->parent)->indent_value; - tree->current_indent = GTK_TREE2(GTK_WIDGET(tree)->parent)->current_indent + - tree->indent_value; - tree->view_mode = GTK_TREE2(GTK_WIDGET(tree)->parent)->view_mode; - tree->view_line = GTK_TREE2(GTK_WIDGET(tree)->parent)->view_line; - } - else - tree->root_tree = tree; - - children = tree->children; - while (children) - { - child = children->data; - children = children->next; - - if (GTK_WIDGET_VISIBLE (child) && - !GTK_WIDGET_MAPPED (child)) - gtk_widget_map (child); - - if (GTK_TREE_ITEM2 (child)->subtree) - { - child = GTK_WIDGET (GTK_TREE_ITEM2 (child)->subtree); - - if (GTK_WIDGET_VISIBLE (child) && !GTK_WIDGET_MAPPED (child)) - gtk_widget_map (child); - } - } - - gdk_window_show (widget->window); -} - -static gint -gtk_tree2_motion_notify (GtkWidget *widget, - GdkEventMotion *event) -{ - g_return_val_if_fail (widget != NULL, FALSE); - g_return_val_if_fail (GTK_IS_TREE2 (widget), FALSE); - g_return_val_if_fail (event != NULL, FALSE); - -#ifdef TREE_DEBUG - g_message("gtk_tree2_motion_notify\n"); -#endif /* TREE_DEBUG */ - - return FALSE; -} - -static void -gtk_tree2_realize (GtkWidget *widget) -{ - GdkWindowAttr attributes; - gint attributes_mask; - - - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_TREE2 (widget)); - - GTK_WIDGET_SET_FLAGS (widget, GTK_REALIZED); - - attributes.window_type = GDK_WINDOW_CHILD; - attributes.x = widget->allocation.x; - attributes.y = widget->allocation.y; - attributes.width = widget->allocation.width; - attributes.height = widget->allocation.height; - attributes.wclass = GDK_INPUT_OUTPUT; - attributes.visual = gtk_widget_get_visual (widget); - attributes.colormap = gtk_widget_get_colormap (widget); - attributes.event_mask = gtk_widget_get_events (widget) | GDK_EXPOSURE_MASK; - - attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP; - - widget->window = gdk_window_new (gtk_widget_get_parent_window (widget), &attributes, attributes_mask); - gdk_window_set_user_data (widget->window, widget); - - widget->style = gtk_style_attach (widget->style, widget->window); - gdk_window_set_background (widget->window, - &widget->style->base[GTK_STATE_NORMAL]); -} - -void -gtk_tree2_remove_item (GtkTree2 *container, - GtkWidget *widget) -{ - GList *item_list; - - g_return_if_fail (container != NULL); - g_return_if_fail (GTK_IS_TREE2 (container)); - g_return_if_fail (widget != NULL); - g_return_if_fail (container == GTK_TREE2 (widget->parent)); - - item_list = g_list_append (NULL, widget); - - gtk_tree2_remove_items (GTK_TREE2 (container), item_list); - - g_list_free (item_list); -} - -/* used by gtk_tree2_remove_items to make the function independant of - order in list of items to remove. - Sort item bu depth in tree */ -static gint -gtk_tree2_sort_item_by_depth(GtkWidget* a, GtkWidget* b) -{ - if((GTK_TREE2(a->parent)->level) < (GTK_TREE2(b->parent)->level)) - return 1; - if((GTK_TREE2(a->parent)->level) > (GTK_TREE2(b->parent)->level)) - return -1; - - return 0; -} - -void -gtk_tree2_remove_items (GtkTree2 *tree, - GList *items) -{ - GtkWidget *widget; - GList *selected_widgets; - GList *tmp_list; - GList *sorted_list; - GtkTree2 *real_tree; - GtkTree2 *root_tree; - - g_return_if_fail (tree != NULL); - g_return_if_fail (GTK_IS_TREE2 (tree)); - -#ifdef TREE_DEBUG - g_message("+ gtk_tree2_remove_items [ tree %#x items list %#x ]\n", (int)tree, (int)items); -#endif /* TREE_DEBUG */ - - /* We may not yet be mapped, so we actively have to find our - * root tree - */ - if (tree->root_tree) - root_tree = tree->root_tree; - else - { - GtkWidget *tmp = GTK_WIDGET (tree); - while (tmp->parent && GTK_IS_TREE2 (tmp->parent)) - tmp = tmp->parent; - - root_tree = GTK_TREE2 (tmp); - } - - tmp_list = items; - selected_widgets = NULL; - sorted_list = NULL; - widget = NULL; - -#ifdef TREE_DEBUG - g_message("* sort list by depth\n"); -#endif /* TREE_DEBUG */ - - while (tmp_list) - { - -#ifdef TREE_DEBUG - g_message ("* item [%#x] depth [%d]\n", - (int)tmp_list->data, - (int)GTK_TREE2(GTK_WIDGET(tmp_list->data)->parent)->level); -#endif /* TREE_DEBUG */ - - sorted_list = g_list_insert_sorted(sorted_list, - tmp_list->data, - (GCompareFunc)gtk_tree2_sort_item_by_depth); - tmp_list = g_list_next(tmp_list); - } - -#ifdef TREE_DEBUG - /* print sorted list */ - g_message("* sorted list result\n"); - tmp_list = sorted_list; - while(tmp_list) - { - g_message("* item [%#x] depth [%d]\n", - (int)tmp_list->data, - (int)GTK_TREE2(GTK_WIDGET(tmp_list->data)->parent)->level); - tmp_list = g_list_next(tmp_list); - } -#endif /* TREE_DEBUG */ - -#ifdef TREE_DEBUG - g_message("* scan sorted list\n"); -#endif /* TREE_DEBUG */ - - tmp_list = sorted_list; - while (tmp_list) - { - widget = tmp_list->data; - tmp_list = tmp_list->next; - -#ifdef TREE_DEBUG - g_message("* item [%#x] subtree [%#x]\n", - (int)widget, (int)GTK_TREE_ITEM2_SUBTREE(widget)); -#endif /* TREE_DEBUG */ - - /* get real owner of this widget */ - real_tree = GTK_TREE2(widget->parent); -#ifdef TREE_DEBUG - g_message("* subtree having this widget [%#x]\n", (int)real_tree); -#endif /* TREE_DEBUG */ - - - if (widget->state == GTK_STATE_SELECTED) - { - selected_widgets = g_list_prepend (selected_widgets, widget); -#ifdef TREE_DEBUG - g_message("* selected widget - adding it in selected list [%#x]\n", - (int)selected_widgets); -#endif /* TREE_DEBUG */ - } - - /* remove this item from its real parent */ -#ifdef TREE_DEBUG - g_message("* remove widget from its owner tree\n"); -#endif /* TREE_DEBUG */ - real_tree->children = g_list_remove (real_tree->children, widget); - - /* remove subtree associate at this item if it exist */ - if(GTK_TREE_ITEM2(widget)->subtree) - { -#ifdef TREE_DEBUG - g_message("* remove subtree associate at this item [%#x]\n", - (int) GTK_TREE_ITEM2(widget)->subtree); -#endif /* TREE_DEBUG */ - if (GTK_WIDGET_MAPPED (GTK_TREE_ITEM2(widget)->subtree)) - gtk_widget_unmap (GTK_TREE_ITEM2(widget)->subtree); - - gtk_widget_unparent (GTK_TREE_ITEM2(widget)->subtree); - GTK_TREE_ITEM2(widget)->subtree = NULL; - } - - /* really remove widget for this item */ -#ifdef TREE_DEBUG - g_message("* unmap and unparent widget [%#x]\n", (int)widget); -#endif /* TREE_DEBUG */ - if (GTK_WIDGET_MAPPED (widget)) - gtk_widget_unmap (widget); - - gtk_widget_unparent (widget); - - /* delete subtree if there is no children in it */ -/* HF supprime */ -/* if(real_tree->children == NULL && - real_tree != root_tree) - { -*/ -#ifdef TREE_DEBUG - g_message("* owner tree don't have children ... destroy it\n"); -#endif /* TREE_DEBUG */ -/* - gtk_tree_item2_remove_subtree(GTK_TREE_ITEM2(real_tree->tree_owner)); - } -*/ -#ifdef TREE_DEBUG - g_message("* next item in list\n"); -#endif /* TREE_DEBUG */ - } - - if (selected_widgets) - { -#ifdef TREE_DEBUG - g_message("* scan selected item list\n"); -#endif /* TREE_DEBUG */ - tmp_list = selected_widgets; - while (tmp_list) - { - widget = tmp_list->data; - tmp_list = tmp_list->next; - -#ifdef TREE_DEBUG - g_message("* widget [%#x] subtree [%#x]\n", - (int)widget, (int)GTK_TREE_ITEM2_SUBTREE(widget)); -#endif /* TREE_DEBUG */ - - /* remove widget of selection */ - root_tree->selection = g_list_remove (root_tree->selection, widget); - - /* unref it to authorize is destruction */ - gtk_widget_unref (widget); - } - - /* emit only one selection_changed signal */ - gtk_signal_emit (GTK_OBJECT (root_tree), - tree_signals[SELECTION_CHANGED]); - } - -#ifdef TREE_DEBUG - g_message("* free selected_widgets list\n"); -#endif /* TREE_DEBUG */ - g_list_free (selected_widgets); - g_list_free (sorted_list); - - if (root_tree->children && !root_tree->selection && - (root_tree->selection_mode == GTK_SELECTION_BROWSE)) - { -#ifdef TREE_DEBUG - g_message("* BROWSE mode, select another item\n"); -#endif /* TREE_DEBUG */ - widget = root_tree->children->data; - gtk_tree2_select_child (root_tree, widget); - } - - if (GTK_WIDGET_VISIBLE (root_tree)) - { -#ifdef TREE_DEBUG - g_message("* query queue resizing for root_tree\n"); -#endif /* TREE_DEBUG */ - gtk_widget_queue_resize (GTK_WIDGET (root_tree)); - } -} - -void -gtk_tree2_select_child (GtkTree2 *tree, - GtkWidget *tree_item) -{ - g_return_if_fail (tree != NULL); - g_return_if_fail (GTK_IS_TREE2 (tree)); - g_return_if_fail (tree_item != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (tree_item)); - - gtk_signal_emit (GTK_OBJECT (tree), tree_signals[SELECT_CHILD], tree_item); -} - -void -gtk_tree2_select_next_child (GtkTree2 *tree, - GtkWidget *tree_item, gboolean descend) -{ - GList *children; - - g_return_if_fail (tree != NULL); - g_return_if_fail (GTK_IS_TREE2 (tree)); - g_return_if_fail (tree_item != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (tree_item)); - - if (descend && GTK_TREE2(GTK_TREE_ITEM2(tree_item)->subtree)->children) - { - gtk_signal_emit (GTK_OBJECT (GTK_TREE_ITEM2(tree_item)->subtree), tree_signals[SELECT_CHILD], GTK_TREE2(GTK_TREE_ITEM2(tree_item)->subtree)->children->data); - return; - } - - children = tree->children; - while (children) - { - if (tree_item == GTK_WIDGET (children->data)) - break; - - children = children->next; - } - if (!children) return; - - if (children->next) - gtk_signal_emit (GTK_OBJECT (tree), tree_signals[SELECT_CHILD], children->next->data); - else if (tree != tree->root_tree) - { - children = GTK_TREE2(GTK_WIDGET(tree)->parent)->children; - gtk_tree2_select_next_child (GTK_TREE2(GTK_WIDGET(tree)->parent), tree->tree_owner, FALSE); - } - -} - -/* we know that tree is not the roor_tree and that - tree_items always have subtrees */ -void -gtk_tree2_select_prev_child (GtkTree2 *tree, - GtkWidget *tree_item) -{ - GList *children; - GtkTreeItem2 *tree_item2; - - g_return_if_fail (tree != NULL); - g_return_if_fail (GTK_IS_TREE2 (tree)); - g_return_if_fail (tree_item != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (tree_item)); - - - children = tree->children; - while (children) - { - if (tree_item == GTK_WIDGET (children->data)) - break; - - children = children->next; - } - if (!children) return; - - if (children = children->prev) - { - tree_item2 = GTK_TREE_ITEM2(children->data); - while (GTK_TREE2(tree_item2->subtree)->children) - { - children = GTK_TREE2(tree_item2->subtree)->children; - while (children->next) - children = children->next; - tree_item2 = GTK_TREE_ITEM2(children->data); - } - gtk_signal_emit (GTK_OBJECT (GTK_WIDGET(tree_item2)->parent), tree_signals[SELECT_CHILD], tree_item2); - } - else - { - gtk_signal_emit (GTK_OBJECT (GTK_WIDGET(tree)->parent), tree_signals[SELECT_CHILD], tree->tree_owner); - } - -} - -void -gtk_tree2_select_item (GtkTree2 *tree, - gint item) -{ - GList *tmp_list; - - g_return_if_fail (tree != NULL); - g_return_if_fail (GTK_IS_TREE2 (tree)); - - tmp_list = g_list_nth (tree->children, item); - if (tmp_list) - gtk_tree2_select_child (tree, GTK_WIDGET (tmp_list->data)); - -} - -static void -gtk_tree2_size_allocate (GtkWidget *widget, - GtkAllocation *allocation) -{ - GtkTree2 *tree; - GtkWidget *child, *subtree; - GtkAllocation child_allocation; - GList *children; - - - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_TREE2 (widget)); - g_return_if_fail (allocation != NULL); - - tree = GTK_TREE2 (widget); - - widget->allocation = *allocation; - if (GTK_WIDGET_REALIZED (widget)) - gdk_window_move_resize (widget->window, - allocation->x, allocation->y, - allocation->width, allocation->height); - - if (tree->children) - { - child_allocation.x = GTK_CONTAINER (tree)->border_width; - child_allocation.y = GTK_CONTAINER (tree)->border_width; - child_allocation.width = MAX (1, (gint)allocation->width - child_allocation.x * 2); - - children = tree->children; - - while (children) - { - child = children->data; - children = children->next; - - if (GTK_WIDGET_VISIBLE (child)) - { - GtkRequisition child_requisition; - gtk_widget_get_child_requisition (child, &child_requisition); - - child_allocation.height = child_requisition.height; - - gtk_widget_size_allocate (child, &child_allocation); - - child_allocation.y += child_allocation.height; - - if((subtree = GTK_TREE_ITEM2(child)->subtree)) - if(GTK_WIDGET_VISIBLE (subtree)) - { - child_allocation.height = subtree->requisition.height; - gtk_widget_size_allocate (subtree, &child_allocation); - child_allocation.y += child_allocation.height; - } - } - } - } - -} - -static void -gtk_tree2_size_request (GtkWidget *widget, - GtkRequisition *requisition) -{ - GtkTree2 *tree; - GtkWidget *child, *subtree; - GList *children; - GtkRequisition child_requisition; - - - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_TREE2 (widget)); - g_return_if_fail (requisition != NULL); - - tree = GTK_TREE2 (widget); - requisition->width = 0; - requisition->height = 0; - - children = tree->children; - while (children) - { - child = children->data; - children = children->next; - - if (GTK_WIDGET_VISIBLE (child)) - { - gtk_widget_size_request (child, &child_requisition); - - requisition->width = MAX (requisition->width, child_requisition.width); - requisition->height += child_requisition.height; - - if((subtree = GTK_TREE_ITEM2(child)->subtree) && - GTK_WIDGET_VISIBLE (subtree)) - { - gtk_widget_size_request (subtree, &child_requisition); - - requisition->width = MAX (requisition->width, - child_requisition.width); - - requisition->height += child_requisition.height; - } - } - } - - requisition->width += GTK_CONTAINER (tree)->border_width * 2; - requisition->height += GTK_CONTAINER (tree)->border_width * 2; - - requisition->width = MAX (requisition->width, 1); - requisition->height = MAX (requisition->height, 1); - -} - -static void -gtk_tree2_unmap (GtkWidget *widget) -{ - - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_TREE2 (widget)); - - GTK_WIDGET_UNSET_FLAGS (widget, GTK_MAPPED); - gdk_window_hide (widget->window); - -} - -void -gtk_tree2_unselect_child (GtkTree2 *tree, - GtkWidget *tree_item) -{ - g_return_if_fail (tree != NULL); - g_return_if_fail (GTK_IS_TREE2 (tree)); - g_return_if_fail (tree_item != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (tree_item)); - - gtk_signal_emit (GTK_OBJECT (tree), tree_signals[UNSELECT_CHILD], tree_item); -} - -void -gtk_tree2_unselect_item (GtkTree2 *tree, - gint item) -{ - GList *tmp_list; - - g_return_if_fail (tree != NULL); - g_return_if_fail (GTK_IS_TREE2 (tree)); - - tmp_list = g_list_nth (tree->children, item); - if (tmp_list) - gtk_tree2_unselect_child (tree, GTK_WIDGET (tmp_list->data)); - -} - -static void -gtk_real_tree2_select_child (GtkTree2 *tree, - GtkWidget *child) -{ - GList *selection, *root_selection; - GList *tmp_list; - GtkWidget *tmp_item; - - g_return_if_fail (tree != NULL); - g_return_if_fail (GTK_IS_TREE2 (tree)); - g_return_if_fail (child != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (child)); - - root_selection = tree->root_tree->selection; - - switch (tree->root_tree->selection_mode) - { - case GTK_SELECTION_SINGLE: - - selection = root_selection; - - /* remove old selection list */ - while (selection) - { - tmp_item = selection->data; - - if (tmp_item != child) - { - gtk_tree_item2_deselect (GTK_TREE_ITEM2 (tmp_item)); - - tmp_list = selection; - selection = selection->next; - - root_selection = g_list_remove_link (root_selection, tmp_list); - gtk_widget_unref (tmp_item); - - g_list_free (tmp_list); - } - else - selection = selection->next; - } - - if (child->state == GTK_STATE_NORMAL) - { - gtk_tree_item2_select (GTK_TREE_ITEM2 (child)); - root_selection = g_list_prepend (root_selection, child); - gtk_widget_ref (child); - } - else if (child->state == GTK_STATE_SELECTED) - { - gtk_tree_item2_deselect (GTK_TREE_ITEM2 (child)); - root_selection = g_list_remove (root_selection, child); - gtk_widget_unref (child); - } - - tree->root_tree->selection = root_selection; - - gtk_signal_emit (GTK_OBJECT (tree->root_tree), - tree_signals[SELECTION_CHANGED]); - break; - - - case GTK_SELECTION_BROWSE: - selection = root_selection; - - while (selection) - { - tmp_item = selection->data; - - if (tmp_item != child) - { - gtk_tree_item2_deselect (GTK_TREE_ITEM2 (tmp_item)); - - tmp_list = selection; - selection = selection->next; - - root_selection = g_list_remove_link (root_selection, tmp_list); - gtk_widget_unref (tmp_item); - - g_list_free (tmp_list); - } - else - selection = selection->next; - } - - tree->root_tree->selection = root_selection; - - if (child->state == GTK_STATE_NORMAL) - { - gtk_tree_item2_select (GTK_TREE_ITEM2 (child)); - root_selection = g_list_prepend (root_selection, child); - gtk_widget_ref (child); - tree->root_tree->selection = root_selection; - gtk_signal_emit (GTK_OBJECT (tree->root_tree), - tree_signals[SELECTION_CHANGED]); - } - break; - - case GTK_SELECTION_MULTIPLE: - if (child->state == GTK_STATE_NORMAL) - { - gtk_tree_item2_select (GTK_TREE_ITEM2 (child)); - root_selection = g_list_prepend (root_selection, child); - gtk_widget_ref (child); - tree->root_tree->selection = root_selection; - gtk_signal_emit (GTK_OBJECT (tree->root_tree), - tree_signals[SELECTION_CHANGED]); - } - else if (child->state == GTK_STATE_SELECTED) - { - gtk_tree_item2_deselect (GTK_TREE_ITEM2 (child)); - root_selection = g_list_remove (root_selection, child); - gtk_widget_unref (child); - tree->root_tree->selection = root_selection; - gtk_signal_emit (GTK_OBJECT (tree->root_tree), - tree_signals[SELECTION_CHANGED]); - } - break; - - case GTK_SELECTION_EXTENDED: - break; - } -} - -static void -gtk_real_tree2_unselect_child (GtkTree2 *tree, - GtkWidget *child) -{ - g_return_if_fail (tree != NULL); - g_return_if_fail (GTK_IS_TREE2 (tree)); - g_return_if_fail (child != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (child)); - - switch (tree->selection_mode) - { - case GTK_SELECTION_SINGLE: - case GTK_SELECTION_MULTIPLE: - case GTK_SELECTION_BROWSE: - if (child->state == GTK_STATE_SELECTED) - { - GtkTree2* root_tree = GTK_TREE2_ROOT_TREE(tree); - gtk_tree_item2_deselect (GTK_TREE_ITEM2 (child)); - root_tree->selection = g_list_remove (root_tree->selection, child); - gtk_widget_unref (child); - gtk_signal_emit (GTK_OBJECT (tree->root_tree), - tree_signals[SELECTION_CHANGED]); - } - break; - - case GTK_SELECTION_EXTENDED: - break; - } -} - -void -gtk_tree2_set_selection_mode (GtkTree2 *tree, - GtkSelectionMode mode) -{ - g_return_if_fail (tree != NULL); - g_return_if_fail (GTK_IS_TREE2 (tree)); - - tree->selection_mode = mode; -} - -void -gtk_tree2_set_view_mode (GtkTree2 *tree, - GtkTree2ViewMode mode) -{ - g_return_if_fail (tree != NULL); - g_return_if_fail (GTK_IS_TREE2 (tree)); - - tree->view_mode = mode; -} - -void -gtk_tree2_set_view_lines (GtkTree2 *tree, - guint flag) -{ - g_return_if_fail (tree != NULL); - g_return_if_fail (GTK_IS_TREE2 (tree)); - - tree->view_line = flag; -} - -void -gtk_tree2_item_up_1 (GtkTree2 *tree, - guint pos) -{ - GList *tmp; - guint length; - gpointer data; - - g_return_if_fail (tree != NULL); - g_return_if_fail (GTK_IS_TREE2 (tree)); - - tmp = tree->children; - length = g_list_length (tmp); - if (pos <= 0 || pos >= length) { return; } - data = g_list_nth_data (tree->children, pos); - g_list_remove (tree->children, data); - tree->children = g_list_insert (tree->children, data, pos-1); -} diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/gtktree2.h b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/gtktree2.h deleted file mode 100644 index 291a1d1b3..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/gtktree2.h +++ /dev/null @@ -1,139 +0,0 @@ -/* GTK - The GIMP Toolkit - * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library 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 - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -/* - * Modified by the GTK+ Team and others 1997-1999. See the AUTHORS - * file for a list of people on the GTK+ Team. See the ChangeLog - * files for a list of changes. These files are distributed with - * GTK+ at ftp://ftp.gtk.org/pub/gtk/. - */ - -#ifndef __GTK_TREE2_H__ -#define __GTK_TREE2_H__ - -/* set this flag to enable tree debugging output */ -/* #define TREE_DEBUG */ - -#include -#include - - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - - -#define GTK_TYPE_TREE2 (gtk_tree2_get_type ()) -#define GTK_TREE2(obj) (GTK_CHECK_CAST ((obj), GTK_TYPE_TREE2, GtkTree2)) -#define GTK_TREE2_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GTK_TYPE_TREE2, GtkTree2Class)) -#define GTK_IS_TREE2(obj) (GTK_CHECK_TYPE ((obj), GTK_TYPE_TREE2)) -#define GTK_IS_TREE2_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GTK_TYPE_TREE2)) - -#define GTK_IS_ROOT_TREE2(obj) ((GtkObject*) GTK_TREE2(obj)->root_tree == (GtkObject*)obj) -#define GTK_TREE2_ROOT_TREE(obj) (GTK_TREE2(obj)->root_tree ? GTK_TREE2(obj)->root_tree : GTK_TREE2(obj)) -#define GTK_TREE2_SELECTION(obj) (GTK_TREE2_ROOT_TREE(obj)->selection) - -typedef enum -{ - GTK_TREE2_VIEW_LINE, /* default view mode */ - GTK_TREE2_VIEW_ITEM -} GtkTree2ViewMode; - -typedef struct _GtkTree2 GtkTree2; -typedef struct _GtkTree2Class GtkTree2Class; - -struct _GtkTree2 -{ - GtkContainer container; - - GList *children; - - GtkTree2* root_tree; /* owner of selection list */ - GtkWidget* tree_owner; - GList *selection; - guint level; - guint indent_value; - guint current_indent; - guint selection_mode : 2; - guint view_mode : 1; - guint view_line : 1; -}; - -struct _GtkTree2Class -{ - GtkContainerClass parent_class; - - void (* selection_changed) (GtkTree2 *tree); - void (* select_child) (GtkTree2 *tree, - GtkWidget *child); - void (* unselect_child) (GtkTree2 *tree, - GtkWidget *child); -}; - - -GtkType gtk_tree2_get_type (void); -GtkWidget* gtk_tree2_new (void); -void gtk_tree2_append (GtkTree2 *tree, - GtkWidget *tree_item); -void gtk_tree2_prepend (GtkTree2 *tree, - GtkWidget *tree_item); -void gtk_tree2_insert (GtkTree2 *tree, - GtkWidget *tree_item, - gint position); -void gtk_tree2_remove_items (GtkTree2 *tree, - GList *items); -void gtk_tree2_clear_items (GtkTree2 *tree, - gint start, - gint end); -void gtk_tree2_select_item (GtkTree2 *tree, - gint item); -void gtk_tree2_unselect_item (GtkTree2 *tree, - gint item); -void gtk_tree2_select_child (GtkTree2 *tree, - GtkWidget *tree_item); -void gtk_tree2_unselect_child (GtkTree2 *tree, - GtkWidget *tree_item); -gint gtk_tree2_child_position (GtkTree2 *tree, - GtkWidget *child); -void gtk_tree2_set_selection_mode (GtkTree2 *tree, - GtkSelectionMode mode); -void gtk_tree2_set_view_mode (GtkTree2 *tree, - GtkTree2ViewMode mode); -void gtk_tree2_set_view_lines (GtkTree2 *tree, - guint flag); - -/* deprecated function, use gtk_container_remove instead. - */ -void gtk_tree2_remove_item (GtkTree2 *tree, - GtkWidget *child); -void gtk_tree2_item_up (GtkTree2 *tree, - gint position); - -void gtk_tree2_select_next_child (GtkTree2 *tree, - GtkWidget *tree_item, gboolean descend); - -void gtk_tree2_select_prev_child (GtkTree2 *tree, - GtkWidget *tree_item); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - - -#endif /* __GTK_TREE2_H__ */ diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/gtktreeitem2.c b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/gtktreeitem2.c deleted file mode 100644 index 7e6f8116b..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/gtktreeitem2.c +++ /dev/null @@ -1,1110 +0,0 @@ -/* GTK - The GIMP Toolkit - * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library 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 - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -/* - * Modified by the GTK+ Team and others 1997-1999. See the AUTHORS - * file for a list of people on the GTK+ Team. See the ChangeLog - * files for a list of changes. These files are distributed with - * GTK+ at ftp://ftp.gtk.org/pub/gtk/. - */ - -#include -#include "gtktree2.h" -#include "gtktreeitem2.h" -#include -#include -#include -#include - -#include "tree_plus.xpm" -#include "tree_minus.xpm" - -#define DEFAULT_DELTA 9 - -enum { - COLLAPSE_TREE, - EXPAND_TREE, - LAST_SIGNAL -}; - -typedef struct _GtkTree2Pixmaps GtkTree2Pixmaps; - -struct _GtkTree2Pixmaps { - gint refcount; - GdkColormap *colormap; - - GdkPixmap *pixmap_plus; - GdkPixmap *pixmap_minus; - GdkBitmap *mask_plus; - GdkBitmap *mask_minus; -}; - -static GList *pixmaps = NULL; - -static void gtk_tree_item2_class_init (GtkTreeItem2Class *klass); -static void gtk_tree_item2_init (GtkTreeItem2 *tree_item); -static void gtk_tree_item2_realize (GtkWidget *widget); -static void gtk_tree_item2_size_request (GtkWidget *widget, - GtkRequisition *requisition); -static void gtk_tree_item2_size_allocate (GtkWidget *widget, - GtkAllocation *allocation); -static void gtk_tree_item2_draw (GtkWidget *widget, - GdkRectangle *area); -static void gtk_tree_item2_draw_focus (GtkWidget *widget); -static void gtk_tree_item2_paint (GtkWidget *widget, - GdkRectangle *area); -static gint gtk_tree_item2_button_press (GtkWidget *widget, - GdkEventButton *event); -static gint gtk_tree_item2_expose (GtkWidget *widget, - GdkEventExpose *event); -static gint gtk_tree_item2_focus_in (GtkWidget *widget, - GdkEventFocus *event); -static gint gtk_tree_item2_focus_out (GtkWidget *widget, - GdkEventFocus *event); -static void gtk_tree_item2_forall (GtkContainer *container, - gboolean include_internals, - GtkCallback callback, - gpointer callback_data); - -static void gtk_real_tree_item2_select (GtkItem *item); -static void gtk_real_tree_item2_deselect (GtkItem *item); -static void gtk_real_tree_item2_toggle (GtkItem *item); -static void gtk_real_tree_item2_expand (GtkTreeItem2 *item); -static void gtk_real_tree_item2_collapse (GtkTreeItem2 *item); -static void gtk_real_tree_item2_expand (GtkTreeItem2 *item); -static void gtk_real_tree_item2_collapse (GtkTreeItem2 *item); -static void gtk_tree_item2_destroy (GtkObject *object); -static void gtk_tree_item2_subtree_button_click (GtkWidget *widget); -static void gtk_tree_item2_subtree_button_changed_state (GtkWidget *widget); - -static void gtk_tree_item2_map(GtkWidget*); -static void gtk_tree_item2_unmap(GtkWidget*); - -static void gtk_tree_item2_add_pixmaps (GtkTreeItem2 *tree_item); -static void gtk_tree_item2_remove_pixmaps (GtkTreeItem2 *tree_item); - -static GtkItemClass *parent_class = NULL; -static guint tree_item_signals[LAST_SIGNAL] = { 0 }; - -GtkType -gtk_tree_item2_get_type (void) -{ - static GtkType tree_item_type = 0; - - if (!tree_item_type) - { - static const GtkTypeInfo tree_item_info = - { - "GtkTreeItem", - sizeof (GtkTreeItem2), - sizeof (GtkTreeItem2Class), - (GtkClassInitFunc) gtk_tree_item2_class_init, - (GtkObjectInitFunc) gtk_tree_item2_init, - /* reserved_1 */ NULL, - /* reserved_2 */ NULL, - (GtkClassInitFunc) NULL, - }; - - tree_item_type = gtk_type_unique (gtk_item_get_type (), &tree_item_info); - } - - return tree_item_type; -} - -static void -gtk_tree_item2_class_init (GtkTreeItem2Class *class) -{ - GtkObjectClass *object_class; - GtkWidgetClass *widget_class; - GtkContainerClass *container_class; - GtkItemClass *item_class; - - object_class = (GtkObjectClass*) class; - widget_class = (GtkWidgetClass*) class; - item_class = (GtkItemClass*) class; - container_class = (GtkContainerClass*) class; - - parent_class = gtk_type_class (gtk_item_get_type ()); - - tree_item_signals[EXPAND_TREE] = - gtk_signal_new ("expand", - GTK_RUN_FIRST, - object_class->type, - GTK_SIGNAL_OFFSET (GtkTreeItem2Class, expand), - gtk_marshal_NONE__NONE, - GTK_TYPE_NONE, 0); - tree_item_signals[COLLAPSE_TREE] = - gtk_signal_new ("collapse", - GTK_RUN_FIRST, - object_class->type, - GTK_SIGNAL_OFFSET (GtkTreeItem2Class, collapse), - gtk_marshal_NONE__NONE, - GTK_TYPE_NONE, 0); - - gtk_object_class_add_signals (object_class, tree_item_signals, LAST_SIGNAL); - - object_class->destroy = gtk_tree_item2_destroy; - - widget_class->realize = gtk_tree_item2_realize; - widget_class->size_request = gtk_tree_item2_size_request; - widget_class->size_allocate = gtk_tree_item2_size_allocate; - widget_class->draw = gtk_tree_item2_draw; - widget_class->draw_focus = gtk_tree_item2_draw_focus; - widget_class->button_press_event = gtk_tree_item2_button_press; - widget_class->expose_event = gtk_tree_item2_expose; - widget_class->focus_in_event = gtk_tree_item2_focus_in; - widget_class->focus_out_event = gtk_tree_item2_focus_out; - widget_class->map = gtk_tree_item2_map; - widget_class->unmap = gtk_tree_item2_unmap; - - container_class->forall = gtk_tree_item2_forall; - - item_class->select = gtk_real_tree_item2_select; - item_class->deselect = gtk_real_tree_item2_deselect; - item_class->toggle = gtk_real_tree_item2_toggle; - - class->expand = gtk_real_tree_item2_expand; - class->collapse = gtk_real_tree_item2_collapse; -} - -/* callback for event box mouse event */ -static void -gtk_tree_item2_subtree_button_click (GtkWidget *widget) -{ - GtkTreeItem2* item; - - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_EVENT_BOX (widget)); - - item = (GtkTreeItem2*) gtk_object_get_user_data (GTK_OBJECT (widget)); - if (!GTK_WIDGET_IS_SENSITIVE (item)) - return; - - if (item->expanded) - gtk_tree_item2_collapse (item); - else - gtk_tree_item2_expand (item); -} - -/* callback for event box state changed */ -static void -gtk_tree_item2_subtree_button_changed_state (GtkWidget *widget) -{ - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_EVENT_BOX (widget)); - - if (GTK_WIDGET_VISIBLE (widget)) - { - - if (widget->state == GTK_STATE_NORMAL) - gdk_window_set_background (widget->window, &widget->style->base[widget->state]); - else - gdk_window_set_background (widget->window, &widget->style->bg[widget->state]); - - if (GTK_WIDGET_DRAWABLE (widget)) - gdk_window_clear_area (widget->window, 0, 0, - widget->allocation.width, widget->allocation.height); - } -} - -static void -gtk_tree_item2_init (GtkTreeItem2 *tree_item) -{ - GtkWidget *eventbox, *pixmapwid; - - g_return_if_fail (tree_item != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (tree_item)); - - tree_item->expanded = FALSE; - tree_item->subtree = NULL; - GTK_WIDGET_SET_FLAGS (tree_item, GTK_CAN_FOCUS); - - /* create an event box containing one pixmaps */ - eventbox = gtk_event_box_new(); - gtk_widget_set_events (eventbox, GDK_BUTTON_PRESS_MASK); - gtk_signal_connect(GTK_OBJECT(eventbox), "state_changed", - (GtkSignalFunc)gtk_tree_item2_subtree_button_changed_state, - (gpointer)NULL); - gtk_signal_connect(GTK_OBJECT(eventbox), "realize", - (GtkSignalFunc)gtk_tree_item2_subtree_button_changed_state, - (gpointer)NULL); -/* HF inutile - gtk_signal_connect(GTK_OBJECT(eventbox), "button_press_event", - (GtkSignalFunc)gtk_tree_item2_subtree_button_click, - (gpointer)NULL); -*/ - gtk_object_set_user_data(GTK_OBJECT(eventbox), tree_item); - tree_item->pixmaps_box = eventbox; - - /* create pixmap for button '+' */ - pixmapwid = gtk_type_new (gtk_pixmap_get_type ()); - if (!tree_item->expanded) - gtk_container_add (GTK_CONTAINER (eventbox), pixmapwid); - gtk_widget_show (pixmapwid); - tree_item->plus_pix_widget = pixmapwid; - gtk_widget_ref (tree_item->plus_pix_widget); - gtk_object_sink (GTK_OBJECT (tree_item->plus_pix_widget)); - - /* create pixmap for button '-' */ - pixmapwid = gtk_type_new (gtk_pixmap_get_type ()); - if (tree_item->expanded) - gtk_container_add (GTK_CONTAINER (eventbox), pixmapwid); - gtk_widget_show (pixmapwid); - tree_item->minus_pix_widget = pixmapwid; - gtk_widget_ref (tree_item->minus_pix_widget); - gtk_object_sink (GTK_OBJECT (tree_item->minus_pix_widget)); - - gtk_widget_set_parent (eventbox, GTK_WIDGET (tree_item)); -} - - -GtkWidget* -gtk_tree_item2_new (void) -{ - GtkWidget *tree_item; - - tree_item = GTK_WIDGET (gtk_type_new (gtk_tree_item2_get_type ())); - - return tree_item; -} - -GtkWidget* -gtk_tree_item2_new_with_label (gchar *label) -{ - GtkWidget *tree_item; - GtkWidget *label_widget; - - tree_item = gtk_tree_item2_new (); - label_widget = gtk_label_new (label); - gtk_misc_set_alignment (GTK_MISC (label_widget), 0.0, 0.5); - - gtk_container_add (GTK_CONTAINER (tree_item), label_widget); - gtk_widget_show (label_widget); - - - return tree_item; -} - -void -gtk_tree_item2_set_subtree (GtkTreeItem2 *tree_item, - GtkWidget *subtree) -{ - g_return_if_fail (tree_item != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (tree_item)); - g_return_if_fail (subtree != NULL); - g_return_if_fail (GTK_IS_TREE2 (subtree)); - - if (tree_item->subtree) - { - g_warning("there is already a subtree for this tree item\n"); - return; - } - - tree_item->subtree = subtree; - GTK_TREE2 (subtree)->tree_owner = GTK_WIDGET (tree_item); - - /* show subtree button */ - if (tree_item->pixmaps_box) - gtk_widget_show (tree_item->pixmaps_box); - - if (tree_item->expanded) - gtk_widget_show (subtree); - else - gtk_widget_hide (subtree); - - gtk_widget_set_parent (subtree, GTK_WIDGET (tree_item)->parent); - - if (GTK_WIDGET_REALIZED (subtree->parent)) - gtk_widget_realize (subtree); - - if (GTK_WIDGET_VISIBLE (subtree->parent) && GTK_WIDGET_VISIBLE (subtree)) - { - if (GTK_WIDGET_MAPPED (subtree->parent)) - gtk_widget_map (subtree); - - gtk_widget_queue_resize (subtree); - } -} - -void -gtk_tree_item2_select (GtkTreeItem2 *tree_item) -{ - g_return_if_fail (tree_item != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (tree_item)); - - gtk_item_select (GTK_ITEM (tree_item)); -} - -void -gtk_tree_item2_deselect (GtkTreeItem2 *tree_item) -{ - g_return_if_fail (tree_item != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (tree_item)); - - gtk_item_deselect (GTK_ITEM (tree_item)); -} - -void -gtk_tree_item2_expand (GtkTreeItem2 *tree_item) -{ - g_return_if_fail (tree_item != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (tree_item)); - - gtk_signal_emit (GTK_OBJECT (tree_item), tree_item_signals[EXPAND_TREE], NULL); -} - -void -gtk_tree_item2_collapse (GtkTreeItem2 *tree_item) -{ - g_return_if_fail (tree_item != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (tree_item)); - - gtk_signal_emit (GTK_OBJECT (tree_item), tree_item_signals[COLLAPSE_TREE], NULL); -} - -static void -gtk_tree_item2_add_pixmaps (GtkTreeItem2 *tree_item) -{ - GList *tmp_list; - GdkColormap *colormap; - GtkTree2Pixmaps *pixmap_node = NULL; - - g_return_if_fail (tree_item != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (tree_item)); - - if (tree_item->pixmaps) - return; - - colormap = gtk_widget_get_colormap (GTK_WIDGET (tree_item)); - - tmp_list = pixmaps; - while (tmp_list) - { - pixmap_node = (GtkTree2Pixmaps *)tmp_list->data; - - if (pixmap_node->colormap == colormap) - break; - - tmp_list = tmp_list->next; - } - - if (tmp_list) - { - pixmap_node->refcount++; - tree_item->pixmaps = tmp_list; - } - else - { - pixmap_node = g_new (GtkTree2Pixmaps, 1); - - pixmap_node->colormap = colormap; - gdk_colormap_ref (colormap); - - pixmap_node->refcount = 1; - - /* create pixmaps for plus icon */ - pixmap_node->pixmap_plus = - gdk_pixmap_create_from_xpm_d (GTK_WIDGET (tree_item)->window, - &pixmap_node->mask_plus, - NULL, - tree_plus); - - /* create pixmaps for minus icon */ - pixmap_node->pixmap_minus = - gdk_pixmap_create_from_xpm_d (GTK_WIDGET (tree_item)->window, - &pixmap_node->mask_minus, - NULL, - tree_minus); - - tree_item->pixmaps = pixmaps = g_list_prepend (pixmaps, pixmap_node); - } - - gtk_pixmap_set (GTK_PIXMAP (tree_item->plus_pix_widget), - pixmap_node->pixmap_plus, pixmap_node->mask_plus); - gtk_pixmap_set (GTK_PIXMAP (tree_item->minus_pix_widget), - pixmap_node->pixmap_minus, pixmap_node->mask_minus); -} - -static void -gtk_tree_item2_remove_pixmaps (GtkTreeItem2 *tree_item) -{ - g_return_if_fail (tree_item != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (tree_item)); - - if (tree_item->pixmaps) - { - GtkTree2Pixmaps *pixmap_node = (GtkTree2Pixmaps *)tree_item->pixmaps->data; - - g_assert (pixmap_node->refcount > 0); - - if (--pixmap_node->refcount == 0) - { - gdk_colormap_unref (pixmap_node->colormap); - gdk_pixmap_unref (pixmap_node->pixmap_plus); - gdk_bitmap_unref (pixmap_node->mask_plus); - gdk_pixmap_unref (pixmap_node->pixmap_minus); - gdk_bitmap_unref (pixmap_node->mask_minus); - - pixmaps = g_list_remove_link (pixmaps, tree_item->pixmaps); - g_list_free_1 (tree_item->pixmaps); - g_free (pixmap_node); - } - - tree_item->pixmaps = NULL; - } -} - -static void -gtk_tree_item2_realize (GtkWidget *widget) -{ - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (widget)); - - if (GTK_WIDGET_CLASS (parent_class)->realize) - (* GTK_WIDGET_CLASS (parent_class)->realize) (widget); - - gdk_window_set_background (widget->window, - &widget->style->base[GTK_STATE_NORMAL]); - - gtk_tree_item2_add_pixmaps (GTK_TREE_ITEM2 (widget)); -} - -static void -gtk_tree_item2_size_request (GtkWidget *widget, - GtkRequisition *requisition) -{ - GtkBin *bin; - GtkTreeItem2* item; - GtkRequisition child_requisition; - - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (widget)); - g_return_if_fail (requisition != NULL); - - bin = GTK_BIN (widget); - item = GTK_TREE_ITEM2(widget); - - requisition->width = (GTK_CONTAINER (widget)->border_width + - widget->style->klass->xthickness) * 2; - requisition->height = GTK_CONTAINER (widget)->border_width * 2; - - if (bin->child && GTK_WIDGET_VISIBLE (bin->child)) - { - GtkRequisition pix_requisition; - - gtk_widget_size_request (bin->child, &child_requisition); - - requisition->width += child_requisition.width; - - gtk_widget_size_request (item->pixmaps_box, - &pix_requisition); - requisition->width += pix_requisition.width + DEFAULT_DELTA + - GTK_TREE2 (widget->parent)->current_indent; - - requisition->height += MAX (child_requisition.height, - pix_requisition.height); - } -} - -static void -gtk_tree_item2_size_allocate (GtkWidget *widget, - GtkAllocation *allocation) -{ - GtkBin *bin; - GtkTreeItem2* item; - GtkAllocation child_allocation; - guint border_width; - int temp; - - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (widget)); - g_return_if_fail (allocation != NULL); - - widget->allocation = *allocation; - if (GTK_WIDGET_REALIZED (widget)) - gdk_window_move_resize (widget->window, - allocation->x, allocation->y, - allocation->width, allocation->height); - - bin = GTK_BIN (widget); - item = GTK_TREE_ITEM2(widget); - - if (bin->child) - { - border_width = (GTK_CONTAINER (widget)->border_width + - widget->style->klass->xthickness); - - child_allocation.x = border_width + GTK_TREE2(widget->parent)->current_indent; - child_allocation.y = GTK_CONTAINER (widget)->border_width; - - child_allocation.width = item->pixmaps_box->requisition.width; - child_allocation.height = item->pixmaps_box->requisition.height; - - temp = allocation->height - child_allocation.height; - child_allocation.y += ( temp / 2 ) + ( temp % 2 ); - - gtk_widget_size_allocate (item->pixmaps_box, &child_allocation); - - child_allocation.y = GTK_CONTAINER (widget)->border_width; - child_allocation.height = MAX (1, (gint)allocation->height - child_allocation.y * 2); - child_allocation.x += item->pixmaps_box->requisition.width+DEFAULT_DELTA; - - child_allocation.width = - MAX (1, (gint)allocation->width - ((gint)child_allocation.x + border_width)); - - gtk_widget_size_allocate (bin->child, &child_allocation); - } -} - -static void -gtk_tree_item2_draw_lines (GtkWidget *widget) -{ - GtkTreeItem2* item; - GtkTree2* tree; - guint lx1, ly1, lx2, ly2; - - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (widget)); - - item = GTK_TREE_ITEM2(widget); - tree = GTK_TREE2(widget->parent); - - /* draw vertical line */ - lx1 = item->pixmaps_box->allocation.width; - lx1 = lx2 = ((lx1 / 2) + (lx1 % 2) + - GTK_CONTAINER (widget)->border_width + 1 + tree->current_indent); - ly1 = 0; - ly2 = widget->allocation.height; - - if (g_list_last (tree->children)->data == widget) - ly2 = (ly2 / 2) + (ly2 % 2); - - if (tree != tree->root_tree) - gdk_draw_line (widget->window, widget->style->black_gc, lx1, ly1, lx2, ly2); - - /* draw vertical line for subtree connecting */ - if(g_list_last(tree->children)->data != (gpointer)widget) - ly2 = (ly2 / 2) + (ly2 % 2); - - lx2 += DEFAULT_DELTA; - - if (item->subtree && item->expanded) - gdk_draw_line (widget->window, widget->style->black_gc, - lx2, ly2, lx2, widget->allocation.height); - - /* draw horizontal line */ - ly1 = ly2; - lx2 += 2; - - gdk_draw_line (widget->window, widget->style->black_gc, - lx1, ly1, lx2, ly2); - - lx2 -= DEFAULT_DELTA+2; - ly1 = 0; - ly2 = widget->allocation.height; - - if (tree != tree->root_tree) - { - item = GTK_TREE_ITEM2 (tree->tree_owner); - tree = GTK_TREE2 (GTK_WIDGET (tree)->parent); - while (tree != tree->root_tree) - { - lx1 = lx2 -= tree->indent_value; - - if (g_list_last (tree->children)->data != item) - gdk_draw_line (widget->window, widget->style->black_gc, lx1, ly1, lx2, ly2); - item = GTK_TREE_ITEM2 (tree->tree_owner); - tree = GTK_TREE2 (GTK_WIDGET (tree)->parent); - } - } -} - -static void -gtk_tree_item2_paint (GtkWidget *widget, - GdkRectangle *area) -{ - GtkBin *bin; - GdkRectangle child_area, item_area; - GtkTreeItem2* tree_item; - - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (widget)); - g_return_if_fail (area != NULL); - - if (GTK_WIDGET_DRAWABLE (widget)) - { - bin = GTK_BIN (widget); - tree_item = GTK_TREE_ITEM2(widget); - - if (widget->state == GTK_STATE_NORMAL) - { - gdk_window_set_back_pixmap (widget->window, NULL, TRUE); - gdk_window_clear_area (widget->window, area->x, area->y, area->width, area->height); - } - else - { - if (!GTK_WIDGET_IS_SENSITIVE (widget)) - gtk_paint_flat_box(widget->style, widget->window, - widget->state, GTK_STATE_INSENSITIVE, - area, widget, "treeitem", - 0, 0, -1, -1); - else - gtk_paint_flat_box(widget->style, widget->window, - widget->state, GTK_SHADOW_ETCHED_OUT, - area, widget, "treeitem", - 0, 0, -1, -1); - } - - /* draw left size of tree item */ - item_area.x = 0; - item_area.y = 0; - item_area.width = (tree_item->pixmaps_box->allocation.width + DEFAULT_DELTA + - GTK_TREE2 (widget->parent)->current_indent + 2); - item_area.height = widget->allocation.height; - - - if (gdk_rectangle_intersect(&item_area, area, &child_area)) - { - - gtk_tree_item2_draw_lines(widget); - - if (tree_item->pixmaps_box && - GTK_WIDGET_VISIBLE(tree_item->pixmaps_box) && - gtk_widget_intersect (tree_item->pixmaps_box, area, &child_area)) - gtk_widget_draw (tree_item->pixmaps_box, &child_area); - } - - if (GTK_WIDGET_HAS_FOCUS (widget)) - gtk_paint_focus (widget->style, widget->window, - NULL, widget, "treeitem", - 0, 0, - widget->allocation.width - 1, - widget->allocation.height - 1); - - } -} - -static void -gtk_tree_item2_draw (GtkWidget *widget, - GdkRectangle *area) -{ - GtkBin *bin; - GdkRectangle child_area; - - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (widget)); - g_return_if_fail (area != NULL); - - if (GTK_WIDGET_DRAWABLE (widget)) - { - bin = GTK_BIN (widget); - - gtk_tree_item2_paint (widget, area); - - if (bin->child && - gtk_widget_intersect (bin->child, area, &child_area)) - gtk_widget_draw (bin->child, &child_area); - - } -} - -static void -gtk_tree_item2_draw_focus (GtkWidget *widget) -{ - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (widget)); - - gtk_widget_draw(widget, NULL); -} - -static gint -gtk_tree_item2_button_press (GtkWidget *widget, - GdkEventButton *event) -{ -/* HF - g_return_val_if_fail (widget != NULL, FALSE); - g_return_val_if_fail (GTK_IS_TREE_ITEM2 (widget), FALSE); - g_return_val_if_fail (event != NULL, FALSE); - - if (event->type == GDK_BUTTON_PRESS - && GTK_WIDGET_IS_SENSITIVE(widget) - && !GTK_WIDGET_HAS_FOCUS (widget)) - gtk_widget_grab_focus (widget); - - return FALSE; - -*/ -} - -static gint -gtk_tree_item2_expose (GtkWidget *widget, - GdkEventExpose *event) -{ - GdkEventExpose child_event; - GtkBin *bin; - - g_return_val_if_fail (widget != NULL, FALSE); - g_return_val_if_fail (GTK_IS_TREE_ITEM2 (widget), FALSE); - g_return_val_if_fail (event != NULL, FALSE); - - if (GTK_WIDGET_DRAWABLE (widget)) - { - bin = GTK_BIN (widget); - - gtk_tree_item2_paint (widget, &event->area); - - child_event = *event; - if (bin->child && GTK_WIDGET_NO_WINDOW (bin->child) && - gtk_widget_intersect (bin->child, &event->area, &child_event.area)) - gtk_widget_event (bin->child, (GdkEvent*) &child_event); - } - - return FALSE; -} - -static gint -gtk_tree_item2_focus_in (GtkWidget *widget, - GdkEventFocus *event) -{ - g_return_val_if_fail (widget != NULL, FALSE); - g_return_val_if_fail (GTK_IS_TREE_ITEM2 (widget), FALSE); - g_return_val_if_fail (event != NULL, FALSE); - - GTK_WIDGET_SET_FLAGS (widget, GTK_HAS_FOCUS); - gtk_widget_draw_focus (widget); - - - return FALSE; -} - -static gint -gtk_tree_item2_focus_out (GtkWidget *widget, - GdkEventFocus *event) -{ - g_return_val_if_fail (widget != NULL, FALSE); - g_return_val_if_fail (GTK_IS_TREE_ITEM2 (widget), FALSE); - g_return_val_if_fail (event != NULL, FALSE); - - GTK_WIDGET_UNSET_FLAGS (widget, GTK_HAS_FOCUS); - gtk_widget_draw_focus (widget); - - - return FALSE; -} - -static void -gtk_real_tree_item2_select (GtkItem *item) -{ - GtkTreeItem2 *tree_item; - GtkWidget *widget; - - g_return_if_fail (item != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (item)); - - tree_item = GTK_TREE_ITEM2 (item); - widget = GTK_WIDGET (item); - - gtk_widget_set_state (GTK_WIDGET (item), GTK_STATE_SELECTED); - - if (!widget->parent || GTK_TREE2 (widget->parent)->view_mode == GTK_TREE2_VIEW_LINE) - gtk_widget_set_state (GTK_TREE_ITEM2 (item)->pixmaps_box, GTK_STATE_SELECTED); -} - -static void -gtk_real_tree_item2_deselect (GtkItem *item) -{ - GtkTreeItem2 *tree_item; - GtkWidget *widget; - - g_return_if_fail (item != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (item)); - - tree_item = GTK_TREE_ITEM2 (item); - widget = GTK_WIDGET (item); - - gtk_widget_set_state (widget, GTK_STATE_NORMAL); - - if (!widget->parent || GTK_TREE2 (widget->parent)->view_mode == GTK_TREE2_VIEW_LINE) - gtk_widget_set_state (tree_item->pixmaps_box, GTK_STATE_NORMAL); -} - -static void -gtk_real_tree_item2_toggle (GtkItem *item) -{ - g_return_if_fail (item != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (item)); - - if(!GTK_WIDGET_IS_SENSITIVE(item)) - return; - - if (GTK_WIDGET (item)->parent && GTK_IS_TREE2 (GTK_WIDGET (item)->parent)) - gtk_tree2_select_child (GTK_TREE2 (GTK_WIDGET (item)->parent), - GTK_WIDGET (item)); - else - { - /* Should we really bother with this bit? A listitem not in a list? - * -Johannes Keukelaar - * yes, always be on the safe side! - * -timj - */ - if (GTK_WIDGET (item)->state == GTK_STATE_SELECTED) - gtk_widget_set_state (GTK_WIDGET (item), GTK_STATE_NORMAL); - else - gtk_widget_set_state (GTK_WIDGET (item), GTK_STATE_SELECTED); - } -} - -static void -gtk_real_tree_item2_expand (GtkTreeItem2 *tree_item) -{ - GtkTree2* tree; - - g_return_if_fail (tree_item != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (tree_item)); - - if (tree_item->subtree && !tree_item->expanded) - { - tree = GTK_TREE2 (GTK_WIDGET (tree_item)->parent); - - /* hide subtree widget */ - gtk_widget_show (tree_item->subtree); - - /* hide button '+' and show button '-' */ - if (tree_item->pixmaps_box) - { - gtk_container_remove (GTK_CONTAINER (tree_item->pixmaps_box), - tree_item->plus_pix_widget); - gtk_container_add (GTK_CONTAINER (tree_item->pixmaps_box), - tree_item->minus_pix_widget); - } - if (tree->root_tree) - gtk_widget_queue_resize (GTK_WIDGET (tree->root_tree)); - tree_item->expanded = TRUE; - } -} - -static void -gtk_real_tree_item2_collapse (GtkTreeItem2 *tree_item) -{ - GtkTree2* tree; - - g_return_if_fail (tree_item != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (tree_item)); - - if (tree_item->subtree && tree_item->expanded) - { - tree = GTK_TREE2 (GTK_WIDGET (tree_item)->parent); - - /* hide subtree widget */ - gtk_widget_hide (tree_item->subtree); - - /* hide button '-' and show button '+' */ - if (tree_item->pixmaps_box) - { - gtk_container_remove (GTK_CONTAINER (tree_item->pixmaps_box), - tree_item->minus_pix_widget); - gtk_container_add (GTK_CONTAINER (tree_item->pixmaps_box), - tree_item->plus_pix_widget); - } - if (tree->root_tree) - gtk_widget_queue_resize (GTK_WIDGET (tree->root_tree)); - tree_item->expanded = FALSE; - } -} - -static void -gtk_tree_item2_destroy (GtkObject *object) -{ - GtkTreeItem2* item; - GtkWidget* child; - - g_return_if_fail (object != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (object)); - -#ifdef TREE_DEBUG - g_message("+ gtk_tree_item2_destroy [object %#x]\n", (int)object); -#endif /* TREE_DEBUG */ - - item = GTK_TREE_ITEM2(object); - - /* free sub tree if it exist */ - child = item->subtree; - if (child) - { - gtk_widget_ref (child); - gtk_widget_unparent (child); - gtk_widget_destroy (child); - gtk_widget_unref (child); - item->subtree = NULL; - } - - /* free pixmaps box */ - child = item->pixmaps_box; - if (child) - { - gtk_widget_ref (child); - gtk_widget_unparent (child); - gtk_widget_destroy (child); - gtk_widget_unref (child); - item->pixmaps_box = NULL; - } - - - /* destroy plus pixmap */ - if (item->plus_pix_widget) - { - gtk_widget_destroy (item->plus_pix_widget); - gtk_widget_unref (item->plus_pix_widget); - item->plus_pix_widget = NULL; - } - - /* destroy minus pixmap */ - if (item->minus_pix_widget) - { - gtk_widget_destroy (item->minus_pix_widget); - gtk_widget_unref (item->minus_pix_widget); - item->minus_pix_widget = NULL; - } - - /* By removing the pixmaps here, and not in unrealize, we depend on - * the fact that a widget can never change colormap or visual. - */ - gtk_tree_item2_remove_pixmaps (item); - - GTK_OBJECT_CLASS (parent_class)->destroy (object); - -#ifdef TREE_DEBUG - g_message("- gtk_tree_item2_destroy\n"); -#endif /* TREE_DEBUG */ -} - -void -gtk_tree_item2_remove_subtree (GtkTreeItem2* item) -{ - g_return_if_fail (item != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2(item)); - g_return_if_fail (item->subtree != NULL); - - if (GTK_TREE2 (item->subtree)->children) - { - /* The following call will remove the children and call - * gtk_tree_item2_remove_subtree() again. So we are done. - */ - gtk_tree2_remove_items (GTK_TREE2 (item->subtree), - GTK_TREE2 (item->subtree)->children); - return; - } - - if (GTK_WIDGET_MAPPED (item->subtree)) - gtk_widget_unmap (item->subtree); - - gtk_widget_unparent (item->subtree); - - if (item->pixmaps_box) - gtk_widget_hide (item->pixmaps_box); - - item->subtree = NULL; - - if (item->expanded) - { - item->expanded = FALSE; - if (item->pixmaps_box) - { - gtk_container_remove (GTK_CONTAINER (item->pixmaps_box), - item->minus_pix_widget); - gtk_container_add (GTK_CONTAINER (item->pixmaps_box), - item->plus_pix_widget); - } - } -} - -static void -gtk_tree_item2_map (GtkWidget *widget) -{ - GtkBin *bin; - GtkTreeItem2* item; - - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (widget)); - - bin = GTK_BIN (widget); - item = GTK_TREE_ITEM2(widget); - - GTK_WIDGET_SET_FLAGS (widget, GTK_MAPPED); - - if(item->pixmaps_box && - GTK_WIDGET_VISIBLE (item->pixmaps_box) && - !GTK_WIDGET_MAPPED (item->pixmaps_box)) - gtk_widget_map (item->pixmaps_box); - - if (bin->child && - GTK_WIDGET_VISIBLE (bin->child) && - !GTK_WIDGET_MAPPED (bin->child)) - gtk_widget_map (bin->child); - - gdk_window_show (widget->window); -} - -static void -gtk_tree_item2_unmap (GtkWidget *widget) -{ - GtkBin *bin; - GtkTreeItem2* item; - - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (widget)); - - GTK_WIDGET_UNSET_FLAGS (widget, GTK_MAPPED); - bin = GTK_BIN (widget); - item = GTK_TREE_ITEM2(widget); - - gdk_window_hide (widget->window); - - if(item->pixmaps_box && - GTK_WIDGET_VISIBLE (item->pixmaps_box) && - GTK_WIDGET_MAPPED (item->pixmaps_box)) - gtk_widget_unmap (bin->child); - - if (bin->child && - GTK_WIDGET_VISIBLE (bin->child) && - GTK_WIDGET_MAPPED (bin->child)) - gtk_widget_unmap (bin->child); -} - -static void -gtk_tree_item2_forall (GtkContainer *container, - gboolean include_internals, - GtkCallback callback, - gpointer callback_data) -{ - GtkBin *bin; - GtkTreeItem2 *tree_item; - - g_return_if_fail (container != NULL); - g_return_if_fail (GTK_IS_TREE_ITEM2 (container)); - g_return_if_fail (callback != NULL); - - bin = GTK_BIN (container); - tree_item = GTK_TREE_ITEM2 (container); - - if (bin->child) - (* callback) (bin->child, callback_data); -/* if (include_internals && tree_item->subtree) - (* callback) (tree_item->subtree, callback_data); */ -} diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/gtktreeitem2.h b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/gtktreeitem2.h deleted file mode 100644 index bbbb364ad..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/gtktreeitem2.h +++ /dev/null @@ -1,91 +0,0 @@ -/* GTK - The GIMP Toolkit - * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library 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 - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -/* - * Modified by the GTK+ Team and others 1997-1999. See the AUTHORS - * file for a list of people on the GTK+ Team. See the ChangeLog - * files for a list of changes. These files are distributed with - * GTK+ at ftp://ftp.gtk.org/pub/gtk/. - */ - -#ifndef __GTK_TREE_ITEM2_H__ -#define __GTK_TREE_ITEM2_H__ - - -#include -#include - - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - - -#define GTK_TYPE_TREE_ITEM2 (gtk_tree_item2_get_type ()) -#define GTK_TREE_ITEM2(obj) (GTK_CHECK_CAST ((obj), GTK_TYPE_TREE_ITEM2, GtkTreeItem2)) -#define GTK_TREE_ITEM2_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GTK_TYPE_TREE_ITEM2, GtkTreeItem2Class)) -#define GTK_IS_TREE_ITEM2(obj) (GTK_CHECK_TYPE ((obj), GTK_TYPE_TREE_ITEM2)) -#define GTK_IS_TREE_ITEM2_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GTK_TYPE_TREE_ITEM2)) - -#define GTK_TREE_ITEM2_SUBTREE(obj) (GTK_TREE_ITEM2(obj)->subtree) - - -typedef struct _GtkTreeItem2 GtkTreeItem2; -typedef struct _GtkTreeItem2Class GtkTreeItem2Class; - -struct _GtkTreeItem2 -{ - GtkItem item; - - GtkWidget *subtree; - GtkWidget *pixmaps_box; - GtkWidget *plus_pix_widget, *minus_pix_widget; - - GList *pixmaps; /* pixmap node for this items color depth */ - - guint expanded : 1; -}; - -struct _GtkTreeItem2Class -{ - GtkItemClass parent_class; - - void (* expand) (GtkTreeItem2 *tree_item); - void (* collapse) (GtkTreeItem2 *tree_item); -}; - - -GtkType gtk_tree_item2_get_type (void); -GtkWidget* gtk_tree_item2_new (void); -GtkWidget* gtk_tree_item2_new_with_label (gchar *label); -void gtk_tree_item2_set_subtree (GtkTreeItem2 *tree_item, - GtkWidget *subtree); -void gtk_tree_item2_remove_subtree (GtkTreeItem2 *tree_item); -void gtk_tree_item2_select (GtkTreeItem2 *tree_item); -void gtk_tree_item2_deselect (GtkTreeItem2 *tree_item); -void gtk_tree_item2_expand (GtkTreeItem2 *tree_item); -void gtk_tree_item2_collapse (GtkTreeItem2 *tree_item); - - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - - -#endif /* __GTK_TREE_ITEM2_H__ */ diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/handlebox.xpm b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/handlebox.xpm deleted file mode 100644 index e4d792cbb..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/handlebox.xpm +++ /dev/null @@ -1,34 +0,0 @@ -/* XPM */ -static char *handlebox_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 7 1", -" c Gray0", -". c #7b7b7b", -"X c #d6d6d6", -"o c #b3cece", -"O c Gray87", -"+ c Gray100", -"@ c None", -/* pixels */ -"@@@@@@@@@@@@@@@@@@@@@", -"@@@@@@@@@@@@@@@@@@@@@", -"@@@@@@@@@@@@@@@@@@@@@", -"@++++++++++++++++++ @", -"@+OOOO.XXXXXXXXXXX. @", -"@++OOO.XXXXXXXXXXX. @", -"@+O.+O.XXXXXXXXXXX. @", -"@+OOO..XXXXXXXXXXX. @", -"@++OOO.XXXXXXXXXXX. @", -"@+O.+O.XXXXXXXXXXX. @", -"@+OOO..XXXXXXXXXXX. @", -"@++OOO.XXXXXXXXXXX. @", -"@+O.+O.XXXXXXXXXXX. @", -"@+OOO..XXXXXXXXXXX. @", -"@+................. @", -"@ @", -"@@@@@@@@@@@@@@@@@@@@@", -"@@@@@@@@@@@@@@@@@@@@@", -"@@@@@@@@@@@@@@@@@@@@@", -"@@@@@@@@@@@@@@@@@@@@@", -"@@@@@@@@@@@@@@@@@@@@@" -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/hbox.xpm b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/hbox.xpm deleted file mode 100644 index 7363317b6..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/hbox.xpm +++ /dev/null @@ -1,31 +0,0 @@ -/* XPM */ -static char *hbox_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 4 1", -" c Gray0", -". c #7b7b7b", -"X c #d6d6d6", -"o c Gray100", -/* pixels */ -"oooooo oooooo oooooo ", -"oXXXX. oXXXX. oXXXX. ", -"oXXXX. oXXXX. oXXXX. ", -"oXXXX. oXXXX. oXXXX. ", -"oXXXX. oXXXX. oXXXX. ", -"oXXXX. oXXXX. oXXXX. ", -"oXXXX. oXXXX. oXXXX. ", -"oXXXX. oXXXX. oXXXX. ", -"oXXXX. oXXXX. oXXXX. ", -"oXXXX. oXXXX. oXXXX. ", -"oXXXX. oXXXX. oXXXX. ", -"oXXXX. oXXXX. oXXXX. ", -"oXXXX. oXXXX. oXXXX. ", -"oXXXX. oXXXX. oXXXX. ", -"oXXXX. oXXXX. oXXXX. ", -"oXXXX. oXXXX. oXXXX. ", -"oXXXX. oXXXX. oXXXX. ", -"oXXXX. oXXXX. oXXXX. ", -"oXXXX. oXXXX. oXXXX. ", -"o..... o..... o..... ", -" " -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/hbuttonbox.xpm b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/hbuttonbox.xpm deleted file mode 100644 index 77d73dc46..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/hbuttonbox.xpm +++ /dev/null @@ -1,33 +0,0 @@ -/* XPM */ -static char *hbuttonbox_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 6 1", -" c Gray0", -". c #7b7b7b", -"X c #d6d6d6", -"o c #b3cece", -"O c Gray100", -"+ c None", -/* pixels */ -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+OOOOO +OOOOO +OOOOO ", -"+OXXX. +OXXX. +OXXX. ", -"+OXXX. +OXXX. +OXXX. ", -"+O.... +O.... +O.... ", -"+ + + ", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++" -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/hseparator.xpm b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/hseparator.xpm deleted file mode 100644 index 41ad8aafc..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/hseparator.xpm +++ /dev/null @@ -1,31 +0,0 @@ -/* XPM */ -static char *hseparator_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 4 1", -" c #7b7b7b", -". c #b3cece", -"X c Gray100", -"o c None", -/* pixels */ -"ooooooooooooooooooooo", -"ooooooooooooooooooooo", -"ooooooooooooooooooooo", -"ooooooooooooooooooooo", -"ooooooooooooooooooooo", -"ooooooooooooooooooooo", -"ooooooooooooooooooooo", -"ooooooooooooooooooooo", -"ooooooooooooooooooooo", -"ooooooooooooooooooooo", -"o o", -"oXXXXXXXXXXXXXXXXXXXo", -"ooooooooooooooooooooo", -"ooooooooooooooooooooo", -"ooooooooooooooooooooo", -"ooooooooooooooooooooo", -"ooooooooooooooooooooo", -"ooooooooooooooooooooo", -"ooooooooooooooooooooo", -"ooooooooooooooooooooo", -"ooooooooooooooooooooo" -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/label.xpm b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/label.xpm deleted file mode 100644 index 013e13a96..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/label.xpm +++ /dev/null @@ -1,30 +0,0 @@ -/* XPM */ -static char *label_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 3 1", -" c Gray0", -". c #b3cece", -"X c None", -/* pixels */ -"XXXXXXXXXXXXXXXXXXXXX", -"XXXXXXXXXXXXXXXXXXXXX", -"XXXXXXXXXXXXXXXXXXXXX", -"XXXXXXXXXX XXXXXXXXX", -"XXXXXXXXX XXXXXXXXX", -"XXXXXXXXX XXXXXXXXX", -"XXXXXXXX XXXXXXXX", -"XXXXXXXX XXXXXXXX", -"XXXXXXXX XXXXXXX", -"XXXXXXX X XXXXXXX", -"XXXXXXX X XXXXXX", -"XXXXXX XX XXXXXX", -"XXXXXX XXXXX", -"XXXXX XXXXX", -"XXXXX XXXXX XXXXX", -"XXXX XXXXX XXXX", -"XXX XXXXX XXX", -"XXX XXX XXX", -"XXXXXXXXXXXXXXXXXXXXX", -"XXXXXXXXXXXXXXXXXXXXX", -"XXXXXXXXXXXXXXXXXXXXX" -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/load_lexer.mll b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/load_lexer.mll deleted file mode 100644 index 46aa5acc2..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/load_lexer.mll +++ /dev/null @@ -1,46 +0,0 @@ -{ -open Load_parser -} - -rule token = parse - [ ' ' '\t' '\n']+ { token lexbuf } -| "" { WINDOW_END } -| "name" { NAME } -| '=' { EQUAL } -| '>' { SUP } - -| "<" ['A'-'Z' 'a'-'z' '0'-'9' '_']+ - { - let l = Lexing.lexeme lexbuf in - let s = String.sub l ~pos:1 ~len:(String.length l - 1) in - WIDGET_START s - } - -| "' - { - let l = Lexing.lexeme lexbuf in - let s = String.sub l ~pos:2 ~len:(String.length l - 3) in - WIDGET_END s - } - -| '"' [^ '"']* '"' - { - let l = Lexing.lexeme lexbuf in - let s = String.sub l ~pos:1 ~len:(String.length l - 2) in - IDENT s - } - -| '\'' [^ '\'']* '\'' - { - let l = Lexing.lexeme lexbuf in - let s = String.sub l ~pos:1 ~len:(String.length l - 2) in - IDENT s - } - -| ['A'-'Z' 'a'-'z' '0'-'9' '_' '.']+ - { - let s = Lexing.lexeme lexbuf in IDENT s - } - -| eof { EOF } diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/load_parser.mly b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/load_parser.mly deleted file mode 100644 index 09c7b7bf7..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/load_parser.mly +++ /dev/null @@ -1,56 +0,0 @@ -%{ -open Utils -%} - -%token EOF NAME EQUAL SUP WINDOW_START WINDOW_END -%token WIDGET_START WIDGET_END IDENT - -%type window_start -%type property widget_start -%type <(string * string) list> property_list -%type widget window -%type children window_list project - -%start project -%start window -%start widget - -%% - -project : window_list EOF { List.rev $1 } - -window_list : { [] } - | window_list window { $2 :: $1 } -; - -window : window_start property_list children WINDOW_END - { - Node (("window", $1, List.rev $2), $3) - } -; - -window_start : WINDOW_START NAME EQUAL IDENT SUP { $4 } -; - -children : { [] } - | children widget { $2 :: $1 } -; - -widget : widget_start property_list children WIDGET_END - { - let classe, name = $1 in - if classe <> $4 then raise Parsing.Parse_error; - Node ((classe, name, List.rev $2), $3) - } -; - -widget_start : WIDGET_START NAME EQUAL IDENT SUP { $1, $4 } -; - -property_list : { [] } - | property_list property { $2 :: $1 } -; - -property : IDENT EQUAL IDENT { $1, $3 } -; - diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/main.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/main.ml deleted file mode 100644 index cb150e086..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/main.ml +++ /dev/null @@ -1,393 +0,0 @@ -(* $Id$ *) - -open GdkKeysyms -open Gtk -open GObj - -open Utils -open TiBase - -let main_project_modify = ref false - -let main_window = GWindow.window ~title:"ZOOM" ~x:10 ~y:10 () -let main_vbox = GPack.vbox ~packing:main_window#add () -let main_menu = GMenu.menu_bar ~packing:(main_vbox#pack ~expand:false) () - -let can_copy = ref (fun _ -> assert false) -let can_paste = ref (fun _ -> assert false) - -class project () = - let project_box = GPack.vbox ~packing:main_vbox#pack () in - let project_tree = GTree2.tree ~packing:project_box#pack () in - object(self) - val mutable window_list = [] - -(* the selected window *) - val mutable selected = (None : window_and_tree option) - - method change_selected sel = - match selected with - | None -> - selected <- Some sel; - sel#project_tree_item#misc#set_state `SELECTED; - !can_copy true - | Some old_sel -> - if sel = old_sel then begin - selected <- None; - sel#project_tree_item#misc#set_state `NORMAL; - !can_copy false - end else begin - old_sel#project_tree_item#misc#set_state `NORMAL; - selected <- Some sel; - sel#project_tree_item#misc#set_state `SELECTED; - !can_copy true - end - - val mutable filename = "" - val mutable dirname = "" - - method set_filename f = - let dir, file = split_filename f ~ext:".rad" in - filename <- file; - dirname <- dir - - method get_filename () = - get_filename ~callback:self#set_filename ~dir:dirname () - - method dirname = dirname - -(* method set_dirname f = dirname <- f *) - - method add_window ~name ?tree:wt () = - let wt = match wt with - | None -> new window_and_tree ~name - | Some wt -> wt in - let tiwin = wt#tiwin and tw=wt#tree_window in - let project_tree_item = wt#project_tree_item in - project_tree#append project_tree_item; - let show = ref true in - project_tree_item#event#connect#button_press ~callback: - (fun ev -> - match GdkEvent.get_type ev with - | `BUTTON_PRESS -> - if GdkEvent.Button.button ev = 1 then begin - self#change_selected wt - end else - if GdkEvent.Button.button ev = 3 then begin - let menu = GMenu.menu () in - let name = wt#tiwin#name in - let mi_remove = GMenu.menu_item ~label:("delete " ^ name) - ~packing:menu#append () - and mi_copy = GMenu.menu_item ~label:("copy " ^ name) - ~packing:menu#append () - and mi_cut = GMenu.menu_item ~label:("cut " ^ name) - ~packing:menu#append () in - mi_remove#connect#activate - ~callback:(fun () -> self#delete_window wt); - mi_copy#connect#activate - ~callback:(fun () -> self#copy_wt wt); - mi_cut#connect#activate - ~callback:(fun () -> self#cut_wt wt); - menu#popup ~button:3 ~time:(GdkEvent.Button.time ev) - end; - GtkSignal.stop_emit (); - true - | `TWO_BUTTON_PRESS -> - if GdkEvent.Button.button ev = 1 then begin - if !show then begin - show := false; - tiwin#widget#misc#hide (); - tw#misc#hide () - end - else begin - show := true; - tiwin#widget#misc#show (); - tw#misc#show () - end - end; - true - | _ -> false); - tiwin#connect_event#delete ~callback: - (fun _ -> show := false; tiwin#widget#misc#hide (); true); - tw#event#connect#delete ~callback: - (fun _ -> show := false; tw#misc#hide (); true); - window_list <- wt :: window_list; - add_undo (Remove_window name); - main_window#misc#set_can_focus false; - main_window#misc#grab_focus () - - - method add_window_by_node - (Node ((classe, name, proplist), children)) = - if classe <> "window" - then failwith "add_window_by_node: class <> \"window\""; - let name = change_name name in (* for paste *) - let wt = new window_and_tree ~name in - let tiwin = wt#tiwin in - List.iter proplist ~f:(fun (n,v) -> tiwin#set_property n v); - begin match children with - | [] -> () - | [ ch ] -> tiwin#add_children_wo_undo ch; () - | _ -> failwith "add_window_by_node: more than one child" - end; - self#add_window ~name ~tree:wt () - - method delete_window (wt : window_and_tree) = - let tiwin = wt#tiwin in - project_tree#remove wt#project_tree_item; - tiwin#remove_me (); - wt#tree_window#destroy (); - window_list <- list_remove ~f:(fun w -> w = wt) window_list - - method delete_window_by_name ~name = - let wt = List.find window_list ~f:(fun wt -> wt#tiwin#name = name) in - self#delete_window wt - - method delete () = - List.iter window_list - ~f:(fun wt -> self#delete_window wt); - main_vbox#remove project_box#coerce; -(* remove after test *) - if !name_list <> [] then failwith "name_list not empty" - - method save_as () = if self#get_filename () then self#save () - - method save () = - if filename = "" then self#save_as () - else begin - let outch = open_out (dirname ^ filename ^ ".rad") in - let f = Format.formatter_of_out_channel outch in - List.iter window_list ~f:(fun wt -> wt#tiwin#save f); - close_out outch; - main_project_modify := false - end - - method copy_wt (wt : window_and_tree) = - wt#tiwin#copy (); - !can_paste true - - method cut_wt (wt : window_and_tree) = - self#copy_wt wt; - self#delete_window wt - - method copy () = - match selected with - | None -> failwith "main_project copy" - | Some sel -> self#copy_wt sel - - method cut () = - match selected with - | None -> failwith "main_project cut" - | Some sel -> self#cut_wt sel - - method paste () = - let lexbuf = Lexing.from_string !window_selection in - let node = Load_parser.window Load_lexer.token lexbuf in - self#add_window_by_node node - - method emit () = - let outc = open_out (dirname ^ filename ^ ".ml") in - let f = Format.formatter_of_out_channel outc in - List.iter window_list ~f:(fun wt -> wt#emit f); - Format.fprintf f "let main () =@\n"; -(* this is just for demo *) - List.iter window_list ~f: - begin fun wt -> - let name = wt#tiwin#name in - Format.fprintf f " let %s = new %s () in %s#show ();@\n" - name name name - end; - Format.fprintf f - " GMain.Main.main ()@\n@\nlet _ = main ()@\n"; - close_out outc - - end - - -let main_project = ref (new project ()) - -let load () = - let filename = ref "" in - get_filename ~callback:(fun f -> filename := f) ~dir:!main_project#dirname (); - if !filename <> "" then begin - !main_project#delete (); - main_project := new project (); - let inch = open_in !filename in - let lexbuf = Lexing.from_channel inch in - let project_list = Load_parser.project Load_lexer.token lexbuf in - close_in inch; - List.iter project_list - ~f:(fun node -> !main_project#add_window_by_node node); - !main_project#set_filename !filename - end - - -let interpret_undo = function - | Add (parent_name, node, pos) -> - let parent = Hashtbl.find widget_map parent_name in - parent#add_children node ~pos - | Remove child_name -> - let child = Hashtbl.find widget_map child_name in - child#remove_me () - | Property (property, value_string) -> - property#set value_string - | Add_window node -> !main_project#add_window_by_node node - | Remove_window name -> !main_project#delete_window_by_name ~name - -let undo () = - if !last_action_was_undo then begin - match !next_undo_info with - | hd :: tl -> interpret_undo hd; next_undo_info := tl - | [] -> message "no more undo info" - end - else begin - match !undo_info with - | hd :: tl -> interpret_undo hd; next_undo_info := tl - | [] -> message "no undo info" - end; - last_action_was_undo := true - - -let targets = [ { target = "STRING"; flags = []; info = 0} ] - -let xpm_window () = - let source_drag_data_get classe _ (data : selection_data) ~info ~time = - data#set ~typ:data#target ~format:0 ~data:classe in - let window = GWindow.window ~title:"icons" ~x:250 ~y:10 () in - window#misc#realize (); - let vbox = GPack.vbox ~packing:window#add () in - let table = GPack.table ~rows:1 ~columns:5 ~border_width:20 - ~packing:vbox#pack () in - let tooltips = GData.tooltips () in - let add_xpm ~file ~left ~top ~tip = - let gdk_pix = GDraw.pixmap_from_xpm ~file ~window () in - let ev = GBin.event_box ~packing:(table#attach ~left ~top) () in - let pix = GMisc.pixmap gdk_pix ~packing:ev#add () in - ev#event#connect#button_press ~callback: - (fun ev -> match GdkEvent.get_type ev with - | `BUTTON_PRESS -> - if GdkEvent.Button.button ev = 1 then begin - !main_project#add_window ~name:(make_new_name "window") () - end; - true - | _ -> false); - tooltips#set_tip ev#coerce ~text:tip - in - add_xpm ~file:"window.xpm" ~left:0 ~top:0 ~tip:"window"; - GMisc.separator `HORIZONTAL ~packing:vbox#pack (); - let table = GPack.table ~rows:6 ~columns:6 ~packing:vbox#pack - ~row_spacings:20 ~col_spacings:20 ~border_width:20 () in - let add_xpm file ~left ~top ~classe = - let gdk_pix = GDraw.pixmap_from_xpm ~file ~window () in - let ev = GBin.event_box ~packing:(table#attach ~left ~top) () in - let pix = GMisc.pixmap gdk_pix ~packing:ev#add () in - ev#drag#source_set ~modi:[`BUTTON1] targets ~actions:[`COPY]; - ev#drag#source_set_icon ~colormap:window#misc#style#colormap - gdk_pix; - ev#drag#connect#data_get ~callback:(source_drag_data_get classe); - tooltips#set_tip ev#coerce ~text:classe - in - - add_xpm "button.xpm" ~left:0 ~top:0 ~classe:"button"; - add_xpm "togglebutton.xpm" ~left:1 ~top:0 ~classe:"toggle_button"; - add_xpm "checkbutton.xpm" ~left:2 ~top:0 ~classe:"check_button"; - add_xpm "radiobutton.xpm" ~left:3 ~top:0 ~classe:"radio_button"; - add_xpm "toolbar.xpm" ~left:4 ~top:0 ~classe:"toolbar"; - add_xpm "hbox.xpm" ~left:0 ~top:1 ~classe:"hbox"; - add_xpm "vbox.xpm" ~left:1 ~top:1 ~classe:"vbox"; - add_xpm "hbuttonbox.xpm" ~left:2 ~top:1 ~classe:"hbutton_box"; - add_xpm "vbuttonbox.xpm" ~left:3 ~top:1 ~classe:"vbutton_box"; - add_xpm "fixed.xpm" ~left:4 ~top:1 ~classe:"fixed"; - add_xpm "frame.xpm" ~left:0 ~top:2 ~classe:"frame"; - add_xpm "aspectframe.xpm" ~left:1 ~top:2 ~classe:"aspect_frame"; - add_xpm "scrolledwindow.xpm" ~left:2 ~top:2 ~classe:"scrolled_window"; - add_xpm "eventbox.xpm" ~left:3 ~top:2 ~classe:"event_box"; - add_xpm "handlebox.xpm" ~left:4 ~top:2 ~classe:"handle_box"; - add_xpm "viewport.xpm" ~left:5 ~top:2 ~classe:"viewport"; - add_xpm "hseparator.xpm" ~left:0 ~top:3 ~classe:"hseparator"; - add_xpm "vseparator.xpm" ~left:1 ~top:3 ~classe:"vseparator"; - add_xpm "clist.xpm" ~left:2 ~top:3 ~classe:"clist"; - add_xpm "label.xpm" ~left:0 ~top:4 ~classe:"label"; - add_xpm "statusbar.xpm" ~left:1 ~top:4 ~classe:"statusbar"; - add_xpm "notebook.xpm" ~left:2 ~top:4 ~classe:"notebook"; - add_xpm "colorselection.xpm" ~left:3 ~top:4 ~classe:"color_selection"; - add_xpm "pixmap.xpm" ~left:4 ~top:4 ~classe:"pixmap"; - add_xpm "entry.xpm" ~left:0 ~top:5 ~classe:"entry"; - add_xpm "spinbutton.xpm" ~left:1 ~top:5 ~classe:"spin_button"; - add_xpm "combo.xpm" ~left:2 ~top:5 ~classe:"combo"; - - window#show (); - window - - -let main () = - let _ = GMain.Main.init () in - let prop_win = Propwin.init () in - let palette = xpm_window () in - main_window#show (); - main_window#connect#destroy ~callback:GMain.Main.quit; - - let mp = main_project in - let f = new GMenu.factory main_menu in - let accel_group = f#accel_group in - main_window#add_accel_group accel_group; - prop_win#add_accel_group accel_group; - palette#add_accel_group accel_group; - - let file_menu = new GMenu.factory (f#add_submenu "File") ~accel_group - and edit_menu = new GMenu.factory (f#add_submenu "Edit") ~accel_group - and view_menu = new GMenu.factory (f#add_submenu "View") ~accel_group - and project_menu = new GMenu.factory (f#add_submenu "Project") ~accel_group - in - - file_menu#add_item "Quit" ~key:_Q ~callback:GMain.Main.quit; - - project_menu#add_item "New" ~key:_N - ~callback:(fun () -> !mp#delete (); mp := new project ()); - project_menu#add_item "Open..." ~key:_O ~callback:load; - project_menu#add_item "Save" ~key:_S ~callback:(fun () -> !mp#save ()); - project_menu#add_item "Save as..." ~callback:(fun () -> !mp#save_as ()); - project_menu#add_separator (); - project_menu#add_item "Emit code" ~callback:(fun () -> !mp#emit ()); - - let copy_item = - edit_menu#add_item "Copy" ~key:_C ~callback:(fun () -> !mp#copy ()) - and cut_item = - edit_menu#add_item "Cut" ~key:_X ~callback:(fun () -> !mp#cut ()) - and paste_item = - edit_menu#add_item "Paste" ~key:_V ~callback:(fun () -> !mp#paste ()) - in - can_copy := - (fun b -> copy_item#misc#set_sensitive b; cut_item#misc#set_sensitive b); - can_paste := paste_item#misc#set_sensitive; - !can_copy false; !can_paste false; - edit_menu#add_item "Undo" ~key:_Z ~callback:undo; - - let palette_visible = ref true in - palette#event#connect#delete ~callback: - (fun _ -> palette_visible := false; palette#misc#hide (); true); - view_menu#add_item "Palette" - ~callback:(fun () -> - if !palette_visible then begin - palette#misc#hide (); - palette_visible := false - end else begin - palette#misc#show (); - palette_visible := true - end); - let prop_win_visible = ref true in - prop_win#event#connect#delete ~callback: - (fun _ -> prop_win_visible := false; prop_win#misc#hide (); true); - view_menu#add_item "Properties window" - ~callback:(fun () -> - if !prop_win_visible then begin - prop_win#misc#hide (); - prop_win_visible := false - end else begin - prop_win#misc#show (); - prop_win_visible := true - end); - - GMain.Main.main () - -let _ = main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/ml_gtk2.c b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/ml_gtk2.c deleted file mode 100644 index 49ce27bbe..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/ml_gtk2.c +++ /dev/null @@ -1,124 +0,0 @@ -/* $Id$ */ - -#include -#include -#include -#include -#include -#include - -#include "../../wrappers.h" -#include "../../ml_glib.h" -#include "../../ml_gdk.h" -#include "../../ml_gtk.h" -#include "../../gtk_tags.h" - -#include "gtktree2.h" -#include "gtktreeitem2.h" - -#include - -value Val_GtkObject_sink (GtkObject *); - -#define Val_GtkAny(w) Val_GtkObject((GtkObject*)w) -#define Val_GtkAny_sink(w) Val_GtkObject_sink((GtkObject*)w) - -#define GtkWidget_val(val) check_cast(GTK_WIDGET,val) - -/* gtkwidget.h */ - - -#define Val_GtkWidget Val_GtkAny -#define Val_GtkWidget_sink Val_GtkAny_sink - - -/* gtktreeitem2.h */ - -#define GtkTreeItem2_val(val) check_cast(GTK_TREE_ITEM2,val) -ML_0 (gtk_tree_item2_new, Val_GtkWidget_sink) -ML_1 (gtk_tree_item2_new_with_label, String_val, Val_GtkWidget_sink) -ML_2 (gtk_tree_item2_set_subtree, GtkTreeItem2_val, GtkWidget_val, Unit) -ML_1 (gtk_tree_item2_remove_subtree, GtkTreeItem2_val, Unit) -ML_1 (gtk_tree_item2_expand, GtkTreeItem2_val, Unit) -ML_1 (gtk_tree_item2_collapse, GtkTreeItem2_val, Unit) -ML_1 (GTK_TREE_ITEM2_SUBTREE, GtkTreeItem2_val, Val_GtkWidget) - -/* gtktree2.h */ - -#define GtkTree2_val(val) check_cast(GTK_TREE2,val) -ML_0 (gtk_tree2_new, Val_GtkWidget_sink) -ML_3 (gtk_tree2_insert, GtkTree2_val, GtkWidget_val, Int_val, Unit) -ML_3 (gtk_tree2_clear_items, GtkTree2_val, Int_val, Int_val, Unit) -ML_2 (gtk_tree2_select_item, GtkTree2_val, Int_val, Unit) -ML_2 (gtk_tree2_unselect_item, GtkTree2_val, Int_val, Unit) -ML_2 (gtk_tree2_select_child, GtkTree2_val, GtkWidget_val, Unit) -ML_2 (gtk_tree2_unselect_child, GtkTree2_val, GtkWidget_val, Unit) -ML_2 (gtk_tree2_child_position, GtkTree2_val, GtkWidget_val, Val_int) - -/* -ML_2 (gtk_tree2_set_selection_mode, GtkTree2_val, Selection_mode_val, Unit) -ML_2 (gtk_tree2_set_view_mode, GtkTree2_val, Tree_view_mode_val, Unit) -*/ - -ML_2 (gtk_tree2_set_view_lines, GtkTree2_val, Bool_val, Unit) -ML_2 (gtk_tree2_item_up, GtkTree2_val, Int_val, Unit) -ML_3 (gtk_tree2_select_next_child, GtkTree2_val, GtkWidget_val, Bool_val, Unit) -ML_2 (gtk_tree2_select_prev_child, GtkTree2_val, GtkWidget_val, Unit) - -static value val_gtkany (gpointer p) { return Val_GtkAny(p); } -value ml_gtk_tree2_selection (value tree) -{ - GList *selection = GTK_TREE2_SELECTION(GtkTree2_val(tree)); - return Val_GList(selection, val_gtkany); -} -static gpointer gtkobject_val (value val) { return GtkObject_val(val); } -value ml_gtk_tree2_remove_items (value tree, value items) -{ - GList *items_list = GList_val (items, gtkobject_val); - gtk_tree2_remove_items (GtkTree2_val(tree), items_list); - return Val_unit; -} - -value ml_gtk_tree2_children (value tree) -{ - GList *children = (GtkTree2_val(tree))->children; - return Val_GList(children, val_gtkany); -} - - - -#define GtkToolbar_val(val) check_cast(GTK_TOOLBAR,val) -/* sets the text of the label of a button; creates the label - if necessary */ -value ml_gtk_toolbar2_set_text (value toolbar, value text, value pos) -{ - GtkToolbar *t = GtkToolbar_val(toolbar); - GtkToolbarChild *ch = (GtkToolbarChild *)g_list_nth_data (t->children, Int_val(pos)); - GtkWidget *label = ch->label; - - if (label) - gtk_label_set_text (GTK_LABEL(label), String_val(text)); - else { - label = ch->label = gtk_label_new (String_val(text)); - gtk_box_pack_end (GTK_BOX (GTK_BIN(ch->widget)->child), label, FALSE, FALSE, 0); - if (t->style != GTK_TOOLBAR_ICONS) - gtk_widget_show (label); - } - - return Val_unit; -} - -value ml_gtk_toolbar2_set_icon (value toolbar, value icon, value pos) -{ - GtkToolbar *t = GtkToolbar_val(toolbar); - GtkToolbarChild * ch = - (GtkToolbarChild *)g_list_nth_data (t->children, Int_val(pos)); - GtkWidget *vbox = GTK_BIN(ch->widget)->child; - gtk_container_remove (GTK_CONTAINER(vbox), ch->icon); - ch->icon = GtkWidget_val(icon); - gtk_box_pack_end (GTK_BOX (vbox), ch->icon, FALSE, FALSE, 0); - if (t->style != GTK_TOOLBAR_TEXT) - gtk_widget_show (ch->icon); - - return Val_unit; -} diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/notebook.xpm b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/notebook.xpm deleted file mode 100644 index 77ac20d6c..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/notebook.xpm +++ /dev/null @@ -1,33 +0,0 @@ -/* XPM */ -static char *notebook_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 6 1", -" c Gray0", -". c #7b7b7b", -"X c #d6d6d6", -"o c #b3cece", -"O c Gray100", -"+ c None", -/* pixels */ -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+OOOOOO.OOOO.OOOO.+++", -"+OXXXXX.X.X..X.X..+++", -"+OXXXXX..X.X..X.X.+++", -"+OXXXXX.X.X..X.X..+++", -"+OXXXXX.OOOOOOOOOOO +", -"+OXXXXXXXXXXXXXXXX. +", -"+OXXXXXXXXXXXXXXXX. +", -"+OXXXXXXXXXXXXXXXX. +", -"+OXXXXXXXXXXXXXXXX. +", -"+OXXXXXXXXXXXXXXXX. +", -"+OXXXXXXXXXXXXXXXX. +", -"+OXXXXXXXXXXXXXXXX. +", -"+OXXXXXXXXXXXXXXXX. +", -"+O................. +", -"+ +", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++" -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/pixmap.xpm b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/pixmap.xpm deleted file mode 100644 index d76a5ec81..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/pixmap.xpm +++ /dev/null @@ -1,39 +0,0 @@ -/* XPM */ -static char *pixmap_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 12 1", -" c Gray0", -". c #007b00", -"X c #7b7b7b", -"o c Blue", -"O c Green", -"+ c Cyan", -"@ c Yellow", -"# c #d6d6d6", -"$ c #b3cece", -"% c Gray87", -"& c Gray100", -"* c None", -/* pixels */ -"*********************", -"*********************", -"*********************", -"* ", -"* +++++%%%&+++++++++ ", -"* +&&&++%%++&+++XX++ ", -"* +++++++%+++++X@@X+ ", -"* ++&&++++XX+++X@@X+ ", -"* +++++++ XXX&++XX++ ", -"* &+++++XXXXXX++++&+ ", -"* +++++ +++++ ", -"* +++++ ###### +++++ ", -"* +++++ #o##o# +++++ ", -"* ..... ###### ..... ", -"* OOOOO ##oo## OOOOO ", -"* OOOOO ##oo## OOOOO ", -"* OOOOO OOOOO ", -"* OOOOOOOOOOOOOOOOOO ", -"* ", -"*********************", -"*********************" -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/property.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/property.ml deleted file mode 100644 index 829e40b7c..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/property.ml +++ /dev/null @@ -1,175 +0,0 @@ -(* $Id$ *) - -open Gtk -open GObj -open GEdit -open GData -open GPack -open GMisc -open GWindow - -open Common -open Utils - -(* external id : 'a -> 'a = "%identity" *) - -class virtual vprop ~name ~init ~set = - object (self) - val mutable s : string = init - val name : string = name - method private virtual parse : string -> 'a - method get = s - method set s' = - if s' <> s then begin - let v = self#parse s' in - if (set v) then begin - add_undo (Property ((self :> prop), s)); - s <- s' - end - end - method modified = s <> init - method name = name - method code = s - method virtual range : range - method save_code = self#code - end - -let invalid_prop kind name s = - invalid_arg (Printf.sprintf "Property.%s(%s) <- %s" kind name s) - -class prop_enum ~values ~name ~init ~set = - object (self) - inherit vprop ~name ~init ~set - method private parse s = - try List.assoc s values - with Not_found -> invalid_prop "enum" name s - method range = Enum (List.map ~f:fst values) - end - -(* used for radio_button groups; there is nothing to do - in radtest when setting a radio_button group, only when writing - code or saving *) -class prop_enum_dyn ~values ~name ~init ~set = - object (self) - inherit vprop ~name ~init ~set - method private parse s = () - method range = Enum (values ()) - end - -let bool_values = - [ "true", true; "false", false ] - -let shadow_type_values : (string * Tags.shadow_type) list = - [ "NONE", `NONE; "IN", `IN; "OUT", `OUT; - "ETCHED_IN", `ETCHED_IN; "ETCHED_OUT", `ETCHED_OUT ] - -let policy_type_values : (string * Tags.policy_type) list = - [ "ALWAYS", `ALWAYS; "AUTOMATIC", `AUTOMATIC ] - -let orientation_values : (string * Tags.orientation) list = - [ "HORIZONTAL", `HORIZONTAL; "VERTICAL", `VERTICAL ] - -let toolbar_style_values : (string * Tags.toolbar_style) list = - [ "ICONS", `ICONS; "TEXT", `TEXT; "BOTH", `BOTH ] - -let toolbar_space_style_values : (string * [`EMPTY | `LINE]) list = - [ "EMPTY", `EMPTY; "LINE", `LINE ] - -let relief_style_values : (string * Tags.relief_style) list = - [ "NORMAL", `NORMAL; "HALF", `HALF; "NONE", `NONE ] - -let position_values : (string * Tags.position) list = - [ "LEFT", `LEFT; "RIGHT", `RIGHT; "TOP", `TOP; "BOTTOM", `BOTTOM ] - -let combo_use_arrows_values : (string * [ `NEVER | `DEFAULT | `ALWAYS ]) list = -[ "NEVER", `NEVER; "DEFAULT", `DEFAULT; "ALWAYS", `ALWAYS ] - -let spin_button_update_policy_values : - (string * Tags. spin_button_update_policy) list = - [ "ALWAYS", `ALWAYS; "IF_VALID", `IF_VALID ] - -let button_box_style_values : (string * Tags.button_box_style) list = - [ "DEFAULT_STYLE", `DEFAULT_STYLE; "SPREAD", `SPREAD; "EDGE", `EDGE; - "START", `START; "END", `END ] - -let update_type_values : (string * Tags.update_type) list = - [ "CONTINUOUS", `CONTINUOUS; "DISCONTINUOUS", `DISCONTINUOUS; - "DELAYED", `DELAYED ] - - -class prop_bool = prop_enum ~values:bool_values - -(* -class prop_variant ~values ~name ~init ~set : prop = - object - inherit prop_enum ~values ~name ~init ~set - method code = "`" ^ s - end -*) - -class prop_shadow = prop_enum ~values:shadow_type_values -class prop_policy = prop_enum ~values:policy_type_values -class prop_orientation = prop_enum ~values:orientation_values -class prop_toolbar_style = prop_enum ~values:toolbar_style_values -class prop_toolbar_space_style = prop_enum ~values:toolbar_space_style_values -class prop_relief_style = prop_enum ~values:relief_style_values -class prop_position = prop_enum ~values:position_values -class prop_combo_use_arrows = prop_enum ~values:combo_use_arrows_values -class prop_spin_button_update_policy = prop_enum - ~values:spin_button_update_policy_values -class prop_button_box_style = prop_enum ~values:button_box_style_values -class prop_update_type = prop_enum ~values:update_type_values - -class prop_int ~name ~init ~set : prop = - object - inherit vprop ~name ~init ~set - method private parse s = - try int_of_string s with _ -> invalid_prop "int" name s - method range = Int - end - -(* NB: float_of_string doesn't raise an exception in case of error *) -class prop_float ~name ~init ~min ~max ~set : prop = - object - inherit vprop ~name ~init ~set - method private parse s = - try float_of_string s with _ -> invalid_prop "float" name s - method code = - if String.contains s '.' || String.contains s 'e' then s - else s ^ ".0" - method range = Float(min,max) - end - -class prop_string ~name ~init ~set : prop = - object - inherit vprop ~name ~init ~set - method private parse s = s - method range = String - method code = "\"" ^ String.escaped s ^ "\"" - end - -class prop_adjustment ~name ~init ~set : prop = - object - inherit vprop ~name ~init ~set - method private parse = get5floats_from_string - method range = Adjust - end - -class prop_clist_titles ~name ~init ~set : prop = - object - inherit vprop ~name ~init ~set - method private parse = split_string ~sep:' ' - method range = CList_titles - method code = "[ \"" ^ - String.concat ~sep:"\"; \"" (split_string ~sep:' ' s) ^ "\" ]" - method save_code = "\"" ^ s ^ "\"" - end - -class prop_file ~name ~init ~set : prop = - object - inherit vprop ~name ~init ~set - method private parse s = s - method range = File - method code = "\"" ^ String.escaped s ^ "\"" - end - diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/property.mli b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/property.mli deleted file mode 100644 index ccf265077..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/property.mli +++ /dev/null @@ -1,96 +0,0 @@ -(* $Id$ *) - -open Gtk.Tags -open Common - -class virtual vprop : - name:string -> (* property's name *) - init:string -> (* default value *) - set:('a -> bool) -> - object - val name : string - val mutable s : string - method code : string (* encoded value *) - method get : string - method modified : bool - method name : string - method private virtual parse : string -> 'a - method virtual range : range - method save_code : string - method set : string -> unit - end - -class prop_int : - name:string -> init:string -> set:(int -> bool) -> prop - -class prop_float : - name:string -> - init:string -> min:float -> max:float -> set:(float -> bool) -> prop - -class prop_string : - name:string -> init:string -> set:(string -> bool) -> prop - -class prop_bool : - name:string -> init:string -> set:(bool -> bool) -> prop -(* -class prop_variant : - values:(string * 'a) list -> - name:string -> init:string -> set:('a -> bool) -> prop -*) -class prop_shadow : - name:string -> init:string -> set:(shadow_type -> bool) -> prop - -class prop_policy : - name:string -> init:string -> set:(policy_type -> bool) -> prop - -class prop_orientation : - name:string -> - init:string -> set:(Gtk.Tags.orientation -> bool) -> prop - -class prop_toolbar_style : - name:string -> - init:string -> set:(Gtk.Tags.toolbar_style -> bool) -> prop - -class prop_toolbar_space_style : - name:string -> init:string -> set:([ `EMPTY | `LINE] -> bool) -> prop - -class prop_relief_style : - name:string -> - init:string -> set:(Gtk.Tags.relief_style -> bool) -> prop - -class prop_position : - name:string -> - init:string -> set:(Gtk.Tags.position -> bool) -> prop - -class prop_combo_use_arrows : - name:string -> - init:string -> set:([ `NEVER | `DEFAULT | `ALWAYS] -> bool) -> prop - -class prop_spin_button_update_policy : - name:string -> - init:string -> set:(Gtk.Tags.spin_button_update_policy -> bool) -> prop - -class prop_button_box_style : - name:string -> - init:string -> set:(Gtk.Tags.button_box_style -> bool) -> prop - -class prop_update_type : - name:string -> - init:string -> set:(Gtk.Tags.update_type -> bool) -> prop - -class prop_enum_dyn : - values:(unit -> string list) -> name:string -> - init:string -> set:(unit -> bool) -> prop - -class prop_adjustment : - name:string -> init:string -> - set:(float * float * float * float * float -> bool) -> prop - -class prop_clist_titles : - name:string -> init:string -> - set:(string list -> bool) -> prop - -class prop_file : - name:string -> init:string -> set:(string -> bool) -> prop - - diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/propwin.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/propwin.ml deleted file mode 100644 index 2f8b29151..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/propwin.ml +++ /dev/null @@ -1,180 +0,0 @@ -(* $Id$ *) - -open GObj - -open Common -open Utils - -class type tiwidget_base = object - method name : string - method proplist : (string * prop) list -end - -let prop_widget (prop : prop) = - match prop#range with - Enum l -> - let w = GEdit.combo ~popdown_strings:l ~use_arrows:`ALWAYS () in - w#entry#connect#changed ~callback:(fun () -> prop#set w#entry#text); - w#entry#set_editable false; - w#entry#set_text prop#get; - w#coerce - | String -> - let w = GEdit.entry ~text:prop#get () in - w#connect#activate ~callback:(fun () -> prop#set w#text); - w#coerce - | File -> - let w = GPack.hbox () in - let e = GEdit.entry ~text:prop#get ~editable:false ~packing:w#pack () in - let b = GButton.button ~label:"..." ~packing:w#pack () in - b#connect#clicked - ~callback:(fun () -> get_filename - ~callback:(fun name -> e#set_text name; prop#set name) (); ()); - w#coerce - | Int -> - let adjustment = - GData.adjustment ~value:(float_of_string prop#get) - ~lower:(-2.) ~upper:5000. ~step_incr:1. ~page_incr:10. ~page_size:0. () - in - let w = GEdit.spin_button ~rate:0.5 ~digits:0 ~adjustment () in - w#connect#activate - ~callback:(fun () -> prop#set (string_of_int w#value_as_int)); - w#coerce - | Float (lower, upper) -> -(* let adjustment = - GData.adjustment ~value:(float_of_string prop#get) - ~lower ~upper ~step_incr:((upper-.lower)/.100.) - ~page_incr:((upper-.lower)/.10.) ~page_size:0. () - in - let w = GEdit.spin_button ~rate:0.5 ~digits:2 ~adjustment () in - w#connect#activate - ~callback:(fun () -> prop#set (string_of_float w#value)); - w#coerce -*) - let w = entry_float ~init:(float_of_string prop#get) () in - w#connect#activate - ~callback:(fun () -> prop#set (string_of_float w#value)); - w#coerce -(* | Adjust -> - let wpop = GWindow.window ~title:"Adjustment values" () in - let vb = GPack.vbox ~packing:wpop#add() in - let hb1 = GPack.hbox ~packing:vb#pack () in - let l1 = GMisc.label ~text:"lower" ~packing:hb1#pack () in - let e1 = entry_float ~packing:hb1#pack - ~init:(float_of_string prop#get) ~set:prop#set in -*) - | CList_titles -> - let wpop = GWindow.window ~title:"titles of the columns" () in - let vb = GPack.vbox ~packing:wpop#add () in - let titles = split_string prop#get ~sep:' ' in - let n = List.length titles in - let rtitles = ref titles in - let rget = ref [] and rset = ref [] in - for i = 1 to n do - match !rtitles with - | hd::tl -> - let hb = GPack.hbox ~packing:vb#pack () in - let _ = GMisc.label ~text:("column" ^ (string_of_int i)) - ~packing:hb#pack () in - let e = GEdit.entry ~text:hd ~packing:hb#pack () in - rtitles := tl; - rget := (fun () -> e#text) :: !rget; - rset := e#set_text :: !rset; - | _ -> failwith "CList_titles: this cannot happen!!" - done; - rtitles := titles; - rget := List.rev !rget; - rset := List.rev !rset; - let hb = GPack.hbox ~packing:vb#pack () in - let ok = GButton.button ~label:"OK" ~packing:hb#pack () in - let cancel = GButton.button ~label:"Cancel" ~packing:hb#pack () in - ok#connect#pressed - ~callback:(fun () -> - let tit = List.map ~f:(fun f -> f ()) !rget in - prop#set (String.concat ~sep:" " tit); - rtitles := tit; - wpop#misc#hide ()); - cancel#connect#pressed - ~callback:(fun () -> - wpop#misc#hide (); - List.iter2 ~f:(fun f v -> f v) !rset !rtitles); - let e = GEdit.entry ~text:"double click here" ~editable:false () in - e#event#connect#button_press ~callback: - (fun ev -> - GdkEvent.get_type ev = `TWO_BUTTON_PRESS && - GdkEvent.Button.button ev = 1 && - begin - wpop#misc#show (); - GtkSignal.stop_emit (); - true - end); - e#coerce - -let prop_box list = - let vbox = GPack.vbox () in - List.iter list ~f: - begin fun (name, prop) -> - let hbox = - GPack.hbox ~homogeneous:true ~packing:(vbox#pack ~expand:false) () in - GMisc.label ~text:name ~packing:hbox#pack (); - hbox#pack ~fill:true (prop_widget prop); - GMisc.separator `HORIZONTAL ~packing:(vbox#pack ~expand:false) (); - () - end; - vbox - -class ['a] frozen lz = object - method get : 'a = Lazy.force lz -end - -let vbox = - new frozen (lazy (GWindow.window ~show:true ~title:"Properties" ())) - -let init () = vbox#get - -let widget_pool = Hashtbl.create 7 - -let boxref = ref None -let shown_widget = ref "" - -let show_prop_box vb = - Gaux.may !boxref ~f:vbox#get#remove; - vbox#get#add vb#coerce; - boxref := Some vb#coerce - -let show (w : #tiwidget_base) = - let name = w#name in - let vb = - try - Hashtbl.find widget_pool name - with Not_found -> - let vb = prop_box w#proplist in - Hashtbl.add widget_pool ~key:name ~data:vb; - vb - in - show_prop_box vb; - shown_widget := name - -let add (w : #tiwidget_base) = - let vb = prop_box w#proplist in - Hashtbl.add widget_pool ~key:w#name ~data:vb - - -let remove name = - Hashtbl.remove widget_pool name; - if !shown_widget = name then begin - shown_widget := ""; - show_prop_box (GMisc.label ~text:"No widget selected" ()) - end - -(* -let change_name oldname newname = - let vb = Hashtbl.find widget_pool oldname in - Hashtbl.remove widget_pool oldname; - Hashtbl.add widget_pool ~key:newname ~data:vb -*) - -let update (w : #tiwidget_base) show_modif = - let vb = prop_box w#proplist in - Hashtbl.remove widget_pool w#name; - Hashtbl.add widget_pool ~key:w#name ~data:vb; - if show_modif && !shown_widget = w#name then show_prop_box vb diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/propwin.mli b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/propwin.mli deleted file mode 100644 index 6636a4f6f..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/propwin.mli +++ /dev/null @@ -1,10 +0,0 @@ -(* $Id$ *) - -open Common - -val init : unit -> GWindow.window -val show : #tiwidget_base -> unit -val add : #tiwidget_base -> unit -val remove : string -> unit -(* val change_name : string -> string -> unit *) -val update : #tiwidget_base -> bool -> unit diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/radiobutton.xpm b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/radiobutton.xpm deleted file mode 100644 index 0f5fbbd45..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/radiobutton.xpm +++ /dev/null @@ -1,33 +0,0 @@ -/* XPM */ -static char *radiobutton_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 6 1", -" c Gray0", -". c #7b7b7b", -"X c #d6d6d6", -"o c #b3cece", -"O c Gray100", -"+ c None", -/* pixels */ -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"++++++++++.++++++++++", -"+++++++++...+++++++++", -"++++++++.. ..++++++++", -"+++++++.. X ..+++++++", -"++++++.. XXX ..++++++", -"+++++.. XXXXX ..+++++", -"++++++OOXXXXXOO++++++", -"+++++++OOXXXOO+++++++", -"++++++++OOXOO++++++++", -"+++++++++OOO+++++++++", -"++++++++++O++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++" -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/scrolledwindow.xpm b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/scrolledwindow.xpm deleted file mode 100644 index 44e59f610..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/scrolledwindow.xpm +++ /dev/null @@ -1,30 +0,0 @@ -/* XPM */ -static char *scrolledwindow_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 3 1", -" c Gray0", -". c #d6d6d6", -"X c Gray100", -/* pixels */ -"XXXXXXXXXXXXXXXXXXXXX", -"X.............X..... ", -"X.............X.. .. ", -"X.............X. . ", -"X.............X..... ", -"X.............X ", -"X.............XXXXXX ", -"X.............XX.... ", -"X.............XX.... ", -"X.............XXXXXX ", -"X.............X..... ", -"X.............X. . ", -"X.............X.. .. ", -"X.............X..... ", -"XXXXXXXXXXXXXXX ", -"X.... XXX .... ......", -"X.. . X.. . .. ......", -"X. . X.. . . ......", -"X.. . X.. . .. ......", -"X.... X.. .... ......", -"X ......" -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/spinbutton.xpm b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/spinbutton.xpm deleted file mode 100644 index f3a313b19..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/spinbutton.xpm +++ /dev/null @@ -1,33 +0,0 @@ -/* XPM */ -static char *spinbutton_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 6 1", -" c Gray0", -". c #7b7b7b", -"X c #d6d6d6", -"o c #b3cece", -"O c Gray100", -"+ c None", -/* pixels */ -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+ +", -"+ OOOOOOOOOOO OOOOO +", -"+ OOOOOOOOOOO OX X. +", -"+ OOOOOOOOOOO O . +", -"+ OOOOOOOOOOO OOOOO +", -"+ OOOOOOOOOOO O . +", -"+ OOOOOOOOOOO OX X. +", -"+ OOOOOOOOOOO ..... +", -"+ +", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++" -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/statusbar.xpm b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/statusbar.xpm deleted file mode 100644 index 8576d88c6..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/statusbar.xpm +++ /dev/null @@ -1,34 +0,0 @@ -/* XPM */ -static char *statusbar_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 7 1", -" c Gray0", -". c #7b7b7b", -"X c #d6d6d6", -"o c #b3cece", -"O c Gray87", -"+ c Gray100", -"@ c None", -/* pixels */ -"@@@@@@@@@@@@@@@@@@@@@", -"@@@@@@@@@@@@@@@@@@@@@", -"@@@@@@@@@@@@@@@@@@@@@", -"@@@@@@@@@@@@@@@@@@@@@", -"@@@+XX.@@@@@@@@@@@@@@", -"@@@+XX.@@@@@@@@@@@@@@", -"@@@+XX.@@@@@@@@@@@@@@", -"@@@+XX.@@@@@@@@@@@@@@", -"@@@+XX++++++++++++@@@", -"@@@+XXXXXXXXXXXXXX@@@", -"@@@+XXXXXXXXXXXXXX@@@", -"@@@+XX............@@@", -"@@@+XX.OOOOOOOOOOO@@@", -"@@@+XX.OOOOOOOOOOO@@@", -"@@@+XX.OOOOOOOOOOO@@@", -"@@@+XX++++++++++++@@@", -"@@@+XXXXXXXXXXXXXX@@@", -"@@@+XXXXXXXXXXXXXX@@@", -"@@@ @@@", -"@@@@@@@@@@@@@@@@@@@@@", -"@@@@@@@@@@@@@@@@@@@@@" -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/tiBase.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/tiBase.ml deleted file mode 100644 index 390749337..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/tiBase.ml +++ /dev/null @@ -1,671 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open GObj -open GContainer - -open Utils -open Common -open Property - -(* possible children; used to make the menus *) -let widget_add_list = - [ "vbox"; "hbox"; "vbutton_box"; "hbutton_box"; "fixed"; - "frame"; "aspect_frame"; "handle_box"; "event_box"; - "hseparator"; "vseparator"; "statusbar"; "label"; "notebook"; - "color_selection"; - "button"; - "toggle_button"; "check_button"; "radio_button"; "scrolled_window"; - - "entry"; "spin_button"; "combo"; "clist"; "toolbar"] - - -(*********** selection ***********) - -let selection = ref "" -let window_selection = ref "" - - -(**************** signals class ***************) - -class tiwidget_signals ~signals = - let name_changed : string signal = signals in - object - val after = false - method after = {< after = true >} - method name_changed = name_changed#connect ~after - end - - -(************* class type ***************) -(* the ti classes encapsulate the corresponding gtk - widget which will be in the gtk-window and a tree item - labelled with the name of the widget which will be in the - tree-window. - all these classes have the same following interface *) - -class virtual tiwidget0 = object - method virtual widget : GObj.widget - method virtual connect_event : GObj.event_signals - method virtual parent : tiwidget0 option - method virtual set_parent : tiwidget0 -> unit - method virtual base : GObj.widget - method virtual tree_item : GTree2.tree_item - method virtual tree : GTree2.tree - method virtual children : (tiwidget0 * Gtk.Tags.pack_type) list - method virtual name : string - method virtual proplist : (string * prop) list - method virtual add_to_proplist : (string * prop) list -> unit - method virtual change_name_in_proplist : string -> string -> unit - method virtual set_property : string -> string -> unit - method virtual forall : callback:(tiwidget0 -> unit) -> unit - method virtual remove : tiwidget0 -> unit -(* method virtual add_child_with_name : string -> string -> pos:int -> tiwidget0 *) - method virtual add_children : ?pos:int -> yywidget_tree -> unit - method virtual add_children_wo_undo : ?pos:int -> yywidget_tree -> string - method virtual remove_me : unit -> unit - method virtual remove_me_without_undo : unit -> unit - method virtual emit_code : Format.formatter -> char list -> unit - method virtual emit_init_code : Format.formatter -> packing:string -> unit - method virtual emit_method_code : Format.formatter -> unit - method virtual emit_initializer_code : Format.formatter -> unit - method virtual save : Format.formatter -> unit - method virtual copy : unit -> unit - method virtual connect : tiwidget_signals - method virtual disconnect : GtkSignal.id -> bool - method virtual child_up : tiwidget0 -> unit - method virtual up : unit -> unit - method virtual child_down : tiwidget0 -> unit - method virtual down : unit -> unit - method virtual next : tiwidget0 - method virtual next_child : tiwidget0 -> tiwidget0 - method virtual last : tiwidget0 - method virtual prev : tiwidget0 - method virtual set_full_menu : bool -> unit -end - -class virtual window_and_tree0 = object - method virtual tiwin : tiwidget0 -(* method virtual tree_window : window *) - method virtual change_selected : tiwidget0 -> unit - method virtual remove_sel : tiwidget0 -> unit - method virtual add_param : char - method virtual remove_param : char -> unit -(* method virtual emit : unit -> unit *) -end - -(* forward declaration of function new_widget *) -let new_tiwidget : - (classe:string -> ?pos:int -> name:string ->parent_tree:GTree2.tree -> - ?insert_evbox:bool -> ?listprop:(string * string) list -> window_and_tree0 -> tiwidget0) ref = - ref (fun ~classe ?pos ~name ~parent_tree ?insert_evbox ?listprop w -> failwith "new_tiwidget") - - -let widget_map = Hashtbl.create 17 - -(* list of names of radio_buttons (for groups) *) -let radio_button_pool = ref [] - - -(************* window creation class *************) -(* an instance of this class is created for each window opened - in radtest. It contains the tree window and the gtk window (tiwin) *) - -class window_and_tree ~name = - let tree_window = GWindow.window ~show:true ~title:(name ^ "-Tree") () in - let vbox = GPack.vbox ~spacing:2 ~packing:tree_window#add () in - let root_tree = GTree2.tree ~packing:vbox#pack ~selection_mode:`EXTENDED () in - let project_tree_item = GTree2.tree_item () in - let label = GMisc.label ~text:name ~xalign:0. ~yalign:0.5 - ~packing:project_tree_item#add () in - - object(self) - - inherit window_and_tree0 - -(* the params of the window class; because the class clist needs a param - I suppose there will be no more than 26 clists in a single window *) - val param_list = Array.create 26 false - - method add_param = - let i = ref 0 in - while param_list.(!i) do incr i done; - param_list.(!i) <- true; - char_of_int (97 + !i) - - method remove_param c = - param_list.(int_of_char c - 97) <- false - - method private param_list = - let r = ref [] in - for i = 25 downto 0 do - if Array.unsafe_get param_list i then r := (char_of_int (i+97)) :: !r - done; - !r - -(* I use magic here because the real initialization is done - below in the initializer part. It can't be done here because - of the call to self *) - val mutable tiwin = (Obj.magic 0 : tiwidget0) - - method tiwin = tiwin - method tree_window = tree_window - - method project_tree_item = project_tree_item - -(* the selected item in this window *) - val mutable selected = (None : tiwidget0 option) - -(* what to do when a new item is selected. - this method is passed to all the tiwidgets (by the select_fun - parameter) and they will call it when they are clicked on; - she is also called when changing the selection the arrow keys - (see in the initializer part) *) - method change_selected sel = - match selected with - | None -> - selected <- Some sel; - sel#tree_item#misc#set_state `SELECTED; - sel#base#misc#set_state `SELECTED; - Propwin.show sel - | Some old_sel -> - if sel = old_sel then begin - selected <- None; - sel#base#misc#set_state `NORMAL; - sel#tree_item#misc#set_state `NORMAL - end else begin - old_sel#tree_item#misc#set_state `NORMAL; - old_sel#base#misc#set_state `NORMAL; - selected <- Some sel; - sel#tree_item#misc#set_state `SELECTED; - sel#base#misc#set_state `SELECTED; - Propwin.show sel - end - -(* the tiwidget tiw is being removed; if it was selected, - put the selection to None *) - method remove_sel tiw = - match selected with - | Some sel when sel = tiw -> selected <- None - | _ -> () - -(* emits the code corresponding to this window *) - method emit c = tiwin#emit_code c self#param_list; - - method delete () = - tiwin#remove_me_without_undo (); - tree_window#destroy (); - - initializer - tiwin <- !new_tiwidget ~classe:"window" ~name ~parent_tree:root_tree - (self : #window_and_tree0 :> window_and_tree0); - - tiwin#connect#name_changed ~callback: - (fun n -> label#set_text n; tree_window#set_title (n ^ "-Tree")); - - Propwin.show tiwin; - - tree_window#event#connect#key_press ~callback: - begin fun ev -> - let state = GdkEvent.Key.state ev in - let keyval = GdkEvent.Key.keyval ev in - if keyval = GdkKeysyms._Up then begin - match selected with - | None -> () - | Some t -> - if List.mem `CONTROL state then t#up () - else try - self#change_selected t#prev - with Not_found -> () - end - else if keyval = GdkKeysyms._Down then begin - match selected with - | None -> () - | Some t -> - if List.mem `CONTROL state then t#down () - else try - self#change_selected t#next - with Not_found -> () - end; - GtkSignal.stop_emit (); - true - end; - () - end - - - -(***************** class implementation *****************) -(* this is the base class of the ti hierarchy. - all these classes will inherit from tiwidget, but without - adding new methods. In this way all the classes have the - same interface and we can use them in lists, pass them to - functions without caring on the type. - All methods needed by any of the classes are defined in - tiwidget but if a method is not pertinent in tiwidget - it has for implementation: - failwith "" - the real implementation of the method is done in the - class (or classes) in which it is needed (or sometimes - in tiwidget anyway). - Additionally, to workaround some problem with recursive types - the type of the (public) methods of tiwidget is defined in - tiwidget0 of which tiwidget inherits. - The parent_tree parameter is the tree in which the - tiwidget#tree_item will be inserted at position :pos. -*) - -class virtual tiwidget ~name ~parent_tree:(parent_tree : GTree2.tree) ~pos - ~widget ?(insert_evbox=true) (parent_window : window_and_tree0) = -object(self) - - inherit tiwidget0 - inherit has_ml_signals - - val evbox = - if insert_evbox then - let ev = GBin.event_box () in ev#add widget#coerce; Some ev - else None - -(* used only for windows delete_event *) - method connect_event = failwith "tiwidget::connect_event" - - val widget = widget#coerce - method widget = widget - - val mutable parent = None - method set_parent p = parent <- Some p - method parent = parent - method private sure_parent = - match parent with - | None -> failwith "sure_parent" - | Some p -> p - - method base = - match evbox with - | None -> widget#coerce - | Some ev -> ev#coerce - -(* this is the name used in new_tiwidget for the creation - of an object of this class *) - val mutable classe = "" - - val tree_item = GTree2.tree_item () - method tree_item = tree_item - - val mutable stree = GTree2.tree () - method tree = stree - - val label = GMisc.label ~text:name ~xalign:0. ~yalign:0.5 () - - val mutable name : string = name - method name = name - -(* this is the complete name for the creation of the widget - in lablgtk e.g. GPack.vbox; used in emit_init_code *) - method private class_name = "" - - val mutable proplist : (string * prop) list = [] - method proplist = proplist - method private get_mandatory_props = [] - - method add_to_proplist plist = proplist <- proplist @ plist - -(* for children of a box *) - method change_name_in_proplist : string -> string -> unit = - fun _ _ -> () - method set_property name value_string = try - (List.assoc name proplist)#set value_string - with Not_found -> Printf.printf "Property not_found %s, %s\n" name value_string; - flush stdout - - method private get_property name = - (List.assoc name proplist)#get - - -(* the proplist with some items removed e.g. the expand... in a box - used for saving and emitting code *) - method private emit_clean_proplist = - List.fold_left ~f:(fun l p -> List.remove_assoc p l) - ~init:proplist - ([ "name"; "expand"; "fill"; "padding" ] @ self#get_mandatory_props) -(* method private emit_clean_proplist plist = - List.fold_left ~init:plist ~f: - (fun pl propname -> List.remove_assoc propname pl) - [ "name"; "expand"; "fill"; "padding" ] -*) - - method private save_clean_proplist = - List.fold_left ~f:(fun l p -> List.remove_assoc p l) - ~init:proplist ("name" :: self#get_mandatory_props) -(* method private save_clean_proplist = - List.remove_assoc "name" proplist *) - - val mutable children : (tiwidget0 * Gtk.Tags.pack_type) list = [] - method children = children - method forall = - fun ~callback -> List.iter (List.map children ~f:fst) ~f:callback - -(* encapsulate container#add and container#remove - they are here because they depend on the type of the widget: - e.g.: gtkbin->add scrolled_window->add_with_viewport box->pack *) - method private add = failwith (name ^ "::add") - method remove = failwith (name ^ "::remove") - - -(* removes self from his parent; - will be different for a window *) - method remove_me () = - let sref = ref "" in - self#save_to_string sref; - let pos = list_pos ~item:(self : #tiwidget0 :> tiwidget0) - (List.map self#sure_parent#children ~f:fst) in - let lexbuf = Lexing.from_string !sref in - let node = Load_parser.widget Load_lexer.token lexbuf in - add_undo (Add (self#sure_parent#name, node, pos)); - self#remove_me_without_undo () - - method remove_me_without_undo () = -(* it should be enough to only recursively remove the children from the - name_list and do the tip#remove and tip#tree#remove - only for self *) - self#forall ~callback:(fun tiw -> tiw#remove_me_without_undo ()); - parent_window#remove_sel (self : #tiwidget0 :> tiwidget0); - match parent with - | None -> failwith "remove without parent" - | Some (tip : #tiwidget0) -> - tip#tree#remove tree_item; - tip#remove (self : #tiwidget0 :> tiwidget0); - name_list := list_remove !name_list ~f:(fun n -> n=name); - Hashtbl.remove widget_map name; - Propwin.remove name - -(* used for undo *) - method private remove_child_by_name name () = - let child = fst (List.find children - ~f:(fun (ch, _) -> ch#name = name)) in - child#remove_me () - -(* for most widgets we make a child with new_tiwidget and then add it - to self; for toolbars we use toolbar#insert_button... *) - method private make_child = !new_tiwidget - -(* adds a child and shows his properties; - used when adding a child by the menu or DnD *) - method private add_child classe ?name ?(undo = true) ?(affich = true) ?(pos = -1) ?(listprop = []) () = - let name = match name with - | None -> make_new_name classe - | Some n -> n in - let child = self#make_child ~classe ~name ~parent_tree:stree parent_window ~pos ~listprop in - child#set_parent (self : #tiwidget0 :> tiwidget0); - self#add child ~pos; - if affich then Propwin.show child; - if undo then add_undo (Remove name); - child - - -(* adds the subtree saved in the Node *) - method add_children ?(pos = -1) node = - let child_name = self#add_children_wo_undo node ~pos in - add_undo (Remove child_name) - - method add_children_wo_undo ?(pos = -1) (Node (child, children)) = - let classe, name, property_list = child in - let rname = change_name name in - let tc = self#add_child classe ~name:rname ~undo:false ~affich:false ~pos ~listprop:property_list () in - List.iter (List.rev children) - ~f:(fun c -> tc#add_children_wo_undo c; ()); - List.iter property_list ~f:(fun (n,v) -> tc#set_property n v); - rname - -(* only a tiwindow can emit code *) - method emit_code = failwith "emit_code" - -(* some methods for emitting code *) -(* this one calculates the expand, fill and padding parameters - of a box child *) - method private get_packing packing = - let aux name = - let prop = List.assoc name proplist in - if prop#modified then " ~" ^ name ^ ":" ^ prop#code else "" - in - let efp = try - (aux "expand") ^ (aux "fill") ^ (aux "padding") - with Not_found -> "" in - if efp = "" then ("~packing:" ^ packing) - else ("~packing:(" ^ packing ^ efp ^ ")") - -(* this one emits the declaration code of the widget *) - method emit_init_code formatter ~packing = - Format.fprintf formatter "@ @[let %s =@ @[%s" - name self#class_name; - List.iter self#get_mandatory_props - ~f:begin fun name -> - Format.fprintf formatter "@ ~%s:%s" name - (List.assoc name proplist)#code - end; - let packing = self#get_packing packing in - if packing <> "" then Format.fprintf formatter "@ %s" packing; - self#emit_prop_code formatter; - Format.fprintf formatter "@ ()@ in@]@]" - -(* this one emits the properties which do not have their - default value; used by emit_init_code *) - method private emit_prop_code formatter = - let mandatory = self#get_mandatory_props in - List.iter self#emit_clean_proplist ~f: - begin fun (name, prop) -> - if List.mem name mandatory then () else - if prop#modified then - Format.fprintf formatter "@ ~%s:%s" prop#name prop#code - end - -(* this one emits the method returning this widget *) - method emit_method_code formatter = - Format.fprintf formatter "@ method %s = %s" name name; - -(* emits the code in the initializer part for this widget *) - method emit_initializer_code _ = () - -(* for saving the project to a file. Used also by copy and cut *) - method private save_start formatter = - Format.fprintf formatter "@\n@[<2><%s name=%s>" classe name; - List.iter - ~f:(fun p -> Format.fprintf formatter - "@\n%s=\"%s\"" p (List.assoc p proplist)#get) - self#get_mandatory_props - - - method private save_end formatter = - Format.fprintf formatter "@]@\n" classe - - method save formatter = - self#save_start formatter; - List.iter self#save_clean_proplist ~f: - (fun (name, prop) -> - if prop#modified then - Format.fprintf formatter "@\n%s=%s" name prop#save_code); - self#forall ~callback:(fun w -> w#save formatter); - self#save_end formatter - - - method private save_to_string string_ref = - let b = Buffer.create 80 in - let f = Format.formatter_of_buffer b in - self#save f; - Format.pp_print_flush f (); - string_ref := Buffer.contents b - - method private copy_to_sel selection = self#save_to_string selection - - method copy () = self#copy_to_sel selection - - method private cut () = - self#copy (); - self#remove_me () - - method private paste () = - let lexbuf = Lexing.from_string !selection in - let node = Load_parser.widget Load_lexer.token lexbuf in - self#add_children node - - -(* ML signal used when the name of the widget is changed *) - val name_changed : string signal = new signal - method connect = new tiwidget_signals ~signals:name_changed - method private call_name_changed = name_changed#call - - -(* this is necessary because gtk_tree#remove deletes the tree - when removing the last item *) -(* suppressed this in gtktree2 - method new_tree () = - stree <- GTree2.tree; - tree_item#set_subtree stree; - tree_item#expand () -*) - -(* when full_menu is true we use the menu else the restricted menu *) - val mutable full_menu = true - method set_full_menu b = full_menu <- b - -(* the menu for this widget - This menu is recalculated when one clicks on the 3rd button. - There is nothing to do e.g. when the name of the widget changes, - it will change in the menu the next time. *) - method private menu ~time = self#restricted_menu ~time - -(* the restricted menu for this widget - used for containers when they are full *) - method private restricted_menu ~time = - let menu = GMenu.menu () in - let mi_remove = GMenu.menu_item ~packing:menu#append ~label:"remove" () - and mi_cut = GMenu.menu_item ~packing:menu#append ~label:"Cut" () - and mi_copy = GMenu.menu_item ~packing:menu#append ~label:"Copy" () in - mi_remove#connect#activate ~callback:self#remove_me; - mi_copy#connect#activate ~callback:self#copy; - mi_cut#connect#activate ~callback:self#cut; - menu#popup ~button:3 ~time - -(* changes all that depends on the name *) - method private set_new_name new_name = - if test_unique new_name then begin - Hashtbl.remove widget_map name; - Hashtbl.add widget_map ~key:new_name - ~data:(self : #tiwidget0 :> tiwidget0); - if (classe = "radio_button") then begin - radio_button_pool := new_name :: - (list_remove !radio_button_pool ~f:(fun x -> x = name)); - List.iter - ~f:(fun x -> Propwin.update (Hashtbl.find widget_map x) false) - !radio_button_pool - end; - label#set_text new_name; - let old_name = name in - name <- new_name; -(* Propwin.change_name old_name new_name; *) - name_list := - new_name :: (list_remove !name_list ~f:(fun n -> n=old_name)); - begin match self#parent with - | None -> () - | Some p -> p#change_name_in_proplist old_name new_name - end; - self#call_name_changed new_name; - true - end - else begin - message_name (); - Propwin.update self true; - false - end - - -(* moves the present tiw up in his parents' children list *) -(* does something only when the parent is a box *) - method child_up = fun _ -> () - - method up () = match parent with - | None -> () - | Some t -> t#child_up (self : #tiwidget0 :> tiwidget0) - - method child_down = fun _ -> () - - method down () = match parent with - | None -> () - | Some t -> t#child_down (self : #tiwidget0 :> tiwidget0) - - -(* get the next tiwidget in the tree (used with Down arrow) *) - method next = - if children <> [] then fst (List.hd children) - else begin - match parent with - | None -> raise Not_found - | Some p -> p#next_child (self : #tiwidget0 :> tiwidget0) - end - - method next_child child = - let _, tl = cut_list ~item:child (List.map ~f:fst children) in - match tl with - | ch :: next :: _ -> next - | ch :: [] -> begin - match parent with - | None -> raise Not_found - | Some p -> p#next_child (self : #tiwidget0 :> tiwidget0) - end - | _ -> failwith "next_child" - -(* get the last child of the last child ... of our last child. - Used by prev. *) - method last = - if children = [] then (self : #tiwidget0 :> tiwidget0) - else (fst (List.hd (List.rev children)))#last - -(* get the previous tiwidget in the tree (used with Up arrow) *) - method prev = - match parent with - | None -> raise Not_found - | Some p -> - let hd, _ = cut_list ~item:(self : #tiwidget0 :> tiwidget0) - (List.map ~f:fst p#children) in - match hd with - | [] -> p - | h :: _ -> h#last - - initializer - Hashtbl.add widget_map ~key:name ~data:(self : #tiwidget0 :> tiwidget0); - name_list := name :: !name_list; - parent_tree#insert tree_item ~pos; - tree_item#set_subtree stree; - tree_item#add label#coerce; - tree_item#expand (); - - proplist <- proplist @ - [ "name", - new prop_string ~name:"name" ~init:name ~set:self#set_new_name; - "width", new prop_int ~name:"width" ~init:"-2" - ~set:(fun v -> widget#misc#set_geometry ~width:v (); true); - "height", new prop_int ~name:"height" ~init:"-2" - ~set:(fun v -> widget#misc#set_geometry ~height:v (); true) ]; - - self#add_signal name_changed; - - tree_item#event#connect#button_press ~callback: - (fun ev -> match GdkEvent.get_type ev with - | `BUTTON_PRESS -> - if GdkEvent.Button.button ev = 1 then begin - parent_window#change_selected - (self : #tiwidget0 :> tiwidget0); - end - else if GdkEvent.Button.button ev = 3 then begin - if full_menu - then self#menu ~time:(GdkEvent.Button.time ev) - else self#restricted_menu ~time:(GdkEvent.Button.time ev); - end; - GtkSignal.stop_emit (); - true - | _ -> false); - () -end - diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/tiBin.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/tiBin.ml deleted file mode 100644 index 5ebcb3e2e..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/tiBin.ml +++ /dev/null @@ -1,185 +0,0 @@ -open Gtk - -open Utils -open Property - -open TiContainer - -class tiframe ~(widget : GBin.frame) ~name ~parent_tree ~pos - ?(insert_evbox=true) parent_window = -object - val frame = widget - inherit ticontainer ~name ~widget ~parent_tree ~pos - ~insert_evbox parent_window as container - - method private class_name = "GBin.frame" - - method private get_mandatory_props = [ "label" ] - - initializer - classe <- "frame"; - frame#set_label name; - proplist <- proplist @ - [ "label", - new prop_string ~name:"label" ~init:name ~set:(ftrue frame#set_label); - "label_xalign", - new prop_float ~name:"label_xalign" ~init:"0.0" ~min:0. ~max:1. - ~set:(fun x -> frame#set_label_align ~x (); true); - "shadow_type", - new prop_shadow ~name:"shadow_type" ~init:"ETCHED_IN" - ~set:(ftrue frame#set_shadow_type) ] -end - -let new_tiframe ~name ?(listprop = []) = - new tiframe ~widget:(GBin.frame ()) ~name - - - - -class tiaspect_frame ~(widget : GBin.aspect_frame) ~name ~parent_tree ~pos - ?(insert_evbox=true) parent_window = -object - val aspect_frame = widget - inherit tiframe ~name ~widget:(widget :> GBin.frame) ~parent_tree ~pos - ~insert_evbox parent_window - - method private class_name = "GBin.aspect_frame" - - initializer - classe <- "aspect_frame"; - frame#set_label name; - proplist <- proplist @ - [ "obey_child", - new prop_bool ~name:"obey_child" ~init:"true" - ~set:(ftrue aspect_frame#set_obey_child); - "ratio", - new prop_float ~name:"ratio" ~init:"1.0" ~min:0. ~max:1. - ~set:(ftrue aspect_frame#set_ratio) - ] -end - -let new_tiaspect_frame ~name ?(listprop = []) = - new tiaspect_frame ~widget:(GBin.aspect_frame ()) ~name - - - - -class tievent_box ~(widget : GBin.event_box) ~name ~parent_tree ~pos - ?(insert_evbox=true) parent_window = -object - val event_box = widget - inherit ticontainer ~name ~widget ~parent_tree ~pos - ~insert_evbox parent_window - - method private class_name = "GBin.event_box" - initializer - classe <- "event_box" -end - -let new_event_box ~name ?(listprop = []) = - new tievent_box ~widget:(GBin.event_box ()) ~name - - - - -class tihandle_box ~(widget : GBin.handle_box) ~name ~parent_tree ~pos - ?(insert_evbox=true) parent_window = -object - val handle_box = widget - inherit ticontainer ~name ~widget ~parent_tree ~pos - ~insert_evbox parent_window - - method private class_name = "GBin.handle_box" - - initializer - classe <- "handle_box"; - proplist <- proplist @ - [ "shadow_type", - new prop_shadow ~name:"shadow_type" ~init:"OUT" - ~set:(ftrue handle_box#set_shadow_type); - "handle_position", - new prop_position ~name:"handle_position" ~init:"LEFT" - ~set:(ftrue handle_box#set_handle_position); - "snap_edge", - new prop_position ~name:"snap_edge" ~init:"TOP" - ~set:(ftrue handle_box#set_snap_edge) - ] -end - -let new_handle_box ~name ?(listprop = []) = - new tihandle_box ~widget:(GBin.handle_box ()) ~name - - - - - -class tiviewport ~(widget : GBin.handle_box) ~name ~parent_tree ~pos - ?(insert_evbox=true) parent_window = -object - val viewport = widget - inherit ticontainer ~name ~widget ~parent_tree ~pos - ~insert_evbox parent_window - - method private class_name = "GBin.viewport" - - initializer - classe <- "viewport"; - proplist <- proplist @ - [ "shadow_type", - new prop_shadow ~name:"shadow_type" ~init:"OUT" - ~set:(ftrue viewport#set_shadow_type) - ] -end - -let new_viewport ~name ?(listprop = []) = - new tiviewport ~widget:(GBin.handle_box ()) ~name - - - - - -class tiscrolled_window ~(widget : GBin.scrolled_window) - ~name ~parent_tree ~pos ?(insert_evbox=true) parent_window = - object(self) - val scrolled_window = widget - inherit ticontainer ~name ~insert_evbox - ~parent_tree ~pos ~widget parent_window - - method private class_name = "GBin.scrolled_window" - method private name_of_add_method = "#add_with_viewport" - - method private add rw ~pos = - scrolled_window#add_with_viewport (rw#base); - children <- [ rw, `START]; - self#set_full_menu false; - tree_item#drag#dest_unset () - -(* we must remove the child from the viewport, - not from the scrolled_window; - it is not mandatory to remove the viewport - from the scrolled_window *) - method remove child = - let viewport = (new GContainer.container (GtkBase.Container.cast (List.hd scrolled_window#children)#as_widget)) in - viewport#remove child#base; -(* scrolled_window#remove (List.hd scrolled_window#children); *) - children <- [ ]; - self#set_full_menu true; - tree_item#drag#dest_set ~actions:[`COPY] - [ { target = "STRING"; flags = []; info = 0} ] - - - initializer - classe <- "scrolled_window"; - proplist <- proplist @ - [ "hscrollbar_policy", - new prop_policy ~name:"hscrollbar_policy" ~init:"ALWAYS" - ~set:(ftrue scrolled_window#set_hpolicy); - "vscrollbar_policy", - new prop_policy ~name:"vscrollbar_policy" ~init:"ALWAYS" - ~set:(ftrue scrolled_window#set_vpolicy) ] -end - -let new_tiscrolled_window ~name ?(listprop = []) = - new tiscrolled_window ~widget:(GBin.scrolled_window ()) ~name - - diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/tiButton.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/tiButton.ml deleted file mode 100644 index 174c6ebff..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/tiButton.ml +++ /dev/null @@ -1,372 +0,0 @@ -open Utils -open Property - -open TiBase -open TiContainer - -(* the button inherits from widget because it can't accept - a child; - needs to add the border_width property *) -class tibutton ~(widget : #GButton.button) ~name ~parent_tree ~pos - ?(insert_evbox=true) parent_window = -object(self) - val button = widget - inherit tiwidget ~name ~widget ~parent_tree ~pos ~insert_evbox - parent_window as widget - - method private class_name = "GButton.button" - - method private get_mandatory_props = [ "label" ] - - initializer - classe <- "button"; - proplist <- proplist @ - [ "border_width", new prop_int ~name:"border_width" ~init:"0" - ~set:(ftrue button#set_border_width); - "label", - new prop_string ~name:"label" ~init:name ~set: - begin fun v -> - button#remove (List.hd button#children)#coerce; - GMisc.label ~text:v ~xalign:0.5 ~yalign:0.5 ~packing:button#add (); - true - end ] -end - -let new_tibutton ~name ?(listprop = []) = - let b = GButton.button ~label:name () in - b#event#connect#enter_notify - ~callback:(fun _ -> GtkSignal.stop_emit (); true); - b#event#connect#leave_notify - ~callback:(fun _ -> GtkSignal.stop_emit (); true); - new tibutton ~widget:b ~name - - -class ticheck_button ~(widget : #GButton.toggle_button) ~name - ~parent_tree ~pos ?(insert_evbox=true) parent_window = -object(self) - val button = widget - inherit tiwidget ~name ~widget ~insert_evbox - ~parent_tree ~pos parent_window as widget - - - method private class_name = "GButton.check_button" - - method private get_mandatory_props = [ "label" ] - - initializer - classe <- "check_button"; - proplist <- proplist @ - [ "border_width", new prop_int ~name:"border_width" ~init:"0" - ~set:(ftrue button#set_border_width); - "label", - new prop_string ~name:"label" ~init:name ~set: - begin fun v -> - button#remove (List.hd button#children)#coerce; - GMisc.label ~text:v ~xalign:0.5 ~yalign:0.5 ~packing:button#add (); - true - end - ] -end - -let new_ticheck_button ~name ?(listprop = []) = - new ticheck_button ~widget:(GButton.check_button ~label:name ()) ~name - - - -class titoggle_button ~(widget : #GButton.toggle_button) ~name - ~parent_tree ~pos ?(insert_evbox=true) parent_window = -object(self) - val button = widget - inherit tiwidget ~name ~widget ~insert_evbox - ~parent_tree ~pos parent_window as widget - - method private class_name = "GButton.toggle_button" - - method private get_mandatory_props = [ "label" ] - - initializer - classe <- "toggle_button"; - proplist <- proplist @ - [ "border width", new prop_int ~name:"border_width" ~init:"0" - ~set:(ftrue button#set_border_width); - "label", - new prop_string ~name:"label" ~init:name ~set: - begin fun v -> - button#remove (List.hd button#children)#coerce; - GMisc.label ~text:v ~xalign:0.5 ~yalign:0.5 ~packing:button#add (); - true - end ] -end - -let new_titoggle_button ~name ?(listprop = []) = - let b = GButton.toggle_button ~label:name () in -(* b#connect#event#enter_notify - ~callback:(fun _ -> GtkSignal.stop_emit ()); - b#connect#event#leave_notify - ~callback:(fun _ -> GtkSignal.stop_emit ()); -*) - new titoggle_button ~name ~widget:b - - -class tiradio_button ~(widget : #GButton.radio_button) ~name:nname - ~parent_tree ~pos ?(insert_evbox=true) parent_window = -object(self) - val button = widget - inherit tiwidget ~name:nname ~widget ~insert_evbox - ~parent_tree ~pos parent_window as widget - - val group_prop = - new prop_enum_dyn ~values:(fun () -> !radio_button_pool) ~name:"group" - ~set:(fun () -> true) ~init:nname - - - method private class_name = "GButton.radio_button" - - method remove_me_without_undo () = - radio_button_pool := list_remove !radio_button_pool - ~f:(fun x -> x = name); - widget#remove_me_without_undo () - - method private get_mandatory_props = [ "label" ] - - method private emit_clean_proplist = - List.remove_assoc "group" widget#emit_clean_proplist - - method emit_initializer_code formatter = - let groupname = group_prop#get in - if name <> groupname then - Format.fprintf formatter "@ %s#set_group %s#group;" name groupname - - initializer - classe <- "radio_button"; - radio_button_pool := name :: !radio_button_pool; - List.iter - ~f:(fun x -> Propwin.update (Hashtbl.find widget_map x) true) - (List.tl !radio_button_pool); - - proplist <- proplist @ - [ "border_width", new prop_int ~name:"border_width" ~init:"0" - ~set:(ftrue button#set_border_width); - "label", - new prop_string ~name:"label" ~init:name ~set: - begin fun v -> - button#remove (List.hd button#children)#coerce; - GMisc.label ~text:v ~xalign:0.5 ~yalign:0.5 ~packing:button#add (); - true - end ; - "group", group_prop - ] -end - -let new_tiradio_button ~name ?(listprop = []) = - let b = GButton.radio_button ~label:name () in - (* - b#event#connect#enter_notify - ~callback:(fun _ -> b#misc#stop_emit ~name:"enter_notify_event"; true); - b#event#connect#leave_notify - ~callback:(fun _ -> b#misc#stop_emit ~name:"leave_notify_event"; true); - *) - new tiradio_button ~name ~widget:b - - - - -class tibutton_toolbar ~(widget : #GButton.button) ~name ~parent_tree ~pos - ?(insert_evbox=true) parent_window ~toolbar = -object(self) - val button = widget - inherit tibutton ~name ~widget ~parent_tree ~pos ~insert_evbox - parent_window as button - - method private get_mandatory_props = - [ "text"; "tooltip"; "tooltip_private" ] - - method emit_init_code formatter ~packing = - Format.fprintf formatter "@ @[let %s =@ @[%s#insert_button" - name toolbar#name; - List.iter self#get_mandatory_props ~f: - begin fun name -> - Format.fprintf formatter "@ ~%s:%s" name - (List.assoc name proplist)#code - end; - Format.fprintf formatter "@ ()@ in@]@]" - - initializer - proplist <- List.remove_assoc "label" proplist -end - - -class titoggle_button_toolbar ~(widget : #GButton.toggle_button) ~name - ~parent_tree ~pos ?(insert_evbox=true) parent_window ~toolbar = -object(self) - val button = widget - inherit titoggle_button ~name ~widget ~parent_tree ~pos ~insert_evbox - parent_window as button - - method private get_mandatory_props = - [ "text"; "tooltip"; "tooltip_private" ] - - method emit_init_code formatter ~packing = - Format.fprintf formatter - "@ @[let %s =@ @[%s#insert_toggle_button" - name toolbar#name; - List.iter self#get_mandatory_props ~f: - begin fun name -> - Format.fprintf formatter "@ ~%s:%s" name - (List.assoc name proplist)#code - end; - Format.fprintf formatter "@ ()@ in@]@]" - - initializer - proplist <- List.remove_assoc "label" proplist -end - - -class tiradio_button_toolbar ~(widget : #GButton.radio_button) ~name - ~parent_tree ~pos ?(insert_evbox=true) parent_window ~toolbar = -object(self) - val button = widget - inherit tiradio_button ~name ~widget ~parent_tree ~pos ~insert_evbox - parent_window as button - - method private get_mandatory_props = - [ "text"; "tooltip"; "tooltip_private" ] - - method emit_init_code formatter ~packing = - Format.fprintf formatter - "@ @[let %s =@ @[%s#insert_radio_button" - name toolbar#name; - List.iter self#get_mandatory_props ~f: - begin fun name -> - Format.fprintf formatter "@ ~%s:%s" name - (List.assoc name proplist)#code - end; - Format.fprintf formatter "@ ()@ in@]@]" - - initializer - proplist <- List.remove_assoc "label" proplist -end - - - - -class titoolbar ~(widget : GToolbar2.toolbar2) ~name ~parent_tree ~pos - ?(insert_evbox=true) parent_window = -object(self) - val toolbar = widget - inherit ticontainer ~name ~widget ~parent_tree ~pos - ~insert_evbox parent_window - - method private class_name = "GButton.toolbar" - - method private add child ~pos = - children <- children @ [child, `START] - - method private get_pos child = - let rec aux n = function - | [] -> failwith "toolbar::get_pos" - | (hd, _)::tl -> if hd = child then n else aux (n+1) tl in - aux 0 children - - method private make_child ~classe ?(pos = -1) ~name ~parent_tree - ?(insert_evbox = true) ?(listprop = []) parent_window = - match classe with - | "button" -> - let t = try List.assoc "text" listprop with Not_found -> "" in - let tt = try List.assoc "tooltip" listprop with Not_found -> "" in - let ptt = try List.assoc "tooltip_private" listprop - with Not_found -> "" in - let listp = List.fold_left ~f:(fun l p -> List.remove_assoc p l) - ~init:listprop - [ "text"; "tooltip"; "tooltip_private" ] in - let b = toolbar#insert_button ~text:t ~tooltip:tt - ~tooltip_private:ptt () in - let child = new tibutton_toolbar ~name ~widget:b ~pos:(-1) - ~insert_evbox:false ~parent_tree:stree parent_window ~toolbar:self in - let tp = new prop_string ~name:"text" ~init:t - ~set:(fun v -> - toolbar#set_text v (self#get_pos child); true) - and ttp = new prop_string ~name:"tooltip" ~init:tt - ~set:(fun _ -> true) - and pttp = new prop_string ~name:"tooltip_private" ~init:ptt - ~set:(fun _ -> true) in - child#add_to_proplist - [ "text", tp; "tooltip", ttp; "tooltip_private", pttp ]; - child - | "toggle_button" -> - let t = try List.assoc "text" listprop with Not_found -> "" in - let tt = try List.assoc "tooltip" listprop with Not_found -> "" in - let ptt = try List.assoc "tooltip_private" listprop - with Not_found -> "" in - let listp = List.fold_left ~f:(fun l p -> List.remove_assoc p l) - ~init:listprop - [ "text"; "tooltip"; "tooltip_private" ] in - let b = toolbar#insert_toggle_button ~text:t ~tooltip:tt - ~tooltip_private:ptt () in - let child = new titoggle_button_toolbar ~name ~widget:b ~pos:(-1) - ~insert_evbox:false ~parent_tree:stree parent_window ~toolbar:self in - let tp = new prop_string ~name:"text" ~init:t - ~set:(fun v -> toolbar#set_text v (self#get_pos child); true) - and ttp = new prop_string ~name:"tooltip" ~init:tt - ~set:(fun _ -> true) - and pttp = new prop_string ~name:"tooltip_private" ~init:ptt - ~set:(fun _ -> true) in - child#add_to_proplist - [ "text", tp; "tooltip", ttp; "tooltip_private", pttp ]; - child - | "radio_button" -> - let t = try List.assoc "text" listprop with Not_found -> "" in - let tt = try List.assoc "tooltip" listprop with Not_found -> "" in - let ptt = try List.assoc "tooltip_private" listprop - with Not_found -> "" in - let listp = List.fold_left ~f:(fun l p -> List.remove_assoc p l) - ~init:listprop - [ "text"; "tooltip"; "tooltip_private" ] in - let b = toolbar#insert_radio_button ~text:t ~tooltip:tt - ~tooltip_private:ptt () in - let child = new tiradio_button_toolbar ~name ~widget:b ~pos:(-1) - ~insert_evbox:false ~parent_tree:stree parent_window ~toolbar:self in - let tp = new prop_string ~name:"text" ~init:t - ~set:(fun v -> toolbar#set_text v (self#get_pos child); true) - and ttp = new prop_string ~name:"tooltip" ~init:tt - ~set:(fun _ -> true) - and pttp = new prop_string ~name:"tooltip_private" ~init:ptt - ~set:(fun _ -> true) in - child#add_to_proplist - [ "text", tp; "tooltip", ttp; "tooltip_private", pttp ]; - child - | _ -> failwith "toolbar" - - - - method remove child = - toolbar#remove (child#base); - children <- list_remove ~f:(fun (ch, _) -> ch = child) children; - - initializer - classe <- "toolbar"; - proplist <- proplist @ - [ "orientation", - new prop_orientation ~name:"orientation" ~init:"HORIZONTAL" - ~set:(ftrue toolbar#set_orientation); - "style", - new prop_toolbar_style ~name:"style" ~init:"BOTH" - ~set:(ftrue toolbar#set_style); - "space_size", - new prop_int ~name:"space_size" ~init:"5" - ~set:(ftrue toolbar#set_space_size); - "space_style", - new prop_toolbar_space_style ~name:"space_style" ~init:"EMPTY" - ~set:(ftrue toolbar#set_space_style); - "tooltips", - new prop_bool ~name:"tooltips" ~init:"true" - ~set:(ftrue toolbar#set_tooltips); - "button_relief", - new prop_relief_style ~name:"button_relief" ~init:"NORMAL" - ~set:(ftrue toolbar#set_button_relief) - ] -end - -let new_toolbar ~name ?(listprop = []) = - new titoolbar ~name ~widget:(GToolbar2.toolbar2 ()) - diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/tiContainer.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/tiContainer.ml deleted file mode 100644 index ddf04d31f..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/tiContainer.ml +++ /dev/null @@ -1,92 +0,0 @@ - -open Gtk -open GObj -open GContainer - -open Utils -open Property - -open TiBase - -(* for containers being able to have at least one child; - not for buttons (can't have children) *) - -class virtual ticontainer ~widget ~name - ?(insert_evbox=true) ~parent_tree ~pos parent_window = -object(self) - - val container = (widget : #container :> container) - - inherit tiwidget ~name ~widget ~insert_evbox - ~parent_tree ~pos parent_window as widget - -(* name of the add method: add for most bin widgets, - pack for boxes, add_with_viewport for scrolled windows... *) - method private name_of_add_method = "#add" - - method private add child ~pos = - container#add child#base; - children <- [child, `START]; - self#set_full_menu false; - tree_item#drag#dest_unset () - - method remove child = - container#remove child#base; - children <- []; - self#set_full_menu true; - tree_item#drag#dest_set ~actions:[`COPY] - [ { target = "STRING"; flags = []; info = 0} ] - - method private menu ~time = - let menu = GMenu.menu () and menu_add = GMenu.menu () in - List.iter - ~f:(fun n -> - let mi = GMenu.menu_item ~packing:menu_add#append ~label:n () - in mi#connect#activate - ~callback:(fun () -> self#add_child n ();()); ()) - widget_add_list; - let mi_add = GMenu.menu_item ~packing:menu#append - ~label:("add to " ^ name) () - and mi_remove = GMenu.menu_item ~packing:menu#append - ~label:("remove " ^ name) () - and mi_cut = GMenu.menu_item ~packing:menu#append ~label:"Cut" () - and mi_copy = GMenu.menu_item ~packing:menu#append ~label:"Copy" () - and mi_paste = GMenu.menu_item ~packing:menu#append ~label:"Paste" () in - mi_remove#connect#activate ~callback:self#remove_me; - mi_add#set_submenu menu_add; - mi_copy#connect#activate ~callback:self#copy; - mi_cut#connect#activate ~callback:self#cut; - if !selection <> "" - then begin mi_paste#connect#activate ~callback:self#paste; () end - else mi_paste#misc#set_sensitive false; - menu#popup ~button:3 ~time - - method emit_init_code c ~packing = - widget#emit_init_code c ~packing; - self#forall ~callback:(fun child -> child#emit_init_code c - ~packing:(name ^ self#name_of_add_method)) - - method emit_method_code c = - widget#emit_method_code c; - self#forall ~callback:(fun child -> child#emit_method_code c) - - method emit_initializer_code c = - widget#emit_initializer_code c; - self#forall ~callback:(fun child -> child#emit_initializer_code c) - - - initializer - proplist <- proplist @ - [ "border_width", new prop_int ~name:"border_width" ~init:"0" - ~set:(ftrue container#set_border_width) ]; - - tree_item#drag#dest_set ~actions:[`COPY] - [ { target = "STRING"; flags = []; info = 0} ]; - tree_item#drag#connect#data_received ~callback: - begin fun (context : drag_context) ~x ~y - (data : selection_data) ~info ~time -> - self#add_child data#data (); - context#finish ~success:true ~del:false ~time - end;() -end - diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/tiEdit.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/tiEdit.ml deleted file mode 100644 index 4b0977bb6..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/tiEdit.ml +++ /dev/null @@ -1,153 +0,0 @@ -open Utils -open Property - -open TiBase - - - -class tientry ~(widget : GEdit.entry) ~name ~parent_tree ~pos - ?(insert_evbox=true) parent_window = -object - val entry = widget - inherit tiwidget ~name ~widget ~parent_tree ~pos - ~insert_evbox parent_window - - method private class_name = "GEdit.entry" - initializer - classe <- "entry"; - proplist <- proplist @ - [ "visibility", - new prop_bool ~name:"visibility" ~init:"true" - ~set:(ftrue entry#set_visibility); - "editable", - new prop_bool ~name:"editable" ~init:"true" - ~set:(ftrue entry#set_editable) - ] -end - -let new_tientry ~name ?(listprop = []) = - new tientry ~name ~widget:(GEdit.entry ()) - - -class tispin_button ~(widget : GEdit.spin_button) ~name ~parent_tree ~pos - ?(insert_evbox=true) parent_window = -object - val spin_button = widget - inherit tientry ~widget:(widget :> GEdit.entry) ~name ~parent_tree ~pos - ~insert_evbox parent_window - - method private class_name = "GEdit.spin_button" - initializer - classe <- "spin_button"; - proplist <- proplist @ - [ "digits", - new prop_int ~name:"digits" ~init:"0" - ~set:(ftrue spin_button#set_digits); - "update_policy", - new prop_spin_button_update_policy ~name:"update_policy" - ~init:"ALWAYS" - ~set:(ftrue spin_button#set_update_policy); - "numeric", - new prop_bool ~name:"numeric" ~init:"false" - ~set:(ftrue spin_button#set_numeric); - "wrap", - new prop_bool ~name:"wrap" ~init:"false" - ~set:(ftrue spin_button#set_wrap); - "shadow_type", - new prop_shadow ~name:"shadow_type" ~init:"NONE" - ~set:(ftrue spin_button#set_shadow_type); - "snap_to_ticks", - new prop_bool ~name:"snap_to_ticks" ~init:"false" - ~set:(ftrue spin_button#set_snap_to_ticks) - ] - -end - - -let get_adjustment () = - let rv = ref 0. and rl = ref 0. and ru = ref 100. and rsi = ref 1. - and rpi = ref 10. and rps = ref 10. in - let w = GWindow.window ~modal:true () in - let v = GPack.vbox ~packing:w#add () in - let l = GMisc.label ~text:"adjustment properties" ~packing:v#pack () in - let h1 = GPack.hbox ~packing:v#pack () in - let l1 = GMisc.label ~text:"value" ~packing:h1#pack () in - let e1 = GEdit.entry ~text:"0." ~packing:h1#pack () in - let h2 = GPack.hbox ~packing:v#pack () in - let l2 = GMisc.label ~text:"lower" ~packing:h2#pack () in - let e2 = GEdit.entry ~text:"0." ~packing:h2#pack () in - let h3 = GPack.hbox ~packing:v#pack () in - let l3 = GMisc.label ~text:"upper" ~packing:h3#pack () in - let e3 = GEdit.entry ~text:"100." ~packing:h3#pack () in - let h4 = GPack.hbox ~packing:v#pack () in - let l4 = GMisc.label ~text:"step_incr" ~packing:h4#pack () in - let e4 = GEdit.entry ~text:"1." ~packing:h4#pack () in - let h5 = GPack.hbox ~packing:v#pack () in - let l5 = GMisc.label ~text:"page_incr" ~packing:h5#pack () in - let e5 = GEdit.entry ~text:"10." ~packing:h5#pack () in - let h6 = GPack.hbox ~packing:v#pack () in - let l6 = GMisc.label ~text:"page_size" ~packing:h6#pack () in - let e6 = GEdit.entry ~text:"10." ~packing:h6#pack () in - let h7 = GPack.hbox ~packing:v#pack () in - let b1 = GButton.button ~label:"OK" ~packing:h7#pack () in - let b2 = GButton.button ~label:"Cancel" ~packing:h7#pack () in - w#show (); - b1#connect#clicked - ~callback:(fun () -> - begin - try rv := float_of_string e1#text with _ -> - try rv := float_of_int (int_of_string e1#text) with _ -> () end; - begin - try rl := float_of_string e2#text with _ -> - try rl := float_of_int (int_of_string e2#text) with _ -> () end; - begin - try ru := float_of_string e3#text with _ -> - try ru := float_of_int (int_of_string e3#text) with _ -> () end; - begin - try rsi := float_of_string e4#text with _ -> - try rsi := float_of_int (int_of_string e4#text) with _ -> () end; - begin - try rpi := float_of_string e5#text with _ -> - try rpi := float_of_int (int_of_string e5#text) with _ -> () end; - begin - try rps := float_of_string e6#text with _ -> - try rps := float_of_int (int_of_string e6#text) with _ -> () end; - w#destroy ()); - b2#connect#clicked ~callback:w#destroy; - w#connect#destroy ~callback:GMain.Main.quit; - GMain.Main.main (); - !rv, !rl, !ru, !rsi, !rpi, !rps - -let new_tispin_button ~name ?(listprop = []) = - let v, l, u, si, pi, ps = get_adjustment () in - new tispin_button ~name - ~widget:(GEdit.spin_button ~adjustment: - (GData.adjustment ~value:v ~lower:l ~upper:u - ~step_incr:si ~page_incr:pi ~page_size:ps ()) ()) - - - -class ticombo ~(widget : GEdit.combo) ~name ~parent_tree ~pos - ?(insert_evbox=true) parent_window = -object - val combo = widget - inherit tiwidget ~name ~widget ~parent_tree ~pos - ~insert_evbox parent_window - - method private class_name = "GEdit.combo" - initializer - classe <- "combo"; - proplist <- proplist @ - [ "use_arrows", - new prop_combo_use_arrows ~name:"use_arrows" ~init:"true" - ~set:(ftrue combo#set_use_arrows); - "case_sensitive", - new prop_bool ~name:"case_sensitive" ~init:"false" - ~set:(ftrue combo#set_case_sensitive) - ] -end - -let new_ticombo ~name ?(listprop = []) = - new ticombo ~name ~widget:(GEdit.combo ()) - - diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/tiList.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/tiList.ml deleted file mode 100644 index 770e19b73..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/tiList.ml +++ /dev/null @@ -1,66 +0,0 @@ - -open Utils -open Property - -open TiBase - -class ticlist ~(widget : 'a GList.clist) ~name ~parent_tree ~pos - ?(insert_evbox=true) parent_window ~columns ~titles = - object(self) - val clist = widget - inherit tiwidget ~name ~widget ~parent_tree ~pos - ~insert_evbox parent_window as widget - - val param = parent_window#add_param - - method private class_name = "GList.clist" - - method private get_mandatory_props = [ "columns" ] - - method remove_me_without_undo () = - parent_window#remove_param param; - widget#remove_me_without_undo () - - method emit_init_code formatter ~packing = - Format.fprintf formatter - "@ @[let (%s : '%c GList.clist) =@ @[GList.clist" - name param; - List.iter self#get_mandatory_props ~f: - begin fun name -> - Format.fprintf formatter "@ ~%s:%s" name - (List.assoc name proplist)#code - end; - let packing = self#get_packing packing in - if packing <> "" then Format.fprintf formatter "@ %s" packing; - self#emit_prop_code formatter; - Format.fprintf formatter "@ ()@ in@]@]" - - - initializer - classe <- "clist"; - proplist <- proplist @ - [ "columns", - new prop_int ~name:"columns" ~init:(string_of_int columns) - ~set:(fun _ -> true); - "titles", - new prop_clist_titles ~name:"titles" ~init:(String.concat ~sep:" " titles) - ~set:(fun v -> - let v = Array.of_list v in - for i = 0 to Array.length v - 1 do - clist#set_column i ~title:v.(i) - done; - true) - ] -end - -let new_clist ~name ?(listprop = []) = - let c, lp = match listprop with - | [] -> (get_a_number "number of columns" 3), [] - | ("columns", n)::tl -> (int_of_string n), tl - | _ -> failwith "new_clist" - in - let rtitles = ref [] in - for i = c downto 1 do rtitles := ("column" ^(string_of_int i)):: !rtitles done; - new ticlist ~name ~widget:(GList.clist ~columns:c ~titles: !rtitles ()) ~columns:c ~titles: !rtitles - - diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/tiMisc.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/tiMisc.ml deleted file mode 100644 index f4f435a54..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/tiMisc.ml +++ /dev/null @@ -1,176 +0,0 @@ - -open Utils -open Property - -open TiBase -open TiContainer - - -class tiseparator ~(dir : Gtk.Tags.orientation) ~(widget : GObj.widget_full) - ~name ~parent_tree ~pos ?(insert_evbox=true) parent_window = -object - val separator = widget - inherit tiwidget ~name ~widget ~parent_tree ~pos parent_window ~insert_evbox - - method private class_name = - match dir with `VERTICAL -> "GMisc.separator `VERTICAL" - | `HORIZONTAL -> "GMisc.separator `HORIZONTAL" - initializer - classe <- - (match dir with `VERTICAL -> "vseparator" | `HORIZONTAL -> "hseparator") - -end - -let new_tihseparator ~name ?(listprop = []) = - new tiseparator ~dir: `HORIZONTAL ~name - ~widget:(GMisc.separator `HORIZONTAL ()) -let new_tivseparator ~name ?(listprop = []) = - new tiseparator ~dir: `VERTICAL ~name - ~widget:(GMisc.separator `VERTICAL ()) - - - - -class tistatusbar ~(widget : GMisc.statusbar) ~name ~parent_tree ~pos - ?(insert_evbox=true) parent_window = -object(self) - val statusbar = widget - inherit ticontainer ~name ~widget ~insert_evbox - ~parent_tree ~pos parent_window as widget - - method private class_name = "GMisc.statusbar" - - initializer - classe <- "statusbar" -end - -let new_tistatusbar ~name ?(listprop = []) = - new tistatusbar ~widget:(GMisc.statusbar ()) ~name - - - -class timisc ~(widget : GMisc.misc) ~name ~parent_tree ~pos - ?(insert_evbox=true) parent_window = -object(self) - val misc = widget - inherit tiwidget ~name ~widget ~insert_evbox - ~parent_tree ~pos parent_window as widget - - method private class_name = failwith "timisc::class_name" - - initializer - proplist <- proplist @ - [ "x_alignment", - new prop_float ~name:"x alignment" ~init:"0.5" ~min:0. ~max:1. - ~set:(fun v -> misc#set_alignment ~x:v (); true); - "y_alignment", - new prop_float ~name:"y alignment" ~init:"0.5" ~min:0. ~max:1. - ~set:(fun v -> misc#set_alignment ~y:v (); true); - "x_padding", - new prop_int ~name:"x padding" ~init:"0.5" - ~set:(fun v -> misc#set_padding ~x:v (); true); - "y_padding", - new prop_int ~name:"y padding" ~init:"0.5" - ~set:(fun v -> misc#set_padding ~y:v (); true) - - ] -end - - -class tiarrow ~(widget : GMisc.arrow) ~name ~parent_tree ~pos - ?(insert_evbox=true) parent_window = -object(self) - val arrow = widget - inherit timisc ~name ~widget:(widget :> GMisc.misc) ~insert_evbox - ~parent_tree ~pos parent_window as widget - - method private class_name = "GMisc.arrow" - initializer - classe <- "arrow"; -end - - -(* TODO fenetre demandant kind et shadow -let new_tiarrow ~name = new tiarrow ~widget:(GMisc.arrow ()) ~name -*) - - -class tilabel ~(widget : GMisc.label) ~name ~parent_tree ~pos - ?(insert_evbox=true) parent_window = -object(self) - val labelw = widget - inherit timisc ~name ~widget:(widget :> GMisc.misc) ~insert_evbox - ~parent_tree ~pos parent_window as widget - - method private class_name = "GMisc.label" - - method private get_mandatory_props = [ "text" ] - - initializer - classe <- "label"; - proplist <- proplist @ - [ "text", - new prop_string ~name:"text" ~init:name ~set:(ftrue labelw#set_text); - "line_wrap", - new prop_bool ~name:"line_wrap" ~init:"true" - ~set:(ftrue labelw#set_line_wrap) - ] -end - -let new_tilabel ~name ?(listprop = []) = - new tilabel ~widget:(GMisc.label ~text:name ()) ~name - - - - - -class ticolor_selection ~(widget : GMisc.color_selection) ~name ~parent_tree ~pos - ?(insert_evbox=true) parent_window = -object(self) - val color_selection = widget - inherit tiwidget ~name ~widget ~insert_evbox - ~parent_tree ~pos parent_window as widget - - method private class_name = "GMisc.color_selection" - - initializer - classe <- "color_selection"; - proplist <- proplist @ - [ "use_opacity", - new prop_bool ~name:"use_opacity" ~init:"false" - ~set:(ftrue color_selection#set_opacity); - "update_policy", - new prop_update_type ~name:"update_policy" ~init:"CONTINUOUS" - ~set:(ftrue color_selection#set_update_policy) - ] -end - -let new_ticolor_selection ~name ?(listprop = []) = - new ticolor_selection ~widget:(GMisc.color_selection ()) ~name - - -class tipixmap ~(widget : GMisc.pixmap) ~name ~parent_tree ~pos - ?(insert_evbox=true) parent_window = -object(self) - val pixmap = widget - inherit timisc ~name ~widget:(widget :> GMisc.misc) ~insert_evbox - ~parent_tree ~pos parent_window as widget - - method private class_name = "GMisc.pixmap" - initializer - classe <- "pixmap"; - proplist <- proplist @ - [ "file", - new prop_file ~name:"file" ~init:"" - ~set:(fun v -> - pixmap#set_pixmap - (GDraw.pixmap_from_xpm ~window:parent_window#tiwin#widget - ~file:v ()); - true) - ] -end - -let new_tipixmap ~name ?(listprop = []) ~parent_tree ~pos ?(insert_evbox=true) (parent_window : window_and_tree0) = - new tipixmap ~widget:(GMisc.pixmap (GDraw.pixmap_from_xpm - ~window:parent_window#tiwin#widget ~file:"pixmap.xpm" ()) ()) ~name - ~parent_tree ~pos ~insert_evbox parent_window diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/tiPack.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/tiPack.ml deleted file mode 100644 index 291eec9d9..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/tiPack.ml +++ /dev/null @@ -1,300 +0,0 @@ - -open Utils -open Property - -open TiContainer - -class tibox ~(dir : Gtk.Tags.orientation) ~(widget : GPack.box) - ~name ~parent_tree ~pos ?(insert_evbox=true) parent_window = - let class_name = - match dir with `VERTICAL -> "GPack.vbox" | _ -> "GPack.hbox" in -object(self) - val box = widget - inherit ticontainer ~name ~widget ~parent_tree ~pos ~insert_evbox - parent_window as container - - method private class_name = class_name - - method private name_of_add_method = "#pack" - -(* removes the ::expand ::fill ::padding in the proplist of a box - assumes that these are the only properties with a :: in the name *) - method private save_clean_proplist = - List.filter container#save_clean_proplist - ~f:(fun (n,p) -> - try - let i = String.index n ':' in - i = String.length n || n.[i+1] <> ':' - with Not_found -> true) - - method private emit_clean_proplist = - List.filter container#emit_clean_proplist - ~f:(fun (n,p) -> - try - let i = String.index n ':' in - i = String.length n || n.[i+1] <> ':' - with Not_found -> true) - - method change_name_in_proplist oldn newn = - proplist <- List.fold_left ~init:proplist ~f: - (fun pl propname -> - change_property_name (oldn ^ propname) (newn ^ propname) pl) - [ "::expand"; "::fill"; "::padding" ]; - Propwin.update self false - - method child_up child = - let pos = list_pos ~item:child (List.map ~f:fst children) in - if pos > 0 then begin - box#reorder_child child#base ~pos:(pos-1); - children <- list_reorder_up children ~pos; - stree#item_up ~pos - end - - method child_down child = - let pos = list_pos ~item:child (List.map ~f:fst children) in - if pos < (List.length children - 1) then begin - box#reorder_child child#base ~pos:(pos+1); - children <- list_reorder_down children ~pos; - stree#item_up ~pos:(pos+1) - end - - method private add child ~pos = - box#pack child#base; - if pos < 0 then begin - children <- children @ [(child, `START)] - end - else begin - children <- list_insert ~item:(child, `START) children ~pos; - box#reorder_child child#base ~pos - end; - let n = child#name in - let expand = - new prop_bool ~name:"expand" ~init:"false" ~set: - begin fun v -> - box#set_child_packing (child#base) ~expand:v; - Propwin.update child false; - Propwin.update self false; true - end - and fill = - new prop_bool ~name:"fill" ~init:"true" ~set: - begin fun v -> - box#set_child_packing (child#base) ~fill:v; - Propwin.update child false; - Propwin.update self false; true - end - and padding = - new prop_int ~name:"padding" ~init:"0" ~set: - begin fun v -> - box#set_child_packing (child#base) ~padding:v; - Propwin.update child false; - Propwin.update self false; true - end - in - proplist <- proplist @ - [ (n ^ "::expand"), expand; - (n ^ "::fill"), fill; - (n ^ "::padding"), padding ]; - child#add_to_proplist - [ "expand", expand; "fill", fill; "padding", padding ]; - Propwin.update self true - - - method remove child = - box#remove (child#base); - children <- list_remove ~f:(fun (ch, _) -> ch = child) children; - let n = child#name in - proplist <- List.fold_left ~init:proplist - ~f:(fun acc n -> List.remove_assoc n acc) - [ (n ^ "::expand"); (n ^ "::fill"); (n ^ "::padding") ]; - Propwin.update self true - - initializer - classe <- (match dir with `VERTICAL -> "vbox" | _ -> "hbox"); - proplist <- proplist @ - [ "homogeneous", - new prop_bool ~name:"homogeneous" ~init:"false" - ~set:(ftrue box#set_homogeneous); - "spacing", - new prop_int ~name:"spacing" ~init:"0" - ~set:(ftrue box#set_spacing) - ] -end - -class tihbox = tibox ~dir:`HORIZONTAL -class tivbox = tibox ~dir:`VERTICAL - -let new_tihbox ~name ?(listprop = []) = new tihbox ~widget:(GPack.hbox ()) ~name -let new_tivbox ~name ?(listprop = []) = new tivbox ~widget:(GPack.vbox ()) ~name - - - - -class tibbox ~(dir : Gtk.Tags.orientation) ~(widget : GPack.button_box) - ~name ~parent_tree ~pos ?(insert_evbox=true) parent_window = - let class_name = - match dir with `VERTICAL -> "GPack.button_box `VERTICAL" - | _ -> "GPack.button_box `HORIZONTAL" in -object(self) - val bbox = widget - inherit tibox ~dir ~widget:(widget :> GPack.box) - ~name ~parent_tree ~pos ~insert_evbox parent_window - - method private class_name = class_name - -initializer - classe <- (match dir with `VERTICAL -> "vbutton_box" | _ -> "hbutton_box"); - proplist <- proplist @ - [ "layout", - new prop_button_box_style ~name:"layout" ~init:"DEFAULT_STYLE" - ~set:(ftrue bbox#set_layout); - "spacing", - new prop_int ~name:"spacing" - ~init:(match dir with `VERTICAL -> "10" | _ -> "30") -(* donne -1 (defaut) -(GtkPack.BBox.get_spacing bbox#as_button_box) *) - ~set:(fun v -> bbox#set_spacing v; - GtkBase.Widget.queue_resize bbox#as_widget; true); - "child_width", - new prop_int ~name:"child_width" ~init:"85" - ~set:(fun v -> - bbox#set_child_size ~width:v - ~height:(int_of_string (self#get_property "child_height")) (); - GtkBase.Widget.queue_resize bbox#as_widget; true); - "child_height", - new prop_int ~name:"child_height" ~init:"27" - ~set:(fun v -> - bbox#set_child_size ~height:v - ~width:(int_of_string (self#get_property "child_width")) (); - GtkBase.Widget.queue_resize bbox#as_widget; true); - "child_ipad_x", - new prop_int ~name:"child_ipad_x" ~init:"7" - ~set:(fun v -> - bbox#set_child_ipadding ~x:v - ~y:(int_of_string (self#get_property "child_ipad_y")) (); - GtkBase.Widget.queue_resize bbox#as_widget; true); - "child_ipad_y", - new prop_int ~name:"child_ipad_y" ~init:"0" - ~set:(fun v -> - bbox#set_child_ipadding ~y:v - ~x:(int_of_string (self#get_property "child_ipad_x")) (); - GtkBase.Widget.queue_resize bbox#as_widget; true); - ] -end - - -(* TODO: pour proplist/spacing il faudrait implementer - les fonctions get_spacing ... (voir dans gtkPack) *) - -class tihbutton_box = tibbox ~dir:`HORIZONTAL -class tivbutton_box = tibbox ~dir:`VERTICAL - -let new_tihbutton_box ~name ?(listprop = []) = - new tihbutton_box ~widget:(GPack.button_box `HORIZONTAL ()) ~name - -let new_tivbutton_box ~name ?(listprop = []) = - new tivbutton_box ~widget:(GPack.button_box `VERTICAL ()) ~name - - - - -let get_fixed_pos () = - let rx = ref 0 and ry = ref 0 in - let w = GWindow.window ~modal:true () in - let v = GPack.vbox ~packing:w#add () in - let l = GMisc.label ~text:"Enter position for child" ~packing:v#pack () in - let h1 = GPack.hbox ~packing:v#pack () in - let l1 = GMisc.label ~text:"x:" ~packing:h1#pack () in - let e1 = GEdit.entry ~text:"0" ~packing:h1#pack () in - let h2 = GPack.hbox ~packing:v#pack () in - let l2 = GMisc.label ~text:"y" ~packing:h2#pack () in - let e2 = GEdit.entry ~text:"0" ~packing:h2#pack () in - let h7 = GPack.hbox ~packing:v#pack () in - let b1 = GButton.button ~label:"OK" ~packing:h7#pack () in - let b2 = GButton.button ~label:"Cancel" ~packing:h7#pack () in - w#show (); - b1#connect#clicked - ~callback:(fun () -> - begin - try rx := int_of_string e1#text with _ -> () end; - begin - try ry := int_of_string e2#text with _ -> () end; - w#destroy ()); - b2#connect#clicked ~callback:w#destroy; - w#connect#destroy ~callback:GMain.Main.quit; - GMain.Main.main (); - !rx, !ry - - -class tifixed ~(widget : GPack.fixed) - ~name ~parent_tree ~pos ?(insert_evbox=true) parent_window = -object(self) - val fixed = widget - inherit ticontainer ~widget - ~name ~parent_tree ~pos ~insert_evbox parent_window - - method private class_name = "GPack.fixed" - - method private add child ~pos = - let x, y = get_fixed_pos () in - fixed#put child#base ~x ~y; - children <- children @ [(child, `START)] - initializer - classe <- "fixed" -end - -let new_tifixed ~name ?(listprop = []) = - new tifixed ~widget:(GPack.fixed ()) ~name - - - - - -class tinotebook ~(widget : GPack.notebook) ~name ~parent_tree ~pos - ?(insert_evbox=true) parent_window = -object(self) - val notebook = widget - inherit ticontainer ~name ~widget ~insert_evbox - ~parent_tree ~pos parent_window as widget - - method private class_name = "GPack.notebook" - - method private add child ~pos = - children <- children @ [child, `START]; - notebook#insert_page child#base ~pos; - child#add_to_proplist - [ "tab_label", - new prop_string ~name:"tab_label" ~init:"" - ~set:(fun v -> notebook#set_page - ~tab_label:((GMisc.label ~text:v())#coerce) child#base; true) - ] - - - initializer - classe <- "notebook"; - proplist <- proplist @ - [ "tab_pos", - new prop_position ~name:"tab_ pos" ~init:"TOP" - ~set:(ftrue notebook#set_tab_pos); - "show_tabs", - new prop_bool ~name:"show_tabs" ~init:"true" - ~set:(ftrue notebook#set_show_tabs); - "homogeneous_tabs", - new prop_bool ~name:"homogeneous_tabs" ~init:"true" - ~set:(ftrue notebook#set_homogeneous_tabs); - "show_border", - new prop_bool ~name:"show_border" ~init:"true" - ~set:(ftrue notebook#set_show_border); - "scrollable", - new prop_bool ~name:"scrollable" ~init:"false" - ~set:(ftrue notebook#set_scrollable); - "tab_border", - new prop_int ~name:"tab_border" ~init:"2" - ~set:(ftrue notebook#set_tab_border); - "popup_enable", - new prop_bool ~name:"popup_enable" ~init:"false" - ~set:(ftrue notebook#set_popup) - ] -end - -let new_tinotebook ~name ?(listprop = []) = - new tinotebook ~widget:(GPack.notebook ()) ~name diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/tiWidget.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/tiWidget.ml deleted file mode 100644 index 5a6e3ac01..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/tiWidget.ml +++ /dev/null @@ -1,43 +0,0 @@ - -let new_class_list (* : - (string * - (name:string -> ?listprop:string list -> - parent_tree:GTree2.tree -> pos:int -> - ?insert_evbox:bool -> - - TiBase.window_and_tree0 -> TiBase.tiwidget0)) list *) -= [ - "window", TiWindow.new_tiwindow; - "hbox", TiPack.new_tihbox; - "vbox", TiPack.new_tivbox; - "hbutton_box", TiPack.new_tihbutton_box; - "vbutton_box", TiPack.new_tivbutton_box; - "fixed", TiPack.new_tifixed; - "notebook", TiPack.new_tinotebook; - "button", TiButton.new_tibutton; - "check_button", TiButton.new_ticheck_button; - "toggle_button", TiButton.new_titoggle_button; - "radio_button", TiButton.new_tiradio_button; - "toolbar", TiButton.new_toolbar; - "hseparator", TiMisc.new_tihseparator; - "vseparator", TiMisc.new_tivseparator; - "statusbar", TiMisc.new_tistatusbar; - "label", TiMisc.new_tilabel; - "color_selection", TiMisc.new_ticolor_selection; - "pixmap", TiMisc.new_tipixmap; - "frame", TiBin.new_tiframe; - "aspect_frame", TiBin.new_tiaspect_frame; - "handle_box", TiBin.new_handle_box; - "viewport", TiBin.new_viewport; - "event_box", TiBin.new_event_box; - "scrolled_window", TiBin.new_tiscrolled_window; - "entry", TiEdit.new_tientry; - "spin_button", TiEdit.new_tispin_button; - "combo", TiEdit.new_ticombo; - "clist", TiList.new_clist -] - -let _ = - TiBase.new_tiwidget := - (fun ~classe ?(pos = -1) ~name ~parent_tree ?insert_evbox ?(listprop = []) -> (List.assoc classe new_class_list) ~pos ~name ~parent_tree ?insert_evbox ~listprop) - diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/tiWindow.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/tiWindow.ml deleted file mode 100644 index b44b4d479..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/tiWindow.ml +++ /dev/null @@ -1,117 +0,0 @@ - -open Utils -open Property - -open TiBase -open TiContainer - - -class tiwindow ~widget ~name ~parent_tree ~pos ?(insert_evbox=true) - parent_window = -object(self) - val window = widget - inherit ticontainer ~name ~widget - ~insert_evbox:false ~parent_tree ~pos parent_window as container - - method connect_event = window#event#connect - - method private class_name = "GWindow.window" - - method private get_mandatory_props = [ "title" ] - -(* method private save_clean_proplist = - List.remove_assoc "title" container#save_clean_proplist - - method private emit_clean_proplist plist = - List.remove_assoc "title" (container#emit_clean_proplist plist) -*) - method remove_me () = - let sref = ref "" in - self#save_to_string sref; - let lexbuf = Lexing.from_string !sref in - let node = Load_parser.window Load_lexer.token lexbuf in - add_undo (Add_window node); - self#remove_me_without_undo () - - method copy () = self#copy_to_sel window_selection - - method remove_me_without_undo () = - self#forall ~callback:(fun tiw -> tiw#remove_me_without_undo ()); - parent_window#remove_sel (self : #tiwidget0 :> tiwidget0); - name_list := list_remove !name_list ~f:(fun n -> n=name); - Hashtbl.remove widget_map name; - Propwin.remove name; - widget#destroy () - - method private get_packing packing = "" - - method emit_code f param_list = - let param_string = - match param_list with - | [] -> "" - | _ -> "['" ^ - (String.concat ~sep:", '" - (List.map ~f:(fun c -> (String.make 1 c)) param_list)) ^ - "] " in - Format.fprintf f "(* Code for %s *)@\n@\n@[class %s%s () =" - name param_string name; - self#emit_init_code f ~packing:""; - Format.fprintf f "@]@\n@[object (self)"; - self#emit_method_code f; - Format.fprintf f "@ method show () = %s#show ()" name; - Format.fprintf f "@ @[initializer"; - self#emit_initializer_code f; - Format.fprintf f "@ ()@]@]@ end@\n@\n" - -(* method private save_start formatter = - Format.fprintf formatter "@[<0>@\n@[<2>" name; - Format.fprintf formatter "@\ntitle=\"%s\"" - (List.assoc "title" proplist)#get -*) - method private save_end formatter = - Format.fprintf formatter "@]@\n@\n@]" - - method private menu ~time = - let menu = GMenu.menu () and menu_add = GMenu.menu () in - List.iter - ~f:(fun n -> - let mi = GMenu.menu_item ~packing:menu_add#append ~label:n () - in mi#connect#activate - ~callback:(fun () -> self#add_child n (); ()); ()) - widget_add_list; - let mi_add = GMenu.menu_item ~packing:menu#append ~label:("add to "^ name) () - and mi_paste = GMenu.menu_item ~packing:menu#append ~label:"Paste" () - in - mi_add#set_submenu menu_add; - if !selection <> "" - then begin mi_paste#connect#activate ~callback:self#paste; () end - else mi_paste#misc#set_sensitive false; - menu#popup ~button:3 ~time - - - initializer - classe <- "window"; - window#set_title name; - proplist <- proplist @ - [ "title", - new prop_string ~name:"title" ~init:name ~set:(ftrue window#set_title); - "allow_shrink", new prop_bool ~name:"allow_shrink" ~init:"false" - ~set:(ftrue window#set_allow_shrink); - "allow_grow", new prop_bool ~name:"allow_grow" ~init:"true" - ~set:(ftrue window#set_allow_grow); - "auto_shrink", new prop_bool ~name:"auto_shrink" ~init:"false" - ~set:(ftrue window#set_auto_shrink); - "x position", new prop_int ~name:"x" ~init:"-2" - ~set:(fun x -> window#misc#set_geometry ~x (); true); - "y position", new prop_int ~name:"y" ~init:"-2" - ~set:(fun y -> window#misc#set_geometry ~y (); true) ] -end - -let new_tiwindow ~name ?(listprop = []) = - let w = GWindow.window ~show:true () in - w#misc#set_can_focus false; - w#misc#set_can_default false; - new tiwindow ~widget:w ~name - - - diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/togglebutton.xpm b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/togglebutton.xpm deleted file mode 100644 index f29d76972..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/togglebutton.xpm +++ /dev/null @@ -1,33 +0,0 @@ -/* XPM */ -static char *togglebutton_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 6 1", -" c Gray0", -". c #7b7b7b", -"X c #d6d6d6", -"o c #b3cece", -"O c Gray100", -"+ c None", -/* pixels */ -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+..................O+", -"+. O+", -"+. XXXXXXXXXXXXXXXXO+", -"+. XXXXXXXXXXXXXXXXO+", -"+. XXX XXX XXX XXO+", -"+. XX XXX XX XX XXO+", -"+. XX XXX XX XX XXO+", -"+. XX XXX XX X X XXO+", -"+. XX XXX XX XX XXO+", -"+. XX XXX XX XX XXO+", -"+. XXX XXX XXX XXO+", -"+. XXXXXXXXXXXXXXXXO+", -"+. XXXXXXXXXXXXXXXXO+", -"+. XXXXXXXXXXXXXXXXO+", -"+OOOOOOOOOOOOOOOOOOO+", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++" -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/toolbar.xpm b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/toolbar.xpm deleted file mode 100644 index d9a521716..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/toolbar.xpm +++ /dev/null @@ -1,33 +0,0 @@ -/* XPM */ -static char *toolbar_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 6 1", -" c Gray0", -". c #7b7b7b", -"X c #d6d6d6", -"o c #b3cece", -"O c Gray100", -"+ c None", -/* pixels */ -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+OOOOOOOOOOOOOOOOOOO ", -"+OXXXXXXXXXXXXXXXXX. ", -"+OXOOOO OOOO OOOO X. ", -"+OXOXXX OXXX OXXX X. ", -"+OXOXXX OXXX OXXX X. ", -"+OXO O O X. ", -"+OXXXXXXXXXXXXXXXXX. ", -"+O.................. ", -"+ ", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++" -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/tree_minus.xpm b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/tree_minus.xpm deleted file mode 100644 index cce067910..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/tree_minus.xpm +++ /dev/null @@ -1,18 +0,0 @@ -/* XPM */ -static char *tree_minus[] = { -/* width height num_colors chars_per_pixel */ -" 9 9 2 1", -/* colors */ -". c #000000", -"# c #f8fcf8", -/* pixels */ -".........", -".#######.", -".#######.", -".#######.", -".#.....#.", -".#######.", -".#######.", -".#######.", -"........." -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/tree_plus.xpm b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/tree_plus.xpm deleted file mode 100644 index d0ba80ca2..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/tree_plus.xpm +++ /dev/null @@ -1,18 +0,0 @@ -/* XPM */ -static char *tree_plus[] = { -/* width height num_colors chars_per_pixel */ -" 9 9 2 1", -/* colors */ -". c #000000", -"# c #f8fcf8", -/* pixels */ -".........", -".#######.", -".###.###.", -".###.###.", -".#.....#.", -".###.###.", -".###.###.", -".#######.", -"........." -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/utils.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/utils.ml deleted file mode 100644 index 0b37975c7..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/utils.ml +++ /dev/null @@ -1,353 +0,0 @@ -(* $Id$ *) - -open GObj - -open Common - -external test_modifier : Gdk.Tags.modifier -> int -> bool - = "ml_test_GdkModifier_val" - - -(************* types *************) -(* used in the load_parser and for the selection *) - -(* widget: class * name * property list - where property = name * value_string *) -type yywidget = string * string * (string * string) list -type yywidget_tree = Node of yywidget * yywidget_tree list - - -(*********** some utility functions **************) -let rec list_remove ~f = function - | [] -> [] - | hd :: tl -> if f hd then tl else hd :: (list_remove ~f tl) - - -(* cut the list at the element elt; elt stays in tail; - hd stays in reverse order *) -let cut_list ~item l = - let rec aux h t = match t with - | hd :: tl -> if hd = item then h, t - else aux (hd :: h) tl - | [] -> failwith "cut_list" - in aux [] l - -let list_pos ~item l = - let rec aux pos = function - | [] -> raise Not_found - | hd :: tl -> if hd = item then pos else aux (pos+1) tl - in aux 0 l - -(* moves the pos element up; pos is >= 1; - the first element is numbered 0 *) -let rec list_reorder_up ~pos = function - | hd1 :: hd2 :: tl when pos = 1 -> hd2 :: hd1 :: tl - | hd :: tl when pos > 1 -> hd :: (list_reorder_up ~pos:(pos-1) tl) - | _ -> failwith "list_reorder" - -(* moves the pos element down; pos is < length of l - 1; - the first element is numbered 0 *) -let rec list_reorder_down ~pos = - list_reorder_up ~pos:(pos+1) - - -let rec list_insert ~item l ~pos = - if pos=0 then item :: l - else - match l with - | [] -> failwith "list_insert" - | hd :: tl -> hd :: (list_insert ~item tl ~pos:(pos-1)) - - -let rec change_property_name oldname newname = function - | (n, p) :: tl when oldname = n -> (newname, p) :: tl - | (n, p) :: tl -> (n, p) :: change_property_name oldname newname tl - | [] -> failwith "change_property_name: name not found" - - - -(* contains the list of names of widgets in the current project; - used to test if a name is already used; - a name is added to the list when a tiwrapper is created (in - the initilizer part of tiwrapper, - it is removed when the widget is removed from his parent, - in method remove_me of tiwrapper *) -let name_list = ref ([] : string list) - -let split name = - let l = String.length name in - let i = ref (l-1) in - while !i >= 0 && name.[!i] >= '0' && name.[!i] <= '9' do decr i done; - if !i = l-1 then - name, (-1) - else - (String.sub name ~pos:0 ~len:(!i+1)), - int_of_string (String.sub name ~pos:(!i+1) ~len:(l- !i-1)) - -let test_unique name = not (List.mem name !name_list) - -let make_new_name ?(index=1) base = - let index, name = - if index = -1 then ref 1, ref base - else ref index, ref (base ^ (string_of_int index)) in - while not (test_unique !name) do - incr index; - name := base ^ (string_of_int !index) - done; - !name - -let change_name name = - let base, index = split name in make_new_name base ~index - -let message s = - let w = GWindow.window ~show:true ~modal:true () in - let v = GPack.vbox ~packing:w#add () in - let l = GMisc.label ~text:s ~packing:v#add () in - let b = GButton. button ~label:"OK" ~packing:v#add () in - b#connect#clicked ~callback:w#destroy; - w#connect#destroy ~callback:GMain.Main.quit; - GMain.Main.main () - -let message_name () = message "name already in use\npick a new name" - -(* better: use a spin button *) -let get_a_number s default= - let res = ref default in - let w = GWindow.window ~show:true ~modal:true () in - let v = GPack.vbox ~packing:w#add () in - let l = GMisc.label ~text:s ~packing:v#add () in - let e = GEdit.entry ~text:(string_of_int default) ~packing:v#add () in - let b = GButton. button ~label:"OK" ~packing:v#add () in - b#connect#clicked ~callback:(fun () -> - begin try res := int_of_string e#text with Failure _ -> () end; - w#destroy ()); - w#connect#destroy ~callback:GMain.Main.quit; - GMain.Main.main (); - !res - - -(*************** file selection *****************) - -let get_filename ~callback:set_filename ?(dir="") () = - let res = ref false in - let file_selection = GWindow.file_selection ~modal:true () in - if dir <> "" then file_selection#set_filename dir; - file_selection#show (); - file_selection#ok_button#connect#clicked - ~callback:(fun () -> set_filename file_selection#get_filename; - res := true; - file_selection#destroy ()); - file_selection#cancel_button#connect#clicked - ~callback:file_selection#destroy; - file_selection#connect#destroy ~callback:GMain.Main.quit; - GMain.Main.main (); - !res - -(* returns the directory and the file name (without the extension) *) -let split_filename filename ~ext = - let lext = String.length ext in - let l = String.length filename in - let filename, l = - if (l > lext) && (String.sub filename ~pos:(l - lext) ~len:lext = ext) - then (String.sub filename ~pos:0 ~len:(l-lext)), l-lext - else filename, l in - let i = 1 + (String.rindex filename '/') in - String.sub filename ~pos:0 ~len:i, - String.sub filename ~pos:i ~len:(l-i) - - -(****************** ML signals *****************) -let signal_id = ref 0 - -let next_callback_id () : GtkSignal.id = - decr signal_id; Obj.magic (!signal_id : int) - -class ['a] signal = object - val mutable callbacks : (GtkSignal.id * ('a -> unit)) list = [] - method connect ~callback ~after = - let id = next_callback_id () in - callbacks <- - if after then callbacks @ [id,callback] else (id,callback)::callbacks; - id - method call arg = - List.iter callbacks ~f:(fun (_,f) -> f arg) - method disconnect id = - List.mem_assoc id callbacks && - (callbacks <- List.remove_assoc id callbacks; true) - method reset () = callbacks <- [] -end - -class type disconnector = - object - method disconnect : GtkSignal.id -> bool - method reset : unit -> unit - end - -class has_ml_signals = object - val mutable disconnectors = [] - method private add_signal (sgn : 'a signal) = - disconnectors <- (sgn :> disconnector) :: disconnectors - - method disconnect id = - List.exists disconnectors ~f:(fun d -> d#disconnect id) -end - - -(****************** undo information ********************) - -type undo_action = - | Add of string * yywidget_tree * int - | Remove of string - | Property of prop * string - | Add_window of yywidget_tree - | Remove_window of string - -let undo_info = ref ([] : undo_action list) -let next_undo_info = ref ([] : undo_action list) -let last_action_was_undo = ref false - -let add_undo f = - undo_info := f :: !undo_info; - last_action_was_undo := false - - -(**********************************************************) -let ftrue f = fun x -> f x; true - - -(**********************************************************) - -let toolbar_child_prop kind = - let rt = ref "" and rtt = ref "" and rptt = ref "" and ok = ref false in - let w = GWindow.window ~modal:true () in - let v = GPack.vbox ~packing:w#add () in - let h1 = GPack.hbox ~packing:v#pack () in - let h2 = GPack.hbox ~packing:v#pack () in - let h3 = GPack.hbox ~packing:v#pack () in - let h4 = GPack.hbox ~packing:v#pack () in - let l1 = GMisc.label ~text:"text" ~packing:h1#pack () in - let e1 = GEdit.entry ~packing:h1#pack () in - let l2 = GMisc.label ~text:"tooltip_text" ~packing:h2#pack () in - let e2 = GEdit.entry ~packing:h2#pack () in - let l3 = GMisc.label ~text:"private_text" ~packing:h3#pack () in - let e3 = GEdit.entry ~packing:h3#pack () in - let b1 = GButton.button ~label:"OK" ~packing:h4#pack () in - let b2 = GButton.button ~label:"Cancel" ~packing:h4#pack () in - w#show (); - b1#connect#clicked - ~callback:(fun () -> rt := e1#text; rtt := e2#text; - rptt := e3#text; ok := true; - w#destroy ()); - b2#connect#clicked ~callback:w#destroy; - w#connect#destroy ~callback:GMain.Main.quit; - GMain.Main.main (); - !ok, !rt, !rtt, !rptt - - - -(**********************************************************) - -let get5floats_from_string s = - try - let n1 = String.index s ' ' in - let f1 = float_of_string (String.sub s ~pos:0 ~len:(n1-1)) in - let n2 = String.index_from s (n1+1) ' ' in - let f2 = float_of_string (String.sub s ~pos:(n1+1) ~len:(n2-1)) in - let n3 = String.index_from s (n2+1) ' ' in - let f3 = float_of_string (String.sub s ~pos:(n2+1) ~len:(n3-1)) in - let n4 = String.index_from s (n3+1) ' ' in - let f4 = float_of_string (String.sub s ~pos:(n3+1) ~len:(n4-1)) in - let f5 = float_of_string (String.sub s ~pos:(n4+1) ~len: - ((String.length s) -1)) in - f1, f2, f3, f4, f5 - with _ -> failwith "get5floats_of_string" - - - -(**********************************************************) - -exception Float_of_string -let my_float_of_string s = - let l = String.length s in - if l=0 then raise Float_of_string; - let sign, d = match s.[0] with - | '+' -> 1, 1 - | '-' -> -1, 1 - | _ -> 1, 0 in - let m, p = - let p = - try - String.index s '.' - with Not_found -> l in - if p=d then 0, p - else - try int_of_string (String.sub s ~pos:d ~len:(p-d)), p - with Failure "int_of_string" -> raise Float_of_string - in - if p=l then float_of_int m - else begin - let f = ref 0. and r = ref 0.1 in - for i = p+1 to l-1 do - let k = (int_of_char s.[i]) - 48 in - if k > 9 || k < 0 then raise Float_of_string; - f := !f +. (float_of_int k) *. !r; - r := !r *. 0.1 - done; - !f +. (float_of_int m) - end - - - - -class entry_float obj ~init = let rv = ref init in -object - inherit GEdit.entry obj as entry - method value = - try - let v = my_float_of_string entry#text in - rv := v; - v - with Float_of_string -> - let pop = GWindow.window ~title:"error" ~modal:true () in - let vb = GPack.vbox ~packing:pop#add () in - let l = GMisc.label ~text:"value must be a float" ~packing:vb#pack () in - let b = GButton.button ~label:"OK" ~packing:vb#pack () in - b#connect#clicked ~callback:pop#destroy; - pop#event#connect#delete ~callback:(fun _ -> pop#destroy (); true); - pop#connect#destroy ~callback:GtkMain.Main.quit; - pop#show (); - GtkMain.Main.main (); - entry#set_text (string_of_float !rv); - !rv -end - - -let set_editable ?editable ?(width = -2) ?(height = -2) w = - Gaux.may editable ~f:(GtkEdit.Editable.set_editable w); - if width <> -2 || height <> -2 then GtkBase.Widget.set_usize w ~width ~height - - -let entry_float ~init ?max_length ?visibility ?editable - ?width ?height ?packing ?show () = - let w = GtkEdit.Entry.create ?max_length () in - GtkEdit.Entry.set w ~text:(string_of_float init) ?visibility; - set_editable w ?editable ?width ?height; - pack_return (new entry_float w ~init) ~packing ~show - - -(*************************************************************) - - -let split_string s ~sep = - let l = String.length s in - let r = ref [] in - let j = ref 0 in - for i = 0 to l-1 do - if String.unsafe_get s i = sep then begin - r := (String.sub s ~pos:!j ~len:(i - !j)) :: !r; - j := i + 1 - end - done; - List.rev ((String.sub s ~pos:!j ~len:(l - !j)) :: !r) - - diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/vbox.xpm b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/vbox.xpm deleted file mode 100644 index 1c557b021..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/vbox.xpm +++ /dev/null @@ -1,31 +0,0 @@ -/* XPM */ -static char *vbox_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 4 1", -" c Gray0", -". c #7b7b7b", -"X c #d6d6d6", -"o c Gray100", -/* pixels */ -"oooooooooooooooooooo ", -"oXXXXXXXXXXXXXXXXXX. ", -"oXXXXXXXXXXXXXXXXXX. ", -"oXXXXXXXXXXXXXXXXXX. ", -"oXXXXXXXXXXXXXXXXXX. ", -"o................... ", -" ", -"oooooooooooooooooooo ", -"oXXXXXXXXXXXXXXXXXX. ", -"oXXXXXXXXXXXXXXXXXX. ", -"oXXXXXXXXXXXXXXXXXX. ", -"oXXXXXXXXXXXXXXXXXX. ", -"o................... ", -" ", -"oooooooooooooooooooo ", -"oXXXXXXXXXXXXXXXXXX. ", -"oXXXXXXXXXXXXXXXXXX. ", -"oXXXXXXXXXXXXXXXXXX. ", -"oXXXXXXXXXXXXXXXXXX. ", -"o................... ", -" " -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/vbuttonbox.xpm b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/vbuttonbox.xpm deleted file mode 100644 index 0c2bc9598..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/vbuttonbox.xpm +++ /dev/null @@ -1,33 +0,0 @@ -/* XPM */ -static char *vbuttonbox_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 6 1", -" c Gray0", -". c #7b7b7b", -"X c #d6d6d6", -"o c #b3cece", -"O c Gray100", -"+ c None", -/* pixels */ -"+++++++++++++++++++++", -"+++++++++++++++++++++", -"++++++++OOOOO +++++++", -"++++++++OXXX. +++++++", -"++++++++OXXX. +++++++", -"++++++++O.... +++++++", -"++++++++ +++++++", -"+++++++++++++++++++++", -"++++++++OOOOO +++++++", -"++++++++OXXX. +++++++", -"++++++++OXXX. +++++++", -"++++++++O.... +++++++", -"++++++++ +++++++", -"+++++++++++++++++++++", -"++++++++OOOOO +++++++", -"++++++++OXXX. +++++++", -"++++++++OXXX. +++++++", -"++++++++O.... +++++++", -"++++++++ +++++++", -"+++++++++++++++++++++", -"+++++++++++++++++++++" -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/viewport.xpm b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/viewport.xpm deleted file mode 100644 index 71e5e80cf..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/viewport.xpm +++ /dev/null @@ -1,34 +0,0 @@ -/* XPM */ -static char *viewport_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 7 1", -" c Gray0", -". c #7b7b7b", -"X c #d6d6d6", -"o c #b3cece", -"O c Gray87", -"+ c Gray100", -"@ c None", -/* pixels */ -"@@@@@@@@@@@@@@@@@@@@@", -"@...................@", -"@. +O@", -"@. XXXXXXXXXXXXXXX+O@", -"@. XXXXXXXXXXXXXXX+O@", -"@. XXXXXXXXXXXXXXX+O@", -"@. XXXXXXXXXXXXXXX+O@", -"@. XXXXXXXXXXXXXXX+O@", -"@. XXXXXXXXXXXXXXX+O@", -"@. XXXXXXXXXXXXXXX+O@", -"@. XXXXXXXXXXXXXXX+O@", -"@. XXXXXXXXXXXXXXX+O@", -"@. XXXXXXXXXXXXXXX+O@", -"@. XXXXXXXXXXXXXXX+O@", -"@. XXXXXXXXXXXXXXX+O@", -"@. XXXXXXXXXXXXXXX+O@", -"@. XXXXXXXXXXXXXXX+O@", -"@. XXXXXXXXXXXXXXX+O@", -"@.+++++++++++++++++O@", -"@.OOOOOOOOOOOOOOOOOO@", -"@@@@@@@@@@@@@@@@@@@@@" -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/vseparator.xpm b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/vseparator.xpm deleted file mode 100644 index 3455f74d9..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/vseparator.xpm +++ /dev/null @@ -1,31 +0,0 @@ -/* XPM */ -static char *vseparator_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 4 1", -" c #7b7b7b", -". c #b3cece", -"X c Gray100", -"o c None", -/* pixels */ -"ooooooooooooooooooooo", -"oooooooooo Xooooooooo", -"oooooooooo Xooooooooo", -"oooooooooo Xooooooooo", -"oooooooooo Xooooooooo", -"oooooooooo Xooooooooo", -"oooooooooo Xooooooooo", -"oooooooooo Xooooooooo", -"oooooooooo Xooooooooo", -"oooooooooo Xooooooooo", -"oooooooooo Xooooooooo", -"oooooooooo Xooooooooo", -"oooooooooo Xooooooooo", -"oooooooooo Xooooooooo", -"oooooooooo Xooooooooo", -"oooooooooo Xooooooooo", -"oooooooooo Xooooooooo", -"oooooooooo Xooooooooo", -"oooooooooo Xooooooooo", -"oooooooooo Xooooooooo", -"ooooooooooooooooooooo" -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/window.xpm b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/window.xpm deleted file mode 100644 index 8407e2836..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/radtest/window.xpm +++ /dev/null @@ -1,38 +0,0 @@ -/* XPM */ -static char *window_xpm[] = { -/* columns rows colors chars-per-pixel */ -"21 21 11 1", -" c Gray0", -". c #00007b", -"X c #7b7b7b", -"o c Green", -"O c Cyan", -"+ c Red", -"@ c Yellow", -"# c #d6d6d6", -"$ c #b3cece", -"% c Gray100", -"& c None", -/* pixels */ -"&&&&&&&&&&&&&&&&&&&&&", -"&&&&&&&&&&&&&&&&&&&&&", -"&&&&&&&&&&&&&&&&&&&&&", -"XXXXXXXXXXXXXXXXXXXX&", -"X.+@...............X ", -"X.Oo.%%%.%%.....# #X ", -"XXXXXXXXXXXXXXXXXXXX ", -"X#%%%%%%%%%%%%%%%%%X ", -"X#%%%%%%%%%%%%%%%%%X ", -"X#%%%%%%%%%%%%%%%%%X ", -"X#%%%%%%%%%%%%%%%%%X ", -"X#%%%%%%%%%%%%%%%%%X ", -"X#%%%%%%%%%%%%%%%%%X ", -"X#%%%%%%%%%%%%%%%%%X ", -"X#%%%%%%%%%%%%%%%%%X ", -"X#%%%%%%%%%%%%%%%%%X ", -"X#%%%%%%%%%%%%%%%%%X ", -"XXXXXXXXXXXXXXXXXXXX ", -"& ", -"&&&&&&&&&&&&&&&&&&&&&", -"&&&&&&&&&&&&&&&&&&&&&" -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/unison/.cvsignore b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/unison/.cvsignore deleted file mode 100644 index 31706abd2..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/unison/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -unison-* diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/unison/README b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/unison/README deleted file mode 100644 index e98697ada..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/applications/unison/README +++ /dev/null @@ -1,10 +0,0 @@ - A GUI for Unison - -As of version 2.6.1, unison works with LablGTK snapshots. -You may just compile it after having installed lablgtk. - - http://www.cis.upenn.edu/~bcpierce/unison/ - -Jacques Garrigue - -$Id$ diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/config.make.nt b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/config.make.nt deleted file mode 100644 index 3fe6b56ac..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/config.make.nt +++ /dev/null @@ -1,6 +0,0 @@ -LIBDIR=c:/Home/garrigue/ocaml/lib -GTKCFLAGS=-I../glib -I../gtk+ -GTKSRC=c:\Home\garrigue -GTKLIBS=$(GTKSRC)/glib/gmodule-1.3.lib $(GTKSRC)/glib/glib-1.3.lib $(GTKSRC)/gtk+/gdk/gdk-1.3.lib $(GTKSRC)/gtk+/gtk/gtk-1.3.lib -USE_GL=0 -USE_CC=0 diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/configure.mk b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/configure.mk deleted file mode 100644 index 49b3d7015..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/configure.mk +++ /dev/null @@ -1,50 +0,0 @@ -# makefile for configuring lablGTK - -# Default compilers -CAMLC = ocamlc -CAMLOPT = ocamlopt - -# Default installation directories -BINDIR = `$(GETBINDIR)` -INSTALLDIR = $(LIBDIR)/lablgtk - -# Autoconf -GETLIBDIR = ocamlc -v | grep "^Standard" | sed 's/^.*: *//' -LIBDIR = `$(GETLIBDIR)` -GETBINDIR = $(GETLIBDIR) | sed -e 's|/lib/[^/]*$$|/bin|' -e 's|/lib$$|/bin|' -GETRANLIB = which ranlib 2>/dev/null | sed -e 's|.*/ranlib$$|!|' -e 's/^[^!]*$$/:/' -e 's/!/ranlib/' - -ifdef USE_GNOME -GTKGETCFLAGS = gtk-config --cflags`" -I"`gnome-config --includedir -GNOMELIBS = `gnome-config --libs gtkxmhtml` -else -GTKGETCFLAGS = gtk-config --cflags -endif - -GTKGETLIBS = gtk-config --libs - -configure: .depend config.make - -.depend: - ocamldep *.ml *.mli > .depend - -config.make: - @echo CAMLC=$(CAMLC) > config.make - @echo CAMLOPT=$(CAMLOPT) >> config.make - @echo USE_GL=$(USE_GL) >> config.make - @echo USE_GNOME=$(USE_GNOME) >> config.make - @echo USE_CC=$(USE_CC) >> config.make - @echo DEBUG=$(DEBUG) >> config.make - @echo CC=$(CC) >> config.make - @echo RANLIB=`$(GETRANLIB)` >> config.make - @echo LIBDIR=$(LIBDIR) >> config.make - @echo BINDIR=`$(GETBINDIR)` >> config.make - @echo INSTALLDIR=$(INSTALLDIR) >> config.make - @echo GTKCFLAGS=`$(GTKGETCFLAGS)` >> config.make - @echo GTKLIBS=`$(GTKGETLIBS)` | \ - sed -e 's/-l/-cclib &/g' -e 's/-[LRWr][^ ]*/-ccopt &/g' \ - >> config.make - @echo GNOMELIBS=$(GNOMELIBS) | \ - sed -e 's/-l/-cclib &/g' -e 's/-[LRWr][^ ]*/-ccopt &/g' \ - >> config.make - cat config.make diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/doc/formula.eps b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/doc/formula.eps deleted file mode 100644 index 31ddafc6f..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/doc/formula.eps +++ /dev/null @@ -1,409 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Creator: dvipsk 5.78 p1.4c Copyright 1996-99 ASCII Corp.(www-ptex@ascii.co.jp) -%%dvipsk 5.78 Copyright 1998 Radical Eye Software (www.radicaleye.com) -%%Title: formula.dvi -%%BoundingBox: 71 318 395 524 -%%DocumentFonts: Symbol Times-Italic Times-Roman Helvetica -%%EndComments -%DVIPSCommandLine: dvips -E -o formula.eps formula -%DVIPSParameters: dpi=300, compressed -%DVIPSSource: TeX output 1999.08.19:0906 -%%BeginProcSet: texc.pro -%! -/TeXDict 300 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N -/X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72 -mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1} -ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale -isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div -hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul -TR[matrix currentmatrix{dup dup round sub abs 0.00001 lt{round}if} -forall round exch round exch]setmatrix}N /@landscape{/isls true N}B -/@manualfeed{statusdict /manualfeed true put}B /@copies{/#copies X}B -/FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{ -/nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N -string /base X array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N -end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{ -/sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0] -N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data dup -length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{ -128 ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub -get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data -dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N -/rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup -/base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx -0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff -setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff -.1 sub]/id ch-image N /rw ch-width 7 add 8 idiv string N /rc 0 N /gp 0 N -/cp 0 N{rc 0 ne{rc 1 sub /rc X rw}{G}ifelse}imagemask restore}B /G{{id -gp get /gp gp 1 add N dup 18 mod S 18 idiv pl S get exec}loop}B /adv{cp -add /cp X}B /chg{rw cp id gp 4 index getinterval putinterval dup gp add -/gp X adv}B /nd{/cp 0 N rw exit}B /lsh{rw cp 2 copy get dup 0 eq{pop 1}{ -dup 255 eq{pop 254}{dup dup add 255 and S 1 and or}ifelse}ifelse put 1 -adv}B /rsh{rw cp 2 copy get dup 0 eq{pop 128}{dup 255 eq{pop 127}{dup 2 -idiv S 128 and or}ifelse}ifelse put 1 adv}B /clr{rw cp 2 index string -putinterval adv}B /set{rw cp fillstr 0 4 index getinterval putinterval -adv}B /fillstr 18 string 0 1 17{2 copy 255 put pop}for N /pl[{adv 1 chg} -{adv 1 chg nd}{1 add chg}{1 add chg nd}{adv lsh}{adv lsh nd}{adv rsh}{ -adv rsh nd}{1 add adv}{/rc X nd}{1 add set}{1 add clr}{adv 2 chg}{adv 2 -chg nd}{pop nd}]dup{bind pop}forall N /D{/cc X dup type /stringtype ne{] -}if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup -length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{ -cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin -0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul -add .99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore userdict -/eop-hook known{eop-hook}if showpage}N /@start{userdict /start-hook -known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X -/IE 256 array N 2 string 0 1 255{IE S dup 360 add 36 4 index cvrs cvn -put}for pop 65781.76 div /vsize X 65781.76 div /hsize X}N /dir 0 def -/dyy{/dir 0 def}B /dyt{/dir 1 def}B /dty{/dir 2 def}B /dtt{/dir 3 def}B -/p{dir 2 eq{-90 rotate show 90 rotate}{dir 3 eq{-90 rotate show 90 -rotate}{show}ifelse}ifelse}B /RMat[1 0 0 -1 0 0]N /BDot 260 string N -/rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V{}B /RV statusdict -begin /product where{pop false[(Display)(NeXT)(LaserWriter 16/600)]{dup -length product length le{dup length product exch 0 exch getinterval eq{ -pop true exit}if}{pop}ifelse}forall}{false}ifelse end{{gsave TR -.1 .1 -TR 1 1 scale rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR --.1 .1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}} -ifelse B /QV{gsave newpath transform round exch round exch itransform -moveto rulex 0 rlineto 0 ruley neg rlineto rulex neg 0 rlineto fill -grestore}B /a{moveto}B /delta 0 N /tail{dup /delta X 0 rmoveto}B /M{S p -delta add tail}B /b{S p tail}B /c{-4 M}B /d{-3 M}B /e{-2 M}B /f{-1 M}B -/g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{4 M}B /w{0 rmoveto}B /l{p -4 w}B -/m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{ -p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p a}B /bos{/SS save N}B /eos{SS -restore}B end - -%%EndProcSet -%%BeginProcSet: 8r.enc -% @@psencodingfile@{ -% author = "S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry", -% version = "0.6", -% date = "22 June 1996", -% filename = "8r.enc", -% email = "kb@@mail.tug.org", -% address = "135 Center Hill Rd. // Plymouth, MA 02360", -% codetable = "ISO/ASCII", -% checksum = "119 662 4424", -% docstring = "Encoding for TrueType or Type 1 fonts to be used with TeX." -% @} -% -% Idea is to have all the characters normally included in Type 1 fonts -% available for typesetting. This is effectively the characters in Adobe -% Standard Encoding + ISO Latin 1 + extra characters from Lucida. -% -% Character code assignments were made as follows: -% -% (1) the Windows ANSI characters are almost all in their Windows ANSI -% positions, because some Windows users cannot easily reencode the -% fonts, and it makes no difference on other systems. The only Windows -% ANSI characters not available are those that make no sense for -% typesetting -- rubout (127 decimal), nobreakspace (160), softhyphen -% (173). quotesingle and grave are moved just because it's such an -% irritation not having them in TeX positions. -% -% (2) Remaining characters are assigned arbitrarily to the lower part -% of the range, avoiding 0, 10 and 13 in case we meet dumb software. -% -% (3) Y&Y Lucida Bright includes some extra text characters; in the -% hopes that other PostScript fonts, perhaps created for public -% consumption, will include them, they are included starting at 0x12. -% -% (4) Remaining positions left undefined are for use in (hopefully) -% upward-compatible revisions, if someday more characters are generally -% available. -% -% (5) hyphen appears twice for compatibility with both ASCII and Windows. -% -/TeXBase1Encoding [ -% 0x00 (encoded characters from Adobe Standard not in Windows 3.1) - /.notdef /dotaccent /fi /fl - /fraction /hungarumlaut /Lslash /lslash - /ogonek /ring /.notdef - /breve /minus /.notdef -% These are the only two remaining unencoded characters, so may as -% well include them. - /Zcaron /zcaron -% 0x10 - /caron /dotlessi -% (unusual TeX characters available in, e.g., Lucida Bright) - /dotlessj /ff /ffi /ffl - /.notdef /.notdef /.notdef /.notdef - /.notdef /.notdef /.notdef /.notdef - % very contentious; it's so painful not having quoteleft and quoteright - % at 96 and 145 that we move the things normally found there down to here. - /grave /quotesingle -% 0x20 (ASCII begins) - /space /exclam /quotedbl /numbersign - /dollar /percent /ampersand /quoteright - /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash -% 0x30 - /zero /one /two /three /four /five /six /seven - /eight /nine /colon /semicolon /less /equal /greater /question -% 0x40 - /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O -% 0x50 - /P /Q /R /S /T /U /V /W - /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore -% 0x60 - /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o -% 0x70 - /p /q /r /s /t /u /v /w - /x /y /z /braceleft /bar /braceright /asciitilde - /.notdef % rubout; ASCII ends -% 0x80 - /.notdef /.notdef /quotesinglbase /florin - /quotedblbase /ellipsis /dagger /daggerdbl - /circumflex /perthousand /Scaron /guilsinglleft - /OE /.notdef /.notdef /.notdef -% 0x90 - /.notdef /.notdef /.notdef /quotedblleft - /quotedblright /bullet /endash /emdash - /tilde /trademark /scaron /guilsinglright - /oe /.notdef /.notdef /Ydieresis -% 0xA0 - /.notdef % nobreakspace - /exclamdown /cent /sterling - /currency /yen /brokenbar /section - /dieresis /copyright /ordfeminine /guillemotleft - /logicalnot - /hyphen % Y&Y (also at 45); Windows' softhyphen - /registered - /macron -% 0xD0 - /degree /plusminus /twosuperior /threesuperior - /acute /mu /paragraph /periodcentered - /cedilla /onesuperior /ordmasculine /guillemotright - /onequarter /onehalf /threequarters /questiondown -% 0xC0 - /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla - /Egrave /Eacute /Ecircumflex /Edieresis - /Igrave /Iacute /Icircumflex /Idieresis -% 0xD0 - /Eth /Ntilde /Ograve /Oacute - /Ocircumflex /Otilde /Odieresis /multiply - /Oslash /Ugrave /Uacute /Ucircumflex - /Udieresis /Yacute /Thorn /germandbls -% 0xE0 - /agrave /aacute /acircumflex /atilde - /adieresis /aring /ae /ccedilla - /egrave /eacute /ecircumflex /edieresis - /igrave /iacute /icircumflex /idieresis -% 0xF0 - /eth /ntilde /ograve /oacute - /ocircumflex /otilde /odieresis /divide - /oslash /ugrave /uacute /ucircumflex - /udieresis /yacute /thorn /ydieresis -] def - -%%EndProcSet -%%BeginProcSet: texps.pro -%! -TeXDict begin /rf{findfont dup length 1 add dict begin{1 index /FID ne 2 -index /UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll -exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]/Metrics -exch def dict begin 0 1 255{exch dup type /integertype ne{pop pop 1 sub -dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def} -ifelse}for Metrics /Metrics currentdict end def[2 index currentdict end -definefont 3 -1 roll makefont /setfont cvx]cvx def}def /ObliqueSlant{ -dup sin S cos div neg}B /SlantFont{4 index mul add}def /ExtendFont{3 -1 -roll mul exch}def /ReEncodeFont{/Encoding exch def}def end - -%%EndProcSet -%%BeginProcSet: special.pro -%! -TeXDict begin /SDict 200 dict N SDict begin /@SpecialDefaults{/hs 612 N -/vs 792 N /ho 0 N /vo 0 N /hsc 1 N /vsc 1 N /ang 0 N /CLIP 0 N /rwiSeen -false N /rhiSeen false N /letter{}N /note{}N /a4{}N /legal{}N}B -/@scaleunit 100 N /@hscale{@scaleunit div /hsc X}B /@vscale{@scaleunit -div /vsc X}B /@hsize{/hs X /CLIP 1 N}B /@vsize{/vs X /CLIP 1 N}B /@clip{ -/CLIP 2 N}B /@hoffset{/ho X}B /@voffset{/vo X}B /@angle{/ang X}B /@rwi{ -10 div /rwi X /rwiSeen true N}B /@rhi{10 div /rhi X /rhiSeen true N}B -/@llx{/llx X}B /@lly{/lly X}B /@urx{/urx X}B /@ury{/ury X}B /magscale -true def end /@MacSetUp{userdict /md known{userdict /md get type -/dicttype eq{userdict begin md length 10 add md maxlength ge{/md md dup -length 20 add dict copy def}if end md begin /letter{}N /note{}N /legal{} -N /od{txpose 1 0 mtx defaultmatrix dtransform S atan/pa X newpath -clippath mark{transform{itransform moveto}}{transform{itransform lineto} -}{6 -2 roll transform 6 -2 roll transform 6 -2 roll transform{ -itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll curveto}}{{ -closepath}}pathforall newpath counttomark array astore /gc xdf pop ct 39 -0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}if}N -/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 -1 -scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 get -ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip -not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0 -TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{noflips{TR -pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop 90 rotate 1 --1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg -TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr 1 get neg -sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr 2 get ppr -0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 -1 roll add -2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S TR}if}N /cp -{pop pop showpage pm restore}N end}if}if}N /normalscale{Resolution 72 -div VResolution 72 div neg scale magscale{DVImag dup scale}if 0 setgray} -N /psfts{S 65781.76 div N}N /startTexFig{/psf$SavedState save N userdict -maxlength dict begin /magscale true def normalscale currentpoint TR -/psf$ury psfts /psf$urx psfts /psf$lly psfts /psf$llx psfts /psf$y psfts -/psf$x psfts currentpoint /psf$cy X /psf$cx X /psf$sx psf$x psf$urx -psf$llx sub div N /psf$sy psf$y psf$ury psf$lly sub div N psf$sx psf$sy -scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub TR -/showpage{}N /erasepage{}N /copypage{}N /p 3 def @MacSetUp}N /doclip{ -psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2 -roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath -moveto}N /endTexFig{end psf$SavedState restore}N /@beginspecial{SDict -begin /SpecialSave save N gsave normalscale currentpoint TR -@SpecialDefaults count /ocount X /dcount countdictstack N}N /@setspecial -{CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto -closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx -sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR -}{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse -CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury -lineto closepath clip}if /showpage{}N /erasepage{}N /copypage{}N newpath -}N /@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{ -end}repeat grestore SpecialSave restore end}N /@defspecial{SDict begin} -N /@fedspecial{end}B /li{lineto}B /rl{rlineto}B /rc{rcurveto}B /np{ -/SaveX currentpoint /SaveY X N 1 setlinecap newpath}N /st{stroke SaveX -SaveY moveto}N /fil{fill SaveX SaveY moveto}N /ellipse{/endangle X -/startangle X /yrad X /xrad X /savematrix matrix currentmatrix N TR xrad -yrad scale 0 0 1 startangle endangle arc savematrix setmatrix}N end - -%%EndProcSet -%%BeginProcSet: color.pro -%! -TeXDict begin /setcmykcolor where{pop}{/setcmykcolor{dup 10 eq{pop -setrgbcolor}{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll -}repeat setrgbcolor pop}ifelse}B}ifelse /TeXcolorcmyk{setcmykcolor}def -/TeXcolorrgb{setrgbcolor}def /TeXcolorgrey{setgray}def /TeXcolorgray{ -setgray}def /TeXcolorhsb{sethsbcolor}def /currentcmykcolor where{pop}{ -/currentcmykcolor{currentrgbcolor 10}B}ifelse /DC{exch dup userdict exch -known{pop pop}{X}ifelse}B /GreenYellow{0.15 0 0.69 0 setcmykcolor}DC -/Yellow{0 0 1 0 setcmykcolor}DC /Goldenrod{0 0.10 0.84 0 setcmykcolor} -DC /Dandelion{0 0.29 0.84 0 setcmykcolor}DC /Apricot{0 0.32 0.52 0 -setcmykcolor}DC /Peach{0 0.50 0.70 0 setcmykcolor}DC /Melon{0 0.46 0.50 -0 setcmykcolor}DC /YellowOrange{0 0.42 1 0 setcmykcolor}DC /Orange{0 -0.61 0.87 0 setcmykcolor}DC /BurntOrange{0 0.51 1 0 setcmykcolor}DC -/Bittersweet{0 0.75 1 0.24 setcmykcolor}DC /RedOrange{0 0.77 0.87 0 -setcmykcolor}DC /Mahogany{0 0.85 0.87 0.35 setcmykcolor}DC /Maroon{0 -0.87 0.68 0.32 setcmykcolor}DC /BrickRed{0 0.89 0.94 0.28 setcmykcolor} -DC /Red{0 1 1 0 setcmykcolor}DC /OrangeRed{0 1 0.50 0 setcmykcolor}DC -/RubineRed{0 1 0.13 0 setcmykcolor}DC /WildStrawberry{0 0.96 0.39 0 -setcmykcolor}DC /Salmon{0 0.53 0.38 0 setcmykcolor}DC /CarnationPink{0 -0.63 0 0 setcmykcolor}DC /Magenta{0 1 0 0 setcmykcolor}DC /VioletRed{0 -0.81 0 0 setcmykcolor}DC /Rhodamine{0 0.82 0 0 setcmykcolor}DC /Mulberry -{0.34 0.90 0 0.02 setcmykcolor}DC /RedViolet{0.07 0.90 0 0.34 -setcmykcolor}DC /Fuchsia{0.47 0.91 0 0.08 setcmykcolor}DC /Lavender{0 -0.48 0 0 setcmykcolor}DC /Thistle{0.12 0.59 0 0 setcmykcolor}DC /Orchid{ -0.32 0.64 0 0 setcmykcolor}DC /DarkOrchid{0.40 0.80 0.20 0 setcmykcolor} -DC /Purple{0.45 0.86 0 0 setcmykcolor}DC /Plum{0.50 1 0 0 setcmykcolor} -DC /Violet{0.79 0.88 0 0 setcmykcolor}DC /RoyalPurple{0.75 0.90 0 0 -setcmykcolor}DC /BlueViolet{0.86 0.91 0 0.04 setcmykcolor}DC /Periwinkle -{0.57 0.55 0 0 setcmykcolor}DC /CadetBlue{0.62 0.57 0.23 0 setcmykcolor} -DC /CornflowerBlue{0.65 0.13 0 0 setcmykcolor}DC /MidnightBlue{0.98 0.13 -0 0.43 setcmykcolor}DC /NavyBlue{0.94 0.54 0 0 setcmykcolor}DC -/RoyalBlue{1 0.50 0 0 setcmykcolor}DC /Blue{1 1 0 0 setcmykcolor}DC -/Cerulean{0.94 0.11 0 0 setcmykcolor}DC /Cyan{1 0 0 0 setcmykcolor}DC -/ProcessBlue{0.96 0 0 0 setcmykcolor}DC /SkyBlue{0.62 0 0.12 0 -setcmykcolor}DC /Turquoise{0.85 0 0.20 0 setcmykcolor}DC /TealBlue{0.86 -0 0.34 0.02 setcmykcolor}DC /Aquamarine{0.82 0 0.30 0 setcmykcolor}DC -/BlueGreen{0.85 0 0.33 0 setcmykcolor}DC /Emerald{1 0 0.50 0 -setcmykcolor}DC /JungleGreen{0.99 0 0.52 0 setcmykcolor}DC /SeaGreen{ -0.69 0 0.50 0 setcmykcolor}DC /Green{1 0 1 0 setcmykcolor}DC -/ForestGreen{0.91 0 0.88 0.12 setcmykcolor}DC /PineGreen{0.92 0 0.59 -0.25 setcmykcolor}DC /LimeGreen{0.50 0 1 0 setcmykcolor}DC /YellowGreen{ -0.44 0 0.74 0 setcmykcolor}DC /SpringGreen{0.26 0 0.76 0 setcmykcolor} -DC /OliveGreen{0.64 0 0.95 0.40 setcmykcolor}DC /RawSienna{0 0.72 1 0.45 -setcmykcolor}DC /Sepia{0 0.83 1 0.70 setcmykcolor}DC /Brown{0 0.81 1 -0.60 setcmykcolor}DC /Tan{0.14 0.42 0.56 0 setcmykcolor}DC /Gray{0 0 0 -0.50 setcmykcolor}DC /Black{0 0 0 1 setcmykcolor}DC /White{0 0 0 0 -setcmykcolor}DC end - -%%EndProcSet -TeXDict begin 40258437 52099154 1000 300 300 (formula.dvi) -@start /Fa 134[ 41 5[ 41 3[ 46 46 1[ 18 6[ 46 15[ 60 -4[ 55 14[ 55 23[ 28 28 40[{ TeXBase1Encoding ReEncodeFont } 11 -82.6359 /Helvetica rf /Fb 205[ 34 34 49[{ - TeXBase1Encoding ReEncodeFont } 2 68.8667 /Times-Roman -rf /Fc 154[ 30 101[{ } 1 68.8667 /Symbol rf -%DVIPSBitmapFont: Fd cmr10 19.907 4 -/Fd 4 94 df<146014E0EB01C0EB0380EB0700130E5B133C13385B13F05B1201485AA248 -5AA348C7FCA25A121EA2123EA2123CA2127CA5127812F8B01278127CA5123CA2123EA212 -1EA2121F7EA26C7EA36C7EA26C7E12007F13707F133C131C7F7FEB0380EB01C0EB00E014 -60135278BD20> 40 D<7E7E7E12707E7E7E120F7E6C7E7F12017F6C7EA21378A37FA213 -3E131EA2131FA27FA21480A5130714C0B01480130FA51400A25BA2131EA2133E133CA25B -A35BA2485A5B12035B48C7FC5A120E5A5A5A5A5A5A12527BBD20> I 91 D 93 D E -%EndDVIPSBitmapFont -/Fe 197[ 23 58[{ TeXBase1Encoding ReEncodeFont } 1 82.6359 -/Times-Roman rf -%DVIPSBitmapFont: Ff cmsy10 19.907 4 -/Ff 4 106 df<0060161800F0163CA26C167C00781678007C16F8003C16F0A2003E1501 -001E16E0A2001F15036C16C06D140700071680A26D140F000316006D5C6CB612FEA36C5D -01F8C7127C01781478A2017C14F8013C5CA2013E1301011E5C011F13036D5CA2EC800701 -075CECC00F010391C7FCA26E5A0101131EECF03E0100133CA2ECF87CEC7878A2EC7CF8EC -3CF0143F6E5AA36E5AA26E5AA26EC8FC2E3A80B82F> 56 D<126012F0B3A7B8FC1780A3 -00F0CAFCB3A8126029397CB832> 96 D<14C0EB01E0A2130314C013071480A2130F1400 -A25B131E133E133CA2137C137813F85BA212015BA212035B12075BA2120F90C7FC5A121E -A2123E123CA2127C127812F85AA27E1278127C123CA2123E121EA2121F7E7F1207A27F12 -037F1201A27F1200A27F1378137C133CA2133E131E131F7FA214801307A214C0130314E0 -1301A2EB00C0135278BD20> 104 D<126012F0A27E1278127C123CA2123E121EA2121F7E -7F1207A27F12037F1201A27F1200A27F1378137C133CA2133E131E131F7FA214801307A2 -14C0130314E01301A2130314C013071480A2130F1400A25B131E133E133CA2137C137813 -F85BA212015BA212035B12075BA2120F90C7FC5A121EA2123E123CA2127C127812F85AA2 -126013527CBD20> I E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fg cmmi10 19.907 1 -/Fg 1 59 df<121C123E127FEAFF80A3EA7F00123E121C0909798817> 58 -D E -%EndDVIPSBitmapFont -/Fh 158[ 41 31[ 50 65[{ TeXBase1Encoding ReEncodeFont } 2 -82.6359 /Times-Italic rf /Fi 139[ 36 50 13[ 36 101[{ } 3 -82.6359 /Symbol rf end -%%EndProlog -%%BeginSetup -%%Feature: *Resolution 300dpi -TeXDict begin - -%%EndSetup -0 0 bop Black Black 0 0.7 0 TeXcolorrgb Fh 567 883 a(A) p -Ff 636 883 a(`) p Fh 705 883 a(a) p Fe 765 883 a(:) p -0 0 1 TeXcolorrgb Fi 806 883 a(t) p Fb 842 900 a(1) p -0 0.7 0 TeXcolorrgb Fd 948 883 a(\() p 0 0 1 TeXcolorrgb -Fi(t) p Fb 1016 900 a(1) p 0 0.7 0 TeXcolorrgb Fe 1071 -883 a(:) p 0 0 1 TeXcolorrgb Fi 1112 883 a(t) p 0 0.7 0 -TeXcolorrgb Fe 1167 883 a(:) p 0 0 1 TeXcolorrgb Fi 1208 -883 a(t) p Fb 1244 900 a(2) p 0 0.7 0 TeXcolorrgb Fd -1281 883 a(\)) p 567 920 746 4 v Fh 704 995 a(A) p Ff -773 995 a(`) p Fd 842 995 a(\() p Fh(a) p Fe 934 995 -a(:) p 0 0 1 TeXcolorrgb Fi 975 995 a(t) p 0 0.7 0 TeXcolorrgb -Fd(\)) p Fe 1062 995 a(:) p 0 0 1 TeXcolorrgb Fi 1103 -995 a(t) p Fb 1139 1012 a(2) p 0 0.7 0 TeXcolorrgb Black -Fa 2 939 a(\(Ann\)) p 0 0.7 0 TeXcolorrgb Black 0 0.7 0 -TeXcolorrgb Fh 540 1208 a(A) p Ff 609 1208 a(`) p Fh -678 1208 a(a) p Fe 738 1208 a(:) p 0 0 1 TeXcolorrgb -Fi 779 1208 a(s) p Fb 829 1225 a(1) p 0 0.7 0 TeXcolorrgb -Fd 934 1208 a(\() p 0 0 1 TeXcolorrgb Fi(s) p Fb 1016 -1225 a(1) p 0 0.7 0 TeXcolorrgb Fe 1071 1208 a(:) p 0 0 1 -TeXcolorrgb Fi 1112 1208 a(s) p 0 0.7 0 TeXcolorrgb Fe -1180 1208 a(:) p 0 0 1 TeXcolorrgb Fi 1222 1208 a(s) p -Fb 1272 1225 a(2) p 0 0.7 0 TeXcolorrgb Fd 1308 1208 -a(\)) p 540 1245 801 4 v Fh 661 1321 a(A) p Ff 730 1321 -a(`) p Fd 799 1321 a([) p Fh(a) p Fe 881 1321 a(:) p -0 0 1 TeXcolorrgb Fi 923 1321 a(s) p 0 0.7 0 TeXcolorrgb -Fd 972 1321 a(]) p Fe 1014 1321 a(:) p 0 0 1 TeXcolorrgb -Fd 1055 1321 a([) p Fi(s) p Fb 1128 1338 a(2) p Fd 1164 -1321 a(]) p Fc 1187 1297 a(e) p 0 0.7 0 TeXcolorrgb Black -Fa 2 1264 a(\(P) l(oly\)) p 0 0.7 0 TeXcolorrgb Black -0 0.7 0 TeXcolorrgb Fh 704 1537 a(A) p Ff 773 1537 a(`) p -Fh 842 1537 a(a) p Fe 902 1537 a(:) p 0 0 1 TeXcolorrgb -Ff 943 1537 a(8) p Fi(e) p Fg(:) p Fd([) p Fi(s) p Fd(]) p -Fc 1145 1507 a(e) p 0 0.7 0 TeXcolorrgb 704 1573 472 -4 v Fh 764 1649 a(A) p Ff 833 1649 a(`) p 902 1649 a(h) p -Fh(a) p Ff(i) p Fe 1025 1649 a(:) p 0 0 1 TeXcolorrgb -Fi 1067 1649 a(s) p 0 0.7 0 TeXcolorrgb Black Fa 2 1592 -a(\(Use\)) p 0 0.7 0 TeXcolorrgb Black Black Black 90 rotate -dyy eop -%%Trailer -end -userdict /end-hook known{end-hook}if -%%EOF diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/doc/lablgtk.mgp b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/doc/lablgtk.mgp deleted file mode 100644 index 3eac79341..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/doc/lablgtk.mgp +++ /dev/null @@ -1,558 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%deffont "code" xfont "itc avant garde gothic-demi-r", tfont "verdana.ttf" -%deffont "code-bold" xfont "terminal-bold-r", tfont "verdanab.ttf" -%deffont "sans" xfont "helvetica-medium-r", tfont "comic.ttf" -%deffont "sans-bold" xfont "helvetica-bold-r", tfont "comicbd.ttf" -%deffont "sansit" xfont "helvetica-medium-i", tfont "marlett.ttf" -%deffont "title" xfont "times-medium-r", tfont "times.ttf" -%deffont "title-bold" xfont "times-bold-r", tfont "timesbd.ttf" -%default 1 right, size 2, fore "white", bgrad -%default 1 vfont "goth", font "sans-bold", vgap 100 -%default 2 leftfill, size 8, vgap 60, prefix " ", font "sans" -%default 3 size 4, bar "beige", vgap 10 -%default 4 size 5, fore "white", vgap 20, prefix " " -%tab 1 size 5, vgap 40, prefix " ", icon box "green" 50 -%tab 2 size 5, vgap 40, prefix " ", icon arc "yellow" 50 -%tab 3 size 5, vgap 40, prefix " ", icon arc "white" 40 -%tab com1 size 4, prefix " " -%tab com2 size 4, prefix " " -%tab com3 size 4, prefix " " -%tab txt font "sans", size 5, fore "white", prefix " " -%tab vspace size 2 -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%page -%nodefault -%size 9, font "title-bold" -%fore "beige", back "navyblue", vgap 20 -%center - - -A Type System in Action: - -the LablGTK Interface - - -%size 7, font "title" -Jacques Garrigue -Kyoto University -%size 6, font "code" -garrigue@kurims.kyoto-u.ac.jp - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%page -2 -Synopsis - - Objective Label introduction -%size 2 - - Why GTK+? - GTK+/LablGTK structure -%size 2 - - Low Level - Type encoding with variants - Labeled parameters -%size 2 - - High Level - Object-orientation - Optional arguments - Polymorphic methods -%size 2 - - Conclusion - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%page -3 -Objective Label - - Based on Objective Caml - ML syntax and type inference - Class-based object system - - Several extensions - Labeled and optional parameters - Polymorphic variants - Polymorphic methods - - Tools - Type-based browser - GUI and 3D graphics - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%page -4 -Labels and optionals - -%font "code", size 4, prefix " ", fore "yellow" -let rec map fun:f = function - [] -> [] - | x :: l -> f x :: map fun:f l -%fore "lightpink" -val map : fun:('a -> 'b) -> 'a list -> 'b list - -%pause, fore "yellow", font "code" -let f = map [1;2;3] -%fore "lightpink" -val f : fun:(int -> 'a) -> 'a list -%fore "yellow" -f fun:(fun x -> 2*x) -%fore "lightpink" -- : int list = [2; 3; 4] - -%pause, fore "yellow", font "code" -let f x ?incr:y [< 1 >] = x + y -%fore "lightpink" -val f : int -> ?incr:int -> int -%fore "yellow" -f 1 -%fore "lightpink" -- : int = 2 - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%page -5 -Polymorphic variants - - -%font "code", size 4, prefix " ", fore "yellow" -[`on; `off] -%fore "lightpink" -- : [> off on] list = [`on; `off] - -%pause, fore "yellow", font "code" -`number 1;; -%fore "lightpink" -- : [> number(int)] = `number 1 - -%pause, fore "yellow", font "code" -let f = function `on -> 1 | `off -> 0 | `number n -> n -%fore "lightpink" -val f : [< number(int) off on] -> int - -%pause, fore "yellow", font "code" -type t = [on off number(int)] - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%page -6 -Polymorphic methods - -Not allowed in Objective Caml -%size 2 - -%font "code", size 4, prefix " ", fore "yellow" -class c = object method m x = x end -%fore "red" -Some type variables are unbound in this type: - class c : object method m : 'a -> 'a end -The method m has type 'a -> 'a where 'a is unbound - -%pause, font "sans", size 5, prefix " ", fore "white" -Need explicit annotation in O'Labl -%size 2 - -%font "code", size 4, prefix " ", fore "yellow" -class c = object - method m : 'a. 'a -> 'a = fun x -> x -end -%fore "lightpink" -class c : object method m : 'a -> 'a end -%fore "yellow" -let o = new c -%fore "lightpink" -val o : c = -%fore "yellow" -o#m 1, o#m true -%fore "lightpink" -- : int * bool = 1, true - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%page -7 -Why GTK+ ? - -Why use the GIMP Tool Kit? -%size 3 - - Widely used in free software - - Easy to interface - Written in C (QT uses C++) - Memory management - -Drawbacks -%size 3 - - Design lacks uniformity - Extensive use of dynamic typing - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%page -8 -GTK+ Structure - -Class hierarchy based on GtkObject -%size 2 - - Single inheritance -&com1 New widgets may redefine methods -%size 2 - - Dynamically checked -&com1 Casting necessay both up and down -%size 2 - - Developper-side hierarchy -&com1 Inheritance is not always meaningful to the user -%size 2 - -%size 5 -Signal-based callback mechanism -%size 2 - - May use multiple callbacks -%size 2 - - Signals are polymorphic - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%page -9 -LablGTK structure - -Typed at all levels - - Low-level interface -%size 2 - - C stub functions -- typechecked by C - - ML type declarations -- ML abstract types - - High-level interface -%size 2 - - ML class wrappers -- ML concrete types - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%page -10 -Low Level Interface - -Goals - - Strongly typed interface -&com1 heavy use of advanced typing techniques - - Very little ML code -&com1 C-stubs and external declarations - - Safe memory management -&com1 have the library cooperate with the GC - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%page -11 -Low level encoding (I) - - -How to represent widget subtyping in ML? - - Example: buttons' hierarchy -%size 2 - -%font "code", size 5, prefix " ", fore "yellow" -GtkObject - GtkWidget - GtkContainer - GtkButton - GtkToggleButton - GtkRadioButton - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%page -12 -Variants as set constraints - - -Variants can be seen as sets of possible values: - - [tag1 ... tagn] = {tag1,...,tagn} - - -Polymorphic variants introduce constraints - - $B&A(B[> tag1 ... tagn] $B"N(B $B&A(B $B"?(B {tag1,...,tagn} - $B&A(B[< tag1 ... tagn] $B"N(B $B&A(B $B">(B {tag1,...,tagn} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%page -13 -Encoding hierarchies - -Define an abstract type -&vspace -%font "code", fore "yellow", size 5 - type 'a obj - -&txt Use tags to represent properties -&vspace -%font "code", fore "yellow", size 5 - type t = [class1 ... classn] obj - -&txt Functions check properties -&vspace -%font "code", fore "yellow", size 5 - val f : [> class1 ... classn] obj -> ... -&txt - Subsumes Haskell type classes -&vspace - Allows multiple inheritance - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%page -14 -Low level encoding (II) - -Example: buttons' hierarchy -%size 2 - -%font "code", size 4, prefix " ", fore "yellow" -type 'a obj -type widget = [widget] obj -type container = [widget container] obj -type button = [widget container button] obj -type toggle_button = [widget ... togglebutton] obj -type radio_button = [widget ... radiobutton] obj -type state_type = [ NORMAL - ACTIVE PRELIGHT SELECTED INSENSITIVE ] -val set_state : [> widget] obj -> state_type -> unit -val children : [> container] obj -> [widget] obj list -val clicked : [> button] obj -> unit -val set_group : [> radiobutton] obj -> group -> unit - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%page -15 -Alternate encoding - -Use only standard ML features -%size 2 - -%font "code", size 4, prefix " ", fore "yellow", vgap 50 -type 'a obj -type 'a widget -... -type 'a radio -type state_type = NORMAL | ACTIVE | ... | INSENSITIVE -val set_state : 'a widget obj -> state_type -> unit -val children : - 'a container widget obj -> unit widget obj list -val clicked : 'a button container widget obj -> unit - -&txt Weaknesses - No multiple inheritance - Not very intuitive for the user - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%page -16 -Low level encoding (III) - -Use of labeled parameters -%size 2 - -%font "code", size 4, prefix " ", fore "yellow", vgap 50 -val adjustment_new : - value:float -> lower:float -> upper:float -> - step_incr:float -> page_incr:float -> - page_size:float -> adjustment obj - -&txt Signals -%size 2 - -%font "code", size 4, prefix " ", fore "yellow", vgap 50 -type ('a,'b) signal = - { name: string; marshaller: 'b -> GtkArgv.t -> unit } -val connect : 'a obj -> sig:('a,'b) signal -> - callback:'b -> ?after:bool -> id -val button_clicked : ([> button], unit -> unit) signal - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%page -17 -High-Level Interface - -Problems with GTK+ -%size 2 - - Name space is scattered -&com1 One has to know in which superclass a function is defined - Developper oriented design -&com1 There is no clear distinction between public and private definitions - -&txt LablGTK design -%size 2 - - OCaml classes to reunify name space - Omit developper-oriented methods - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%page -18 -High-level classes - -%font "code", size 4, prefix " ", fore "yellow" -class button : -%fore "lightgreen" - ?label:string -> -%fore "lightpink" - ?border_width:int -> - ?width:int -> - ?height:int -> -%fore "lightgray" - ?packing:(GButton.button -> unit) -> - ?show:bool -> -%fore "yellow" - object -%fore "lightgray" - method destroy : unit -> unit - method as_widget : Gtk.widget obj - method misc : GObj.widget_misc -%fore "lightpink" - method add : #is_widget -> unit - method set_border_width : int -> unit -%fore "lightgreen" - method clicked : unit -> unit - method connect : GButton.button_signals - method grab_default : unit -> unit -%fore "yellow" - end - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%page -19 -High-level features - - Objective Caml classes -&com1 allow collecting methods from different modules - - Use optionals in class constructors -&com1 makes widget creation much easier - - Polymorphic methods -&com1 needed for container widgets -%size 2 - -%font "code", size 4, fore "yellow", vgap 50 - method add : 'a. (#is_widget as 'a) -> unit - -%fore "white", font "sans" - Polymorphic variants -&com1 for C-style enumeration types, avoid name-space dependancies - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%page -20 -Polymorphic methods (I) - - Instance of first-class polymorphism -%size 2 - - first-class polytypes cannot be inferred - they are propagated by the definition flow - - Technically -%size 2 - - use polymorphism to track available information - type system excludes derivations based on "guessed" information - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%page -21 -First class polymorphism - -%prefix " " -%image "formula.eps" 512x384 -%size 2 - -%prefix " ", size 5, fore "lightblue" - ($B&R(B1 : $B&R(B : $B&R(B2) $B"N(B $B&R(B1 = $B&H(B($B&Q(B1($B&R(B)) $B"J(B $B&R(B2 = $B&H(B($B&Q(B2($B&R(B)) -%fore "white" -where $B&H(B instantiates free variables, and $B&Q(B1,$B&Q(B2 rename free labels of $B&R(B. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%page -22 -Polymorphic methods (II) - -Definitions -%size 2 - -%font "code", size 4, prefix " ", fore "yellow", vgap 50 -type is_widget = < as_widget : widget obj > -type #is_widget = < as_widget : widget obj; .. > -type container = - < ... ; add : 'a. (#as_widget as 'a) -> unit; ... > - -%pause -&txt Propagation -%size 2 - -%font "code", size 4, prefix " ", fore "lightgreen", vgap 50 -fun (cont : container) -> cont#add widget - -%pause -let button = new button in button#add widget - -%pause, fore "red" -fun cont -> cont#add widget - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%page -23 -Programming example - -Hello World -%size 2 - -%font "code", size 4, prefix " ", fore "yellow" -open GMain - -let window = - new GWindow.window border_width: 10 - -let button = - new GButton.button - label: "Hello World" packing: window#add - -let _ = - window#connect#destroy callback: Main.quit; - button#connect#clicked callback: window#destroy; - window#show (); - Main.main () - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%page -24 -Conclusion - - Results -%size 2 - - Could build a strongly typed interface - - It is easier to use than the C API - - Makes effective use of extensions to the type system - - Comments -%size 2 - - Still difficulties with the Caml object system -&com2 class recursion, method type refinement, etc... diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/GL/morph3d.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/GL/morph3d.ml deleted file mode 100644 index a08726e05..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/GL/morph3d.ml +++ /dev/null @@ -1,607 +0,0 @@ -(* $Id$ *) - -(*- - * morph3d.c - Shows 3D morphing objects (TK Version) - * - * This program was inspired on a WindowsNT(R)'s screen saver. It was written - * from scratch and it was not based on any other source code. - * - * Porting it to xlock (the final objective of this code since the moment I - * decided to create it) was possible by comparing the original Mesa's gear - * demo with it's ported version, so thanks for Danny Sung for his indirect - * help (look at gear.c in xlock source tree). NOTE: At the moment this code - * was sent to Brian Paul for package inclusion, the XLock Version was not - * available. In fact, I'll wait it to appear on the next Mesa release (If you - * are reading this, it means THIS release) to send it for xlock package - * inclusion). It will probably there be a GLUT version too. - * - * Thanks goes also to Brian Paul for making it possible and inexpensive - * to use OpenGL at home. - * - * Since I'm not a native english speaker, my apologies for any gramatical - * mistake. - * - * My e-mail addresses are - * - * vianna@cat.cbpf.br - * and - * marcelo@venus.rdc.puc-rio.br - * - * Marcelo F. Vianna (Feb-13-1997) - *) - -(* -This document is VERY incomplete, but tries to describe the mathematics used -in the program. At this moment it just describes how the polyhedra are -generated. On futhurer versions, this document will be probabbly improved. - -Since I'm not a native english speaker, my apologies for any gramatical -mistake. - -Marcelo Fernandes Vianna -- Undergraduate in Computer Engeneering at Catholic Pontifical University -- of Rio de Janeiro (PUC-Rio) Brasil. -- e-mail: vianna@cat.cbpf.br or marcelo@venus.rdc.puc-rio.br -- Feb-13-1997 - -POLYHEDRA GENERATION - -For the purpose of this program it's not sufficient to know the polyhedra -vertexes coordinates. Since the morphing algorithm applies a nonlinear -transformation over the surfaces (faces) of the polyhedron, each face has -to be divided into smaller ones. The morphing algorithm needs to transform -each vertex of these smaller faces individually. It's a very time consoming -task. - -In order to reduce calculation overload, and since all the macro faces of -the polyhedron are transformed by the same way, the generation is made by -creating only one face of the polyhedron, morphing it and then rotating it -around the polyhedron center. - -What we need to know is the face radius of the polyhedron (the radius of -the inscribed sphere) and the angle between the center of two adjacent -faces using the center of the sphere as the angle's vertex. - -The face radius of the regular polyhedra are known values which I decided -to not waste my time calculating. Following is a table of face radius for -the regular polyhedra with edge length = 1: - - TETRAHEDRON : 1/(2*sqrt(2))/sqrt(3) - CUBE : 1/2 - OCTAHEDRON : 1/sqrt(6) - DODECAHEDRON : T^2 * sqrt((T+2)/5) / 2 -> where T=(sqrt(5)+1)/2 - ICOSAHEDRON : (3*sqrt(3)+sqrt(15))/12 - -I've not found any reference about the mentioned angles, so I needed to -calculate them, not a trivial task until I figured out how :) -Curiously these angles are the same for the tetrahedron and octahedron. -A way to obtain this value is inscribing the tetrahedron inside the cube -by matching their vertexes. So you'll notice that the remaining unmatched -vertexes are in the same straight line starting in the cube/tetrahedron -center and crossing the center of each tetrahedron's face. At this point -it's easy to obtain the bigger angle of the isosceles triangle formed by -the center of the cube and two opposite vertexes on the same cube face. -The edges of this triangle have the following lenghts: sqrt(2) for the base -and sqrt(3)/2 for the other two other edges. So the angle we want is: - +-----------------------------------------------------------+ - | 2*ARCSIN(sqrt(2)/sqrt(3)) = 109.47122063449069174 degrees | - +-----------------------------------------------------------+ -For the cube this angle is obvious, but just for formality it can be -easily obtained because we also know it's isosceles edge lenghts: -sqrt(2)/2 for the base and 1/2 for the other two edges. So the angle we -want is: - +-----------------------------------------------------------+ - | 2*ARCSIN((sqrt(2)/2)/1) = 90.000000000000000000 degrees | - +-----------------------------------------------------------+ -For the octahedron we use the same idea used for the tetrahedron, but now -we inscribe the cube inside the octahedron so that all cubes's vertexes -matches excatly the center of each octahedron's face. It's now clear that -this angle is the same of the thetrahedron one: - +-----------------------------------------------------------+ - | 2*ARCSIN(sqrt(2)/sqrt(3)) = 109.47122063449069174 degrees | - +-----------------------------------------------------------+ -For the dodecahedron it's a little bit harder because it's only relationship -with the cube is useless to us. So we need to solve the problem by another -way. The concept of Face radius also exists on 2D polygons with the name -Edge radius: - Edge Radius For Pentagon (ERp) - ERp = (1/2)/TAN(36 degrees) * VRp = 0.6881909602355867905 - (VRp is the pentagon's vertex radio). - Face Radius For Dodecahedron - FRd = T^2 * sqrt((T+2)/5) / 2 = 1.1135163644116068404 -Why we need ERp? Well, ERp and FRd segments forms a 90 degrees angle, -completing this triangle, the lesser angle is a half of the angle we are -looking for, so this angle is: - +-----------------------------------------------------------+ - | 2*ARCTAN(ERp/FRd) = 63.434948822922009981 degrees | - +-----------------------------------------------------------+ -For the icosahedron we can use the same method used for dodecahedron (well -the method used for dodecahedron may be used for all regular polyhedra) - Edge Radius For Triangle (this one is well known: 1/3 of the triangle height) - ERt = sin(60)/3 = sqrt(3)/6 = 0.2886751345948128655 - Face Radius For Icosahedron - FRi= (3*sqrt(3)+sqrt(15))/12 = 0.7557613140761707538 -So the angle is: - +-----------------------------------------------------------+ - | 2*ARCTAN(ERt/FRi) = 41.810314895778596167 degrees | - +-----------------------------------------------------------+ - -*) - - -let scale = 0.3 - -let vect_mul (x1,y1,z1) (x2,y2,z2) = - (y1 *. z2 -. z1 *. y2, z1 *. x2 -. x1 *. z2, x1 *. y2 -. y1 *. x2) - -let sqr a = a *. a - -(* Increasing this values produces better image quality, the price is speed. *) -(* Very low values produces erroneous/incorrect plotting *) -let tetradivisions = 23 -let cubedivisions = 20 -let octadivisions = 21 -let dodecadivisions = 10 -let icodivisions = 15 - -let tetraangle = 109.47122063449069174 -let cubeangle = 90.000000000000000000 -let octaangle = 109.47122063449069174 -let dodecaangle = 63.434948822922009981 -let icoangle = 41.810314895778596167 - -let pi = acos (-1.) -let sqrt2 = sqrt 2. -let sqrt3 = sqrt 3. -let sqrt5 = sqrt 5. -let sqrt6 = sqrt 6. -let sqrt15 = sqrt 15. -let cossec36_2 = 0.8506508083520399322 -let cosd x = cos (float x /. 180. *. pi) -let sind x = sin (float x /. 180. *. pi) -let cos72 = cosd 72 -let sin72 = sind 72 -let cos36 = cosd 36 -let sin36 = sind 36 - -(*************************************************************************) - -let front_shininess = 60.0 -let front_specular = 0.7, 0.7, 0.7, 1.0 -let ambient = 0.0, 0.0, 0.0, 1.0 -let diffuse = 1.0, 1.0, 1.0, 1.0 -let position0 = 1.0, 1.0, 1.0, 0.0 -let position1 = -1.0,-1.0, 1.0, 0.0 -let lmodel_ambient = 0.5, 0.5, 0.5, 1.0 -let lmodel_twoside = true - -let materialRed = 0.7, 0.0, 0.0, 1.0 -let materialGreen = 0.1, 0.5, 0.2, 1.0 -let materialBlue = 0.0, 0.0, 0.7, 1.0 -let materialCyan = 0.2, 0.5, 0.7, 1.0 -let materialYellow = 0.7, 0.7, 0.0, 1.0 -let materialMagenta = 0.6, 0.2, 0.5, 1.0 -let materialWhite = 0.7, 0.7, 0.7, 1.0 -let materialGray = 0.2, 0.2, 0.2, 1.0 -let all_gray = Array.create 20 materialGray - -let vertex ~xf ~yf ~zf ~ampvr2 = - let xa = xf +. 0.01 and yb = yf +. 0.01 in - let xf2 = sqr xf and yf2 = sqr yf in - let factor = 1. -. (xf2 +. yf2) *. ampvr2 - and factor1 = 1. -. (sqr xa +. yf2) *. ampvr2 - and factor2 = 1. -. (xf2 +. sqr yb) *. ampvr2 in - let vertx = factor *. xf and verty = factor *. yf - and vertz = factor *. zf in - let neiax = factor1 *. xa -. vertx and neiay = factor1 *. yf -. verty - and neiaz = factor1 *. zf -. vertz and neibx = factor2 *. xf -. vertx - and neiby = factor2 *. yb -. verty and neibz = factor2 *. zf -. vertz in - GlDraw.normal3 (vect_mul (neiax, neiay, neiaz) (neibx, neiby, neibz)); - GlDraw.vertex3 (vertx, verty, vertz) - -let triangle ~edge ~amp ~divisions ~z = - let divi = float divisions in - let vr = edge *. sqrt3 /. 3. in - let ampvr2 = amp /. sqr vr - and zf = edge *. z in - let ax = edge *. (0.5 /. divi) - and ay = edge *. (-0.5 *. sqrt3 /. divi) - and bx = edge *. (-0.5 /. divi) in - for ri = 1 to divisions do - GlDraw.begins `triangle_strip; - for ti = 0 to ri - 1 do - vertex ~zf ~ampvr2 - ~xf:(float (ri-ti) *. ax +. float ti *. bx) - ~yf:(vr +. float (ri-ti) *. ay +. float ti *. ay); - vertex ~zf ~ampvr2 - ~xf:(float (ri-ti-1) *. ax +. float ti *. bx) - ~yf:(vr +. float (ri-ti-1) *. ay +. float ti *. ay) - done; - vertex ~xf:(float ri *. bx) ~yf:(vr +. float ri *. ay) ~zf ~ampvr2; - GlDraw.ends () - done - -let square ~edge ~amp ~divisions ~z = - let divi = float divisions in - let zf = edge *. z - and ampvr2 = amp /. sqr (edge *. sqrt2 /. 2.) in - for yi = 0 to divisions - 1 do - let yf = edge *. (-0.5 +. float yi /. divi) in - let yf2 = sqr yf in - let y = yf +. 1.0 /. divi *. edge in - let y2 = sqr y in - GlDraw.begins `quad_strip; - for xi = 0 to divisions do - let xf = edge *. (-0.5 +. float xi /. divi) in - vertex ~xf ~yf:y ~zf ~ampvr2; - vertex ~xf ~yf ~zf ~ampvr2 - done; - GlDraw.ends () - done - -let pentagon ~edge ~amp ~divisions ~z = - let divi = float divisions in - let zf = edge *. z - and ampvr2 = amp /. sqr(edge *. cossec36_2) in - let x = - Array.init 6 - ~f:(fun fi -> -. cos (float fi *. 2. *. pi /. 5. +. pi /. 10.) - /. divi *. cossec36_2 *. edge) - and y = - Array.init 6 - ~f:(fun fi -> sin (float fi *. 2. *. pi /. 5. +. pi /. 10.) - /. divi *. cossec36_2 *. edge) - in - for ri = 1 to divisions do - for fi = 0 to 4 do - GlDraw.begins `triangle_strip; - for ti = 0 to ri-1 do - vertex ~zf ~ampvr2 - ~xf:(float(ri-ti) *. x.(fi) +. float ti *. x.(fi+1)) - ~yf:(float(ri-ti) *. y.(fi) +. float ti *. y.(fi+1)); - vertex ~zf ~ampvr2 - ~xf:(float(ri-ti-1) *. x.(fi) +. float ti *. x.(fi+1)) - ~yf:(float(ri-ti-1) *. y.(fi) +. float ti *. y.(fi+1)) - done; - vertex ~xf:(float ri *. x.(fi+1)) ~yf:(float ri *. y.(fi+1)) ~zf ~ampvr2; - GlDraw.ends () - done - done - -let call_list list color = - GlLight.material ~face:`both (`diffuse color); - GlList.call list - -let draw_tetra ~amp ~divisions ~color = - let list = GlList.create `compile in - triangle ~edge:2.0 ~amp ~divisions ~z:(0.5 /. sqrt6); - GlList.ends(); - - call_list list color.(0); - GlMat.push(); - GlMat.rotate ~angle:180.0 ~z:1.0 (); - GlMat.rotate ~angle:(-.tetraangle) ~x:1.0 (); - call_list list color.(1); - GlMat.pop(); - GlMat.push(); - GlMat.rotate ~angle:180.0 ~y:1.0 (); - GlMat.rotate ~angle:(-180.0 +. tetraangle) ~x:0.5 ~y:(sqrt3 /. 2.) (); - call_list list color.(2); - GlMat.pop(); - GlMat.rotate ~angle:180.0 ~y:1.0 (); - GlMat.rotate ~angle:(-180.0 +. tetraangle) ~x:0.5 ~y:(-.sqrt3 /. 2.) (); - call_list list color.(3); - - GlList.delete list - -let draw_cube ~amp ~divisions ~color = - let list = GlList.create `compile in - square ~edge:2.0 ~amp ~divisions ~z:0.5; - GlList.ends (); - - call_list list color.(0); - for i = 1 to 3 do - GlMat.rotate ~angle:cubeangle ~x:1.0 (); - call_list list color.(i) - done; - GlMat.rotate ~angle:cubeangle ~y:1.0 (); - call_list list color.(4); - GlMat.rotate ~angle:(2.0 *. cubeangle) ~y:1.0 (); - call_list list color.(5); - - GlList.delete list - -let draw_octa ~amp ~divisions ~color = - let list = GlList.create `compile in - triangle ~edge:2.0 ~amp ~divisions ~z:(1.0 /. sqrt6); - GlList.ends (); - - let do_list (i,y) = - GlMat.push(); - GlMat.rotate ~angle:180.0 ~y:1.0 (); - GlMat.rotate ~angle:(-.octaangle) ~x:0.5 ~y (); - call_list list color.(i); - GlMat.pop() - in - call_list list color.(0); - GlMat.push(); - GlMat.rotate ~angle:180.0 ~z:1.0 (); - GlMat.rotate ~angle:(-180.0 +. octaangle) ~x:1.0 (); - call_list list color.(1); - GlMat.pop(); - List.iter [2, sqrt3 /. 2.0; 3, -.sqrt3 /. 2.0] ~f:do_list; - GlMat.rotate ~angle:180.0 ~x:1.0 (); - GlLight.material ~face:`both (`diffuse color.(4)); - GlList.call list; - GlMat.push(); - GlMat.rotate ~angle:180.0 ~z:1.0 (); - GlMat.rotate ~angle:(-180.0 +. octaangle) ~x:1.0 (); - GlLight.material ~face:`both (`diffuse color.(5)); - GlList.call list; - GlMat.pop(); - List.iter [6, sqrt3 /. 2.0; 7, -.sqrt3 /. 2.0] ~f:do_list; - - GlList.delete list - -let draw_dodeca ~amp ~divisions ~color = - let tau = (sqrt5 +. 1.0) /. 2.0 in - let list = GlList.create `compile in - pentagon ~edge:2.0 ~amp ~divisions - ~z:(sqr(tau) *. sqrt ((tau+.2.0)/.5.0) /. 2.0); - GlList.ends (); - - let do_list (i,angle,x,y) = - GlMat.push(); - GlMat.rotate ~angle:angle ~x ~y (); - call_list list color.(i); - GlMat.pop(); - in - GlMat.push (); - call_list list color.(0); - GlMat.rotate ~angle:180.0 ~z:1.0 (); - List.iter ~f:do_list - [ 1, -.dodecaangle, 1.0, 0.0; - 2, -.dodecaangle, cos72, sin72; - 3, -.dodecaangle, cos72, -.sin72; - 4, dodecaangle, cos36, -.sin36; - 5, dodecaangle, cos36, sin36 ]; - GlMat.pop (); - GlMat.rotate ~angle:180.0 ~x:1.0 (); - call_list list color.(6); - GlMat.rotate ~angle:180.0 ~z:1.0 (); - List.iter ~f:do_list - [ 7, -.dodecaangle, 1.0, 0.0; - 8, -.dodecaangle, cos72, sin72; - 9, -.dodecaangle, cos72, -.sin72; - 10, dodecaangle, cos36, -.sin36 ]; - GlMat.rotate ~angle:dodecaangle ~x:cos36 ~y:sin36 (); - call_list list color.(11); - - GlList.delete list - -let draw_ico ~amp ~divisions ~color = - let list = GlList.create `compile in - triangle ~edge:1.5 ~amp ~divisions - ~z:((3.0 *. sqrt3 +. sqrt15) /. 12.0); - GlList.ends (); - - let do_list1 i = - GlMat.rotate ~angle:180.0 ~y:1.0 (); - GlMat.rotate ~angle:(-180.0 +. icoangle) ~x:0.5 ~y:(sqrt3/.2.0) (); - call_list list color.(i) - and do_list2 i = - GlMat.rotate ~angle:180.0 ~y:1.0 (); - GlMat.rotate ~angle:(-180.0 +. icoangle) ~x:0.5 ~y:(-.sqrt3/.2.0) (); - call_list list color.(i) - and do_list3 i = - GlMat.rotate ~angle:180.0 ~z:1.0 (); - GlMat.rotate ~angle:(-.icoangle) ~x:1.0 (); - call_list list color.(i) - in - GlMat.push (); - call_list list color.(0); - GlMat.push (); - do_list3 1; - GlMat.push (); - do_list1 2; - GlMat.pop (); - do_list2 3; - GlMat.pop (); - GlMat.push (); - do_list1 4; - GlMat.push (); - do_list1 5; - GlMat.pop(); - do_list3 6; - GlMat.pop (); - do_list2 7; - GlMat.push (); - do_list2 8; - GlMat.pop (); - do_list3 9; - GlMat.pop (); - GlMat.rotate ~angle:180.0 ~x:1.0 (); - call_list list color.(10); - GlMat.push (); - do_list3 11; - GlMat.push (); - do_list1 12; - GlMat.pop (); - do_list2 13; - GlMat.pop (); - GlMat.push (); - do_list1 14; - GlMat.push (); - do_list1 15; - GlMat.pop (); - do_list3 16; - GlMat.pop (); - do_list2 17; - GlMat.push (); - do_list2 18; - GlMat.pop (); - do_list3 19; - - GlList.delete list - -class view area = object (self) - val area : GlGtk.area = area - val mutable smooth = true - val mutable step = 0. - val mutable obj = 1 - val mutable draw_object = fun ~amp -> () - val mutable magnitude = 0. - - method width = area#misc#allocation.Gtk.width - method height = area#misc#allocation.Gtk.height - - method draw () = - let ratio = float self#height /. float self#width in - GlClear.clear [`color;`depth]; - GlMat.push(); - GlMat.translate ~z:(-10.0) (); - GlMat.scale ~x:(scale *. ratio) ~y:scale ~z:scale (); - GlMat.translate () - ~x:(2.5 *. ratio *. sin (step *. 1.11)) - ~y:(2.5 *. cos (step *. 1.25 *. 1.11)); - GlMat.rotate ~angle:(step *. 100.) ~x:1.0 (); - GlMat.rotate ~angle:(step *. 95.) ~y:1.0 (); - GlMat.rotate ~angle:(step *. 90.) ~z:1.0 (); - draw_object ~amp:((sin step +. 1.0/.3.0) *. (4.0/.5.0) *. magnitude); - GlMat.pop(); - Gl.flush(); - area#swap_buffers (); - step <- step +. 0.05 - - method reshape ~width ~height = - GlDraw.viewport ~x:0 ~y:0 ~w:width ~h:height; - GlMat.mode `projection; - GlMat.load_identity(); - GlMat.frustum ~x:(-1.0, 1.0) ~y:(-1.0, 1.0) ~z:(5.0, 15.0); - GlMat.mode `modelview - - method key sym = - begin match sym with - "1" -> obj <- 1 - | "2" -> obj <- 2 - | "3" -> obj <- 3 - | "4" -> obj <- 4 - | "5" -> obj <- 5 - | "\r" -> smooth <- not smooth - | "\027" -> area#misc#toplevel#destroy (); exit 0 - | _ -> () - end; - self#pinit - - method pinit = - begin match obj with - 1 -> - draw_object <- draw_tetra - ~divisions:tetradivisions - ~color:[|materialRed; materialGreen; - materialBlue; materialWhite|]; - magnitude <- 2.5 - | 2 -> - draw_object <- draw_cube - ~divisions:cubedivisions - ~color:[|materialRed; materialGreen; materialCyan; - materialMagenta; materialYellow; materialBlue|]; - magnitude <- 2.0 - | 3 -> - draw_object <- draw_octa - ~divisions:octadivisions - ~color:[|materialRed; materialGreen; materialBlue; - materialWhite; materialCyan; materialMagenta; - materialGray; materialYellow|]; - magnitude <- 2.5 - | 4 -> - draw_object <- draw_dodeca - ~divisions:dodecadivisions - ~color:[|materialRed; materialGreen; materialCyan; - materialBlue; materialMagenta; materialYellow; - materialGreen; materialCyan; materialRed; - materialMagenta; materialBlue; materialYellow|]; - magnitude <- 2.0 - | 5 -> - draw_object <- draw_ico - ~divisions:icodivisions - ~color:[|materialRed; materialGreen; materialBlue; - materialCyan; materialYellow; materialMagenta; - materialRed; materialGreen; materialBlue; - materialWhite; materialCyan; materialYellow; - materialMagenta; materialRed; materialGreen; - materialBlue; materialCyan; materialYellow; - materialMagenta; materialGray|]; - magnitude <- 3.5 - | _ -> () - end; - GlDraw.shade_model (if smooth then `smooth else `flat) - initializer - area#connect#display ~callback:self#draw; - area#connect#reshape ~callback:self#reshape; - () -end - -open GMain - -let main () = - List.iter ~f:print_string - [ "Morph 3D - Shows morphing platonic polyhedra\n"; - "Author: Marcelo Fernandes Vianna (vianna@cat.cbpf.br)\n"; - "Ported to LablGL by Jacques Garrigue\n\n"; - " [1] - Tetrahedron\n"; - " [2] - Hexahedron (Cube)\n"; - " [3] - Octahedron\n"; - " [4] - Dodecahedron\n"; - " [5] - Icosahedron\n"; - "[RETURN] - Toggle smooth/flat shading\n"; - " [ESC] - Quit\n" ]; - flush stdout; - - let window = - GWindow.window ~title:"Morph 3D - Shows morphing platonic polyhedra" () - in - window#connect#destroy ~callback:Main.quit; - window#set_resize_mode `IMMEDIATE; - - let area = GlGtk.area [`DEPTH_SIZE 1;`RGBA;`DOUBLEBUFFER] - ~width:640 ~height:480 ~packing:window#add () in - - let view = new view area in - - area#connect#realize ~callback: - begin fun () -> - view#pinit; - GlClear.depth 1.0; - GlClear.color (0.0, 0.0, 0.0); - GlDraw.color (1.0, 1.0, 1.0); - - GlClear.clear [`color;`depth]; - Gl.flush(); - - List.iter ~f:(GlLight.light ~num:0) - [`ambient ambient; `diffuse diffuse; `position position0]; - List.iter ~f:(GlLight.light ~num:1) - [`ambient ambient; `diffuse diffuse; `position position1]; - GlLight.light_model (`ambient lmodel_ambient); - GlLight.light_model (`two_side lmodel_twoside); - List.iter ~f:Gl.enable - [`lighting;`light0;`light1;`depth_test;`normalize]; - - GlLight.material ~face:`both (`shininess front_shininess); - GlLight.material ~face:`both (`specular front_specular); - - GlMisc.hint `fog `fastest; - GlMisc.hint `perspective_correction `fastest; - GlMisc.hint `polygon_smooth `fastest - end; - - window#event#connect#key_press - ~callback:(fun ev -> view#key (GdkEvent.Key.string ev); true); - - Timeout.add ~ms:20 - ~callback:(fun _ -> if area#misc#visible then view#draw (); true); - window#show (); - Main.main () - -let _ = main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/GL/planet.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/GL/planet.ml deleted file mode 100644 index 51f947c48..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/GL/planet.ml +++ /dev/null @@ -1,125 +0,0 @@ -(* $Id$ *) - -class planet area = object (self) - val area : GlGtk.area = area - val mutable year = 0.0 - val mutable day = 0.0 - val mutable eye = 0.0 - val mutable time = 0.0 - - method tick new_time = - if time = 0. then time <- new_time else - let diff = new_time -. time in - time <- new_time; - day <- mod_float (day +. diff *. 200.) 360.0; - year <- mod_float (year +. diff *. 20.) 360.0 - method day_add () = - day <- mod_float (day +. 10.0) 360.0 - method day_subtract () = - day <- mod_float (day -. 10.0) 360.0 - method year_add () = - year <- mod_float (year +. 5.0) 360.0 - method year_subtract () = - year <- mod_float (year -. 5.0) 360.0 - method eye x = - eye <- x; self#display () - - method display () = - GlClear.clear [`color;`depth]; - - GlDraw.color (1.0, 1.0, 1.0); - GlMat.push(); - GlMat.rotate ~angle:eye ~x:1. (); -(* draw sun *) - GlLight.material ~face:`front (`specular (1.0,1.0,0.0,1.0)); - GlLight.material ~face:`front (`shininess 5.0); - GluQuadric.sphere ~radius:1.0 ~slices:32 ~stacks:32 (); -(* draw smaller planet *) - GlMat.rotate ~angle:year ~y:1.0 (); - GlMat.translate ~x:3.0 (); - GlMat.rotate ~angle:day ~y:1.0 (); - GlDraw.color (0.0, 1.0, 1.0); - GlDraw.shade_model `flat; - GlLight.material ~face:`front(`shininess 128.0); - GluQuadric.sphere ~radius:0.2 ~slices:10 ~stacks:10 (); - GlDraw.shade_model `smooth; - GlMat.pop (); - Gl.flush (); - area#swap_buffers () -end - -let myinit () = - let light_ambient = 0.5, 0.5, 0.5, 1.0 - and light_diffuse = 1.0, 0.8, 0.2, 1.0 - and light_specular = 1.0, 1.0, 1.0, 1.0 - (* light_position is NOT default value *) - and light_position = 1.0, 1.0, 1.0, 0.0 - in - List.iter ~f:(GlLight.light ~num:0) - [ `ambient light_ambient; `diffuse light_diffuse; - `specular light_specular; `position light_position ]; - GlFunc.depth_func `less; - List.iter ~f:Gl.enable [`lighting; `light0; `depth_test]; - GlDraw.shade_model `smooth - - -let my_reshape ~width:w ~height:h = - GlDraw.viewport ~x:0 ~y:0 ~w ~h; - GlMat.mode `projection; - GlMat.load_identity(); - GluMat.perspective ~fovy:60.0 ~aspect:(float w /. float h) ~z:(1.0,20.0); - GlMat.mode `modelview; - GlMat.load_identity(); - GlMat.translate ~z:(-5.0) () - -(* Main Loop - * Open window with initial window size, title bar, - * RGBA display mode, and handle input events. - *) -open GMain -open GdkKeysyms - -let main () = - let w = GWindow.window ~title:"Planet" () in - w#connect#destroy ~callback:(fun () -> Main.quit (); exit 0); - w#set_resize_mode `IMMEDIATE; - let hb = GPack.hbox ~packing:w#add () in - let area = GlGtk.area [`DOUBLEBUFFER;`RGBA;`DEPTH_SIZE 1] - ~width:700 ~height:500 ~packing:hb#add () in - area#event#add [`KEY_PRESS]; - - let planet = new planet area in - let adjustment = GData.adjustment ~value:0. ~lower:(-90.) ~upper:90. - ~step_incr:1. ~page_incr:5. ~page_size:5. () in - let scale = GRange.scale `VERTICAL ~adjustment ~draw_value:false - ~packing:hb#pack () in - adjustment#connect#value_changed - ~callback:(fun () -> planet#eye adjustment#value); - w#event#connect#key_press ~callback: - begin fun ev -> - let key = GdkEvent.Key.keyval ev in - if key = _Left then planet#year_subtract () else - if key = _Right then planet#year_add () else - if key = _Up then planet#day_add () else - if key = _Down then planet#day_subtract () else - if key = _Escape then w#destroy (); - planet#display (); - true - end; - - Timeout.add ~ms:20 ~callback: - begin fun () -> - planet#tick (Sys.time ()); planet#display (); true - end; - area#connect#display ~callback:planet#display; - area#connect#reshape ~callback:my_reshape; - - area#connect#realize ~callback: - begin fun () -> - myinit (); - my_reshape ~width:700 ~height:500 - end; - w#show (); - Main.main () - -let _ = Printexc.print main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/GL/simple.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/GL/simple.ml deleted file mode 100644 index ea6ebde96..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/GL/simple.ml +++ /dev/null @@ -1,33 +0,0 @@ -(* $Id$ *) - -open GMain - -let main () = - let w = GWindow.window ~title:"LablGL/Gtk" () in - w#connect#destroy ~callback:Main.quit; - let area = - GlGtk.area [`RGBA;`DEPTH_SIZE 1] ~width:500 ~height:500 ~packing:w#add () in - area#connect#realize ~callback: - begin fun () -> - GlMat.mode `projection; - GlMat.load_identity (); - GlMat.ortho ~x:(-1.0,1.0) ~y:(-1.0,1.0) ~z:(-1.0,1.0); - end; - area#connect#display ~callback: - begin fun () -> - GlClear.color (0.0, 0.0, 0.0); - GlClear.clear [`color]; - GlDraw.color (1.0, 1.0, 1.0); - GlDraw.begins `polygon; - GlDraw.vertex ~x:(-0.5) ~y:(-0.5) (); - GlDraw.vertex ~x:(-0.5) ~y:(0.5) (); - GlDraw.vertex ~x:(0.5) ~y:(0.5) (); - GlDraw.vertex ~x:(0.5) ~y:(-0.5) (); - GlDraw.ends (); - Gl.flush () - end; - Timeout.add ~ms:10000 ~callback:(fun () -> w#destroy ();false); - w#show (); - Main.main () - -let _ = main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/README b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/README deleted file mode 100644 index 6cbb5b6e9..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/README +++ /dev/null @@ -1,17 +0,0 @@ -Since this library was written in commuting label mode, examples were -also written in this mode. -Still, the following examples also compile in classic mode without -any modification. - -* calendar.ml -* clist.ml -* drawing.ml -* entry.ml -* events.ml -* fifteen.ml -* hello.ml -* image.ml -* radiobuttons.ml -* rpn.ml -* scrolledwin.ml -* testinput.ml \ No newline at end of file diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/buttons.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/buttons.ml deleted file mode 100644 index 78eebb038..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/buttons.ml +++ /dev/null @@ -1,26 +0,0 @@ -(* $Id$ *) - -open GMain - -let xpm_label_box ~(window : #GContainer.container) - ~file ~text ?packing ?(show=true) () = - if not (Sys.file_exists file) then failwith (file ^ " does not exist"); - let box = GPack.hbox ~border_width: 2 ?packing ~show:false () in - let pixmap = GDraw.pixmap_from_xpm ~file ~window () in - GMisc.pixmap pixmap ~packing:(box#pack ~padding:3) (); - GMisc.label ~text ~packing:(box#pack ~padding:3) (); - if show then box#misc#show (); - new GObj.widget_full box#as_widget - -let main () = - let window = GWindow.window ~title:"Pixmap'd Buttons!" ~border_width:10 () in - window#connect#destroy ~callback:Main.quit; - let button = GButton.button ~packing:window#add () in - button#connect#clicked ~callback: - (fun () -> prerr_endline "Hello again - cool button was pressed"); - xpm_label_box ~window ~file:"test.xpm" ~text:"cool button" - ~packing:button#add (); - window#show (); - Main.main () - -let _ = main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/calc.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/calc.ml deleted file mode 100644 index 405d1bf87..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/calc.ml +++ /dev/null @@ -1,114 +0,0 @@ -(* $Id$ *) - -(* A simple calculator ported from LablTk to LablGtk *) - -let mem_string ~char s = - try - for i = 0 to String.length s -1 do - if s.[i] = char then raise Exit - done; false - with Exit -> true - -let ops = ['+',(+.); '-',(-.); '*',( *.); '/',(/.)] - -(* The abstract calculator class. Does not use Gtk *) - -class virtual calc = object (calc) - val mutable x = 0.0 - val mutable op = None - val mutable displaying = true - - method virtual set : string -> unit - method virtual get : string - method virtual quit : unit -> unit - method insert s = calc#set (calc#get ^ s) - method get_float = float_of_string (calc#get) - - initializer calc#set "0" - - method command s = - if s <> "" then match s.[0] with - '0'..'9' -> - if displaying then (calc#set ""; displaying <- false); - calc#insert s - | '.' -> - if displaying then - (calc#set "0."; displaying <- false) - else - if not (mem_string ~char:'.' calc#get) then calc#insert s - | '+'|'-'|'*'|'/' as c -> - displaying <- true; - begin match op with - None -> - x <- calc#get_float; - op <- Some (List.assoc c ops) - | Some f -> - x <- f x (calc#get_float); - op <- Some (List.assoc c ops); - calc#set (string_of_float x) - end - | '='|'\n'|'\r' -> - displaying <- true; - begin match op with - None -> () - | Some f -> - x <- f x (calc#get_float); - op <- None; - calc#set (string_of_float x) - end - | 'q' -> calc#quit () - | _ -> () -end - -(* Buttons for the calculator *) - -let m = - [|[|"7";"8";"9";"+"|]; - [|"4";"5";"6";"-"|]; - [|"1";"2";"3";"*"|]; - [|"0";".";"=";"/"|]|] - -(* The physical calculator. Inherits from the abstract one *) - -open GMain - -class calculator ?packing ?show () = - let table = GPack.table ~rows:5 ~columns:4 ~homogeneous:true ~show:false () in - object (calc) - inherit calc - - val label = - let frame = GBin.frame ~shadow_type:`IN () - ~packing:(table#attach ~left:0 ~top:0 ~right:4 ~expand:`BOTH) in - let evbox = GBin.event_box ~packing:frame#add () in - evbox#misc#set_style evbox#misc#style#copy; - evbox#misc#style#set_bg [`NORMAL,`WHITE]; - GMisc.label ~justify:`RIGHT ~xalign:0.95 ~packing:evbox#add () - val table = table - - method set = label#set_text - method get = label#text - method quit = Main.quit - - initializer - for i = 0 to 3 do for j = 0 to 3 do - let button = - GButton.button ~label:(" " ^ m.(i).(j) ^ " ") - ~packing:(table#attach ~top:(i+1) ~left:j ~expand:`BOTH) () in - button#connect#clicked ~callback:(fun () -> calc#command m.(i).(j)); - done done; - ignore (GObj.pack_return table ~packing ~show) - end - -(* Finally start everything *) - -let w = GWindow.window ~auto_shrink:true () - -let applet = new calculator ~packing: w#add () - -let _ = - w#connect#destroy ~callback: Main.quit; - w#event#connect#key_press - ~callback:(fun ev -> applet#command (GdkEvent.Key.string ev); true); - w#show (); - Main.main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/calendar.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/calendar.ml deleted file mode 100644 index 233c7449f..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/calendar.ml +++ /dev/null @@ -1,21 +0,0 @@ -(* $Id$ *) - -open GMain - -let main () = - let window = GWindow.window () in - window#connect#destroy ~callback:Main.quit; - - let calendar = GMisc.calendar ~packing:window#add () in - calendar#connect#day_selected ~callback: - begin fun () -> - let (year,month,day) = calendar#date in - Printf.printf "You selected %d/%d/%02d.\n" - day (month+1) (year mod 100); - flush stdout - end; - - window#show (); - Main.main () - -let _ = main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/clist.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/clist.ml deleted file mode 100644 index f900f1781..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/clist.ml +++ /dev/null @@ -1,51 +0,0 @@ -(* $Id$ *) - -open GMain - -let main () = - let window = GWindow.window ~title:"CList example" ~width:300 ~height:150 () in - window#connect#destroy ~callback:Main.quit; - - let vbox = GPack.vbox ~border_width:5 ~packing:window#add () in - - let hbox = GPack.hbox ~packing:vbox#add () in - let sb = - GRange.scrollbar `VERTICAL ~packing:(hbox#pack ~from:`END) () in - let clist = - GList.clist ~titles:["Ingredients";"Amount"] ~shadow_type:`OUT - ~packing:hbox#add ~vadjustment:sb#adjustment () in - clist#connect#select_row ~callback: - begin fun ~row ~column ~event -> - let text = clist#cell_text row column in - Printf.printf "You selected row %d. More specifically you clicked in column %d, and the text in this cell is %s\n\n" row column text; - flush stdout - end; - - let hbox = GPack.hbox ~packing:vbox#pack () in - - let button_add = GButton.button ~label:"Add List" ~packing:hbox#add () in - button_add#connect#clicked ~callback: - begin fun () -> - List.iter ~f:(fun t -> ignore (clist#append t)) - [ ["Milk"; "3 Oz"]; - ["Water"; "6 l"]; - ["Carrots"; "2"]; - ["Snakes"; "55"] ] - end; - - let button_clear = GButton.button ~label:"Clear List" ~packing:hbox#add () in - button_clear#connect#clicked ~callback:clist#clear; - - let button_hide_show = - GButton.button ~label:"Hide/Show titles" ~packing:hbox#add () in - let flag = ref false in - button_hide_show#connect#clicked ~callback: - begin fun () -> - clist#set_titles_show !flag; - flag := not !flag - end; - - window#show (); - Main.main () - -let _ = main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/combo.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/combo.ml deleted file mode 100644 index 9aff1b320..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/combo.ml +++ /dev/null @@ -1,23 +0,0 @@ -(* $Id$ *) - -open GMain - -let make_arrow_label combo ~label ~string = - let item = GList.list_item () in (* no packing here, it blocks GTK *) - let hbox = GPack.hbox ~spacing:3 ~packing:item#add () in - GMisc.arrow ~kind:`RIGHT ~shadow:`OUT ~packing:hbox#pack (); - GMisc.label ~text:label ~packing:hbox#pack (); - combo#set_item_string item string; - combo#list#add item; - item - -let main () = - let window = GWindow.window ~border_width:10 () in - window#connect#destroy ~callback:Main.quit; - let combo = GEdit.combo ~packing:window#add () in - make_arrow_label combo ~label:"First item" ~string:"1st item"; - make_arrow_label combo ~label:"Second item" ~string:"2nd item"; - window#show (); - Main.main () - -let _ = main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/csview.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/csview.ml deleted file mode 100644 index eaf8de18b..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/csview.ml +++ /dev/null @@ -1,155 +0,0 @@ -(* $Id$ *) - -(* A simple CSV data viewer *) - -type data = - { fields : string list; - titles : string list; - data : string list list } - -let mem_string ~char s = - try - for i = 0 to String.length s - 1 do - if s.[i] = char then raise Exit - done; - false - with Exit -> true - -let rec until ~chars ?(escapes="") ?(buf = Buffer.create 80) s = - match Stream.peek s with - Some c -> - if mem_string ~char:c escapes then begin - Stream.junk s; - Buffer.add_char buf (Stream.next s); - until ~chars ~escapes ~buf s - end else if mem_string ~char:c chars then - Buffer.contents buf - else begin - Buffer.add_char buf c; - Stream.junk s; - until ~chars ~escapes ~buf s - end - | None -> - if Buffer.length buf > 0 then raise (Stream.Error "until") - else raise Stream.Failure - -let rec ignores ?(chars = " \t") s = - match Stream.peek s with - Some c when mem_string ~char:c chars -> - Stream.junk s; ignores ~chars s - | _ -> () - -let parse_field = parser - [< ''"'; f = until ~chars:"\"" ~escapes:"\\"; ''"'; _ = ignores >] -> - for i = 0 to String.length f - 1 do - if f.[i] = '\031' then f.[i] <- '\n' - done; - f - | [< f = until ~chars:",\n\r" >] -> f - | [< >] -> "" - -let comma = parser [< '','; _ = ignores >] -> () - -let rec parse_list ~item ~sep = parser - [< i = item; s >] -> - begin match s with parser - [< _ = sep; l = parse_list ~item ~sep >] -> i :: l - | [< >] -> [i] - end - | [< >] -> [] - -let parse_one = parse_list ~item:parse_field ~sep:comma - -let lf = parser [< ''\n'|'\r'; _ = ignores ~chars:"\n\r"; _ = ignores >] -> () - -let parse_all = parse_list ~item:parse_one ~sep:lf - -let read_file file = - let ic = open_in file in - let s = Stream.of_channel ic in - let data = parse_all s in - close_in ic; - match data with - ("i"::fields) :: ("T"::titles) :: data -> - {fields=fields; titles=titles; data=List.map ~f:List.tl data} - | titles :: data -> - {fields=titles; titles=titles; data=data} - | _ -> failwith "Insufficient data" - -let print_string s = - Format.print_char '"'; - for i = 0 to String.length s - 1 do - match s.[i] with - '\'' -> Format.print_char '\'' - | '"' -> Format.print_string "\\\"" - | '\160'..'\255' as c -> Format.print_char c - | c -> Format.print_string (Char.escaped c) - done; - Format.print_char '"' - -(* -#install_printer print_string;; -*) - -open GMain - -let field_widths = - [ "i", 0; - "ATTR", 0; - "NAME", 17; - "NAPR", 8; - "TEL1", 14; - "ZIPC", 12; - "ADR1", 40; - "BRTH", 10; - "RMRK", 20; - "CHK1", 0; - "CHK2", 0; - "CHK3", 0; - "CHK4", 0; - "TIM1", 16; - "TIM2", 16; - "ALRM", 0; - "ATTM", 0; - ] - -let main argv = - if Array.length argv <> 2 then begin - prerr_endline "Usage: csview "; - exit 2 - end; - let data = read_file argv.(1) in - let w = GWindow.window () in - w#misc#realize (); - let style = w#misc#style in - let font = Gdk.Font.load_fontset "-schumacher-clean-medium-r-normal--13-*-*-*-c-60-*,-mnkaname-fixed-*--12-*" in - let w0 = Gdk.Font.char_width font '0' in - style#set_font font; - w#connect#destroy ~callback:Main.quit; - let sw = GBin.scrolled_window ~width:600 ~height:300 ~packing:w#add () in - let cl = GList.clist ~titles:data.titles ~packing:sw#add () in - List.fold_left data.fields ~init:0 ~f: - begin fun acc f -> - let width = try List.assoc f field_widths with Not_found -> -1 in - if width = 0 then - cl#set_column ~visibility:false acc - else begin - if width > 0 then cl#set_column ~width:(width * w0) acc - else cl#set_column ~auto_resize:true acc; - if f = "NAPR" || f = "TIM1" || f = "CLAS" then - cl#set_sort ~auto:true ~column:acc (); - try - let ali = GBin.alignment_cast (cl#column_widget acc) in - let lbl = GMisc.label_cast (List.hd ali#children) in - lbl#set_alignment ~x:0. () - with _ -> - prerr_endline ("No column widget for field " ^ f) - end; - succ acc - end; - List.iter data.data - ~f:(fun l -> if List.length l > 1 then ignore (cl#append l)); - w#show (); - Main.main () - -let _ = main Sys.argv diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/dcalendar.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/dcalendar.ml deleted file mode 100644 index 6128506b4..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/dcalendar.ml +++ /dev/null @@ -1,247 +0,0 @@ -(* $Id$ *) - -(* A small calendar *) -(* Needs Unix module, so use with lablgtk_t *) - -open Printf - -type date = { mutable year: int; mutable mon: int; mutable mday: int } - - (* Load the schedule data *) -let calendar_file = Filename.concat (Sys.getenv "HOME") ".camlendar" - -let schedule = - try - let ichan = open_in calendar_file in - let (s : (int * int * int, string) Hashtbl.t) = - Marshal.from_channel ichan in - close_in ichan; - s - with Sys_error msg -> - prerr_endline msg; flush stderr; - Hashtbl.create 13;; - - (* Saves the schedule data when the application terminates *) -at_exit (fun () -> - let ochan = open_out calendar_file in - Marshal.to_channel ochan schedule ~mode: []; - close_out ochan);; - - (* date: Current date initialized to "today" *) -let date = - let tm = Unix.localtime (Unix.time ()) in - { year = 1900 + tm.Unix.tm_year; mon = tm.Unix.tm_mon; mday = 1 } - - - (* previous_month, next_month: change application status *) -let previous_month () = - date.mday <- 1; - if date.mon = 0 then - (date.year <- date.year - 1; date.mon <- 11) - else date.mon <- date.mon - 1 - -let next_month () = - date.mday <- 1; - if date.mon = 11 then (date.year <- date.year + 1; date.mon <- 0) - else date.mon <- date.mon + 1 - - (* leap, mon_name, wday_name: Calendar related function and data *) -let leap year = - (year mod 400 = 0) or - (year mod 4 = 0) & (year mod 100 <> 0) - -let mdays_in_month = [|31; 28; 31; 30; 31; 30; 31; 31; 30; 31; 30; 31|] - -let mon_name = - [|"Jan"; "Feb"; "Mar"; "Apr"; "May"; "Jun"; - "Jul"; "Aug"; "Sep"; "Oct"; "Nov"; "Dec"|] - -let wday_name = - [|"Sun"; "Mon"; "Tue"; "Wed"; "Thu"; "Fri"; "Sat"|] - -let s_normal = 0 and s_focused = 1 and s_planned = 2 -let styles = - let default = (Obj.magic () : GObj.style) in - [| default; default; default |] - - (* class date_button: one button for each day in the month *) -class date_button i (calendar : GPack.table) = - let mday = i + 1 in - - object (self) - val widget = GButton.button ~label: (string_of_int mday) ~show: false () - val mday = mday - val mutable show = false - val mutable have_plan = false - - method widget = widget - method focus_on = - date.mday <- mday; - widget#misc#set_style styles.(s_focused) - method focus_off = - widget#misc#set_style styles.(if have_plan then s_planned else s_normal) - method set_plan = - have_plan <- true; - widget#misc#set_style styles.(s_planned) - method unset_plan = - have_plan <- false; - widget#misc#set_style styles.(s_normal) - - method show wday0 = - if not show then - let top = (mday + wday0) / 7 + 1 - and left = (mday + wday0) mod 7 in - calendar#attach ~left ~top ~expand:`BOTH widget#coerce; - widget#misc#show (); - show <- true - - method hide = - if show then - (widget#misc#hide (); - calendar#remove widget#coerce; - show <- false) - end - -let update_calendar (calendar : GPack.table) (buttons : date_button array) = - let now = Unix.localtime (Unix.gettimeofday ()) in - let _, first = Unix.mktime { now with - Unix.tm_mday = 1; - Unix.tm_mon = date.mon; - Unix.tm_year = date.year - 1900 } in - - (* wday0: day of the week of the zero'th day in the month *) - let wday0 = (first.Unix.tm_wday - 1 + 7) mod 7 in - - let ndays = - if date.mon = 1 & leap date.year then mdays_in_month.(date.mon) + 1 - else mdays_in_month.(date.mon) in - - Array.iter ~f: (fun button -> button#hide) - buttons; - - for i = 0 to ndays - 1 do buttons.(i)#show wday0 done - -let create_GUI () = - - (* views part *) - - let win = - GWindow.window ~title: "Camlendar" ~show: true - ~allow_shrink: false ~allow_grow: false () in - win#event#connect#delete - ~callback: (fun _ -> GMain.Main.quit (); exit 0; false); - - let style = win#misc#style#copy in - styles.(s_normal) <- style; - - let style = style#copy in - style#set_bg [`NORMAL, `NAME "light green"; - `PRELIGHT, `NAME "light green"]; - styles.(s_focused) <- style; - - styles.(s_focused) <- style; - let style = style#copy in - style#set_bg [`NORMAL, `NAME "sky blue"; - `PRELIGHT, `NAME "sky blue"]; - styles.(s_planned) <- style; - - let vbox = GPack.vbox ~packing: win#add () in - let packing = vbox#add in - let toolbar = GButton.toolbar ~style: `TEXT ~packing () in - - let prev = - toolbar#insert_button ~text: "Prev" ~tooltip: "Show previous month" () in - let next = - toolbar#insert_button ~text: "Next" ~tooltip: "Show next month" () in - - let calendar = - GPack.table ~homogeneous: true ~rows: 7 ~columns: 7 - ~border_width: 10 ~row_spacings: 2 ~col_spacings: 2 ~packing () in - - Array.iteri - ~f: (fun i wday -> - ignore (GButton.button ~label: wday - ~packing:(calendar#attach ~top: 0 ~left: i ~expand:`BOTH) ())) - wday_name; - - let buttons = - Array.init 31 ~f: (fun i -> new date_button i calendar) in - - let date_view = GMisc.label ~justify: `CENTER ~packing () in - - let text = GEdit.text ~editable: true ~width: 70 ~height: 50 ~packing () in - - (* Controls part *) - - let save_text () = - let data = text#get_chars ~start: 0 ~stop: text#length in - let key = (date.year, date.mon, date.mday) in - Hashtbl.remove schedule key; - if data <> "" then - (Hashtbl.add schedule ~key ~data; - buttons.(date.mday - 1)#set_plan) - else buttons.(date.mday - 1)#unset_plan in - - let restore_text () = - text#delete_text ~start: 0 ~stop: text#length; - try - text#insert_text ~pos: 0 - (Hashtbl.find schedule (date.year, date.mon, date.mday)); - () - with Not_found -> () in - - let update_date_view () = - date_view#set_text (sprintf "%d %s, %d\n" - date.mday mon_name.(date.mon) date.year) in - - let update_view () = - update_calendar calendar buttons; - update_date_view (); - Array.iteri ~f: (fun i button -> - (try - Hashtbl.find schedule (date.year, date.mon, i + 1); - button#set_plan - with Not_found -> button#unset_plan); - button#focus_off) buttons; - win#set_title (sprintf "Camlendar: %s, %d" - mon_name.(date.mon) date.year) in - - prev#connect#clicked - ~callback: (fun () -> - save_text (); - previous_month (); - - update_view (); - restore_text (); - buttons.(0)#focus_on); - - next#connect#clicked - ~callback: (fun () -> - save_text (); - next_month (); - - update_view (); - restore_text (); - buttons.(0)#focus_on); - - Array.iteri - ~f: (fun i button -> - button#widget#connect#clicked - ~callback: (fun () -> - save_text (); - buttons.(date.mday - 1)#focus_off; - - button#focus_on; - restore_text (); - update_date_view ()); - ()) - buttons; - - update_view (); - buttons.(0)#focus_on;; - -GMain.Main.init (); -print_endline (GtkMain.Main.set_locale ()); -flush stdout; -create_GUI (); -GMain.Main.main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/drawing.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/drawing.ml deleted file mode 100644 index a4623bae0..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/drawing.ml +++ /dev/null @@ -1,19 +0,0 @@ -(* $Id$ *) - -open GMain - -let window = GWindow.window ~show:true () - -let w = window#misc#window -let drawing = new GDraw.drawable w - -let redraw _ = - drawing#polygon ~filled:true - [ 10,100; 35,35; 100,10; 165,35; 190,100; - 165,165; 100,190; 35,165; 10,100 ]; - false - -let _ = - window#connect#destroy ~callback:Main.quit; - window#event#connect#after#configure ~callback:redraw; - Main.main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/editor.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/editor.ml deleted file mode 100644 index 5e3da80cd..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/editor.ml +++ /dev/null @@ -1,101 +0,0 @@ -(* $Id$ *) - -open GMain - -let file_dialog ~title ~callback ?filename () = - let sel = - GWindow.file_selection ~title ~modal:true ?filename () in - sel#cancel_button#connect#clicked ~callback:sel#destroy; - sel#ok_button#connect#clicked ~callback: - begin fun () -> - let name = sel#get_filename in - sel#destroy (); - callback name - end; - sel#show () - -class editor ?packing ?show () = object (self) - val text = GEdit.text ~editable:true ?packing ?show () - val mutable filename = None - - method text = text - - method load_file name = - try - let ic = open_in name in - filename <- Some name; - text#freeze (); - text#delete_text ~start:0 ~stop:text#length; - let buf = String.create 1024 and len = ref 0 in - while len := input ic ~buf ~pos:0 ~len:1024; !len > 0 do - if !len = 1024 then text#insert buf - else text#insert (String.sub buf ~pos:0 ~len:!len) - done; - text#set_point 0; - text#thaw (); - close_in ic - with _ -> () - - method open_file () = file_dialog ~title:"Open" ~callback:self#load_file () - - method save_dialog () = - file_dialog ~title:"Save" ?filename - ~callback:(fun file -> self#output ~file) () - - method save_file () = - match filename with - Some file -> self#output ~file - | None -> self#save_dialog () - - method output ~file = - try - if Sys.file_exists file then Sys.rename ~src:file ~dst:(file ^ "~"); - let oc = open_out file in - output_string oc (text#get_chars ~start:0 ~stop:text#length); - close_out oc; - filename <- Some file - with _ -> prerr_endline "Save failed" -end - -let window = GWindow.window ~width:500 ~height:300 ~title:"editor" () -let vbox = GPack.vbox ~packing:window#add () - -let menubar = GMenu.menu_bar ~packing:vbox#pack () -let factory = new GMenu.factory menubar -let accel_group = factory#accel_group -let file_menu = factory#add_submenu "File" -let edit_menu = factory#add_submenu "Edit" - -let hbox = GPack.hbox ~packing:vbox#add () -let editor = new editor ~packing:hbox#add () -let scrollbar = GRange.scrollbar `VERTICAL ~packing:hbox#pack () - -open GdkKeysyms - -let _ = - window#connect#destroy ~callback:Main.quit; - let factory = new GMenu.factory file_menu ~accel_group in - factory#add_item "Open..." ~key:_O ~callback:editor#open_file; - factory#add_item "Save" ~key:_S ~callback:editor#save_file; - factory#add_item "Save as..." ~callback:editor#save_dialog; - factory#add_separator (); - factory#add_item "Quit" ~key:_Q ~callback:window#destroy; - let factory = new GMenu.factory edit_menu ~accel_group in - factory#add_item "Copy" ~key:_C ~callback:editor#text#copy_clipboard; - factory#add_item "Cut" ~key:_X ~callback:editor#text#cut_clipboard; - factory#add_item "Paste" ~key:_V ~callback:editor#text#paste_clipboard; - factory#add_separator (); - factory#add_check_item "Word wrap" ~active:false - ~callback:editor#text#set_word_wrap; - factory#add_check_item "Read only" ~active:false - ~callback:(fun b -> editor#text#set_editable (not b)); - window#add_accel_group accel_group; - editor#text#event#connect#button_press - ~callback:(fun ev -> - let button = GdkEvent.Button.button ev in - if button = 3 then begin - file_menu#popup ~button ~time:(GdkEvent.Button.time ev); true - end else false); - editor#text#set_vadjustment scrollbar#adjustment; - window#show (); - Main.main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/entry.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/entry.ml deleted file mode 100644 index 30f3c3dd8..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/entry.ml +++ /dev/null @@ -1,48 +0,0 @@ -(* $Id$ *) - -open Printf -open GMain - -let enter_callback entry = - printf "Entry contents: %s\n" entry#text; - flush stdout - -let entry_toggle_editable button entry = - entry#set_editable button#active - -let entry_toggle_visibility button entry = - entry#set_visibility button#active - -let main () = - - let window = GWindow.window ~title: "GTK Entry" ~width: 200 ~height: 100 () in - window#connect#destroy ~callback:Main.quit; - - let vbox = GPack.vbox ~packing: window#add () in - - let entry = GEdit.entry ~max_length: 50 ~packing: vbox#add () in - entry#connect#activate ~callback:(fun () -> enter_callback entry); - entry#set_text "Hello"; - entry#append_text " world"; - entry#select_region ~start:0 ~stop:entry#text_length; - - let hbox = GPack.hbox ~packing: vbox#add () in - - let check = GButton.check_button ~label: "Editable" ~active: true - ~packing: hbox#add () in - check#connect#toggled ~callback:(fun () -> entry_toggle_editable check entry); - - let check = - GButton.check_button ~label:"Visible" ~active:true ~packing:hbox#add () in - check#connect#toggled - ~callback:(fun () -> entry_toggle_visibility check entry); - - let button = GButton.button ~label: "Close" ~packing: vbox#add () in - button#connect#clicked ~callback:window#destroy; - button#grab_default (); - - window#show (); - - Main.main () - -let _ = main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/events.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/events.ml deleted file mode 100644 index 91a9872af..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/events.ml +++ /dev/null @@ -1,25 +0,0 @@ -(* $Id$ *) - -open GMain - -let _ = - let window = GWindow.window () in - window#connect#destroy ~callback:Main.quit; - - let text = GEdit.text ~editable:true ~packing:window#add () in - text#event#connect#button_press ~callback: - begin fun ev -> - GdkEvent.Button.button ev = 3 && - GdkEvent.get_type ev = `BUTTON_PRESS && - begin - let pos = text#position in - GdkEvent.Button.set_button ev 1; - text#event#send (GdkEvent.coerce ev); - Printf.printf "Position is %d.\n" text#position; - flush stdout; - text#set_position pos; - true - end - end; - window#show (); - Main.main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/fifteen.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/fifteen.ml deleted file mode 100644 index efdf51fc2..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/fifteen.ml +++ /dev/null @@ -1,97 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open GObj -open GMain - -class position ~init_x ~init_y ~min_x ~min_y ~max_x ~max_y = object - val mutable x = init_x - val mutable y = init_y - method current = (x, y) - method up () = if y > min_y then y <- y-1 else (); (x, y) - method down () = if y < max_y then y <- y+1 else (); (x, y) - method left () = if x > min_x then x <- x-1 else (); (x, y) - method right () = if x < max_x then x <- x+1 else (); (x, y) -end - -let game_init () = (* generate initial puzzle state *) - let rec game_aux acc rest n_invert = - let len = List.length rest in - if len=0 then - if n_invert mod 2 = 0 then - acc (* to be solvable, n_invert must be even *) - else - (List.hd (List.tl acc))::(List.hd acc)::(List.tl (List.tl acc)) - else begin - let rec extract n xs = - if (n=0) then (List.hd xs, List.tl xs) - else - let (ans, ys) = extract (n-1) (List.tl xs) in - (ans, List.hd xs :: ys) in - let ran = Random.int len in - let (elm, rest1) = extract ran rest in - let rec count p xs = match xs with - [] -> 0 - | y :: ys -> let acc = count p ys in - if p y then 1+acc else acc - in - let new_n_invert = count (fun x -> elm > x) acc in - game_aux (elm :: acc) rest1 (n_invert+new_n_invert) - end in - let rec from n = if n=0 then [] else n :: from (n-1) in - game_aux [] (from 15) 0 - -let _ = Random.init (int_of_float (Sys.time () *. 1000.)) -let window = GWindow.window () -let _ = window#connect#destroy ~callback:GMain.Main.quit - -let tbl = GPack.table ~rows:4 ~columns:4 ~homogeneous:true ~packing:window#add () -let dummy = GMisc.label ~text:"" ~packing:(tbl#attach ~left:3 ~top:3) () -let arr = Array.create_matrix ~dimx:4 ~dimy:4 dummy -let init = game_init () -let _ = - for i = 0 to 15 do - let j = i mod 4 in - let k = i/4 in - let frame = - GBin.frame ~shadow_type:`OUT ~width:32 ~height:32 - ~packing:(tbl#attach ~left:j ~top:k) () in - if i < 15 then - arr.(j).(k) <- - GMisc.label ~text:(string_of_int (List.nth init i)) - ~packing:frame#add () - done -let pos = new position ~init_x:3 ~init_y:3 ~min_x:0 ~min_y:0 ~max_x:3 ~max_y:3 - -open GdkKeysyms - -let _ = - window#event#connect#key_press ~callback: - begin fun ev -> - let (x0, y0) = pos#current in - let wid0 = arr.(x0).(y0) in - let key = GdkEvent.Key.keyval ev in - if key = _q || key = _Escape then (Main.quit (); exit 0) else - let (x1, y1) = - if key = _h || key = _Left then - pos#right () - else if key = _j || key = _Down then - pos#up () - else if key = _k || key = _Up then - pos#down () - else if key = _l || key = _Right then - pos#left () - else (x0, y0) - in - let wid1 = arr.(x1).(y1) in - wid0#set_text (wid1#text); - wid1#set_text ""; - true - end - -let main () = - window#show (); - Main.main () - -let _ = main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/fixed_editor.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/fixed_editor.ml deleted file mode 100644 index 1cde124c7..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/fixed_editor.ml +++ /dev/null @@ -1,279 +0,0 @@ -open Gdk -open Gtk -open GObj -open GMain - -let dnd_source_window () = - let window = GWindow.window ~position:`MOUSE () in - let vbx = GPack.vbox ~border_width:10 ~packing:window#add () - in - let evb = GBin.event_box ~border_width:0 ~packing:vbx#add () in - let frm = GBin.frame ~shadow_type:`OUT ~packing:evb#add () in - let lbl = GMisc.label ~text:"hello" ~packing:frm#add () in - let lbl2 = GMisc.label ~text:"drag from here!" ~packing:vbx#add () in - let targets = [ { target = "STRING"; flags = []; info = 0} ] in - begin - window#show (); - evb#drag#source_set targets ~modi:[`BUTTON1] ~actions:[`COPY]; - evb#drag#connect#data_get ~callback: begin - fun _ data ~info ~time:_ -> - data#set ~typ:data#target ~format:0 ~data:"hello! " - end - end - -let corner_width = 7 -let corner_height = 7 - -type drag_action_type = - GB_DRAG_NONE - | GB_MIDDLE - | GB_TOP - | GB_BOTTOM - | GB_LEFT - | GB_RIGHT - | GB_TOP_LEFT - | GB_TOP_RIGHT - | GB_BOTTOM_LEFT - | GB_BOTTOM_RIGHT - -let get_position_in_widget w ~x ~y ~width ~height = - if (x <= corner_width) then - if (y <= corner_height) then - GB_TOP_LEFT - else if (y >= height-corner_width) then - GB_BOTTOM_LEFT - else GB_LEFT - else if (x >= width-corner_width) then - if (y <= corner_height) then - GB_TOP_RIGHT - else if (y >= height-corner_width) then - GB_BOTTOM_RIGHT - else GB_RIGHT - else if (y <= corner_height) then - GB_TOP - else if (y >= height-corner_width) then - GB_BOTTOM - else GB_MIDDLE - -class drag_info = object - val mutable drag_action = GB_DRAG_NONE - val mutable drag_offset = (0, 0) - val mutable toimen = (0, 0) - val mutable drag_widget = None - method drag_action = drag_action - method drag_offset = drag_offset - method toimen = toimen (* coord. of opposite corner *) - method set_drag_widget (w : GObj.widget) = begin - match drag_widget with - None -> begin - GMain.Grab.add w; - drag_widget <- Some w; - () - end - | Some w -> () - end - method unset_drag_widget () = begin - match drag_widget with - Some w -> begin - GMain.Grab.remove w; - drag_widget <- None; - () - end - | None -> () - end - method set_drag_offset ~x ~y = drag_offset <- (x, y) - method set_drag_action (w : Gdk.window) ~x ~y = - begin - let (x0, y0) = Window.get_position w in - let (width, height) = Window.get_size w in - drag_action <- get_position_in_widget w ~x ~y ~width ~height; - let (x1, y1) = (x0+width, y0+height) in - toimen <- - match drag_action with - GB_TOP_LEFT -> (x1, y1) - | GB_BOTTOM_LEFT -> (x1, y0) - | GB_TOP_RIGHT -> (x0, y1) - | GB_BOTTOM_RIGHT -> (x0, y0) - | GB_TOP -> (x0, y1) - | GB_BOTTOM -> (x0, y0) - | GB_LEFT -> (x1, y0) - | GB_RIGHT -> (x0, y0) - | _ -> (-1, -1) - end - method unset_drag_action () = drag_action <- GB_DRAG_NONE -end - - -let to_grid g x = x - (x mod g) - -let to_grid2 g (x, y) = (to_grid g x, to_grid g y) - -class fix_editor ~width ~height ~packing = - let info = new drag_info in - let fix = GPack.fixed ~width ~height ~packing () in - let _ = fix#misc#realize () in - let fix_window = fix#misc#window in - let fix_drawing = new GDraw.drawable fix_window in - - object (self) - inherit GObj.widget fix#as_widget - val mutable grid = 1 - method set_grid g = - if (grid != g) then begin - let pix = - GDraw.pixmap ~window:fix ~width:g ~height:g ~mask:true () in - let c = fix#misc#style#bg `NORMAL in - pix#set_foreground (`COLOR c); - pix#rectangle ~filled:true ~x:0 ~y:0 ~width:g ~height:g (); - pix#set_foreground `BLACK; - pix#point ~x:0 ~y:0; - Gdk.Window.set_back_pixmap (fix#misc#window) (`PIXMAP pix#pixmap) - end; - grid <- g - - method new_child ~name ~x ~y ~width ~height ~callback = - let evb = GBin.event_box ~border_width:0 ~packing:fix#add () in - let lbl = GMisc.label ~text:name ~width ~height ~packing:evb#add () in - evb#misc#realize (); - evb#misc#set_geometry ~x ~y (); - self#connect_signals ~ebox:evb ~widget:lbl#coerce ~callback; - () - - method private connect_signals - ~ebox:(ebox : GBin.event_box) ~widget:(widget : widget) ~callback:cbfun = - let drawing = new GDraw.drawable (ebox#misc#window) in - let draw_id = ref None in - let exps_id = ref None in - let on_paint _ = - let (width, height) = Window.get_size (ebox#misc#window) in begin - drawing#set_foreground `BLACK; - drawing#rectangle ~filled:true ~x:0 ~y:0 - ~width:corner_width ~height:corner_height (); - drawing#rectangle ~filled:true ~x:(width-corner_width) ~y:0 - ~width:corner_width ~height:corner_height (); - drawing#rectangle ~filled:true - ~x:(width-corner_width) - ~y:(height-corner_height) - ~width:corner_width ~height:corner_height (); - drawing#rectangle ~filled:true - ~x:0 - ~y:(height-corner_height) - ~width:corner_width ~height:corner_height (); - drawing#rectangle ~filled:false - ~x:0 ~y:0 ~width:(width-1) ~height:(height-1) (); - end - in - ebox#event#connect#button_press ~callback: - begin fun ev -> - let bx = int_of_float (GdkEvent.Button.x ev) in - let by = int_of_float (GdkEvent.Button.y ev) in - info#set_drag_action (ebox#misc#window) ~x:bx ~y:by; - info#set_drag_offset ~x:bx ~y:by; - true - end; - ebox#event#connect#motion_notify ~callback: - begin fun ev -> - info#set_drag_widget ebox#coerce; - let action = info#drag_action in - let (mx, my) = fix#misc#pointer in - let (ox, oy) = info#drag_offset in - begin match action with - GB_MIDDLE -> - let (nx, ny) = to_grid2 grid (mx-ox, my-oy) in - ebox#misc#set_geometry ~x:nx ~y:ny (); - if cbfun ~x:nx ~y:ny ~width:(-2) ~height:(-2) then - () - else (* should we undo ? *) () - | GB_DRAG_NONE -> () (* do nothing *) - | GB_TOP_LEFT | GB_BOTTOM_LEFT - | GB_TOP_RIGHT | GB_BOTTOM_RIGHT -> - let (toi_x, toi_y) = info#toimen in - let (mx, my) = to_grid2 grid (mx, my) in - let (lx, rx) = - if mx - let (lx, toi_y) = info#toimen in - let my = to_grid grid my in - let (ty, by) = if my - let (toi_x, ty) = info#toimen in - let mx = to_grid grid mx in - let (lx, rx) = if mx - info#unset_drag_action (); - info#unset_drag_widget (); - true - end; - exps_id := Some (ebox#event#connect#after#expose - ~callback:(fun _ -> on_paint(); false)); - draw_id := Some (ebox#misc#connect#draw ~callback:on_paint); - () - initializer - fix#drag#dest_set ~actions:[`COPY] - [ { target = "STRING"; flags = []; info = 0} ]; - fix#drag#connect#data_received ~callback: begin - fun context ~x ~y data ~info ~time -> - let name = data#data in - let _ = self#new_child ~name ~x ~y ~width:32 ~height:32 - ~callback:(fun ~x ~y ~width ~height -> true) in -(* Printf.printf "%s %d %d\n" (data#data) x y; - flush stdout; *) - context#finish ~success:true ~del:false ~time; - end; - () - end - -(* the following is for test only *) -let window1 () = - let window = GWindow.window () in - let _ = window#connect#destroy ~callback: Main.quit in - let fix = new fix_editor ~width:640 ~height:480 ~packing:window#add in - fix#set_grid 5; - let setter = fix#new_child ~name:"hello" ~x:100 ~y:200 ~width:32 ~height:32 - ~callback:begin fun ~x ~y ~width ~height -> - (* Printf.printf "name=%s, x=%d, y=%d, width=%d, height=%d\n" - "hello" x y width height; - flush stdout; *) - true - end in - window#show (); - () - - - -let main () = - window1 (); - dnd_source_window (); - Main.main () - -let _ = main () - -(* Todo - - change mouse cursor - resize fixed itself - remove_child - (drag and) drop - -*) diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/fixpoint.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/fixpoint.ml deleted file mode 100644 index c33b74d5d..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/fixpoint.ml +++ /dev/null @@ -1,30 +0,0 @@ -(* $Id$ *) - -open GMain - -let rec fix ~f ~eq x = - let x' = f x in - if eq x x' then x - else fix ~f ~eq x' - -let eq_float x y = abs_float (x -. y) < 1e-13 - -let _ = - let top = GWindow.window () in - top#connect#destroy ~callback:Main.quit; - let vbox = GPack.vbox ~packing: top#add () in - let entry = GEdit.entry ~max_length: 20 ~packing: vbox#add () in - let tips = GData.tooltips () in - tips#set_tip entry#coerce ~text:"Initial value for fix-point"; - let result = - GEdit.entry ~max_length: 20 ~editable: false ~packing: vbox#add () in - - entry#connect#activate ~callback: - begin fun () -> - let x = try float_of_string entry#text with _ -> 0.0 in - entry#set_text (string_of_float (cos x)); - let res = fix ~f:cos ~eq:eq_float x in - result#set_text (string_of_float res) - end; - top#show (); - Main.main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/hello.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/hello.ml deleted file mode 100644 index 15ede9a49..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/hello.ml +++ /dev/null @@ -1,18 +0,0 @@ -(* $Id$ *) - -open GMain - -let window = GWindow.window ~border_width: 10 () - -let button = GButton.button ~label:"Hello World" ~packing: window#add () - -let main () = - window#event#connect#delete - ~callback:(fun _ -> prerr_endline "Delete event occured"; true); - window#connect#destroy ~callback:Main.quit; - button#connect#clicked ~callback:(fun () -> prerr_endline "Hello World"); - button#connect#clicked ~callback:window#destroy; - window#show (); - Main.main () - -let _ = Printexc.print main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/image.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/image.ml deleted file mode 100644 index faf82cf44..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/image.ml +++ /dev/null @@ -1,67 +0,0 @@ -(* $Id$ *) - -open GMain -open Gdk - -(* load image *) -let buf = String.create (256*256*3) -let ic = open_in_bin "image256x256.rgb" -let _ = - really_input ic ~buf:buf ~pos:0 ~len:(256*256*3); - close_in ic - -let rgb_at x y = - let offset = (y * 256 + x) * 3 in - (int_of_char buf.[offset ], - int_of_char buf.[offset+1], - int_of_char buf.[offset+2]) - -(* let id = Thread.create GtkThread.main () *) - -(* Choose a visual appropriate for RGB *) -let _ = - Gdk.Rgb.init (); - GtkBase.Widget.set_default_visual (Gdk.Rgb.get_visual ()); - GtkBase.Widget.set_default_colormap (Gdk.Rgb.get_cmap ()) - -(* We need show: true because of the need of visual *) -let window = GWindow.window ~show:true ~width: 256 ~height: 256 () - -let visual = window#misc#visual - -let color_create = Truecolor.color_creator visual - -let w = window#misc#window -let drawing = new GDraw.drawable w - -let _ = - window#connect#destroy ~callback:Main.quit; - - let image = - Image.create ~kind: `FASTEST ~visual: visual ~width: 256 ~height: 256 - in - - let draw () = - for x = 0 to 255 do - for y = 0 to 255 do - let r,g,b = rgb_at x y in - Image.put_pixel image ~x: x ~y: y - ~pixel: (color_create ~red: (r * 256) ~green: (g * 256) ~blue: (b * 256)) - done - done - in - - let display () = - drawing#image image ~xsrc:0 ~ysrc:0 ~xdest:0 ~ydest:0 ~width:256 ~height:256 - in - - draw (); - - window#event#connect#after#expose ~callback: - begin fun _ -> - display (); false - end; - (* Thread.join id *) - - window#show (); - Main.main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/image256x256.rgb b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/image256x256.rgb deleted file mode 100644 index 25d499594..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/image256x256.rgb +++ /dev/null @@ -1,19 +0,0 @@ -”·â•ºÝ›±Ï“­ÐŸÒŸ¤ÃŸ¦Î¤¦Ûª¤ÎªªÚ¯ž×¤•Ð¡™Ô±¬â­©Þ®§çž®Ðš¶É”¸Ë¡¶¼¥®Å¢³Ó ´Îª½Æ¨¼Ó¬·Ó¶´ÏµÀÆ´°¼¬¾À·³ÄÄö¾½ÂÇÀ¼¿½·ÆĹÑÆÁÂÏ·ÃÌÅÍÉÙ¼ÍÓ¿ÊÁÆÏÇÄãÍÕßÏØÕÍÎÜÌÇãÑÑâÙÔ×ÚÈâÈÔÜÄÌØÈÒÒÇÍ×ÃÅÛÁÍáÇËàÊËêËÚð½×ïÅáíËÞõ¼ñø¿âã·Úæ¾ÜÙÈáâÅÜÙÃÖ×®Ö̳ÞȱØÉ·ÍÔ²ÑØ«ÑÑ¡Î͎ÒܗÔ،à͑ÖʏϼƒÉ¼ˆÎ¼ˆÝÁÔËzãÇwØɀÚÆ{âÎçӉÝׅáׂÖÜÓފÙԓØ،Ó؂Îá†ÎÒ|ÛàsÓÛzÞ×ráÙyàÔs×Üi×ØgäÆkåÑoÜÏ_áÍdàÈR߸C׸?Ö´GÙ°WÚ°Kç¸EÚ·YÜÊ]ÞÂOÕ¿;Ù½@ÞÃHâË9íÇ<éË@ðÇ8éÉAè´@æ·AòÌ9ÝÄ7é´@ܲ?Þ½Eä¯CÙ²RάLЯPÒ¡RЩ]̨RÀ¿UÀ²XÉ©FÌ´JϱPŹFËÁJÄ¿FÆÄQȼDÒ°OÔ­DدHÒ³PѵPɶYÐÄ^Ë¿WÙ¬PΞ[ѧWتOˬWͨY͘ZΝdØ£ZÌ·XÁ°EŹPε\Ï®N½»T½³Y´ÃY¶¸N¹¶D°³S±¨Y«¨Mª¬U¦¬[§®@ª®T ¯M¥¢M£žZ œG¬‘E£‘K¥Y¢ŒK·[¨…S¦—EžN§`¡–R˜XŸƒ[‘†Qš‚Sš‘R™‡U§€W©€Tœ‡J¢~Qœ~C–tO”iL•rS”tN©lPªoJ¢zT¯pB¥qIž[M lC«gC¤lD±cC³YTÁSI¸OQ´IBÀIE»ZK»OE¸QH°WU¬TK«QG¹VK®TGºV?¬MD¶Z[¾MGÂUK»ZK²QO½NX¸JZÁHP³KV½J[¼ESÀF]Ä@WÆ;VÆ;\·àš´Ù—«Ò”¬Õ™ Î£¥Ê¥±Ë¡­Ø¤«Ñª«Ù¬¤Ò¦›Ñ¯šÝ¬ ×«¦×¦§Û›«Êž¸Å—®Æ ²À§¾Èª¹Î±¾ÅªÀÆ£Æ˨Á͸¹Ç½¼½¾·¸®²¼½µ»½Â²¼È³ÄÄÀÍ·ÂÌ»ÀǽÀÂË¿ÁÀÃÁÃÑÌÐÍÅÐÉÈÞËËÞÀÓßËÐØÌÇäοáÔÄÕÖÒÚÑÍÐÎÑÓËËÑËÐÑÒÆÖÇÄØËÓÙÄÑÞÊÙèÉÛò½á÷ÃÛîÄãö½ëõ¶èé´ÚáÁåݸáá¾ÜØ»ÞׯÓ˳ÒƸÊɳÏÑ°ÍÈ£Ç͝Æ֙È׏ÎƖÙŌÔ•ÌŏÐʖϾÌȊÚσäÉ~ÝÆxÝÆzè׃ãÖ~ßà…Ù܁Ù߈ÑیÑˎÎבÏׅÎÕxÓØyÙÏÙÔzÞØnßÚmÔânÙØmÙÑfèÓpÚÕmÝÉjèÂ_ã¾Oç·Oä¹IزUÓ¯VÙºQâ»Kß½MÖÈVÓÁP×À@àÁ>ä¾=ðÀ;ñÌEîÒ8íÌ4êË@ïºDêÀCëÄ4íÄ9ÝÀ8ܹ?æ´BÝ«RݧPѲIË®SØ®QÔ¤\ϵQõUϯLÏ«PβDĵDƶ?ηHÒ±RɺKDZRÏ·K̼GЯHÒ¶HÌ®V׿\ÖÀRÛ±XѨUП[Æ OÀ¤YɬTҝS֟SÛ§PÕ®ZÔ´WƱIʺLβZÉ»bÅ´Z»¸^±¹U¹ªHº¬D±ªAª¨I±­U°®Q­©Q œG¨¡Q¦¤J¤—G˜N£‹O¦‹Q£ŽO ŠP°„W®ŒQ¬™Y¦•O¨’N¦”\š–Z›”P R™€SœY›ƒU¢€X¥‡R›zL zW¤x\¡PœqYšmR›oP›rS©oN©lIŸvG¦oLŸaW™]T¨fL©jD³n=¶bD²\C»^I´OR½HJ¸HH¿RFÆJG¼EV²SI«XH©TL´LO¾MBºU9ÀU@·VO¿MAÄUAÃVI·ML¼LV³H\³GZ·PTÂKZ¼IUÈMTÈ@Y½ARº9V“°Ù¤ºÙ‘«Õ‹©×™ÐŸ¤ÍŸ¦Ñ®´Õ²¦Î¨¤Ð´¤Ô£¥Ï«£Ø©«Ø±¢Û¯¨Ð¬¹Ô¢·É¢»Å«³Ã›ºÁ¡·Ð¦ÂÌ©ÄĨ½À©ÉÏ°Èɶ»¸³¼¸½º³³¼°¶Ã²¼Â¸¸Î»ËÇÿĺÏÅÄÃÎÁÂÀËÈÇÐÒÃÈÌÌÄÔ×¾ÇÑÀÓÛÌÊ×ÔÃÏÑ¿ÙÑÀàÓÊÙÎ×ÒÊÔÖÎÍÚÎÑÔÜÈÐÉÁÓÓÔÕÔ×èÈàæÍáêÉßô»ÚóÂÞî¶êõµçñ¸åëÅÚé´àáÀáݳÛÛ©äÙ«ÒÇ´Ôη×ĹÉ΢ÐŞÓєØΓÏѕàЌÔŠÒˆÓƂÔÀ‡ÙĂßÈzÞÉ|äÌnÛØwíàuèÚuÕêzÜâ†ß҆×уÑבÙӉÏΊÓ͇ÓփÜÔsåڀßÏzÚÞjàÐqæâ}êÛlèÏuéÊqÝÈ[áÅ^àÊLÞÄIÞÂLÕ¿Tà­RÔ»RæÉXØ¿X×ÄIãÀFåÃJåÁJíÈIíËD÷ÉHõÈ:ëÕ9ôÂ9ö¿Fä½7îÇ7á·2áÆ?ç¾FæªKàªWÞ TÒ­VÒ­LΞ]֝^Ò¨Pö^Á§O̳T϶KÏ´MʼBѼIÖ»Kʱ?̯JÕ¯?Ë­FÚ¨Kׯ?Ú¦BÜ´NݲSß°K΢IÏ¥NͪNÆ®OÒ¯JÕ¦LÙ¨IÍ­NѱRŶT·RÄ´O¾º^ǺSÁ²Zµ»Q¯²O·©@¿¡G¼¯9°¤?¨ª<²­F¯¥A² E«–B¢ E®•@¨šQ¨‰R‹N©•G¡‘K¥‡Q®’P°ŠD­N¨K¥X™ŒU —N›“Y—Š^ ‰`£_ Xœ†\ŸYœ‡Z£ƒM“zV™}UœwZ˜iM’jR¢lU dJ qV¡kP£]L“W_£`W iLª\M´YT³\O´PQ²RSÂJJ¹DEÂGD·MT·EI²FU¦[O¤GR­BN±MHºJCºZ<°_CÄ]<ÊNBÇKEÁTK¿O[¶N\ÃLMÂGOÃGPÃDWÇJLË:YÄ8Pº4\˜²Þ³Ý™²Ô’¢ÐšªÙ¡ Ûª¯Ý­±Øµ©Ì³£Ð·«Ñ®¦Ó¶¥Ù´©Ô±ºÈ±¹Ë®¸É±¶Å¨¯Í¦¹Ë¶ÏžÁÅ¡ºÆ¢»Ä¬ÂħÇÆ«Ì»¸¿¶½»¼½¾³º½³´Â³µÌ¹»ÈµÂÑÀ¿Ì¹ÍÀ·ÎĹϼÁÓÅÍ×ÅÍÔËÌÒÍÃÍÈÄËÃÔÂÌÖÄËÖÅÛ×ÌÙÏÎÝÑÐÙÌÉÑÏÍÚÛÁ××ÍÐËÈÒÍÍ×ÔÛçÍÖðÂÝéÃáîÁáñ·Úì·áëµìè¾ìè½ãæ¸ãÛ´ÞÔµáÛ¯ÝÔªÜϯØȵÖÆ°ÎÀ´ÒȨá̦ÞĒÝ΋×ʋÏϒÐˊÖŅÕÇÐÒsØÒpæØqä×tåÑtá×vßäuÙâuÕÚnßÕwÒځÔцÒ̋à̀äׂÜрåЁàÓwæÍ{âÕvâÝ|ìÚ{ïßyéÛoÞÜbâÔYêË\àÅWá¿TÛÀUݶSÞ»NÜÃHÞÆS×ÉVÚÁIáÂPê¹EåÆ@ëÆHõÈN÷ÅBíËHòÐCêÓ?íÆCéÊ=å¼9æ¹5ã»Bæ°IÞ®NÔ«\Ó¤YÚ \Ó§UÌ®YΣQÒ¡^ɪ]ά_ëXŲPÉ·Jз@кDÖ³HÒ¸DÌ­>̬AÍ®:׫AÓ­7ݦ;ÚµGÙ³JÜ®RØ­IϬRÇ­RÒ«JÕ²HÒ²SÔ¨NЫKÖ«MѸWÄ·P¼ÃV¼ÄY·ÇO¾¾PĽN¸µF³­<³¡?­©:·¦9·¡:±ž=µ˜Aº¢7µ“6¯’9´“B§ŠH¢ŠG ŒE§‡> ’E¦”Iª”@¦’=¬C¡”Qž”X’ŒW”“W•T™„_¤Ž]¤‘b£‹dž‹W£ˆO ‰OžŠS“zP–ƒP“zQ”sS—jJsS“lV›hWœ\Y—b\›WY•SY]R¨RT¯RU®PT´MM¶KN½DJ½GMÄFL¶MN®HF¥KOªMU¯DG§EI¤GG®NCµMI·Y=´S@¾QD¼QNÉTUÅNZÅSUÀTXÀCJÀ>IÉCPÊIYÊAQÁ4\¿.Xž·Û ¶à’³à—ªÎ¡¤Ö¥¦Ó¢²Ô±¦Ó¯©Õ©°Í¢­Ô©®Õ¥£Ó§¦Õ«±Ì¯¸Ã¯»Å°ÀǬ»Ä¥®¿¦¶½¬À¾¥´É¨º½¡½Â¬Éƶ¾½ÄË®¼º­ºÊ¶»Ã´µ¿²¾¸°¹Æ·¿Ê¬¼Ë¶ÄȮøÓü˾ÇÔÏÌÜÅÅÊÊÂÃÃÆÇÐÊÏÆÒËËÒÊÏØÂØÌËÖÒÐÛÒÀÛËÊÐÐÂÈÕÎÚÑÎÞÃÏÛÌÞâÌÏçÊÙèËØñ¿ãï®ãò³àë½äá¿Þí¿ßß·äÙ±ßÙµéβÝÒ³ê̲ÞÄ­ÒÍ­Ñ˟ÙÍ¥ØƟÙĒÞ•ÐҋÜӈÍАÖƉÑÊ}ÍÖÜàqÕßtÞÙsèà|àä|åÙtÝè}àár×âvÑÚ}Ú×~ÓԃàցÞÓ}ÜàˆÔÖ}â×qá×oßÓpíâ{èãzêáwïÛlçÓaÜÖaÚÓWÒÊdÞÃ`Ó¾_áÅRãºKÖ·Kæ·UÛµGéÇGæ´Hã¹Iä¿CãÂLîÃIéÊEçÉMíÑCéÂ@èÈJí½AÝÅDâÁ<ç±JåºBÚ©DÖ²OÚ­PÞ¬[Þ«OϦSɱQÌ°Z¿¨gÀ§UDzYDzRɲKʹPÑ¿?×·?ر7ϸ?Á¡@Í¥?Í«A՞@Ôª4Õ­Iß­HÖ·CÌ´LͦQÆ®[ȪVƪFМGʧIӞAͨHõM¿¸KÀ¶NɳMŶQ»ÄBÁ·?²µB¬­=ª¨<² ;µ£2°¤<¢:¼¥=¼A³œ;§—F°C³–N ‡L©•Dž‹E¡ŠF«–;´‘5©’G¦—O¥˜K—U””W—“R’`—ƒ[˜_ž‘b“]š™Mœ†WŸŠT‘ˆU‘yWtMyP¡rKœmN£aR¡^Q–fV `YšZW”Z]¤]Q©cL¨TU´QL·MW°QT³OF²OS³UK¿OX¼ET°JU¸HZ®JW´FY¬NÁ=FÍ:TÁBTÌ;ZÁ6[Ê4Y‘Âט¼Þ±ä˜¦Û—«ßš°Ö¢´Õ£©Û¡µÙ¢µÒ£´Ï¥¨Ë«³Ñ¡°Ó¬¸Ó·¼Ç¯·Ä¡¼Ì›²È´Ä©±¿¨¿¹°·º©³Æ³¼º«Æµ»Å­Ãȱ»Ê«¼Æ«½ºµ³¸¶¼Á²´½³Ä®ȿ¬¾Ê±ÄÆ·Áº¹É¾ÌÖÊÒ×ÐÆËØ¿ÉÎÄØÐÅÕÅÎÕÆØÌÌÑÍÐØÆÙÏÄÞÆÇÕÂÑÌÅÐÊÕÌ×ÎÃÜÀÔß¾ÔàÌÙëÏÒíÉÜî¹Úã±âç¸Ýíµåä´àã¸êá¬èß«ïÖªéÌ«àѧçÏ©äʨÙƛÚĘçË¡àÏ àɑãΒÙ͔ÓԛÏˑÏэÓ҃ÒáƒÕÞÛæ‡ÞÜØá€ÚázÞßpßìv×ëwÙ݅Üá‡ÓÕ~Õ׀ÒÕ{ÔۈÖç‡ÜîyÖç{åé‚æàxàäyàÞyçãyïÚqìÕnßÔlÔÈdѾcÕ¶hÔ»^Û»XÖ»SÙ¾XܱLä²Jë¿Lì´Eå¹HàºMâÌMäËQçÏIñÏPìÑHäÄMìÃAæÁ>ãÂAàÄMà¸Hå­LÙ­?à´RÕ¯XÓ®UÙ¬VÛ¦cÍ®_˹`Áµc̳`ѨKʪDиIÔ·DǵIʳIж:³C¢JÅ¡RÒ£IÕ¦Eʨ=ʬLÖ¯QѪCÆ®FÆ­DѧRÄ¥IğLęKš<̧CÆ­;êAɯ9ʨ7ƲF¾·MþEÀº?¶µ4º°3±§1±Ÿ7±œ.·‘/—2´Ÿ<¶:±š=°ŒF¯•J´•D¤š:¤<¦“?£Š?¦ˆ3®…6µ…Eª‘I©˜GŽN–”X™ŒU•„P›ˆZ“Y‘ƒSKŠ•OŽ”F›M–„L‘zY’yZyUžoWŸeW¤ZRŸ]MšiF”dI™TR™Q[›RZ¦XP®^LªXM§[TµTJ±MS²UR¯\XµYW±Mb½H\¸O^µMW°?\­?R´CM¹EG¸DD¸OH¾QW´JW±PO·KWÆHNÈLNÌHH¾FSÇJWÇ@OÁ1`¼/`Â6UÌ,P’Æá•È࠿ך¸Ù¡¸Ú™´ä¥²Ï¡©Ú©³Î¢¼Ò›³Íž¨Ï¡¯Ð¬´Ï¦½Ç®À˧ºÊ°¿£µ¹ µ¼¼½©¾½ª»Å³¯»°Æ²¬À¸À¿©»¿´Ã¿®¿À©¯¼±ªµ©³Ä¤¹Ã©¶»ªÈĢ¹¯¿½§Ì¿²Æ½¼ÖÉÊÜÐÅÏÓÆÎϹÏÅÃÞÎÃËÌÈÉÍÎÇÌÉÅÇÏÉÈÓÓÒ¿ÇØÌÒÐÍÒØÍÇÏÄÔÙÇÚÖÉÛãÀÙâÀÕÙÂØà½×è¾ßë½êݵÝÒ¹äÛ´ëà®éÓªäÄ°ìɱèȲáѧéÁ™àÈ£îǘå֞æ֎æדÓҐÐӓÉыÔˋÒ؏ä݊çڅÝׂêçƒçâyëç{äéäæuäã|ÙۂÞâ~ÍÞz×ã‰ÑáwÐ݄Õå}ÒæwÕçsÛêuãåxâàpÜæsÞÖnîÕjç×màÎfáÑ_˾cÔ¼eÙ·^ܳ`Ô³Qã¶QܶNæµTåÁRè½Uõ½FëÁJêÒLðÉKòÖTòÌAáËLãÈDèÄJéÆHãÄ@àÇKÞ´Kè²Hâ´CÖªIÝ°PصTß­V͵ZÉ©dͶ`Ĺ`̳^˦SħTβN³NÀ©JÊ®D̸EÁ¢HƟ>É«>É«Lϧ@¾ @ЫAÖ«DÔ·HϸOÊ­@Ò£KÍ¡D˨Eǖ9ě7Ǫ?­8Á¥>Dz1ǵ:Á´;º¼Cº¹>Á²@²¾,µµ5·´'·¤/Ý4¼›8 /µ—,´˜3°œA¶ˆEº”K¹š;µ—E¦”9¨‰B¥‡;¤ƒ>²„7¨;¯‘Qª‰E™P¥’W£ŠV™ƒT™‹V‡V”|Yˆ‘X‡ŽW‘Y’‰L—Y˜wbšt\’uS•jW§mW•eT¢dSXU™cA‘aF›SH¥VV¨JM£LM³WN¯XNµK\µJKªRU¨WN»_T±]O¸LY·GVµSK½JP±HD·AH¼?E·@H¯MV°JO»TR¿JYºFN·GYËKVÇ?WÂ:ZÇFNÊ@\Ì>ZÍ/ZÉ4TÑ4QÄސÂ㐻鞿ã«ÄÚ©¾à©¬Ö§ªÍ§¦Ô ²Öž©Ó£°Ó¤­Êª³Â­®Â¬´Ã¡µÄ¤±¶¨«¼©³»«¾Å¥ÁÀ©Å´­»´®½¹¸È­·Å§ºÄª±Ì¢²Êž´¼š²½§³Ä¡°¼¡ºÃŸÁ¾§¿½­Ç¿¦Æ½®Ð¾¸ÍdzÙʾÏÑÀÕϸÐËÁÖÉÈÙÒÅÎÉÉÑÈÕÒÃÐËÍÌÔÎÉÙÑËÒÏÏÍÑÅËÓÈÑÛÀØÜÃÞã¸Ùà½àØÀÚÖÁáâ¶ßÞºáÓ½éÒºìÓ±ìÑ®èÔ®ìǦöÊ®ðÒ®õΩíÉ¡öâð͒ö˙îיãϙØҎÎːÓՐÜؙÛݓìçíáçè‡ìâ€ðå|ôäƒèáéè~àézÝßyÕØ}Îà‡Çë‚Íå€Ïæ|Øëzæå}åàoâèqìãsíápáßoéÜgêÍiâËfãÄZßÏUÖÊ_ÜÂbÔ¿]Û½\ÞºXå»ZßÁRê·[ð·Xí¼Q÷¾QóÉNîÍWêÈTôÐQåÚAçÓBåÑDðÌLïÏLíÍHç¿?êÁDݹ<à¯?å²<æ°Dè·NÝ·Yà¶YÓ§`ʲcƬa̵R­QůLƲGÍ©DÊ©F¼²K»©D½¨9»¢;º­D§CÈ¥DÀ¨@Å¥AϱFг>Ò´FÑ·BÈ©Cë>Ǥ5ʦ8Ğ<º¦@¼®7©5Ç­7õ,¿®0¸¸5¸°6º¯.²¹-¶µ/¼°+¹ª/Ŝ,¾Ÿ'Û2¿ 6¸˜2°˜A·B¼•=¹’>¬”5¯Š;«6¨‹B©…Bµ†A´ŒE´H°G¨šR¢™R¥‘N¡HŸ‰N™‚R†Z„ŠSˆW•b™[Ÿ‘U™…Y”{\“zWŸnNhTi[•_T’`G—\I›]G™VF›SG§MR¬P\³K[¯EX¬I\¯DV¦HS°M`µZ[½RM³[J­NPµINµLD¾AF²@E³BOµ=O¬>Z¨L^²L[±DX½JQºNTÃHUÁ@P¼>ZÃE`ÆC`È=^Ï4ZÊ)`Î+[¹å”ÃВ¸Øž´â™¹ß«·Ð§­Í­¬Õ©­Íœ®Î™·Ú¦¬Ï«Î£¯Í¡²É´µÄ¬­º©¸½¥¬Ä©»µ ¿Àž¶²§²® »´±Ã±±Ä³³¼¦¼½«´Ä¤²Á™¨½¤«¿¦¨Á­²Á¡¿Ä£¼¾£º³¶Î·®Å»»Ò¾ÂÕ»»ÚÉÀÐȾÝЭÓÌÀÛÁÈÑÆ»ËÀÈÕÊÊÍпÊп×ÙÁÑÏÎÈ×ÎÒÊÉÁÙÄÅÙ¸Ñ߸Ëå½Ûà¸Ýá¼ÔàÈÕÖµÔî¶àÙµëÉ»äÍ·ïÌ«åÏ°îÍ«òѦ÷θëË®ñɟðƙ÷À˜éϙç܌ÞЎÖҍÞ͈ÑՇȪÞ܅ÞҋêހàÚwæè{äê†ñî†ææ|ÞلÛÙxåæˆÜ܂Íæ…×é‡Çâ†Ùè{Óò{Þéx×ãvÞâjîáiéånÙÛiÛØeßØoæËkßÊ]ÖÒ[ÚÅgÛÈcѶW×¼WÕ»`ã¶Ué¾Rì¾NéµTì¾UðÁMúÇ^ïÐ`öÆSïÑMìÆBóËKóÍ@îÎCôÉEë¿Gç¾Må¸EÞÃ@ܳ>ä°Háµ<Ù®EÙº\Ó±`Ô­YÔ«^È¥eÉ¡aÁ SƦQ»·C¬HǞG½«G°£<·¡D¿?¾¤9­C¾¬H»¤E»­<ŪJŬ>ų=Ê©KȬC¯A¸¢2¾ <Ǚ6¾¥5Ŷ5Á±:Ť8˧1È­2½¤:¯§9´«0³´*÷$¸¸&¹¤.š)É£1ʙ8»Ÿ=·–<¿œD¹šH­‹@ªŽC«‚>¯„H¢‚9«Š>«‰I¯}F®‘H³ŽL¤–F­›UšP¢‹N’U™„HR‹…\’Q†O“Y“‡\š€e“dœ}WœpUnb¨t_›o_œZX—[[˜`P›UI™PI¤KQ¦HZ¦U_¬Dd¨JY¦IS¦U`£UU¦W^©S[³YV°XH¯\F¨HJ¯CC¶@@°:H·?L±@PµJS­EO¯KYµH_³ATÄB]ºLZÀDZ³>VÄ:ZÀB\Ð1UÇ3SÑ(SÏ2Y¯Ò•¹Í’·ÝŸµÞ¥±àŸ¯Ñ¢¯Ø£´Ö¨«Øœ«Ô¦±Ð¥­Ñ¡³É¦»Ê¨·Ñ«´È¦½Á¡´È›²·¤¼·Ÿ·»¦°³¡½µ¤º¨«¶²¨²­¶»«½Ä¯½¾ž·¹ž³Áª§º¤©¼±µ¼²¶Ä¯²º­Á¾ºË°»Ï²ÈÒ½ÄÌǺӿ³ÛÁ«ÓɲÊǯҺ¼Ô¼ÊÇ»Ñ̳ØмÒÒÉÊÔÄÅÏËÎÔÈÌØÆÈÒºÏÔ¶Ìã»Èß®Ñ×®Ëá¹ÐÚ¾Ûç¶Øí¾ÛÚ·ßаÜÖ©èÕ­äͲäÒ§äØ©ôÔ´ïÕ¤ñÊ¥íÌ¢ðĝåēå҉âВâĉàńàׁâÖw×É}ãÊzâÖwäÜ|àÝzá߃âì}åÝ|äÚß߆ÛâŠÑà~Ðá{Îè…Ñð†àôˆÝê„ÞïzÚãréäxæäpÞäsâÓqáÔpÛÙjÝÞ\ÖÓ^ÐÍdÎË]ËÃ`×½WѵSؽ`á²]ïµ[ï­Xð²Mý·MøºOó½YðÁaðÉYãÌDçÔHñËBðÎCïÎHäÍKê»Páµ@æ¼=è·7ã½=Þ¸Dä¬CÙ­QÒ¯Uί^×¹_Ô³l˦hΪ`Ǥ^¸©O·®L¹¨H· N¸ C¯©C¶ H¾¡?´§Bº«E¹®B¼£B¿±DůE»°F·¤>³­<½¦IÀ®9·¦7¹«=Â¥A¸±7¿¬9½¤.Á«1¿ª8Ħ-½§6µ¨6º£2À¨5ʪ$ð"ɨ+¾§5»ž2Ő6͖2Ę=¸–9³’>¨‘5§‹;¦†E£‚D ‹F¦…?¯~C³…C±…N¨O¬•Z¥—S“Y‘•V—ƒS”~GŽT—ŒX—’V•–QŒ†[„[Žz[‡wa—pbžtaq`¡wa¨wfŸf^¦bW£gQ™V\šS[œQ^®SX¬Qe«Id©K_žS[¥][°ZW©a]¬Z[¬^U·XQ°ZF¦UE­HI¤FB¥=E²BL³;S²DL¹DK³LS±MX·BZ½FQ¿DT»4X¹5Rº?[Ç9`É.fÁ0\È-^É*Z–¼Í•·Ô¦ªÕ¡­Ù›¦Ó¡±Ë¤±ÓŸ²Ù£°Ñ”±ËŸ±Ïœ³¿£±Æ§¼Í¬³Ç¯ÂË­¾Ð§ÂÕ£³Ë£½·¦¹´¨±· µ±£¾³¥¼¥º¤®µ¤²·¤·Á¶¾©¶º§§Âš¬´¢½²¥¶°¶½¹³Áµ»Æ±¿É½Åʶ¿Ë²¶Ö¸°Ð¾°Î¸ѹ®Ó°ÃÚ¶³Ì»ÀÊÅÃÇƺÎÖ¿ÐÑÉÌßËÑâÍËÖÅÍáÂÑÛµÏá¼ÑÖ·ÌÜ®ÍÏ®ÞÓ¿Ùç±ÙêºãéµçܨâاÜÒ«àÙ­ëݯãÎ¥èزôÕ¤äΠçҟíΣéÁêƋèŁ澆ÝÉæËzÜËwÜÅtæÓ|ØØtÛÜxäÝsàààâ‚äà…äن×á‚ÑàwßáxÌéÓç×éwâå}æðˆêáæÜläâpêßjáãpÞÛlÖÓhÙàjÚÏdÒÑYÑÌhÉËZÖÏeØÁ[æ½Và±að»_ø½U÷´Rè»Uù»V÷ÃRù¼OïÆ[éÁTáÎ?åÌ<èÑ>éÎDáÐGçÄ>æ¿Bâ»FÛ¶BêºEܼ?ë´Dá®B׫DÙ«SÓ¹OØÄXϬ`ħjÍ«fÇ£bÀ¦Z³¢L´©Qª•W©§Dª¦L¬›A°¢D½©G¼«KÁ¨M¡<ű<Ç©7µ­G°§<À£I·¬O½§?®°6¸¨1´¦B´Ÿ2â4½¥.¾«2²§0±³-·±:°«:¯«:µŸ3¼¨1Ç£ Ä­&¿¤5ĕ1–?½CǍA¼’Bº‹=²‘A¡‘2¬ƒB©ŠE©‰I«‡G°‹?­‰?¨„G­’T¤—L›”QQŒNŽ‰V~G’ŠL‹‰WP•S”‹IŽMŒy[‘€[Št^£rd¥te¤w_§z`Ÿe^¨b\›^a¥W_­Sa²Nd­O^¥Wd¡Vh¦V] [_¥RVŸO^®Vb­[\±PL£RH°SO¢YD£G@¨GA²HG´QPµDF±GJ¯DQµAR¶JSÂ;V¶=QÁGPĸ¢G»ª=¸®5¹­Dµ¨F±¯@¶­E®¨9±®9º«?³›5¹£7¿©)¶©)·­.®°9®¹2°¶4µ³1¹«+µ¢1¹ 5Æ¥)¾ª-½3¿ž1ɒ=Ɨ<½‹9Á‰;¸‡=°6¬Ž:¨‹B§‰@¥‰H³ŠG­ˆL°‹C¨ˆE¦„Q§I˜ŽN–PŠ”F“Mˆ†S‘†NŽŒX—I‘˜JŒ”HŽ†N„‰SŠ~ZŒ}X›v`¤zdœ{c¥sZ©t^¢sf£eb£df®`d°Zh¯Ta¤Oj¢Wf¦^b£\aœWZS`¡QY©TW§HPžHO§JF¢PK¥IF¤KC¥UH¯OGªUO¢SN¤SR§E^¸He¼;aÅä·@æ¾Jí¼Bã¹=Þ¹JܱBÙ´EЬOÖµQɯU˲aÓ´bË·[¿´Z¼ªW±¥`¼¡_±©H¯¤=±ŸI¦–J¯”@¿•M¼–H®¤A·¦=½«;¯©5³¡7°¡A®±=¹¬@¹­E­¨9ºš-2Á®(º¨.·°2½¸&¬µ3±²/¯³-µ§+²£3¼¦0Ǥ)¿¢2ʓ4ʐ3Ȗ;Ñ<º‰9º€:»€:µ€<²ˆA°8§ŠG°B³€D¨I¡K§‰O£‹B™‡B”ŒG”M˜CŠ‡J‡…U„‘X’T™R™>”K‡EŒ‡I‘z^|\v\“„l—‚h¥|b¥{]£tc©i^¥ajž\o§Tc¯^g®Yc§[b¦[Y®^a \cœ]]©YP£[L¤RN£CL›AZ›D\ªNO¤OP¬XI HM¢FM™CSŸDX§EY¯HV«Ea¾GRÁ>c¿:S¾)U¹.S»(]¶3^³)S½-aÌ$YŸ¶ÕŸµÑ£¦Ñ §×¦¦Æ¥­Å¡²Ç™¿É¨À»§¼½§À¸ž½¾¤µÀ¦¼Èª·Ä©·Ç¥¿Ê­·Ð§¬Èž±Êž´È¨·»¨®´¦¯´¦ª·¤³¨¡»¬¦±¢¦³£¦­œ²¯”¶¹œ²·¦·¶­²­¶¼µ­²Âµ³½·¶¼¼»»²»±ºÄ­»Í²¶Ï¶³Ë½µÆĹĿÂͳ¾Èµ»Å½¹Ó¿¾ÐÈÄÌÒË×ÍÁÖÕÁÐÖ³ÍܶÕѹÚÛ³àÓ¤×Ö¦ÝÙ³ßé«åéªÚé¨ßÜ¥ëå§èܛòؤðÖ°íÍ¥àÒ¡æ֔ëϔîΐìדâ͍é˔ñΈ鿊繏뽅îÈtðÌtâ×zÞÛyÔã€ÚÝwàèpáèxÜë|èâ~ÙíÔéwÑîƒßåŠãè€åãÙìÛåˆÖñ‰Ùí{ÓêtÞètßÝc×ÓaÚàfÐÜ^ØÔ`ÕÐcÙÇ]âÉeëÏhâÅZâ¶Wé·TéÁSØÃRâÂZê»`åÂ_ÚÅ]àÂ[Ý¿Xá¾OæËFëÈ@ëÓAåÃGèµMê±Câ²Hç®CÞ¬@å¸Dè»JØ¿R׺LÒ¸IηQØ®UÖ­LÍ¥R̪YË·YǹR«_¾¥\¿ªT¿¤UÀ©F¹Bº¤N­ J¹ J·I°šK¬ >·Ÿ;³Ÿ9´œ,µ©0²¨<¶¦9¯°8±¨A½ž0¹£+Ƥ3Â¥.Á¨2¯0¸°+²²%²¯!¯«)¯ª)»¡9¸™8º˜1¾˜/Ȑ<˔BċAº…@½†4¸{:½}CÁyK¶D¸@©A¯‚<µ€<­C¡Gš{<ž„?–ˆ>™LŒ…G…ŠLƒ†QˆRŠ–EŽ“I—C‹”BœA‹•F••F˜…R™†\€`wn–~jœ~a yf¨vd©lg£gfš\j­\l±Xp±Xm§\f©YY¨`W¦cUª][°[O©VL«WS LU™?WA^žC`¨SWªYV¡PQ›C]ž@[EV­CZ¯>]«=V´AZ¾F`Á>d¿2X´9Yµ1Z´&V´)^³(a¼%e›¯Ú¡ªËœ²Ùš®Û¡µ×ž¨Ð¤½Ì©Ãɟ¸É¨´Á¤±¿¡ÁɟÃœÄÍ«±Ä °ÃŸ´Ì¢²É—¶Ï»Æœ·Ã ²¼ ²¶¤«¸ª·«¡¸¢½«ª±ž©³¢¨¶ª²¹¥·¼˜»«©²²¨¹¹ž»·¦¯´±º¸¼°¼²¾²°¸»¶Â¼±Á¿´¿¿ºÁ¼·Àº´Êijù°Ã´¶ÈǾÌɺÓÅÄÜƸÞ˵ÜÖ²ÝÔµÛ׶çß°ÜÖªåÙ ÝÎ¥àÕ¸ä×®îë¨àá¢èÜ«äážâ۔æß õØ ç׫ë՝çÓ¦ìߝúՖó۔ìȍùЅ뾃êŠïÄ~ü¼{ð¾ïÇ{ã×uïÚoæß|ÔÞu×ÞzÜèÛ܂çëxÚê}Ï݋àæˆáãŽÙê‹ÜáƒßâééŽÙç…ØãrÔè~ßãpÜâd×ÖYÏÓeÖÊiÜÓdãÊYæÏhçÇbÛÎcäÁ^Þ¼ZݾZßÃWÍÅOÔ¾Tæ¸^ØÀVÙÆeÖÆVÞ½SÖÄKÝÆRÝËPåÒPèÄCܬRܬFÚ²NׯCâªDÙºMæ¾Jç¾CÛÀAÒ¸TѼRÙºEß½HÒ©MÕ§TÔ±MƽXªQʯOȟIº«BĨ@½¤>·¢E¯¦Dº™;¯‹<»—5°ž<¹š3©£?µ™0ºž1´¢+²®4ºªA¸¥;°°:½ª3¶š$¶š(¿§.Ê£0¸£$»¥/±«)´©'³›6¼Ÿ4¹ >ś/Ô7ÀŽ<Ȏ3đB½Ž=¸ˆ8ƃ<µ|<À‰>­~F¹Œ>­„G¦Œ7²†9²†>¦†J›Œ<–„G—‘N‘ŽQ‡”S…WŠO„›N‚ŒKQ˜HŒG”’F†DŒ“N”ƒX’‰P `ž}k€h‘vd¤zd§vlœjsšfkXsœai [i£Qe¬]]¢][¢cR ]a«Ze¢X_©XH—XMœVVŸCV˜@h¢@ZŸJb¦N^¥DX£>Q¤;[Ÿ>Y¬I]±BU±?R¬B[­?b±?n¶9`­1Z²,Y­6k±0nµ/d»,m’©É˜«Õ¢«Òœ´Ý¥³Ú´×½Î©¿Ì£´Ê¡´¾¤¶Ã™¹Âž²¿Ÿ»É¡ÀП¶É”¯Ç–¸ÑžµÔ¼ËŸ»ÊŸ°Í¦«ÆŸµ¼¦¯®·«¢¼«£·¨£º²°°«·­¤»´¤°²™®¬®¶™³µ¤­°¦°¯²»·°¸³¹®¾À´º¸·¿¹½¾·Æ®ǾªÊIJ½½±ÃÁ¶ÃĺÈȲÕ´ÝÀ°ØͱØÚ­àÛ¬èÙ´éá®åÔ³ïÔ©èÙ±áÕ®ßקæáªãÜ­ßå¥íã¨ëëšõè‘îܗìޙêá£üàŸþáŸûá“þ҇ÿDŽÿÆÿÐ|úɃõ¾zýÄzóÄzïÃ}òÍqðÒtâÛxßÖxâàzÝáxãÝ}×â}ØéŒÖގÚê†ÛíŒÛê‰Ýì‹Üç’åêŠÛá†ÞÚxåáyÞßqåÛeÛÒ`âÉ]ØÉb×Ç]å¾[âÂ`âÄ\äÆgßÆbÖ¿[ÚÅ[ßÌNÒÂRÝÀWܼ[Ú»YÔÀbÚÃ`ÒÅWÒÌOÔÎWÖÁVáÄNá¶X×°PÙ°\á°Vé³Mß´Mâ²Iâ²Iä±JܹFÕ±EѺMÜ¿SÞ¾KܱQÙ²UÙ´M˺VʵWίPÇ©B½§?í7·¡>¶¥1¿2¹‘.³”;±;µ‘5²•7­ž4¼š(¹ ,°«3±«4®­8¶¯5·¡.º¤0¾ª1»Ÿ#¼£$¨"¨!½œ0¹œ/¶ ,½¥8µ›<´£<À<Ǖ?¾“5¿‘=ÀŒ5À|8¿}DÂH½@º€<µŠF¹‚<°„<¤„G©‰@Ÿˆ8¥ˆ?œ•@™E–P‘“MŒ™PŽ—Y‘¢P‚›S˜S‰”K†MŒF’ŠM‘”FO™‰Mš`Ÿ‰d›zo—vi’x_šwe¤taimž\n”_s—UrŸOn£Pr¦\d¬^]§[[¦VeªL^¡FSžPT LJ•NQAR”Caž@b›BašAb HW§F_©BV¬E`ªA]±7e¦>_£9g­El©>h¬>s³@t°8f¹;o´5q±.mº#lš¢ËŽ³ÌªÍ˜µÐš­Ü–»Ù¨±Ð¦­ÎŸ¸»›§¹Ÿ¸Á£¾»—µÆž®É£­Ã¢­Á¡ªÁ™¶ÉŸ°¾›¶Ë™¸È™¶Á™¯¸™´°§²»¢½±­¹¦¦º§³°§±®­¸¦²¹© º¶œ¬¬¨³±Ÿ²±³±±°«¦¹²§¬Ãµ¶»­µÀ®¼¸·±Ä¿²Éµ·¾½¯»Ã·Á®¶Á°ÁʳÖ̲àʹÚóÜÓ´âѱÛܬÙß­çаäÕ¯êÜ©öß«æͧàÖ¢íØ£ê؝èٟëܚçæœäâçНèà£ëè£íæœëۜ÷ېøЋòNJÿ¿~ø¼ƒù¿óʀöËöË{ûÆyèËwàÖxâËqçÐvãÖsßÖsâáxÜâ‹àéˆâìßé|äó€èòÜé€äé‡àåáäxäÙ{æÙkçÝfáÜgØÓcÖÍkÙÕlÜÌ[èÃUíÇZáÍUØÇT×ÉV×Á^Õ¿]Úº]Õ¸^ã¹\Ù¹XܾVÝÁdÐÅTÒÂZÜÀZ×ÌUÙÊKÜ¿UÙ¸Jå­RÞ¸Nè¬Nê¬Rì¹Ië²Mç»Iå·OÔÀMÒÃUÙ·YнOϵJÒ¬KÉ®YɧWдYɶVÅ®IÊ®C»¢E´¬D¼ž<²¤:¾(·“.²—C©šB·˜9­›8°š@³¤6«/®¥0¸¬)²§2°'²¤4¼¡3¶¬1¹º¤$¹¤"´ž,ºš2½ž6²Ÿ7¾ 9¿¢>Û4¼—FÁ”@º–8¶Š5µ8°ƒ>ą@´8³F½†H«„@·B¤5¢}@Ÿ„D¯;§…C¤•DˆC•“O•RŽ•[’ŽQ†–V†™J–M“—U‚‹H‹N‘T•ŽM•‰IˆO•‘[ž…Y–„VoZ”th–hcbm•gr—arŽOežYl—HlŸMu®fj«cf¤Rf¢Tf¬]g¢T[ªSV£T]O[“FašQg Jf™Ha¨DW CW¤BM¤HZ¨Cf©NW­?a®?[³ê±Dê²Lç¼NÛÁLؼVÞ¹_Ú¼VÒ·QÍ«GԞDÉ¢QÃ¥OȪXÆ¢UɨH·¬I´®B½ 8¶™9²˜0¶•+µ*©‘:°–7¯ž@µ¢8¯¢>ªž7¥œ2²¨3µ¨,±ª)·œ$ê,½«.¾¬*¸ &±—¸˜ ´¢*»¥*¸¢,½¢4·¡2¼™5Ž?Ð@·‡B·Œ9²†0®ƒ/º†,·”8·“9¶Œ=¬‡>°‡>¬ˆ5¦{6­5¥Š6¨ŽE¨‘FšŽD’Œ<Œ›O˜R’“L‘‘QšX‡›O•U‹ŒP…V‹ŽN”šI’—S†šU‡“LŒŽFŒP”sO“p\pX‘aa`]˜\gœ_k—PaœO`œMp¡]r¨`o¡_d£UiŸab£`bª[a¥TVŸTTšU[’Ud˜P[¢OS¢N[©PK¥LG£OPœNb¡KcŸIa£LV«E\¯>f«Hn²Cn¸>l·@`µ6dº=j¸2d½%dº!p¤É†¥Ë‰¬Ï†«Ã—¨¾ ­Áœ¯Àœ¢¾›«·¤ª³—¨Á¥¬º ¦Ä¤Ä­¿‘­»Ÿ±µ™¶¾£¨Ã ¬» «¿š¤¶¢¥«¢¡¤ž©®²¯´±¥¶°£¶¹±±Á¬»¶ ©½›¨¹«©µ¨¤³§¬´›®·¦¬¿£©Áž¶·ž°Ç£ºÆ¬´¹µ´Ê¹ÂÆ»Àƹ¼¼³¼µÈ·ÇɳÈƪ×ήæ̬ÛÔ³ÞÊ£èÖ²ßÍ´ìÚ²îџåÒ¦øޞéá¡õÐ¥é͜çޔí֒èؖ÷ܔúܝõݒðՑåӚçޛáҝãԍê΍ëƗòĔòÒÿÂúȇÿÀ~íÀë½‰óÃèÌèÓxéÅlëÏpêÔwÙÕkéÑtßހßÛ|êð|æéxâìsÞæzÜê|çé{âìsâçxÞífáÞjëâbâápÝëfÓÚdÜ×pÛÍ_áÊdãÐ]ãÀUßÂLÜÒWßÄFäÁHç·NæÂPݺTéÅQê¾Zå¹\æ½Wå®TØ®YÚ¬SÜ°Hà®KÞµEé¶Qì®?Þ±Eê©=î±;é¾JæºRä³QàÁQã´OسWÒ»KγKÒ¦RͦOƧT¹±R¯K¹©Rº¯L¸¦:º©0³˜-¶Ÿ.¯›+¨›%ªš0ªŸ=¢˜AŸœG¦¡H­¤7±•?¨¢3¨¤0´˜)¼ž*¸¢-²¦-½¦/±£!¶”-³š²¥·¬(®§'¾¦+¹Ÿ3½˜0´™<¹‘?¹B¯Ž3¯8µ…%©–.«—-¶™/­–=´†1ºŠ:¦…4¢„1£3«–,š—C¥ŠD•‘C’Š=ŽŽL––WŽ“GŽ¡H’¡H”O…‘N‹ŠT‰ŽK‘“N‰ŒK•ˆJˆ‰KŒ“Qƒ‡Yˆ†Z“v\‘eXˆaY™WY•ab ]j˜XešW\šJl Pl˜]j©ed©dp™Zj¤Vf£XZ¢MU®V]ªQP¡ZZžNZ”NhŸS^§I^¬KX«PK¡FM¨O\˜MfBm¨E]«HY°OZ©Fo¶Pf¾>e´?]·4j¿2b»7f»#l»&s~«Ê‚¢Ã|§Á…¡Ã–ŸÅ™¥¸¢«¶š¡ÀŸœ¹ ž¶¨žº£¬¾£¤Æ—«¾Œ¦È¯Á“®·¤¶·©®½¨¬¾¬«°¢ª«¦¢¨¤§­¤®µ¤§±®¢µ³¬´¾°¹·¥¶·±º›¬¾—®³ž¥·˜¯¸žª´œª¹²Ã¥´» »½ ·Ç¨³Î¥±Å®·¼³¹Áµ¾¸¾µ»¾²ÄͬÌͧÕΫÞÏ°ÜϯÞʦðÒ­ðÍ°ëџ÷ޟêä›ëܙëϓëЛèӕòә÷ޜøۚïՌõ܎ïݏïҔíΖáҔêΛêȔâ̌æĒéȚõ»”ù»ŽÿÈÿÇûÁ‡ûɂïÈyñËxãÌqÜÇuæÍuß×{ÛÙoæÜoäÔ}éÙrïäqìÞyêáwâۂàä|éÞtæàxÛìnáèoãéiåæcáíbÜédÖênÖÝfÞ×háØcâÕYåËXÝÖVßÏJÞÀKãÀHí¼?éÁGêÈVìÂUïºMê´Tæ»Vã°\ê¤Væ¥Xå¬WÙ¯L×°MÞ¬Kî«PìµEì¹Dä±@ê´K߸Eã¸EݽOá¿QÞ¹ZعTÛ¶NɧSƧJŤM´®L·¦I¶©M±«E¶¦6¶ +»˜,³£!¨#¢•-¨’/©ž6šŸA—š9¡ A¨™?­;§.§›1°£-°›+´˜!µ #¯¡)¯–&±˜"«—&©”*±¡#µ˜'²ž3®Ÿ2·–<¾Œ>µ7»-°‰4°Š)°Ž"¸“¯”#¹™%±•,¸4·Œ5²†7ª…7 †1¥’3 ˜9š“=œšB›L¥”EšLšD‘ŸM–ŸRŽ™K““U—UŽY‡”T…“R‹ˆRŒO‰‹T‹R…ƒZ{]ˆjbij^b—^f˜WkX`”Nd’[nŸWg agž`i—`s]mž^^¬M\­W`°RU³ZO±SXŸSfžTd S`ŸLU§QI¯WK¬ULªEY@gžAk¦Bg¥G_²D[²QbµIa½I]·C]½ÔºGÝÅIλJÞ²RÙ©TÍ´Jɱ>¿ªJ¾ªF±¤J­¯C¶§G¶žF·¢@±¥,­“.·–*¨/­.³’7¨—Cš˜GŸ¥:¥¥C ¡5«£:«ª;–©6œ™3®’)²œ(¯¤(²–)¦—+§—* +­š%°’!­Ÿ#¬ž3¯™7®›0¬˜.µ6ª†*ª‘$°Š+°‘-¸’0­Ž%ª–!ª•,·‹4²‚3©ˆ=©5£†4 “:©‹@ CŸ•;œ—DŸŒP¨–J¢ŸO –Q‹—T•‘JIŠ˜V‹˜Iˆ‘Q‚ŠWŒ‹RŒ\Ž‚LŽ‚S“uZu\ih•o`‹`o•\jQu˜Ww’]i‘Zm”]k’`e¦]mŸ^l¢OcžTi¨Od¬Q\­R^²PU¬Oa£QXžY^ Za¥QS¤]U©SI«RV±Q^£HcšDf¥Bh¬Fj¯Ie¹Fh´?fÄAbÁGcÀDl·.h±$mÁ%hÆ$dx¦Î}¡Ï€•¼˜¶„£·§¾†¢»“’µ›”µ’£Ã…£¿‰œÁŠ˜»”›´¬»”«½ ¦¿Ÿ¡¶£©½¤¡È›¢¾ž¤²¤¥¹¤¡·¨£´«ž«¦ µ°¯¶¤¢·¨ ´©¥´¸¯¼œ©À•§Ê“¢È˜§Î–ªÆ¸Ã¦³½¬½½³²Ê²·Æ¸»¹®¸Ê¶¯É·ª½Âº»½º¹¼»Å½¯Ï̸áÌ´áÁ¨ÝÇ¥ëϦôΰçÏ¥ëÓ¤éÒ æʝí՝îԖéɘêǎå׊ì֎÷ɑò̓ôȓëяåЍîуéƀóʋõÊ|é¿}ôÀó»‚ùÇ|÷ǀð¼…ùÂó¾wõ½råÌyÛÊ}ÚÔtÝÔ{çØríÖzáԀáÖzäÕxðÓyîÚvóêmíåfåÔnÝÒfÖÚfàßlØÕnÛÔhÔ×bÔØiÜã^åÖbáÖZ×Ö^ÙÍYäÊ^äÈYæÓ^áÌYÙËKßÄHá¼Fí·EçºVéµWæ±Mè½Tå¶WíµXí°SÞµRè´Mä¶Të¯SìµRâµTÝ¥Dã£CÙ«Hå¨Lã¯FÚ°LÓ¼TÒ¼SήKÉ´LÊ©Eɧ>¸£=²©H²¢B¬›E®£M½«A¨9¾‘(°‹#»‹%·Œ-¾“=´ <¦™9›A™–D ™5¡ž=¢¥9—«4•©0™2™,£ž)¢Ÿ1œ”/Ÿ™$œ™# 1œ”$¥(ª™2§’2žŒ/¦#²‡!ºŽ#¹•©‹"µ‚'µˆ-²†-¯Œ+¤'ª%±Œ%§ˆ+ž1¦ˆ> “?§A¥”E¡“>¤œD¦™D§‹C¡ŽM¥V£’Rš™PU†ŒXŠJ‰V‰ƒR‡‰P‡€]…zUƒzOƒsT‘rdil“of”dl’goŠau’Rs•Qx”_w—ar‹YdœdmŸ]g›R`›QfžQe \l›Qd§VY°OU®O[­\^ŸaZ£eX¨`X§WS®SO­ST¯Pa¦Ba¦Bc²Ea±Hg¯Ol´Fc¾>eº;nÂ9e¸;j²6v·)sµ'o d…œÆƒ½¦½•¤¾…šµ¡¼‡™¼ƒ›°–½Œ£Àƒ¡À€žµŽ—¶‘–Àš¤Â¦·•¡À¡¤¹ž ¿¦¬Ë•£Å¬®š®­œ­±¬¡¶¥Ÿ±­«¥ª°ž§¥œ—³¯”­±ž«¶—£»£¨¿§Êœ¦Í—®Î—¶Ë¢³»¥¶½¯¾Ã«±É§´Â¶´¾¬´Æ´®Ë¶®Á¾·¾¼¶ÄŹĮ̀ÞˬáТç̚áÇ õÔ¬ôË éÒ§é͗꾦àÑ£ðʟâɚôˌñЕéӓåñÒðЗãԌìʈòÑ}å̅ôΆùΈìÅñÂsùÄvó¹ÿÈtù¼€ù¼qè»z÷ÇzéÉ}ÝÐxÓҀÜÛxÚÚsï×nâÕpìØyêÏyíÜnôåvçßjìâsáÚjâÞ`ÒÚaÝÏkÕÜ^ÖÒjÚÎgÒÕ^ÞÜ]åÓVêÚ[äÏXäÐTäËNåÐ[çËLÝÌUæÆSÙ¼IåÀPàÃJîºLî°Tè¿Hò¼JçÀSðÁVï¹\ä¨Vâ®Kë¨LߪVã´Lì´Fæ§Jà¡Jß²P×·Uç³GÚ¯VоXÇ´XƯKƵAƪCÄ´=º´@®­J¸¬@®¤?¯ªR³§>Ç£3³“5º‹%ª—)ª‹6®˜=ª¡1¨š;¡™A ¢5¤ 4–§7”ª5’®2Ž¤5Žª.ž 0›£(¢£0Ÿ£$›™#˜’3¡‘,¢›3•%¬’.­”-¯(¢“®…'·Ž¬‹#³‰ ¦‹0§/²•(£—!«'®‰)¤Ž2¤…)¥‰-ªˆ6¢Š<£›5°šE¤š@¨™I©–L£”A§ŠM£ŠR¢„DšŒQŠN‡KŽƒPŠTˆTˆ{RŽ}ZŠ\ŽsOŠpb—qe“oa˜xc“mi“dl“_o‹Yz_yˆRlZn\hŠas•[g›R`•Xa›TgžYg¡So¬W[²X]°Id¦Z[¯`R¬aY§gP±QK«TQ³XP²RT«KU§DZ©I[©Yg³K_¸NlÀCp»Ae¸8m¿Gb»4i³)uµ%i¿!e‹šÀ…¢ºŒ ¶Š¡¹‚¦Â†¥À‹¦¶~—³‚¢¹½Š“¼„˜´“œº”¢À »šŸ¸¢¨¾¡ªµ™³·˜ªÀ•­¼”­º’¥¯ž©³¤›±¦œ´¦¢©¡¢¥¥—©Ÿš¨«Ÿ£¯˜­½ž«Ã¥¤Á§®Æž°À›±Ë›¬Ð£±Æ¤´¿§»Â©±Ä¶¸À±µÄº»Í±¸Å»±Íõν½Ìǵʼ®Ø½¦ÜÄ¡êÌ çÑ¥éȜêÅ çƙܾßÁžÝ¼œçàäȚììŕÞĒ꼉äëÀãʎ迆ëÃ~éÀ}éÁƒòÁ€ûËuÿÇrÿ¼oûºvý½xö¼pëÇqñÁwçÄ}ßĂÙÊuÕÛtÚÚwßÕiåØißÒfêÛiðßoèÚgèävêàtßßläÙnØÒoÛÐ`ÒÎX×Ô_ÛÚgÖÖcÔÍ^ÚÏ`äÚ^â×TÞÛSëÙVãÎTãÐMÞÑNàÎMÛËPÛÀQÙÈTâÅNí¾Rè»Jê¿Rñ»NíÂXç¼Xè¯_ìªYí©Tæ«Oã´Nå±Sé¨Qá¤Má¬MÙ­TÚ°YݵYÓ®UÓ¸ZηZɸIÄÀPÁ¶G»®A»³E¹ºM±³J¶´F»ªFÀ¦@À¤;.µ“/ª›8«”7´˜:¯ž5¡£2¡¡0 £5Ÿ9‘¥4‘¤2œ¤9•©7”­,¤,˜¦+ž£-˜¥*£Ÿ/ž2œš*˜›0¥•&¦’¨”)°†)­‰«$­Ž ¯‘*¬‘*­–#§‹'¬"Ÿ“(œ‡,¥‹)Ÿ&¨ˆ.¤“7¨•?¦š9­™9«‘?ªA°–F§ŽI¦†E©G¢Š>ƒC™‡F”„KŠ†H‰„JˆƒT‡OzI‹vS…qRŒt_˜t_•qgšqb‘qf…aiˆbj‡dlŒarbq…Vj^t‰Yr“\x—Yl™PeŸTb Na¢Xk®Tq«Qh¯T_±T\³aU°_SµdR¯]O®]Z©WT¤\N¥\X¯R\«U[¬ZY§X]¦S^´Gl±Fo¾dÂAeÄ;m½9w¿-rÁ.wˆ™Á€£¶ž·…¤º|›¼Œ”°…¢¸t›¾¡³zŸµ ¸‰”¯’¢¾™Á”ž¼’¡µ”¤¾§ŸÀ–ž³•©¿™¢ÃŽ´¾™´­¢­ª—¦¤œ ¨™¨©š œ›™«œœ§¥–§«˜¥­¤¥¹¨­¸—­É™­Ä©¨Ñ§Ç£´¿«½Ä¨µÌ³©Ç®¬Ç«¾Ä«¶¿¸»Ñ±´ÌůÌúÒƮϺ¨×½«ê¼¥êśí͘ðžìȒîÑ۾•æΏçœ巗컋쵄åǎã˒éÆïĀäĂçˆâÂzãÃuðÆrðÁqû¾xÿ¼vö¹{ÿ»zÿ¾tÿÀoðÆpïÉxæÀ{è¸xåÌyãÓzØØoãÓxÝÐhÞÎeáÖkÞÏvâÝoêÖqèÔuççmìÝtãÝcÞÊeáÉbØ×^×ËeáÍeÖÕ\áÏcÜÒ`ÝÏVãÓUâÍNêØYëÐWìÓSãÈVâÅUé¿VåÆUá·Jí¸MíÀVä²Gç¼Gò»Sé²RÞ°Rè¸Vê¤`ä¡Uä§KÞ¬Læ±IÛ±Hà¡FÞ­H̬XÛ«V߯Q͹QغVÕºTȶJÌ¿TÄ®N¸ª@µ°=º¹K«¬>²®@´£@¸”;º›A¶2­“6¬•;­›6³Ÿ2¶ž2£¤+¦ 7™•0˜ž0™¢;Ÿ /–¤7£6œš+‘¡1££.¨6¡š%®™+©Ÿ& –$©“"§•+£Œ-ª—0¤"¡'¥‹#³–«—.¯˜.¦,Ÿˆ# •(§—#¡‘)¦‹&§‹'Ÿ”+¥“<¢¢@£•9ª•@¯™Aªˆ@£†E¦’?®‡F£~Oš€@˜=™ŠN‘L—…P‹‹L€PŒ„Q„‡U‚{X…ubˆnZpjˆwXŠh^•c^ˆf`‡fm‘lr“_w‡dq]o’Um’Pg‘Tj˜Oo–Zlš`aœVm¥^gœ[g¬Ug¯_`¥T]§bZ²gT¨XV¢_Q£aQ°RZ§TW¦XN°^b \g©]dªVg­K`­Hf®Gkµ=p½Bd½9j¾6l¼9}¹/xÊ+mŠ“³šµyœ·¥¯~£ª…”¯’®y—¼~¬w˜ªu ±€™­š¹•·Žšµ“¢À¢»œ¼”¥¹“£¾ ´–©·”¦­²¦¥°§ž¬¡Ÿ©š£Ÿž©¥¥¨¨®°©¥«²¡´¶œ®³¤³Àžª¿©¦Å«³Å©´Â³¶Æ·¯Æ¶®Å²¸Ä©¼Â±À¹´Ã½¶Ó¹·ÝµªÛ¶«Ö¾ Ú´¢ßº§ëàçÁ•åÔàÀŒãÁ•íƍæˍïǃó¸‰ñ³‡è·|à»{æȅæÂzé¾wôÀyチâ¾ußÄrçÇné¼pò½|ÿ½xÿ¹wÿ¾sÿÂpþ¾i÷Ãpñ¹‚俁繁àÁ‚ÜÒvÝÖuÞÛpãÓgäÓháÒvâÑrëÔmêÕmîÖmëänòáríÛgÜÉkÚÇeÛÍ]ØÐ]ÖË[ãÏ^àÕ_çËfàÉXêÉQæÇPêÏKäÖFïÎRôÉRçÉOßÉUåÀWð·QîºLó«Wí«Qê¼Uê¾JíºHæ²Lå¤UÞ¥Vޞ\Þ¤X×­TØ®Nã¥Xà¦PÙ¢SЭR׫VϳYɺOÔ¸JÍ·N˼V¾²S¿¯G±®@°³E«®D®­C®›8»–3·Œ2²:­:¯™8¶2±‘9´—:­£1¡ /›6˜¡6£–1 5¢™5 ž5’œ:ž•:›—-§£)§Ÿ-¥-©•(©Š'¦(¢‘1£‰.¥“-¨Œ*¦’&¡‘'©•0°)®"­˜#¨˜&›‘*‡*Œ®”)­“*­‘/œ‘3›”.  4œ›1žž8¥–>§Š4¨“B©F©ŽD¡~MœŠC•ŠE•}S–~X‹~RŽJ“„O„TY‰M_„yf‰gŒ|ZŠwb”fX…`V‡jequ‰kshoŽ[o‘[fWe–Zc“Oo–Wdž^gž`f–R`šJdªRi§^f¤a]°fgµde´[f¢RY X]ª]Z¦]V¨VQ¨[b¦^c²[a²Tl¦Qg«Jh®LxºGwÂGuÂ8kÉ6hÅ2vÇ)xÃ*o„ž¹y›µ|¨·ˆž±|ž®°›³}”·x—·r›«{—¬†–£~•®•«†¢¹ˆ¤½šª´¢œ²›£±’¨­’¤­—£­˜§¥—°¤¡©¬¢£› ¤š¡œ›š¯ŸŸª¦ ¤¨¦®´Ÿª®™¦« ©²—®±œ­À¨®Â©²É°©Ç²¬Å³«Ë¯©Ë³®Ë¸°Ä¾«Ç´­Ï¸²Ñµ¬çº±Û­¨Ø¯æ¾›à´šßµà¾”ܾ“áŠßȏðÍ~㼅åµ{òµyñ±€ò´|ë¿tê¾qâÁxßÆtæÃwãÂjèÅjë½tá¼ö½sòºƒñ¾ÿÄw÷ÅpÿÃeøÇzïºx轀çÃz케çÄrÞÏxÔÞgØÐdÞÙdå×dÝÍfêÒlàÖfâÚoïðpéÚeçàgàÒsàÅfÞÇhØÔ`ßÖeâÊhÝÑcëÉaæÐbáÍOæÃNÜÈVìÇRðÅZñÄMïËOíÇKç¾WäµSòµRä²Jí©Nê°LéÄSæ´Nå±KߪSß²Và¦KážPÛªVâ¡UÞ£^à©XѱVÙ·QÏ®TÈ©S̯OƲIι[Ì®X͹QÁ¶FÀ«M¬µ:«­@¤¢8² ?±š0ª”2§’4¯’7®Ž5´›4¯›?´š;¯¡0¤¤3™¤=ž3¤Ÿ4ž™3š—5œ’=•–:˜”+—¢'¤•.¤˜0 “!¬‹+¢‰­"ª…2§.£0²Œ*¡“0¦‡#°•0´£(§¢ ¯–&žš$ ‹/¦"›‡”"§—"œ™.¢Ÿ*¢ž7˜¦0¢Ÿ;¤ž=¯‹9­†<§„?ªE¤ƒA‡Dž…Mž€Hš„M„Z•‚O’~RŠ}K‰…OŽŒO…ŠP…€^ƒZ€a‡|PŒoK lS˜q^†ug‚rmet‰fmŽYo‡aa’\lŒRj’[r–Qo—eq•\o•Qj£Rc¡SiªZk¦\g§ae§as X`¡QRš^T¡[\¡Xb§L[ž]`¬Tb²Qo¨HiªPl²Rl¾RiÁG}¿Mwº;zÇ;wÅ?‚Ì)tÅ!pƒ›Àšº…›¿ƒ¤µ™®s›ªn“³s–±}Žº}•²š¶‚”¨Š–¬…œ«†£¬ˆ©º˜©«—ª••§šœ¬¡œ¬—§®œ©´šªª¨§¯¤¦ªš££›˜¢—¬¥¡²­¢¶¯¡¯¯¯­£¬–¤§›ª³›ž²žµ­ Å¯¥Ì²¬Ä¹¦À¸¤Ç°±Ò¹ªÑ´¨Ñ¶¬Ñ³§Ø±¨á±¦Ù«¤áµÜ¸›Ú°•Ö¬â¶‹ßÁ‡äÀ‹ấêÆ}ðÅtåµzî¶~õ¶yï¾ué½jéÇhåÂnè»oÙ¾cÝÄkâËmàËwéÅ~ï»|ð´}쾆ö½~ùÂvùÄoíº{î¾zðÃwíÀ~éÉzéÃßÒ|×ØoØÓpÚÓdèÖ`åÍgâÏaßÞaçÞeèêeòÜcêÖjæËjèÏsêÉuãÓsâÐoåÑbèÕ]ã×_àÐSæÉWã»`Þ»Zá¼PêÂVíÈOåÂYâÅJì¹Jñ»Xä¶Uë¬Uâ®Oà¯Hß»KݶEݸJÛ¶Ié­IðžYêžXñ `ìŸZÛ¡dÚ«\Ý´[Ñ°[Ñ¥KΧL΢S¢W£TʱUùUÅ´L»«K¯©>²­3¥¢4¦š6§”2¤‘2¬•=°‹H¨ŽB¦“Eª¡@§Ÿ7¬¡9¥§< ¦<¦¨;8–•4–”5¡–.¢“-¢”0Ÿ-œ(¦”%¡ˆŸ‡&ªŽ+¬‰(®†$¨†,²Œ#«‡'°‡"¨Š-­’.§›(±ž$­™¦‘¢Œ#§)ª‰&­’%£›$¦ž(› "–˜-™Ÿ4šŽ-©Œ2²‹0¬6¥‘9£…<žˆG¤@‚9™€C£wO›zV—zV—Y‘‡N‡ƒO†P‡L•S‘‚Y‘}YlKpJhRjWŠpa‡h^†nelnYi\i†VgXgŠ\sWyŸZsž[s ]s¡Xg•\l”Uf¤Yk¯Ul¨Xo Ynœ^\¤TT Z[§W]¢Ra¥Ve¤Vd«Vi¯Ij¯RmµNj¹Kh¼Ot¾Ky´DºHzÆ>}Ì/‚Ó$u‰µ|˜¶™»€¬¸vœ³r¤¶wš´j’ªtµx•«z—¯‹­| „—¡}™¬Œ§»Šž­—§°‘¤ª”¥¥Š©ª˜ ¦’««“­­˜¨¦™¨¥–ª–˜Ÿš¥¡¦¨ –®«§®£œ°¦ž¢¦˜®¨• ¬¢¥¶Ÿ¡´£¤¼¦®Ä¨¥¸¶«½´¦Ç­¨Ñ±§Í´ Ô²¡Ù²¦Í³˜Ò­Ÿá®—蹞᳖⯐䰒鳁黄޶€åȀìÅ|ð¾~í¶wö±sòÁkñ·nå³rèÂvèÌgç¾eÖÃiáºaâÆqïÃfìÃuçµp嵂ò½zñÊkù½kð·n÷½mñÈvïÁwæÂ{ñÂpðÑsåÒkÞßnáØjâÑcéÕoïÒdãÕgÛÖfÚçdáðnêájàÙhæÏvíÐwêÌsåÒsñÍläÛcäÔg×Ó]åÔ_àÒLáÆRäµYãÁXñ¿LâÅLåºMà¼Zð¶Oêµ]â·T×»RÙ¬QÙ·PÔ»EáµUׯJà­Qà·Fá®OÞ¡Yã©]ߛSå¦_ФPܨZЮLѪTÎ¥MӜEǞPÒ«VÑ®RÌ¡VÏ¥G¼®9´°3­ ?­›:ª¡<­<¥›4¡’>ž‘F±‘C¡Š?¤‘=³ž7±£D²ª@ª›A¨§7˜7œ¡,˜—4œ,¯—.š‘+¢—"¦ ) “$›‰œ‡$«‡/§‹.¯‘*¦'¦Œµ‹&­ ¨Ž#­Ž*Ÿš(‘0¦™$›‘*›—%‹)®Š3¦˜-§Ÿ/š•#‘“ š0Ÿ”4¤Ž6£š1¥/¨›,¯’> }Cª„G§yE¦|<œwD‘vFœ}P’vWŽ‹L„}M…QŠ†I•ŠW†O‹„Z–€^‹sPŒpPžcS•hW—v\‘scŽgj‘mb•[lŽ[j]p…[x‘Vr“YyŸUpž[v¡Ms•\u‹^m–Wc™To\t¥Nh¡[o¨^]§XaŸQe¥P\ªLlœJ`¡JX®Nm«Di´Rd·Gs®RtÃJr²MqµAy½F€À;{Ê8‚Ï$|ƒ“¼}œ·„¦À†­¸‚¬´x¦´uª¯kž«i¢­o¢®j™ t’¡~¢ }¡¢†Ÿ«~œµ€«­“«©“¬¤†¬«…°¦”¨§«¥–« “ª ¥Ÿ–¡˜”“œ™œ›œ™š¦¡®¢›²« ¯¢—¨ª–«©’§¬”§¯£©™«´£§±¤ ½´¨½¬¤Ç¨©Ç² Ã¬›Äª Ð­ ËµžÑ·“Ú¯—峝ﭓꯆç°}ß©€Ø¸„ܵ†îăïÀñ·yù²|û´nöºiò°jæ²uõ·móÇpë¸hä¹eéÆpéÂiè¿hè¶fëµiå­zéµlñÆhó¼n÷¹fï¼pôÂiöËlîÆtëÈpêÒnÝÕrÖÕsÛØjÞÔiâÕpçÐeéËjàÔpâÙiÛèsÜçtßÚnäßuãØoäÞlìÚbëÔ`îÖ[êÖaÜÄcãÆTëÊMò¾Hè½KáºNæÀMêºTâÃKÛ¿Räº\ݱXÞ±Y߯TØ·`à·WתMÛ©QÞ§Qß©GÜ°NÛ°Uã«SצUÜ¡\Ö¡[՛UߖWàœMÚ¤JٛJ˙Q΢F͙SӚWӞEȚBÁ¨7º¥3³©,®4¥¤5¨™5¡›=Ž<£„;ª‹@­‡<§9®—5¯©>¯¬B±ž>®ž7®Ÿ/®£:¨3£”2¯•4§™%™™"Ÿ•™$¤”'š‘(ª’%¬‘.²‹#®&¨‰'³Š ¯Ž(¤‹!+ž˜1›’5¥Š+¡–"•˜*–*£‘1¥˜*Ÿ–- ’-–”-Ÿ›.˜—'  $¥™-²”6°˜1¬Œ3¦ƒ8¡ˆ=¥Dš‚G”xMœuNyS–wIˆ„JŽƒKŽ…U„ŠZ‹WŽzQ‘WŒw`ŽuZŒn_’gWŠmT“j\‘rbŒme‹cd‘gn”[rˆZr„\rNuXtž[|”S‚›Mz›IjŽPk‹Uq•_l¢Xg To¨_k£]a§[e¨J^¡Ae¥Fm¡H\¨O[¨Oc¤Pp­Wf©Ok´Li¼Mt¿No¼>zµ9~¿<€Á0tÇ!u–¼ˆ•·›·‚­¶€¥ªwž°n£¢p¢ªh¤žn¥£uœšnš¢ƒ˜‚¤°€š±‚£ ­¨†°©ƒ¨¨Œ¥ª™« •žŽ¬§—¨—Ÿ™£¡“—œŒ¦“¤ž›¥“¢«¡¥¬¦¢‘¯¨–¬¤š¤´¡¯´ž¤³˜ª¹§¦¹±œ·®¥·ªœÁµŸÀ¨¡Ê¨–Ó²¡Óµ–Ó«ŸÜ¸˜Úµ•è¯™äµ”见䳍à§|Þ¨{䰂丂öÆîµ~ö·rþºoú´nù½oò·kë¹gùºgô¾qð­gôÀmìÄfë½cé´oè²oé¶tôºjëÃgõ¹níÄo÷ÈhúÌiøÍcéÅkçÔtæØmëÕqàÌmßÔißÕfãÓkáÜqÛÒoÝÔg×ànÝëpÚ×j×àpßÓpá×hçÔeìÝ]àÍcîÒbÝÎVßÐ]ÜÉ]ãÍJá»Tî·Ræ¾QÝÄGßÇSÙ¿TÕ¹Tè¿YÙ»bÓ¼[Ó·aÒ¸_ض^Ó²SÓ²QÖ§YÚ«VرFÞ¡Pä¦[ۙ[æ›Và¤ZÒ¡YÚ£QؚRٝNۚWՑV͛KϚWؘWӗHŗKÁŸ4À3ºœ;¶˜6ª˜3®Š@Ÿ“9¢G£‹6§—9¬ŠE®‰G¤£<ªž>¦ 5¨Ÿ9¤¦)²ž/¦¡)«¨/·›4³˜/Ÿ•*¢Ÿ¥“#‹"›•,•˜.¡‹2¥“.¢2«‡+¤"©ˆ#¬Ž%£‡-“%¥•*¡0–Ž/œ“1“1™š&–ž(—“6Ÿ*”)–š'šš5 ˜1¢š* š%Ÿš8£˜=«”<©‹9¨‰8¥:™<•‚E“|SJ‹~R‘{Y—ƒZ‘…c–wVŽ{e‹‰U’}Qz\‹q[ŽyT’sTwO’mV›f]k`‘j]–qlˆia„\t…Sw‰Wx’K]•OsšUy™Uu—IsžYv—W{¡Uz¤Pi¢\i¦P`žRl§Da¡Ae¡En§Hc¬K[«La®Lp§Nt©Jg±DmÂF{ÅBr»=yÇ3~Ä6|Ð1zÃ.|‚š°ƒ‘²„“ºv£¸y«¯~¢¥r¡¥uœ£n¢¢m——q–¢všx¢œƒ¥©†£«…£¤§¡‚ž¢™…­ž¢¡•§“›£–¡¤¢™œ•œ’’Ÿ•ž—‰ª’Œ¥˜‰«¤—¥ ˜ŸªŽ¦¬‹¡­•ª¤±ªœ¨¬ ¥®§™¶¢•®¤”º®œ¾´”Ë­ŽÒ¯”Óµ“×·œà¼”Ü°æ³‹äº‹ñ»‚íªŠã¦‹ãª†Ú¢}Ý©wã±ë»zðµyùÀrø¹lô´jó½eó¾ló¶eôºjú®nô±oø¯gí¼jï½iíÂkç¶tì¸kî®iì²uñ¿wîÀlîÃcðÑdóÚkõÑfñÎkóÔtéÔmêÎpàÎtßÝpÙÛqÛÜnÓÖfÕÖm×ÞoßÞnåÖaÜÝdÚØ_ßÚaÚØaàØaàÑ\åÈXéÈRãÏSÜÏOãÃUêÀ[èÂRè¾SÞÁQàÁUÓ¸VϾ^ÜÄ]Ü»ZÙµUâ°`Ü·aâ¬[Û±Tã«^Ú¤WߟPߣOâ©Tã¤Rç–Nå—Yå [؟Qڛ^á ZÕ£V؜SۚNڌYГNϑNȌBŊDǐC¸”:–4º‰3´‡;©‹>§—G«•@¯˜=¦›?« B°”E¨¡E©A§ 7¤¨-¬ 3«§,µ«1¶©-¯¥)­ž(¦ ©™'¥—&š –ˆ,¡'˜”,œ—*¥•2 ‰0„)¨*­€$«ƒ,‰/œ„&ž‰/•”.-›’.‘Ÿ&˜›)œŸ(£—0—”,™Ž2žŒ7¡’+¦†1§‰+£. 7›‰*¢‡. ƒ;ˆ9¡{D¡{@“…A”ƒNš€UŽ|Y„[–{`ŽtgŽ~a˜ˆf˜‚[”]•v[—pW•uW t\œuR•pX—nW—hZ‹kZ†[hŽZm‰X~‡T}”M~‘S|G}‹Lv“Is—S{œT€O}žWršTn›WhžHm¨Hs£Gm©Ge¤;i¥>fžDg§@k¨:k´>l°Ct´@q¼Gy¼DzÀ«ˆ6¯ƒB¤Œ4´™B±šA¢¥>°¥=£žLª’Cž”FŸ™6›—.£ž*­™'­¥(©¥"«•$©¡%¤“"©”(©–-•Œ–…0ž‘+œ“ ™‹)¡(Ÿ/¬•+¦Ž,¢–)¯Ÿ’/™ˆ%¢#–›$œ‘2šž(œŽ4š4Ÿ—)ª–)¦’)™‰, (ž•(™—)ª•.ž˜/œ:’†7ž1‚1–…:˜{Bžx>Š|I‡‹R–~X‹t[™‚R yV„bŽ}b•tQšT˜oWŽkak]•r\p[¡sc’iV˜sRfV‡b^•hp—fxŒSmLs•W}‘YzŠV{…U€ŒMr’KuM‚•K™I{ Rx£Xj•Tp”Nu”Rj–LfŸCl§Gf¤QuNq¦Cy¦Ir®A€¦Mƒ·CºG{¹6¼AuÆ8ŠÉ4€Ñ6Šm‰«w¯xˆ¬}”µq‹³rª‚–ª€•«t’©m§x—šy£”} ™„©™ƒ¡ ‡¡‹¢¤‚§šƒ£˜ˆœ›£¥‡  †ª–¨Œ£ž’Ÿž‹ œ”’–ž•ž››ž¡£ª¦¢«¬¤¥§–ª¤¡±•ž¬¥³šš³›œ¸¤ ¬¤›±ª‘±¥˜Á¨¿­À³˜¿´ Î©¡Ì±šÛ´“Ö·‘Ôª†Ú±~Ù¨…Þ³ŒÝ®‚â¬~ì¶ró¾nô½uòÁjæ½bë¹Zù¹]ÿ»e÷¶jú½k÷½còÅgë½dàµb߶oá½sî¼eñµoó¹wïÂrâÀoÜÄqßÉcèÍ]ò¿_æÄgãÏ^ìÊhñÓdôÑgïÇtëÂ}ÛÎwÚÑ{ÑÙq×ÝgÜÛgØÚdÙárÔápÐÜhÚÎfÖÎXÖÆ_çÂ\êÀXßÅJß¿KìÆOîÈUíÇVë¹VؼNÕÆKÏÇIÓÆLϳZÔ¶aÌ´`Þ¼Sà²RÒ­Rз`Ô±bç²Tá¤PÝ£VߚLæžPä™Oà”Mà’IٙGۜGݧV× NߨEΪSΜO՗BЌAґ?ύCӘ@œF¶ŽJ´’?¼‘G»ŒH²‘C±‹5®‹5«—8¯–>ª FŸ£<Ÿ¥A¦ŸFŸ“9©-¢•,¥›(¨œ,¥š#­‘&³“!¯ )­¥*©™,¥Š0€+£5£Ž/žŽ)¢$¥%ž—"¨Ž#©–+¦(ª‘ ¥Ž,–“5¡‘.£—'œ(œ)—”-‘. ™4§›*™Ž$™’ ™!–’,•œ2 š1—“0˜”:•Ž:Ž„?“Š7™„9‘{D‹}B‡yH†‚U“xQ‘z[yWšyX’z\•{R}^xXŒr`kXšpZ¢qe£f_škfœu`‘rZ—kdjh•ip’cyUvˆRq”Yv•TzŒL{‰OzˆRŠNw‰PpQwžL€ŸNy™Ip—Uv”Op“Ug—DgDb¦Jh¡Ou£J{šHyžF¥L¡J‡«M„·K‚½9zÉ9†Ã>Ç=„Ò<ƒn|²|Œ¶xˆª´x˜²r–¬‚Š§w’¬u“£oˆ¦p•p¢”z¢—}©¡{¤›ˆ©¤§—‡¥š…—’Žœ–‹’ž’¢£ˆ¡–“«¥Ž¢•’ž›–¢”–’ž£¡“›™¥©£¬ œ§­£§¥šž«£¡®¨­ ©¬Ÿ¤³±¦±¦š´¸™¹¶ŠÂ±“ꊵ±’À±¢Ñ ›Æ¤”Ì¥™Ú³…Ö¦ˆÐ¢‹Ù°Œà¤~ܳ€Ý»~óÁzî½gø¿rö¶bæ½bôº^óÀZìÂ]ú½iô»kñ¸aï³föÄmà¼fÚ¿iéÁgé·oñÃrò°vé³oãÄiêÃeàÎbëÆgîÀhãÀlàÎZßÓhß×véÔmæËußÍxÚÊjØÕtÙÙv×ÓkÜÖoØåkÒåwÓÒsÐÛoÖÐjÓÑdÙËWÜÆXèÇUÞÃMæ»GéÀKã¼[èÄ`ãÇYÖ·SÒ½LËÂFÆÄNȶ^ɶ`Ô«a×»WÓ®ZÔ©QÙªbã°ZèŸQâœ^á¦Sé¦Tە[å–PæIߘBڞNè¤Nè®På›LӜ>Ԗ@̘NԖ@ڔ;ԎI̓C¾ŠDÁŠK¿Ž>»‰LÁ„?µ“EºF©>«…@¡ŠA¥¡BŸ >£ 7•š0–—4›’-œŸ/¬š4°¢0°–3º”+¶—1¹“-®˜4¬œ.µ$¢/ª},œƒ2Ÿ‰-¡5°Œ1©,¥›-¦›&´’$¯”%®žŸ’0£Ÿ:““4œŽ6œ6””.œ•&“œ-˜˜(¬'—‘"”'•'–&›0Ÿœ*›1••>•ˆ:Šx.š…=“=šC‡ƒDˆ‹HQ”…U’‚SyTvQ–yT˜yT‹uY‹y[•kT˜mZ˜mažu_•o`šrWŠkg“n]hf‚hjŠ`wŽexWtƒPyX~’\q‡U‚Vr„Xz”Hx–S{LƒŒNxKm’Mx“VhšTq[e›Uc˜UeŸKgKoŸU‚—HœS‚¢EŽ¬J…´D‹·Eµ<Å9ŒÁ<Ì=†Ï8~{„¯z‚®q‘°y—¯x·ƒ•²†²|…¥u…¦s˜z›¢wžœz•˜}˜—}—ž¤§€«¤€¢™‰Ÿ£Ž“œ‡’“Œœ˜Š›•’ª›Ÿªš ¤’Ÿ§‘žšž“—¢—–¨“¥ ¤¦Ÿ¢™¢¡œŸ¡ª£¥§ž«¯¦³¨¢®©®­ ¥®–§¹“®¼‰µ±‰½¹–¸²”»©”ƤŸÏ¢™ÊŸÇ©“ѯÛ­”Þ§‡å¥ß´‰è´ƒî¼që´ní±gî¹aô½\øÆXñÃYúÃXñ¸aõ±iù²gú¼kó¾læ²qå·tã½xä¿xë»m÷·sý¿yó·näµhàÂjÔ¾vÙ¼rÝ»jàÆgàÏuÙÍzØÔvàËzÞÎkÑÆmÔÐmÖÊt×ËrÊÛoÒÕuÒÜtÙÎuÙÐjØÉcÏÇbÑÊfß¿XÝÉKéÄJïÃNå»Rê¶Zç½\ì¹Nâ½MßÁLÍÁRйRϲY×·XϲXȱWÍ´ZÚ¯]تTקTå™Uà™Pè\éŸ_áZݤVä™Hî–@éšGߧAã£LÜ¡HїC̗GÑ @ӝFҌCÆCÁDÁ•FÀ‹?ňA‹KºŒG´‹@±@¥ˆ<ª‹J¦I­œN¥£E™š>™™0—“0Ÿš-§œ1§š7¯œ8º›>µ¤A¼:º‘;³.¶“*°‡"®‰,§ƒ+°3§ƒ3®‘5°/§™&­™+©ž%¯›©¢Ÿ!¥¤2¡ž1–¡7’5’›8—6ˆ˜,š'“—. +Ÿ‘2š”+‘&‘ž%’˜4—™1“6‰…2†„4’z*”…1›„6ž:“ŒAŒPŠ‚SŠ„O{M’zZŒqYrN•wRŒqSmZœnU›oY¡j]›mc˜jZ‘sYŒiaŒpa‡qc…hs_x‰cy†ZzŒVŽ]}•Tu•Vz‹VxŽR~‘Sƒ—[yU–Sw’Rpœ]r›\hŸbk˜XjWg—\t™Yt£Pt¥O|ŸW†©P‰£O‹«MºG¶F¾I´L‘»Aˆ·;À<Šv‰«~~³|Š®x†¦€—²{‘¨€…³€Š¨vsŽ ~¤{—›x¢˜¤…œ¢›¨†¦¥ƒ¤¡…›’“Ž•Žˆ£Œ¨”—¬””š–ž¢š’——¡Ÿ’£ ž£¢ž¯®¢¡›ž¢¨ž¥Ÿ§²°¢¦ª£µ©£® ¨¨˜£³Œµ¦“¸­†´«“º¬’¾¥œÄ›šÃ©Â¥•Òµ’Э‘Ôµ„屉筍ݰŒæ²yî½tã½uá­qí¾]ð±jé¾Zô½[ê¿_ë¹gö¸bó¨]æ³dç¼dî²të¾kçµtîÃqó¯oç´dó¾uô¿läÊiÛÄdåÀeÕ»nÞÌqÚËsâÆnÙÐs×Ó~àÖnØ×jÍÊt×ÌhÎÓoÑÖrÓØrÌÞlÓÜmÌØfÖËcÑÉjȼaØÆVÞ¾TÝÃIèºJâ¹UìµSÞ¸^ß³[â¯NØ·ZθNËÄIÌ·UѼP̲Y×®^Ú»]Ò¬PÕ­[ЮWÖ£XۗRêŸRôŸIèŸOâ¥Uê›NڍLè”CےHØ£H՚IϤNÒ£?ٝIË¢<ՓCɌFЅH½ƒF½„=¾‰;ÁBÁ‰L¹Œ>¾>¯„:³‘5 >ªŽB©›@žœ9©‘Dœ@­ ;¢“0ª =¯™?µ“;¼˜@¹—@¹™9·œ,«‹)².·‰*¨….³,²„-·‡:³Š(±‰!®™0©ž.ª%¨Ž ¥ž™ !–” ¡5œ—;Ž=š3”“3‘”7–¥',›—$›Œ–‹›'”¥–œ-—•+‘‡0Ž,•~+†x-ˆ+”Š8ŠxAŽ~@’uPŽ„QŽMƒzLŒxY—x[‘mX’zc‘yZ•wb‘t[–dc’r^Ÿhe™la›mh˜lY‹kcˆll†`l’fo‘ps”bu‘Zˆ—_s‹Pu‡boŠ_mŒX}˜\†PyŽX€‘Y|Ws—bj fc›_obu˜Xt¢Ypž^|œTt—]zŸT…¢Uˆ¯Oˆ¶L‹«J’ºI”»O—·A…°I‚µEÌBŽr‡§v„«v€¤w†¬xƒ±wˆ®t|±y~²{‚®~•¥˜«|‘¦z Ÿž›ˆ–­—­Šœ£„™§–›ˆœ‘ —¥‰¯˜‹§—˜™’š–™œ™’©“¢ž¢žŸ©¥¨££¨¥¥¢ªŸ›¢¦¡¡®ž¦£”®®š´ ˜¯ ”µŸˆ®¡µ¨¸£’¾¤šÁ£’ݙə–š“¼ª”Ê®ŠÓ¼ƒÜ·„Þ©ŠÞ¦‡ç±€ä©vá±oÚ½fä·lç¯hâ¯gëµeë¾QíÆZðÂbì³fè¬cí¶cçºeßÀmæ´në¶hì¸lð¶hã°féºuíÅ{ìÅ{äÇnÝÇmßÈjÕÁrÜÄxÕËtØÄwÝÉwãÚrÝáiÖ×oÔÖcÒ×hÏÖbÊÔhÍÝg×ÙqØÎcÈÔeÉÈ\Ò¹[ξVÔ¾WÝÀOí¿Hä¿Hã½Xç±Xâ³XÕ¸SÔ¯WͳKÌÁNÕÈCÑÀI×»YÔ¸\Óº_à¬WÚ®RÕ­Nß©NÚ¡Pá¦HîžGå—JåžNäŸDáŽHيGۖQ؜PНB˕K՞JÜ£CÑ IՓFȎI͎>dž@½‹@·•CÀ•@ƃJʃM¿A¾‹3¯6­‡<Ž<›ˆ>¤‘>­’F¬’C·‘3°™2§•:­•G¦ŽL­˜@·–@½ 3°’7´Š.«ƒ,­‰;ªŠ-±Ž)´Š-¹€2º0¾#²Œ+©•)¢+©’"¢‹› œ™#–’0›˜=–’8œ1–Ÿ9‘¥4˜ž&˜“(›™““!˜Ÿ%Žœˆš‹‘'Ž&Œy0‘~;‹…7—†2“4’|7Št>ƒp<‚tK~€Pˆ€O‰‚Tšvd—zf—sc{[’yY‘u\ihšgh£ma›qcžhf˜ad˜i^Šheejˆs{Žp}Šqz—g‹f{[t“_{‰aq–^€™X}‰\x†O{ˆSz†Ypaf˜_lbr—`ušTl¨VnªWxœW€–Y{ŸX…§Xƒ°Y¨L…©NŠ¯C—±H—°O•³E¾>†ÊB†p|¯j{²s…²pz³oz½zƒÀr|º||°…‡±‡–³z“¨}Œ¨xŸ|•˜‚–Ÿ‚œŸ‘‡’¨€œ›‹’˜’ž’”Œ–••œ˜¢–¥••£“ª£›ž  ©—Ÿ¥•®§§¬¤—¡¬œ­¤£¨§³¥—´¢—»¨—« —º Šµ£‡¹ª•¹¨‹²®”¯¤º¨•¼—“¼ ‘¸«šÀµŒÇ¶Ö¶Ó²~à¸yê­xä¶nà¾gã»så¯nÝ«låªdä¸Té¼XêºUò´_å¹Sâ¬\íºWâ»YèÂdâ¾rå¯hð°jâºké¼mç¹mæ»mê¼pçÃxßÐåÊpåÉ{ÚËrÞÎrÙ×uâÖráÙuÖÜnÖÐ}ÒÐxÐÜdÒÔcÊÏrÒÕiÊàeÖØnÔÕqÏÆ]ÑÄXÒ»TÚÃPãÀ[ïÄJÚ½KèµTä¬Lç¬Ná±UÕ³VײQѹSÔ¶UÍÃJÙ±MÔ±NÑ«[× L×°TÙ¢FÖ®RÞªSæ˜HçœEêžSݑM՚WۓV֟WәGِQɐ>ʞLÖ£OÙ¥LܚA˕JǍ;ÁŠBƎGÀ‡NƏ@ȋEÀ@ƄI¾@½‡:¶“9¦9Ÿ–1¨‘1£2©”8¯Œ>´™E¼œ=®Ž<¶ŽB°•B¸¡Bº–6¶¥1¾’/°˜;«Ž<¹”<¯6¸‘5½‘$¾…1°)µ‹$¸” ª“±#¤›œ–"˜—- Œ"š(“•8“’9;œ¢:—.“Ÿ0‹™‹––•‰š‹žˆ™!Ž#‚ƒ$†€/’z8ŠxA’‚=t6†:’u:s@uJ‹uLxK–yZ˜{fœ}\ ncra’wgžjj™po¥al¤cX¤ngbd¦md”j[˜^išgb–nzpyŽnƒ—q|Šgr^n•iŽm{˜a}c{PzŠ\z”YyŒVu‰Xq’X|•^lžax [w›V{N{¡N‚¨ZŠ¥Kˆ©S²\‘³O‹¥B®PŒ¸N”µ>±G¼I¾9hƒ°jy¿s{Ár}½wyÉ}yÃ}ˆÂ}†·~Ž±‚¯xŠ·vŠ´w‹¨†–¥–©†’¡„‘¢}›˜„˜„—“‘–“’‘•˜œ‘˜›™™¤–§ ¡ “£™Ÿ‘¡£“¡³’¥²š¨¶§¤·¢£®£ª±š©¹–Ÿ¹—˜´¢”³¥–»£™¹©Ž»ª‰²¦«¤–¬ªŒº­»¡Œ¹²†ÃµÌ¶ŽÉµЯ„Ô·|Û·uÝ´tݺlÛºlà³må³méªbë¯^ä¯Vî¿Zè·Lð·Oò°Yä¶Yà´Vç¿Uï»déºfî®cê²lé¼oß¹kêÀqïÁkè½sëÆ}îÆ{ãȅî҃éÌ|ÞØ}áÙoÔÜkÔÕwÕÛrÊÓ|ÖÒzÕÝqÓÙm×ÙjÓÝeÌÕiÊÛnÕÐoßÅcܾcØ¿]â»XèÀWà»UåµIÜ­Hå®KÞ²KݳMܾSܾTиTÚ²UÖ¹YÖ´XÒ±QÕ¥KÖ¤Ká®Iá¨Lå§WÝ¢PáœLà•EٙM܍TߙOՖTҗN͞LҙM̒Aԙ@̝EΚ=؝?Д6ț=ŞGĒJƏJĐNȕH½GÊ>¾ˆB¿‹7±“9¦.¢2œ‘9¢“5›‹5¥‡C­=¶ŽD»“L´B­–<´œG¼™<´ž<»š;²˜=µ˜>¹™9µ1¸Š1¯.³Œ±ŒºŽ °–%¯š ª’#§“¥›&™–()•”0‹.—Ž5™”8–˜,–+‡“-“+‰œŠ‘‰•‰‘‚”%‰‹+‹Œ-‰1ƒ3„v@Š|FŒz;•wEŽuBvOŒzN{KsSœwT›ta}k¡ug¢|_žtg ke¦ekªf[Ÿc\Ÿ^g¤ge¥[cž_ažiišgfŒsoˆqx‚ut†ww‚w€oyŠt~‘n{™mv‘^|“[q™Wl›]s[o‹ZwšS|—U}¢Yw—]†šTƒ Z¦SŠ¢J…¤M…±L®O‹§M“¦CŠ´J²F·K‡µC’¸9Â7Œe±iv®s…¶nŠ»}~½ƒ°zx²x{µ…‰ºˆ²~‹«t§r“ªš›y™ †Œ›‹— Œ–…–Ÿ‰¤˜™–’‘—¡›™¡ “Ÿ¤˜«™ŸŸ¤–™¡˜—œ®”Ÿ¬Œ¦³£¨²™Ÿ´˜¤¯ž¢¦›¢¬¢ ²¢¤š‘µ ´Ÿ~°¥’« •¨ ‰ª£‡¾›‡¹£¹¨Ä­Ì³„ïwÖ®Í¹t׸wâ´sÔ¬uå³lè®lã»eð½Zö°YêÀVí¶Pð´SçÀ]áÂRä³Uâ¼^çºeâÁeÜÁpà´fá¯cé±aÙ¶kè´ièÀgãÉvã¿zÞÄxݽ~×ÃzÜЃÛÓäÍyÑÌw××kÓÍ}ÆÈ{ÆÜl×änØàtÖÓmÎÙdØÙlÏÎeÒÙ_ÖÎbÖÂeãÆWåÆMÚÅUÙ½LÖ¾SØ®V׺Mß»C×ÂIݶVÌÁPDZLÕ¸[Ùµ]ͯPÒ·RÒ­FӛOҟD՞PߟMä›Mâ”EەOߜF֕NӜM֕_Η[Ë VƔAŔBЛ@ۜKס=ЗBٞLƞHǛDƒGĐM˓G¿‘L½I¾Ž<¸•:±‰:®–5ª=¨;¢ž0¨•< Ž:>©ŠF¨–>µH©ŒJ­˜D® ?·œA±š>©Ž6²Š@¨–A°“>©‹0¯†.·…%·“,­Œ#­%ª'«š«’³™§“# ”!£š-’Ž4—/–’)‹š4–˜/Ž $‰#™-ƒ•Ž%†‘ˆ¢%Žš%Œƒ%‡Ž*‚Ž/†v/‡9‘r4ŠzE“C‚EŽzL‡rG‰sM™€\•{X§yZ©oh wl {d¨yt¤oo du›gf¤uW¦a_ kn¢\g¤e`›nnŸinŠioxvz–rtŽu{ŒjkŒn~n{”b„”cy‹\užbseqgq–^s§Q‚¦aw¡Pq¥SwœUv£S®MŠ®X¤N«HºC†¥NŠ¤I‚³OŒ­Q•±BŽ¶F»D‘»1Šb~¤h~ªcƒ¯o‰¶n®xƒ­n}´o€½±„Œ§v’©r‰¡sŠœu™›z“¡~Ÿ†“§‹Ž£}ž¢Ÿ‡—ˆ——¨¢¬”¦­”¤œŸ£§˜¡šš¦§£¤¥²Ÿ£³Œ›«›± Ÿªœ›«—™¦–ž¤¦ ¦–˜¡–›Ž£—›žƒ£¥“©§Œ³˜ˆ¸žŽÃš”Ç¢†½¢{¾¦|ȲzιuÒ¶qÔ·{Öºwß®så¦aÝ®]á³bâ°Zó»[ôÁVæ¶Wíº[éÀcìÁbæ¼_é¾cçºiÞ¸uÞ½që»géµjè¿fÙ¼cÛ¸pé½rëÁæ½|ÛÇxÛÃÔΆÔ΀ÙÅzØÆwÐÒlÐØmÍ×qÓÌvÖÝsÇÝn×ÏhÙÎhÖÏrÖÜmØÔiÓÐWÏËUÐÄcÝÊ`ÜÃOÐÈKÕÂTÚ·RÞ¶R×ÂHßÀIÛÃJÜ»MËÀJ÷OȸUÕ³TÛ­U×­RάGԛJїH؛FߒCàšIޔLؓJÛ¤EÔ¦MΛS̖ZÉ¢ŢQàDțGבGٔJÒ¢G؞HםTїOďF¸“FÀ™Dȕ@ʙI»A¼7·›=²–>´ˆ3¶<¯š6§¡7Ÿœ1£’5£ŒH¦ŠI£–E­žA®–J¹£Nµ¢Aµ‘<­=¢ŠB§‹:¥A¦†@°~=ª-«ˆ'ª‘1²+±‘ ¹±’¯²™!«”«ž$£œ/˜‘)›Ž&‘.ˆ 0ž.–¡"——$Š“(ŠŒ)Ž.ˆ‘)š+‹™#‹’"‰Œ•1ŠŒ6†‰/„x5„s5’uB‘‚OŠˆP‰yOzG‘uG|Tªz_©wa¨{gœ|i§pq¥mq£ru¡sn™qhv[šw\—hižjk¨ccœmqœoq“mwŠpwŠt}•|~•pulnˆl{Šh~…mƒ‘f…ŒjŠ”d†\Še}e†¤^~¢Vv¡Wp¬Qt¥Rs±Pv«N±O‰³VŠ²Gˆ´E€·Oz©K€¤SŽ¨L‘®J–ÀG‹È<‹¾<f€ª`{±b€°c‚¨q~§w€«w…µs„°‚„µ…€¦ƒ” v›~‰œsŠ¦„ˆ¦|›}‹§‚›¢Œ˜•~¢˜‚›•“—”–›–¨ª˜™§– ™Ÿªš¥¤­—ª¨˜¯™œ²œ©‘•±ž•¬¢®š›¤–¤™œ ˜’ž›“¥š«“†¢š­Ÿƒžž°«³¡|Àœˆº£Š¾™„¿¡„È©wÒ²xˬrÕ±uܸqÕ·mÜ®kå®`ܧhá¶aêµ\ó´Vçµbð¶\ìÀ\æÀaá¹`ãÄVàÅeî·eæÁtÞ¼nç¶jß¼pؽlÓ´\ݵpê¸vèÄqßÅuéǂÔÄtÙÐÙÉrÖÒpÇÓqÓÍnØÔjÐÑiÚÛqÏÖxÐâkÓÕlÓ×_ÝÜcØÛaÖÍ`ãÍQÓÏUÍÀbÚÀTâËUá¾OÙ¹[׿QÛ´VÖ»IܺKоJ×¼QÔ®X̼NϪWשPѦ[ܯ^Ù¤WϖIӑFÔ AݓDזDޑSРFÚ£QТDÍ¢NȘ^ͤVˤPÒªUŚN˜HÚ¤DזPϝE՝I̐FƑA¿ DÞK»—D½ G´ž@·‘Eº”AµŠ6±ƒ5­@¨”@¤–6¦–<¤¡A©J¨œFž“JžR°ŸT§£R¶E·•K¯’?©ˆ:©Ž:®:±…C­<®ˆ1«‰)¬ž*²!¨›#µ˜'¯˜!²¢¹£ª$¡£$¥™&‘›&œ’3“›06”'’”3–˜&†Š$€‘2Œ‰'Œ‹!Œ–*—#‚“+‡“'‚“1ˆŒ2’A‡F—}:—E†E‡{FŒ€I™†V¡z]w\¤wc§uk›mp£yi§rtŸkr­nh¬wpžm[ xo¦lr£hn¦ej§sq’uq—mp“r{’pršnx“s{kn”hr’ky—g‹š`ˆ˜k‡”h‹Œl…›f}’\ˆ¬Uˆ¥W¡OsŸ^ož\{©Uv­S~¬O‚©I„­P}²CƒµF}·A~¬H†¬A–»<ŠÄ<Ç6Ç4‰[Ÿ\ˆ¬h‰©f‚ªl„©w…¬yˆ©t|°{{³‚‚¬€…›–›|Œ–‚ˆ¡…Š¦z¢~”¢š¢‚ž”†¢–™”“¡–“¦ ©•˜ž–¡¤Ÿœ«£¢¨¡¡¥š«™–®˜§’“©“›¦Ÿ ¥§›§¥¤™™™™ˆœŸ†ž”« ƒ©œ~£™‰§§ƒº«x»«{¨z¾›ˆ¼˜‘¾•ˆÎ ƒÎ£‚Ø«uÕ«wÎ¥zÕ¯qÕ£jקcÞª]ë­]è¨eñ³^í³Sî·Yé½\è²`êÁgÞÂ\à¼dä½hãÅjâ½tÛ¹sã½pä¾sÝ»fâ¾ué¿u踂ç»ÛÊ{ÚËtÒÐoÓÇrÔÊyÇÏqÍÖnÏÑwÇ×qÏÝmÆØjÍÖmÑÔfØÛ`ãÕYÜÒ^çÐXáÐXãÇ^Ù¿VáÅVßÂKصNÕ·RÒ¶NʲJÖ¸QÑÁUϲTÑ´RÍ·Xʱ^ΫRǬT΢_Ó¢^֖XҔR֓SܚLӒQ̔KƖKѝNͪDȪKÅ¢PÊ©XÊ©QצXÛªYÒ¨XЩTФMÇ S͗GГGƖIßNÁ¤F¸¡E´¥E´œN¸ŸI»›I¿”Fµ‡;³‰@±‹?¦•D§@¢š@¢¡E  >¤žJ ˜Fœ–O¤™R³’U·˜Pµ‘C§Œ<°<«‡9¥’3­7°Œ;¬Š3ª˜.®š0§›0«š%¨’¯›©§²¦!¤ª"›¦)•¡'˜¢0š¤-•˜3šŽ3–‘.Œ‹(Š‡-~‡'‚.ƒ”.„”"~š(ƒ“"…—‰'(„ˆ.’5ŽŒ<’F˜„B‹?Ž„@•EŒ‡Q’~X¡ƒTœ‚b§t_¤j]¥jj¨sežri¢w`ªvg±~l¦ulŸzi¤rt«kv¢op xr™pg™xmŸxr or£l}›rt”tx˜f”f‚œ`ˆ—\‰“aƒ’dŒ›`‡›g‡£`}£Z„¡\«Tt©Pv¥WŸZ{žSz¥EwªGy«@‚»I…¸A†·@Œ¾:Œ³E‰¶>ˆ¼8ˆÀ?Å=‡cŽ¯`¦gˆ¡lŒ¥e~ªh~·ey°p{µm«zŠ°sœv— r§€’©sž~œ~¨}™…™’‹®— Š ž™¤“—Ÿ—ž” °— ¡›˜›Ÿ« Ÿ©›–¦¡“²˜–¤Ÿ¡¦Ÿ¥­ž•Ÿ ˜››”§š‰¡”ˆ¨–…¦’Š™†¬©|®¤º«†¬‚³˜„¸š‡½œƒºš‡ÃžsǨ{ظnЬoÚ§vѤsà±`ã²aåµ^â·hàÁWéÀ[öÀVä²\í®fã´[á¼[àÃcÚ·nÚ¸yÞÀnæ´v×»m׸iسrçÀeçÃpâ»uä½åºzÒÇ}ÛÍnØÄqÖÊjÉÇpÑÒwÕÒjÚÔmÔ×kÑÒfÎÒvÓØ`ÐÐgÓÌ_ÞÆSÔÂRäÅVÖÉLÛÀN×½PÚ¾P̾TÉÄXÊÁNÑ»PÐÄOÊÉKÛºUݱ]Ƶ`Á¨WͬZÏ´]Ö§\͞c͕Q̛MܕJТMʤFӝRҜPÉ£WÓ¡XɧE̟UÇ¢MɬNÒ¬QÈ°WÖ¦^Ï¡WÁV͙JÓMÈ E¼™I˝Q¬AëOœP¿™L³ Mº J¬“I¶˜J¤‘>¬’;³–8®˜8¥ŠC¤’9£’?Ÿ•>˜‹?œ–A¡ŸHª˜H­¢F§—HŸ—C£…7¤‡6«“;¦‰3¤•6£’4®‡1¯0®‘2¯–/³"¯š¥ª"«®%¬§¨˜%¡—%• 0™¡;Žž/‡™3‰”,…Œ5ˆ™'{•*y)€™*„–z— }–‘(‘+‘—*Š”5‘“8‰Ž2‡@˜‡<™F†7‘ƒCŠ’T™Qª~O«wV¨tg§rl¯plªl^¢{`¡}f¤}m°to©liªugªzp¬ll¢w~œlm¨~r™~vœzt™wz•du™fm˜qu™tr›l}—aˆœf…’iŽ]žb†›`ž^y›WvžW~¯_u§Z€£Uƒ¤Oz¥R‚¤J®L}±J}´R´A†»>’¹?‚º@‰µB‡µ:ŽËB’Ê;†^ˆŸS€¥a¡f‰¥n‡¤ez²]}ªd‚³g”­e•¨h‘œp‘Ÿ|Œ§xŸuŒ y–¡t“œt”˜y¤Ž~«Š‚¬—¦•–œ˜–¡Ž•¨‰œª’£¤’›œŽš˜‘©£ž¦™ž¯˜˜ª¡ ™™›©Ž¤¬’¥¨“ª£‰±¦€©žzœ—xž”„§˜|¦¦‚­œ†§™€ª›ƒ´’}½›ƒ¹ª„Ųƨr˵mʶpЫtÜ­sݧpÚ¯hà¯eÝÀlâ¹`ßÂZâÅSôÃWïÆbá¹`ßÃfæ¿dÞÅiá¾påÀs߸vâ±wÖ¸qдzØ´tݼjâÈiâÅgáÅqØÀxØ¿uÚÀyÐÇlÖÆqÑÃtÜÍsÖÏlÞËhÚÊnÞØpÐØoÓÚnÌÕ_ÒÉQÏÃPÓ·]×¼XÕËTÜÈKßÉPлIÄ¿MÈÃXÄÆK̽LϾRÔÉPÙ¼]Ù¸`Ù®eȯZÙ¨YݪbژeؖdӓZԒQ֜TϚQƛOʦOÄ¢NȚ[͞WÔ¬LÓ¨GҟPÒ¬YʯPÄ´U˪bȤV¾™P¿›QŕFŝQÜLÉ£GĬF¼®D¾žIÀ O¼ EªŸK¦•Bœ•D ŽB¯–C¯•7¯‹:¡‹BA™@˜Œ?œŠBœ“;¥—<¬›F¦šH«žC¢’C¦“6¥„0¤’5¯’1­Ž+«Š+²Š/­ˆ&©Ž1¬,¤¨*¦¦ ¡©(§¬%§¤!ª—.© 7¡š/”2Œ’6ƒ›.„—+‡—(} 1y”5u™(p¢#w {œ‡‘Œ—Žž ŒŸ-‰˜+…‘.‰“5Š‹;„FŽ…>–<”D™‹Nœ}W¤zO®v^ªpf®q^¨m^›odšsdzr§vn¥zj¨og¢tp¤kž|u¤nz©|u­|~¥rt—wmŸhy—jv”snŒqk‰s€•k†Ÿg‰˜e‡Ÿ]™\†–Z_ƒ”j{œeu bt£Xk©Y~¤X‚šP‹Dƒ¦Gˆ¬K€¤Bƒ­J´C‡Á@Š»:Ä=Š½5†½:“Æ>”Ì7‹R‚ªZ‚§]Œ¨\‹ª\³a®[ˆ°k…±aŒ­eŒ¯m—«k–—o”f‰‘mš z•Ÿv”›‚¡“…œ†£‰‡¤ƒ—Ÿ‘˜¨‰›£‘ž¦Š—­˜œŽž ˆ«–£˜ ª•œ¥š•¡¡‘¬œ›œ˜¨«’¬¯…¡ƒª¨€Ÿ–xž“ƒ¡¨•…© Œ¢“{¦•}¤’†§Ž‚µ”€Àu¾ª|Æ£kÄ´hÁ°pÓ¹nݸtÜ®wÛ¸kÙ´nâºmÖ¾lÙÅcäÈ`ëÁ^ç¹Yß¼cá¸XïÂeÝÀcݵrØÀj×´oÙ°nѹmÞ¿hÙ¶mßÊjäÌcêÏhÝÃjÙ»tܺuÙÅf×ÍjÛÃyÙÇvÖÌiÞÓiØÇoâÎpÑÏjÜØlÕÒbÏÊVÑÃVÖ½QÖÂ[ÓÄPÔÅGâÍLÏÈF×ÄP×ÄJÓÆ\˽XÄÁRÓÄQÖÌPà·bܲcÚ±fÙ±_Ù¯_اiâŸc֜dڛ_̚]ϛWМX՚\Ô®QѦV֚OÛ¬PÖ¤ZÓªJљVؤ^˧YÈ®a΢`Áž[Á—XǤJºŸNƜHº¢T£SÁ£E¶¤B¿£KÁ£@¶™8¨“6¬9ž”D˜„=¤‡5¢’4©“<¢Š:˜Œ9¡…A£‘A¤Ž6”;©‘HžœC§‘G¨ŒH¨H?ªŽ-¤‰9§Š9«‹'§Œ1­ˆ0ª‹,§™#¤¡ ¬›*ª¨$žž#§¡)§¥%¬Ÿ$¬˜. ˜6˜™/‡Ž+“*¤3‚*w¥*|¡*t¡/‚¦„š„ ”%…‘–‘”†ž"‹˜'’š.•—/˜‡D ;——;œL¡‘R•„L~J¨|U©kb¦mažka i^”jfš~j¥|m¥qg©vo¡i¨~p¢~uªns¥tx«xt¨u}•ty•pu—fu•dz˜kt™ky—_ža‚–bŠ™b~¢hz›e„£\z›^~›\s©VoŸ^x¡P~ªRŸP†¥I¦M‹¦T€µF†¸>®I—¿D‹¿DŒ½H¼<…¾;ËG—Õ;ŒZªU«Q…¥R†¨^{³Y~°c„«c…¯^†²]…ªc’¤e˜œkœ˜e‘k’Œu™ž~‰ªƒ†ª‡«ˆŽ¥…¤¨Ž¥ªšž ”¡¤˜§¤©¦Œ©—™°Ÿ¨ž¬‰¨¤”¥¤’œ¥†¢¬ƒ¤¤} ¥x¢›€©˜| ‡£™Š¡‘… ‘ƒ¥”{ŸŽ‡ª˜ƒµ—y»Ÿuº¤m¹­j¾·fƵrógдjÔ¾hпvÒÀ~áÃuåÍrÞÈdâºoê¼hä½jíÁ\ê½]ê¾cÝ»mÜ·kÜ´dÛ´nÝ·jÛ´fß´kÛ¾qÜÅoèËmàÂyäÇsÝÅqÚ¿kÔÍsÒÊpϽpØÁtàÐx×Íj×ÊpÚ×dÕÙ\ÖÏ]ÕÌTÌÌNÚÄIÖÂPÜÇSÑËQÖÂOÖÀDÓ¼GÓÈJÉËGÏ¿OŵZʸ[ѵcØÁ[âÁcÛ¹[á·\Ú±aâ¤Zâ^ښdٛdДdӖYÒ cқ_͚aÌ¥bͯdÒ©TÓ¬XÞ­Yâ§[Ö¤WͤUÕ©cÈ«ZÆ£^əVɛS¾œM¾£S²¤U¶ªX®¬V³¥Lº˜C°›>±–8·š6³™:ªŽ:¥“0¡‰1¦Š-™†9’6£8¦†7ˆ8 ’.¡5 –<¡’B¥H¦‰HŸ‡Jž†Až†C¨†9¬z4°}3°9­‰.®Œ+¬‘)¥–%¬—$±˜'¦˜+®¤.¨¡%«§$§¢$¨•"¢”,˜‹$‘+†–0†Ÿ,{¥"{š'¥.z§(ƒ® „¥(‚ž%}œ!~˜ƒ—)$”™!’&Ž’)“”8›–7—–:ž“8•†@š‰M“ŽF—ƒO£€ZŸvfšms£un™|f›rh sj§}b±yo©{m®}j³xm®uv¯xz±x~¬qy wužxu’vy”ix•ho˜`sžet•b|”[ƒ˜_„ ]}d|•\u˜`xžVoœWtž[s¨Vv¥N}©GŠ¦?”­GŽ¯I“¬K‘¸MŽ³=´F—µL—ÁR“ÆJŒÉKÃLˆÄB‘ÎC“T†¶`Š¤[‰®Y…£Z}£^}±`~¬g€¬c‡¢d¤^›a–ž]——q–d“Œp›‹u¢z¡‰ˆ¡…‰ª‡¥˜£—› “¢¥—™¥•¤‰ ¨ ”Ž ™‘™ž—œ™‰¥›Ž©£„£Ÿ¢¥†§¢‡©¡†­Ÿ„¨”‹¡…œ™ˆ¦ƒ¤‰¦†„Žˆ­–‹¦œ…³œv²œwÁ›g¹©m»¥fÀ¯v¿³mÌ®pδyÕ¾rÕÆoÕÈmÕÌnàÆlݸoß»jßÁ\ôÅeå»^â¶lçÀmÒ·gÖ´`Ý®cÖ³hâºdÓ¼qÛÀuÞ¾ráÊrãÑfãÊrã»qؼjÍÇpÇÐtÌÁqáÁ}ÚÃláÔiÙÒqáÐ_ÐÍkÊÊ]ËÒSÎÉNÒÉVݾHÔÊMÐÓQÍÌIÔ¾=×ÆOǺRÏÁG˲SκXм_ι]ܳaرVÛ°Vá¬_à¸\Û²]Û¥]Ü©^ݬ_ښYݐfӞW͚SÕ Z̨`À VÒªHеQ߬SÖ¯Wͦ[מSʬXê]¹šg¼©aƤLÁ£M²¨\³ŸMº¢V¸X°ŸC·¦@²˜L´–>³›>¯“7¶“9 ‹5§‡/¨…/¤~: B£–=Ÿ‰1 Œ<¦†1 „1–ƒ?œ†HŒN«~N …KŸ†<›Š?¥ŠB¨}3¥ˆ-|,ª‚+¤‰6©2§.§œ, ˜0¢+¨”#²¡!©§¢Ÿ* ¤"« *”˜'Š›+„£"y¢*~ª0|¢"„Ÿ.~¦'x£+„Ÿ&uœ&~“&ŽŽ0•™-ž  Ÿ+‹‘8›œ>£5œ—=ž’<Ÿ˜=¡”LW¡‘M•ŠS›{j xm£sc•um kežzf§|k­i©sq¥zt²vs°wt¯v}°|q®tsyp®~o¢km“fw’fu¤e}’`yg‰›b…`}š^Ÿb…ž`–[v ]| Tv§U€´L}¨T¯JŠ±LŠµRƒ­L‰°@ˆ¶C‰·I•¼E¼D‹ÁO‡ÉX—ÄF„ÈF“ÑL•ÑESt°[{¨Yƒ£Vˆ¨V„£]¯`¤`„§^•°Y”¨Uˆ¢\‹aˆ’o“rŽŒešu›t›Œ„¤‘‡”¨Ž”§˜’«œ–¡™šž“™¤¡Š¦¥‰›¡’Ÿ—‘˜–•š”‘’‡˜”}£–v ¦}¢~«’}°‡¨†ª–©”„¨Ž‚¡‹{©„ˆ¤‹†¥‘Žª†­™‚°šr³ iĝjǝo»£j¬iͬtίvÚ¾xÓÌjÖÈhÔÅdØÂpÖ½dàµeæ¼]é½dë¼jݹhÖ½h׳`η^Ò¹gà¿jß¼hÞÃkÍÅmÈÏsÒÊpÓÅnäÌfßÀhá¼gÎÅ`ÉÐfËÍtÞÅvåÔxàÙqÖÖqÚÅh×ÐgÄÓbÇÊ^ÑÈLÛÆRÝÃKÕÄUÇÊMÇÄPÏÂCËÂ@˳MÊ»O̶MÔ³WÕ¯RÛ»RÓµ_Ù·_Ø°Z×±Yå²^ë°eß±`Ù¨cÙ°]Ó§ZٙhݝbÕ£TŨVÁ¡U¾«K±JDzJÒ¬L΢LɛW͝UȦQ¾œU·¢dÁ§YŨOº­V¶¡S¹™L¯¡O³£R¶œK°˜JªžM§—F®ŸG±žF±“:¢.£1ž†<£‚:Ž8¡–B©–7¡„/¤}1šƒ2™ƒB™‰I¦…I¦Qž„M¤zF ƒ:£…:—‚1›‡8Ÿ7˜ƒ.œƒ1˜“2žœ)žš*œ¡&ª—(«¡&¬¬¡ ¨Ÿ+žŸ#£§( °)“ª(Š®0y¬+‚§*‚©&¬&ƒž2›'|›&{›t•„˜ Š•(Žš(–™+˜ž.Šœ=‰–C™8—–E“—A•“D–—L˜’N“Q‰`Ÿ‰^˜z_•xc™mf›op¥zk¦ƒi£ti«se nk¦oy¨y{­xv¨}}ŸxzŸ‚|®msq›gw™sžo~škƒ—j„›c{ g{¦Z‚ Zˆžc}œ\y¤_{®b}«]…µS¸X«[Œ»]»Pƒ¶H’°D¶Q“²P‘´M•ÂB‹¾RÆU¾NÆMÄL‰ÍN•W}©X€ªN…­Z…­[‰¦\ƒ­[ƒ«b‡§^‘©]ŸW‘ž_‡œe¡q“ d“oŠ˜pŠ’s—‡{œ‘„‘‘¢Ž’¤œ©š’°š¡’¡Ÿ£š”ª’œŽ””Ž”–Ž•š‘Ž”›xš”|œ¦vœ£z¯š{«„©†²§—~­‘…¨Žyª•„§‡¥‘‰©ˆ‡°|§šiÀœn½¡ihº©h¼¦sÏ°zйwÔ·mߺhÖÂnÕºnè¼fݼdå´gå¹Yâ´eÖµ_Ú·jÙ¯]Ó«bÛ±bϵiÝÀbãÇ`ØÃaØÁgØÅ`ÑÊfÞ»`ÜÊYÛÌiϼgØÐ^ÈÌpËÄkÎÄvÛ×}ÞÜjÙÒhÍÏgÎÇ\¿ÍWÁ¾TÒºSÓÆTÔÂIÓÀDÏÄNŽCĹCϺLÉ«NÊ»K̯HÒ·XÉ«Wض[Õ²TέRѹYáµaÚ¬^׸aá´fÓ«e×°`Ú¤h՘cؘS×¢TœTÁ£O·«SÈ©D½¨F½ŸA½¢QɒGəPȞX¸£]¾›f¶¡SÆ©QǚL·™Q³™U¾›L¶—F¨žB¬§D±žJ¯ŸAº”J­ŠJ«‰C®‘3˜‹6”„3;”“?¡š9—‡7š‰6›ƒ<›Š4£‚;•~G¤€K|R˜vP †J“…9¤ˆ:~0“z.šz,‘}6ƒ0š‹4“š-š—$“+Ÿœ(«–) Ÿš.ž™#œ /›¢$‘¥4£&¡'y ){¢5Œ¨3Ž-ˆ™7ˆ§,{›"… €¢‚ ‰•3”-‘—/‰ŽB‹’C”<™ŽD—ŒA˜˜O››R›˜\¥žX•`©e£’_¥d•}^¤tbœxr¨zjž|e«rbª|iµqj¬x®€~¥w{«|œ„}­{°zr«q{›g…¥sz£pw™n~”v€™i…£j~¨\|¢g€^}ž`x¥e…¨fƒ³W„¯aƒ·T‚¸ZŽ°Wˆ³M‚·Hƒ´E“½G…¹IºK‰ËHƒÀIƒÄTŒ¿R”¾MÏS”ÏR”A†¦Jƒ¯Qˆ°Uˆ°T‹¡Q’£K¤UŒ¡RŒ¤\†–e}–`‚ _‡—kŠžr…˜gˆ”eŠ‡oŠ–•ˆ•‡˜ŽŸ™ˆž ­›˜¥™•Ž™—¤’¦‡Š™‹Ž“•–”•‘}š˜s ¡zœŸ|§’w«u²‘}´—t©”y©y«“³’‹ª—‡¨–‚ª‘«Œx¬•o½•tßoÇ£kÀŸsÉ£tÅ­uɬyÛ¬nå²dß»dà·aèµ^Þ¸Uà¹]׳^Þ·_ß¼dÖº]ݺ]Ô³b׺gÓ¶fÓ·]ÛÆcÔÀcÑÄ]ÔÃVÕ»_Ù½aÙ½]лZÎÊ_ÖÔlÓÎlÑÌsÍÌuÚ×rÙ×tÏÓbÊÇZϽZÃÃTǸQƽSÍÉPÐÇDÍÈCÌÇBýEľOɯZƱVɹK˹JÒ¯JʲSǪTÒ§QΦUØ´\ß²cݵbÞ²`Õ­gصh×´i̳aϦ[Ɨ]ɗX˒Y¿–M¾¥H½¨M´¬Qµ G¶£M”FĚMǔX¼ Y¸£[À¦_ŧYȦMšQÁ›M¼™Q°œR¦¦H žA¨¡?­—<µ“H­ƒM«„@¤‚H—„@•ƒ<‘Ž<‘”7ŽAIŸ@™<Ÿ‡7¨5¢}>¦ƒC¤|M¡wG’‚<y0”}5˜z2‹}3‘‰<“ƒ:—€8–†)žŠ$––*’’'™œ›˜ Ÿ”$”–.–£,’­0—ª/¤7„¬.Š 1¥3€ 0‹¡1„*ˆŸ+„ª(€¥€¦€¡"š'ƒ™6ƒ @‡™?…Ž=†Kœ‡O–ˆM˜–Jž˜P™¡[˜]žš]ª›g±™c¦“^ª˜b ‹] ƒg e£{m ~l¯rq°vo©{y¯y¤|l¦|p¥„x¡|¤€|«twžy¢r¦r{¨jŸr€ pv¦b|ªd³^y±c{¶^€«]~§iy±g·d‰³`ƒ´U´VŒÀX»K‹¾CŒÁI¹Iƒ·Qƒ·S~ÈK…ÅP‰ÈRŒ¾X“Ä]ŽÈZœÑU L˜L|Z}œXŒ UƒŸS˜£KŒ¤S‚ž]ƒ›X„›g‹–h…¢`‰ša‡”lŽaŠŽi’x†‹Š’šž†—•—›’Ž§ †ªœ”Ÿ’’ŽŸƒ™Š…—Œ‰›‰ƒ”Œ„›Ž‚–‹}’z¤y¢s¯™s©–s´ˆ±“¨Ž{¨ˆš’w­Š‚²ˆz§’­—t´›zª›g´•w¼qŬx¸£n¾¨qȸz̲uá­lß´dÓµ_Ú·hà©fã¿eعYÙ¿gÛ·]×±]Ô·S̬fÔ±_Æ»eÔ°fÕ¶]ÉÆ]ζQÅÁ]ϺPÏÆ\Ò·Q׶]ʽeÉÅdÇÃ]ÇÏjÏÔuÐÍrÒÑqÍÓ{ÕËgÐÖaÇÒ^¾Â[ÎÃQżSÐÊLËÎDÆÎGÕÏQÍÀI¼ÄPξWŹ^Ê¿WкTͱYÊ£ZŧLÐ¥Jϲ\Ò¯aЪcض\Я[Ù¯eØ­iÔ®bÒ¬Yͳ_ɜRŞZ̙]ßH¾¨N¼§IÄ¢Q±ŸP¶¤EÒDƏE¼‘T¿œU¬¥XÁRË P¡RãV¶T²§W²¢GŸŸF¨¤Cµ–C´›?¸˜O«‡C¯F¢’>•ŒKŸŒ9˜‰5šŽEŽGŒ‡?—‹B~<ŽG†:vA§AžyIvH”yBˆƒ:ˆ€B–}7‰‚;˜Œ6š‘DŽ‘.“*žˆ&œ/””.¤Ÿ!˜›¢™š'‘¤'Ÿ$’¡-Ž¦.„Ÿ-£&Š¤(z™8|›:†š4‰›4|¥&Œ¯%y§‚˜!ˆ™1ƒ 9‰8ƒ’B…L“N‹”@Ÿ’Dž”JœLœšU™_¥–f§›h¡“^²f¢Œ_œf ŽXž^¥{f¨wj¯v´‚x²zs«‡t¥€t³…s …sœt‚±|€¯h£kyŸ~‹¢~‚®v‰²p}¨n{¬qv°dz«pˆµk|¬i·`‚·aÂc|³^|½f‡¿g†Ãe†¶T²R‰ÅT”»E‰¿M…¶_ƒ¿RÃRˆÄU•ÎU•Î[’Í`—ÇW˜ÔSªOwŒZ|“Z‚”M‚œQƒœLO…¥[‰¢UŽŸ^‰b‹_‚œU}™Y‰[”d‹m‡—uŠ–~—’z›š‡š¥‹Ÿ—‰¥ž“¦˜‘™‰›¥–…¡œˆ›‘“Š‹œ’{ ’v–’‚›{¦šp¡Žk©’s°‹…¶ˆµ“‚§”z˜†~š‡xœŠ€¨‡~«…t«u­s´•k²¤t¸ªw´¯f¿¯eÉ©p̳wЧzÙ¨pÜ¥nЮhØ©fß®bà½fÛ¿a×ÆdÕ½^ÕµZÜ´ZÉ«`Ƴa͸[ðT¿­VǵRεXȱSÈÀVÃÁP÷XξWÔÅ^ÍÆ]ÐÁ]ÌÅlÐÌnÎÎqÍÊsËÖsÒÛ^ÕÕYÒËaÈÊaÅÅZǾVÁÈJÃÈLËÁSÐÆRÑÅOļLÁÄJÌÃTǽPƾOĪQÄ¥W»¬S¾¬Tî\̦bÖ¬[κd˵k̺bʸgÆ´hˬ]À´VÅ¥X¿š[Á¨RȬPÁ®UÁŸN·–J¹G·AŞ@¼œI¸‘J½¢H±¦IŸPœVŔPÀ›Y¶ŸW©§S±ŸS¨˜Dª”@°A¯D¬LªL£@¥L˜ŽJœF†7˜…AŒ|Gˆ‚;Ž{<”‡>ˆK•}Q–€J¤‡L¤Q“sJqAŠ|H‹~@Œ‚Eƒ=–A•B””6˜‹.Œ*ˆ-šˆ*“)©Ÿ(¨›š › (ž›$§#˜ #ž)†¦.‡ž.~š8uœ9|7ƒ˜:…›.‰©+ˆœ'uš&’&Šš/‚”7‹I‰G‹›@‘–Nš—K”—R’ŠVœ™Uš–V‘Yž‹\¦Œ\°˜h¨“g©“]¯W¥‘]²e¯zf¥nª€x­‹vª†s°…q·‡{©|‡£v‚ªsz²k‚¦sŠ¡~…¡­|ºx„¸g}»d†»o­x°u…¾j†¾n|¾o†Äa~Àa„Çi…Ã`ŠÉbŠ½Y¹MŽ·G–ÀR½[¯_†¾^‚»^ŒÉf™Éb—ÄgŽË]–ÊQ–ÑQ¥T~˜P”K{M‹—V‘˜K“”W„ŸZ•V}›U‡‰X‚Š^‘X’`‡_ƒ‘l……j“’u•—|œžr›’‚œ„¤š‚¥“ƒŸ•‡£—˜š””§—Ž¤‹€ …™…‰£”{¢“s‡v›’xœ“sª‘q¦„y­‹€®š…®‘Œ¦Ž…£‘{“’u›„wŸ“z¥Œt®ƒw¬‡n©Šh¸šv´ j·±m·±kË«kϦlÒ¤hÓ¨dÖ®kέb׬_Ù§eÖ±]à´Y×®TÛ¹_Ò°[ϯVΧdȪ]Ê®]È«TɺMýMűXÆ·M¾¼Y̳\¿»ZÁºRý^Æ·]˽hкfÏÂkÐÃnÉÍeÓÎrÇÕgÔÚ[ÑÍ\ÕÈXÇÃUÃÊ]È¿PÇÍQÊÄWȽNϽKøIÒ·]ѲS˲\ȺRȨOÁ¯YÀ§U¹£YÇ«SäaͦdÓ®jô\¼°fŹZ¾¼ZĺaÁ­T¸¤\Á¬fíTÀ¬UǨTƦW½–HµœK½£Iº¢H¼ D­ H¸ŸC¼¥S½™PĞN¸¢T¸ N®›V¥›V¦¤EªŽ=¨ŒA§’Fž‰OŸ”T§”Q—ŽP¢‹K¡ŒIŸF“‰;•„B“ƒ9“vC€<†G’„Hš„IœvP„K—ˆS’wI“qB—qD‡‚EŠ€<€>—†;™B™‡4 ‰5“‹0ž‚.©†1¬‹& ‹¤‘%œ‘%¡™#’˜+—.‘ %”%‰¥'Œ™*‚&x 4xœ9x”:„ž<„¤&zœ0€—)…¥4¤9‚›:ƒšI‰’G;‹šH ’Q›’R——_”™b“—] až“\±œeµ˜k±—i³˜]´`¬“f±•h¯g´nªŠx«‡{®‡{©w±|­€‡¤z†ª®p‚Ÿr†£~‡¡„‘°‹®‚’µx‹±t}Â}}¹}·tŒ¹s‹Àr|¹nˆÁf„Àd}ÃnvÇ`„ÏcŒ½a…¹M‰Æ]ˆÀS½_Ž¸_‰·dŠ»\†·`Åk”¿h•ÍZŽÈY¢ÏW›LŠ•S†•P€ŽS‡‘U‚–K‰V‘’O…•S“J{‡X|ŽT‚‡XŠ‚e€rƒr‰„q‚v˜|œy”–w—‘†œ‹Ÿ“Ž¡”Š˜™Œœš‹“›š’Œ…‰€ŸŠ€™Œw €yšƒs™~x…w ‡™…uª”€ª“†¯—‹­‹…ž‰„~¡–£“w¢’x ˆv«†t¤s¨u²£m³ t¾¬kË´cΪiÒ¦fË­cÔ¨hÒ¤_Ú£XÓ¤bܱ\à²Zصaá§VÒ¯YΨ`É¥aÓ®Yȱ_Å°Wù[ɵOÆ°Zº²TÁ±OǵXξSÄ¿^È·[ϳ_Å¿l˺nÙÂoÕ¿dÏÉhÎÍlÐØeÆÔhÉÐcÒÈ[ÔÌWÉÊXÂÅUÀËL¿ÆQ˾YƼUξW×·WÕ±\̨`É°\ǤPÀ©QÄ­P½©V»¤RÇ©WΩYȯfÁ¬i½±_ƹT¿µY´·W¹¨b´±g¾¬añ`¿ªYÄ¢SşN¼ TÀ”Q¼šR·šEµ—H°¢@¶§H¸›L¸šX¸˜R¼šO¶¥S¶ M¥Oš‘BŸ•F›•HŸ‹TœV –N¢’W˜—P ’VœLš‚E“‚A”‰=•~9˜…;‹~K–~K’yM–{C{I—…I~S–„PyJqOyMœ„L—‹GŒ;’Š?œ….–-›–2ž- ‡+ª‹/ª‘,£•$¢’&œ‹&‘‡(Ž’+„*š%}—£)|¦/|§*s«1v¡9~©1€«/…¬+¤6vCz§Eƒ›N‡˜EŒKˆ’G–”I–“PšO‘˜[™h™ŠdŸ‹l§še¦˜e®˜f³•a±œZ³šd»—cÀž`µ•l¸…s±ƒy«ˆ†²ˆ³Œ´ˆ‰º°‰€¬€ˆ¦vƒ¦v}¡z€«u‘®±|”±ƒ²‡‘¾y‹½uÊtÌs„Ây…Àg»e€º\ƒÉaxÇb‰ÍZŠÑ[ŠÆZ‰¾V‹¶X‹·`‰¸jŠÁ^…¼bÂf†ºmŽºn—Åc–Ô_Ñ_—T…›O—R‰‹G†šJ‹ŒG‰S‘RI{’NŒVO}ŒYˆ‹`ˆ—gˆ„~‘ƒp‰Œq‘‹~{—u›Ÿ†˜œ‹ž“•˜†œš—š‘•‘‘|‰Š•‹„ž‡€’‡y‘„r™Œv•}j™„o—‡o—•{˜‰u«–ƒœ†¨“©‹y—••†z¦†w’w‘x y£k®—j«œm®Ÿp³¬sŤdË°eÓ³bÏ´Vʪ_ΣSÕ«aÙ©bã¨Tå¨Ræ¨`à®Yϳ\ɪ[űZ͵Q¸X¼°Y̺KýUűUƸS¾®MÂÀV·¶TĺZÉÀ`ͲZÆ»hмcβjɳfÆÁiÓÈtÊÒaÈÕhÈÁbžeÆÄSÇÐZÉÐKÂÍIÁÄN½ÃVÄÊ[ȹZ˸QÔÀd̹Uʵ[Á¯UÀ¬\·¥\ĪW©XÇ¢UÁ²`ϧX»´VÁ²\Ä¥S¼¶Y¿°_¶¯Uº©`çZ³^Á®T»œPßK¹“A²ŽD¶œ?½F·ž=«¦;²£C»žJ­˜S¸ F»˜O¶˜FªšG¤£O£”G›–>§ŠD–’[ ‘X—M–’U¤’G •I›ŒG‘ŠF“|A~5•‚9”‡FŠˆBvB•@Œ‚M—zO‹rHš~S”tQIˆROŠ‚J”€H˜HŽ„I”Š@••=›’.˜™4žŽ2¢6“‰&–Š)”– š'•’(•—/Š+ƒ %Š¦0~¬0ƒ©0w£&€¥/r¤:|­.zª5tª-€¥/‚œ=z—C•=’I„ŸF„™I¤Gœ›Pž‘X”›U˜ŸX¡hž˜i©—\¤™]±›h° `¨¡b¼‘h½fµ‘d¬’l·‰y¬yt·…{©€­„°•†·‹Š´Œ~´}„¤~†¨€~¥~´{•±z’ª|Šº|°sŠ»u“Éq”Àj•ÀpÅ}–ÆsÀj€Çn‚ÃjËczÊd‹Ï\€Ð\‰È[ŒÀ`ƒ°fŒÁfŒÂf¼o„¹`‰¼mºb¿aŽÌ_–ÆZŽR„“H{”?‚›Gy”N‘R‡G†ŽDs”Av‘NuN|ŽSv—c˜jŒ’x“{„uŒ‹{˜†mˆn“–m“}•™Ž‘¡›„’…ŒŒŽ••}˜–‚š|—”s“‹u›h›ƒl¨yj£|qŒwž—o¥”x˜ƒ–‘}š”„¢yz¢‹n™…n”Œo—n›y “s¦”l¤¤eª˜b²j½ iȦcɲ^È®UÈ´OάLß³JߪVÝ®Tä¦ZÞ¨NÜ°SÊ®Pȱ[˵OƬHĹQĽXÊ¿MÁ¼M»µKÅ°WżX´¼T¼ÅQ»½U¶¶WÀ®]ʱWÅ´`Á¯`»µ_ȼkÊÁj¾¿lÂÅ_ËÆgŹ_ý[ÀÏUÉÌXÀÏNÂÈT»Í]¶¿^¸ÀYÁÁRǾ[¾_¾·_Á»gÅ·_¿¹Z¼©VºŸMÆ¡T˟OĬRƪ_¶¤\¶­[Áª\Æ¡XÀ¨SDz\¿®[©S¹¨U¼¤P¾›A¿‘?µ•G±™G³’9´™:²œ8±£<²¡O«™PµžJ¼žB¼˜G¾›B® E§N ’G£›MšQ Jš’TŸ”W¨˜O›“I’–L”KŸ„=¡:›†=”‡Cš‚C£xHœ{>—sK“ySQ›zI•†KŠƒUŒ}W‰yI‹~Mˆ{F‘€E›D˜ŒE@’œ=š™A˜‘@Œ’6”0—Ž)”“(‰œ1‹’<Š™5‡5†¢(Œ­%†¦0ˆ«(x /yž-u¦9m«8n¢0lª:xª6ƒ¨7€•A†”9†–<†¦D…¨M’¨S™ Oš¡V”›Y£”_§b£—dŸ‘Y¨’^±•fª’g­”q°Ÿn·š[¬–a°t±€g°wk®|n¬„w¨‹€°“€²‹¯‡µ†‰°|~¬|…²~‘®}œ¯s–²|Š²v†¶q¿t¹m”ºiÅu–¿v•ÇuŠÍpŠÊp‚ËcƒÂh{Çh~ÃdˆÊiƒÀa…¸j‚»sŒºk‰Éo‡Çj…Ìh‰Ê]†Ê]€¾\ˆÇVÄX–N~”MzIy”MsˆM|ŠIy‹L‘Fo†JJ|W{ˆKu™W€Œe‰r‡q‹‚|†wŠj›ˆrœ‘q•š{”†—•‡ŒŸ’„Ž‹‰—Ž…”œw’’{˜›v‹‹r™’mši•u§n¡e™ˆk¦Žp¤˜|›››€””ƒœ‰y¤•z”Šk˜s’šs¥p§—w©—k¦ž_²fµ¥cÁŸV̧UÁ¥R¼¬QÒ¦QÙªMÒ¡Nå¤Tß¡Nç­Lè¦KÙ¸GÍ°GÒªXƳGË»QαFÀ¼MÇÁVÇ»PÀ¶\ı_·¯[³¹Yµ°T°¶O¶µa²¨[´¬g¸ºb´²i±Ã`¿Ãiк[ÀËVÈÁa˺dǹaÁÃV»ÈZÂÐS¿ÔM·Ð[ÀÆ\¼ÃY¶ÊV»¹`úZÀºi¹¼eÀ¶Y¸±_»±e¶Ÿe¾£cĞRŬW»®P·®L«¥X±žU¼£R³ŸR¶šP¿›T»£Z¶¬O²£UÀ¥P¸™G¹™B·’B¹Ž8®5´™<¶ŸH¥™;¥—O¯¢Fµ˜K´•@µ¡A¯šK¬ŸJª’NžŒQš‘IªŸV ’J¨”Q«ŽQ§šU™”H”I‘‰@Œ8œ|>š‰C—‚?™„;™ƒA™xE„IŸ|HšrN¦xP‘€L•ƒG•N‡{B‰G†y@Œ‡A›ˆB’IŠ‰A…’J”L‰‘Gˆ•@†‰>’,‹/’œA—0€™0‚ž3„­)‡¤0…¢6}Ÿ&~£0}¬.}³,w¢,o %v¡)z¡0}œ-v;{<„¥>„ŸBŠ§H‹°J‘£SžªX’ TŸšW¤ Zž¦dž—`¥›e¬‘hªjŸ’i«—c³’h§–e©h²†t²tt²uk§‚u±}®˜ƒ®Š{´Š‡´‚ƒ±~‹©~Œ©t‡µŽ­y—«z…´x½m„¹gˆÄuˆ¶o”Âx“Æl”ÁtŒÆu’Íj~Ðl„Îk‹ÂcˆÇ`„Ée…¾i}Âg€»n†ºm¾eŽÔhŠÉkŽÏY“Â[‰Ç\„Ë]”ÀSš?}ŠFt@|‡Hx†NyƒEu~@u|CvE‚~E„L‚“T~•d„f„r™Šv’ƒuŽ†n•‚p™r–{™“r’“u†ƒˆ‘…„‘‡„“|Ž”€žƒ‹™w’™i‘–h’k“—m’‹hœˆg¢†jšˆf›˜m¤›x™¢w™—z ”v›‹wžŠyž”wœŸm˜št•¤ržm¢£b«Ÿe³—^´žT¾ªUÀ¨W¤KÀ©O¢OÓ£LۜGß Dá£Bà®Fé­Eà¶?Þ°<ϱHűIżIÑ¿LÌ»L͵Y¿¾YÆÄ`ǾYð\¼³`½©W®­T³§Tª­]¶­e±·e¸¿g³À_À¿dŽZ»¹]ÂÅSÇÉZ½aÆÃ]ÇÃYÂÁPÀÐV¼É^¸Ä_ºÈbªÃX­Äg¶¶g¼Àc»g½³k³·a³¨`¹£e¸Ÿ[µ£aµ¬]¶¦L´©N±¤G¨¤N¯˜W­T»•VÁ¥V¾¥W· T»PÀ›D¿ŸH·—B»›;¸™:·Š8¸†=¨F£ŸC§œB«›C¯“A«š@±œH§’K£–W©•V¢–R®šP«˜K² R§–I§ŸQ¡˜NšG–’D”’8—‰8œ†:•€9Žw>Š|=‘9”~B•€J|B˜L {JžsI‘wAŽv@‘€I‡†M‰A“}N•…M‹ŠC…ŠEŽ“AŠ’E‹Ž>ƒ“FŒ˜@’<”ŽF‘AŠ“7„–7€¢0ƒ¨*{¢'y§.t§2|¨)|¤'}¯0oª&qœ$f›$kž-u¥)y«3…°=Ž¤CŽ¯P—³PŒ¬U®_Ž²_œ©Q¢¯X¢©UžŸd¥£f®•q§pŸ–ešŒh˜›gŸ˜g¡‘iª‹i¬„m²l·yl±~l¬Œz²Ž|­‹ˆ®Ž…°²ˆ·ƒª{´v…®tŠ·qŽ¾sƒ¶p½gµm‹ºt‘Âh‹»m‘Èd•ÆjŒ¿kƒÈv‚Ìk~ÌmŠÌqˆÂd‡ÂiÀl‡Ät‚Ä|†ÐnŒÓd†Õg‘Ï^ŽÍ_ŒÐdÈi”½^ByKsŒHj†BsŒFp‰;iƒLjvMqvK~~UxVu•[u›V‰k‡ˆi„ƒx“fˆ…o”„k”y”~qˆvŽ€ˆ’„„ˆ‚ŠŽ‰‘“‹Ž{‹”xŽšm’ŠvŽ_˜o—•e†k”‚^—ˆm“–j”“w©{£¡’˜z’“w‡}–‘s“•u˜“u™Ÿn™”f©`³¥^²¢X¶¤a¬™K· Tº˜ZæVɞLíMëGɱQÒ¯OÞ¬BØ­JÖ·HײOÕ»LÇ·VıK±NDZB¿OÎÃJÈÀUÆÁ^½­Uí`µ²b±¶a«·]®±V§¸R§«^®¶`¯³_»¸\¼ÂQº¾_þOÀÁWÁÂVĹ[¾ÀZË¿YÉÆ]ÂÈ\¿¼\µ½c´Ád¨¾`¦¿^·Â^µ­W¸¬]®«Y¸±f°£a»ŸV¹ŸUªœ\±§O­¡G°§P¬ A´žGµ•S¼–]µ›V´¦[Ã¥ZÀ¥U¸—S¹›M· E±ŸD²”D½ˆ;¸‰FµŒ8³ŠD®—:¢›;±–K©•G²šJ­›B¤›J™FžF¤•Rª’F®ŽK§™I›N¢™FŸ?–A”‘H£–@¡ƒA“Š;™9 }>–€7‘€:‘…8˜„D“z9•yG¤sDyIwL‡€L’vH…{?‚y?’~Lš}U„~Q…†M~}H‘C†‰C“HŒŠIƒ‹;…ˆ:Š=ƒ™:‚›6€›1‡,}«9x¥>wª0§$u¬4p¦8o¢5k¬$i¨.a©6sž0u¬6©B‚žAŠ¥R•³\–¶`ˆ¹c­_–§Yž£PŸ«R¥¡_ª¡b¨“c››o›f œf ‘c d¯_¬c¹„`»~d´‚h±sµ‡n½Šs«ˆs¶’ƒ­|·z…¶€Šªz{¨w€²q“­n}´lx¬c‡±b‡¹sÂn„¿nŠ¹o™Ëk™ÂlˆÍk’Å|€ÂkÐw|Ìj‡Ám}¸o‹¶o‹Æu”½u–Îs…ÊkŽÌkŒËg‹Êa”ÅbÌe„À[“QtGq‹EbBa†D[{;c|GntMuyPu‰Tv[y‘Qw—bœc‡”j‡s„~gŽ†eŠj…yy„}rƒt‚zŠƒ~……‹ƒ‘‡„‡…ŠŠt‘Št‹Šhˆˆeˆ‘i™b•Š_›~_˜Žk—nž“p¢œx™‚“zŒ•r“…yœ”x™˜gž–t¢›t§™t®¡d¯Ÿ]µŸ\¯¢M­•LºžKÁ–XŤYÇ RĤJîOÆ©F˲MÒ¸I̹?Ç·CνPʶSͲSÍ»RÄ´MÀ²QÄ»HʶJȽRÊ®OÀ¬Z»£Y¶ª^¯©_¯¯d¦«a¤´W£»`­¸e¸ÃX¸¾X»¼V½¯S¿³T·¸VÀ¿a¼¹dÀÅm¿ÉeÁ»Y¾¾T³Ã]¯¶^±¹R«½W©ÅXª¼Q©¼P¯«_®ªf³¦^ª©\¯žV¶œO­™Q« G£¤G§¤E±£F¶¨J®Z¬©Qµ£O²¥[¶žX¹›L»¢DèA»§@­›L«™L´†L³D´„>µŒ;­•?®D±™DªŸE¬™AªšC¤œ@ –=©‘> ›G¢ŒL¨ŒPª•HM •F““?•ŽF¡–@¥Ž:œ‰B¨ˆ7£‰8šƒ5›„5—…6–|6˜{1–‰8¢x8£sI›{O•~K‡tJƒoDlP…uL‡rM”R‡V~wR|{G„ƒ?ˆƒB„M‡‹E‡†?†…9€Œ8~‡A~‘=u›>|™8k¬8g®=j®-w¤.pž+r©/h°0o²3qª7g«žšC§œEŸœI¢—JŸ™O¦“Pœ‘P‘’T”‰L˜‰G Dš7„6¦6Ÿˆ6¡;œz6žˆ?§ˆ>£„=œˆ4•ƒ6¥‚DzD—~C˜{?•{>|h;‹pHŒsO„R‡‚Hˆ€MŠsT‡pJ€‚<~~F‹N{M‰~:ˆ€HŒ‰Aˆ’5|Œ8tš6m˜Ctž8`§Ij¤Cv¨6k¦d¦0b©>w¬=m­1q©>}ªDƒ£TŠ«_ˆ¨WŽ·T›»P›°\—£Z©_—œa¡˜f¨ d™˜oš k¥›gž‘h±–g¬•a©‹m·‘m¬q´kª–fµ‰d·…c¯iµ|l­€y·…‹´ˆ§x°‚Š°{¡pƒ¢{~±p‡§b…­q‰¾u¹e—Çq ¼k“ÌršÈp“ÇuŒÁvˆÁtÁt‡Ç|À„‘ÁyÇyˆÅv”ÈoŠÈt”Èl‡Án‡ÅmŒ½qŽ¿eÀ^…FWA^”Ac”;]„6gˆAe‚GhHf‚Lm}Jo}Hj~Ok‡To€Pu†`|c„‰lŒzd‚{n…|uyr†~†v{…€x‡~„~w|‰~ƒ‰‚v€…wŽ‚r‘Šk”Šk‡ŠdŒŠ^‘ˆ_‡‹n—m‡ŽpŒ”h‡Ž`˜f’™q“”o‹pžgž™l¦”j¨”W°“S±ŽO­P®Z´žSƙUșLÌ¡> AÇ¡GŨJƨIÅ©>Ì´<ʼGκE͹NÁµR¿·UŹOþIÊÁKƹM¼B¿³EÇ°Q¾¬Lº«Z¹°X¯µU«³`©¼a«¸U¨¹[¨­\£¶Z©´S¶¹R·±[¯¬Y¬¯d¦¯]¯¿b³Ã_´¹e´¹]©Á[¦²[›±Zš­R®R§´Z¥¨Yœ­_¤¯_¨°dž¥_›Q¡šS§›O¦RžžW›šK¤šK©T¨•R©’O®‘J¥žQ¦›DªžG±’L¦–O¯›K¨J£F¨P§„D®‹C«‹F¯ŒH®‡I­Ž>§…D™…:œŽA™=¡ D¡žD››FŸ>œ¢Eœ™J™‘K–“I•–H˜AŸŒ4 ‰3¬Ž.¬†7§}?¦6£…9§}A¢‡=«‡>Ÿ‹>¢‹:—…A™~AŽy@“z6Žs2…r;Œz;ˆpHwD€zMŠ|Q„oT}nTwrJ†sMˆwHŽy=†ƒB|JŠ…F•F~–=m“FjŸAeœEj£CiªJfŸDgš5c¥7d8_¦9m©4m¯9m´4y¬;v¥Gw©Q|¯R¨[‚´V”´Y—®Uš±[Ž²N¢Q¤]Ÿža§Ÿf¡¡b¥˜`ž™fžj«Œ]´‰\­k«—l©l§d´™h·•p«Žh¸‰e´€i°ˆu¬|µ~v¯…}°…‡ª|„¥~x¤y{¢v~¯l†±r‘¶o•ÃbÅf”Êi™Àq•Ât‘ÌtŽÏmˆÂtÊƒ†ÁŒÄ~ŽÀ†‰¾z‡ÍxŽÇÉzƒÌyŒ¿kˆÅp~Êg„Ïf‚Â_„¨’Fª‘9¬Ž?—H ˜=£›8¨Ÿ= Ÿ@§–H™˜8¥˜:•™BE›JA™‰<—Ž=›Œ=¥|0§ƒ4¦x-©u8§{1ž~6ŸC‡F”<¢‘>Ÿ†Fš}>’‚?œt=}0‰x7‹o>‘{A€rFsMvyL}nIt}J{|L‰tBy>Ž~?ˆŽFƒ@‡“F|’GŒ:s›A{¥8lŸBj¢Fg¥Lp§Pe£Af©s©Hk¬O|ªU‚³Z†´T¿J“¬S–¬]®PŽ¯T˜«_“«cœ`”¡gž£e›žc›aœ”]š`¡—f¥sŸ›d§t© r£Ž`¦’^ª’b³v¯€w¨t§~‚¬µ|~µ}‡³…‰¤|}¥z…¬r“©n–¯w’¼l—½s˜¾w·uˆ¼lŽÒoŒ¾j„Âxƒ¹r…¸~†»z‡Â‚…Ì~‰Ê€ŠÁwˆÁk‡Æh‡¶o¸b‹ÅiƒÇ[‚Ãe†>Y”@`;c‰Dd’>]“I`‡Lc…SozSa‚Mc}M]xKf{Pr†WŒe‚‘a“hˆ„cxvbsqf{f|‚kswo}xqx…u~zƒ}x‹n‚Šq‚|wx‰„nˆlˆ‚aŠ”e”™e‘˜bƒ›^…ŒW†‰^˜•e”i—ˆg „p—‡o¡…t¢ƒl›‰g™Žm›™h­”^«›`¦˜\´£Q²¡VºŸL·©F³¥O¸¦S»±GȪKÍ¥K¦NÀªOê>ʲF˹RƹK¾³SľR¹·FÁ¹L½¹N»»T½·YÅ©ZÁ¤WÄ¥\ºµY¼©b¯§_¨¢a­¦Z³©d­³c³°`§®T©¹J°´PµµR¨°`«À\´Àe­½V²·V©±O¤·W§¯H›°Jš«Tž·W¦·_ ­Zœ¨[šªU±^œ§W˜§K¥ EŸ¨P¢¥K™¡KžB˜>™™K—šN˜–J›šB›AªŽ5­›5¥¥2¥Ÿ;ŸœI¤¤J¦ŸN¤—P®‰F´ƒ=ª€:±ŒB´ŠB«A¡—D™I¨¡K©œD¨˜L™’Iž›@¤”@œ™E™˜@˜ Q—Vœ–NŽGŸƒ;–€6—‚0¡6£|:¦y/v1ž}6•~:€B:–…>˜„6‘…>’x:˜y<˜r3”|7GŠvJ}sAqyHnuMt|J|yE|„C€}:†;‘M’‰M•‡KŒ‘<„—8{‘?v7‚™<¨Hy©Jn¥Jh©Lf¤;]©:c¤E[­>_¸Gcµ>`ºFm·=h¯Mn³Q¿XºQƒ»H”¸I˜¯KŒ°T‰«VŽ¯Q‘¨Z–¬[“©bŸd“œ]¡^‘žP•‹R—Z›d“£j˜m•¡i£›m¬–n¬’`­—p¤Žw›v¢vv©‚~¬†y¨Š|°†‡¨†Ž­~‹Ÿv¢p‘©|·x–µ–»yŠµx‘µrŠ¹p†Ék‹Àn…¼p‚¼sˆ·~½s…Ät‹À€‹Å{¾y}·e€¸m·k²mŠ´j‰¸d~º_|Ha¡=o’Hl“QjKdŠOp„OoyWfxYjwT_vQl…SnˆMk}crb~“\ˆ‹_„‚fu}ns€es|d{t`sqpq€t{|u‚s|ˆp}ƒw~‹qŒ~oˆ†s„„o†ˆg“m˜f„•d——aŠš\•Y’bdš”kŒƒc—…k˜ŽkžŠržˆi“ŠeŽz¤ˆc¥›]§•g¨b¯œ\º¦Y¼©W¹§E¯«Mº¬OşVˤJÁ¨Q½žU̬LÁ§GéI˾Sº¯M¾¶UÇ´WÅ·IÆ´J¼¬KÇ®T»µZ½¦]¼¡[À©^³°S³¦S°ªX¯¡W·°a±¥f­³`§³YŸ¶^£­X¨±W®­Q²¦_±¶^¶Ád«¿W´®Wª³\§»N™¾PŸµH›³R¡µT—¼M ¶Pž­Y«Y¥§T¢¤W§¦Rª£>¨žF£H˜¢> GœŸM˜¡=–•A”=¡<œ“3›7ª 8¬•?Ÿ D –DšœK©—H¦Tª‘Qª~E³B²ŒJ¨I£‘K¥œ@š¡B¢™I©¡J£@”–Kš“F£Jœ•I“ŸB–”HšˆU–‡S™F—Š=—~C—Š8¤„:¥ƒ@ž~8•„,—†3–†1z=•€CŠ…:˜‡@‹A‡>ŠI™„C˜‹B’F‘vJ}vMw†@yyO†J€F†Š<†‹H‰‘F”‡I“”MšLŒLŠ—J„”E†•;¦I€¦?q£Os¢Ik ?c¨Df¢:f®7_¨C^¶BX«C^¾?b´>g¸Go·L}·Dƒ®R|¹M…±I’°U´SªNˆ·Y•«b“§\Š§V†ªc–gŽ£_˜£R–”U“Uš_˜¢h‘—d•™dššgœc¦”b§i¬’~«ˆmzmžm¡~¤‡¨…}®†¦†Ž±„‰¨y°…’¶„·ƒ–±z‰·{‹¿y–Æp“¼r‰´x‹¹rzµtˆ¹|}»yŠºq‚Àyµs‡Âu‹½hÁm‘¶b½^Œ¹e¾c„·_ƒ8l£BxžQ–Rx–TxŒYoˆYh‚Wl~crz]jy\hwTjƒSqŒ^r[r‹hƒ‰j…kt€n}ybxrhpwfomsny}zztƒz{‚mx‚bƒhŠ€qˆ|j‰|i†…h‚“^…“e‡–f‘”^ŒŠc‘dŠše‘—a—li‘’c”ˆn‹…rŠˆhƒo“…uŸŠn ‘f²“h´“e¹™^²¢S´­Y´¦U¹žX¸¢LÀ«J¿¢SÀ£TțQϟJÄ©B¸¶J¼³JÀ¶KÁ°OÁ¬QδXгQÈ°PÉ®VÄ®MÀªSº®W±¨X®®U­´\¢ª^¡¢T¯«Y¦¶b«²^«¶`¥´a©©U¥©P¨¦L¬¤T«­T¶±U¨®K¨¶M§¹K¬µT›³R™ÀOŸ½Lš¾O¥¾W¡¸O °S¥£[ŸYž§T¢£R ›D >ž§; ¬D G ¥:“Ÿ<Ÿ8–—>¤”;¦3¤˜2¢”8K L¨™T¡™L²˜V³ŠPµ‚S±…K¬„A´A·‚@ªŽG£™L£šJ«ž<­>¦”GšŽIŸ—E™’D™›@—˜F““D™ŠPœ…Aš‰>¡„Gš‡> Až…Dž|Dœ‚9‰~;†ˆ1ˆ=…€7‰|E‰„E‰Ž<”Ž?”ŒIŠ•LŠˆMŠFƒ|P‡~O{„AtƒDy‚>ƒ‹HˆŽ=“B‰˜?L‰‹D’–GŽJ•ŽQ‡—VŠ›K—Bx£E|£AuœNnšHn•>k—=j¡C[¤@Z²>^¸H]°Ba½=`º7m³5p½?l³Ey³AyµF†¸L²O‡²SŒ»[²_•³]Œ§]’®\‡¥^©`”£Y¤P‘›UŒ’]Ž”TŒ¢_–ž_˜l k™i£œj–k¥…v«„y¥p¡|}§x¤…±‚´­€Œ£‹‰ªˆµ‘¶ƒ”¯†‘·‰·†•¿‰š·•·v’±m‚µt‚Áo‡Àu†½~‚´z†®~°w„»o’»n‘´f”·\³^“´]†´Z€´d~Ih£JlŸOlœWo”\m“\i†ZfˆUmSo\j‚Tn†]kYp‚ao‰iy…c‡‚p{‹erzg€[ylhykozrwwv}psƒ{s}eˆ}oŠa€kne‹{bt[Œ}aŠ“a‡‹gˆ•b†c”˜d—^™™dŽ“r‰p…s‹Žzˆ‡sˆ‹f‚d’‡s”…oŸ‡s©˜sµd¶—X¶œYª¥N²žK²œF¶ŸI½¤E¹¥EÀ¦DÏ¡PÉ®AÊ«FÆ«CÊ©KħGÍ£SЮRÇ­MƨIÄ­RÌ­S©Q¢R¿¯Z¶®U´³T¥¯S—°V«­S³¯^¤µUª·X­«^¢²f¤¥[®¢P­­L³X®§Q­´P±°Y¥¹L«±XŸ­\¢¯S¡·G˜ÀL›µM¢·U­±F¢©V§£M¤¢O˜£Nž?§«E¡›E¤ª@™£J ¦C›ž?“£4—”C˜C¢“5˜6—›9—9¦•:°†K›’M œN¡ŽD¬‚K¯†G´ŠJ­Š<³„5¬‡7­;¦”E¨–J¦¦C¬›@¦•<¡I¡“Nš›Q–žI ”O™™A™‡KŸK ‘=‘„C‘…>‰E¤KŠ=Œv;†6“>Š‰AŒ„B„}D…J„…?ŒŽL‚‘H‹ˆA‡E‘‡KŠ>‚GwŠHv€Fy†LŒ‹IŠ’E˜H‡’B„@…“J‹’Lˆ”B‘S‹ŸK|¤Cw›H€A‚©@§Cs˜JkŸ;r¥Aj¨@`§FT 2X¦?g±:]­@nµ2h°;p¶8r¸:o°Eu½>ƒÂG~½F‰¶L}±S€¹_‡¯[ŸQªaŒ­_Œ£a„ªW„£V„™T—¢K¡P‹£_Ž–[”šj• gš¡k™¨l¦œjžo™Šs™†l‚nž†y£†¶Ž‰¥‡Š®Ž~¢„‰©–‘ª’«ŽµŠ¹†‘Á…š¾ƒÂz™Ár¹v‰µƒÆ|’Äp‚ÁŽ²zŠ²€‰¹y€¹l‡¶]†¬b‡³^‡¶`„¶\Œ¯V~£i‰¹’B® A® ;¥¡B©•G­–Hž’C˜O“Iœ•P¦–Mž•?“›?–‘C™’I“ŽB•L˜M‘~AŠ{8ŠˆB…F‡ŽMŠŒKŠ‡M‡†Bˆ•LŒ’I}”P~†Fƒ‡@‚‘F}‚=„„@{Bw„Bƒ†A‰ˆM†‹?Ž–@‡:…Ž@ŽŸEŠžE†šL‘™KN|¦IƒHx£G€©<‚¢>z¥=i¤A_Hd¤@^¥9^œ7]¨Da©Ca¥Ek¨5p«:u¹4m»Au®C}±NÁG‡»D…½Qw½Mz¹Pz²Wx¨Qz¨Q…«VŠ£Y…«Y Q…¡R”›L—¢Q— VŒ›d™–h›—Z a›¦\œœe ™c˜œkžu¥Œr †z©–z¯˜…°‹‡ŸŽ|¬Œ†¶”¯‘ªŒ„¸‘–À…˜¾z“¼|¾w†¿z‰¼ŽÂ‚”ǃšÂyŽ¸¯}~°‚†´}‹²eŽ°]Œ³`Ž«e‹´T«R‰žX‡¢bƒ?nŸKnTužV}žVuQy’Vp…Ln‡Qq~Qk~]k€Wqˆ`rŽWy_z‚]‚‚c€‚hv‹rzƒs~o|t{pyzylvvku}iqt{osutwxuqs‚qcƒn^{€\ˆ‡a…]‹b‰‹aŽ›c‘—m—˜hšv“†t‹“wŒ’s—‹q’{i„q•†n—ˆt••p£—p«–p²ž[­™]©¦Y¯§Cµ­B¿µK°§M©²F±³@Á´JÅ­L̪FǨAҞLЧR̜PÙ¨KÖ¤MÊ P̱OÇ¥YÀ©O¸¡P¼±Z°¶Y¯¯O¢¹O—´Q¤±Mœ³W—­V—ªNŸ£O—§S¢¨Z®®V¤¥W­¥J§­M¬°`³ºX§½M¤´R¬¿d§±`£·O¢«Mž§I˜¯M˜¢Sž°@£ IœªI¥§= ©9§©2§°8™¢;¨¤KœA¥›9Ÿ›5”’>Ÿ5¡¤@˜ 5œ›@›Œ7¥–:¨D­3£“<¨D¯…K·†L¼‡>´<½ŽA¶’Cº•?¹7©¥>« F§¢L­›Bª˜J§ŒPŸHŸ™S©’Mœ›L¡ˆBœ‹<”‘H’„?˜ˆAŠF–’MŠ€@ˆ}9ŒD‘„@ŽMƒ‰I‰‹IŠ‘K€˜BœHx•H}„C‹B€F{ŒB{‹?†;€€E|N††K‡‹<‡“:‡™:ˆš>‚™@„¦B‰§FŒ§E{©J°Dƒ›C¡Az¢?‰¤A}¦:f¦>l˜Hr¡:c 6]¡0e 6c¯EY¬:_£:k¬:hµ7jª=i§Iq¶?uÀNxÂFp½Do²Hp²En»Jl»Ft²L¯T‰±V²Q†¯M~ŸVŒ«L’¯L‹¬S£`š_˜™[ Vœ«b•™g¤Žh•‹qžŒs›ŽqŸ…}©ˆ…§”‡¨ž…¬š‚«œ…»•Ž°•Š«‹º†‘ºƒ¾€•¹Œ³~ŒÃ‰‘¸ˆ“¼†”º|‘¾{³‚Š±zx²‚­oŒ°eˆ­j…®[¨aŒ¢U„§Yˆ¨]ˆ¡d‹A|‘Eu”Jv—H˜T{Ts—Jr—Q{†X|“SsU|†^sˆUuX}Š^~gu€e‚}i~…ku}u{€n„{k€mlzlrunwfishjypjtmwug{xdrƒom}ph~uc~ye‰ƒl‚d•ˆk—‹fœŒqš”nœ‹m™ˆo™•pŠ‘nŽh’‚hŽ~b“ƒmk˜™c™™Z§bªœ\°¤\¸¡Y°©I¶ªN¹µB½°H±²D¨°;°­C¤JÃ¥FßFӞJџGќQ˝[Ó¤WÖ¬XÈ©N´QÆ­N¿¨D°¤J¤¥M ¶V¤¹P µV˜´N•¨Hž¤E˜¥O”°_˜«]š¢[§ªW±ªL¬±Q¤²X©¸X¡Ä\ ¿V¦º_¨Á[§²P–°V–±F—ªB‘Ÿ?—¢I¡£DŸ§A¤¢?ž¤8¤5¨¨8¬¥7¨©5§°?Ÿ¨GšŸCšž:–¥<—¤>¡¥<œŸ5ž–9¥A¦‘5¤ˆ5¨‰8¨Š5­–:¯“=®–DºŽ>†GĎHŘE¾™>¼›D´¦?¬­J°¢D¢“R¡‘O©—J¡ŽJ¢˜G©“P£E¥ŒB¨A ŠFC‡K•‰@ŒŽC“PŠKŒˆB…Dˆ–IP„˜Vƒ•N†šP|˜AxOs‰Kw†G}‰MuCyC€’P†KK…=~ˆ@„‰=Œ’?ˆ›:ž8Ÿ?¦>¨C~­I¨>ƒ™G‡šDš?~šAy–Dt?y•FržAs£:i®6c©.Zª6d¯8aª=jª5l°>c®Ab°E`±Gm¼Md¸Jj¹Hg¸Lq·Hj½Cn¼DyµA}­N}±N…©W±SˆªR—¯M”«W“¢^•¤_“£b›¦UšªR¥_•™i”h¢wŽtŸ~¦‚ž„•«ž~©ž|«’€°–ˆ³‹}ºˆµ‘„¸ˆ®…³‘®†Š·‹ŽÀ‡¾†…¾Œ‚¸ˆ„º|‰µ|ƒµ|§o¢l~®f†¬d‰©]„¡]‚™`›\‹T‹I}Mz–Ow‹Mx‰M”PtŽH{‘MqŒQ{ˆU~ŒTr‰Uw€cx^{~[~ƒfw†`}ˆi~„jx†mwyt{z}mmrmprdnqbybdmjuwlrnessnr„rk„yhyrf~{a}tc{{a‡€bv–‹m•tŽv–n‰†n…”t’Šn‹‰g”zm”~hžŠg—ˆb¨—b©œd­\§§Z©›E©©?®¡J·²B¾°O²§K¸¦H¸©G·±OÉ¥>ȦJ͝KҗOÑ¢HÉ£FϯNТMÇ°VÍ«KɬP¸¨L°­C­°N§¯]±Z£·S£¨Pž©Jš¡K ¢O¦[¡«V¢±_§®]©¨U§§Xª¶Z¬ÀRª½W¨µO¥¾V ¶T ¸Q£²Rž­O¥¯C¢¦A¢©H¨¤G£¢K£¢;šœ:©°D¤­D ®6§¤>¡;œ›J¢ D•C•£E¦«5ž›C™C›ŸD¬˜A¢B§0©„2«7¦Š=®š>»‹3ºš@¾CĉB¾˜:ÀŸ:¢A½›<ºªH¸ª9¥¢N©I›”D§I­C¤›M¢D£…8¡?˜‡D’ŒBš…C”’A>ˆP}O’ˆK‰‹E{•?w„>z=‡‘>„C‚–Ez’>~ŠKw’Sx„I|“Dv‹=“M}Š@ƒ…A=vƒ@{A„—BŒ‘?‡š7Œ©>«8~ª<„¯?€°4yœ=x“Eu›>r8w™2už5q 6n¡B^ª2d£8W§Agª:\²8`¶6]³Gd·Gf¶@m³Al¸@n³Ej¾@k¼Bo¯Jm·Mq¸Qt²EoªKt¯Bx¨J‹ªQ«W}§MŠ±Y™³R—­Yœ§W‘¤]¤X•©_‘ k•£g”o–wš”u¤}£…„š‰z¦“‚ •}©¢{£ž}µŸy¸±†x°……ºŽ’³‡„²Š~²“„²‰º†~¸‚ˆ«†‡³|¬‡…©xˆ¬s{¤q}¥f«r‚¨^‹¨\—V{™Xy¥^Š¢R‰Ly‹L{ŒT…M}}BpzDo„FkPx†Rq‹UwXqxRtoSxucw{atz_z}a…ˆe€„ay‚ewpykm{p{yrsppblvmnlkuvwstr{qq|ne}pj€th€ug‚xkˆscƒyl}sŽytŽxp›…n’„xˆƒpŒ‰ehƒe‚gŽx`—xj“€]•ˆ_¦›`¬ X¤£O¢¡I¯D«¡;±¦E¾§Jº®I³«O·±P¾®N¬FΩDÉ¢=¾ BʦDÓ DÏ¡M¬LɯSÊ°QƬXº³M´¥U²¤L¹±L°²R¤­WŸ°UŸªM ­Qž¬S¢žP£¥N¦³R¨¯W¸¸T·³`²®Z¯¼Zµ¾QµºV¬´X§½Q¨»N¤ÃM¦¿L«¾J¤·O¦´Qœ²MªŸP®G¢£>œ¡<ž£@¤±F¡±>š«;—¨@N•Oœ¡?¥­F©¨;œ–?Ÿ”A¦ŸI¥™N ˜=¢’8«Š;¢Œ7¨@³“7³š9»—0¾Ž0³•?º >ß?À™H´–C¬¡9®§<¤§@£ I¤¤D¨™F¡™C§šG•>š…7›‚A™…K™ŠO•G”†O™‰J˜QŠR…HŒ‰Jˆ‰:w‰;‚’?ƒ–<}“7v“Bt–D~ŽMq‰NmŒHm–Gr’F|•Hz‡Dw‰N|„L|Fu†H~†Eˆ”@ˆE‚­>†ª1‰ª0y£/z¨3£:w—:u’4u“2p™:v 4p£:\¢5WŸ6Xœ>eœCd¤9`ªB\±9f¶:d¯Fe´Ij³Ce»>j¸@m»Bf³Dd»El»Lw½Os­Jt®Bv±G{ºQ¶S~³Wƒ³V‚²PªY’´[˜¯[šªb•¡f¢iŒžg’’g˜”jœŽkœŽu›•o£‹t¢‘Ÿ—…›Ÿx¢¥w¬œ® x°¢wª“€­Œˆ¯”‰¦’…¬ˆ|²Žw®“x­…u©~ƒ«ƒ…°ªˆ|¡€€›€…£p}£n†Ÿm†žd†˜c‚—V~ V}™]€›Y|@x?‚ŠPtwFsrPi|@g~Dy}I|zEv|HiwWqjUtg\kq`pvTp{av|ay…bp~_€|bxkrousq}|iewd]uljpcvuqqt|ykm{qfwqk||g…|cŽzb…}p”|m–ql~i˜yn“…f™r‰„z„g‰‡j‹†k“‹oš‚f”qp™‚l•Œi¨’]´Z°šRžšR¦žN©§A±¢AÅ¢Q»¦QæXʲKǶEά@Ë©?é<Ç©>̛=əGÂ¥I¸±KÁºIÀ°UùXººU°¦N®±B°°S©¸W©«R¤®Y²U¯®V©®L®¦Q£ªS¤°Z±²RÀ´RÁ¹O¿°O¶¸W¸²J­ÀO¼¶\¥ÅO¥ÀO«¶N¢¹L¦´Rª´WªµU—¬R¦±H«¢N£¥Jœ¤A©ª<°²I¡±<£¦@¤<Ÿ¥Cš§L¤Ÿ?ª¡I§¥6¤¨8››K›œC¡•Q¤—E¡˜GžšA«?¢B´“=³¢=¹ 1±œ5³¦>¹”@½ =¼ ;¼™C°˜G´¥=©«A¡«K±šD¡§C¥’D¥–I¡‹A•‹2£G›R‘ŽJ••Nœ’O“‹P—ƒJ‰†I…BŽG{”A~“<‚‹CŠš5{‘9tœD{I}OwŠCoHp’LoAtB}…D„Kz‚Ry†E{ŒD…™D¦>€ <„¬2‰®<|¤.x¯.v¤;nŸ;r˜>fš:i™1f™.o¤0i¨2\ ;^¢>U™;\«7d¥3_°7b¦6e§9a²K[­@Y°>\¬Gj»?b¬>m½Io±Hu¹Nl¼Tk¹Gm´Bi¬C|µO¬FŠ­U†µTµRˆ¦W¶\š®Z‹±b”±e„¯a…Ÿa‹–f‘’kŽšm‘•s –i§’w¤“u”’ƒ©Ÿu¤§z¬ v«s¯˜y¯€°Ž|²—‡¨Žƒ·Žz®“ƒ¯–{¨s¨}†«w‚§… ~£ƒ¥p{«i€Ÿq€žwŽžg€”h„—X‹“R‹˜Sz–]v;†…>yE{€HpwDtuHi}Ivu=vsCmjKhhTfnPohRsrOhtTfv[t{ds„_m}Z{te{svwwvmowigyghxkouiozxprwqspfwtft{k}yk€a’wd“oc•si–~`‘~e›d“‰o˜qt‹Œn‹‡oŽˆc™ˆe‘„k™zi—‰j˜‰ež•Zª˜Z¡œW§£T°£P«œ=°£G¾«JȧOƯSͳFαJˤMÆ¥@Á 9˪9Ë©9Á¡GȱB¿µH¿MÀ·V°°K¬·O«¸B«­A¦¯H¡³M¤¼O«´T«®W®¦T´C´£@¹¯M¬¶V¹ºV¹µY¶µLîL¼¹G¼²R¼¹OºÂT¹ÅS¨ÂM±¹Y¬¶T°¹\©¸Z²N¢²G§§G«¡I©›D¦¥A­°Dª´C­­<©«@¤ @ œHœšO¥¨Mª«Hª­A¦©H¥«D–œH——K™S ’S¢ŒO¥”G­˜G®¢=±¢;»¥5¶ª5·¥2¼¤.´š2²¢<¾˜=ŗ9»Ÿ>²¥:°©B¥ŸEª£H¤”RœJ¦Š@ž9—–Iš’L–ŒN”‹K›‰O”’M•–FŒHŒ™E†œ@Š“<}˜;‰Ÿ5„—=†;w–@ŽKyEp™HržEu‘Ir‘F€ŠE€O‹R~‘V€•Vw–M|žAƒ¦6Š¥.Š­4ˆŸ:¢4p¬6m¨2nª7b›4h™7i˜5m—2_¡=Z¥4Z¤3Y­5b¥:g§,a©-d©6cŸ5a3]§BR¯BV³DZ¯Nd®Fe»Mg»If¶HvºKt¶Vo¹Qj¬Ij«Fx¦E§F‚¦M…°Z‚¨[…©c‹µ^·Yƒ¾[‚¶ZŒ¯\‡¨h…¢r‘¡p™žq“l–jœ m¡¤qš–z›Ÿy¥¤q¨¥wœ«u œw§•‚«›„¤”„¢–Š±‰‚·ƒ|­‰w¤ƒx¬ƒ} {{Ÿ~z£z¤v{¡w¬sv®wªs„¥f‹”bŽ–\‘ŒT–VŠŽU|C~{Fv†?y|Lyq¼µ>ÁªC¾«OÆ´CͪQɬK¿¯HÆ°>Ó°7Àœ=Ì£EɯJ¾½KÆ¿L»¶L°ºO®´N³®L´·F°²J®¦=¤³B¦¶U²¸V©¶G³®A¸­?¹²D±®O¼®XôböZ¸²V¼µ[¶´Zºº]ƾW±¸TµºZ¥ÄM¦¿H´¼U¯Á\­µT´¹E²´N®®E¯°Fª¤>¤®E¡¦> ®C¥œA¨¤;¡š?¥>¢£@§¨C«¦C®©E«§?¥œ?˜£E’¡O¦‘Cž‘F¤”F«”J®¤H¨ž>®¡'ª¢*¬¥+±£3¯›1ª—@³§>¼Ÿ<³©=¹¤>¬¬9¨«:¢¥@®¢@¬žA‘7ž™2 Š<˜š:›™EŸ< D˜™G”•H‰>†ŒF‘•>…B|›AŠ˜6•6yš;zžIxœ8—8s”Bm˜Fy“G„˜?œHˆžM{•D‡˜L{ŸB}”M€¨G‡¦7€¤2…ª>Š±:„¦)q¨/z«9h›2c˜8f£=nœq};ryF{mFziGwoOvnX|iO|ePrp\oif}d`~glvkqoe{vktyhmhjqeawaholouygizklzrsyj}tcpfˆm}h‹uaŠ}i•wd•{e›†l”‚tœ‰k“‹g†g™vŸ„l”…`™wb•tdŒ{a’ƒc”‘]¢P£M¡’D¯˜Gµ¢?³«;¿°AêF¿²L˹AÈ®FÇ´OèFЬMΧBĚLƛRÀ¦PÄ´R¶ÃN¹ÁP·¸G¶µE¶ÁH´»D±³;µ©<¬²A°°H©¯F²´H¾°C¿§<ȤMĪUÏ¥[Ȩ\¿¯S¸«P¾¨R¶°\įbÁ³Y·½`±¿\«½T©·M¯²F·¸M¹»Gµ¹JªºD¬«E±¯I§¬F¤¦J¨¨DšŸ>›žDš§G¥Ÿ<£«>¥®/«§2°°<³¯A¥¤; ¬H•¤Nœ›Bš™?š–@©>¯”C¨™D¬£=®­(±4¬/¦™7§ 7¢@®§@²žC®¡?®ŸFµ£=°œ:«Ÿ;²ª4¬£:°¡>®˜:ª”9¡“0ª4£•9ŽAœ”<™’H—EŠ˜@Œ˜I‚™N„D{•G8‡›G~˜G‚˜8‚¢7w¨Hs¡Hƒ•E‡—?~B£L€¨E‚ŸAv˜?z D{¢J§B}µ7ˆ¸=¸-€¨-{¥,u /h§=k¡9a¢3c¦9i°8cª)U¬.Xª;Y¥~–8w”`±1Y­4a¬8Y­-R¨/X¦6Y­9`¢8b¯7\±)c¯7Rª?_«7gª7d¬A_¬Fr§Gv­Kr¥Ju±LvªEo´Km»Ni´No¼Bv­‡–Cˆ–K™Q¢E‚ŸI}›=‡˜?…œB¡F‡¥;€³=~¯>{¬F‚§G‡²E†°@²C„¥9ƒ¥6s¤7z¯0t´5k¯4i·:g®2pª+l¶2m³5_³)[¨,[§9T¦=a ?\ªp¬Lm¨Lj¡>m¤@l²Dj³Gh¼Eq¸As¯Kp¶C|±By»F|¶It¯Hw±DrµB|µJ´P‡°Z€´a…¦Y“¡`‘¦f–›n¡q›¦k›°h—«j©k™uš¨n¡¡k¦ q ªn£©h¡±j¡²f£¥pž˜j¥–f Œg¢Žq§€n©wj¡utžusšxy”n‚žp~Ÿo}šky¢q†•f|˜h‚ZŽY‚Z„–W€/iw8eu8l8ts6l|?t|3muCgf9giAsa5qbDycE}gGƒeFnZJp^Vr^_pZeidqldkw_ynOitWjehom_usp|utuwk|l{}n}|t‡qxƒr‰ƒi‚‚nˆt|c‹ydŠyl—ol™wvˆ~p‘}f‰n€n‰}fƒ`Œ[ƒZ–ŽH‘‹Vœ—I§‹I†H©”>¨©Gªš>¸«KÁªLDz>ºAͳ4ŸEÊ®RͧDǟL¬BįKÀ²HÀ°AøL½¶I¸¬OÍ°KɪH´»6º¿C¿¼:ºµ>¯­:³¨B´«DÀŸIÁ¥MÁ >µ§=¼­@ªS½¼G»ÃB·ÃO¹ÄVĸZ¼·^¼QƶPIJVøIÁ¿J´ÀO­¾G¶µG§°K«°RŸ°H£¥:­£?´£;¡¨5Ÿ *¦ž.¥ 2™¥,›¥7Ÿª:³¡,®¡-¥¤:›ª9¡­: ™6¨Ÿ9¢›?¢ŸA¨£9£°<  <ª£1°©1°ª>Ÿ¤9¦§8¡ 7¨¨-¥©-¦¯4ž¯3ª´3§ª:ª¦C¶¬5¹¬>·ž<«˜;¶š5°ž9¦™4¥¡6©Ÿ5¤Ÿ>¢¨B£¤@“š?”˜C‡™K‹šG¦D…©H‡¦M~¦?Ž›?ž6‡ =Ž D}§>€ªC…®@‚¥Q{¨Bƒ²;Š¦<}©9x¯8«At¹@t¹Y±9c¶]¦:j¥9i°Lw¦Ph¤Jg­Dj§@cºId¸Ls¸?i²HlÀEsÄ;s½Fp´Jz¶Ex»Ow¨@w«J³P€®V…§RŽ±[‹°[¤Xœ¤\™®`£¤n“°_”«m­i•§}— n—ªjš§e•¥t¦k–ªkŸªl¢™l¨•e¥”m¦i£”uƒt™zi—‚h|r wz—}|’tpœrs¡prdpb{‘`tawŽ_„œ`|”S}1mt;ct4cs6bu:p~?rusfMz`KkQRfMPoIRtVanTeeVlo]ovUegchfbgsjmxm|xo€ur~‚m‡€n†€fˆ}n†„p~‚pxyo{od‰ybŽ{a‹xe”rkvj‹m‰xl“~k™ƒ]”…Zš‰e‹c“‹\š‘O‘Q˜U¢‡WŸŠG©šH¨¡9¡¦:«¦H©¦M´¥C¼³C¾´8¾©=»®IȬQŤHͤIìAÀ¨I»¢HÁ°O¹°H·¨?¿©D¾´@¸¶:º³>¶²>¾¹Dµ°E¬¶L´®G¼°;»¡<¿¡@¶¨>±±J¶ªLµºBµ½DÀÄSººY²³Nµ¶T¹´PõWľI¼·Jº¹M²ÁH´ÃKª¸C¢¯Q¥§Pª£A¤¡9­¬5¯¨B­š@¡›5¨ -¡§4¦¡0ª 2±š:¯¡2¤©A©¦B¢®:¢¥6¬¦?¯¡? ž=ž›4›ª(¥­,¬³4§«9«®8ª­6¦²>§¥5°¥5ª«9Ÿ®>¦:Ÿ§2£¦7§§6µ?¯œ7³§6´•-®’4«•;°§1«¨5®§=¥¬>œ¬@”§?«E–¢G™”GœE„ŸN‹¥L„¢FžNŠŸI“™5™2‰œ7„žB~ŸI}±?ƒ©N„O~°Eƒ±@}¯B€²D‡¶>~¸;ƒ»?~¶:v¬2n¬,f¯'f¯(k§(p®&k°)_ª(_®1[³7cµ4b°AY²2\³0f·;bº=[º0^·3T±6Z±v«Dv¤Kh¥Sc¬Fc¶Ir¯Ht­Et²ª¯9¨ª7Ÿª8ª®2¤°>¤¤C¨ž?¨«/©Ÿ-¥¡1­¡<±Ÿ7²¡5Â¥;°–?¯3¬—3´£6ª­8§¡=ž¯G¥²E ¨=œ©?Ÿ¢J‘’B•žL€œF‡–@{—B‰–;‚H›8€£2†¥>}¬B|¡8 9†¬<€¤Q‰£E}­J€­F{¸A|¼F~´Gx³G€²>s¿2u¶+p­,d¶8h¯4f¨/e¨5k«/Z«4gÂ=b¼2l²t²Ep¯Co¤Cg£Sb¤Jl¯Hb©Am¯Fh·>lÁDlÁBv»DmÄ>nÅ?r¿Hs²Ly¸I‚ªR€°R©Oˆ¦Sz³Q¨M¬Q’ª]–´Wž·c’¶c‰¯q•«i“ v”¡l‘¤l¬r”¦i–¡qŠ®cŒ£k›™e’g¥‘n¢œr‘“e˜oŒ’iŸ„j£t•yt˜zy–rl‘yq‘wimeut›kq•bw”e€•Yt“`|3ct7]n5Ys>`t?UhGYbCai?cb;gXGlS:s\µŽB°Ž:§š>©¡3ª¬:­¥8«ž1·¡6À«?¼¤GÄ©>À¬@êE¼§MŸW¼¢Pº©J´¦D¶¨E´¢;¯™6²¡8µ¡:ÀŸ9· ;¿¢B·¨>±«5¹µ>µ²:³¨A½¬?»§Bº±D´»Q¸·R¹¼L··Q¸«FÁ«K¾°F¾²Qº±S¿§R°¦R°®F£¦?£¨Iª¨Mª¥F©£H¨œC©¡F¤¨>¡£1˜©4‘­9™¡8•§0œ9ªŸ@§™B©ŸI¢K¡¨A±©A«¥8°¦1³¦1ª¨)ª¤ ¶¨$¼­3³°2±¨,¥«.ª¦>©¬<­¨7­¨@ª«3¡ 1¡•;©–3¹ 0¸›=¾žEÀ—>´ŸD¹–Cµ–?¬¢:«ž?®§8 ª9£§E¦£Fš©>’¡=ŒE…–@ˆœE‰›F‚™<‚’DŠ™A‰Ÿ:ƒ£=}¥?ƒ«8†¥A‡Ÿ=‘ªDŠ¨F„´L~±Ds±Cv²J{·Sv²L€¾L{½?pÆ@m¾5tÄ8k¾8k¶;f®8f·2n²3`¸/bÀ5b·:i»:^¼3VÁ5Xºr¶Ao¨JvªPe¯Ie¬Je¬OeªIm»Ii»Geº=rÁ7uÈEsÃGrÉKm½Em½M|¼P‰µT„«Hƒ¯GŠ¬W€¨N}­UŠ®S¸_Ž³Xµ^±Z‹¹f†´^‰ªg¡b¢n†§a‡ªbƒ¨fŽ­j‰¥h¥^Ž¢h˜˜i“b”Žl–„e†c‘ƒf›†k|q’yq‹tu•hœ~f•|hštq”in›]{”bv•g{†[z3jl+nc.bk3buAZh@T_B]V:Y\BfYGaTAe[@h[E[R?bJ:`SCVQN[^GcVM^\[VSecXriZajTal[eiejqajsmnthtvbn]~f†bzuY†y[|wY|te…jb‹bd‘wi†s\’t^€s[Œƒ_„€NŒxU€|V‡\…^„‘^Ž—P–T›šL¡R§”=©—;·›?´š<¨—9©©5²ª.¸¥,¼¦9±§:¯™N¹§9°¥?ÁŸ=´¨E¹œ@µœBµ£H·¨B®¨Kº¨D®›:­š3¼˜5¿¢7ÀžBà7Ã¥AÁ¡7¹±6³­3´¬7¹«?»¦<ȤK¼§N¶¯L·®N²µK¿¸V½ªG¾®DÁ±N»©Iµ¨X¶¯HºªC¸®D´«C¸§Aº£E« I¤›>¨­>¬­9£´9«³2™ž;¡¤5¥›B¨©;ž¡A£Ÿ4­¤>®¡J® 9µ¥4´ž:º©4­¥1£©3­©'´¡/¬².¶«<£¨6Ÿª5ž¦:¦­A¨¬?·©:­ž=¥ž8¬˜9±6ºš<µ–@·›A°•G°™@¼›<³™B§¢A¥¨6¯©;¤¦4¦¬7˜¬5¡¨8œ¨Gš˜I˜L¦@ŽšH‰?„£;’žBŠ—E¡;„®>Š­2§=}«@‰¤=~¯F€´P~³G…¹F}²LªP€µA„»=vµB{½An´8yÁ4pÂ8wº5n»o°=t´Gt¸Gw¦Pq¦Oo¬Nm¨Bn¬Dp¬Ij¶Bs³@o»;n·6t»MkºOi»Bu¼R|¿V‚¬O†´K°F{©\­Z„¬M‰µO‡»O‹¾R•«WŽ´Z’¼h‹»e”¸n‘©k‰¡e¤h‚©g‚­_€¬e£kŽž]”n–m˜Šq–“m‘†hŒd’|l‡a•€c‘|q’g–ym™ƒgpzkŠoqru‹`z‘a{†].td/md7mg.\n+\]2\X8RT[UAR[GTdEZ\LVRS]PdiLjfTrt^iq]ordijhkpakvapiapl`€{\€_‰re„nY†k_n\Œs`g`…p`‹ueuh‹s`Šu]~K‚ƒI~T‡…_‰ˆbˆc”‡\’M˜”L”‘IœŠIªˆ?­—E°›;§ž?¦Ÿ0­¡/´¡6¹œ5¯¥B²Cª˜B°›=° @· >»œI·¦Eª£;ª¦B®@½J¾”K¯–=²žG¶œE³š;»¥9¹¨3Ĥ<¿£8³¦8¶ž>â<ƬFÄ¥GÁ E½ªI·§M°ªV·ªJ¼´M¿¨Q¾¢J¶›Q¯¤L®°J²²;¶¬C¼¯DÀ¥B»ž:±ª<§¥?±©J³´C©³=¯¬AŸ¡;š8¬§>²¥=®0¦¤4¬–B­™B¤¢6§ž4­¥-»­*¹¹/¨µ.°¦-®§5¬­6®©7¨©9¥¡>¡¬<¨°E¨¨3°¦/§œ1¥™6°A°’Bµ˜:¶™B®œ<ª–D¼•<¿œ=¤9³Ÿ?µ°<ª´;¡ª8¦¥7¦¯3–´:£Eš¡G¡M†¢I‡¦D–ŸAŸ@Ž¢F„©8‰Ÿ5‹­8‚®3z§C°Bˆ«E}¯My´I†ªJw®Rv¶T…²J„¨=}©B|¶D|¿:v¸<„·?€Æ4„»-x½/p¿0q»Ä G´:Ę6Á¡@À™;ͬC¾¨G»©KÁ°W©ªMº®Mµ¯Mº¢I½žI¯ªNº§L­±F³§?¶«1·²8ºž3µ3·¡=¬Ÿ>®µ=¸«=¬«Eª­I¦¤FªG²˜>±Ÿ@±§4®™+¦›/ª•8§”:«£6¨¥-¯²2¯¨,¯®5²¨,²¯1´«0·µ9®®:¬¤4¬¤1©®G¥ 4°«<¨Ÿ8 £3ž˜<ªŸ=¨œ@ª›AªŒB­Š=ª›=¿™<²œ:¶¨B¦ªB¬¬7£¤?Ÿ£6˜¢6˜¨2œ¦B³P‰©Q¥P‰ªFž«E˜©I‡ EŠ¤G‰œ7¤7Š²:‹µE‚¼Oy®C…¬Gƒ²Ky´G€§F†·N†µQ‰°;‰·A‹¶>‡¼8|ºDv¸<†È7Å5}Ä9{½Ax¿>~ÊEjÉ6mÄ>kÕ)`Æ(\È7`Ó0XÐ4WÊ,YË.aÉ:b·;\»?jºKkºNqµUmºIk§Nt·Er±;n³Do©:j°6e¼?oÂ6oÀ=hºnc0pY.a^4\];VS@XP8\Q4USA^MJZWBSW@UX?YP;[ZFSXINSWZOXeSZ^Ud^c]]gh\_cifjeanmZmt[ktTluS{mSuW{qUul[zmWz]y_ƒz]ˆwg–yc’i`Šj\‘f_…jT…iTŠh^‚s_ŠsXƒwZ‚yO‰zP”G“ˆJŒŠJ–•?¥ŠG¤Bª˜H£—@£–=°”:³™F¬C°„I­‰?©‚=³‰4¬Œ2¥—:«žH ŸEŸ™E­œE±¦=¾¥Eµ¤H½F½9Ñ:ŝ7ÚA¿‘CȓK¿–B½šF¸žK¹—@¹ LĦMÀ²T¯U¿¯P±ªQ¬ L± I¬¡K±¦?¶¡7³¢@·¬6¶ª9º«4µ£,µ©+¼«4¾¡@³¨>»¦A¹¯G­¡N¨¢E® L¬œD¸›;¼žC·¥>¹œ2¶ +¯Ÿ5®¥;²5²¬0¬¯8«²,»¯1±¸4¸·)¸­2³°-²¶2±­*±¢6ª¡:®¬9­¦@¦¥?¦›6œ£>Ÿ9š™< “F¯‹E­@³˜K²ŸDªªG­°Cª´E¤­>§¯?œ¤5Ÿ¡1’¬;“¸=‹¶J‹·F­H®B”²D°BŽ¨?Ž©H¦C–§E¯;Š±<¶L‡­P…³KµG|·B‹¨Cˆ©K~­R~¯Gˆ·Bˆ³;ˆ¶5~¶=|¸2ƒÅ3‰Æ>ÆD|ÁLÌD€×I|ÖBxÔ3hÏ-f×5[Ñ/R×4WË/aÔ.aË+V¾4XÂ8XÄCV¹FW±Pi·Jv·=sº>h¼4j±;d¬¦5¡’CŸŽ9§…<£3©Š1­1¦“;¨‹=©‘=›—>žŸ8¯˜C´ŸA¸¢Eµœ@Ś@ÞB¹”:Õ7ŽBǘF¼’EșJÃ¥B¼˜KÀ L¶•;¹£I¼ C¸ŸI·›T¶¤J«™I±žM¸ŸM¸¢F³™C®¦D¶£7½ž:ºž6­¢2¿ª2´²9¸¨3¯¬>¹±B¼§Fº¯<®¬F³ H­¡B¹”D¯£F¸§@¿¡2°¡3§–(®‘/©¢3µ˜-¶¢9¹¤'Á­2ij2º±*¼«*¼°%º³)¸«:´­6©š6©›<¬ž:­•D¦?­ž: š?¡”@¥ˆH¦‘Fµ‘J©Ÿ?¨= §>ª®<£²D¥¦D¦¨? £4ž¤<˜·=˜¦=˜©K”¬F–¢L—±:›´C”©?† K‹¥=¨Dš¬BŠ­9ˆ¨K½BŒ²Lˆ¸D€µD|ºC‡¶KŒ¯F©B|©AŠ¬E~¸={·@{³1|¼?|Ê:zÉ@|Ò>ƒÆCsÉFrÅ>zÚ@pÚ9gÑ7^Î6dÖ.cË,SÌ5ZÌ3fÎ3^Â3ZÀ3a¿BUÃAj´Dl½KlµAhÀ>f´7[³=^»Bi¹5fÂ6iµ8lÁ7p¿;q¸Ek½Kk©N_¢Un¨Lu¡Vv§Gz¨R†«H„¦G‡®E‹»I…±Q‘µH‹¸W…ÃO€»Iƒ·UŽ³MŽ¤V†Ÿc~§Y¦^ƒ«R„™Vƒ£d}˜]†œf‘–h\„‰Y|“]ƒŽ`‘‹a…‡Uƒ†Yw‡Uz‰a€…V…eŽ†X”zj‹l]„f[‰cpŠmm;kZ0gW/f\3ad/bP+bK4bR.ZW3UM*[G+OS0TS@OR@ULGTWTJWXLUZSRZPb\Sd`O_]W^^g^Qj^]hYkf[npaqjdsqYphKobOxfP„fKuJ„nZ‹fYea•hc‹mb‹pa•mcŽpSˆoNƒzN|sH„lR~kS„sOŽoV‰{K“}@•}Ey?ŸBœ=¦”8£‘6£ˆ>¤ˆD¬”A¬—;œ53ž€7¡< Œ4¡‡4°Š0¯‘-¤‰8”D§œ?«ŸD®–:¡@ʜB½›@º•AÀ›A¼<¸ž7¿=Ê©FȧEÆ¥G¶ŸG»–;¹—:¼”:¹—@µžL·™T³œW±£IºœNº•B²›7®¢<®¢.²ž,¹)°©7²°4»±3¾¸1¶¯?°¨<²©6·±?²§:±¡>µ–@­•C¯š;¾™=À©1À¥%®”'µœ(¯—(¶—*Áž1Ȧ3È¥$Á¯ ·¶-¾©/­(¾©6´ª8¬¢=±:³¢A¯ 9©“E¤Ž@©–5±“;§‹G©ŽO­—N°¢L­›?¤’>©‘;¡¡Dœœ?¨¨A›±?–¬AŸªFœ±>œ²Jš©P—®L‹¥A™¬7—ª>‰ª;Œ›F•žH˜¨DŽªN•§G¬A¶?±D~¶;‹ºAˆ¹L²P†¸C¬<„±C~»E…µ<|¹A~µ4vÂA|Ë=„Í:zÌ6oÄFsÉJtÑo×6gÕ<\Ý2^Ö.UÎ:ZÅ?\Ë0ZÁ/]½.V¹;b¼>`Ã4pÅ8y¿Fn·Ci¾ÃžN½;²œ7´›=ºœ2¼@ÁIÀ™J¶¡MºŸQÀ¥N»•D¿šD¯‘1µ.±¢/­˜(´.²ª8µ©:¶³1·«>¾°9¯§0«©;§œ7«®;­¤=©—@±œC¯•:¾£5½¦/±£0¬ž/ª’!¨–.À’0Ĝ,½§#ñ,¾².ij/ì-Ä­"·²,¿«+©¨8¯¤3³¨3©©=¨•C¦“A¯šA³›6©šF«C°˜N³˜P¢“Nœ“Kš@¢¡9›¦HŸ°;™¯G›ªB—­E¡¶Iž­G¦Q“¨J£Hš¦FžªN‹¥J‹—>‰ J’ŸBš¯B—¬GŒ¶E”²:†¸>‚±8€¸>|·?€¾E‚¼F’¹J„¸BˆÁ?“°A„·:~¼7x¿9„Å>tÎD~ÉE{ÊDqÇFnÒ;xÍFtÉGsÜClÌAiÐ.^É?_Ë@\È1_Á/fÉ;[Ä<\Æ,h¾3o·5ƒÂ?w½Co·E`Å9VÃ<_Á0`¾=`·9e¹0k¼8h¿5c´Co°Jc°Oj¨Pi¨Lo¥IkŸL¢B~ª@„®E…®Q¸L¬N‹¿SŠ²V„µH·Gy±HuºT…«KwµNq©Yu§N|®J~°X‡¡M€¨Y„ PƒžR„—`ˆŽYš_‹ŠX‹Ž^‡Še{€ay‰hs„axŒhy†^Œ…gŽƒ[…vg|}e}}c€wd0T_,aU7YN7`V1Y_+TZ"XQ'\N$RX%OR%MX1CP??IDBQKQNRQU]XTYNSXP`WWeXSeQZZUSSRY]UPb^Wib`ckaav`[~aL}_MƒmLŠlQ‚^HŠaFˆaQ˜nW˜oT—qV”tauf›rbP–O–{P—WyN“pP•qU“{K˜};š‚<“€:—Aš4¡Š6™ŠCG B˜‡Eœ}Jš}DŸwG¤w9›†?¢=®‹=«;®Œ<¤‡4±‡2¬‹1®Ž*¿œ-¿›.ƛ9͑D͐BǗFÀ™E¶¡9º¡=»¡;ĦFº›D¼ž7µ˜9¸’9´›D¿EƕM½šG¾žL¾šC³”>³˜:¸–=º˜.´–)´ 3´œ/¯£5½ 8¼­<¼«0· 4³™8©Ÿ7©¥0³¤4ªœ.¬š6­—;¸ :¸¥7¾¨4µ¥2¶¦(µ+²”+»“ Ĝ$Ä£-ì,ȱ.É®.Á¬*²(µ#¸¦.¨©7¤ª<ª¦3ª¢;¯¢:®“<¨–:®—=±=¬˜H²“E®Q£–Rœ˜L—ªHœ¬?¢¯Fž°>§·Fž®H ¦K˜ªL˜±V”§R•©Q™žO›—O™šL••PŽŸCŽ¨E•¥9˜®<‘³B•¼9‡»9{»5~²:v­D|¹<‚Á6‹ÄA‹Ã?’ÅJ˜½H‘¶DˆÃ=„ÉE„Ë?{ÌwÔ@jÎ@mÒAsÓ=kÌ9gÈ7]ÈAcÆ@iÈ4lÉ0e¿5dÄ3hº0r·;{À8xº5i¸=]¸3_Á9WÂ5_Ç2k¾(h¼/k¼6]·=_²PJTLK[WIZWDTUFXTUi^Tp^[iTTdWNT]PUUSVd`an_coX_mbTsZQxaLylI€fK{hFˆ^OŒ^OŠbT”f]gV‘q]Œnb•o`—‚R–‡PšvSuN’wJqIšwH;˜>˜†?~D’Mœ8¥0¡ŠB™}A‰@šŽ@Ÿ‡<–sHœ‚F­}C z=œ‘Aª?¯C«Š<­1·,±ˆ0½Œ6•9’4¿š,ˊ<͐<ØH•F¾›<¸¡D¼£@¿¡;¶™CÀ˜5´–A¼—/¿’EÖ:¡;¿¢:ºœ?º˜C±ž1´0¼‘4¾–.²”/» ,ºž:¬«5¯¡?¸²?²¦Bºœ:·2¯¢;¤¤?ª¬5« <® 6¹¡9¼§=Ä¥/Å¢6´­4º¬.¯Ÿ)º‘*·›)Ä¢*Å©&Ī/Á¤/¿³6ǵ3õ(¾¯%Á©.¬3¬¦6«9·™=±—F ‹@¦›Kœ”Aœ›<«‘M©›B§RŸ˜Qš¨S’¡KŸ¦F°?›°I˜³Jœ®F›§Hœ±Ož°J˜²P“«N›¥Y¨J’¥HŠ¡R”Bˆ¬GŠ¨>“²A‘°A•µE‰¯I‚¹:¾>{¼B²;·D‚¿?’Ã@ƒÂ?…½M¶Nˆ¹D€ÇC‰Ç@€Ú=tÑ>nÉBoÌG€ÒJ{Æ<€Ò;uØCtÐGpÔHcÈB`Ò7]ÍG^À:aÈ3f¾7gÁ0bÇ9qÄ6hÁ=rÎ0xÃ6a·8b»;eÊ4i»5cÆ/e¸,r°1k¸9`´0g¶0]³9l¨Go£MhšNj™Mož?j§Ez®?i¤Ly¯Qs¬Dy­LŠ¸G‰²LƒÆL|¿Fl»Ix«Bz¶Sh°Fg·Rs±FqªG|±P¯Nz´I{²MŠ­I„ŸM‘š^†œR‘cŒ_€a_x…`{fŽb{‰c€†jm‹ˆlˆ_ƒwl{`.[_)JW4SP2[F9VH6QC-IN/JM+IM4IC-HA6JK7DM>O]RNWZI[`HZWHbYNoeKnaOhWO_VRW[WU\PXfYUcOdjVguZYw^X€`L~dMykK~nOŒpZˆjSŠjXfT‚kT‘sVmR“xWŽ{Q•V™xR•yM˜…L—B–„8˜…<–ƒB‡D‹Š@G™…Ažˆ8¦yDžx>Ÿ‡D …E–LwC£€?§y>£…3¤ˆ6£‘4¯‰>­ƒ?»„/À/¼ˆ2»‡5´ˆ4½“-Ō.ė9»’B¹ BÄ DʦDš9ĝ5º”6Ö?¼‘>¼76¼ž?Àœ>¹¨4¸¢;¹£>·ž8·›4¸‘2²“/´š;¼œ;¹›3«¡1®¬:»¬9¾§?æC»›6ºš2©¨6ŸªB¦¦<¡4¦š=«¨3¸©0¶¤-Á£8²ª.´¤(µŸ(³™,µ-³£+¼¥(ș$Ǥ)·©-²¬-¾·4½³,» -½¤/±=¹•=²E«ŸH¢”M¢œI›žJ š=Ÿ“@Ž?œ–N•ŸP—§N—¦F—©H›«O °J¥£F¢¢H®O˜²L”²B–®Hœ¤W–£Z¬W­J†§LŠ¨L‰­F†ªO†­P•¬?–§IŒ¬J±J{¿G…²H~¶?€¼E…Á?ŒÇDƒÉ;„Ç>ˆ¸MÀL€Æ<ŠÊ8„Ù=€ÛEuÕ?xÍ;wÌ<{Ï5€Ð;„×D{ÐIoÊKdÏFfÈ=kÃ=_Ã5\Ê=\Ì:aË:`ÆBkÇCfË9qÊ7sÆ5g¼-k½%hÈ.bÅ,^µ5dº/kµ/e¬3Z³3SÁ4]½0f®8j¬?p¨GpDm¡Bn«=g¡Jk¤Nv Pr¤C{´E„³M‚µIw½Jl¹Fn¯Av½KlºHi³Qm¸Jq¯Rn¯Pt²Q‰¥J†ªE~®K‰²Pƒ¨PŠ¢U‰•[Š’Z‘Xƒ•[‡‹b…”bs–mx•e„‚c„g|~q‰~m„€f‰†m~c&MJ%QW2VD4XC1PI.HD)MF+CK(GG/ED=HM1CV:CONMeUOZRCaXETP@ZYIedKlXT_ZQgRSY_[abK\VV^h_hh\mi]it[dphZ|fWyeSylWz`W~_]}k]vnTŒg^…{[vRqTqZšyI‘uF™p=y@ž~E”€GƒH™ŠMœJ•{EŒ…Kš|I“ŠBœ„9™u3ƒ:œ€B¡ƒB£z>¨|9¤}D±…0¨‰.§{+±‚1®‚4¹{0¿z)»~:¶ƒ/¸’4µŠ0ʑ/¼Ž0³—;ĖAÀ—Dē?‘>½•5²’.²•4°‘=µ3»‡;Á˜6º•;¯¥C³ 8¸ C¸œ:µ›=µ›(¹¢:¾ .®5´˜1³«8¸ªC» 6½¥6µšAº›G¨¥=§¨EªªF¦¥?¤§G±¢?«¨D¸¬4ºªBÀ9¼›1´,³™)½—3»Ÿ(³¤/´Ÿ'º‘)ƛ2ª3Á¡5¶µ8¸ >µ›3°–9³Ÿ9»ŸC¼¨E±£R«˜Sš‘J’P“¡@¦šD¡•E ˜HšžS žU ¦Q”¤Nœ£P¨F›ªU•¢RŸªJ˜²S’¬R±R®X“°R‹±W‰²[€°RŠ£Y‡§Z§W†¤L™±M•²C†®M­FÄ=Ž·?…¸A„¾9ÁCÍI‹ÇA…É?ˆÃPÌ>†Ï;ŽÌ9ÒG‚Ò?{Ì:{ÕDsÄ=Ì6„Ùs¡Caœ>a©ApŸJj¢Ns¥Ak¡=w´Ou«N~°Nn²Ep¶Js¸?m°Hj­KjºCuÁJq»O}®W…¨TŠ¥Ry°T{³T}¢S‰¤\Ž›[ŽZ‚”b€›^‰TŽZz“iŸkx˜]…‘ha~}izjw^…wd„ƒ`.OF*NN&FK-GF7JK5HE-LA+EI4MN0EI2@T:GQ=MYMH^KGWNDZECdL>\V=f_KeXSj`JeYHZXQ^YPkPMf_S]]^cn_^qfbs^R{]RueUze_}mbte]|iZ}tU…rW†sX„lQvZ™wZ”oJ•fEn=“xF“€?—‡?‘…G’K–KyS‹yIŒL•|?•‚0•€2¢z1 }5®ƒ;¬†<£„B©~:ª-®}+µy.³|.´w)³y*µ&Á€2º‰*¸Œ*¾4¾’.ž/¸™9À—57×;¶•4°Š8·‹+µ’-µ‡4À„9¹Ž7±Aª™?´—?® :ºšD·¡<À¥;»ž.µŸ2¼«0¿«*±¦/¶§1²§=±¤>¯œ;¯¦:¯¤G­š?°¡E¤¥K¨›F£¢E¬Ÿ;²ªBµ¬F¼©E·¦>ºš9Ý)ɧ+¿ )¶™*º›.¹Ÿ+½™0Ɲ*ƚ(Á¨/»ª5´›@·™?°š>¸@³šF´£G«—G¢™M¦—L™—M’“O››C¥MH›§Rœ¥K¡¨R—XŒ©N¤R™«K”±R“µKš±N›°RšºJ“¶PŠ´R†©Pƒ¦^¤bƒ§Zƒ«Y€ XŒ¨U’«K‘¯DŒ¯B®DŒºB”¶F•¼:·CŒÀ?¾JËG‰ÃI‡ËD‚ÕKˆÐA‚ÕAŠÒF„ÎE}ÉDÆ<}Ë:×A€Ñ8ÙE{×FqÚ=lÛCqÛEkÌ?pÍCpÖIqËAgÐGsÐFmÈCkÊBxÒ=sÇ:f¾5c»3i¿/k»0k»3q¸,g¹3iºAiµ?e¾?Z¶9b¼>Y·4\ª?e¨@l¡K3LG7RNADV@?PT9RL>HS:WR>OVNd[H`VLYWV[TOcWP]PRdTO\OYec\encefa]sVQo]TnXW{^]nadpeayq_„hQ€jP…x\Œv\u^™oS™yI‹qNŠnB~=›„EŽ†@‘~NšŠI¤‡Q”O|9”u@–s;w1.§x7¨Š5¬}8«ƒ;«2¢‚7­ƒ/§Š9¶}.¬v&¸z-¶0º~'Ç~0¿)Œ)·‡*¿“(º0½¡:¸™9Ä¡=º—+ºŒ5¯/¯’'µ4·Ž0²•3¬‰@°‘9¬”C´œB§¡?ª Aº—AÁš6¾¤4»œ1­7¶¤4°®.¬¯1±­9³š>ª›Fº¢Fµ¯N°E¶©E´–G¤—I¤¤GºŸ8¸ŸH²´Q·ªHÀ°9¸«;¿›3—0Á¡)¼6¶˜2Ę5Ÿ4ɚ+¾4¼­6ǬB·©7±¦GÀ¦J¿¨=º§Gº¢A¤£EžœU™‘M—šRššD™—D££J¢—L›¨Q•£C˜¤Q¡ªVš£Nš²S•©R›²K˜­Q¡´I–¶Y‘ªP‹µL‰±MŠ©Y‘­^‡¥V†¥YŽ¦]†¬W‡¯\ŒµOŽ°Pˆ²JƒµD“±F†¸I’Ç@Žº=É5ˆÈBŠÃH‡ÇD‰Æ@’ÊA‰Ñ?€ÏK‚ÑT|ËBÄK|ÊK‰ØGƒÒ;vÕ@}Ú@€ÏLyÝGjØGsÒFpÅ>jÍGrÒFdÒHgËHnÆNdÂEqÆEzÓ:uÎ>fÃ>lÁ6`Á0j´-j±+e³/_µ9g³4`±7b¶D`¼8[°8\´>AA@G$>L&JM1MK&HI*SD8JH5BUCDSBOJ8?A?@GG=BU;GWJPMGOVFPWE^XI`MRVQIPbH[\NUT[YP`d[Z]d[`lTZfR`hUYvfTrf_sdglm]no]~iPŒdS‰oN•uM—xP˜yOyR–}EŒr=y;›|DžˆM„G¡ŽJ¡M¤‰=ž‚:£„7žxA›€:|,¬ˆ6©†;«‚8›|1š9¡u=ªy:¢‡;±‚2µ.­y"¯~%±}0¿s+¿„/Ž9̆3ƍ3ǖ-¿š5Ȝ<ʖ5ʙ:ő/À‡4ª‹.­Œ&®Š,¯3°•A¾”?»œ@µ›3¥˜5¨›;µž<¹¡1¼¤1¼£;¬œ3²§0¬¥>´®?¬ª6¸ªD³›Aº¤E·«E·°:®£7¤¥C§šFµ¤A·§=¼«L³­K¼«D½°:·¢0¾–2¾Ÿ/º—8/½—*¿¦*Æ¥/¿¢6Æ©1Á³5˵=¼·?¶¬@²ŸE¾£I¹£Q³§Kª˜S¢˜PŸ—P™›P“”M›šQ¥¡OžžG–¦Q•«I“®K¡­G£§M˜®K˜©K›±Mž¯L¡¯U‘´QŽ¨V€ªW€¦H…§O­O‡²R‰²_”·Y‘±]Š¼Z¸L‚°M‡®VƒµMŠ¯L¯LŽÀE†Ç;ŽÄ<½I‚ÄGˆÈAŽÌ=„ÆI‰ÊG‡ÏI}ÅR†ÉMÇB|ÌQ„ÔO€ßNxßFÔ>{ÕEvÍEnÌFuÉ>kÄ?lÁ;eÆ;]ÎDeÑFiËKgÈFhÔCjÏ=tÉ=nÎBmÑBbÄ?Zº?`¶3_À8g¼5^´¤~CŸƒ?¥Š+©-³„1¨„.¬|+°r*µ€(´‰/¹;¾“Aə<è/˞1ř/ʚ6·•=½‡4·<´Š7³—2¶‹<µ˜@»A±“;®”6¬‘=ª›Eº¢D±§;»®0´¤-³«5»œ<·ª;µ›=²ª?²«;¨¢K¯ªE±£Bµ£8¹­8²¢@´¦G³ K®¤G­®J±«D¸¬C®¶B¹¥4·˜<¼›C¶—B˜?À™7Æ£*»š5é/Æ®9Ò§0Ê©6Ì´=¼ :À­F¹£B¯¡Eµ˜Q¨—N£˜S¦”J¨¥O£¡R›žIž¢K™©R•­Qž¥Mž§Oœ£O´G °V™´J¼Lª°Z£ªMŸ¤S¢W‡©J‡¦H¶H‡·Z“¶W•¯b‰¯Z•¹^µRÅN—³R–¯IŒ¹Q‡±J‰ÁFÀO”¸>‰ÈI‹ÆEˆÆJ†Ä@ƒÅ@‰ÅJ‰ÐKƒÈNvÌL…ÌE†ÐLŠÍNÚOwØK}â@yØF|ÓKyØGmÎAlÉChÍ>uÒ>gÓAiÑDeÐFlÍ=mÊ>fÐ=pÆJrÈHkÃ?_ÎGaÇChÄ:a¼8`¾5fÂ6nµ>sº>a®Aa´?c½8t­Au¯Is¶Lz¬Co¤@n¨Gy­Ns²M}µN~¦M{¨RƒªQs¨Q|¦G£Hw=o­>}¨@u²3w®@~²S}­R}™Q‰©R‚¢S‚¥\”š`Ž›[Š¡bxœV{¨[{©T‡™]}š`†¡k‡žhz h}Žfx•Z}‰azƒ`‚ƒ`‹‚OU?"I@%=?$BO*RI#PI+RC.VM3YK@RNJXHCNMFDIRHP]KOYPJSYMZaIRcNXfW\m\OgTSj]Xb\Rj_UnbYmaTsjZudR|ga…q^‡iXŒpYˆsO‰sU…wTŽoR›vP™rHœzG“Š?˜ˆ7•>¢…EŸ‹C¡=§‡?¤~>„4–ˆ7”.ž†8 ~3¤w/­r/³o6¨x@©†A­ƒ:¢~.¨‚+¨ƒ+¥{'¢v(°z&ª…*¬Š'±”0»™=Ä¢8Ȥ6Áª.È¡0·œ:·‘9¹Œ6²Ž;¾ŒG¿•B¸˜9º™=¯¡<³™;ºœ;±ŽB«Ž7°ž=°›7º©-¸¤+À©:¶ AµžG¯œK§šC³¤F®ªJ²£Eµ¨I¿£K»­=°­:³®>°©?®¥MºžMµ¢Cº¢M¯«G«¡@¨šA¶;µ“C½=º“>´œ1¿Ÿ5¦5ʨ4Õ©5Ñ­6É£8Ë¡D¿›A»¦I¯¡S«—Tª‘^©šZª™S§ŸN¦’K©–R¤¦UŸ§Q›¡Lž¦Už«J™¤MŸ®R¡±Uª¯\ª¶U¢²K£ªM˜žT¡J„«GŠ«N…¸Nƒ·[ˆ¼f‘¯bŠ·eŒ¿a‰»f‘ÄYŒÅQ”µK™¶NŒ´O·G•ÁI‘¹M’»EˆÃOÄK{Ð@„ÎE‰Æ?‚ÇB~ÈLwÉT‚ÆN…ÎJÜJˆÙQ‚åFxáJrâBtÙ@wÔAhËMiÌOqÌKoÈArÓCh×FoÏ;mÈ7kÌ;tÔ@nÊHsÍ?hÉ<_Ò8_Ë@^¼9b¹6f¶6o¹:z¿>t¹1lº3l²;u´Jt¼Kw¼Ey´Gs³R|­Kz­S~´Q´Zv³Xº[ƒ¯O|¨K{¦OwH„£M„¢Gy›<ƒ¨<}¨=¡E{¥Gy©U…žX†¥U‡¦_Œ£S“SœQŸX€§Vuª\¬\~Ÿ\w \¢gˆ›bžj†“d}atŽisŠb‰`~€\$L>!IC.PG"ATEE+QF$NG:TL1GEAUO>FDAOPJLOUPKPNPHN]QSbJ[]ITePOcMMd\RhYFi^IicYikKriSo_ZrdQƒgRƒhbaRƒdXlM€jQ…fG‹kF™gM”wK”tNž|:‘†E‹’=Œ:—8—†>¥ƒA¤‹1“8ž‹<˜…1š„=£{.žt-¯{7§w@¥wIµ…6¥z@¯{2¡}2­-´{8³x#²%ª‡1´3ª”.¸;ŜCț5ř/ɦ6Ǥ.¶Ÿ1¸”/«œ7µ–E–D·JÀœCº 9³•C±›;ª–J«’9º•0´™8¸£6¿«4¾£9»¨<µ¤<® J®¨D¹­O¿°E»¬J¿¤I³®M»§DÀ¦B¶°D´ªQª²Pµ­E¿©G¼±N½¤OªL«I°–E•M·IďB½£9Á8½¦7À¬:̪4È©8ϧGÌ¥LĪD¾žD´¦J§¥V¦£Z®œW§¤]¨žSª˜H¥šV¥œO¨¯X—¬Qš§T¥¡NžžG¥©J§V °O¨ªUŸ¯U˜®K¤¥Q“£E‹¯Tˆ²Hˆ´N‹¼OŽ´V™µa›ÀWŽ¾U›¿_ÃUš¸N“¼J‹¸T½NŠÁM·I–¾LÃJ…»FÉEÃCŒÊEÉ>†ÂH…ËC~ÐYwËVÉD†ÎY„Û_‚ÞWÜUr×ShÚ?pÓAfÑTqÊFxÏJsÈNvÃ@mÅ=qÎ?g¿>tÇFlÂChÆGjÊEh¿3bÇA`Í?aÃ;d¶2k±3tµ;p¸;k·1j·?oº9o¾Bn³A{¶@€¹A†¸Qy»M~®Q€°Z®[ƒ®P…²O‡«F~®K† Q€¡U‹§L|¨K§E‚«?~©LuFt¥J„—J|–X‡žU’ŸS‘˜^• P—\wžMt­S|­dx©X€¨X€ªX~«d…¡_‰›h}Ž[‚˜gƒ—]“cvˆY„PHN'DE,F>0OG%QL)KJ2LN4KM>LA=IFDME9NAAP=8M<>I:?Q@DJK?BG=AHKPDON>QNFISJQQVRUV`IMZQVcNNjHPdQBc^DkaSfeYklTz[Vz[S{ZP{[[x\Y~bM}gG~dH~fKfKpNoOŽzJ˜}A–CŒ‘@‡”B‡<ˆŒ:‘ŽA>š0žŒ3”z?Ÿz9œz4£o<¡u8±r9³|A³‚<¨{6­}9¤}8¨„<³„8ª„-±‰*²‚5ª1°‡A®Ž?´—<¿“<½ 9­8Ş7¹œ/¸;°™8¹‹:·A³™A¶ L­’Mµ’@¬J®œD·š<º˜4¼™0Á¡5ě+Àœ2¹¦1¾§Aµ­Iº¯C¼¨AÀ§O½«G·«P¸¬PÀSµ¤M°£S©©Yª°U¶®V¹¯I¸§O»¤V®¤N°›E¼›EßSÀ™YÁ–NŸAÇ£=Å HÅ CΤBÊ®?É«EÅ­C½¯?¾¡<­¨?¬¢M®›S¬¥\«™V ”Ož’G£’HžšV£ªT¡£KœF¡œF¦¥Ož V¥¢V£®U­¬N£¨F™¢I¢«J¡¦Q“¬Q‘±O˜´R½M™ÁW™·T”ÇO“ÅUœÎ\žÆWšÈZÀMŠ¼Z€½W¶R–¹EšÀL“ÀLËB‰ÄG„Ñ@ŽÑIˆÑOˆÃIwÆSsÈLyÇQ‡ÐMŠÝX‹à]~Üa{ÛWrØKiÏJnØKqÔNtÔIsËFlÊIu¾Gn¿Mk¾Bu¾XÈ;Z¼0NG7LB6IA;V?8L@9EDJE@>E=C@JUHFRJOHOQLGVYGOUCUZ?RkAHeMKlQO`SIaaLfeKh_StfR}_[{[KvZL\Q|_Iw^KƒTF€YH€aH‡hMŽkN’wL•{N€?‰8—?Ž‡<”3ˆ‰>‹‰B‘Ž8—„>š:™„8™{;£„F r<¥nG¯{A¯vC¨u>£‚<ª‚?¤ƒ7¥y8¦‚0³ˆ0­*¥‹0¦Š-°Ž:®‡5±–B½›6Á¦0À±<¿œ;½•-³˜4·‘F®•C´Š=¼M»’E²•A¼”@¬’@³”I» :º @¶š1¼¡:È 3Ì«>¾¨:æF¶©F®;¼§HÀ²QƦM¾¬Y¼­XşYº R¦¥I­¨K®¨Y®¤O¼©T²ªT¾¬O´§N¬H·¤R»§MɖW˒HśJ͘?Ο?΢CϤIÏ°7Â¥EɯBÌ¡CɦB¢G¶©NµW®¬^¤–R®•J¯šL«šMžW¦«J «Q™«Nš«K žN¦¤W©¦R¤¨O§ TœªH›J¢¢H§ªY™­W”¹J´R–³S”µPÀ]“ÀS’ÂW¡¼V”·Zž¾[–ÄZ‹¾Q‡º\Ž·T†¾BÂS”¹[‘ÁO„ÆQÉV“ÄKÊK…ÎH‹ÇNuËV|ËH„ÑJ€Ò\ŒÚV}ÒVrÒYrÉRlÊUsÑXpØSdÐCiËLr¿Dh¿;eºBuÀNnÁw´5q¸BhÂBkµ=r³Ku¸M€»E‡´O~½L‚¸Wˆ«XˆºU‹½Y‹¶O~ºF†°I¬;‹­J}±Iˆ°B…¡D~ŸH‚ŸKƒŸL|šNw’F€’Tƒ–UˆžW’—T«YŠ¥Ux£L«[~«^s¢X} dw™a¦Xw¥a¥Xš_„˜_ŒcŽ”S€ˆS}W[?RI PA+IF5LF>T<>XE?ODDOC:VCAVG9K@7MCACI]FBlKDkUIcbJl^GihGy`G|^S{`R~fSveXyVKu^N€XJ„VJxUCz^C…gA‡o@ƒxEŒxE’B†:‚Ž5Œ?†‡7‡Š6ˆ~5’5“‰@—†;Ÿ@¬…J©ƒF°}K©vM«yG¯}@®€?«€@¤B®|:«…>¦Š8 €:©…3£„*®‘1¨/§‰<·Ž5¸š0º£-º¥0¾œ6´ž9¹=­•F®P·”J´ŽR¸•H·œH¿”D³—:²š=³¤Aºœ=º™CŦ;Ì¢>È«:É£:¾¬> ?À£=È£BîMÀµS°[½¦W¸¡V¸ S«¦J±£T­­Pª¯W®ŸQ¸¦R¸¢UµªY·©LºªK¾P»šUǙLƒFƛNÍ¡GÉ¡HğIϪ9βBůFÄ¥FÈ¥AÁ®E²¬M·¦G­¢R¯¡V²P®˜X¬ŸS¬¨P¢©K¢¯Eœ¨Kš¯M¥¨Y¯œU¨›W¨¡W¢™O£•S¢¢T¦²Pœ²O’»J’³R’µY”µ\ŽÄS“ÂVœÉQœÀS·T—·Y•·O–ÄVŠÉJ…¿O{¿RÇPŒÊ[ŽÃX€¸`€»`‰Å\‡Ã[‰ÅSŽËL‹ÉG‚ÖQxßZÙS|âLÙVwØXuÍ[{ÐVrÐUtÏ^eÒUdÇGcÅGeºIc¸@a¿Jo¸Ip³Jj»Fh·9OEFDU>DNJGTAL[:OW;IWGA\FCiMi_Jc`=d`OghFijLufIaEu\FnQ9rW9‚SD€aI~SB†WF†^I~b<€u7wFˆˆHƒŒ8ƒ‚:…‰3x;‚};…{/‹;Ž~9 F–HŸ€D¦‹L§‡J´vJ©ƒ?­„Cª|=±6¯„8²‡E°†<ªŒ3²Š8«‡>¦0±’@¨’CªŒB«–8«›.¼™)¹¦-­¡7© B± I¨—F²‘Q±šI¯œE±JÀ”KÀ¡D½—=ºA»7½“9´©C¿®8¢>È©@«@´¤I¾¨?Ĥ=Ä©L¼¤Ié]ɪ^­N·§P¶¦G®¥H°«P¶¢O¯ M±•I¸œZ¸ U¹ Nµ¢Nº›T²—ZÎNȜRşHÇ¢VÇ¡VÄ¢NʤCУ@Ï¢:Å«DÁ®D̨7µ­J°¬M³¦Sµ¤Sµ©Q¬¬B¦«N«¥C¦©IŸŸAœ¤Fš¦Mœ¢K©¢TŸ¥Z°ŸU¤¤_¨]¢¢RŸ¨[¨ª\¥¹[œ»W›´P—·N—½S›ÀY˜´`“½[–ËQŸÀ[˜´\ÀN‹¸XŠ¹]Š´YÁ\‚ÒTÍS’º_‚ÀVŠ¹_»U}ÄR‹ÓXŒÑOÜW†ÛI‚ÜR~ÎW{Û^wß[tÔ[ÔZwØ\lÕOkÜU]ÌUeÒRa¿@]ÄKj·Gr²Ck»Jg¼;iÄ9e»HcÈ>^ÅKd´;e²@^¸9eÀ3k¹=o¼6d³Cr³1q°2uÂ5bÅEvÂGpÁC€¾Oy±O…´Iƒ¸F‚³Lˆ·S†ªP‹ºVŒ­J~µH‡¶KŒµC±G‰¯7§?„žH™GŠ¢=…‘H•E~žK‡—Bƒ¨?Ž¥O“ªQ³P†§Hz¢W€ªRŠU~¨\€«a{žet [€£b‚™c…š]y“Y‡Œ^Ž•^†–R”TG>&L>2M?0?I/KM3JN3KJ>H9DL4BE5NIXKN\CLaFP]:H`jdI^[IZgAgdAf_>tfBug=l\8~X8\3v^>wZDy\J^F_8Še:wJ…€HŽ}FŽ~A‡n<ˆo;…:Œ‚.œ€/šq5–s>›uI¯zJ²‰G°ƒ8´7¸@±†>¹}A±x4ª‡C®ŠGµ…>³ˆ?¥D£?°;¬‰?£A¡‡>©•@¥“6±˜0¹™$»—9®¡=¯£B±˜K±žH¬¡F¨¢G®•R°™DÀ£<¼—3²’4ºC³™F¿¢CÁ­>ɯ;ĬB¸¤;»¨CŪFͬBÉ¡DÁ¡MƧYÁœ[½¦Lµ§F»©B²K¸šL¸¤N·¨I´œR¹¡W²¡Y²§OÁ›K´’Nµ’U´—FĒG̖IÈ£S̪U˟LÏ¥GÒ¡9Ø­4Ò©6È¢CÅ >¾®>¹¬E´£Q»¡M½«H­­B£®<¡ Dž¡J¬¡F¤ŸL™©U›¥]ž¥U¬¬Y¨§_¨¨X¢¦`¡§^­¡T¨¤Zž³]˜²T˜·O–½QŒ¿TœÁR›µXžÀ[ÅV–¶R˜µT‘ÀU¹V¼Z‹º_Œ½^”Í[‰ÍbŽÀZÂbƒ½`É]xÌZ‡Ö[„×P…ÛSyÜNrÕ[{ÐY‚Í]{ÕWwÓ]ÖQ|ÒQuÞLtÜNcÕL`ÉEbÉBkÃBnÁHf½Bm¸?r·Fl»ˆ™7~˜.„š6ƒ¡9šI¥N‚£D£Q¦NŠªG„®F| MzT†£[‰›b…¥e…¥bšb˜aw¡\|œ_Ž]~d…˜^‹—U…¡V‹Ÿ\*N=&U>(L91?J1II2BP:AD4CF@CQAAQ€hA„zJ‹~?‰t;w2l>l.ƒ{0–u9™h>™o3£oB¥„I¯?¯y6¾z?­†1±‡A«€;¨z=¥~6³ƒ<¤“:©9¤‰?£†D¨Ž5¯†7«‡;¦†?¥–6£3¬‘/ªŸ­”7´©?¶™>·™Jºž=®ž@³¤K´ T²˜H»—>±Ÿ?¾œ@½Ž9µ™E»™J¸®FµžL»¬H¿ž@¼¬CƛAÒ¦RÄ£OàSÄ NÈ¢Z¼¦U·­HºœNºšN½¦S¢U¼›V°šM¿›Xµ«J·¢FÇ¡O»—H¼˜K»™IǞ@ȧ?Á¨MÛTMƞM˘;ɨ>Ë¡CÍ©BÒ©7ǧHÀªKÁ®H¹§L¸ H®£F´¡C«ªJ§Ÿ=¯›?¢©P˜±N¢­[œ°R©R±«_¬£^¢®[¥«c§ªS§±_¥¯T¨¼Q¢¯K•¾X“¾W™³M’±UŠºO—Ê[’¸Y“´W’»P–ºMŒÆa‰ÈcÁW‘ÄNÀP…ÌT}ÂV†¾V{ÏUËUƒÉPŠÝS„ÖX‚ÑVuË\ÒSÑbtÏa{Ô`|ÐW}ÞOuãIcáM_ÒXXÇLcÅAjÉKqÇTnÀBmÃ?nÀBeÀA]´C_ºNlÂ=jºDa³Aj±De¶AbÉ7nÃ7d¾@tºDp°PsÂBq¹KrÃD}º;€±Nv­Iz­M…¶N‡ºU…·R…©C‚œ>y¡Ly¢M~£G‡žJ‹­E‰±<—«6Ž >›@™6ƒŸ:“”B‚žH{©E³I’³Iˆ®C†­C„¨N¢\œUšdŠ¨[“¥X€©\ƒ£]~˜Z€¨_u–X{Z{—P‘”U’¦M•žX%I3-M4,O6'IH$GS-DL+HL5?H5CE8MI@KGDJQLBNBJNLSRMLJRA?T?9W43Z:oY=oV=rZ3m`8dW;l\7gS>`Q8c`=nk9sf¾”C»£Hµ U°žR¼›OǙJÆ¡DÁ“NǒTϜUʗZ¼§P½©KƲNÁ®J¸§X¶¢X½ ^¿ YĘO½ J¹ªD»£L´—C¾•G´ŠE¶N¶ H¹¢B¶­F¹¦D½¤IÀ¤PƟPÉ KÀ¡?Á¢CÎ¥=ͨ=Ó¥KÌ¥GƱD¾¬NÁ S»žO®šK©¤>¡ªG¨ C§°AŸ±L¥©R¥©T£°\­§[¦´Zª¶b¥±g¦´c¤¹^¨®Už¼Q¢¸W ·Y¤ºQ¤ÁO“»Q™¶VŽÀQ™ÁY™Á[›¾Vž¾R™¿RÉ\¾[ŽÂMŒÌIŠÆQ~ÍY}ÈZ‚ÅX|Í_ÚZ×U{ÛX}ÐS‚Î]uÌVo×WrÑfÌf{×a|ÕXuÜQbÚ[`ÔW[Ê[^ÂNaÇOiÆNqÁMqÈJb¼LcºGa¿@aºCf¾CiÃ8l¼7_¼=dÅ9nÇ;vÍDqÄHmÉSw¾QuÈOtÂK}ÁH}·B~¹K|²J|¹F³L{´R~³H~¡M€ E„™H¢F„¤E‚§NŽ¢D‘«D˜©C•¤A‡¡2…›4ž8‡ŸAŒ§?…¬LŒ§M†³F†®=€§B|E†T~\„›[ˆ—Z£Vˆ¢OªU‚¡P€¤N}Zy•Z‹œ]‹P‹˜Z¢S"<3&I<@8>IKE*C;)HD2A=.F>1::@G>8=IcDCcG=]U=aV7q^2kd4d^6gL?dTC_ODc]@`hAh[„m?‹x<‰r9kBŽa1’c.šx-¤r;£m5ªt9·u>º|8¿‰5¿‡A¹~8®‰=¯‹4§•;ŸŠ9«…3£“9«Š6Ÿˆ8 —/ª‰>´–:°0œŠ;¥›,ªŽ%«š&½¡.»¦0»¡;¸—:´–F¸—:µF´™?µ§B½™HÀF¾œ@¯—>¿§Cµ§S¼šHÁ˜M»¦U›TÀŸNęPĜOǙZÁ¥S¹¦V»¦NÁ§D¹ S±žK¾ª[Ä­S½©VǤRÁ¡SÁªP¼ J¿œO·“Oµ—R¸—Cµ˜O¼¤Oµ©G¾­@Ç¢N¼ªJÀ•EΣKȤ=Á¢Iʟ9Ò¬BÞCɱ<¿±CëPº¥R°¯C¸±8®¤=°£E¯§F±±Q®K«°L¬µVµ°e®¬džµV¥­Y¨ÀZ£¸_›½Yªµa¤Ág ºY£ÅJš¿W”ÄYŒºQŽÅV”¸[—½V•Ê]™¼SÍUˆÇ[ÌaÏWˆÉ]ŠÓT…Í^~ÓWÕ`‰Ä]†Ì]…Ý[…Ód…ÇTtÔasÎZrÉXrÕotÖdzÒ^rÞirÙafÑ]iÓO_ÏN\¿UaÈReÏFiÆFjÍKeÄBrÃF]³K^¿Q^·>`»;gÅ@cÂAgÂ>iÂIfÂCwÀDzµQ€µRw¿L|¼Mƒ½H·Ez´I|´Px®N‰²GµAx·J³@€ªK†ªE|§?ƒ§<€¦N„©N‰³CŒ§H‘¥=•£;‹,‘¤3Ž¨?†¥I…¥OŠ³Fˆ´@¨Ku¯Gƒ¨B™P~žU¥^‡¦U‹¬Y”«Y“¥X‹±Oz«Yuœa„b‡¥WFžX‚®V3/:9<9@D+<>.@8)E@.:C+=8-3<-=:77B=EOJCLNJHJ?IL@JNGLI9IO5;UE6RF>YK@eLAdO5^N7gU³j8¸pA®‚9¹z;¼=·…A°ˆ5¨Š3ŸŽ6Ÿ”:§‰?ž‘@¢“4¦’6¡—:§ >¯—=«”A¤‹4§–*¡’.Ÿ•'­˜0³¡4²˜?¶š:«–?® C³?·›L»¨K²K¶“B¶ŸI¬¦J®œE¾¢LºŸI¿¢Rº§ZºŸU¿ O¸ŸY´žT¿ SƟ[ÁšU¹œQ¿¨IÅ­O¼©JÄ°Y¾­\º¬VƦP»¯F½ªLƞIƕEĔ?´œG¬œH²˜Jµ¤O¶¨HÆ¥Kŧ?¼œBÛDÊ @Ѥ<Õ¨:È¡EÈ«?Ǧ9ñDɪ=Æ¥C¾°L¼±F³@¶¨9·®=»«Q±¬U¥®W ±R«¯d¯°e©«e›°V½`£ºb¡¶^½W¢¶_ª¸gšÃd‘ÅO–ÍJÆU‹ÃY½N’ÆX—ÄYŠÆRŠÈ\‘Í_‘Êa‰ÆfŠÎbŒÊWÒ[†ÒZ‚ÖX‚ÐW‰È[ŒÆe†Õb†Í^€Íd|Ðg|ÎZvÒ_rÙfvÎmvÒgqÕ`mÜioÜ_sÐRtÌWgÍ[hÆWpÆOmÎPfÓJmÄNo¼G_³R]¹Q`ºH\½K_ÄE`ÅBc¹F_·Jk»Lp¼E|½D|¶L{°H~²D©G…°?{¯F{¬N}¤K‚­:~³A}±?v«D}®A†®=‰¦=§@‰ C‘£M’ªI¨H—š5‹¦7¥-™«;¡@•¦:”ªB„£?„«Hy³Jz¬;{©:D 0C1351.D.=@24>+0:46G66DA9B>BHMBKD4RT:KJEFVF;I:FZG;ZJ0cB8jP2mP4mH8kQ8kV5b_;iaBaU8lQ/^W@_Z<\VGbd;`c/a\/dW5mV6iW;lV>v]9t]3ua<Œ_:Œc4Žn;Žn>‘fJ‡i;…{8‘q?‰k4’h1‘^&¢k,¡i0«q3®e>¸l9·w7¹†>±|@²‹2¬;§–0¢–2œŒ3°Š@©“9›•/¤—A¢‡?®A¤™8¥‹7ªŒ5¦Ž1ž'Ÿ+«–,©—3­™;œ˜4œ˜@¬–:©©<¶™M»¡V­—E¸¡V¯™U©¡G·žP³œ[¶¢RµU¶”\µ™S°ž\¿‘Z¶Tâ`º“WɕY¼ X»®JéUñUĦQ»¯LÆ©ZãXÅ¥Tº¦Q·—EƜJº™E¿™TµJ¯™N±˜I·¡BĨ<¼žEʙ@ɞ@Ȟ@՝?Ì¢FÕ¢DЪA̵:Ô°=̶7Í®F¼·;˲BÇ»EÀ°J¯¶?±¨G·¸Mµ´Q²¹P¥³[Ÿ»_žÀ]™¼b˜¿^š½[¢¹`˜ÅU˜·a ½b¢»Z˜È[›ÇYŠ½W“»L…ÂJ‹Ë[ÆUÌT”Éb”È]“Ã`…Ño„Ì_‡ÐhŠÐXÙ_…Ö\×\ŠÊ[…Ú_~ÓdÚauÕjuÒbrÐfpÚ[oäjnàj}Ò`nÛqfÚetÝhtÕ_kÉ\lÉ[mÏS`¿^eÉZbÕLiÅYk»P_ÁNZÅWeÄQ\ÊNg¿FZÉGcÉFdÃDc¹MzºNz¶@z¿I†¼D‹º<ƒ¬7‘·>ŽªC‚¬M{¹L„ªD€¶Au®9ƒ«4|±A„¤>ƒ¤3Žž6‚¢BŠ›A™œD¥;™¢;2—­-š¤-”£:“ª9”µ>®H“¬;‚¦G…¡>@>E;?N9MP8RR7EW7FTD?ZC;g@2e;4gG4bH0kF4bK)aT-jN3iV:lT=gU8]S6]_D]T@_X=b`;[W7\Q1lU+t`.oY2kU7uX0€X>…_:~j6g8„bFˆdD…hH‰n>‡p=p:Žq/˜g,¥i*£].¬h-°h2³s*ºs2½=´€>±‰7«“;©˜7¡’:®ˆ;ªA¯ˆ7¢;£D«ƒ<žŽA¢Ž?ª’F©’@¤–:˜.›*—”2œš,—•-’š2˜¡7›œ?©£@¥¢K¬—S±›R²X­¡Z®™T¸œU´›X´–X­Ž]¬ˆ_±ŽW±”Q·‘Q¾_Á—]¾žUŝ\˦ZȦXÄ«YÆ©UʨIÁ¦L¼œPÝT½–SŸPµGµœM´žM½šQ¶Y¹–R·£D¢?Ǚ:½›<½¢<Å©EÅ©PÉ¡MÉ£GÒ©KرDÙµ<Ö±6Ï»:ÆÅ<ÊÀ7ȶ7ʲE¿¸H·°C·ºH¹·M¿ÁP³¹X©º_Ã_–ÐjšÐdšÐ]˜Éa–ÆW’Ã\›¹h ¼c¢»n ÁhšÇd“ÀZŽ¾UŠÍUÓY‡Ë[ŠÍ_Î^…ÊbŽÆhŽÎq‚ÓmÔn‡Ò`ˆÊaŒÍjŽËc†Ö`|Ó`yÛmyÜuzÐl}ÖbqÚ`m×]kÞiqÛorÙgkÝllÖmlÚbhÎcrÈekÇ_bÄ\`ÇejÁ^jË^i¿`lÄVhÇReÈWnÄSlÉYpÀQeÁRhÇOeÆIpÀArÂJt¹;‚»9¸4‰µ:ƒ³1‹»9…¹;Šµ@Š®K‡³E‹¯@~µ9´0Œ¨/’ž:‰Ÿ5Ž’>ˆ•>Ž>“›=–¡3“¢0–£4•­2—­2—­/–ª0—°A“³F¥>Œ¬K¡It§Ox­N{©V‚¦Z|¬O€¯R‹³LŒ¬U„¨]~°b‰­\ƒ¯[‚¬Uz´W|¶Q|ªJ>.$4)*1:#.<032/(<3/9+4J7.E,/@8.C1?@24:9cC.gL.^P8eB1_K5lP4eQ4hb9]_+aa7eX;qWDrN@d_4dS?]R3]`1VR/fZ.l`$fT+p_,uZ'xW/xX9…e>}_:‚r5‚hD€cCƒu;m9…m7™s>™t=•p.Ÿq2®_+³i1¯n6®q6¼v:ºs7§}E°‹=²J­ˆ9‡9 „@¨‡<£8¤‘FŸ…G®ˆIœ„H£†:©5¬—8¢’0£˜6’œ(œ/™(’5¤–9 ¨?¦4›¦@ ŸDŸšV©¡U¶›S«›W«–Qµ¤M¸¢`²—Y´’Y¶–P¬Z¸T·œO³ SØ[¹—aǚVÅ©^¾£XÅ«]ºµ\À©R¹°MÄ¡NÅ¡OÀ˜Y²£P¹«WÀ¡V¹T½£_¿©RµŸN¶¢C¼š=Ä©8¶›=Â¥=À­Mɤ@˦?ɯHÖ­DÕ®?л:Ǻ?Ì»?ÿBαDòOÍ´LÆ°Q¼¨J´¶H°·P³·\²»[¡¿Y¦ÇbÄ`’ÉcžË]šÒ\“ÐTšÅc¢»f¡¶]”¼džÁj”¶ZŒ»TÂV‹¿\‰ÎP‘ÆbŠÅ\Ê_—ÉfœÂkˆÄr‚ÄkÓ_†Ìa…Êf—ÔcˆÐe‹ÞZ‡Óm‚Úo†Òj…ÒkÓ`v×arÔ`e×dnÞoqÞmhÕimÜhmÊhmÚ_iÖioÖc`ÉibÇZ]¿gbÎfc¿ahÃVeÉZ_½\mÊ`nÉ_e¾Lm¸Nk¸Up»FmÃBoÄE|³:w³F~¹9~±?²7¯>„»F²C„²7´Bz´4„¬7‡¨/ƒ­3„®)ƒ4 .…›7‡¤;‘ F”¦<•©8˜¦4¶<›°4”©,§=œ¶7Š­GŒ«DŒ AœEx°O|®Hr°P} \®Y«W‡²Y‰¯\·U©a€·X}ºT{µ_w´[„µH‚±I7+&52+4(-:-57*-0$&>.)B53?.399.D65F/9J92FK0DQ1LP5NKE>SHBXM:WE7[M0cD-hK2lH(bN+dX9]`7bb:f\2oR;rK>mL=qS/gR-e\8`R1`X*]b&h])o\(t[.uU6wZ.{c8z^4x_@ƒk:ˆs<ƒr;€j6Šl@‰gG‘m@‘h;s2Ÿm/ªr0¶{2°w@·u?°s3§u?©zK¦„B±|H®‚:žˆ4Ÿˆ4¢…6©Œ4ž@œ“MŸ’Iª†H¦†=§> ˜;¢”>¢•4”™+“™+Œ6–4§ <©¡8¢¤Fž¡BŸ«JŸ§G¢›Sµ“N³•J¬šKµ§^»©`³«]¯œ`± N³”Lº™Vµ Uº¥`À¡YÁŸ_·™W°¡Y¹©TÁ±P·°XÀ·S¸¯DÀ£G·£M¶O°¡W¿£]¿¯W¶ªQ¹¨[¹¤Y¹¯M²¦L¼œD¹¤@¶¬CÄ°MÅ®IÒ¢Cͤ<ƯEͯ?Õ´:ѳ=®=Á´EϹMÒ­JĵUïT¼­Q»«T±®S·¬Z¸³O³´S­³V£¼YŸÀN–ÈQ›ÔR¤ÐR›Î[ Ê[¡Á] ½g¶jŒº`‡½d‡¼\ŽÁZ‰½Z…ÅRŽÒWšÂ_›Ãi‘Æk˜Äe”Àh“Æj•ÎWŠÆR‰ÑR•Ö`›×[”×_ŒØb“Òp‰ßc‰ÝcxÕZuÜbzÖ`mÑiiÏnm×cuÑbpÑpw×gsÕ^oÝkoÓipÐjfÂ^eÉ]gÅanÍcnÇYdÀ\\ÀbYÈbgÅTh¹Vx¾T}·Pu¼PlÀAj·ChÁBuºBt¶Ezº@„»Cƒ²D…¨CŠ¯E}²:~¸3}²1‚¬=‚©6Š±,ƒµ4ƒ¨-„§5Œ™8šG€¤L‡Ÿ=ˆŸ>“¡B‘´5˜«4¦5˜¨<—±<•¹GŒ´B†«=Œ¨E€§Kt²El°EsªPt³I{´K„®M~±[y±Y²So¶[n¸\sÀWv¶TƒÀQ†¸J%,8%;*73)71$7-!6+*5=/*F38@27J4:H2:@78J7>VI7TG4UI5QFl^5gQ*kL9hC9uC7iE9bL/kR4gM/tU4pY+kY'mY,if2ya,nY/q[7ka@oh8}`9yiByk?‹kBŒaF•pI–pK{;ž|2¦x;©i3ªyD²w@§q<­~F¤|GµJ­ƒH­@´‰7›Š9£Œ6 ˆ8¢ƒ;¥—L>­“J®ˆ=¨†?¬†>§š5›’/˜>™”:• +ž’-¡Ž:››5©™BœªI•ŸD¡šE¥˜D³”B²LµœT­™Y½¢[¸¯Y±¦`ª–S·š[²ŸH²RºšQºšOŚO¿¦Jº¨L®£Q½±P·°Uµ­P°³M¹±Q·«M·´M¬±T°®Y°¤P³µTÀ³U³´`±±\¹²I¼¯N¹¨F°ªE·¢Qµ³JÇ®C̬C̦6и:ζ<͸FÒ®?ʱ=Æ©HÁ­NÔ¸DÒ´JÂ¥O¹¨Z¹¦V¼­\´¤`¹²_¶®W®±KÂM¨ÁKžÈQŸÍ]™ËQšÂa”Æ^›ÊZ™¾a”¹]¼WŠ³`ŒÁS„¾X‘ºU‘Èd’È\“Ì[’Ái™½g›Ãd¥Ía•¾k–ËX—ÈT˜É_•Ï^’Òc™Úk™Öj—ÝpÝh‡Û`‡Ú\nØckÓeqØ]m×^gÎ^wÖjtÄ`uËczÍlzÒerÍnoÇ^sÍ]iËboÑ^eÄZhÊScÊ]YÃZ^Â\aÆNgÅVvÎMqÅTq¶Aq´Nj±Mi¹Ln·DxÀ>z¶C|º@z·?u³=€±D|®9q«5~¨?zµ7ˆ²2‹§5€«3¥7‰¡,@‡©;…¨D€ž@‰ž@„§:’²6—«8“´9‰¨2–°:ƒ®F‹¥@‚«Mƒ§F‚±Bs¹GnªPk®Us¯W~¸Lt±U}°[©Nƒ´Jw³Mvµ^r¸b}¸Zx¶K´J,21/627-=)53#1;-4C57K90I1:M4:F8;B?=;J3:D4;G10S=2P:3ND4U=-\E2dU7eY>aUFkWǸ9ƽD˺?Ô¬DÑ©GÌ­GǬGóAͲHȲKĪPÇ®Oé^Ç©c¼¦_ª·[§·N¨ÂJ¤ÀMž»K¥ÅX¡¿_ŸÃVžÌZ™Ì`šÍ[™ÅWš»L—ÁO‘ÂJ‰µUŽ¯[Œº\”¿c“Êb‹Éc”Ã`•Ãa£ÊnŸÊk¤½e›¾bšÅYžÏ[¡Õ^¡ågœãn—âc˜ÚgÝoˆÜg„ßXxÐYyØdrÒ_hÉZnÑZsÎasÆ_nÄftÅhpÆdrÒimÔgpÑgrÌfuÐ_mÑYfÐRb×TdÌYoÆQiÎOuÓQwÎJwÇLt»BlÀKb¹Gcº@e¼FpºCo¾Iw¸GsµHz¤‡ª<€«?„¦L‚¦Eƒ·LŠ´Oƒ®Eq­Jo´Pw³Lw³U{±Vo£MpªQu­Kp³Zm³]{®Zy·Yv±O|µG',$-377$;+$?<-8=*0:9>=64;:6C/6?93DA<8BA;FA2F.1C.7C22K?6BB8EE.UB:_TlV5rV6`H._O6_E®‡@¨~G¥‹D ‘S¨’O²…=­‚C¡ˆ>¨‰=Ÿ“?Ÿ™=š’5›™2š“<¤Ž9 Ž;Ÿ˜9¡ KŸ¨G•ŸW¤›Pœ¡Q­’B¹‹<µ“P¾¢K¶ªQ»ŸTÀŸY±ªL¯¢S­±J°žB± F±šK¸™W² I¼žE¼ \¿±]·°T·«W¸¹W·µE¿¹J·¿]°µR¡´]«®W«¯\­·T·¯bº±Q±¦V´¯Y²¨\¬­O±ªR¶®L°¥=²µB¸¹>Ë¿IÉÄNÅ°EÖ®OĵSβO¿¸O¾µLãN·¦Xµ²^¶²^Á°c½§Y·©Z²¼I§ÁK¥¶J¡ÅT§¾^¤Ã\ž»\ Ä^žÇd£ÃV‘ºa•ÅU“Ê]“»[ƒµP…¼V†º\ŽÅ[•Â[–Â`˜Ê^¡Ël¤Àj›Íi£Æo¥Äe¤ÉZ§ÐežÖn—åg—ëg˜Þm“àg“Òj…×d‰Þ]Šà[„Ø^wÐaxÉbkÉZ|ÇXsÁ_oÍgƒÅhnÇboÊbsÕjmÛqjÚexÙ]wÉZlÓYsÖXoÊTgËTnÕYlÈF{ÕGtÁItÈCk¾>n³Gm°Kk°@u¯BkÂBk¼Ei´Nm¨Hl¡5y2u®369;-C>/<@./?=3B@78DB7J:/P17N=3C76GFfS4rU3lP8nG9bH8^M4c@AfD@eF3_X:e[4nf4l_;f\@o`4|c9~\9xdDpjIrqJkg:nrDzqG‚jO‹hH‰aGˆc?ˆp9’p@–o:™{?žzAœk9¯i;±jE·nE²k7«i;´pK¸yR²tI®y>¯{AªƒF¶ˆ@±ŒE§“M«—I¨K¢Š<§ƒ<‰F–@–’;™3¤: ’7 ‘5•Ž=‹–<’™CŸ Kž^¨Q¢ J®–A¯F¯™I½¦N¼¦Pº©Sµ¥T¶¤L°§M³«Mµ­F±ªJºŸF»›Sº£N´žO¶©[¿£b·¢U¹²R¸´V±®K´¸T·µ\¨®]¦®a°ªV²«R©¦W¯±V»°Q·³X¾¶\¶ªW»¯O²§E°žH®£B·ªO¸²L½»LνK͹EίJƱIĹUǵJ¸¬O·¥X³£W¯±T°®Q´£Sµ¤d©¹Y¬¼L¤¶F¡ºMšµW£¼VŸ¾Q »W§¾^¢Â]—¾]˜½a•½b—ÃZ¼RŠ»S’»VˆÁ]Š¿]’À] Âe ¿l¦ÀiÅq›År˜Êgž¼a¡¼ažËlœØmœÜg âmœÚp™Ùr–Öv‰Ún’ÛhŠáY„ÎZ‚ËXtÑbwÇa{ÊetÉ`zÎg‚Éo~ÔnnÑfkÌcwÔi{Þin×ikÑlxË^xØ_o×QhÜPrÑToÖLvÏNuÈCjÅ@pÊHm½Lp²Eq¬=l®Fl¶Dk­=l±Ex£?r 5vª:w¢0{¬2ƒ©8„«1‚3œ;©?|¥EzŸLs¥J{©H}ª?r´Ex¿JŒ¼M~¸Mx¨B…³:‰¹=°=‚®:€ª>|µJqªRn­Sv¨Xq¯Mq¬J`¢Jc¢Tj®Rh¦Vf¤Yq ak­[q¯SoªNs¯Hi¬S"*#"3'.-,;7287?4HB=eN?mM2fE2sYosOvvA‚kHˆrFˆp;…_B˜_8’d<œi=›pC qD“s?©lF¬nF«v?³h6©r9±j@¯uL¼tP´uQ¼pE°t>¿„H´‡L«ŽVªN«‹Dª‚6°Œ; ‰7•‘@”…4”•/›–6“@›‹<œŠ@ŠC¢F—¢M —Z¬S££H¦—N¶—E¯›Rµ§CÀ§E²¢V¶¢E³¥E±±U¾³Kº¥L®´G¾ŸF³ W·«O°žJ¿¡W¹£d´¨e³¯X½¶Qª¬X¸¨Qµ·X²ªZ²¶V±­Q®µN®¸M©±Q³¯N¶¹N¬¶L³´T¸¨M­¤C¹°@µ§G¶£Q³²M¸°UÊ¿JË°YδZǬW¾»_ŸM»³M½«T²¤P´­O¨­J«³[³¡f´µ\§°VÀI˜ºGžÁT—ÆN—½[Ä[•ÊU Ë]¢ÃZ˜Èb’Ç`¢Ì\ÂQ¿`‹µP™¶b–Â^¾b›¹d—¹`½h¢¾qËl•ÂfÆZ¥Ég¦Ìj¨Õc×n§Úi¡áf”ßm’Òn‡ãsŠÞ_ãZ‡ÑQƒÏL‚Ô^ŽÈf†Ðg„Ï_Ï`‹ÂmyÉjvÔhyÓo~×`qÜnpØjxÛcxÍW}Ô`pÑ]sÙWvÎRsËLyÈSs¼Hb¹DcÁJdº@i±>w°6y·8k²8uªIr®Am D~¡5¬0~²-|­2…±=}°2{ª3~©B~­Hw™@~ŸNy§Mv¡P|ªK{®Qx¿R¶R…®Ds®?}¸?Á8>=DBW89Q3?H>DO;AHBXV2ba0i\7i_o`:m^5q`2qe;tZEwZD€ZO~dMrrNrnOwtNvpH}kF‡nG“iE’f>™dDe=˜i?™sE—r@˜kI«u=¬v@¨wG©v?¹kF·l?¹lC¼kG¹rEºlOµzR¾~J¿|J¯‚Q³‚K¦‚;®‹<ª†6¨…7Ÿ†7’†>ŽŽ4”‹4‡E“‚J˜L›ŽN¡–Pœ¢KžŸV¥™L°PºU³—M±ŸF³¤D¹šD¹ M¿¡G»¤KƯDÁ±LÁµQ´­K¸®P¼­J²T»§Lµ°L¼¨]¯Y¹°c¾©d³°Y±³U°±W¶­U¬²W£²L©®R§¯O¬¶X¬¬L§²P¬®K´»P¶ºI²ªF©¬Q¯«O³§N¹¤SÀ®UÀ²Y¼­Wƶ]¿²eÀ²`º°SúSÅ·Z·±R±®Q°´O­©M²­Z¹°^®¬[°N›¾K“¾I“ÁPžÊX˜ÈR–ÍS”ÃU—¼X–ÂY‘ÅVœÆR“ÂV“À]š¿V™¹U‘¾a–·^™¶\—Â]•Àb¢ÆgšÉf—½XžÊ` È\¥ÃZ¤Ê]§Ï[¥ài¢Ö`œÖc”àm‘àf™à`™Ö[”ØM’ÕOŽËX–Èc‹Çg†Íi†ÃmˆÊaÉa{ÐkƒÑg}ÜfuÛhvÜauàgØ]vÖ^tÐXiÊOlÉRf½PqÀJd¼Of²Cj©Bj±En¸As¼=tÀ?w´9w§@q¤@§F{¦<„²B°8w¨4zª6w£@r­Dx£Iy¡CzœBxšKj˜Mm¢Lx¬O}¹SwÀNz¼L‚¹SyºJ€µNy·@sµMq­Nq¬Qp¸HnµBy°Mn©Io§Gm°I_²W]²YY­^^®c]²g[«b^£^[®^W«\f²cd¬Z+47(%<**9,.7.(8#7;)28+)749>C<FC>6P=HKI;TL6KQ?MW=CM;KO8_W1XL7lT=j\?iQ>jO6rJ6mD;eB?rN7eQ9q[=s_Erd=oh-nV<{fycI€\Fxf>zgE{lFudGjE{iCƒiI‡qHŒr<u;ŸnH”sCžuC˜rH–rH›kJ£~>®m6ŸmB¥b7¸lH½o>¶jMÂtB½qI¾tE´xK¹vSµ‚N©ŒN¤ŽG©‚D­{8¦€CŽC‘8‘–1‹8ŸI›…@¡ŠU›‘Q£œQ©•U— \¨£]§œL§™S­œU¼•K¼›E±¥N¸›R´£L²¤N¹¡NɧE»«B¿µO¶²D¿£M®«Y´¤N² ^¸ `¾°U¹®]¯µa¶¤\¯²T»§T©´R£´\­¹]¬±Q®®_¯½[¬Á[­ÀI®»Jº¿Y·ºX¼µT³«W²ºL­µK´°Wµ¶Q¸®Q¾³S¿³W½½[½¬fîVµ½`´´Sµ®Xº±W«´]µ¼T¥»R³°X¯¶b¬°X£ÀG¡³TºL“ÅV•ËK˜Æ[›ÉS‘ÉV£¾[žÂ^—ÇSž¼c‘È_ÁXµX˜¾]“±c”¾Z¢Î_›Æm˜Ëd¢¾iœÇbžÒfŸÈU¥Ì_ ÌU Üc§á`¦×j¤ácœÙ^—Ýc˜ÝXŒÕM˜ÕZØWŽÕ[ÓYÓ]{ÒeÐg‹Ï_Îr~ÓpuÉfpÐczÙj€Ù\tÒTÒ^qÝ\sÖXeÔWuËSl¾Ls¹Op¾Ad¶5p³;g¦Au¹9s´@€·Bx³<|³>}©>©4†«6}´>§3v®,z0vª=r¶@r­@w¯Ar£Hu™Fp Eo¨Ds¸Lv¸X¶Rq¶Rr´Kv¸P|ºBs¾Gr¶Br³Mh¾Db¸Gu¹Ql¯Hi¬Em¥Ob²Ka¨a^¨SY´XU¨\ZµhT°cV¡aeª]Vªfa¯ak¡T%/7,9)'2$&<(-3('0(28.-05/??-A@'AO13G6?H?@M69E98D:4SBkcEzhDza6~b)sU-{ZAvfCv\AƒX?~WA^G„kI}hB†j9…h?†o5„x<xG“oK“qB›mB£v;™nB¥vI¤w>ŸoB¢c8³[<´`F¬pD´tJ°lNºkJ¶n@¯{@²yC²|V©…V£ŒK±†D­x@°ˆ@¢‹?¡‘C•<˜‰F ‡DŸ@ L§ˆP¦’Q¦•N  Z¥œ^©¡Y¥¢U®œN¶˜X½™V·ŸN³›R»¥Hº¦JÀ¦DÀªN¹µR¼°D¿žO³›Q¬ž\°ª\µ¤Q¹¢V¾¥b¸¯_¾«V²¥X®­Pµ¬Vµµ\£»T­º`¶³\¹ÁR­ÅT°»T®¼Q®¹S±¶W¼±_º²X¶¶X´·X¶µY¼¼N··O¹ºW³»`·º\½¯`»²f±¬f³°^³¸[¸±b¹½[³¹Yª°T¤·R¦³S¨±[¬´W¥¸O»M”·J•µSŸ¾O–¿W˜Äa“ÁUŸÇWšÇS˜½\’¾b—Éb”À^•¿[¼h™¶h¡ÅaŸËiŸÃ_—¾cšÎa—Ði ÉY¡ÓYªÓ[¨Í[ªãeªçb­ÜW¤Ü]¡Ú_ŸÖj—ÌU‹ÐO†ÖVßNƒàRƒ×\yÓezÊh~Õe„Ðm|Îq~ÈmqÎnoÍjsÇZyÒ[x×WsÖPqÔVhÖKjÏUnÈRx¹Cu¹Dl¾Fs¹8w²„¬B‡¸8}³/v¯5u¦/…Ÿ/…¢4±<19K08G?=C8=M>8G??FC4XL=JR4N]6FX1SKaEzfE~kGŠl?ŒjC‹tCŽF‰hB‘pO›cJkP‘`NžhH¦t;«jB§fD›k9¬iD¨dH­iL£hJ®xA±vE²uK¡yE¯xI¨NŸE£‘F¯ŠI¥€I¤}F§ƒ>™™KŽ•KžI¨‰D¡‡G¥ƒM¥†F¯”T¨—Q¢–Z¦œXªž]¹¥L·œG³•Oº¡Z±šK¹¤R½¤JÁ¥NĞT·«O´¯P¹§V¿P®’L¯™U³P³¤U´¦W¹¡O«®T¶§U²¢Y·¥T³ªb¥±Rž³P³³Y®°R¼ÂY²¿V¶¾Zµ¸Uº°`«¹c¯¹`±°]±¬V¼¶[¸À^´Ã`¯ÅT»Â\»ÆQ·ÇR¹Å\À·cµºf´¹e±±e¸®i­º^°¸R³²W®»Uª·[Ÿ¬W±R¡±M¢½RŽºJž´Už¿^œ¾Q–¹SÈ\–ÂM¢ÌQ¢ÀWÎ^ŸÎ\œÎb Å] ¼hªµlžÈp¨Ì^¤Êl–¾j¢Çh¡ÓaªÝ_ŸÖ^«Ïi­Ïa£ã\¨âl§Þ\£ç\¥Ód§ÐmœÒ\†ÕN‡×J‰ÚU|ÓX„ØX€Öa†ÈgÇ]†Íe|Å_†ÆkqËbeÓggÉfzÓWwÉQsÜVmÍHeÙDeÐPeÆLq½Nq·JpÂ?k¶:w«;zª=u£7x´Cz«Ko¥@}¡B}®6‰©/ˆ·6|¬:„©2{¨0…œ+Š©3z¦B{¬FuªAo¦@|¤Fx­Ho¤Ez¶Er´Su¾V{¸Uv¶Ul»Yq¶OgµJnÅRp¿Kb¾TeÊKb¸U`¸I`¸He·N`«WW·UZ°Zd¾]W°aYµad¸WVª_`ªafŸha c^£a+,(%(,/'150*/21+*/,45)5:)::.::6>F/6C<6H:6P@;HD9FB4RI6TE¨i9¡e?œkC¥cF¡jF¢jB±yA±y<«x? wE£…M¤ˆG«†B§ŒM­‹N§~I¦P ‹F£ŽB—–Iœ–N¦ŠBŸH§ˆB«O¶‰T»N³V¿šQºŸY´©V²¤Qª¨U±Q«¡R³¢O¹¤T¿˜SœS»¡O¼žN¶§V³›W¹™L¸œJ¾›R¾¢\°¬X³²]¥ªS§£U­ a´¤`¬¬a®­X¨µN¥¸U«¼T±¹X¾Ç_µËZ¼À_¶²g«°_­´W©ªYª¶\´µU¹¾]²Ãb±¾[±Á[¹ÉS´ÆX»½d¸Äa°Ëa·Âj¼¾d¸­`¶ª]¬µ\³®Xª²[£¹_›³R›¼VºT¶W“¿Xœ²Y¶_¥¶\¤¶T›ÆUœËRžÉP£È_ ÏX¤ÇZË^Ïc§ÄgªÅj©Áj¬Êd«ÅcšÉi¥ÕgªØd­Úk¨Öc«×g¤ào°ân«ág¬áf£äZàd£Ô_ äVŒâZ€ä\‚ÜNŠÞZØU‚×\ÊW{ÆVvÇb|Ìc}Äc|ÌdjÍcnÄYlÃ`wÊOqÑOmÕEoËJrÅMkÇFfºBh¾DpÂ4m¸4t¸>z©7|¥<°@u«:t¦E~©A†­5ˆ²8ˆ¸3‰¯.ƒ«+‹¯2£3y5¨@°8t®9z°6o¨BjµNk°Mm·Mt¼RzÇTxÀ^xÁ]pÀ^d¿Rd½OmÄLrÇTuÅRmÆOj¸Pa¸O[¹Q^±M]¸Wh°Yl»__»[c¿_^´Zb·YW¶bZ®gW§]X©RR§W()((+50+31444*,-.(,3+)?/.>)1D24D47;.+E@+@@:BH*I>:PB8EU,IT2NL+P\€XE‡eF‹mE|s=ŠqAyCˆkF†v;ˆmMeN„aI‘aX‹`F—mC^I¨a8¡k9›p<h>¢cG§kCqG¬p<³wC±v>¤†;°‡;²‚?©ŒC°„I­L ƒQ¤O˜ŠP‘‰B’’P•ŽH§‘Vž‚C©ƒ?ªŽQ±•Wµ”S´O¾“U±]¶¤Z¸™P²—Xµ’X¹–^ª¢Tµ˜X¶’S¼•UÙPºŸL¬—V¶ O®¢N¶¤LÀžT¯®Y¬¦^³¡]©šV¨X¬¥b«­W¯©Q£µQª³G¨ÃV¬ÄO¬ÀYÂÆa¸Ád»V¹µY©ªT±±X®®e¯¹Uª¶V­ÈU¸ÃXªËVµÇ^¸ÇQ·Ã\½ÌXÁÅc«»j©¸n¦¿h¬¶i¯»^ ¹U¦¬X£ÀU¦¸Tž¸Z˜³V—®SŸ¸Y˜½W“°b´]™¼W™ÇT¤ÃRËZ¤ËY™Óf£ÑeªÊj£Ç`šÓk¡Ìn³Ës±Ëb¯Äf¥¾` ÎuŸÊf¬Øf¤Ía¢Ýf®Ö`¢Öd¨Ù^¶æg­×WšçT•ØO¡Ï_ßY…äQƒÖYƒàN„ßV…ÓN‚ÔR„ÈWÔ_€Èa‚Î_yËi{Ì^uÊZjÁbrºarËOl¿FlÊDnÅKlÄ?p¾Eg¹Kkµ´=yªJ}«4„²:€¬-¼8Œµ*~§&} ,†©<‡¥?†­7u­Bo¤=v¥Am±DnµSr»Wv´XtµOhÃ^xÃir¾fmÇTm¿\qÎSjÎNgËMdÏVaÄXXÀKT½VcÁLU³Tb¸Zf¬Qb¶V_µ`W½\S°Y]ºXX°ZW©bS±`R§WKŸS.";24(8-'-.5-71%30*4.&A0#>'/=13?,&C0+<8/:=3;?*@=6?I9LP/HQ.F[2QZ0Jb/J\4IN8XQ+YW&JQ*[[%`[0dR/`T2ZK7cN/iV1xU*sV%sZ+vR,~O#W1€^:ƒc8‚cB„iF‹^C‰kF‚kE‚pN‚iM‡gFŽb<•_?hE†]Mˆ`O‘^IŽmJ‘c?že:—c6—m;œkD©gF±rB©l?¯v4©t:®z7«„5©}:®€9´}:¨~@¬†D¤‹MœŽL›I’C”“K“˜K ŒX­ŠM¨ŒC±•@­‘H¹‰AµI´‰T·’X¾˜X¸ŸL®•^±_°£V°¨]¯©]¯™T²“WĜQ¼–J³•N¹žT²œM³¨H±¦Rµ©P¶¬Z¹ªN°šS«¥W­¨cª¬R²©P©¶M£½N«¶M«»Y²Å\¾ÀU¼¿U¹¹Z«¹U®°L¯±T·¼_­À^¬ÄP¦Î\¬ÉX®ÊY´ÌY¸ÒS´ÐS¿ÐQ¹Ä]ª¶V§²`ª¹a¡¼g²Z¡«^¨®Z¬¼T¢³T–¬Y’­Y‘ªaŒ¬a—½`œ°V–°W‘¿M“ÇRžÃUœÍb¤Ò^šÎa­Ín±Ói¨Ðs¢Ìm¯Ìk¯Îo¯Èf¤»`ŸÀg Åp ÃnžÉ\¢Ðg¨Õb¤Éb¬Ë]ªÚ\²ß]¡ØVœØS˜×M”ÌS‡ÔO‰×S€×H‡äM×T{ÚI{ÛFÒNyË\ÕYyÊX~Ð]pÕVpÏ`mÇXsÂ`xÇYm¾KnÅDmÅMr·Pr·Bhº@l°=sº=zµ6x¿6¹4w¸4~§5t²>{¼B±<ƒ¬2‚²3À7~µ;‚­.£/z¨8Ÿ/…¦7‚§;vªAw¯Gq®En²Pt¶Vm­Yh´[fºfjÀbm¼YmÂVoÂToÍafË`lÄTgÊY`ËWb½XR½Z]Å\[¼Vb»SY¶PP³TR´U\³aU®^P¨]X³TQ²RH¶`MªXL¦_4(0!2= )3(&/'9/01 ?%(C5.831@;/44#72AC$EDDJ/>D09O*IJ6CL.FL,BX+BT3@\;NV1WQ3TW.HS-RQ&[WaY'dS*jV&kS+hU'z\*tW-}c"|b~P!…]2…W1~_5`9~Y<ˆf>…nK~oA‡nC‡hB~a@Œ^A~`CŽfGŠ_Q†\QnJ“iC–n@ k5žr9žm; jE©tE©l? f<£t=°w3¯x:­Š=²{?¨9¨:¥†;¡ƒJ˜—M”ˆH‰@œ•K‘’X–“U Y I£‡U¨‰Qµ‘D­ˆI¸‹S½‹T«“T·”O¾žWµ”VºŠf·—d²ªb·¤T¹™^Ä `ř]·šV»™W®”O¸“W·›Y°¢c´œ\²¢_¨§]«¡c«¨W°ª_¥ [««^ª¹P¥ºT´²[¸²P·Ã_¼ºNÂÁRÀµY·¿O¸¾H¾¾Z°º\¹¿_³¿P¯Áa®Ì\®Ã_¯ÄR®ËR¬×T®ÄT«ËX¨ÀY™¸]¤´e›ºj¡·`£µi¦¿e¦µYš¸\ §]œ´TŒ±dŸºeŸ²c˜°V›·`—·^—¹N¤Ë\§Ée£Ëa§Ô^¦Øc·Ùj¨Éb¤Ën®Ðm¯Éu¬Äcª³k¦½b¡»d¢Ãm§Ña Ê[§Ò[¡ÎX°×YµÙ_¤ÙT¢ÛW™Ô\ŸÍR‰Ï`…àY’ÕQ‡ØMÜR}âW„Ü[}âJ„ÞRƒØT„ÙXwÙ`ÒUpÖWuØTtËN{ÂO~»Vt»HoÇGwËLvÄ@q³Di·;p¸8jº4t¯<€±7u´@†´=w´8€µ2ÁCƒ³:ˆ·:}À7}¿4‚¿1€²6}¸-y±2ƒ°<|¢9„¥:~¶I²EpºAo´Js¼\m¹Pu´VrÃ]sÃatÌ`rÇ[sÇYnÒbbÑi`Ì\[Ï\WËe\ÂVL¾^OÃOZ¾\L¿YT¹NU¹UL·T\µ^U§^N¹RR¬LT¯RN¿ZQ®[Qª\;%)<,5 %7<$8?.!<-&E;A9(C@8>9B#=A5@>C)E?)AI+IW2BU7=V=CJ3FK0GT0L^)J`/La&H`%NUUQWV_VjK nLpYjV%qS y_%~V){]"t`-yU9†S9†Z<`;‚]C‰iGŠnB‡qCƒlAˆhB^@‡`F~jFjA‹eK‹gFŠeK–]E—b9žiF¢rFžz;¡s@£tB£mA«z4¨x8§v8¦…3ª‰@©€@¬ˆ@©…B£“9œ–@™ŠH’ŽHš‘T—Yž•\¤šT¥“P¯ŒU¸‹S¸‹N¼ŠO¶ŒN¹Q¯’U¯`³‹Z¶†e½`µ–`ºša¾–fǙaȝiÀ£c¶¥a·žZ¾•SÀ˜[º™e¯¢d°™k­šb°–d­žd´Ÿc«¨Z©¨_¨«[®­M§¸O¬¯[¸µX¹¾OºÀS¸ºT·ÁPµ¹S¾½N³ÅQ¸¿_¯ÁZ±Å^«Ñd®Í`¶Ç_¸É\±ÏP°ÑP®ÊL§ËS§ÉXšÇY›¼Z™·[žÄešÀe–¼ZŸ·[•²X˜­U›¯b˜¬]¤º] ¸_—²`–·\Ÿ¸bœºXœ¼d¢Ía¥ÐhªÍg©Êf¬Îf¨Éd§Æc¬Ém£ÇkœÂuž¹qŸÄg¤¿i›ÉkŸÐc¨Ïg§ÍYªØS¬ÒN£ÍM¦ËU£ÂaŸÈ[Õ_‹Ù\’ÛYŠàZŽÝT‡ØSŽå`‹â[…Ü\}ÜWzàU{ßV€ÒW{ÏW€ÔWuÐN}ÊU|ÀMz¿Nz¼AºJsÇGqÄBwµ¯J{±E{»E€½K{ºOuºWoÁXr¶RlÃTkÇ^sÏdoÓjmÑghÌf`Òf\Ñg_Æ^RÅaSÉ\TÀRP»WH¶SE°RE»SMÁSUºU\°SX°UZ°[K²UG¼NQ¼VW¶ZRµ`5 $9'=2:%0: !/,12.A)465'2;15&CB'4F;AH@%ID.JP%BE/AV19O@>Z;BQ8JN.FK)AV2D[+N]6A`.GZ.MJbZiW+kV*qN#iY'de%g_%vf+nU(rd0uY+y`1~ZEˆ\D~YA„g?‹^:~aE|f@†iL}mI^<~fF€aAŒ[KŒgKŒ`?•dJŠf<˜_>“jIŸpDŸk? l>§l<¦€D£|6®q? w3ª{?¤{G²„E²|I¡zPšŽH‰H–N›Tš™P¢e¥‘\¡YžŒY²‘O³“Z¹V¶‡MµJÀ”F¸M»’]²–b¾‘Y¹¡^°™f³•fºœ_ŗc¤aĚ^Á›i² d¸¢]¶“_¶ŸQ· S±¢b°™`¯_²¨d§®W¦¢a ®]§ªS©´[ ·[¸ÁN°°V¸ÂS¶Á`º½QÀ´XÁÀN¶¶O³¶Yµ¸S¯ÈYªÏV°ËWºËk³ÏY¬ÑX³ÎW¤ÌQ¬ÓGœÂK¡Ã\žÀZ–µc˜¼Z‘³b—Ã]ŸÅW˜Á^™º]Ÿ»L“§Xš±R˜¸X–²^˜¼\Ž³]‘µa‘´a—½`Ìk›Æ\«ÀY¡Èk§Çi¡Ë`±¿d¦Çj¨ºmŸ¾f©¾m¤ºk¢Åf§¸Z©¼`¥¾T§¿V¨ÁY¨ÌP§ÁR¦ÄS›Í\šÉZžÖT‘×U’ÕTÙU…ÛZ’ÍYÖYŠçNƒÖ\ƒÕZ|ÕXvÜ[t×MÍ^~ÍN~ÈLzÁMv½PpºOxÂG{ÂLpÃ@p½E{¹@vª3uªBf¹Gj»Jo±=†¹F‚¹;†´7Œµ2ŒÀ:¿5~Á8„´3wÁ7².¹.v³2‡²J†´L³Mz¨J€©?x­Fz²P…´Z{ºP}¼Xu´OhºYj»lb»aeÊkfÍgsÒ[iÍ_`ÒkSÂjWÌcM¸`Q¹RF½]N²]O±`H¸bXº`Uµ]_³SY°PQ©TM©KR²ZE¶aV®cN°_;'2<"*135%1|hEwjK}i@ˆ`?‡]>‘_?ZE”]<™b>’n@ŽmLšrA¡t?«jE¥pA§z@¤;¡{<¤{Cšƒ8>­G°yM¯tR£|O¤„KˆQ™ŒP¡–U›‘W “b§‰ež_†\«‹X²“O­R¾‘SÁ‹DºŠM¸šOÁ™\¹‘a³•[´¡c¼œg²–\µ—X½ž`¹¦e»žd·’j¼—b´—`¼šW¿˜N±—M¸–S¶ `©œU¦¤X¤ ^¥¬eŸ·Y£µX®¼_¨¹X®¶aµ¼\¿¿_¸Áaµ¼W»²[¹²^²½W«¹S¥¼UªÈ`´Ç[³Ëa´Éf±Ð[±ÈN«ÏK¤ÅI¡ÄO˜ÊMšÀQ¡½Z˜³`’¶a–Ád‘ÀY–»U”¾Y•½VŸ¸T“³TŽ©O©W‹¸R’¹P‘¬W—´W—³cºp˜Äk¢¿^ªº[­Ç\¢ÎdªÂ\«ºb¨¹f¨·m¬Át©Ãpªºd®Á]ª¶\¤³\¯´Oª¸R£½Už¼M§¼O¢ÅP›ÊK£ÑNšÈTŒÏV„ÚX…ÚUˆÑKŒÑO„ÛV~ÚQ‚ÏK…ÍK†×UvÏNÉX{Ò[vÁ\{ÀQuÅHs¼Il¿NoÌBlÆLrÀGs²8}°7x®4r«?z¨9s±Du¬=ƒ¬@‡¯@…¾@¾Dˆ·6xÀ1uÁt¹9t½.{»4€±;†¯Hˆ·N†¶U²P„¤I‹¦TªT…µY{²Uv¶Q{°Xw¹ec¶hd²ijºmp»]mÊ]\ÈbWÅjUËeNÉaR·bJ¶SBµWE®dL³_Lª_U¬]b±WY²QY­UN«SR¬MH«UD²_HµYN­V8(/F)12'.:#103-11&229:8?.851'$?-&9B*@9"@="GG4G=?H>+OA-B@'DE9PM4PV/GM.TM3II5NU3IS/PH3RG(_O(fP(qR'eO5hW'uT/ph1jb)pb(kY'ya-{e2yZ@€d;{lE†j:„g8†n=`I‡fHˆu8h<sCŠl=‰lM‡fC†eRŽkNŽo?˜iE’tE•lFšrAj@¡nD vF¦sF§<–yF£{K …D­}R®~O¢x[¥ƒOž‰Xœ‹W X‘O¤œ`£œY«ŽXª–Z°„]§”O­\¯ŒS±ˆM·…<ÖHǗU×Y¸–V´ž_±¤b«¤f²žj­¥^«¡`²˜h±•a± `±˜a°žYµ’M»—I²œI«‘\²”^®ŸW­¢P§ªbš§gœ±W¢µY¢º^°»SµÀa·Àb¼º]±Å]·¿h¦¯[¯­`«¼d«»`¢ºS¯¿_³Ãg²Åe¸Éd©Åa³¾N¦¿TªÁG™ÂIš¼Pœ¸N•ÅMŸ¶Zš¾SšÇW˜ÃY™ÅU‘¾`šºQŽ³R—´KµM‘¯XŠ¼N¶S¬Nˆ¬P»b¹]•ºi—Àa£Ä^žÈZ¥Í^¤Ëa°¼`¨Áe¬¿r£¼v«´n«¸`­·f¤±^®¶Y¤¶P¬­P¥²MŸ·R ¶O–»H¨ÈOœÔU¥ÄOžÔ\ŽÍXŠÙYÛS…ÙY„ÛZÛZÙJ‰ÎCyÄLrÐP‚ÌZsÑ_…É`†ÁOuÊWx½SvÉD}Á:t¿GzÃGy¸7´7€³:o¨Az¥Cn²Gv¨;°G‚ª=ƒ®Kµ8{¶CxÀ>pÀBpÀ9{º>}¹:t¾9·E¾G¶N´[„±S{¥Y~¯_{±W„¬Zw½Qy¸V{·Yf±hg³pd¯ajº_g½\cÃfWÇdY¼_LÉ\VÇ\F¾^GÂVC¼`D­dN±_R¡^\¦Zb±P`°X^¸]P§JM¯JU²ZN¬aS±ZS«bB%6>+7@+>:)5..92-+6-,576/103,%77%B5%<< G7'LD,R?7WF.O>,N@0JD(SH)UH.QF2LQ5RG+VM0RN2RM5YJ1\M+dR-jL0kM(hP1kS/sa,nf0t_&|^&s`5x_=ncGlj@xhE…n;ƒf?ƒh@‰l@‚jC„q9g:€k?}mL‰pN‡pHˆbQ†kMŽoQ‘vN™lKšiF jI¢mD¢lH§lDžsJžzN—…F–ƒM¥ŠV¢~Y£X™}UŸ„]–„cža§”S¦—Vž P£œW°•P®‹W¥“\¨U¸‚Q¶…Q³†S»DƔFōOƐT¿œZß]¶›h¯p®£gªŸc§£j¦ i«”f¬`¬šS®œT¼O¶ŠN®N±’V±™Q°—O¥¥Q©©P ¢]œ¨[©°bªºb©¸\¬¼V¶½^µ¶c±º]¨¾ežºcœ»_Ÿ«bž¨\ª¶Yª»^ªÄb¶¿W´ÈZ¹¿S­ÂT¯¸J¦±Pœ«G—µM›¼FÀH™ÃM›ÈVœÅPšÀR”¾Uœ¶a›¼Z¹Q‰³T‹¹O‡·T¼Q‰¾RŽ°QŒ¯VºUŠ½b–³lž¿m¢Â`¥¾c¦Äa°¾b«Á_ž¸n¡ºn¯¼h«­l²¹o³µaµµW¯¶U¯²OŸ¯Wœ·Y½L–»O™½DÈP¦ÇVœÉ_ ÉY˜Ç\‡ÑT‰ØQ}ØQˆÖY…ÍW‡ÒI|ÍL{ÇMxÅOrÑV|Í^zÁYÃ]tÌ[rÇOxÄM|¾=º9ƒÂ=³:‚±2ƒ«.|¨;}ª;x²>¶8x¯=tª:€®Du¸Ez³D¶EvÆ:lÍ;rÆ=xÆ?qÉD€ÁR‚»Q‚¬O„­]y©f{¨]|±]ªa~»X{ºRy¹Vl¬edµdi±lp¶^n¼_o¸af¼f]¿bV¸WZ¾PLÄWIÅXMÀYQ²]I­fF­XQ¦Y_­Oa³TW²SV¶SZ¬UN¦TW¦ON£YIªcH®_585A%2968D52?:26<0=;+A2895+>-8;.(A0)I@.I76R@,R@2R@+TB6ZI)YD#L>1OD&ZK7XV:\X:XW9WR7NUx_C‚gP„mF…b@„eA…gGŠpGs@~w9‚iD{i|¤Dˆ¤8€¥@z±>|°L‰»>}ÀJn¿F{¼Bn¹HzÃIyË={¸PŠ¼_©W­_ržU{£Q|by¤W³Yy¼Sk§ai¯Zm¢dp©wj²sn±ak¶_g½`_±fT³aYµWG¾LGµULÃXJµ\H³eS¬gL£^b¥XXµVVµZ^¸XV­VW [O«SH©\L¦TK¡W=399/.=0&G9)P>)HB,DB*=67816D9‹dIˆeM‰`T‘fXmY•qU—qW¡iZ§iKªtO¡|IŸN †P …T¡‚XžT¡tU˜tR}XžƒX”€^’c›‘^Ÿ S¬ S°Z®œS­—Wž‘TŸ•S¬‰P«J³˜Hª”F°—O±“\¾˜Y¬¡R« Z¨\®œg§’b®˜Z¥ ^§¦Pº U»–S°˜P°ŠY±‘b±“]ª˜V¬¤U¯£S¨œ`©™f™f¢ j dŸ ^š®c£²_§¯až¨hœ­a˜ªd£¬`§®T£±Y§¶\ ¬W¬·X©¹Xž¿^£¼Rœ·Z—±X•·\‘¶O³H›ªK›¼R–¾Z–¼^—ÇWŒÉS‘¾_œ¼a–Èf˜ËZ“ÈR‘ÇJˆÂL”ÈY’¾T“«U©^Ž®a­^™³]ž¶^¥²`¨³eªÁa£Çc¥Ãm¯Åo¨¸p­³q¨³r¯­h­¬f¶µY³¬T´´Q§¨Mª­T¤­S¥¾AœÁF¸Cž¸B”ÂN‘ÀE—ÃI‰ÊEƒÐLyÅYzÆY»M…¾E‡ÀD…ÇLxÉO|ÊP‡Å^‹Ë^¿_…¿S‚ºMzÁG{¾Q~ÂKˆÀI„´:‡§E…©>‡®C{§Cx±F}±HŒªD‰ ={¢>xªFƒª>‹¶G†²Hu¯Cw¬@t¸G{ÄG}ÂE{¼M„²^´do¥ZhžOn Tg£Sk¥Zu±Uy¬Xw¥[l§Wr¬iv¡rk¥lg­nh°n[°^V¾fXºgS»USµQNºZJ½UU°eO°eX¦cX¦VX©L\¬OS¦U[¬]Q©ZX¨UO®ZG´PW§YW¤P780A019@/F=&=K!EE)V11P38G<:NG4JL1P=4TL1WE/ZB8[A2]C3^F4`N8YJ@^S>YV:aS3oR3pWBvV:uG5sFEpPCnV?sXIoYJpP@bU9jd?sdJwdLr`Q‰`Pˆ]W‡bK†nV‡lVyeG{qV|rGw|L…tM{nC~eI€rKŒeQ‘_L™_KžsT“x_šyT–p`šuK›{T§€Pœ…R­€Tž„c¤za§‚e£o_€WŸU”zS˜†T™Y˜Q«—`°[ ™P«R¦˜Q›ŠP ‡W©‡Sµ—M¹¡N¼–R»¢I²–Nµ—_¹§Q«`¬¡Z¶šf´Ÿc²–Zµ V¬¬K´¢R¶”I©—Y­‘V¶›O±˜S©™S­ _¡™f¦’a“¡n›e˜—f”˜`”­^™°c”«b§¨fŸ¨aµb¡¥c ¥Rœ­S¨¶_£µO›©Y¦³Pª¯W¥¹T›°P—©Y¦^²[“¬YŽ£N‘§L¸Tˆ¶[”¿Y•½\†ÃOŠÃT“ÄV‘ÃgŽÇa’ÍR¿W…ÈKÂV‹¹Y’°c˜²c‘¸Vœ¯T–®\™µ[¨µ_¨¶^œ¿m¦Äa«Èl§Âi³²k²­q¯¬c¬«a©¼e»¿U±¸]µ¶K«¶T¦¬J²¼C§¹Fž»J¡ºJ˜¶F“¿T“ÊIŠ½AÌAƒÂI‚ÊS‚ÈOŠÁLŽµC}ºS~ÇGˆÂDŠÂG…¸PŽÄQƒ¼YÀJƒ·D|»JºE„¹O…«H‚ªD„´F³:‚°Cx¯I}¨KƒµHˆ£HŽª>«F…¥L«M“¬?„¹9„³Eu»;m²&DI,FG)=F+@N'II,GE3E?/J96U9?T:=H;:H>8R?/QA6SI;SGB\K;XS3_N:o[;m[4iT:gW8qV4o[;jPCtP~³=v±I†®J‡´KŒ²@ˆ¥=¡;‡§G‚¬@‹­>¬@‚¹:}´=v½?x±A~±Ay©Hs²X{§^x¦fm¡cl¤`i«ak£]e¢\p¦]{¨eu¡hz«gu£jo¡ad¦ef­f\§id«q`´j[¸iYº`c±[a³a]©`WªUXª_P©^V¯YU¤\SšUS RO§UV°ZW¦[V Q^¡JT¥R:591B&EE/DD)EI+E="EB%OA4L;6N;+X:1T@FY<7KE0RE3VP]^@cb@pa4vZ;zVo]Ay]Bf\MpU=mOCkVIbTBq]Jk`SqaQtdT}XQ{dTtb]‚me|f_|iV{hVslU{uQ~uPtQ|qU|iL„xQ‡rE”mQ–dL—aYkWŽdxVž€^›…c—zVš{X¦„gž‚b¢‚h¦xc¢nd•ƒZ’…X“}M“ˆT”ŒM˜F£šL©™[¢Œ\™–]¨™O¤¡Y«P© U²žP´›_­¢O¨œN©–W²šR¨œV§™]¶©`±Y§žc«žV±P­©Zº¤M«–L¯O»•\²Ÿ`¥›Yª”V¢^šŸ_˜œ_™ª\Œ£n‹¢a‹—eŠœ[™¥PžR’–Q–¨R¨d’²Rœ²V®W¢¬K”±X¥³Y¥¢Hœ±G¨§R¥²S‘®P“­LKŸV‘¨P‚¥`¶Z…ºS…²Oˆ¼O€·K‹¼S€ÇQƒ¿TƒÑ`‰Õ_ÐNÉL€¾Z~µX‰ºV’½b‘¿VÀg–²i¢ºi ´_™ºf›¾h¦Äq¢¼k›²`œ¼i ¬k¦½_¨²`¿R¡º\¥³P­¼R­ºN¯¹Lª¯H›µV¤­IŸ¶J–°Gˆ¼U‹ÀE¼F¼MŽÉT”ÉL†ÊUˆÄU„½O‰¼FŽ³K„»C±C‰»R„µZ‰¯LŠ¾@…ºO‹±H}´K~¤F‚©L}©>€¥Is«Kz«J‚²Qƒ²?}©@¨G†¦E†C…¦K€§B…¯;‚¯B{¼D{ºB€ºBw´H|°Fp±Tm«Zo°[|©cv¤WqªXp£dl›esœgyªez¬fr¦`s°dk¯np£ii¥cXªmdžkZ©dW±fY¿`[±gb³]a°V^¨Ua±aT«XLŸdU¡XX¥fS£^S™YZ­OOªUV¨N\ W^©WO§`>;,7D*5BAE#>;+@=%KB-FD.OI4MF/IJ0TC>V=:U;5Z<3XN.YQ)NI1LD2XJ2TE1MH/T[)Y]0Xa7\X@meGmg>k_CuT6~[GuZKmZMiXAaMB`Q=ZR=daBg]LkbNieLpdMunZ|iZvkYyjYug`|tdrySpuLplSmnJslGhQ‚vY|vO‡vO”gO‘^]Ž`a”r^ŒzUŽxf–yeœy_“yW‹€\”ˆi˜‘gž‰k¡b qX„[“ŠX’ŽRœ„I“‘N›“LœV¥•P ŒQŸ’SªœZ§žQ¬V¡Y®šc¯£]ªšWª¢Q³£Z·–V´›Q²¢Sµ›]ª£c¨¢b²¬]¯ [° V°š^²œ]»”W·Z®—Zª—`¦•X¥ž[Ÿ¨T™¡Zœ­]­cƒ¬h…œ]“¤_—§W’›^–™S™¡^’¯]Œ¤]”¨\Ÿ«S›°O—«Tž¤S¥¬K£¥B©D¢¯F“¢?Š¢H‡ª@¤EŽ¬L‡¯V~´J~´L‹©HŽ¬T‡­J‰¶MŒ¼TÅR}ÐO…ÑS‹ÅIÂNƒÇ]„»a‹¿cŒ¶Z¿[”¼b™ºm¬°o¨±f¥µg­·t©»v ¹h›®_Ÿ¨b¥±g™²X—¹Z•¶S™¹Vœ¯]Ÿ¬\ž®N¦³M£µL˜¨Sš³R›·K’µJ†­I”¶@•¶B•¼JÀQ—ÅKŒÇQ€ÆSƒ»L€½HŒ³D‰¶K„·N­IŒ®S“¹U•¶E‰­E€«F±K‹°M‹¦IœG„Mu My¬D‚¶J„§C{¡;,:DH:"LE"B>0P?.X<3W@BTC4\=>UG/ZT1[P,XS%NV'SM0JH2TW-NQ.Rf6\d5YX?faCj_Ioa7u\=fY@xcKu\?jUAdKBfM;jV25691*‡·=‰­C{¡OuœQ}šHt£Hv¦M„ªFŽ£@’§DŒªGžG‹¦<ƒ£<†¶:„º<|µ?€¸@}µ>~¾’¡; «9˜¥:’¨>¨H…·A‰¯?«UŽªS•¯H‰®R…µH¿?ˆËC|Ç>~Á=ˆ½P˜ÀT˜»Z’·a‚ÀV‰»c•¾d“Æi“³r§²m¶d¡·q¬¯hž§q§«o³c¢µc’ºX§]•¦T“¥a—´f• `— bŽ§U˜²`Š»P‘®K†»?‹²2†¥AŽ¨<‰¬G”°JŠ«@ ²E”·EŸ°A–µD«F•«;¨;Ž£Eœ§=¢¢B« =¢ªE—¢=¥B•´D–¬8‹¯K…¡D|¤Bs¦M†¤>§H‡ªI’ªM‹«@Ž­C‘œAž@†¤G‰¹Aƒ¶:„¾8ÂE„Â7¶Bt²Bn»El¸OyªZu¤\t«Qs¥Zz¥gq£ns«]n²[t¨\{¢j{¢`{«f~ªgo¦qx¨cq£kh¦ff±dU§nY«lW°rQ¨lL¥lPf^šaW¢[\“]O¡^J^NŸP\X^SXœHa¡MaªUe™QW™WA:;86:?<$A5:6!>H/:Q2;I)A@"O@([=8YHAPR6NO7PO8[O‹³4‰¬7¬:Š¶?’¯G’¨9œ§;¡«7™­@“¬A—¡; Ÿ8¦8˜¢6‘¤4¢¨9¨Ÿ9¥£:•ž7˜¥<’³;Œ®B‘¡Gˆ¤Nx«C©@†œE’¥;«>ˆ«C…¦H©J‘¨IŒ¥B„¨@‰·J¾D‡ÃAÁ9|¼=t¶=k¸Dn¯Mw®Xw§Ul²Zn°Zq²^{£o|¬st«er·`}±_uªXz­b‚±l¨kƒ§bu­it©ca§ee¥o[ s^¢rSžqM›iX¥cY™[TœcNaU•Y\“VQœVR¡QP¡UV£[U¡OR£H`¦MY›V_ŸY5;.54,:?":8EI$EG.>N1EM%DD&PK*GO;MN>\N:Z[2XU8]T0aX1eK3a\9dR?dV>\b2Wh?]f:ekDgY?pi>naCqg?nj9ugEyiLyiKxdHljFrfO{aTo^VrqTwnStwZyqV~p^za\vj`|tTomWrc`roitp_ycg|fdyglssdtogp|q}ossmy€f‡€uŠrdŽ‚g„€d‹za’Œb€ŒYƒ^„g‰ˆfƒŽ_ƒ€f‘ƒdŽ‰c™‹Y•\ \™—X¡V–ŽTœA§~N›„\£“^˜Vœ‘V•™V•aœX ”U§’^¥•\°˜U¶•`´›W§žU¢¨Y¬¬X¬ªU²¨[³©b°´`¢¡\œ®`­±a¡¤^¦§ZœžU–™Vœ˜fŠ¡n•“pˆq—•h”m’jk–“_™–^’¦f“©^¬U‘§WŒ®F‹°M‹§F™¢FŠ¥Kˆ©L‰¨G§A¦G;‡¡8–©7Ž£=‚µ@‰²9‹¨L‡¯DŽµL‹´E{µR{µO|ÁD€ÂJ|¾J|³SºYƒ¶`ˆ®cƒ½UÁg¸]œ³o•·j¡Ák§ºn ©h§­l¦¡kª£c©¡[ §d•ªa“ W‘¡d˜œg›ža™ŸWŒ–Yš©[“°^‰³Lˆ¯D‘¦=µ;Œ±?§:•°8“©>˜±Gž;“­4ž¨8ž¤<—ŸEŸš1™®>¢ª=¦˜6œ8©ž5œœ<›@–­H—®:–Ÿ=—¨O‚ž@„¥K…¯Gƒ£P†¤@–¤?‚¥Iˆ²I®NŽ¢M°L­E²H|½G€³Cu¹FvµGq²Nh¹Pr«Tm²V}¬\s¯Tw­Y‚«dv¬et¯oz©qp«`„®[´hx­h«l¯py­kw³me d`£ti›p[žp\—zZŸmY£kYªbO¦l[¢nN–aV¢aU˜bT‘TN£]J¥ZI˜IT¥Q_£T`«K[¬OW£PG3)94(;9*@B'7H#:C#9@GK)GX&BT1GS6MY8TX4\^1WY,ZR1eU9^J@_TDgV<`XB[Z=X^8^j5gl:f]Ce]Eg^BdbGna;neBniIpjRunL}sDumKupE|gMzoTr_‚sZzi\zl_xpTxybtu`rhZvfYpagqfkkqkpmiore{trr}srxqrtizvmzzq€€uŠ|oˆoˆƒsŒ|i†‹k}Œ\€Œb‹^ˆ’W„‰Z†“ZŠŽZ”•YŒŒQ‹‡P˜“W •N¡ŒU«€N¤ƒK›‹R“…Q›‹T—‹ZœˆYžŠ] ’Z›‘Z–[¡˜`©›d®b¤c©¤h¬Ÿ_ª \Ÿ¨]¤¨Q°ª_¯®[¯§_ «\¢§[Ÿ¥Sž¥_ až—g™œd–›jŠ•kŠ“i‹hŒj‹ˆlŒd”–b¢›b¡•`¤—Vœ¥Y«X‘¨MŠ§KŽ¥F¡C–›H—žAŽ¦Gˆ­@…¨DˆE9•¢/•Ÿ3‹£<Œ«>„«8|³?†¹A±Ly·G~ºM{ÄR~¿Lw´Ky±V‚¯W~µ^µ[ƒ±a€®hŽºeÀoœ¸j¨¸j¦·j«¬g¥©q«¢n¨§g¤£i  [›¢Wž˜W›¡b a•§eŽž]ˆžbŽ–c‘¤Y• Z–¤H¥CŠ¯Bˆ«@–­A“²9”¬7›±=–¤7¢ 9™£4˜Ÿ9¥¤;¡=¨Ÿ2¤¨8°¨2«—5£š8žš7›¨@ ¨D§Bš§IŽ¡Q¡I‹¢D„¬H§I­O…¬N‹©IŒ³@‰­G„³Eƒ¬G~±=„ªD|¯>{³By¼Ev¶AwÀFu¹Nv°Wm®PoªVx¶R…·\‚¹V„°bz©frªcp­my«m{«d}¦[{¨_vªfsªlm§cj¨gd›xn—wk}f’v[”w]‘lW™aRžcX¡`YkOŸnO¡eU—aU’cV”UKœQM›JS¢O[¦Na§Zb­]^¢T;'&52$J9/D?0;I"HQ DG5RM6KT)RS2RT3VW;XS:\S.\N7RU2RT7VX-dZ7]T5fP7`YAXa:av.bm6b^CnSBmW9m_?lZAna7vuJod?ufG{jKilWstKzr\~iSŠlYyn^uwaƒsZ{uWmm^quhoeeqdTxdiqjuwotniunuxw}rrmr~mzykj{nx{‚rt‰u…„p‚ƒyŽo“|f‚}pvŒ_€Ž\€ƒi„‡e}ƒZ‹i‘‚_Žˆ`š‹]ž]¥ƒX¡[¤Ž\—M–‹D›‚M™ˆO›€T“YŸ†P”•W“‘[”ˆ]¢‰Q£–Y¡—`´£[µ˜`«b¦™^¯™Xª¥]¦Wªœ`°¯^ª W™¨]›£dŸQ¡¢_œ£j—•b›Œgˆ“cŠgƒ–a‘k”jŠ”\˜lŒa›™g¡eš¢g“¢Y“¥W…¨R†ŸM¦Q©H£K‹—>¤?ŽžF“©>‹§G…4Œ 6Ž¤@Š¬6„¡>…±@²Ju¹B|½Kw¹M…µD´IwµN†±G†®Sy¬VŠ´d€©TŠ²`„·fŽ¿^³bŸ´k£ºm¤¾oš±lœ©f©ªeŸ¤i¨©j¥”bš›S –UŸ›]ª`’¥X¡S‹œX“œZ‹šR‘œP‹žL‘§>ŠŸIªFŒ«A•­<‹³9“ª:¦- £2—¥;œ6“˜:—¦8œ¢.›¢8¡ž4¨—+«ž,§’:©—@ ¥O•K››?‘£L§EªN¦E§J˜›RŸDŽ¨?Š¬AŽ¨G†¥=„Ÿ:€¦>€¬>­H€£D©A{®Nx¹Rw»Tt´Ls¨Nu«Rv¹Y{´X€°dƒ´]u«aƒ¤mzµe­`t³dx«Zwdxžbz§hj§oq¯gj¡lj mg uhŽuWŠra•cT•d]œ^aŸkZ–t\kK‘cT“bU‘\V•XPœ^X§U_œL[šN^¢XhœSl ZJ/3B)/A**K6)BK2DP-KN-LT9JK1XH/QL8SJ9[D4TF/U>5SG0MP(T\*WO1^N.T\6WY9em6ep2i]?g[<^]7fZ=o`5n_=rj4lo„ D‹¡E‰›M‚¢Mw§Pw©R‚µaƒ´^²O~­O‡¥Vªcy°j}®d„²b¤_‰§i°lt­av©eq¢bx¡azŸku¦nm¨pt¨`h¤ek ra™kc“md—bV‹dP‹_[‘ccn^l^ŠcT‘^VŸ[X›_P¦_S eY›a`œQYWX\e–Oi˜R?*0=$7K18M60JA/QE6RU;NSA^V2^Z8WQ1JP:ML,WK-PG,^H5\N4\\#ZK&QK%SR*d\>b\:fl.m]:cb5oc9p`;q^>lbCwj;qvAoh?urBysMvu_wp]vkd~cZ„db„cnrklk`{niqhiifcgl[lmdkdhqcvhiqkZvzekolt€po‹dq}nu€|wz|uw„wx…ot{p…†|…‚q|Št~j}r{|oƒl‚wd}ƒgƒaŒ~f›Ž\¤~g§Z¡…\ †^•Œ[”ŠG—ŽR•‰?›‘Q¢T•‘P•‘Pœ–X“L•ŽQ •I¥‘L¬V´›X¤œT¦˜Y£œ[®V«™S§¨Yª¤[¥ aŸi“Ÿf•—]˜™gŠmŒŽh–‰h‰Œ^‘`Š“g‡ˆb‰‹b•VŽŒj˜‘bœ—j“aŽ”n•‹h•›i£[”ŸOŠ£U‘œGF•¬;™¢I¥G¢?€¬I£D‡¥Dˆ§J†¦F‚žO{¤K~«Mw­Q}°N‰µ?„¶KŠ­?¯J€ºK‡³R…®Zˆ±c…³P}¯X­SŒµ[•¼i¹dž¶e£­hš°aœªnž¯a¨iŸ©c˜\—šS¢—OŸ—P™¤T‘—Y”`‹RŽ”V—N˜P‡¡=ƒ¦:ƒ¯={«8|¤4Œ¤,ˆ©1˜4’¤7••,¢8•“0™š+“”*šž3 “1§•5¨ -£—:£‹9¤‰>¤–;™•M™•BŒŽN‰™FŽ¡>”žJœH† F—A‘ªG‰¨Nˆ£@~šG‚¨@ˆ N‘œLˆ¦I’™M†«X~¯b|®b}¶\‚´^¨Xy«^ˆ²^¥ht²b­f‚ªg±d‚§o} utœpx¥n~ mo¬mo§ek®cj¬je£_m¤_jŸmfŠkW—_Y…d`b`l[•jb‡haŽcQ”k[›k[˜bTœbd˜Zfš]d›T^]k˜\c˜JkŽN90gc7nc:heBhe”7‹Œ,‹•)‹˜+š. ‹)—•0Ÿ“4¥ž5¬’4¨•3¡Š0 >ˆ=IŽ‘F‹B––@–™Bˆ¤=‡¢DŠœKžK“O„•G‹’NƒžH‰¡J¨K“¦N’ [‰ª\ƒ¬f…¨g†¬`~¦i„£i~¤f…ªg®fzªb…³j±h€¶kw©o{uv›pz›szŸx{tp«lh£dm¢cežf][^›]`Žca–cZŽk_‘fg‡fa„leŒnc‰oT‹q\ˆkV’hcˆbg‹]c–am—Xu”NmKdSjOH68=49;?;>G7KBBU?DSTEaTBN]DVR+JQ*UH!VS.RQ"SP.VN1PR VZ&Y[1WN)`W:_[9`e>k\*_i=n`7le9cnCpmAuk“CƒKŠ—E”—C˜D€Ÿ<Œ¢H‰˜R‰›Q•›\šYkŽ¡m‹ j§a~œn}¡d…£b‚¨l{¥kƒ¦g{°s~³b}¯ls«o~šlq˜hw¢lr¢ju _j¡ie™[mœ__œ]^›aX]Zˆ``‘icdd‰^df\‡nY•pQŠsZi\‰\Z˜an™cl›^f›\p•[q‹XjSbQD44?<7<:2GI5OA3TD@]M?XRKRRCKW2QX(US)^V.YX&O\MV#MX)\a$S\/RX.__2[b:ja7gc/bb5i^5hlCchBf`Ey`Gxc@sa>mKhFy`H}_X€_S‡_Sd]ˆ]aiiuhm{ccy]\w]RnbYqV_gU\j``w^_lXgmZryelvhp‚fk‹sp~iu}otƒ~qy}}‡|uxzŒww‡~to€n}mjzkiˆrfˆuo}d‰u^‘„U–„Z“{e˜}a›}[˜†K™ŠW ˜U¡•H›ˆJ ”Qž™RŸN L–•E—¡A§Ÿ@¥–D¤–<šE¯¥C¯¦J®§U¬¦P¤ªO  Vœ˜ež¡hš¤^¢šbš™g—–h“…j‚o}s‘ˆh“Œ[ƒ†^€„i‡Žg}mŽgˆbŒ‰]Œˆf–b“ŽZ‡Œbƒd˜`›Q¤KœNš£P§C§Cˆ¦>Š¡;‹§G€«K}§Hx¦Ut£Lw¤Pr¬S|¥]¬Zƒ¡Y‰©W¯TyµI}³C‡§I‚¦[z£b€­_†®VŠªU¢P’£Tˆœ^‰¢]–iœ¤gž§iœ¤[š_–›`—¡Y¤žZ¢T¡™[–š`‡¡Z‚¦[~šW~œT‹¢O’£O“ªG•¤E«M‘¬<­<{¤:}¨<ƒœ9†’8~“@†6}’3„ˆ!”‡+›Š*˜Ž%”š%˜š1 ›3§,«2ª9™”?–ŽB‘‹>’”5š9”•8•?‹A†˜A“EˆŽTS’ŽA…ŽF€‘@‚Q’–[Œ^ˆ™c XŠŸ^©cˆ¢lŸq‡šeƒšd†¥l‹®pŠªo‚¢jƒ¤m€¬kz°b}¤`x›bpœ[t«\y¡fz _o›[g’^r–dm”bj™``ŽaeŠaeƒhX‹[Zƒ_Z‹hc`g‹e^’ne_g^c–Ueš\^•[hœNk•Od–]a—Wi†\>1FG;BFA>EBDRQFNGJ^NA\YCPLCHK3K]4SU5X](RW&M[ RT/[U4`c,P^6Te2X]8]cFan@ja:dd6q_=f]=mZCf\Fx^BoiA]@„fF‹gI[SŠYTŽWU‰Za„da‡]i†imr]mt_dq`[kZVhXcsYZkYWjOckYgzZnsTu}ahyhv‹uu‘wg~wh‚q‡x{Žq’x|‹†sŠ||†‰p‰ƒwr}prwnjƒys{mzdqb‡^ŽYŒ„_Š…]›‰VŸ‰S–‡N—›O¥‹IŸ’Q£™W¦ŸQ¤V¤A¡Gœ—C–“F¥G˜–D —O¡¦M§£Qµ§F²¤W¢œM¡¢U¤›X¦¨kž™l£¤hžœoŒa—ˆo›‚p—‰dŠnŠ‡i…l‡Œc„†iŒˆ]‚Œb‰ˆd‰f…Žawaˆe†a„Z ^Š¤RŠ¦QŒ¨Jš˜R—«OŽ¦A“­<§9¦B¦D}¤Q|³]x°Qw JzžW~­\ƒ§Y}›Uy§\}¹O‚ªTv°J„­R€¯U|¤UŒ´ZŽ¬V§Y£[†¤V‹˜\“¤V”¤b”£f‘—c”’Yœ–h˜e ’jšœiŸ[œ›_‘ªSžX¦]š[…¨MŽL†²O…´L‘²B©>†¥G†ªA‡¬=ˆ¤F–2„–+Ž9(€•$ˆ'…* ’!›*›š$˜œ'›'¤š6©‘0¨”3¤<•‰7ŸŽ>•ˆD™“@•ŒC›?‹ŠO‚‘O‰—JŽ‹K‹“G‹Nˆ—D‡”A’•K™]ƒWŠ›k’dƒ¢h’’g‹—qŽ™r‡–q…Ÿh‹žrƒ¢p† l§w…©j}¥nv­fu¡hz«Y£Y|°b}ž]}£byŸTq•Yl”^l–brŠ\dfZŒcb„mj€\jƒh^Ž[iŒf`‰bdn`˜_j–\b“ac”_b“SgšWpœMdšae›QjVM9?K:HM:IHJAGRMSOMNWDYUKPRCPPBSU@KZ=Le1Ub,M]1M[,P^6Xd:Zabg‰“+‚š0Šš+„.(‰0¢Ž(¢*¥˜+¢›&ª+¨‰%¦“+ —/Ÿ‹8™’<Ÿ‡2ž‰6”HŠQM‹‹K‰“V”‘MŽ‹O–“E‘•I–œM•C‹O‰X‘Yˆ’cˆŒ_Š•eˆ™n“n•y‰w‹‰y…”yˆœu‡ w‚§k}¥nq«er¥bp©Y{«`y«ey§av¤ewœ]p“bt™Xt‘OvVm˜_a]_ˆh_ŒafŽZi…ac‚kegk–iq‘\i•]m˜cp‘Wg‘Zo’^s”Qr’QfœTmMl’W9>B=CJKYc6Yf0Y]7]gB^bGZd:a]9k_:j_:q]2y]>ri0€fC…gD€gF‡dGŠiJ’_[‰\NŽ\`Œd^yaezkZ{Zc{aXhZhxa`nXXhOSsTVoO]uSep]hrihu]l„qi}mn‹{jŒ{i‚}iyƒnw‚vozx‚sz‰t†xƒ}v|y}~€mt~zˆ‚k‚rŠql‚zZŠ€Uˆ`Š†Y”SŒM›ŽX šHž”GœŽL¡“O›™S˜¡X¥—J¥šNŸ’MœžR”—M—•T•V®›U°œO®”J°ŸY±”K­ŽV®•T¨£Z¥›h© d›•b”e”j›…b~d‹c„]œŒk›€`•€k•„^W~’a€ˆds‡dvŽb~gy“p `‹P„™MŽ—M†œE—¢BŠ­P…°S…®E†£J~­G|¯Lp£I¦Sy¥X}©W}¦_rž\w¦Vƒ°[x¦TlºPy§Zx«L‚¢Lz®JxµR‡®Z°]‹±[y«[}©[…£V X…›X—˜Q—œW˜œ\š“c˜–jš›c•e U—¢RŸ[Ž¤N„¨\~£U‰®]‚¦IªU„¯G†²BŒ¦A‡¨=ƒªHŒ :‹9—2Œ–)Œ—.…Š(—”+š”2š*•‡/£•*±“-­•&¤”&«•3©“$ª‡7¤”4 1¢Ž0‹A‘ŽK‹‹GQˆ†XŒŠR†•K€‹@ˆE”G™B‘ƒI‹†SŽŽT\‹–cmˆ’kŒ‡gŽ’kˆm‡‰p…‹n|Žr€Ÿq¦mˆ˜mv¥x}™slŸew c|®jx fz£pz˜jUw”Tx”Qs™Vw‘`v‹baŒQ]†T]Œ]Yƒ_[ƒia^cŽihŒalff‰Ymš[l–`l“Yn‹awŒMt“Qg—Ud“agV@=T;AK=CF;?K;LCKPFUPD`RDTWCXUA[]CTZ;OT6IX?HZ0JM.NO-T_1XY5`Y/\Z=c`Gb^BZg=aoGogHsj>q`;€`8b‰›B†•?““3’›+‰7ŽŠ4’0ž‰*¡5˜„8Ÿ‰*®Œ*¡Ž0žŒ.ª‚2ªƒ%«Œ$¦‹41™‹9•C’Hƒ‡L‡†V“…Y’‹J“‰=ƒA’†B‰R•~J‘K“{H”†I‰ŽP‰a‡†mŠŒhŒnŒvƒ”v‚kz†s€†m‰Šs‚žq§z~žyz™qs˜s{¡tt¦mwŸo‚£m‚—f‡–\~™_r’Rt‹WxŽbr‹]i“QiŽP\V\„U[„eZyce|[i…_ab`bnŠbj[d‹_k“\n’Xn‡Wp‡dgˆ`gˆf5@K>GR=FS9HO>LCCLJVOEYG@RZ=MW=NOAPXAMNA=Z9HS6AJ:AQ4V]+[S0U\9`bGI5IO;[S:\N@bZLb\NbVLhQSv]Py^TvbKtbNycS{XY‰^PŒ[G…fH…rG„oIŠtDˆkJ€sN{oYtb_}bhvgm{Zc{a^}WizZeyi^na`sfhpltxsqsty}€v€wpy{xzxzl€{gzr{xvu{n~kxh~‡k‹Žn‡Œw|Žsˆo‡ˆnŒp…upƒhq{e€„`‡wc‡y]ŽV‡†^T“MŠˆP‘‹OŒ†QŠ‘b‰•ZŽV˜—X™_“™^§•P§™R¬’M¬–EªˆJ¥’L¬“W¦•X›˜b“f˜™`›“ci—“h˜še–•Y–“\’…Qž…V˜†bŸ‰h˜’k““l†f‚‹oˆh††fˆf‡„\}“\”^}•^|–`yPx’Nq•Mx¡\€ªWƒªV¦Z†¨]~¯Sx§Q‚¤V~›YWvž[z¦Ut§S}«Uv³[i²\m¨[q¥Ws©[n®Wh²SfºYi±Qh¥_h©\k­at¯[€«Vz¥ax¨ažS†›R‚PŒ˜S„•a–T‰™T…¡LŽ«NŒ­TªK•®H‰¤O‰ Ox©Vs­Tt­Qm¹Ju¶<‚¸9…­4†¯1£/›/””8‰?—ƒ<™1™ƒ2šŽ/œŒ9£’9¦‹7ª…7¨{(¦{ yž‡&¢‰1ž„3—‡>™@Œ†O˜‰M’O–MŒ“R„ˆSŒŠHˆŠG‡~D–~S•|Q”Š^ž†Z—€W™ˆT—bŠh’h–ŠmŒ†rŠu‹‚t…†l{’t}‘{x•}z yn›qœst”|wz{xz™iy”g‡›_ya|Xp•Zi‹aq†Vh‡Zg‚^[ƒWY€PdxVayaY|[_€Z[x`cil„dqZf|^bde‚ZiŒ`n`xlpj@EE@PDANHKRJLWRNTQJN[FMLQ>\V?VDCJL5DS7JR=CILNTACR;UOA[X6eSEZ^Ig[FXJWdUIm]GpdJqaO|_LƒYK†cO€]LƒgUfVeKŠhO~sZylS~sRmg`u_]zchZ[y^Z}U`yWl{ek€i^rij|gpwqpƒtppmƒ|q~€p||qymvoxxp€vp€…qz‚w|py}syj„x|€rz‡iqƒlˆŒr‰†k‹zmzlvˆeozgwƒk‰rg|}cŠ†c’\ˆ‘V€ŠZW„ŒX’‘b““jŠX•X—–\ œUœ[¡˜S©›M°ŽO¨˜O©’U´™M§‘\Ÿd“YžVŠe—ˆ[£—_•–Y”–X™V’ˆZ‘Q¡†a‘˜h“m‘Œf†”o‡n…`‘ŒdŽŽT‡”]‘b~“_}™\‡’Sƒ–]o‘K|œJq›R¥R€£bˆ¬W‚¦\ˆ¬[}žP|œ\ˆ£_y—]p§^tcz¨Zs°]nµPt§_h©[g¢bk¨fq²\q®So¸Zq­Qn«Yp§cjªSr³b{«ct©kwª`ƒ[šM„ Lƒ[~š]–^†“W‡¥U­P¡OŽªL§O‚ QŠ¥Qy«F®Q}¯@~­Kz­Hz´@~¤1ƒ¦9ž6”ž9–Ž+—8˜“<•9›…1’„0Ž6 }3™…@ª},«ƒ0£v)©l"˜z" Œ/ƒ:“yA–€CšŠS‰ƒQ—’E•—K’RŒ…YƒN…ˆM~€JŠƒZŠsO–]¢}b•‡V•ƒ^‚a‹ƒ[Žhœƒ^št‘xŠo•|n…y|ƒv…•}~š~ržrtxw{w†~}ˆm{’i’c„iy“h~Œ^nˆ[c•`r]cƒ[\ƒZZ~`ZzTh[f|Q]€aX€Zg}_g€e^‚f\w]_xc`{\^ZfvdcŠlq…bo‹v=KN@KQ?=J9@TF9W:JRJIVIJUMANLLOWIQ\JLcEGKN5HS2OFCMTETIINJISOC\G7WX?aZIVUHaDRiKFnSQjSMn[R{cWpYSwdTˆ[O`PZW†_TŽa]}rZ€tawj]qg]zj]ol[|b[yrb\_at‚eazbe}hd|eguet}w{€xtŠthŠrf„|o€‚u†r|‡u‚w|}‚~y’~j~“{y‘t|’xt†kl™mo‹esŽks€puvvrqyrym~x{„oƒezc‚‹[z’Y~“a‚Ž[‡“cˆŽk–q•”a–Œf“`£–c¢›\®’X­‘Y±˜b°“Y¯ŽP¦†XšˆI¦‚Y«U©M«ˆH«ˆOª‘GŸŽU¡Ÿ^˜œS‘‹U“˜Vš’Y—™a•’fˆa›‘U‹P‘\“]… Tˆ‘N‘—VˆŠPŠŽX|“H™Fu—USo§Uw R|¤Vy UxŸSx O{Uu¥Xy bx«cl¥cp¥hq¡ht¥Vw¤^r©fr©le§sk£j^¡[m­Xj¯^q©bg·\o¤Wr©dl¡hn¨cqªarª\~š_‚—Z‚–c~ S‚¦ZyšS†¦I¢G…˜N„–N›DªCŒ£L}¥A}ªžƒ=’†?‘6¡ƒ0¡~+›v$¡j(¤{'”s%p.‡x2vDœ}E˜zG‰‚?”„P’„M‡ˆVˆ}_‚xR…yT‡}Tvcl^ŽiP™{Q—tZ”‚b„qeŽ{eY—‰eŒd•„q—xt’wl‹z|‹„~‚‰w~Œu…€p~v„|zŠy‹ƒr€ƒq‰‰qƒgkinjh‡ts•ii‹hf‹\d~[q~_hsWeuQa\cr]es^gpWVxdYn\euqaujXnoUox`usivuu‚mCDV7KQBGX>=YI9ZDENAFKOAOIGDNBDZHGYEASIFOO;UM8MNBLE;ZHAaA8VI@^IM\QHfSFaKMdPKiMWkXMj\ToSNmYU~\W‚gU}i_‚aW|e`‚c_‚sf€rf†ogzn_ty[lu[mr`oqcnih|enwfcwdf€_g„hxykp}xv{|sŠ{lpkƒvr†|s‚wxz{yu…‰{‚Œw‡ryzx“r{tvol’qk‹ok‚no†jtplƒutyx€w†x}„z€w‰g†g…l‰‡a†…l…‰iŒ‚q‹g’‘^“fš—qŸœk£œ]¤•_¡šd©`¥‹X¡‡MžˆDžŠJ¡ˆH¬„O¯‰D«‡E¯†Eª”J¢™H¡˜P™œH–˜MŒ“T’šYV“ŠdŒU’˜Q˜œK••Q“O™R›LŽ‘V…ŽK‰ŽKI‚›My˜Tw Pt¢YrSp—Pt—X‚™P~¤Vy§_o°\t°mr±nr°mk¥poŸjt¨do­bk¥^g ad©kc¨`\¥`h¬gh±fn®cm¬cj©dm¨h|£jy¥a€ªlw«hu°e€¤b}_| [€ŸP€¤KxŸNw™Fz˜G…›LŸA‰«Gƒ«={:x¡9y¤<}š2›/€™7z›4y=t–9sŽ4~‰1|•7’8ˆŽ8™Œ<™ŠC•„A›~<šƒ8•:œƒ/—s5¡p)™s$™v.˜z;‘t@–{C˜zE“{IC”yCM‚Y\z_|}[†x]„r]ŠwU‘mV“oV”v^•w]ŠtdŽ}]’aŒ~d‹j”xu—vr“xxŒ}o…|‹„xˆƒ}…†|Š€~ˆ€|ŒŒz€Žr|’|ƒ‹y{qrmjkkŠuj„le‹lc‹fl€amtdlu[es^k|]i€ek|[`^`q``vgZkranuYmsgo|djymqng|o?BV6DWDIW?FYO>UHFRCAQD>UQ>DMB>PCDUKJ[KKLREWGFJCKLTFWJGTHNYAKRPF]^Qd]UaXMZY[bUZmc]hfRvdVyY]uWV…bU‚Z\v\dv]eu_^wfn}hs}ngva_{gbuudyjmzqnvikycg~al}nrwgrzilurx}~xuxp~~iurztdw|n~‡s„ƒot|Œ€{—€‹yqt“p…—nrŽnz™`y‹nu‰cqˆk{†eokqv{}osƒ{y}yvŠzy~jŒd{^ya}‚mw†iƒc‹i•h†‘oššs™sŸ–n¡‡d¡ˆc ~h¤ŠS®‰[¦ƒS˜ƒC¦‡Q´‰L£‚P±ŒF„L¨‰I’TšŒX™—K–ŠM‘\˜“a…•_ƒ‘Z†‹S†‘L‡‹R‘Y’—\•]ˆQ‹X…“X‘’B„‹R€’G|ŽCv—It–Hp ]xžRpž`t¤Lx¥QRp©et£lt¯ht¬kpœrvŸcz±cp¬Xa®W`¬\]¦qa«`džjb°ep¨ti¬ok£hpª`h¤lt¡ipŸft¦cg¥d{«k}§hs˜Zy˜O‚¤Z}œU—Uw‘P}˜F{œK†ªE…¥K‰ªB}¤K¡=x¤FxœGy•;‡˜7„¡0zœ?{ ?r†2‡0ƒ„7„†B–“@œ‰>—“<ŒF—|=˜‰3œx0 +§v$¨t£q-q%žu/’q;y?’{6›x<Œ{D‹~;‹…C„‚Oyr[w]ˆrd…rTySnU‡rR”qYŽ{a‹zYŒ]”ƒl™vj’~gŽ{n‰ro|uŽst…h‘|n‹}Ž„–z‚ˆ‚€‹y|‡†~Š}Œ‰{‡ˆ{ƒ~q}~l{yq{†vi‚mfŒioŒok‹ih}[sx`dyghveqq`p{W_n^c€W_xn[epZhpbsklo{c|‚syriƒp=MYIQ>LE4VI;QQ=DY?H`GS^GP[FOWIKMLAJHCTHE]VRXUOXFIYKTY[NVe\\cXYZbb_]`h`ie]m]U€ZV„UV†\T‚b_yhhqjjw\ekcbn^nuemtdhuj`vlermm{gu{nmqoprjvthpyqisjmvsn}x}wxxm€rv{n|~ep}`t‰l{Œw}}qv{’xwš‚y …{¡y„“sz”b~•czdray{fr…c|‚k{ws|uzƒp{vwytz|x‰l}az„f}`z€i‹ƒnsŽq‡—k‹“s”l›‰oŠe |h¥{a¢V©zZxK ‡I­D¯O£’S§ŠW¤Mš€HšˆPŸƒXŽ‡S‡T‡’SŒ“]”f„‡]Ž\‰–V‚‹S‰‰XˆˆTŽ‡V—ƒV”Œd‰TŠ”J‹M|‰C|ˆL}’G~›Gv—XsŸ_x•Ws–\{¢O~ŸUxž`k¡ek›ij¢hg iq¦a~¨Ws®Th«]i§fa´g_¦rn§nv£un¦sx›rr¡or§ga§ci™Zh–`ošff£fug¥_¥Ru˜N~˜Xy“Yy•TPx’Ax¢=¡C‡¨?€©NƒªL|œDŸH€‘B‚‘H‚•Iœ8}“9w˜<„F€‚?ˆƒ5’„;™‹?‘Ž>•Š<‹;’ˆ5¢~9¨q5žp(Ÿm$žoœp&—l&žn)l8”t7{4Œu8’y6˜q6•zDˆsQ|oZ„nXŠwbs[†wYƒwa‡z^”qS’xW—{fŠe’}n˜wg‘tjŽu‡sprršvl˜„j—Žk’}š‰ƒ˜}‡~z„sq„zy’‡xŽˆ~ˆ€yzzxq~„xƒ„p}…jq~mwryŽgqdn„_nxbjtehmXdpV^pY`~WiwYcnljlt`zpd€wr}yowv‡kOKmŽ?|ƒB|ˆBƒ„?Šƒ8”€4‹‡AŽ“=‰ˆ0~2œu1§~/¢z,£o"¦kœo"©m. r5—o0’m5˜z-šy<™v.~FŽ}LŠyL~h_‚x\‚xXƒvW‘q]vVyf„`‰zV‹z\’wa‘sg˜vs•xf€r‹tlk—yk“‡nžˆv•Š~v˜x}™~n‡xum’‡q‰v|~~„}xwƒzvŽ€nvuƒ‚nƒˆbxetgs‡bm}gvpnjqWry`iwQcvTgu]ithr|ae…nkzo{…q€ˆ||„p=EiDBhQIiRSXVUUYONPM\WHYSLR\BYcJX[Ja]Mh]S^\W\ONLTIKdJNkZLeXS^]RaUYg_Ueg\scNqYNvTJw\TucZp\en[m|XdnS^p[^pXly_lrWrw_mrbxj`yrSypWsqWp€`s{ay‡bwŠhw{ht{h{yprtt|mqtxrkurplspr}gl|pv||{~~t‰ƒo†p„{€~ˆ q‰¥mŽ™ii‚†p…lˆnƒƒmz~utzm‚uq‚wsw‚{uˆ‚pŒˆo‡‹z‹‚z„ƒr€}jƒ…gzgƒ€q|…h†p‡—eˆ‘i‡dn”}h›t]œ|T¢sS¥~L›€Q—Pž‹Y£R ‹I“†I~M†O”}Q—‰Y’‹e‰^„c„Œ[ŠW’‹^ˆ†_€€V‰„]‡„[‰^Š™fš`‡a˜X‘™Lƒ‹MyŠP|‘G{–Ow–QvSr“Vl‘LtQuMlŠWp–`e–jk›he£^d¡ct¬Yo¨Xo¯dmµhj«^t®eu°[|±bs¨lu«ao¢cs“be“n_‹t]‹nj™ei˜^g–ei•\ray—Tx”Y|Z{—P~–O…–N‹‘N†–K‡žBƒ›B¡D¦Hx¢L€’?z:xŽ:vŒ„Œ?ˆ‹B‹…;™‹<•Š5“Š/¡|4¢y5«{.¯)ªs§k'«s4¤u/g5–i-–u/˜u96ŽyJŠ}PzO†qWŽrZ…t]‘maŒn\…{[†^‡z_‡}d‚{hŒv`€c“pŒucŽqgŒtn‹vmŽxp”{yx™‚|£‚›v}’wt”wm‘wj‡‚mˆ}nƒ}t€ys‰rŠzsƒt†{qƒ‹hzŽ\ŒY~}fzth}xgv~iov]k~^p{\q]r}ZzˆgrŠcvls‚Žs„z:EqMDlGQaWVV`VUZJ[[O`PQXMD_YM_SQ[cWc^NY]UU]QX\S\VRXb\P[X]g\XcfUeYTc_SfmdvicifS{\Y„\Nti`pelzf\‰\`€YfmV\uVdl[qkbun\}o^|rX{kUpv]s|cq„aoub|~c}€pk~pj|mrskktqompmjopvu|k€zhvv|yx€rz{uƒˆp‰q„œpŠž~ŒŸ{”o„•m“jˆ‘m‚dyixwtr~stˆyi€}hwvpq…wv‘{x‡|Ž’v‹Šp€{~v‹i‚‰r}„h~p€r€„s‡‹v|‚k„…q“~oŠth–zf•s[˜u[•y\–ƒV‘\˜c‰ƒY“E“~DŒuO„|QŠ…Mc‹‹k‚}Y’a„]]€Œ`ˆ‰]„^†P†…a‚†VŽŽV–“bŽQŽV‰O‡…HxŽCy˜@{™EvL{Lz‘Lx‡O€NwŒOu’Q_“dh^dšjf¡Yx©Wr°[{«b~©_u±Zo£bs°R}¥\n¤\{dp¡m{œhk›km“lhŒlg†bnhf—bb’Sm‰Os†Uv“IpŒJŽ\t–UŽP…ŒNŒRCŽœMˆ–Kƒ @uE”N~Jxƒ9|ˆAwBu…:}{/}‡=Š‚=‹…@†J…~?Œ‚8‘{C“y2Ÿv8¤j0 o.®p7ªl ´w¥d®g&­`(Ÿl3“g4Ÿt9›t1š…7›zJtMyR”nN‹nVzW‰~`ƒpSu]‹{W–€R“‚\‹ud•yX‰ri~c…xdƒonŽxg‹ml”soŸˆ{”†sŒqšz{¢{o’tw¤tj—tv‹qpssƒsp‚uxqqƒrt‚l†|mŒul~‚_ug}c|‡m|gƒ|govirwal…jxŠanzfuzdu‹`s‹^{}b}‹m|‡rŽ†ƒ‘Mt‹Mk†Oj•Te—QyœVu«Z‚¬Qƒ]}¦Zz¢ay¢Zn£\uœ\všgyap•ct¢Z{šf{Ÿov—iqbp–\v’gx”aw‹ZwŠ^pŒMuIq„RpStƒVƒ[zT…—Jz˜D|œ;q2n6uƒ>uEx…O~„I‚ƒ8‰„4x7{BŽpI”oFwG‡jJ‹w>Œ{>–r6™l9¦o(Ÿl4®e6­r/±a$¸d½g²m¨Y$¦[4–],¢iA—{B’xD’wF‘sB•pG›wS}MyT†€L”~J™RŠuMŽuTiVŽkXˆs^Œl_‡ua–tf‰}j•xk€u›†|Žp™‰qŸ„pˆq~m£sx˜‚o¢zt–nl™tgŠyf‡eŠxjˆ€fŽzj“…h€Š\…Šd‰Ž`Œz^|†b‰|c‚jwŒc}†efv‹js‹pu†mv‰r‡l~a€‰jzYH`XJgSVpWUjQ`bV[k_il^fuYpoZis_gvS[lRcbY]iT^rUZiXWqVen^rn`neotgpxaoz_~q`}gYzcV}hU}fa}d^†_bƒXfƒ^s~SvzXqtasob|ubzq]zsVxo\{rY‚we‚lZ{l`yy`{zio{mj}wmsznv‚mq‰iq€izŒir†rzˆup†ur‡‚t‚ƒt~ƒŒ|„ˆr‡•u’w…œ}}‰y}†~z~s‡…r„Šj„€`„€gupjyinpysv€rq{kz‚tsywˆ|Žˆ{„v„‚~}ˆ~ƒŠ‡yŠ€pŽ…x‰x{‹xv}zz~z‚p‚zk~‚^‘|f“x^Œx^…ka†iasSƒwWxpQttPvs]r^zx^}vSsuWxo_vt]wzh{ˆas_y‡[‚XWˆJ‰”LŒY„T‹‰IˆŽFƒŽD†?Ž—:‡‘FŒ‘<„–?}‰MzI‰CA†ŽP}ˆOtƒMf‹NlMr˜ZqŸZv¡YyVyšcs›hp§[u™W}”c€[x“azšZ{•d~˜_s–il“at’^}Š`z‹gz•k|is‚_{€WuT„Pw|Ms‚Z|Rw•NrœIy˜KoJu“9s…Au…’‚K”v:•x:”vAˆoJ…kEyB—v;›f6žm*¢h- k+£v,¥f&·g*°n"µi²h#¥`*Ÿd%¬\+¢\;g<št:r;ŽqIoD‘tAŸ}FšƒF‘‡I‹zIŠxK˜sY‘pW˜ggžs`“tq“wv‹rt‹nf›lŸwi›ƒzœ{qž|u¢ƒ|¢m¢‡u¢…o¢{~²~s°tl£|jšzh™‚pœešzj‚]“x[ž|`“^”Œ^ˆj‰uh…m~]’h’ˆi‡†l‹„k††n‡Œf€|j€‰lŒ`Œ‹k–‚h‹wTV~Q]wQ^uZfzekwafthd|_n„fcwdfoeUv^TtU^kVacQjdOhgbhrgmmloq_ske|`n|fjsqsknremtii‚rsƒxu~hi…dl‡_i‡Yn€V|yX|pSznSzt`~xgrhpwcovdvz[n]„pk{upvqqz|jv€p~„myˆr„Žn}lk“gj…ru‘lr‘uu‹}jŽsˆ‰o‚ˆsŽx|Œj…i‹qŒw†Šlˆ‹i…‚n‚k…‡pƒ€ozvp~vyuuuwywz|ƒ…v‡ƒ’}‡~ƒw„‹px„vx€x‡|y…}}xx€uv‚owŠorzz‚}|ukxp`um\‚kd}le‚~Zs|NqoOvoFs}M~nI|pPzsZr~Vrw]vmWwpRnyXwƒQy‚PwŒW€‰WƒƒT€‡Lr‰EuŒJqMm’RxŠPvRz|R†€K…’E‹“9y˜yŠA“DxŒGs†Fx‘Cm‰BrŒKmKr–Px‰UyŠ[wœdtŸ^u¡[y›T}¢St¢Ov•R{™Sy[€‹a”cƒo~Œg‚’p{ft‰j}`‡aˆ}h~nc‡|i„…b}‡^q‡Y}N€RxˆSrŠPz’Q|C~Eu?{x>yHy~T…ƒT‚S‚„Iƒ?‰r@„w?{J“rIŽzB˜y@™k:”x7”w&l*¨l¢s+¨i*¬e#¯`!®^#¯_1¤^9ªj2Ÿg8¢`A—d<œoA’vI™oF”|?—~H˜‚R‘†M”RtZ‘p\šr]›khnitv‘mtliŽso—qhyqœuvœxr—~|¢x¦ƒ|‹p©yq«xo¥qf­ue£pi¨qq¡tnš‚r„f¡xb£rd›zf¡†bœ„[“…_ˆ{i‘tcŒqf‹|hŽ…e’cˆo{p…~l~zl„c‘‚p’€nˆ|qŒˆrQIY[[a}Zc‰Zl~Zs€`ez`d^l\coZ^yi[nbfifcsQdhLkfSer_htkrvfylcwml|tqxlxko€xf|xgss„€}‡m|qpcu|aysRuxU„qT€nZxqVp[|}ZtoglsXt€a{wh†pwtm~lsttrry~tm~jjŽuu’t|wt†kxƒ~gˆtjwq’i‰{g‡ƒiy~d{…t„Šr‹kŠ„d‹mˆq€j‹‡m…cˆ}q{u|}t‚€w…w€~ƒ}r…{„‹}‚…€{…}…z}oz{py~ˆowƒzwyoxstˆw|xƒwƒ~ttm~v^|ocˆn^tsZtpX}~]ryLrrRwwHmvJ~mMutVj}UopUy|]wkYhxYz~Tt€Wv€OwIz‚Jz~Tv}DpŠDo„Ro‘\l‰Lt‹G}ˆEz{F‹€<„’@‡”A‚7rŒCx‹@wˆNw—Fp‡Pk“IsIrŽQv‘Ps‘PmSqƒ\jŽ`lŽUqPvŸU|žJu¢O‚”Jˆ•OŠ`~ˆc{e‹›i|˜r„iz_q…gyˆ[xƒi|pfŠpiŒvc†ƒl~ƒXt†Sz`‚ƒ\|YqŽTvŒY„Pƒ‚G†w=ˆw@…HyLƒ‚L{…U~O‹yPyN„vJ„T‹wOœDŸs=’n-Ÿz/šo*—j,ªt(Ÿi-¬f'¦k.¡j)°]1«c9ªn:°l6Ÿ^;£[H›jE—o;™eK“tK“nU¡zG H¢N‚LŽsM›r[‘pe”wo•mg˜mršqqžsj™{w›ut•vo£vŸ}z§†ƒ ž‹r¢‚yªƒp¤}w°tc¦€m¨qj§mq¡yk¡Œzª}q |k§wc¦€kž‚f•‚g”yeŠ|iŒwh‹re–yf_‰kŽˆk‘xg…}rŽ€sŒ~nwmŒ…hš…xŠo\X}eO„ja‡jh†lg~do„ao€\gƒ]]‚[Z}eaxdbsljwheqbmhXigZugZptfk|ksrtwuu~qrxu{ysynˆzlˆƒsƒ{y~x~tu€cwzawuV}pS„nS‰zX„x\{w_ux[poaup[v}d}|duws~sskltcpgkzkk†qj‹pvƒp}Šx~|w…xxŽpj’jd—vaŒ|]Œ{f€„^~†b‹b~j”‡dŽ†h“‚l•‚h‹Šm‰ƒcˆ~k{nx||x‚ƒŠ…ƒ‚{Œ}…ƒ|€„y}‡‰†|…zvvysvtooq’wqˆx|…vq}yt†uy{zy„{vqk‡s\|mYnl^mq_wvasxUl|TsyHpqOupHojKsrVyy^oy\ezcio]sq^xtPxvRs}Gy{Mw{Pr„Vg€J^‰WfŠUo“YkŒLn†D~IŒ‡M‡ˆB‚ƒ8}>yCz•Iu—Rn”MfˆNlŒSoˆMj„Ot€Mu|Iw~Pm„PbWh‰SpŽKs•Tt¢YtžLv™S„•T}b~‘b‹–q‡™nˆ–c~g}‚`s€]ruXwaŠxfˆn]„kh‚sf€xj„Š\}^w‡_u‚]|d€†e…†\‹}SŠtE‹nN‰wS…N}‚Tz‹J†ŠM‚S‡OŠ}V”„O•‚S›zE p6–r0u)–t0‘o4œk)¥r%¦p"¨l$žp0žn.¨h0£fB¯mB§lB£aEža@_AŸbB›iPœoZœmT›oM¢zD¥‚CœxQ‘w^–|i›tlwr˜pnst™j~n”}sœ~}•‰‚šˆ˜‹¥Šƒ¢Žy¡„}£y§‰m¢ƒn§{g¨g¥xo¨‡n¨„v¤‡m¦€n¡m«ƒa¢‚kŸzg’wk–n`‘rX›q_¤v[›gž~l—}jœ„w~rwmsl‹s“{r„v—ƒv^T}kS…qU}qbz^a‹[j„dp†hk†ae…[\}cathrvohnfmkbnoghq]qkipwmvxjz}fyyry€y|ƒxv€y}~„}z~z}|wytoƒxe‚yd„{c…{\‚v\„{c‡}ayx[xpZmxkvya{b}oyznx~krlpqwqnm€nvss€wyx{”nvŽt{ws•eiŒgg†to‘xo„zf‡€e‹ƒjƒv_“‰^ˆ~c‰l‘ŒfƒŠn‘iˆƒcyb„yo{†t|xƒ‰}~Šy‹ˆ‚|u‡†{Ž{ƒ†z‰}pr{‹pyurvuˆm~ˆw}ztt€}qpi„|kzro‚dg~ijtoWgq_fpPp|WxyNn„Nq~LhyOihDooKukVjoXou\jn[j{Tq{IytFj|RnuLyvI|{Pr~EfuQ]ƒQZ‡Kf„Hl~To…N‰€Ay‚G€ˆMy†HpEx–Ip‰LxQm’Um“Om“Xb~IqHn†RrtHsRo„Qh„PvŽWo‘To˜MyŸKr‘Oz‘X‡ZbŠ”gŽžd‰’h€œmˆ’g…†d|v[ƒb…tetiƒ{f†miws`}ƒVƒ„Q„„]x‚j~fy‚\ˆ[‚„Z„L‡tD‰}R…s\{{M|yP†N†‰K†ˆO‘‚G†~RˆƒQ”}H F™oA‘y;l-Ÿu*—t&Ÿt&©h&±s)¤y%¢z'£v.«a6¡m4°aH¦m>œb<žeB•h9£nJ£kSšlOœrP›tDžtKœL–~P”~[—xi•€fŒpkŒ|fžrxi‘~o•o¥uŸƒ„”‹‡¤‡†­ˆ¢†‹«~‚£‚t£Œs«‡n£rf¡j™vi¢‚o¯|g©|p¬ƒ`¤‡`¥Š` uk§tpŸ{i¡h\–ih¨s[©{c¥wn¢xqzvwgŒ‡mŽ€r“tp“ƒh˜…xŽ}w“zvm`ƒl^Šj^gY`fƒclƒbk~ehˆf_Žce‚ee|qt{jl{mrkaxgdlpantkwx^xz`|aˆl„‡h‰pu}|~‡~„…u}ƒw†{x…‚qykk†tdƒ{b~toŠrkˆub~ld~s\z}Zrvftl‚xi€|rƒyivvyszyr{yykuzos}zzp}k„jsŒkn‘in”pjfm‘qm{uˆzk‡xwŠ|q†zjŽ‡aŠ…f^…m‚˜s’q…„i‰€i€{kq~j‚jr„{y{}}‚‚†|…Šwzxx€{z~}{s‚psnoƒpu~|n}{g{qexkmzwnsthkyidqhefsXe|QpuVu}UvƒNl‚JfySkmKkpKnp[ryVt{\rwNtvJo€Gh{Jj|OtnM}xFxtBkvNbwKhwN_†JiMiqWz{I‚w>t˜h?”fHŸeD˜q>œsIžtI¦pG›zNšzRœwb–d˜€Z“y`re“urv–†mŸ„pŸ€v˜x}˜|~¤Œ‹§ŒŽ¬†¦ˆ„©}€ž}w¢ƒz£zt¥‡{š…p¨ym§~b €j¨‚a«„[©dª|nsj x]£s[¤wY¤id¬wp¨tm¥lo˜ls“mq“g™~q’€pˆu˜ƒt•v~˜x|cS}g`~scjV‹mZŒkc~bd„lp„ld‚imwlonmvrss‚vd}piqspxr`‰~d…_‡Œ[€gƒ’j‹‚m{ˆq}€n‘‹m‰†q~|yrs}n}|f}soƒwn‰uguoƒlh„uj…tb„k_vyb|ui}xlzyftvm}tw}qlvfyyyy{sux|Šh‚fw‹uv’sm‡mo’rl‰lo–ym”s‘|p’zw•€c„\‰cŽŽb‰‹hƒ‘gˆ•uƒk{n€ƒcryo}w_~}iwwt€~wz~}{…‚{ˆ‚ƒŒ~t|{}~w€vr†ro†oo{vx~wevpgrtqephdimkgotfrvjixYdXrVq]e†Ll„OpRnvDlmKqv]uoSvyYxxOpyPq|VdqGpsKnkSo{Srv=ouA`rFgFgwWetLhiLloS|~A~~;q€Iu‹CoŒAo†CwCv†Cd”EkŒIrˆXp„Mk‚Ru{QtˆTz†Pv„J€~Mv~OƒSySˆV‘\„T‹SŒ^’Y‘Ž_”–b’†g†€cf…qe‘{jss€{b{nˆpdxukszWx~_uƒd{{d~}ezzb„t^…v\‡xUzrMˆoJxwM…V~rMtK‰xSxE”sMp@ŽmD–lHsCœ}Kœu@žwA¢t1¢x5±m(¶s-·i:¯g1§u4§q4§j:¢`?­hI§gF¤mB jCžfB›oAŸfE”qM¢tN›|F¨~P¢wU¡|W“xY”€c•€[•‚]†o–€w‘k„r™y’ƒszv–„s˜~‰¤‚Ÿ‚€¥†ƒ£ztª|}¦{v Œn˜ƒqš~c ƒ[ª‰Y¦ƒi¤}i©‰c¯tp¤ro®€^²€]®}]§ijni¡kk¤jn£nq•}mŸƒhž‚qŸwh ‡q—}w•‚–z‡lSƒmZ€oZ~oZ…kVƒm^‰ujˆri‚um‚yjzym€xrzn}|o€ul„rrƒ{n~|_‰}Yƒ}aŠŒjb”d‹Ži…‰b…loˆ~t…q‚tswvxywn}‚v|x~tw„np‰loˆmg„ndŠphƒjjƒl_|wc…sd|dysf}sh}psxmqo{xtsyh|†lƒ‰rv€„mx‰qq“tm“€p‚k–€l–xl–€h“ƒc‰_•ˆ^‘‘l‹l†‡rˆnƒ†g~h|hsˆbtfw…ps~~r}ƒv„ˆ……z“„xŒwv‰‚qƒ~z~}sƒ}iqc‡ti‚mtƒporeiyjcnsnjnrplwmgs_j~ej€^_‚Wc€\`ŠRi„Qj}Lt~KqzStzPk~LowVvq\ryTk}VasPeoYdwSguSe|Hf~E^vM_tM]pTkiQqpOmlRutFps<{x=}„AvŠG~“Eu’Ir‡?kˆBp‡F{N~…GxˆOu†Iu†SsˆW‚~I|€D…ˆC|Q‡P‚`Žb‘Œf‰ˆ`„dŽ]˜ˆeŠe}hŠxgŠye“toŠuvˆlrŒnjseyt_|niydxzbwyj‚|m{}e|qhuxfvp[th_€oR{rPymV€tP‚uQ|{T„vS•|T”uEžzE™n>’yG–vHsM•nC£o:£p8°n>±y6¬r>°p4¬u:¢h<©l8¤e2©c?«f<¥^E¦gD¬lD¤h;§p:™iD”mA–zJ ‚N›{K sRyX˜}XŒYa“‡c‘‚g–ˆt‘k‹lŒ‡l‘Šy‹ww’Š†š……’ƒ…™…„ª„}©€v…|›r•‘q l¨„aŸˆbš‡j…b¬…^ª„f¥}b©{j­xm³€j©vl©v`¡j[ n[šh[mh™|h¦}mªxqŸ}n§yj¥zt§z|ž}€lW‚gN…pTŒjctd€n_glgg‹kr‹xnˆlxvxsw{uzh…€k~‚a‰‚k†g‡Žq‘‰l†“j}˜b€†h~‘q…i‘w~€l‚xz…‚tvyswtm‡~xŠu~{kw|qu…nk{zcxmr‚mk„lnzfswmcidrsdzsq{{vvnrsoulpt{qs~n€i|}uu~qƒks†{{e•‡g‘…n‘|cš‡k‘h“ŒfŠ‹]Œƒb†‹w‚lˆŽrˆŠp|Œ_‡|clx‡iq…hƒtzuƒˆƒˆ~„•‚t—nt’vqzv{~o‡wj†yr|mdwdtylmbilbiteinjsnpr^fmeivai}S[x[`ˆSg~^_zNlqZi}KjP~qDk{Kp|^evRk{PdMbwPexOfqPgpJh|?^w@[qHcwR[oMbqMlnSnzNi~?o|CxzLnvExzRn‚DsEi‚Me}Mp€E|ŠIu…JvRvƒTp„Sr{TzG|‡N}J}O~‚Nˆ~T’{iŒ‹W…‚a’„Xˆƒ_”~g‹ˆl_‰}_“mrve“grjoŠnh}ro~{f}lbp_o{U{ob‹sj„sa~k]€s^zia‡s\‚eQ†uO~rJŒqImCŠsQ|lKsNšoF—kO p<pA•{BtAŸo= hF¡j4¡p1«s*«p:°k?¬h4³d;¥e@›i0¦f/§d>¦e7¬iC¨b:§iG£nEŸiB£kF˜@•{B¥qV£zN£~TštW”ˆW•‚_›|a †t‘q–€{„~˜ƒy•„Š…rˆvqšˆ‚š~{‘‡ƒ¦u¤ƒvŸ{€Ÿ‡m¢€i•ˆe¥Š^›€m£g¡‰a•{g§‚m¦€a¥vl­vq£ta¥|h³v[°}Yªq^¡qi¡ej¦ma™nc«yeŸqg£v˜rq™p}£{€v†kOeQ’oVje„sg}qhtf‚lr‰jthxˆhwnw{x€r†zuˆg†„i„f†ˆf‰ƒqˆˆrˆŽm{Žpx•p€Žs‘pˆ‹{~ty€t|‡x‰€Šwp‡o|ƒnv†mwxjmvtg~vn}vo~wnrj‹gujvƒeuvhzv{qyuk€xtvyltuqu}rxx„jw†gv|fxˆsz…uq…vwƒq˜|bšƒ^–Žk—Œo˜Žk—”aƒeŽi‡‚pŠ‘qˆ‘k‚ƒgŽ‹dˆˆqƒ‰pyo~Œn‚{mŒ}‚“„v™yz™s€tu“xz”|yƒ{o€km‰okwfeurmsrltlgk_npdkx^woivcqv\dwRaqWXR]‚V[tRaqV_s\krYiyUvvIzmUpqWmoVfwG]rJYyV`~Z`vPkt?ms?`z>]zF^hG_cKfgU^{XdwTjvHd~UozTzvQwyT€zVxƒOx}NpXm€Zx…O€yR|wNsyRtwVvMy„H}ˆB€ƒMqtKquM}…Sˆƒ`~S„ˆT„‹O‰‚U„wbthƒlo‰peŽjf‘il’j^‹u`‡na‡wm}nn{tazl^vrU…pX‚rZrnbsvc~w]€l^dW‹eTˆoHŠrG”xI‘uDˆoI…iJbP’jW“bMšfF˜kNšuIŸv@˜q;™c9œe?¬]/®d-®h4¶i=¾g4µo8°l9žh7®k;®a6£i7¡d6žk7fC—pCŸmM—mCŸtD¨mR eQ§lR§vZ¯pb¥u]¥~e™xb“|qƒz¦z{¤uƒžz‹z‚wv{w‹{€‚¡¤€s¥w£{}¢Šw›e¡‹cŸ€a©Šc¬…l}hœ~o˜woœzdªrl¯nj¦y^žxa±zf³w]§jlœlo¦qt¡okžtf¤hmjo¢tw qwt{’zŽ{}mXŽnY”fXifrh‡mo„ft†or„ft‹`zi~‰mozsyˆdwŒp‚}r„}j†„e‚}j}Šz€uuŽxrˆlt—t}œp“dˆŽry†hw~mu‚|‡xsˆqm~jvˆjq‚wxhstpjquexpuƒvoŒpw‰pzkq€m~{pqvurz}wsrr|{sly|jw}pyxlvƒrz€u~vvŒmˆvy‚†u–ˆi“~`‰hš“fš‘g—k™‹fœfŽ’oŒf–o„‚gˆgŒh‘uƒ‘|ƒƒ{~‡ƒ‘~{œƒqš€y—zxmn•pr‘l~Œml€nj~^fw`pqerzitl`ojktlf|z_xxiwjqck|gk‚\]~^f|WjƒVf[fuaryXm~Mx}UqxTf|QdoRYrE[yM_{NXuUk|DkxHtmH_uJhFelVigTZrPQ~KY‚Mj{LauPlVysRtItrWluVo€Ovx`r|MxƒS‚IzzU†xZ„|Xt[{…TvN~†RtpXyzX~rNw€Q|…VŠvZŠ}ZsbƒmZˆi]„rWyxU†uiŠoaŒri‡t]v[„nq„~l|l_}{^~^{rPˆ}R€pOzu]}kY{nP‰nW]O–cSŽeE‰vMŠsM”kDŒjIŠjLcWŸgR¥iO¢cH§l<£d9œf2©n4¬q9«b6­n7¯g7¸i<¶lAµo9²a4£c:¥_/¨]@¢a=¯[:¦b4eAŸbJ¢_K¨gN«nG£fJ¦fY«qV¯mN¨u`«h\¥kd¥p`ª~w¡w‚¢w‚tˆ£s€ ~zzš||’xx–y€žz‚ž}x£€ž„s Œ} Œi§i~`yl¥Šn¤ym¦xmšsdžmd©pe­mm£u]gb¤ig²xi«vj›lj§erŸlk¤rqœqz wq¨x›s|–w|—„wŒ€‚_c˜eaŸv`˜u]”gjœie˜usoxŠg‚d‰n}ˆlr‡aoŠfvŽh…oŒ†sŒƒk}gxƒr|…w}„tt‡n‚”q€šrt”ex‰h|…m€„k„ysy}o~‰px…vs‰pvƒxlrsoqll~ug{qm|po‹h{Šqxtszj{tm{wrnvnsxwrqyrr~pxwy{vq€{w|wvŠvrŠos‰|v‡ƒy˜l™‰a˜•^Œ^˜`”Œg•’\š‰[£‘c ”nœg–m”‘m†˜nˆy‡‡|Ž}‚‹x{™rœ„t |rŸwtšrv”f|Šks‰lq„gs|`w‚dn|mrwersljvequd}|czvpukmk`|]d†]`|]azYc„cjbmsfru[u€NqOgIgvQZzP[yIWoK[uMYwKdwBoxEjoKbpMcwVhrOakQ[oMTvK^yJ\Rk}TpsLtzK}qMruPowLfq\k{ZxvXz€T}wTyL‚~O‡}Y|ƒS‚yZz^~|Ty|PvoTulLrrMrmYuZh^k]vlb~nY„iPzqTŠtYˆla|kXj_„njzvcwxd~s\‡qWˆzZ‰~Nˆ{O†|M|tQ…oTiL†`G‘aKŽ_M”iBšdI”pG™eR•]U˜ZX’]X‘\Už[J¥[I¤g:¦f0©b-¢f,ªm5°j5°s7»v-µk4¶j9¬b:§_:¨Y0ªd>£e;­h4¯`2¯d;§Y8ŸYB§bI²bU±lT©mZ¬cO§iR²cS¨__¯j`µtg­po¦x~¢rœn„›z„£~„¡v|—}“}z–us’y{ž€vŸwy£‚r£„zªˆx®‚x¦‡q©ƒb ‚b¡o§uw¤os¦jd¤mf¢tf¦ll¦dc«e^´l`«re¬ri«`eªbb `mšoršnw›hr¤pvœ€}”~y|s€}gdŸr]¨mhšr\›q_š`j‹qo“hz†ip’ntmolo‡hu‚q{ˆu„x‡Ždˆm‡q€gŠ€m„}vŽuw”mšfƒ›l„‡aƒc~ynw…hy~nz{ts‚ou‚ssŠsq~nvvyq|nawnkzjk‘duŽqx€itycqubvxiwvxvwqqwwk{xqy|vxqyjx€o…ƒr‹opŠli‹qo“qšŠgŽ‰j”‹V’‹^š‰Y˜Š_™‰`^–aœ‘f™”k––h‹ŸsŠ§l…o“ˆ|ƒ‡{z™u”}–qsšz| h‘lpb€gx‡a}}hvynp~_wokzjemtgl€c}nnqhp}fk€nd€di‹kb€gd€Xn|gr|gjqbwz`t€Nh~KgxI_oJhpPYuUVzOasSWjN_u?jsMjqIhjJgkRYiQdvN]nHUvLYM]vJ_|ThmSmnJ}lHyxHmvJz~St|Y}~NƒzUsxN}vS{W„sV|tS‚rYwnY}t\yf]~v^ygUn]~ocxndzqf‚cdƒkc…iUxr[vqX{aalbgdm\‚{auvp|u^tja€zQˆrSŠ}S„|LŠxEmU‰jV€_Nƒ^T‹YQ]H•h@”m>qF•_H‹iJWUŽXP_FžTJŸ[B¥oF«e7 a1¦^5¬b-°c,¹d8³j0¬b-°Z7¨X+¤S'§_,ªU.«W9°[2¶Y1§`7°^0®]=œiCªeS¯bG¥eL¢eP¯bQ«nV²nU­l]£qa©diŸe{¤kt¢v}œo€ u€šu{˜y|t|•uƒ•w~—usžpx¥s{žw{›†{¤wiª…l¤„a sp©€p­vv­ez©nl©pi¢j`£de£bl®`e§pm®ah¯hp¥]l«\yždr™^~žcz§fz©ct–yvœ~}yt’v„ma­v`¡k_§oa£hnhndzot’ov—rtvl‘hrˆh‚‡s‚‰oŽˆrŒo„“h†”f‚—g‹‰hŠŽt•j…•j|a}“g–d|fx|j|_~„ixrrytwuuqq€nlztesliskmwmhŒnp‹`}…hƒdqlv€gr|nwx{~pnzrlo~rz€jvsm„rg„‚kˆw~qo‹{i’wr—{o“Ž]—Œ[˜‹c“Š^›‘^’•f”˜g••j ‘sŸšo’“mš¢s”¤zŽ“q“p•›xŒ™tŠ¡z~uœrv›kr–fwže}“`ƒg}…_ŠesŠft}dumtrpr}huyp}piyegxmp„jl|qc€gfvda}[bw]qnctndoYqt`kmVnmUfuIc{FbqP]oPbnI`iK[cH]hTmmTccOafG^mNZzJdtP^vNdUcyNa~IdsKyvP}xT}uP|}PuzOsUQ~SyYvySs|\wr^qo^{o^tmX|f`„d_€k`zie„me{bg€eg|f\_^‡k[„fbƒeicdjn|fkwkk|ujupnpwnwk`vi_}eQ~qR~S€}P‹uLŠjH‚_X„dZ‹iS‘_O‡]G‰fM‘jQeC_DŽeJˆZI[HœaO™^DšjD§iB¤n?¦c/ª_1£U+¯`2²^/®Z/²b(¹T(®Q,·X(¯_&§\*¥T'·V)ºU.·Z)®a1¨d> iE kP§cK°fL§eF§eG®nWµh^ªid®gi¦bi©kp¨nx«wƒ£q‚ sŸv¡sq–ls•hw•q…¢kx£qs¢zw•{v—‚syfŸ|k¢yfž~e¦rk®otªho¨bqžci¤`d¨\c°cn¦hr¢mc®ae¨hs¯`}´Z€¬X~­_}¡i¨`¬cv¥jx“p{”pw˜s€ie h^Ÿim¨io¤ukœm~“v€”yy{r™voŽum˜ar‰p}˜hu–v‚{Ž‘uŠ—oˆ_‡’b’”`•iŽo‘o}Ÿd€”cƒh€‚_uƒerˆ_{…^s|qw~ov|go~cnzgjqslyirzroƒqlŠ]}‹bv‡ao…joyju`x‚esum„jt†oƒ†`wwlvn‹‚ok…†{}yt‡x‘usŒ…n‹‡fƒW•†[ŸŠf¢Šb¡”f”bœŽi˜•r—‘yš‘m›˜z©y‘¥|Ž£p–•}…›}§s}œv{›wr—kžh‡›jŒ’m‚—[Š^€‰gy‚bw‡h€|mzxs}zjvyh{fb†lq~dsz`rzeqzcon\orfoifeuV`kdp~`en]ewakx\\rWcnWbdN]gJeeRhcNfcWicLefNgsWapSYkQUrIdySfqTexUkk]mtTdwKmnKnvLyzIk}MztHs‡T|~Kt‰RqŠQn‚Sx{_l{a|mR€pW}lZƒX`ˆha‚a[ylf…d_`av\avY_ƒcZ‰X`~Za{[h‡_fiarnfyugvlb~wjnnitq_|d\~m_xnU~sZ{QˆjF“tPlV‚kW‹fO—dQ—_V‹fQ˜bJcIŠ]Gœ]N”WT‘^Fž_EŸ`D–f@¨i;¦fA Z:­W5¨W4¨P'´Q*ªX$²Q/¶R*¬V °Q*¸\*¶]­V#¸V(»K2¾^6·d8³_;«]:§\?§`J¶kP·jD¨mZ©vR¥o[§ob¯jh¨boªdl¹ey²op¢k}£jy zu¡nr—tz›v~›zŠ˜s†§s}“ju˜sz wg¤xqœvežvqžqo¨hmžfh§el¥pf©`f¡Ye¨\l¯ho¢gl°ku¬dr©ar²a†°Y¤\‡¢f‚¦f~b„­bˆ¤h r~¡n€Ÿohh¯kbªwm¡rvŸz€£t†—p€”v‚“v„ wz›rv—ju’c}’mt›q~t~•rhŽaŒ‹d_‘a•‰o–”k“s‚‹mŽc{Œe{‰kval…dsyfqwmw}cr}dh{dmxlp‚ni„st}ht€]v†ax†bwƒayhr|bt|a|‚myƒb|ƒb†ŠdŠŒi†…fŒ‹q†rƒo…qzzv~jŽj‚fŽyd”~c§}]«k§…h—…m”Žl—’n¡Œuž—|–šs›£p‘Ÿu˜¢|‹¥r©n‰Ÿo‹¡oz¨nz¤rŠ£hˆ›iŽšj‹–h‹Œ`€Œb~d††g}~o|xwmmzkgƒokop}lgw`esdqpbot\on`ir_bkZilTbv_f€Z_yaho]_vTbeOYdX[dYggSalQkdTjiW]iT[tKdsPYnO^uVep\fyUqk[qj]zl\rqMpfIokMvmPkvQp{Vy€I~ŒUw‰Zo\o\i\qyT}lVwhX„bfƒZc|Y_‚`f„ikzfarf\xXdyQ[[`„Vdƒ_d†dc…_cubovgklnksserxfynjvm\vh_j[|nZ…kQ„jNeG“pP“oJcOŒjWaVšcPš`M—TK—YT›YQšSQ˜QS›]Kš[FœfO¤fM›[D¨bH§[>±N@¬P1´V7­J-¬V-±Q(½R,»R¸Q²Q$¶R!¹Y%¼U1·O1¹Q7¹X;¸^?®_5­i5´dC·kMµbM°gX©p]¯o_°oa·nb´jq¯iy¹hs³n{±cs®jmªrt¦yq£ru¦uˆŸrŠžmŠ›i{—wt–utxt ol•ni›skœgg™go¢nb¡oa i\¥bg¢Wa§[d©ae¨fh¥av±^w¯X‡¶V‡©X§ZŠ [€¨b€«k‹ fŠœhƒ¢v‚¦yƒ˜x„sg¤gl­vlœrq¨{t–pvnz–y~–nœv}p{–`q‘h}™o™wuŸuyœl˜m”˜h•h‘˜d™Ža†o‹šu–ŸsŽ™f{•jx‹qy‰ku‰lw‚itdl~anxdvƒcq~jstnwdikuxeyvjtfxybx†]}†ft‹]ugy‘fpu‚Œp‰“tŒŽq†p„ˆjŒŠo‰ˆpŒ‚d‰lŠ„f…„mf‡c”ˆh£}f¤’b ‹g¦‡q¥—f¥—w•r›ž|—›x§¨w ¢s˜›l™¤sŠ¬o‹§s’§q‰Ÿg‚ªoˆa‡¥`‰˜_‹—^Ž–Z‰‰eŠˆl‡€k{†ksg{w_€ma…xZ„iaom\xi\wjdofaw_qzcfqmio`jsifthajmWwc]rajyTgoOl\Wb_TbsLfaUaeUYaXYePUf\YnQXiWSqUZlPamTpm`qf]ueYrfLiuLltPvkVuwKntMz{Ev‚QzOk†Sj|To]wwO}oU{eV‚X`|aczZ\ck…acxa[wae€c[€\WxNXƒ__^p†dbed[j{hnstnzxl„gb|igig{dZ…cc‚kRŠbVgIƒoM•n]ŽlY†lO`RŠ[Z’\T–aVŸcX™_TVX ]M§]W¤_T—fJžhM™gIŸ\C«XD§N>«X:ªG,«C1¡R)©T,§R&°O(¹K+ºS%±G½O ¬M'­N2µM2ºN5½T@°R=¬b2¬ZB³^<»ZG½fM±aY­mU°]f®ed±ik­ge²pjÀohºesµ]u¶_|¹s~¤dr¡l€švx¡jŠ›gŠmv•j{˜nvœoy¢oo¤gr¦mk©mtž]r­gq¯b`¦b\±Th§]l³\m°Uq±Vg©Vk®Yy©S€¥Z‚¨Q®X‰¢^‰¤YŠ˜k†i‹›sže€›{†¢pŠhg°ll¦rq§vz¥ww§tw˜uq”uziqˆiqkw¡gv¡my¤k|¤v{¡zk‡œd—cfœ”j“•iˆ˜h•¢ro„“o‚n|†lwŒl€‰kƒzfvƒdr}hoouwl}|h‚sgt|ipyaqvZw}fy…l}}r‚|j|}f‚Ž\y^x‘or’{x™u~—n…Šx—†uq–e…‘h‡Œg‰’f””i˜Œc”Œjž‹i €d¤ˆhªŒe®‹c­Žm°›m¦™l›œr›˜uš¢u¡§f“©c‘¤kŽžt‹¤rŽžo‘¨i•§m‡ p†§j jŽšY‰c”ˆcŒd†dˆcˆ„g~}i…~_‚~UƒyWynbuibnj_hkYnmaxrkwosrtlnnqiermkbvi_nehplmlbnm^nePpnXioRgfQaeVaa\UkQXkZZd\Vf^VfTYmRejYew_srWkrU`kObkUmkSsgMzjPtwQ~wQz{MrQvv[ryZysMtnOu]T]]rZ`sbQzgV^a~V]ƒZ\ˆaf‚]^zO\yP\[_~`k‡\e‹Y]‚\Ztghyrdlcy^h‚`\„a]xqa|dW‰aV’jYgN“mP‰h[pOgNVQŽU[Š^MŽbO•^O›d_¢Z_¡`W¥VK¦XKžZHžaH¡^G¬]DªW=¡QFªQ@¡C2¤C.¢R*«Q(®V#µN,²K0°C&¹D ±@)®I6ºG1¹D=®@E´HCªV:ªX9¶O8²OE·RC¹^P¹^J´YO»dW·^k·_g·lb¿inºji¼luÀ^|µaƒ·f~±]u¤d{¦c„¦q† a€˜b}•bx•o{“iz™ls¥kk¨qi¥og«`o¥Tf°WfµOb®Ua¸Sbµ[l¶[xªQv®Rs Qq¨Uv¤Xt©azµ^ˆ®^„žV‚›h‰–j‹˜fŽ£dˆ¤q‰¡yqe«is¦oh°~r²rxªst™wy–w…vqœwpšvp™kv›sƒªi‡ n€¡}ˆn†e‘m˜g’œe^‰Žk’”gŒ¢m„›d“^zf‚Œp€kx}at€`vis~s}ym{prhrl}w_‚€\|z\xj‹l|ylx…hyŠ`zŽ\{™dz‘s†”j’v‡‰{˜‹oˆy…p~›iŽ•i‘]Ž_’˜d’‘_”…eŸƒp­Œd¦ˆb³‰a¥Œ`¦ a­¢q §pžšhŸ­g©k£j¦d‹œx•¢qˆŸi”¢f”©mŠ¨d‰š_‡–d‹SŠP„]Tƒƒf‚}X‡ƒ\|†`†€]€yS{yQwnWvg_bsUeoZjobjmfk{gwofizldhkshpmr_slcrhhvmpi`liTmjL^nO_eQc_TTdSY]Y`]^QlXOh[VgYbaUfpUacJsoVinH[ePneEelOmgH}gDreLrfXwrYwQl}R}z^rs]|vRvh^xkVu[PjaPyWW„T^ƒOaˆU]~T^ŒO`ŠR[‡Vc}ZhŒ\i…[b‰Na‚^hƒZqvZbx^hƒ^W‰j^~gXƒb`„i^€a]ŽkUn]gUŽlYm\_O›bT O\’RU—_[™^RiV™]Y¢iZ¢\K¦SC¥SN¥\P«eHªZH¥\H QP›JB¤FB R/¢L1¦V/´^"ªN%¬U(»J+µA/²K3°L<´L1·K@¾EG¸OC»T?®W<®J8²N>¶QG´UH²IU²R[²S[¿ah¾Zn·lcÁoaÃkfÂ]r·[ÁWyÂf…¶ct¦k‚®o}£fŠ£gz¥h„¨hƒj€¡qrœps¢gk oh®cl¹jn®ao­Zf²Qg³^p³_k¹^p°Wm¨Kv®I{©PwªVo¤_q§[u¬X} \„¥Sy¤f„•l…œb‰—_ƒ›h t‘ds¦mq©kq²ym­~o¥z}¦z…¨w‚ž}s©}t§~y¡ot¢h~›rˆ£n‡¬n£u‹¢j‰’a–‹]””\”Z“’]‘—h›h†Ž\‹]’bˆm‚“g}†bŠdt‚g}…qƒzh€tl‰zl‚uj…xb‚r]~{a†}_‰`‚‰dƒˆg^~—g†h|šo€g’’h—t””t”oˆ™u…¡n‹žfŸ[‹—^‡ˆ[’‰[ ~c ƒa¬‚i±^­—^©›_±œd¯¡i®¤]«ªhª«eŸ¬`¤¥d—žf’™j¤d’§k“¥\™¥\¥\”˜SŽšZ†•V‡‰MŠŠNƒ…S€[„‹N„R~ˆXƒ€Uz‚NwRorOjyRdpM`tM`yMi}XpxSk{^g{nlvponhqweqrmwtmrntn^qvZmkNcfS[_HWcNVdZ^^[[^\RgMTiTWfOXaPViRekUbkGlr¸RC±IG³M<§KD¬@D®=E³FM·HP¹Ja¾Pb½[e¾XjÇfoÑ\rÊ_jÉWrºRz¿Z~¿Z|¶`y®f|«b‚®g‡²dˆ³i}±_‡¤e€¢r€žmvml¥jn²fkµdnµak´Ov¿Tw¼]r¶Up¶^p¯]g­Vm®Qo£G{°H€¬Ux®S€°Q{¡]t ]|]‹›_‰”f€’`ƒœn†™r‹kq°cq²lk²pw¥npªvq­zsŸs{œo}©m¯wn dƒ§r¤rƒªnˆ¤q—kˆ¤l„Ÿ_Ž™aŠX“žT’cŒ“q¥b’œV‚˜`„›\z^}’jƒ“awƒZtjƒ}oˆ†^}uh€uiŒ†d€b|yW€Wx‡Q‚„b‘`ˆ‹az‹g‹‘^ƒš_‡hŒ¡d‡ mŽ•{‹™{ˆ”j…£iŠ§n› bŒ¡j‹‘e—c–ša ‘cœŒa¤”f¸l±’_ª•X·˜^¸¥]®¨`©¥aŸ¢_Ÿ°g¥Y¡­f”¤a–¨XŽ¢W’¨b„¬YŽžY‡ Y˜›]‘—_‰”[‡‡[ƒ‹Q‚„TˆŒR‡ŒRq‹ZsKoŒIjJomLlnUlvShrMgnYbu_j‚T^yYachygjjalm`mflsmkobll]qhVppXjlNgbPO]\VaVRcaLfU[sTWkRcgRVoXYeJanTecDafDlnMjiCmg@l^OgeTofYqeZkiXnbQsl]tkUniTrs[qkVxgXuXUvbR†]`ŒSd}V`uT[‚U`XqXmXq„U^‡\eŒUkUj‡Re‘Z\†\d…Xg~eTdF‡_S}YVˆWP‚R^ˆRb“X_”^_šbS‘\`—Y`¢`[šKcšYW£[R c\‹ZS•_VŸbJ§RG­OH®MI±ZF¤UB¶SJ®[F­GB­JM HB¬DC¸H5§H>¢O;§U1¶K4°O-¶N5¹@5¿H9¾IHÈJ=¼@C¾D=¹K=ÀB>½G<¸HD¯MA¹LG¯PQ®@[ÀPb¼]eºTfÏa`ÆXcÂ^k¹_rÇJpµY}¾S‚¸]v´Z{´g|´]Œ¹e€¼_~´[ˆ°lŒ°j…¢m} f}®Yz³[m±]x¹Xv´Mu­Vn²Ww¼Ws³Ws°Ss®Uy±UvM„ J…¸[‚¯S{¸O‚¥]w¬f}¤^Ž•^‡ Uƒ¡e~–hŽ«i“ju©fh±mtªf{¤lm©km©el¬m|¦s|¢uq«hy¢c‚ªi†¥eŠ«g“®m–¥jŽœh‡£`‡®U‘¨O“ŸW–gœ˜j—¤`Œª[ƒ¤dž]}Ÿ\‡—g‰‘`‚ŒZwb…ƒ_‚„W…y_„~[~ƒX|‡RƒŠ]z€W{…SŠ[~ŠY{”]}”b‰‰b‹Ž`’Y|c„£u„¢wŽ˜xŽ r“ j›¥a›¡fžžo›“p©˜l¦™p¤•b£—`¥”h­Že°˜`µ—T¹¢Y¶©b°¡e ¨d®Ÿb®¢d¢§U›ªO££X ¨Uš¢QŠ©_†¡`ˆ¢Y˜W‘“^‰ŒVŒU…ƒYƒ]ŠV‹•R†‰Kp„LpŽRp‡Qv…JoxQu~WjxSt|LoqSp}\_€Sg‡[_‚]Ypg^ohWpjajn_nmjco`[kdafkTifU^_VV[ZY\\Q\bZfVSmVVqV_jW^nUcgO`eTldJp`FbiSffIksFfoIk_Zn_biaXs]YtZ[ud[|mVkfKk^Qs`Tm\_tYW€\\€^Y…Pb„MfvJZuRa|Th„Hf„Mm‰Zg~YcxX`‚\iYcR\‡Xab]‡eT†_KWN‰^P‰U^ŠNZˆK]”XY˜]_—VZžWi \fŸM[£L`ŸX[¨ZT™dW–^SžWQ RSžLI¨IMªIQ¯IG°US°WP¯GI°FE£=EŸ>H­FAµA0«B2¥H8²U;±Q3ÀW@¿LA¼VC¼QI¼F;ÅA>Å=C»?B¸DF½>IÉJBÃGIÂAK¸GK·?]´F]»I\¼NiÈSlÆKaºMh¼YgÆZiÄQw¸L‚´Q}·VxÀX{®c«]ˆµ[†»W†À]†³c‡°b³ez®`u«W{®QªJv¦Jr®Co¬Gm«XxµX²Z~ºPx·Ry¯SužD¨Kz³T„½O¹J~³^ƒ­`† X‹›W•ŸR†ŸZ†¢]Œ¬b–et¨ev§_}¡\}©cxŸhj´ps¬nx£r{­s{³fy³c„¨\Œ¯g“¥d…¯k’ª`¯_°_“«U›¶O•¡U›­WŸ£k”œbŒœZ‡œc¨fŠ¤[~n†‹XŒŽa…”a…‰]’‹\…†i‹ƒbˆ„^~Z…ŠTŠŒ_}‰[…ŽQŠXˆ•e‹g„Žc˜c‚œaŽ eŽŸm r¢k‘¡jž›`—©ežžkšm› m«¢o¤‘iª•j­”f¡’n§›e±–c´Ÿe¬¢\´²Vª¦Q³§\¨ W©©P¨©R¦®Uª­R¥°OœL¥QžUšWŽŸ\”’SŠ–Uƒ‹W~ˆZŠ‰MZ…ŠN‚ŒSo’Sw’Sn‹ClŠPo€MdxYhtSpuR_~W_ƒf^‰W]‹be^_~mYqi^r_hwekitnhike^nbdbgn`]bcTacbV[XYk`^kcaeV\kSZ]_X`Y_]LggMmeIj_KjqRgoMbeIq_OjgWt\PnaXq^WtUYx[Uw[SocRpVOqPOsOSsZ\tZU}SY|T[†U[yISwP\TeuJlzFm|Gk‚SgyZg{a[\\„Zb‰Uai`…^TŠ]U‚`LŠOTƒU[ŽVb‹[X”S`–Q`¡JeªPb©Z_§I\®IX¢PVœYU¥RU˜QS§ZY£TO¬KF¨SU¨ES¶PI±WH¯QV¬KR²BC±DN¢C@©?;­J5©I7³A7©S8³O7ºJCÁK9¿K@ÃNGÃQD¹IB¸?F¶EBÆHR»;P¸GM½DBÇAB²AN¾AN¯K]¿CYÂE[ÌIkÑDf¼J`ÆOcÃUjÈUw½Wu¹Zm´NqÇSy´Q…²WŠ»[~¼a·\Ž¾\ˆ¿f…µ_}ÂWx¾Uu¹V{§Ss¥Lr¨>i·Iz¯Lv©Lx±T|°L|²Tp§Kt¦Ls°N¬MtºJt¸Q|«M†³[Ž¬aŽ›]”©aŽŸV‹¦^Š²Y–q«oz¨o{§by¤iu¥dp®d{·kw®czµl|¶]z½\³\‰§W¬V”¦XŠ®]Ž¦\–­R”µY™´V ¸Y¡¬`“¨Z•¥b†¥`‡¢Y¡b‡¡\‰˜cg–_i‹ƒb‰\…ˆa‰ƒc‰Y‚ŠTˆˆW‰‰XŽ€U†„O‡TˆŒb„…dˆˆf“i‹™`Žšg‰˜e‰¥r™ o Ÿa§Ÿg¬˜c¤¢c¡¢m¨§n©¢n¯™n«a«ži­šd© f¤ªc©«_¤¤W®«N¬¥KµTµŸS©¤M­¢O§¢W¦¤Q¥¦Q“žX‘aŽ£X™Y‹]†ŒT‡V‚ˆQ|ˆV}ŽP‚’Q[‚“Vy˜In”KkMt‘EpƒGd„Si}Tgz__~\V„_Y†Xb€_`bdkbmhyaeznaijeildaakdfmdf`ckg[eca[djWlg]nWa`We_Q^`YY]V[bYhiXffQddSdgJjhHjhOf]OlbMp[Mr`Ys\Xh\Zm[WpYXgP]fSPbRXkMWhJYkK^uQ_{PbTc‚R]{DZ|F^wKU{K]ƒTXMbƒZhƒW]ƒb_Š\ZeR‹eR…hLˆ`R‰[LNO‰TL‹QZŒS^W[—OW¤L_¨F_¯NV«Cd­Ia¦EcžK_¢VV£OR¥NU¯QJ¸SH¯KM®J[¸NW±UO³LN¶HMµLIµIF®EC¹D;´L8´L9±I5­JD­FBµH@¸SAÄK>ÃPIÇTN¾FM½?U½CSÉFQÃ=Gºh‰Hh}Lf…N^ƒRf^\Š\S‚d_~c[zc^†i]†\\zc\id`fbjYhc`_ejeg\Zc^`ZVbdW^jWTjcTka`bUfcM^aQa^[icRa\PciZ\gVe^BefBmbHs\UnYRmfVv`_u^Sj^VuZ^l_Vga^jVTjU\AUvI[mAcoKV‡Zf|LaˆS\zGb|KY‡Ni‰HiˆUkMa‡L[ŽUT†^P‹iZ‡cPˆZZ…`]}[Z[LWPŒ\SˆK\ŠWQˆ]]VbžP\¢GUªUUžQV¬DZŸOg˜Lb–LQ¡RI©TH§KQ²LH®JF©@U«JI­ET²ILºGJ°GF¬?L±C<«K?­B8¥Q;±E0´K>³K8·D;¿T?ÅENÁCQÈRRºLL¼MGÆHUÇ@KÂDBÊDB¸AE·F>¼DNÁ:F½FT¾IW¼<^ÅHbÅGX¾T\ÀQg¶MfºIj³Mo¸Rs¸Nt¹Yv¼\r·S€¨\y³Z®[€²Sƒ¼Y‡Æ]¾Lt¶X|¶Wp¸So¼Lj²Cs±=zÁLt°Ds¹Rz¸S·GuµVªS}¬NzªSu¯T³N…²L‚©S„£Y˜[ˆ§dˆª^’§g•¢i•oz«s~£oƒ§b|¦cŸou¢t¤kŸeƒ¡iy¨h¨a~§]„¯R‰°Lˆ§G­L§Y˜¦V›¯]Ž¦gœ©eŸ«oœ¥kž¯jš¨`•Ÿj”ši‚šg|¡YœS‚™^““]…“]‚•^…‘_‰g‰Že‰ƒ`‰S„•_‚—Z‚‡O‹N†˜P‚ŒSƒ‹_„ˆZ€‹[`šœe¡Ÿe˜`Ÿ›fžl¨œe¯Z®•_°œZ§žd¬§g¥ž`¨žh¬˜n¥Ÿh¨˜h©œ_¥§]²¢\«£_±¡T¢”U¢•QªQ¦•Z¢–Vž—N™ŸQ–—W—”U›–Y—“WžTˆa‰ŽX‹‹]Š[ƒ‘Uw‘[p†Ou‡Fs„Dy€>n~HiŠJ`ˆV^†QcŠMl†UiŒb[‚`f€`exb`}]Z}dZph_gbX_k]XedVX`daagYY^[NZeTQ[YL]mXYlWX_Tca\edS`cOkW[d^Vi`WgWQ]^J][BlZHlWLz_X~bbz]_qbZp[ThUTk`Pw]TvW_wVUFPsE^uB[xP^‚R\†SWˆJ^~SZ€Lc‚Ga‹KfVo‡QfZcŠRX„WUŠdTŠYVy]\xbTcTƒjR‚`TŠXRQOJ[ŠRXŒJ[ŸJX¡LZ•Xa˜ScžJcšGY˜L\O]•LO›OK¡CF¡DH§>J7L¢@J«HX¹MU²JGµ:@³C;§>D£F:ªH@ŸB8¢E8±D2±F7·O:¾FIÆLFÁBM½NR¼LI¹BIÂFLÈGOÄHDÂMM¾JI·PÈCXÃ=T¼JV¹GZ»J`±Q_ºGf±Jk¨En­Pv¶Pl´SoªTm­Y{®Ut­T}¬Ry²S}ÀV¿Y{ºMq³Qu¹Kq½LvµQn³In²G¸Bƒ¼F~ºM¬Nx­By´Qp­OsªHo¶Rv©Pu¥O¨MƒªZƒžX„›Y‰œT¤WŸT–©b•u‰±m‰¤k…¬`{«b¬msžb†£d„šp„¤f{¦]‚¦f{²V‚²V~±KŠ¬A‹ªN©^•¥Y¥Yš°e«c¨¬j›¢nŸ«k›­]‘ b•¥fŠb“_‡“g…šaˆŽe„ˆm‡•k~—\„…]‹’^Ž’\‚™Rƒ”R‹ŽQ|LŽMˆ˜L•O€’Sˆ]Š‰^—’i£Ÿi˜Ÿa¢šc¨¥]°¢d¬—b§—`´¥`±¦^¥¡Z ®hªd§—k¦št©“mž‘hª¡b±—`ª¡bµ¥X¤š^ž”c£—Qª–MŽK£‘M¤™W••X›™Z“Ÿ\’–V——X™™ZŠžiŠ‘Z‡…L„ŠH{‹L{’P„Sy€L€Gn|VvyWmzQb‚TZ~Nb‚JlˆNa`e|ahvS`yX\r\]v[Unlb_c\ejYV`Y]QZR_WSTPZRYS]NSeYXcdQZeQg`VagYflUlb[bUSc\_h_SiaG`WRiUTnULqXXpa[XTy\X~Q\t\W{^[va^nP[qT[~EW€NU‚?XI`zK`}G^|U^ŠTh„JYTkƒWaŽSj„HoŽFnŠKcMP]Z€cW[XaZX[€\Z~XS‚^a}P[„XYŒYR†P[™\UY[”MX“TcŸHd”Qj Q\’RP”MT‘TP•NIšML¨HJŸFGŸIH¡IN£=VµMR´=Hµ4R¨>G³7I¦:L¨>P ME¨DJ¨PF°R@»IL´KM´DQÂ@Q½AJ¶NUÄEBËFG¼HAÃPDÆKOÂLQ¸=QÇ@Jº:TÅJQÂHMÀT¼EYÁFV¿JYºR[³Hk®Dk¹Nj¶[t¬Ww­Ty¥Qz§_‚¯^~¨R…­T‚²N|·Kƒ½HzµL{¬H€²P†­[‹¶[„¸^~ÂR}ÄT}¼DÆF„¾DŒ¾Eˆ®;Š­<†°G{²At¯Lx´N„¬P€²Q|¯I¤X}¨WŸ^†¤g†¡dš¤ižcŠ±p«`ˆ«p|¬n¬nˆ¨b†žhŒž_’ž[„¦cŠ¬X†«R|¢[Š­Yƒ©M¥[‰ Q—”S”œQŽ«e› l•¬iŸ¥e›Ÿdš­g–¥dŠe„¢pyowšgƒV‚ay›f~–b‹a—h€Ž[†ž`’•[„ Y‚œXƒŽK€—]ŒŒR‡–Wz†Yƒ‡e„Ž`›XŸZ™‘U–žX¥§S©Ÿe¬ t¨ªb¬¢h¦[¥«b¤_¢©\§™h“h‘lŸ—i°V©”W´œTŸ]›šažš^¨™_ž›K›”Pš‰J””[ O››_œ k•g—b— b€¡`€‘T‡—T†’D{J~ŽPx|FƒNv„WqUm}`hxUf{`_Z\~Q`T]ƒV`|Ri{UfiR[fUedXUbQUbSTed[]b[^aLQQTQTJUOGK`OGd^Sc]S]ZU`iO]iTbfZ`gXhjLhWLrSEh^LcVVjTXaZTg_YrZXn`UxWTy[MrUSw\Xq]X|P_xEW{GS}TM€JL€HJ„GUS`„M`ŠTd’WkJ_ŒV`ŽChŒU^•U[’RSPPŒZVVY†cJyXH~YT}XO~]Z~P[€U]‰U^†__“dI•f]Šj_•_ZœRVšN\¢YY¡PR™MI›MM˜HS LT˜9M IE—BN§AN¨E±GS¹KP¼ES»QYºATÀAP¾HF¼PT½H[¶URºSWÃHbÂH\¹Pn°Hs­Hp¯Hj«JoªNu§Jw±S}°X† Mˆ¨S§Kˆ¯M‡¬O€¨C…®M}»M‡¯V‚¹Y¶L{Á[ÆI~¿EŽµH‡¿F•°Gˆ°?ŠºA†³K|¬Pˆ±Sx¨Zµ`ƒ¯Q‰¬R±W‹·f‰µh‹¬h’±`šœo£eš¢h˜£a‰­eˆ¬hŠªm–£r”§g•¦[¡WŽ¦\¨Z|¬]z¨O…«[ŒžV†œ[ŒŸT—”R¡Y•¢]• q l¥dŸ¨rš¤t‰¤q} izžd€žjx›h€¡\ƒ¡d~”\}‘Sy–Z„›d’g‹“`•Y ^šS~˜S€•U’S’[‡‹X}c‚‘]„‘X‘›Z™šQ’˜V–œ]¢¥k§n£¬qœ b¢˜_•]¥¢a¡§Xª¡^¤–` •d¤e¯›V®•V¯ŽV®\£–Z¥S¢˜JœO™’T T Ž\ XŸš]Ÿ˜l–eš™[’•m‹—m{š_€˜Z€”PzC|ˆ>{…Hy{Vo€Zqz[l~_cz^T|aV‰PV{P_zT\vT_zSbqSfg`[o]alY`nNb_Q]cYYWaPWaJ\SGUUHMcOIbOO_SU`XVb_YZZPYfVWdKihToeMv]St[Hh^HfXPb`Yg\[vW_tcUn^QndQpdSsdMvlYoc[tbO„OO‚HS‚NO†VL‹YR”\R‹MRˆV[ŒNc„IhŒM^DY‰HY—VP–RV‘WSW\„VX…aS}VQ†[K„bI…_S}]N‚US†]`‹^cX`‹[Q’eRe`W[–VZ¢QWŸU[¥LT›FKšAHHI›GO£9OšFCœFB DHªAQ©9T¤6G£7O¢8M¤GI¤HP™KKžJF–RJ›LK›KU¬PS´CM¼?Q¾F]¹C^¶@T»MW·BP²>T¯CN­IN­MN´LU´DV¾DN»KFÄKJÄHQ½SZºU_¹Md·Ki¼Na½Aj­Ds¬?k´IhµKn¦R¬PŽ¨KŸK†G¨N¤Gˆ B~§Iƒ²K{·J}¶C‡¹I‚ÅY‚ÇZ{ÃPzÇR€¿V·J“¸E½Cƒ¹Pˆ¶MŠ¸R‚³Q‚¯Y±d…¯b•¶W”Á]”»e‹ºjŽ¶f§^¤d™^“mœl–­i®d•«qž¨l› c”¤k’­b›¬Q†°]ŠªMˆ°LˆªQƒ£Z‡£YŠ\—‘U›ž_‰•a‡Ÿp„dŽ¢d£˜ge¡c„§jm‚›oy©b¢kx§e{˜b€“Z†Y„ŸX†•ca{¢`†šU†¢Lvš^‡’X“X•‹T“~bˆa…•Y‰ZŽ”NŽšX‹_ž¢Z™¡[š jŸ¤a¦¦g¥”i¦ž]£¡S ža°šZ¨’d¨‘]¡•b°a©’U¯‡^«“d¦ŽS¡•X©ŽX¢•S¤’ZœƒV¥ŒVž‹\™™_–‹m•j‰‘h•–n†”nv\}™dr˜NuˆGn‡Th‹WtXe\oˆVn~Y[~]Uƒi[„TYJb}X[€S_pNghKfcV_kb]aRhaVeXT[bRLZ]OPZE\Z@KWJNfPO`KMcQPbOVgPSiSV]]K[eQ]fMt`Fs_Vs[WjZUcaQmUSn^XwhPg^Pk^SsgOlbRwaOp_KsaZycSwdN„]R…QJ„_F‘[RŠMQ‡GN‘NY–GX’T[“R\’L[…UOWW™VX™^N–bQ‰^PkOƒfZ…WQ|YKzeZ†eU|bT‰b_…^]Š]`—ZK”]V–^T˜VV‰P[“PU¥V^£NK£IJ•ND˜BM¡GJ¡4G¨@@¡HE£AL¤8WŸ@Q›>R£¡E‚­E‰³S‡±T~½U‰½M†ÃU‹ÉO‚ÅX{ÅNƒÆOŠ°K½Q‚¼P€¸S…¶P‘ÁTŒ±d•·`‘²b‹ºfµg’Ã^—¼hµjšµh’±cœ±Z”]Ÿ™h¢n «pš©r—°h¡¯f—²p™§i”¡b˜¤Y”§S‹«[Š©W‘ K›¤N”˜P—V˜_‰–k‰p‚˜e†—r””q—™k•œb¡\Œ¨g|¦c„ c‚«^­iy gu£h~šc’a•]‰œV•_—Y‚£\|›U}•a†•\Œ‹R‰QŽ[ˆY‹‹^’ƒZ•Š[œŠY‘‘Y›S”™YŸ¨_«¦a¯©g©ž]©—]§–_°•]¬”U®V¤[´T²‹^¨„`¯Žf«Že«•a¨‘XªŽQ ’[ž‰^›~[£„a‰a¤‘aœ‰f“d‘‰e‰“_ŠŽg|ˆkz‡drŠ^w‚Ql…Zn‹baa^_iŽ`fcY’lT„gZ‡fT‡UY|MWrTTvNXySblZllVg\^b[]W[ZZ_VKX_NV[KTYQR^GOjFNeSQnOKeOMaNSiORhYH_[LkUSgZLqdRs\Vi^QjZVnSWrXXsgSkfNmgYucYogNniRjmStaRseUvjY~gV_QŠ`IUHIUJP’EQ–PT”X]“OZ‹Z]VR’VR•[T˜\TlQ‘nRjZ„]V]Q|_Qe[Š`b…jYŽa`…hb‘lV’aT]T“_VWMYOšTU™JS£IV¢DL¦FMžCH¥CDšT©6\«;g´>]¶9d²A^µGdº>c´CY¬CYµATµCP³?MºBKºHR¾MK½NQ»KS¯MR©SM©RX±KVµGb¬>a¬El£=g©Fl£Mm P}¥D}œI‰œF“G‚‘Ež@¬>Š«LŠ¯R€±L€½M¿S¿Y¾NŠ¿RÄN‰¶L·Jˆ¼VÁ[†»VÂ]‰ÂbŽºf˜±_•·f“³d¿j¼j™¾m˜µkœ¯d±b’¯a•b¡cš©mšªuš¯lš°n££wœ¦pªvŒ§`—Ÿe‘¨_Š¢[ˆ©P‘¤W˜˜C——[•”`£—Zoˆ’_Žk—™nžžq¤g•›b”§ežot›oƒ©r¢a{¨ds•lƒŸ`{a–b‚¦d‰¡Y¡_‚©Z‚¤Xˆ¦UwžX–W‚š^„ŽXŒ~_‰W‚“Vƒ’N˜—Y‘–P˜œ]™T’¥V¢œT¥¢d³œf²˜X¬“U¶žP§’T­‡X®T«N¢‘I¶V¯‚]´Žh©•]§R©–Y©‹U©ZŸ…b ‘d¨‚_§Z‘Œf’ˆ^ŒZ–f‚‹Y}_ƒ†ixdsUv†QqwT_„fWY^c^ƒeg``‡bPj`„aWˆYMu`]wV[mXapZ]i_\gZgUYbTTNSPU][IYQHOYTDaGOWGGZNJlQPbPVcSIdUJ_NSfNSbXOn_KkUQrdUsh[u]UgYVvRNnXV|[OpVS|aVx\_tXUq[Vm^WnaXvj[}jS‰[RƒfD†TT–HE“LI„MT•QO‰SL…ZR†ZR_UŽ`K’dKWL˜cY™cQŽganT’l]Œg\‹^S‰[]Š]d~h\{adŒqb[V„]O]T‹^]_]–^XXS•OUJQ“BLœKEšAF–=@’7N”6D—>D¢2W©?K¦DJ¨W1LŸ5P;UœCZŸEe˜Hb’=b¦IZª7T§9[¥K^´I\µ8i±D^­Ec³Bgº>^¹9S®EU¹GZ¯JP±CL·CS¾EYÃ>[¨BT«N]©E`©Nc²S^­HX©Q˜KJŸHO¨;U£3W™Z¤?b I\¤Cc¯EgµEm´Ge²F]¯9Y­Cb®@Zº=R¶KX¯>T¯@V¼?\·ŽªE“²S“¯Q‚«KŒ°K­JŒ­M‚­Oƒ»Q‚ÂLŽ¼W‘°VŽµY~³XŒ»]ˆ¸]”²U˜±[¢¹bœ³n˜³h¶p—¯p‘­f¤µe¥¶h ¦i¢«^ ®\X¨žU c¦©e˜µa“«l“¥m—v’ j’¥l•c•ž_•¨\•¬`‘ªO’¢Pž^¤¤\©™c¦™b™›_¢–f¢›p¡™kœ¢rŒ™oŽ¦k‚£i€ o|–vsžg|šebt›aƒ“g‡¥n„ j†žkŽžg‚¢^ˆ«_…žY}¢X†”aˆ‘_œcŒˆi€–f†\ˆSˆ•R‰¡TœQ•›H›«Q­¬XµŸT¯–W±Rª”T±“N¯‰L¯—P´…A²‚H¥ŠJ¯’U¬“Y«“S¯‹`­•a¯•Q¦ŠWªŒ`¢„b©[¥c•Œeˆ[Œ‚f—’[•„[”‚_“R}“]vˆVo‰Qf†X`„Zf†\Y‰hS€iU†[T\^„_P‡iS‡eS{l_uXVlaSk[de\VkbYVSQQTRMZXHPOP^PSULTK[@VZN^OJaO?jHJgPL`WObWHoKJlZDuMJj]Ujb`vaXo`NoXUkWSr\[v\Rn`_€QZsUSMV~YUy[ZwRZ|_P‚YR†NK‡`C„^A‚ZIHUŒFTŒQKŠKO†OAˆ_I|YL^N‡mR‘_JšbEŸbU–cQ”pW‘fXˆaP‘m[ˆ[ZS^‹^Y{gaƒg[’jXŠcQ~aRTa•V]SRYM”MJ‹VFSM‹J?KIJE“JG‘HMW˜7[›:S 6V•9YŸG`=ZC]C_IV”EU˜HbœLX¤Jb¥Ae¦>aªD^«<`µXŽ@O’EVš>[™CW“Cc˜C]Œ>_šAe˜FY‘MX˜Qa’J`œI\©Kg¦y­Fy¦B|¨H}§J~šL˜B‹•<‚›?ˆ J•­P‘²L·SŒ¹^’®Y“ªX‹®K„¶Mƒ¶P‰°R¨]Š«WŠ¥[…§g‡ªa“¯f•´Yª]¢«`¥¦fœ£bœžZ™c©fª¥e¥¢c ¯d¤­`™¬P”X¤¢Vž«V™ž[š­a˜¬kš¦b£«p§±s ­p— m‘¥]™¯dŸe¡©cž¢^ žXž£W›•P¡R¡«V©¦]£š\¢šlŸ–q™m’žfƒ¢h}œuyœjt“g~“i†•cƒ–hx¨n†©l~ªq„›rz£l‰œg”eƒ›e‹§gˆ¥h’ hŒ˜\€ŽW€–i£d‡šN”™[’˜Rš“U˜V¡žP­—HµœL±›RµL¼ˆX°šX¯O¸ŠK®…C·…E´ˆJ ˜W£S¥^­‹N¨‘S¤†R¦†]ª_©€d£W¡~h–€^‹‚h”…Z—d’Z€\’[‚…X{…bzŽ]o‡\bƒTdˆ_f…`Z‚pUzhN‡eO}cR]V]^zgWybci]]qd]f\fRaZT\]U]UTjTP`WL\QMbSMZQO_QGQM=_PAhQI_RDhNU`YNmNSbPLlMNq[ZlOMvTOl]Tg\QrfWf`TbeOiQR|YH~MGŠUK}MUyKNƒVN{SG‚NN‡YMX@RK|ZR‰XIPN“FO‰U@PE“^B‚d?lG€kF‡cA“tPvP˜fM–gW‹iQ‹eUZO”]]ŽWX‡aXUX†eW™ZIŠVWŠTY’UR˜W_†XLQSZB†T>…]K„^HŠW>UCŠYCOF‰KE>QŠEGJPŒHYšCW˜>OžF_”F_žFWž·H²ˆE®“NºV¹ŒO±…W²‡N­ˆP¦‰C¤N§‘S«“I£ŽO«‹T­S²‹S·„a®c |Z }Xœ€^a”‰c”„]ƒ”Xƒ–\v–\t†ZkŽah’esˆWm}[j~]_‚kQwtQqmKoeQ|eVz]W€c[zcWmb`c_febcZnd\ic^^`X^`UjTTdVCeMBgP?hRBgIDVOCaNFeRL_JJcOT\QV`PW]Y[iTUkVNnLLrNYlSVxZQvcZvdZgYRlWKzXKˆ\C‰RGDG…GJwHFzVLŠSI‰_E„\@‰X@~OI‚PM†LH•HBG=”RA‘a?‘f?‰]@†a>gD”oF–jM“iSŒbaŠe`‘^T‡WR“`Yd]•[`Œ`V‹dU—WFŠSE†WRQQ‘WU]V\QˆSANB‚Y9‘X>—WKYJTJPAˆ?Gˆ>I‰?M—EU‹GUGYGVŸLd–Q^–L`–E_—GfŒG_…8i•6o“=lk™Fo =o¨8n¥Ch¬>^¯;e±FZ¢I]©8]¢4c§?dŸ;hª?t©Hq°DtªAr§>i¦3m¤>nŸCo§CsFl›;w¡8v“9z•@‡”>ŽŸ@Ž©L”±SŽ¨L“¥UŽ¡S‡¡P‹©M‘¤H•¨O‘¤X‚¤T£PŽ›R…X‹ŸYš­[—ª_’§jŽ `Œžb•§f•ªo¢«b™a——d¤ŸX®¤T¬¤V ¯^˜´W™d™¨d¤©i˜¢h”šg« n«°q¡®r «n £q¡ªh¡°d¥ªh£ [¡¥U¥¤a«ŸO™I¤ U¦šP©¥X¢£bšœe—™[Œ‘kˆšn’¢fƒ’nx’i{špx–js›mr£r…¦t{•o£wy›hƒ›e„¦c„žb£dª]|¨`|¤b…ž`‘d†Œ_ˆ‘a’¦U”—Zœ‘S˜˜E–‹R›‡A£˜D£–M¦Ž=¬Œ<½„I´ƒH·@º‚B¸‡K¸I­~K´ƒB­Œ@¥ŠS±ŽC¦…I·†F°’Q±ŒQ®†]·ŒY¨‡Wž‡g‘‰X˜Š\”b”d’_‡‘`‚…g|ˆdl”Ul–_rƒWf|[l_hxd\tsUufTslZ~oX\_th[ke[ggUnjkflbbhjYpZQbfTfdYdTWpRVoZNh[ClNH^PI_MF^LQhKPiRQcSPgLQdVZmU[h\XlVGvVKjWUjHZwPXveSj[YnQJqTDoXCzQKŽKK~LK‰PKƒKS}\I…QH‡g@SB‡\:~^M†MKTFRGŠV?P9˜P@[FŽfHŽi=‡a@‰hK™oJ’i\˜`^Ža\…c[‡SM‡dY†hZ‡^Z’WXSKžRG“QGŒXH‘OKŒ]R‰RP€TAˆZFˆO;‡S?T@‰[AŽTO‰VO’KH‡FEŽFMPU‘IUTU‰P\”GXšK`—EeR_DqŸAl“Dn‘=s”@iŒIg‡KyAp—Ai£Ic˜Dv›Ju¨LtœEc >^©5h¢=`Kb«Ah @rŸCk˜:gžKy¥=l©7x£?r2m¦/m›1s™CeœEu=v§9t›9s¦:|•9Œž7«=‹§A±O‘£P”­VŽŸU’œU’¢M‡¦JžW†¡T¡R‚¦WŽŸ`Œ \‘°[²kŽ¬d•¬l†¥j›¤h§ež¤iŸªršœp‘¡g¢¥T¬¥[­¡a¢©[¨´N©m’¥`™ªj˜®cŸ£g¯¢b­¨c®©m¨°pœ°pœ¬s˜©d£­]«¡^®¡W±š[ª U°—S±šQ­S¨£N¥¥X¢ W—¥c‘˜c–œfŠ›^‰že|˜]vžau’pœrx›wvt€t{¨qx¡rzk†g~¢_‡¤d‡™a„›eŠ d˜g{Ÿi€•h‚˜_‘œ`˜žU’ŽYŒ„P“ˆH›ˆBF¬‹H¬…B¶‹<¼…7´€B¹†D²€D¼€L»}Gµ„?¨D©ŠF«J«~P¨‰D±ŽQ·…Q¯ŒY¬‰V²‡^ª€d¦†aŸ‚_“…aeŽ^Ž‡g€…_€auat‘Xj–dgˆ`hˆngnhxw_xn^rgSkoRur]vkXqiXpvSml__rcUq_`ga[ifYoZRu]WkbWlgIs[KkNFiRKaLIdKFiUEaNNfGNiNQrPQlSKuZKrVQjaGpZNjVWqNZwZVxUMvOJuYP{ORrNFxE@LFŠDD…GC‹JF†STŒaK]D„`=ˆWC‰RKXE…OJ‡WA”W>“O@”V=ZF„Z=‰j@‚pG‹iDŒbR“gT˜[V[Z’^]‰UVŽ^_c]XP—XOOV”WN•SPˆ^A‹U>„TD…TJŽO@ŠM=…QEW8‘X<^ISH‹JQŽNK”HM–PD‘[LUW•R[‘OY’Dc–E\Ÿ@h™Gg’8m•:t›5p?n‰@kˆEs’;j’cJc¦Dg£LhžBoAz›Ew©Ao§AxŸ@¤2~§7|1qŸ,p”4h“1g™:o˜Ao¢m˜7hœ2mBx C‚¨@‚³It±H{¢O{ªJ~°GžG’§AŸPŽ•V…I€ªY¦U‡ªUŒœd‡œZ«eˆ³h­`—§c­d¦h“k§l”ªdš®h“§a ªY®§Z¯©eª³Z¨¨P¬o¨ªož©mœ¤t¦›q«¬g©¯m¥¨y§°k­­d£¯b–ªp˜¯q™´n¡°iª§c·ªa¸¥\´¦]®«cž°k±d‘¤a… o…™a…•Y…^•edzŸf~•fz^{›mw™j|¡c‡¤jƒ¬k†¯Z†¬eŠµe’¯d¨j‡¤a~šd•^ƒ—]ˆd£j˜dœ“dž—]•ˆY‘‰N”†L¢ŒR¬‰Gª†T¦‹R°T±„G¶xM¶C·ŠM¿|M¸|L¯„G¨ŒC¨B¤†;~Cš€@—†I£…R£Už†S“„_—Žl—g‘ŒX„ˆZˆ“X’cƒf}‘Zq‹Tk•Za’bkŽ[l[b†lX~qf„qb~o^{^WvcUknZeg`jkVlsPdsRcnMYePNcYPgYNtUJsUOqWSr^QkOChI?_ICVQBgONpERtCDuIEyFKlONmLKyZXmYKhPMoIPoNYxWZyUU|QTpSYl]Zw[IzNGƒPBŒS@P?”QQ‡VYŒSP‚K>ƒS>…`7€]F‡bEŠj>„c=‘W>“[@QB‚QF…VT‹gR„cOcD‚gRˆ[OŠaU‰eL„mV€hV‰`NŽcT’l`ŠhZ’eUŽaP†]QŠ^TƒaP{XBx];€`EƒV:€S;{IG€MR€FVŠMJSHƒHH€DTˆIRLQ€F[SS„PZ‰Ng˜EbšF_˜IdžLa™BbšNe—Mr“FqGs“OožHižDn‘>~…kGZA‰Z?Ž]@Šb;^?{OO{RSƒfX€aS]FƒYI‚iJ…ZEzfHŠfRˆnL…fRfKŒgYŽp_ŽgXŠe]ˆb]Œ\U|^JZIeCfN‡aL„\FO=~LK„SH{PKVKZP…RS…AI‚IQ‚HQƒO[PT€UV‡Sf•P^•Rl›FdŒG^šPkSo—Mz‘Km™Rg•Hr”ApŽ:„’E„¡E}™Lx˜Ks˜Np¢LmJo•Io‰Ru…LpœNo›Kz—Epœ0u3|•<}§:„(‚¨'†¦'š0x=t‘:{šE¡4w¥5{¡5|©;ƒ¤{AA{@G>Nƒ@QsIXkKToSQoLPuPYmPOxVPnGIxM>w]B„\K„_G|RA}TCƒMJŒGF}QG„R9|\A‚^=ƒd@Šd=Š\G’kK…hC†`G‰YIXOzcQv`SxZUx]E…ZR„gK†kD}`SwkMydK„nW‹zT‡|M{XvN‹u`‚c`‚d]…sK„kP{kO„cVeQ‘`F|RL}VAp\K`K}]Mˆ[_|YS…SW‚NM~[R…NY‰T[‹Ne‰Wj‘ah’T`ˆ`^„Xh’Xh”ZtNkŽTlŽUzš?|›HwžIxš9Š‹D{›@z¢Hp‘En›Ut–Sl‹[u“YuR’I€‘Ep–Cw˜B}Ž5v“B˜?¤>€9…¥/€›7„8{›8‚“=‰–C‹¤6Œ¡7‡ž;‰œ8ƒ§9ƒ :~§=›BŽ§A—ªG‰¬LƒŸR‰¡Yƒ¢\‘«X¥a„¤`\†—bŠšX”¤X‘­Q™§]“«`¤\‡ªV•°]›«X•£_œ§^¤Ÿ\¸[§¦d¨n ¬d§©qª¤o§¥u ¬jª«r™žu˜¡w”¥mš°t¥«q¥¯j¬©j¥¤k·®a»·a«²f¬µb«°X›®eŸ²g–±e¨l‘›^Ž¦Zˆ¤`¨[…§]}¥S…›d†œdˆ™]ˆ™W‰œ]‹«ZŽ®Tˆ¨T“±]–¥[‘¤j‹¢h–£iž¥e˜¡W¡šTœ£V§Ÿ^¥ž[§¥UššU•‹R–O“M …Oœ„[§ŽX›€VžƒKœ‚Q¦P«zT¨{^¥‚Y­‰L¨I°@µD¨F©R›~Sš€DŒxP^™{\’ˆU]ˆŒh‚’kvŒg{do–hpŒh|ˆpzŽmk‹ni‰_a…[Ye_}b\ta`j]anb\xcgt\fm\k]S`e[U\[T\\SSbQWcUScLMlO9gG;nJ>gB:eDEhGFhK;qG;oI6yH2tA6zL2oG;yE;w=K9Tƒ=P„HWwKSvQWvORnQ]sQVvKKzJBN8}V<ƒWF…RF|QD{OD}NB†JH‹JH‚T;Š\F‡[D_<‰Y?„dKŠiKiKiD~^OŒ\R†WS\Q}aQyeN|kW|cO|bM€hO}dDƒdEuQ‰}^‚s\zwOtkL|kVyeRlV‡qW}xK}uO‰`V‹ZLˆ`P€]OrZKn_JpVNr^N|XWzXOzOQ~LX{QO{U]ˆJZ“X]Œ[e“`j\`‰de€^a~caYe’Ym–Xq•OuŸAv™HsœAš>{=‡’H‡œHw£IlšOo–[u‹Un’Zy–W}‘Mp™Lj–Dl•Iu?o’•£Aˆ£K‚¦Wˆ«TŽ©YŽ¢Z‘ŸTŒ¦T–œ_’Ÿ^–žV›¤S¢¯`œ´^˜­d‹§fŠªc”¨f•ž^”¤X§ªT¬žaµ›\¬gŸ­j­¤g¥¨k±°b©£c««o¡¥o—¬j¡£r ¬i«¤t¯¢m¥°e®¬a²¸]º®f¶¶g¯·c¦«ZŸ«^›¨n›«n”©n•£b‘¨N’±XŽ§S|¯]‰¤Nˆ¥^‚ž]…”a™U£Q«^š©S˜¬S‘¨`Ž²`­`›¢p” _™œb¤žZ§ U§ªXžŸ_¯–`§œW¢•\”ŠV¢‚_œ‚U¨’^œ‹bš‘\—Š_š~M¦†K¢zS°‡W¬~Q³†a¦‰]©W²O£’PžŒG Ž\›~TšzN”tPU‰‚Xƒ‚QŽ‹]“hˆ‘iŽ[{Š^zŠ_j•gk†qvŠuilh„ob\_Šgg}c]ud^o[nrcpqVoxWerangVfWOQaUIXZSMWMHUIV]MAiFEoDa?=^I9lJ=lD1i?1m>1n=4l?8~B?v;M„:K|@PzDMyNMzRN|FEzHHwMZvTM€DJ{RJZ:†LC‚JMzH?ˆRE‡R;ƒJ?„U7ŠTF‡Y?ˆZC‚]Ag?ŠjFƒaH‡lG~gBŒiCdI€fI„`NzjNƒbV~dHkQz^V~mNxpJwhOzqO‚YtqMzqRlHxmJrfU€gXznK…~N~sQpV}iV‰jW{]Gz]GzYRtPFpVGxYTzMXnNV€[TsRYzX`K]†QZŽOaˆNe‘Rd‹]b~VeŠ\bƒ]oˆVo“Rz›Um£PvŸE|’RtšC|œ>„9|™KzJkFl—Ir™Zl•Pxš^vžXw›NiœGw‘Hv•Bs˜@}¤B|¨;‹¡A„˜9‚?zŸA‡§0‰Ÿ7”ž-ˆ“0˜>ˆ˜:† 8’œ<žBŽšE†ž@‡¨6€£7‡ D‹¢C‡©M…žL‹§X‘˜[•UŸ]”¢S‘ W•¢[•¤WŸ§`–³cŸ§_™­_ª^—¯Xœ¨\˜§T–®VªŸ\¡žc¨h°±j®«n³³e«ª`´¨i®£p«¬w¤¦x«¤j¡¬už¯qª£qª§d­´e·²c³³[¥¬Y¦°a¦­\™©X˜§e«\®a®X†¸O‹´Yƒ­R„¦Uƒ®T¦Uˆ X‚UŽ˜Q JŸT–©S“ U™¦Z”¢_›©^¡g˜›b¢›`§˜c«–[¡¥]¨ \­žg¨¤b¢œd¥—XŸŽZ¥‘b£Žjœ†a‚Xž|W˜Xœ€S¢ƒJ­€M¬†X¬Œ[¯[¶•T­ŠR©’Q¤ŽSŸ“W—‹M—zJ‹zUƒ~RƒV„„W…Z„ˆ\‡]v„`veq“du‘cj‰opkp}qn}womg~pi}cazd^}VixYb€VlxNovTgfRdbOQVYLLVLPTOVXMKiCKiJDpP9iM;iI5dF<^=>d@/l?5nE7gMAkK;nB;rB8|=;=D|BH„9OˆEQƒDKOE†HIwJTtNOuIKvFE}JH~QB~QD„NHH?†J9{K9W3‡Y8X?ˆcAˆ]@ˆfM‹jN“aK‰gJlF‰k=‚n>‡fE„kFkO`X^PyjU|jMrdRseNvmNuwI‚Jy|WouLvvHptCtkN|rHziP~jU†rW~rZwMwxU{jMqhPrYOpQTsVNwNLtTKpVIs\V|V_yXWxM`ƒR^„W_OjƒIn‡RbRd‚M^ŠYgƒXm‹Ru’Vx‹Ur•MvJs“QxžR{™A|‘;y=o=g“Kl¡LjMl–Xu•Ym bi›\hŽLs’Mx™Fw™Izž>z¡5‚¬;ˆ©B}¯7‹¨;Œ£8˜™/“”9ž—1›˜:’7Ž—C‹š>–ŸH”ŸA“™Gˆ¡; HƒEœA–§I‘¢PŠžT’¥L—žT‘Ÿ_˜£X—¤ZŽŸ`–Ÿc¢¨bœ¶Zœ²]™¬^–³\’«Q¢W•«[œªUŸ¥_£ f¡`®·m©°h§°`¤ªh§ªl¥¬jŸ¢u©v£¦g¨¢m¨¦r¬¨l¬²k³²k«ª]°¼` ¸Z˜­Vš¶S’®bŒ«dŽ¨aŠ²]‹µPƒªT¢\ƒª_~¤O¤R|¨VŒŸX‚¦^‡£]’¯RŽ¬^‰¤T‘®\“œ\•­c•¬c™®\™šf ¥^Ÿ›]ª¦b£«c¡žf³¨c§—g£œd¡[žŒWªcœ“_¥ŒU£”R¥‰S¥]¥Z°ŽK¥‹S£ŒN°•_¹˜O³“O¨R«‰GŸ†X ‰L£ˆHš‚Q’tV‹wZ‚‰S‚~TŠ[}UƒX„‹cY~huŠpn–xf“sdˆch‡unsg|m_zdYr^[}[iuTjyOdvP^rXbi[X^X^QYLTbGQXNUh\PqHBnMvI/z<8uN:sEA„CFzADƒ@@‡1EŽ@IJ>‰IH„JH„CBvAKtEJm@4~S:vQX3gC…rIcFŒ_K‰nAŒ^DŒa={Z8€cI~iDƒmKƒbW{`IviOtfCzhSplB‚sKtM…†KtrHrvRvvIniXwoYtmN|xRzyNvTwmLtoNtlTodVvZNzZNv[Jy_XpVSzVKyaWrbQzW]wVcRgŠ]e€Id€Ln…Zq†Ka†P^…YrƒTpŠ]u„K{’Nr”J~“S|ŠH|’Ky˜E€’Gw?{ž?yKg˜Uq›Tu–YiŒUp‘Ql™Xh—Ow”KsJ•B}’E…–<†£A‰«HªA‹¡7’‘0‘%–’(Žž.—’7‹š8œ7ˆ™CŽ =”š;‰ 5‹>~›C¨>’¢@Œ¤E•œW”žS–O—¢[‘¨PŽ¦T™¢T’­X™©a•¥[§ŸUžªe—®c•º[™¤`®]–£`•§Xª V¡¦d¨]±Äd³Áj¬¾c¦¯m¢²o¨¦q¬Ÿ|¥©zž§t¥£|¦£{¦¥l©«b±®b¥´a¦³[¦ºe™·a—²X’²]—¶_Œ¬Vª^…¯W‡¯Vƒ Vž]‰£]… V‡™UŒ–Y…¤\”§W‘¬\†¤\ˆ¬Z‰žZŸb”°Y•±U¤¬R¡ [¦ž[ž ]œa¥ l¨ªe«¢j­›c¬–Z¢–[¢“Z ‘[¦S«‹S®”P¥Ž[£‡[­‡S¯ˆX´”Xª‘X¯‘[³•Q®”R¬‹W¥ˆLªQ ‹NŸˆH¡‚F’xVŽ{\Œ}V‚|_~ŒUyV}…TuŠ_~”]ƒˆ`zŒem‘pkjl‹df…cg‚oonlqr`arifu`crWVcTZdTYldcpa_aU]]cNfcP^bQ^iZVnMKxD@j<@mCDkO=jJ?qOAuH9K4yJ5w=;}>8}ME~KG{=F8F~5@…8B>8ŒC;‚76;;}E>A@x?7mH1rI4~JB{M?}LBƒP…hJ‹`LŠfQŒmLŠbO‡_C}X8wZ8|k@wdQylRsfF~^B}_Dy_J„tH€zE{{?€„D†uI}qOtnQpuQywNzj[w{Tv|N~{XzlSvtP|lL{qXufXqiWpaTm[PuXTwX\o_SmaexVe€Xg{]_y[[‚S\{S`xZs{Lm}Mm€Mr€WwTl‚Lo…LwLx‹LwCy–HzGz™D€™A|–8p™@pQuŽ\zŠZsŒ`t”Um—On—Ql˜Oy•E‚—Jƒ“P€˜G£M…£B†•6‘“9•’+’*”-‘—/-™0—š1Ž?‡’?œ@…•:zŸ:ž@~¬@ƒœE‰Iˆ›V“›S˜œI™ŸPˆ¦Gƒ J‹ªY‰©[’ ZŸS §X¥¡b¦«_š¯Wž¯a’¬fŽ¢^” Z£¬W ­d¨e§ºb®»k²²a«ºb³³q°²p·´y´¨t«¦z°®v«·{³¶m¦·[£®[§²X›¿`§¹dž²Y—±Sµb¸lŒ¦l±j„¥V‚¢V{U~¨\…§R¥P‰¥`€›Z’«bƒªb”°S† [Œ¢U‘§UŽšL‘¥^Ÿ¶[›®X¡¤V©¥T©¡X¯¥_©Zµ­a¶žY©¦\³¦c¢žZ¢–a¢‰Y –_¨”O±“Y­[ªRªƒW®ŒQ¥Ža§ŒX±’R²”^©’Q­ˆVžK£ˆK¥|R’‰H“€SzL†y[„‡^~‚Ztƒ]y‰Os…S}‚Uu•_~‹bwƒfvˆrnfkƒguynvqglmfhs[hdccbe`obhbWdf[iki`lcblbZc\b`_][fWTm[WjYOHK}N=qAN|L

    AqJEw@>ƒI:z@=yM5‚B:}DE}A?ŠBN‚5A‹6HŒ99‰63>0‰<5}57??€<8qE/r9*tA-t?<{?AJD}?:lF+sM+~`-}W+€_4X-…d=„Z3‚l:‚gJ…eN`H}hEwgJvS>t]8~aC|eDtmKwlFx^H}`BndD€nK„w;ƒuFw…Dƒz=„|AlGvn[{o\{oV{x[p€Or~SzsJpjO|lWu^Tw]Zn^VuVRp_O|eSj^\hYWv]as`]|Y_t]_vY[nV^yKmuR|tYm|Uhs\oˆWz†Yv…Vy‡Mu“U†šSvIpJs™Ju‘:s•E‚‘>xŸ>y‘J}‹[s–`u•d{–Uj—Lq–Ns“PtŒK„˜FCv˜EˆŸHŒ§?C0›”-‘‘(•—+™‰'‡3•‹.ˆ‰8†ŽG’›<Š™C›8‰ž:§A©?~ŸAˆ¡PƒŸS‘¨I˜›N–¡P’¦R‘¬Q…­O„¨U…©SšœTš¢Tš¡_ª§U¡§Z¢¬_’¨l”¤i–¦f› f¨¨b¦r¶Âk¯Äa·¹h³¶r·²nº·pµ·‚¶±«·{«¹u¤»w®»p¨¸e£¿aŸ¼]ŸÂ\œÈS¢½R£»Z›¯e”¬hŠ°e„£mƒ¡\‡¢[}¢]{ŸVˆœ\†§R‚¥X©]¨^•¦]‰ª^ªSœU””M˜šH˜žS©X§œO¡[ž£Y¨¤R¬¤U¶¦Z¸¡\´¨b¨®d¨¤Z¦¢ZžŽ]¤‡b§Šb²Y­™a«šW¨‰T³‘V³‰\§ƒ^¦Ž]¯ŒVª”R‹T¡Wž†Vž€XšuI“yK˜†P„P€\}†[t[z†av~Uo†OtXxŠfw‡fxƒkp„gqlpj|v`sjbtfWwh\kck^dk]bpaahhjiimcdjedfdffcldkeYnmJjcL{UCzSG†TOHKzFŒH=‘@;A6’<0Œ@6Š?6„62v9=~8:w:1r>7n>3xB8x:5pE2qD*tL,~U+wS'zO'\1„^7€b<g9‰ZD…]L…gJ€eKxaLx^;zeJyeHnp>rjCvf;qkDwpErnJr~>}|AwF|{BƒxJ}vBvQzrW„qZ|tNƒMzUm~HltLkhSphPqaVj\Lp_SuYV~UUva]sabrZcr`]qf_te`idad_`ePfdXonPwv[wnZp\z‚]x~dyˆa~‡e~‘Wƒ›UƒSr•Lz–Es•Au“=Œ@ƒ•H…™O€Ž[w’V{‘]r†Yr…Qm‡IqŠGz‘DuŠIw”Jƒ™F€“I…›B8‘2—)ž…'—„3šŒ-Ž)’Š.†‡5ƒ>ŒF–™B¡A”£:’›A†œ8„˜?¢J‹«V“©PŽŸL” I§L„§H†¯E†¦GˆªVŽœTš–P¡Y¤šZš§d–¨]—¥f”¢h™¨p›©p¢¬pžtµÅp¿Âj¼Çr´¶t»ºe¸»r¶¸|½|¶¹z«»°·{­Åe§Àiž»gŸÆi¿[ž½U¡¶Z‘°e“«^Š³f¬jŒ¨pˆ­e‰¨d‚˜Zˆœf†•]~¦]£\‹©a‰­e‹®^“«V‘ŸN™©J¡R—¡Jš©X˜¨W¤«]˜¡M¨¥`¤¢Y¤¨Qµ¥T±¤_¯žX«Ÿ`¨žX®h¡–g¤—h±”d¶—\´U±”P°P©ŽJ¬N©‘O®…X¤S¯‹Oª’W¡‚_¢‚]¢…O¡‡T›}U‰Š[„ˆaƒ…gwvbubs‡U{\qˆS|‹Oz~Sv„W‚bpslvƒeixkmf[wieocgqjdrdk\WiWUkd^Y_khg^ggahZbh^eqafrebsiRxcOq^KsWLtWGKFtCEyBNy7E}3E„6LA‚A;77‘;6“71…8}77s@07.rA-}B-{A5…C9‚<&x9*tF!‡M)ƒT zO'tZ-~V5…XA…XEˆcJ‡b=dI}gC€cA€l?{eD{gwpCzc7p]HvfJzgP{nDtjHqs>m}>rzH}wHxLywMvqJ~yX}U~Hv‚Lj~FnsHkwOgwTfrWdjIkgNhjZicZmhYf`Yb^Rf]]`jj]kga\ncip\qehcqdVkjZwnOsuNwnMu{aovcx|[~„_‡…]…ŠXƒ‡N…J†ŽJu‚@tŒIo…Dw€Gw€?„‚Fˆ‘K}T~as‡SwŒS„…WŽPŠƒJ’‡JŽˆTˆ‰Vƒ‹Q‰@–Œ?“•7›Ž/“’3Œ(–‰,‹•:Š–A‘FŽŽ<Œ™C‡œI§D¢8ž©=”¤<–¦@— L†¥NªKŽ§K‹™J£Q…¨G‚¦SŠ¦PŸK• SšXQ¢™T•£^–˜`—b—Ÿg¨o”°y®qtÊÄ¿ÂvÄÂo½Ïl½½v¾ÇvºÆp¼¿z½Á{ÀÁ}®Æm³Ìq¤Êm¨Ìc˜Ãcž¼rŸÂv—Äjž½cˆ³l´j‡®c‚¥b„¡l‹¡`Š¨h†˜o‡¡g’—k‡˜j‘¡^ˆ±V‚¦Tˆ¥S“›`œ¦R‘£Y–§S‘®\›©U—±dœª_¤bª°Uª©e«©Y¬«\®Ÿ`²›Z©˜W³ ]³œY¶’a²•T³’U±–H»šW»šK±P¥ŒU°‘S¬—N¯V«T¡…`œ‚X‰]¦€R”‰`‰€d|\—€^„„\ƒyVƒy`wx\xxV|sbt~S~wZ{uYmxctxbopendet]cqfjydcgbgkSjo^hhY^fbUacX^`T[^l\cl\gzZbz`e„e_}^U|_\€LX€ONuKF€PR{:V€9N„9E‚A?„>?}@A€83~5.|73Œ*-‹*-7*Ž,:ˆ47Š/.Ž25;=Š:*†85ŒB/„6*ˆ?1…59}068/v4,w@+zA€J/|H/vI#‚P2ƒ[:tZ>YB|S<‡g>‚^Bƒd:vm5sk@xp7tp6qlEyj@ql@‚j?wo:qvAy}@{|@r„@psNnwPwoTtNn€QoxPrƒKgqGl{E]}V[lW[v\kmRcpZki[jkTclZacU\_Xahg\hd\lhj[tipw\li\aha^fm_nkWomWxo[uxY|T|t\…‚Q‹_~b|‘RzˆO‡ˆJ|†Ay€@w€Jt„=wwD~ƒI‹J|‰[yŒTyƒK‰K‹…J‘€LŠˆJ…”VˆL’XŽ†R”ŽF¡…@’˜?Ÿ—8¢;”“?Ž3˜ˆC™“@‹—@’L›P’G’—H ¦:—¢9˜©>”©Mˆ¥EŒ¢W†¤XˆŸFŠšCŠ¨?‚©H”¨S‘ U›©Y©N”šV£“V—Oœ[¤•\–™^—¡f¦q›o™¢tsȼzƽ}ÃÆxÂËpÊÅtÂÀp»Åx¿ÅxÅǼÄrÁÑu·Îw©Óz¤Ñq›ÍkžÇw¤ÉxŸÁ|šÄr¼k”­qŒªn‰¤aŒ©m’«g—©f™¨i‘Ÿm…™m…Ÿe‹œ]ŠªW†œS…ŸO’žX•ž^›–]žb¦Y«_¯e›§e™°_§®i«²b°©Z¯¥^­ž`¦¡\ªŸ\´š\¹’R´Y¶™P¯”O´žS¼L³Y³“[®‘V«X°”M²†P®‰P«Zœ‚W¤ƒSž†W wa‘yj˜ze”}^ŽzVŒ{Pƒ}[ƒtR{rW|r_vq^tudqxaet`cubiibnhgp]lj[lo^ja[_d\`ic`keSbdW_[b^_[a[^dYrV^pZ[v[btaa€_`a`|UW~\YxQK|IV?Sƒ:Jw9Lw=€=8}=,u<4}2/ˆ22‹0113Ž4)‘4/‰.&“5(71”2+‡=%†<"ƒ:*…+2z-2‚,,3,80x9$u9/zD(F)…F*ˆE.|N5‚N3|R9~b@ˆc9†g6‚a:ze:zp1wi1}sAu?wwB~tA{v@z€?|y?€wEFw„HqxEw‚Iv~NuzKlƒMdxEhvA`€EdyIfoK[pY`wUesWZpW`qVZfTcdUa`\ZkaUq\alajimbdsj`}blzcdnn^ppb|i\vrb„pbƒtc‰{V}R‡yR…ˆQ‰‰]’T„K~ŠUw‚N{IwˆCw~HuJs‚Km…TuZ}}R„{N†|I‰|P‰ƒOŽ’K‹QŠˆZŽŠR•‰S“„SœƒG¢G“OGŒ@œŠ=—„K–M–’H‘K’G™R•U¤žFš§Bš¢BŒœQ—¥O’™WŽœT‘›JŸH„£L‰ D”šJŽ T•¡U”£Rœ–Pœ’P›”O¤Œ_¢œ]—›hœe£aŸœ^¤£j—}ÁÍ{ÁÎy¾ÏxÈÂyƽuÃÄzÇÂmÉË{¿Êp¿ÈwÃÄnµÆx¶×s±ËhŸÌi­Ép­Ët¦ÊsšÅj›Ám“·h—ºd—¶gŽ·h—µf’®eŽ¥m“©e¤g†®mŒ«mŒ£e‚ _‹¥[Ž¥b˜™[’ Xˆ•c‡œX˜¤_š¡`’Ÿa¥§a¨£U°ªT­›V°š\§¨W£¤Y§š[º›^²žW½•a²¢U³•U¼“M¹•Z¸^¸’]¸‡c°—Y­‹S¯ŒG¨‘\¨‰Z›‡\©yX®X•{[ŠwhŠ{gš`”u_ƒx\Œwco\~lVzmWzv_wtYdm]jp\ht[^d\k_aigjoVusammdiu\ji[Xo^[p^^nOakUUfKjYOzXUw[YuV^|`drb[q`Ur`QrVWsPVyBMx@TsJKrB=xBAyDAƒ;2z;->14>‰4:‡75…9#‹7)†>#Œ94Ž1+‘B*?*ƒ9+€9"Š71…69y5;€+9=,sC5B's=.xD!}O.|G$zT.{R>~N5y[>†Z.†f<Že>~_-‚g4„s3€y9rs"ƒ44ŒB+ŒD/<3…7)…;3‹?3Š=8{35y27‚99€E6vC*zE!sHvJ vN&xT1yT;|]=„[2€U+…Z3ƒZ3‡j0p5n6tq@ws>v|Dpu?soDmkFvj8zh8€n9ufHmr@op;ksK_kL[vL]{NexN]rEb{HYyH[}J[|QcrVhvRdoMaxTkr[gjTbiVYcYUlfUjiYmp\`gQafUcvbjwddobSmdRviWxt\zq[v{_€{Y†~[ƒzP…vKvsIwUu‚P€|R€G…|I}|J{zMy€LyvQ„xR~qcvtc„…R…X…{M…ƒG‚P’ˆX˜‰NŠN}LŸˆAŸƒCŸ†?˜ƒG–€=“~=x;–~;˜zDŠƒIŠ~<‹†>’H”’D¡‘P˜ŸQ“šT¤J–O™•V™NS›[ˆ–T‰žP™Zˆ¦P”¡H–¤I•šP ›Q¤X—£Z”•`šZ™Z—©jœ§mv½ÊuÈÁxÇʆÅȅËÐ|ÄÏmпuËÈkÂÊvÇÆh¹ÅqµÆo²Íg²Ôi¥Îr³Êm¨Óf«Ìf¤»f›¸u¡Ål–¹u•µv¥·u¤®q£°q–±i›·mš¬bŠ´s‡ªlªwªqˆ£jˆ§mˆ£_Ž™`‹œa‘›]•Ÿfš™Z¡‘fšši¦¢_­ W¯™f¯¦a²X¶˜\¸–X¾’d®^»™^ª”R°–ZØT²Vº’g²\·…b¸€Y³T³J£{V |Z¡sV«zT²zX¡ue“rY˜wTwe…om{dgŽqfiZ‚gczndulOok[ql[maZf^big[`fdhc`gai|\jkcptSmqT_g^\rVaeTd`IYeIaYQwfFhdKng_uYPhVMn`ThZJhSUjSSlKEsXIrICqE*‡I*‡G)Š>+ƒC3‰9!ƒD+ƒ=1}E4‚7.w;6Š@=‚42u>2yD#oMvR/vO5ƒP-{\CzT8z`AyY6zXAzh/…k8xq3€rB{n=rz>px=i{Gqr;rv@tbCpg;yhLnlAmm:kg9on?jhA[t?U|FduH[zR^|FcqE\{UTtPXySgvTg}W^tXpm^aqVkk\^\Zde_Sad^`ldSgQZqZ`|aVufZwa`re\sgb€u]xwc|px\}p\~pYtrH‚vGulUsvW„tM€rRoH|tP„zH…|Qƒ|XŒlSvvinz[yƒS‚‚W€{Z~HŽ~R†L‹‰R‡ˆL€F›v@”}D˜{@¢wD™‡A=ˆ}<”yBƒJ•„C•u8•‚3•D˜Œ8šœ@”IšU‘¤T˜¡SˆšV…’N…‘L~NƒX‡˜N~—_“S• Kž O £T©¥O  ^šŸUœ—b£^Œš[œk“§a …ÃÈzÈÄ|ÑĆÍÏyÖÙqÑÒtÚÆqÑÆmÇËxÁÆyµÂqºÅp¹Çu­Êg°Ôe®Óo±Óh­Ðq¥Ái¨¼m­¸s£ÂpœÇx¤»u¥¹z¦³v˜³m™¶b—®f˜´sµo’®j‹ŸvŽœn“Ÿm‡žk…¤b‰˜]‘ e“šhŽ™n™Œe¡‡f§“d¢gªša¨–[´ f¿ž_ºX³‘^µ•W¶ŒV±^®Y¸‘]Á“X½ŠX„aµ~^²{W¬X²S«|M¨rX¬q[µwT¯sU§uc•sX›j^jbˆbf…_j„ah…i\†^_~d^uiSgfWh`Mh\QhbWh^_c`_iYfxdiv_doXilTrsQilR`oMafP^^KcYKpdLoeIimSmdTf^QoZJr^AqdIcYBf]Ki[AnZ>~M<|N9sD0zI4{L;ƒ=:‡:4zE=zE>|N/…D$€K)vF"zN#zF1~D1ŠK'ŠD&€D.‚D0ƒG.€;4x@094wB7}>+‚K1vQ)tS2vZ2†T9‰[:}U@{\?ydB{bA}l<|o6yr9}i>vsAmoDpsAoz=}w9|sAtpHufDmc>skHrqIpf—€DuD’tEy7š?¦‹<¢“E™˜N•”Yˆ–RŒžQ‡•Zƒ’]„ˆU€ŽX‡–J•F†”S…N“™V›šR—¤M£¯UŸ©\¢£S•›Y’˜\Š cžZ˜ž`¢„ÏՀÎՅÍ×{ÌÔqÓÔrÈËvÊÏzÑÇiÃÉm·Ív·ÉpÃÂ}¿Êw´Ôm³Ùb­ÝkªÍ`ªÔm Îq¢Íw­º{¡¿w®Ç}¥Ã…¦¿w™­u“®i˜½h’¿o˜¹hŽ¹l˜«sªoˆšsŒ˜y‚˜fŠ•jŽ[Œ\›šdš”h™˜_¦˜jªn¤˜o¥Ÿc¥šb«œe°˜hº¡f­’q¬—f®l°‡Y¶’^ª”_¶•fµŒ]·}kµ€`­†X±„Yµ…W«uP«pV¯uM®hV¥zYªvb r_šeYc^‘dl‡h^ŒfdŠndxp\bcjj[k__lYVcdbhaThZXlZZpbde`mkUom__tNcuZcsOkiNgeZb]DjbCc_DjcKu[JqjMrfGlkCf`OgeOpcEj]QmXzP:N>zO7sF.pM1}H;yF5vRBtQ6V4„O1‚L)~T+}G!€Q2|C9yA6|N,‚D4‡;,ŒA-ŽG4~B:x3-t4+s3.‚J$P.€V3€^'„T5Ša3|g6€Z;wm?t`>wgAqg1ƒkBuqGlxKekNiwAp7pzGt{;pgCllGshEddEon9sb0lk1jy:XsFO|QRtST€L`lUijPcyJZoZfyTex_jve[l\`hUseXjlUddUf]`iVcgSi`]gcUhg[yaau`[nSso`|t^€uh{zfzplknnrnZ|hWvwGymRxqPƒvN{}K„kG~qLyMŠ|P|Y’‚Z}uV|rXvƒU…ƒQ†…a‰]‡YL’†M•F’€P‰P–qI“€AvJš{Jw6w-Št<Žq>—yHœq=œr<‘„@‘~7—|;‡F”‰L—”UŽ“ZŠ‘OŠ_‡…X„…Wy’UšTŒ’\~’Syš[‹[”™L£ŸT— SšªV¡ªV›¢RœYš©[‹¢\ ¢i©…ÇՇÊ×}ÉÐ}ÑҀÔÇsÍÈl×ÊqÑÃoÏÑn¾ÍÁÎ~ÂÂpµÐq²Îq®Õ`¯Ý\¨Ùh¥ÕmªËw£Ïq­Ìv©¿~±Ç¨ÂŠ˜·„–±z ¾uš¼m—Âs’·{•±u‘¬kžoŽ¡l„ªt‹£l“•b˜‘\^œiš™g˜k——a¥˜f¡—j§šg£m©–a«™c·”rµ—r±Šy»pµ…l¯d«’g´•c®‹`´€l½wfµ{Pº‚JÀ~I¼{G¯mS²kS°nQ¬tW¬sU¤nZ‘bYg[‰rhwe…e‡we|bdx^fm[`_eek^cn\fj``gfff[be[kjaid\\tR`rXZjU_oXZcYc\S_cAca>pbKmYSeaNk`GrhHnmGkjOabI_SRkTIyTDwU;qJDuB=yO2nK*uH.kN:jNHqPFkQ1tU-tU.€J/vM0{N-€Q2ƒL6‡H2zH7zJ2‚”s2Œp1n;•kDŸhG›r;‘@‘x@–w;~E’€OŒˆU„‹aƒ‹`‰}S‹[~ŠY|”[z^…–YyŽ_~—ZˆžU™¨V£«L›¢Uš¡\–¦^’¨P˜°Q™¦V¥Vš›b¥‰É݇ÈށÆցÑÑyÕÈzÑÊtËÌpÉÃyÀÁsÀ͂½¿}»ÄmºÃl©Ëb«Ïj¢Ún±Ðl®Þw¨ÎwÊ|¥Óz¦Á}¨Ã¬Ãƒ ¿€›®…•¶³v“¯qŠ©€‡Ÿs„«oƒœl•˜h¤s…•eŽŸaŸb¢šW •fœžiª™d®šY¨Œh¦œm©Œl£’l©Žm¨’b±“q­ƒx¬Šq±u´Œn·€c´Žg¦†c±€aºƒc¹‚[»y[Ã}TµsN¾xS¸wQ°uU¯|Q¯qN±tZ tX•gW–if™rb˜{`‚}f‰tc|qfhehehglZej^gc^nn_ok`nahja[afZcbWrfZe\[e]^`^`^ShYU\`KdfI_hHeiYqiKfhHi\DkgN_^>`aFaZ;q]@eWFtT?wK8lC5wL)qA/sG+zL2tM5wKJnO=vP7wZ7‡U8{L3zV9~G+€O+‹L+L2…D-‹::‚72ŠI1xB+x:7=)z3.=&€D)…E-„U+~_;`0}f?ƒfEˆq?ƒe7}rCkB€p>xnMth>hl>tzGfnDck;heEjl9fe=kj@bd5Z`>jd5^o9]h;anNSyKRyFZsL[mN[uLbjXNiZbr_jybjnXXhUcbdm`bahg\U]ie[gVjback^fp_rp\{_^sXhzbYufPwpc}yevv_r}fym`qnayx]€qWzrW‚eO’lY†vLŠjPyR‘tU†ƒ_Ž‰dˆ{`~ycˆe}†UˆV|’^…Ža…ŽU”…R™N“‚DŠ‚BŽwL†q?†p=ƒxG…€;Žl4‘r,‰n2‘g>›r=iMœrO“}Lw?˜rDš{>’mTŒqP‡yeˆƒV~y[„‡\‰€Z€ŠX†Yƒe„Yˆ–S•–[—˜S—ªQ“«NœœW”¡^”¯Z”¬Zš§S™¥c”œ]¢‡×܇ÏԁÐ׃Ë܂ÃÍyÉÊyÍÄzÑƅÊÄ~ÄÆuËÌ|ÀÈq°ÈjªÓq¤Õm¦Öo¦Øh«Ûi¥ßsžÔƒžÏŸÇžÄƒ¤Á†©¹†œ»€“Á‚·ƒ˜­{’£‚Š–zƒšm€i”aˆ“h˜a™b˜‘Xœ_Ÿš`œ”cª—^µ[®‘Y²•_«Žg©•p§’m«rª€r±Šx·ƒq·|s´…q±}p¯‚v°|r±ƒk¹e³d³~U¼vX»nP¹qS³}Q¸wK¼tS±wa«v_©w[¡pb“pZœl`“ra‰xjƒrk…k_}nbzcagadhagelbokbrf]robii[mkXfk\`f^imako[`d_Zffe^chUahFbbGjjNplJiaIgZMcZJ`hK`g@`_:iU5nN7lJ;rD4lB+iC1iD0xR6wS0uP:yU<[2}Y4xM4‚N=~S;€T;ŽQ;K/”G/I+’D9‡;7}G:}A7xB2ƒ<,†8.='„@1‡H3J>ŠX7‰\;}e;‚j:ƒk@e5~l7ti3zj;ycIukGue>npBruAlp?sb:l^@hW7d_9]]:bd;fd=_d;d_AY`GcmN]mJcnF`vBcwQ\lO`m[TrbVve^rbfl^feamgkicnjXjj^hi_jmdfxjru`ln\mmWvbZq`^nd\}fX{dR…rZ€qlwwpz|kwqdwwa{qW…qX†gZ‹dO„mOŒtQ‰sZ’xW’†c‡Šd†aƒ‡]zˆ_‚‡aƒ’_Š–_ˆ‰W†ˆRŒP”•F’ˆ<‘ˆ9Žy>Œ{J’vD‡u9Œu5ˆk1ˆl7•k>”i>’cDšlDžoE“oM—tAœsEšhL—iJŽoP‹s\xVwX„~Rƒ~[‰w_ˆ}cŒ€W’‹W‰ŠW‹SšŸX—¡R—¥Yž ^˜¤\¯V’¦_¤[–¢^ª_—ŠÛâÙΉÐÏ|ÓÜ{ÎÌpÊÌzÆÑsÎЂÊÄvÏÍ|ÏȅËÓv»Ös´Øx³ÜnªÛt®Ôl¯×y£Ú}šÏ„ªÓ‚žÁž¿‚§¿„•¸“”º‡šª—¬€‘¯Š‹¤¨†›rˆ nŒx•i‹”j•Œq˜…d ›li¤—b©šk¬l®Žh¦Œb ƒl¡‰w®“t²u¯ƒm¯ˆo­ˆpª}o©{q¶|o´€s­q¨um®pl­qd´|c¹|X¯v[®nO»sU°}S»rV¸|c¦yb¥yf—sdŒoi–od—ej‚pfƒkd„d`~ekochnfadc\kmbge[sfgpiad`\igW`dbfnW^pUjf_bddbciiS]gJ`nDadNclJ]_OddN\YBX`BZ_JanH`^>kWFbZCpF8mD2uR;f?6fK+jP)~K8qO3vP9zK0‚X,zR3ƒU7†I?L.ƒO%L(B2ŒI/Š=/;447}39ŠD/Š9(ƒ@ yJ%|P$ƒL3‰O5X(ˆV*„`9u[?~_9ƒd1ƒu.{p=zl?wp@moHloEoe9uj;snImt6_d5fh4]h5ca5[`6\_1a`9YlBVe?ZcOSsEbjM^vC]pHakYckQ[h^[kWloWorXkg_chggeflineffrZjcdieimz[rm_nk]~qU{sYurUti]xqcnW|mexvmyoet~^smi…he‰o_‹jYŒm\ŠtQ†lR†i]“xW…‰f‡…V}vdŠ}W‚Ža„TŒ‰^‚M‹ŽYE‰ˆAˆA‰A‰}@ŒƒF‚w?†qDzsC‰q:†f7–o,’k4œk<o;Ÿr7œwJwDvM”m?wBxG‘mNsa•yRŒ|S~VvQ~Z•„\Œ\’S”‰S‘N”ŸH¢›W—O–ª_¡ž_˜ªZ§W› V¡¥V› X¦sÛÒxÝՂÙÏÊρÏÍvÌÌzÚÐvÖÉwÑÐzÏØwÑӁÊÔwÈÏw½Îy¶Òn«Õx­Ìq©Ër¬Ö|¡×{«Ê„ªÈŒ£¿‰žµˆ¢¸Ž•´”•¨ˆ’¦…†°‰¬ƒ‰ªŒ ˆ‰‘w–“y—‘y˜‘™•vŠp¢“r¦˜s²”i¬k¢‹n§Žo§ŽsŸ†v«†u¨’w·‘g´…t·}o­‚m¶zl­i§~v¨yw¡|p¨mp¥hb«ohµli®u[¸dY±bg¸kc®ub¹xa´vb£tažm]Œod…sg†jhŽbsŠ\nwfj€llyjl{oivcdviXk]emRblXbkYbd^Z]ecblbgtU`nVabhe[iq]bmR`lZ_oQ[pM]_LT_J\]A]i6WfoS9jB2rA#vM0uR.uO)|O1†U.€Q+zP.yP=‚U6}N'|M-ŠG&‹D'ˆ=2‹E;‰?6ˆ4)ƒ6-B.?+‹C,|K$vL$|R)yZ€S!P-~\2}Z-v`+€c+yl2}pcd5mh6rj=ntAbo?`l;Y`.Y`0\f1[].[X0b`4cf9_iG`fOZoJ_nFckJmsMfqUci]gd_ieUrk\ig_pqdpummggkgtlessgphadkgjmenw]qtZ~xZ}uWynW{kX€tUzr`xii|mf‡ymƒ{bzp]Œlfs]i^q]zqL…nWƒpPƒ{Z„|Y}UxU„wU…T‹\|R‚€P†…K‰‹@‡‡B|‚8€‰8}‡>…„F‚vB~uH|u;xj0ƒd0‹i'—j;”hA”r=u;™y@˜t@ŽvE†p@ŽuNŒxOŠt\“xZŒxS“€Pš‚F¢}M™ŒL’\˜’Q‘ŽV“‹Mš—M”U”‘Pš’T–£N ¨SšŸ`—¡Z›§Z ¤^¢™\¤†ÒمØ؂ÖÒzËÕsÍÒpÒÎqÎË{ØπÒÎy×à‚Ò߈ÍÎzÊÙ|ÉÏo³Ëx¬Éx¬×o±ÆzµÆx±É~¨ÌŒ¨¹€¨¾‡™³¢¸Ž²ˆ”¨~”¥€‰¤ƒ~®¡‰¥€‘•€˜–|‹v‘•v—–y‡s“Žr¤Œzª•o±–w¯‚i«Œt…}£‚s¨ˆx®‹y°h»…r³ˆf¢k¯ƒtªvj¬tq¤vlªjp›rt§hg©onªke©jc«mZªhY¤jkŸq_¡hl³y_ f`˜gj“pgŽkh„m]ƒhfŠds‚gpzdqvceyfb{a^u]Sg]S]PYh\a[]\e^cdml_sXjgbpahhabs\asYXoJXsGXfNVfN`lPZh=U`GTeEZcET\CSh=]g<]X@^\GfYHoM?j[=qW4vD(lB/rI1rP$~Q3sL6L)R6|R=xO1|R.ŠE(C'„N/‹@*’84ˆ=2~C+‚:5Œ:,F1ŒG ƒW#‰L#~U|Y*‚U[+ƒ]0Z#{a/sd-ps9vk5s}3cu5``0nl*ln.pk-`s9]p>er=bd5ba([m.dd,gk+hf:arXrKZiO_oHbnLduDooLmr]ig]xbcnqalhiqnjn]ivdfqcstmnv]nj`hgWjee{q\vuMvRuave[|qgoa}vboiˆik„qhƒqgykjygƒm\’ejˆoY‚mVcMoLkP…}_‚Q‰yPXƒ~Yˆ†^uW†€U„‚GƒBzwAƒˆI‚ƒAuz?yxEr?yqJ‡n:{t+{j(„s#™b2–k;‰f>“w5’zCˆzH‘pI“tH‡jSŠs[ŒyL–qZ~M–uN”zZ“|F¡‹L¤†[ŸŽK™~H›‹Oš’D¢ŒJœ‹T™”J¤˜DžY£V”£^˜šX¥™^™c¤€Ï܀×҂Í×yÓÔyÕÖzÜÕwÖÚtÕÞtÛÕyÑÜtÎЀÍÔ{ÊÓoÈÊo¹Òs´Ìp³Õt½Î|½Òƒ¶É¹Á‹¬±ˆ§«‹®~Ÿ®~—³|Š­‰©~‘ †Œ¤ˆŒŒ‹¡‡†˜~‘œ{™zšˆ“Œƒ•“‡œ›|£‘s¢‰vªŒm¤„m¢€p†w¦‹xª‘y­Šn­t±„i¤b§„eªtp©qp«ijžjr˜roŸoo¦to¦ps˜cjš`m¡be¢^l¥ae›`d¨op¤tf¦k`œcim`‹gbŠb^ˆgl‚hh€kpydf|g`|bbrg[a^X^UZbU\]VdY__Yjgbtd^oifgendim]aobed^YgO`cQUkM[eDUlCRdGS`ET[IQXGWZNQbLJgIT]*‡>&?/‚@,€D.‡N*‹I‹UŽJ…MuL&tS)w`&v_$qi'pf*zj0rj/fk.ku)`s,dm)jr,br#bl1_u1hp3_g5`k1[g,\d1\q$]k-cp/hv<`m=[oGfoFdqLngJtqGioIlhKukX|oSrn^qbg~^ruapv_sv^uzhwvfoubwsb…lXƒtW‚tPvY{i^vdhwgjw`brjewmfŠkqŒqzŽosjdŒuc‡qh“hf‘h]ˆdVŠbV‚bVƒeW„saypexWˆ„a€ZŠve…|^ŠvX†wSƒrG‹sKv@~€Cu~=|z?…~:Œs=ƒo7ˆq0ƒk0m+”n:Žh;Šc=†o=Œo:“pH‹mOrHŒgR‹mV“oLœnR—zOž{Z—x\œ…O¢…Iª{M¢IŸK•ŠPžJ•ŒF K›‡Oœ‹Iœ’T–W›—YŸ•b¡›c¢[ž‰Ð؆âÞ{ÐÙÒÒ}ÏÚzÛàsÍäzÍçvÎä{ÏßyÏÑ~ÒÙzÍÎvÌÅoÄÎxµÖs³ÊxÁÐ~­Â“­¾Š¶´‰¨·€£«…¦­|˜¨„–¯†‰¯|Ÿ…œ}‡©Œ”œ‹™‰š{Šœ‚Ž†sž}ƒ™ƒ}›†œ„Ÿ‘tž”}°’q¦ˆr¨ƒk¥‰oª‹k¬Šu±…i°†o²‚i¤‹c¦ƒjŸqs£rq›oh“og£ja˜kk˜qy¤oc¡hb¡i[£ZhšY^¦cdgnžqgžoo¡uf—lcˆh^„ec~gcŒ^e‰jr‰ik†mkuqjmeelnXod\`NPhUPXRZbYU`lYal^lmbjfbncXbeWn^`jQYgQ\vHKnQQnJPh>Xq?JiSQeO[aCVdHVkHT\GPe>`[CZ`CiX@mb1gY,l[#oV"sV"iHzGqN0vV-qK)uU3uQ6†P*‡P)‰V/K%†Q!‡B!‡=*?/‹I)C&†P+†P"ŽQQ‡R†K'~Y-uW)xa$qa+ej"l_+qm8od)me1ip-_r&_k"cq0[m,]m-Vh2dh>Vl&[]0Rf'Qd&Zl+dv4cp@]jDek:fhGadCfnJjfL\rJsjUll_liYyha{do}mh{e}u`up[xrdn}curczzUlPˆxU…}K{wW†g_€neufspeg~okwok‚ju‰cmskfi€tcƒpbŽpkŒcYŒ`Rb\ˆdOlXƒo_xjUˆpT{V‰†ZŠ|X„xZuM…lL‚}QxxMwsBss?|vC~tE~rEtC„p<v9‡e+€v%ƒj5qB„mJ‘qH‡kL’vH€qC‰sBuQŽyK}Tš~V—r[šp`¡„Mš‡R®W¥vG›ƒI ŠQV‘‰JˆK¢ƒW“ŠWVžŠQ’aŸ–a§‘c£]¡©W”ŠÝé|ÛÛzÛÏyØÍxÖÒ|ÍãyÙêwÕä†ØӇÉцÆ˂ÉÌÏԁÒÏwÆÒw¼Õz½Ïx¸ÉŒºÍ‘ªÀ”§¼…®º‚¥¬«¨‹™£ˆ‘¥†ƒª}ƒ£ˆ‹š„ŠŸ„‡‹“Ž†”‰”–|‡y—€w¤}„¢ˆŠ¤¡z›r¤y§„r£…t§q¤†i ˆn¬ˆl¤Ši©‰f®Šq«~pœvh•il”sm•tinaib™pq¡fcšg`žgc¡\`™UdžXe jpªnn¥mdšei™l`Žldnozmmbt‚iw‡qyzlrtmdrrgkg]l]^nXQiQQ\YXe_[kebea^hldcoXhdScd]fYXpYYpYUrUIvEMpH[qFMrOMtOUdOY]@RdCUfISeH]`:Tg@Z]9Vb6Xb:g^4p`#nU+jT$kS*jMrU$yM'Q2zL-~V&}[+za.\-€\'ŠJ “?(=*ŽD-‹I,„D1N*ŽH#…R'ŒK#†NOP${RuQi\&i]*j_._h/fk(^e'di*ai(Tc/Ra0Pf5Vc4Ql|l?ys>um?~l@}p2xm(ƒt2€sAŽuE…nNŠtH‰zK†|K‰zJ‚B}G›xK˜ƒY•„[–uY›xTž|S©yJ£xLŸ‚L˜‡V˜„NžŽM¤„Q†U›U ‰V¨’b©‘\§–_¬‰S¢–K•£S™€Þá~Öæ{Ðß~ÒÌxÊֆÖ؀ËêxÚê}ÔçÈىÐ̀ÒÎ|ÇLjÆÇzÇÐwÄ؁·Ì‰³Ò‡²Â†¯¾Œ©µ¬ºŒ±­|¦¥©«—›z£x‹–’„†‘„”ŠŒ–‰‹‰”™ˆ˜ˆ…š„„”…š†w Ž„¤‹ƒ˜†u›‚t ƒt x¤ˆy—yn§„x¬ƒu™u–„u¢twž|lžpe–nf›ii”mnbkak™i`ªad¥`d¨`^›Yg§bc¢[k§pv›fo˜er”mn’oh…pi~pxpzvus}kxzu{~qo{bjqfkec\maas]W`aJ[UPa]VidYh`XfaV`^VbY^jV\laTdXPp]LvFFsKF~IRrCYyLUvPUq=^_8TlAS]CN]IWhGM^4_c;Ma0Sb9X`&f[*m^*n\&iS'jLsUoVyQ)vX"X „`{^"zd/z\*ŠSˆG(ˆK#†I+–R#’L(ŽU%ƒZ)‰N(}U'‰R‡P#wTU|ZpW+fZ&`j0]l)X[$U`)Um.ed2_c[i>Uf2Uh/Qd.Yg-`\)h^&bf&Zf*Vh5]c@XfETn;SsARgFUl;bo=hfJhb]_kaXk^b^drWmtasuc€sj|hi~kWtiTrXrSƒwPwwV{z\}{\|s^yjevqf€zg‰rkŒth“ljˆdcƒ^iec‚bh†kl„jaƒeT}fWd[…[Q€_I‚`P…pYwp]yme}s`~lV{qO{|PmuPlwTltOrfNy`YrXYm_NghMri=qb3tc3qg2h7s?‰pJsPŽvKŽtG•oE•tRŠ}QˆzH˜€H˜}N‘„O›L™N ƒQ¤v\£v`©wZzPˆN’E¢‹F«ŒF®…N­ˆU¥ƒP£M£ˆO¡“H¤˜J¡ŸOž˜V§€éÝxàè…Ü×}ÜÞxÙÞ}Öã€Ôà|Ðà{×܃ÑßÞÑ~ÒǁØԈÑÓ}ÓÓ}Ñ́¾Å„¼¿„®È”§À‰¨¹ƒ««x«ž~¤¤}¦¥†ž£|žš‹›ƒ––‡’ƒ•†„„Œ‚“}†Œ†ˆŠ–~™€“{}™ƒ€™€v–|˜‚{ ƒs‘zt™uu¡€w¢€l‘pq”sy•po‘|o vdŸdg˜_i•_ežhs—Zbš_e˜fjšf`¢\h—_e˜Ve£hj dr•Zv™[z˜aq…gs„cqznpxnxrukztx}rhymkmVllVjj[Zh_a`\Xla]g_Rq[VqaRfa_c`[lZ^oNOjPZ`KYaNVsCWrELxNQtNE}@PyEbn:]c|`|gDysIvBjI‹yN‘~Y“yWžwM™‚V€N‰J‡ŽTŒŒ\—~_¡|`¢ƒh¤Šg¢†[¦„]˜|Y˜zS›€[ ‰K¡K°€R­PžU£ŠV¬Œ\¤…S¨‰L¨ŽV›„Þé‡æìƒÚí„Ùâ†Ùè€åââãqÙãvÛӄÑ×uÓӂÚρÐǎÓÍ{ØÌoÈÍwÂÐ}¿¹°¶¯ºŽ³±ŽŸ­y«©³™z«§zŸ¢šœƒ‹™ŒŠšŠ—‹‘’Š“†„Œ…”†‚˜|“‚™|Š|€˜uˆ†‰¥z›}ˆŸ~¡ƒ~Ÿ€‹p…£z|£lv¡rlŽxs’hz¡pl™``žXh¥Xo£bo¡_u˜Uh•dgšYfQm•Rc˜Rf§Pg˜Rm¡Ji•TyavS€€Vkvct|auyjtpjjp\u~Vkrbjlgke`mk]paer[ZbcVhhOZeNczVapZWlN\wKgkRYpCcgJVpLZj?]q=OzAWnGL}CUg@W_8bg;Sf@\]CXX?He=Qe;Kh3Vl1Z[+aU&eV&_d_X\_cWbYqSzOW^yS}P‡SuX-z\…K%zO…C"ƒR&|Z yN~W'oT&uRfY"fglcx]iSlZhehgWc+Jg)Oe9`Y1eb2Zd?a`=jjC_s7amFZh8cm;^m3k|3Yv4]|0Xn7VrIYmLcfB\pDad:TlM_^CZhG]cS_dYgfPgf^]kmalrhxzuwo{xvxttqm}pf„xc„wfxvV|x\xyaƒpgŠwdˆyd‚€W‰k“ljˆci’kg‹eo€btin\jh_–db“cQˆdDˆbP‹fH|eR†gKzmS~p]ŒxcŠg`ˆkXr[Œt[€sX†mR~mWzncthYud_waRvkGrgA~nJxm=†m;ˆm7‚mCˆtC„gO‡mIoPŽtV›sL’€Wœ{K“‡]š‚XŽ‚S‡Š[„[˜†`¥…^©‰a«Z©z^¢‰`™„T ƒT WªF­ŒR¢€P¤‹V¯‰X±‰ZŸŠZŠZŸY–ŽëìŽâî–êäççŠëކåۂÜÚxÝÝtàÚ|×ÍzÓӄÙNjÓЁÐʆÚÇyÒΆÇÁ†È…ÇŌ¸¿ƒ¸Á‰©±…ª§z©¤ƒ ¯ƒ’­‰‰§Œ¢Š–ª“”¢–Šš‡ˆŽ†ŠŒ‘€’x… }{¢{‚œ|‡¤ˆ£}¬~ƒª{¢Ž£{†ªnˆ­p{«w~£vƒ˜f|˜fs—_lŸdk£`c [k™cf [l˜OpŸSt™NmŠSu“Ln”Mp˜Lg¡P^˜Cf›GvRxŠS|†W|„Svt\uobnsawpckqcfvUilSombti]uidokes`_he_ihMllKdsSfq^]sYh|NdsM`hM_f?baAbeJcuKZwD\nBRrBRp:Wa>Ue;V]9IY=MV:HSBN_>VYdcD]e=Z`AYkLagGmtJoqQkpgksmluoi|wftutuurtzqvƒvm„xg|c|c}sg‰qc„{j‹ye…{k‰|a{`‹mg•bc“akŠdg’iknq•al“fa“a^š_\‘kNbS†hN†tM‡rS†wZx[‹|_•pg‘nm‡ya~_uT‚tZunbwxf‚q^€lR|iU~qK‚lR{qJxuH~v8€k9‰r>iJŒrP†jQŒpLˆvQ’{V{S˜…TŸ}\™xd„Z’z_~g”vj¡}ežƒa›‚a¥|bª…\Œ\«…OªŒM£‹Qª…Qª~Vª…T±„_§Œc¥…[Ÿˆ[¥†QŸêóêî…çàŠÜâˆåçŠå݋çå{âقÔÛzÒψÎʈÔƉÓÓ}ÐÐtÙÏzÑÀwÇÆyË΁»ÇˆµµŒ­¶‰µ®‚«°r«®ƒ¦°•¤‚›£}‡Š¥Œ˜›Ž“›ƒ“ŽŒ“‘œ‡˜†Š¤Ž–…Ž¤y„¤‚Š¤„Š¥€€£x…¨qŒž|¨p€ž~z™zu¢ws–pr—qx—b¢ei—hr XlRt¤ThžR{¤W{œQpNfNlšGb—Vm¡MfŸLcŒPb“Si…KkxJt{RnsUiuYtwMhz]tnZby\tzWjwYvgXq_eze_tmWzhOftGivMk~WXnU[{K`kSWpC]q9__?__I[dCWpMYm9Sr;Qo?[a@Q\:Pc@TV8O]6YN1H[8Ld:S]1Sc.OX(P[*SU%fZfZnbrTsNnYzRZy] sSZuMxQ~Y*qO)K!VOvO|Sl]sVcVnYeQ"jV)hd*YVdU+dX*gc%Rb'[`.\b2]a2Xb7cj7]l5Zw=_gEfhHeo@lmI`m9bs9c€BVI^z9Uv<]aGe`Nc`A\bFbeJY]JbhHcgRaaSmeTuoXpspo|pn|fn|itwppuxpntrw‚h„wmt|cv|[…pf‡nd‚tb{yqpsŠ~m‰vfŽgdimŒmq“bl™ir“Ynœ[]Ž_[ j[yTrLgQƒj]mSŽp_w[”mb”tiu_ŽxU…zQzwW{sS€je€h\ˆmaƒgV}hJxcMxoR{pR†tEiK{vElH€tO‚pKmW‡tQ–nO“yV”}asXŸYŸ…O›{Oœ…axk“{dŸ‹]œ}i „i›}m¤„eŸf¢[­^žˆT©€`¡ƒ^žU«‰S¢{\¨‚S¥‚\¢ƒR˜Ýñ~ãí{äìƒáڎß߉ë݅ßۄ×áÜӂØσÕȂÔ҉Ï̄ÌτÖÆtÕÃÇÃyÂÈ~ÈÀ„½³|±±|²¸v²·{¨±„›®€›¥ˆ’«~Œ£‡š|Œ•…•‘ƒ‘Ž–’œ’ˆ ’†ŸŒ† œ{Œ›v£yœwŠ¥p‡Ÿnƒ”z‡š~| }Ÿvy˜ry›wvškƒŸa„”cƒž]r¢^kžYq¨Sw WxLp”Tt’OfˆFbNj‘Um”UlŠOhŽQeƒPcReqEvtEvpAmnJdsKisIgzZo{Zqt[poSxadw_cxc_wvTz{SrqEp}J`xQ[vTZzGSuGReFWj9Te4Qh?UgIchG`k?\oGWp=X`6U^3Vd4J[3OV7SP0OW2MY5RX(Ph#J]-Ma%]W!fWob k[lRqUlY -paxfv\{Q -pQqV!xW |J(sN'xQ&V rNlJnIpUm[hYc[dQ!\N#Q\"]\)]Q'`Z&Z\-P\.Rb3Xd/Ob+Qb6Th9Tm=[q:co5ag>mfKglGgt9Zs:bxG]{Cb{IZt>\o9_eEUe@YlGgiNciLdfJedPn]Sid`piiutdsomlvfxpbrsgyoisqlyfkey„nvzirx^€s\‚s`xi{uj‡usŒzgxiŒkt˜`n’\q“hr“`j^jš^kžmZ”oN‘vJ…p[‡w[†s[uT“vRŽnYŒudˆx]‘vR…T‚|M†Sxayn]l]ˆuY‰gL}cNxkJkPƒqT…mP„iFxoI}pG„rV‡kUŠf[‹qS”qQ‘q^šs]’}TzQ€K•€O„\žy^˜ƒ^¡ˆf ‰f~k•{t™{k¢h ‚_¡€X_Ÿ–\œ‹]¡‚Z§€X yY§{W¨‹IJ¢’å߇èé‚èäîã‡íۀàßÚÒ~ÙÒäՂØ΁âՀÙ΅ÙʅÒÐvØÃsÑÍÇÃ~É…¾À{º¹z¸Á~µ¿¶°~Ÿ·{ž®„—ª‡—Ÿ„§x•¤‰•–|‰…‰“‘Š–†š†•’•“‡œ—‡˜§w¥sªl‡žx„š|€œs„—o„œu…—z}—xˆ–j{l‹Ÿcœ^†œZ{¡bz©cu Z| Tv—LoU|šXlŒMl‡Sl’Kj‘Rjˆ[`ˆTixW`pMgnBlvIuy?sqDszL|nBztT|vZwxWolStmZva]ziLtiTpxIlwJe{QdyIe~NVs?_mEWlCPp>Ik7MeELkDWl9ao9``6O^Tqan6gl=dnDhg=fsEWy@Y?f…IiKbwI]jLatL\nA`fLakGZdP[]Hd`Njd\gdeoebsj[pgelqkiwiordnulvilljux_qqdx{hmlesvhv~kvslqin|{l…yi‰gu‹al™anhg–hl™Yi¡l_iY‰iS•vU‡rS‡waŽqb‹}[•~Z’w^oW”rc~]”zRŽ}Zˆ~M‰|SxvR{nVymV†mV}kKƒbSaKŒmK_W…rV‚oK}jP€v[f_m_‰uV‡vI‘oY”p[o\™~W”}V¢†X–{a•ygœj‘aŒk“yr yc£„n§†oœƒh§hš`¢‰_Ÿi—…f˜ˆZšvVžrQ©„PžIœ”âܓäޏå؅ïà‰ìå†á؇æۈäԇãÈxçÊtÙÆvÙÉwÎÈxÑÐ}ÙÃ}ÒÅqÔ¾uÒ¼€Ï€ȼ~»Æ†µ¾‚¨µƒ§¶†ž±‹˜®Š’ ’œœ†™—‰‘’ŽŽ‡Œ”ŠŒ‘”‹†–šˆ‘œˆš—ƒ “¢w‰¦r¤p€žr‚šr†›jŽœnˆœxˆ¡xœsŠ–gƒœe‰ža^†£_xšVxXySv‘]wŒ_xOqHs„Ld‹Se‡Y[ƒT\†V`{HcqHfxGgsBjoHotArvG}zBsuFxnPwlGxiHllFqhRssNplHsmVjyRj~RbwCUs=XzE\@YzJQlIKk=I^CN_7Wh3Uf@[^[o@WlCYl;^vo€M{mLynUqoEpnDpcI|nKucMirKk|Cc€MlxEeyDRpDSw=SnHUl=TqHMg5Vi>Ii9Yl?UfEPo9F_7Hi+Dh0Kd3Bh*Ng5F]2GU0DP*QTBbUY -PP\RYO ]JbSiIgQ cK_FbX -uYdMlL#gGrR$kLjL!`N%gJ%^O^N&fCRD WN!]I+VQ(PI#TP!SB/GH7QL-[D/MA/OS&OP#SU&\b6bV5\a.[l;`i3f`BaiBYn=Zm>QsCXpBil:esIjgBcl>kgB_r;ggC`l?\iHSeTVh\WbXY\Zgfnol[ykexpjxue}sqrqovmbqodenft[ml^xdbzw^xt_‰op~}hwvw†tr…orzehhv‡hm—ad m^’l]ž_^—e^‹nhl[•ja‹mV}V‘qWœc’sežv\‘vf—uc‰~Z‰uZŽ~R†yPzRƒvOypR†xVƒyS€jF‚iT‚[E{gO‹mP€nXŒq[’jT€eT‰hctWˆr^—z[’}PzQ’wSyV•w^Ž|W˜‡Y›b™…l•i™†r–}u–€u–„u™ˆe¡‰h˜c›ŠTd‘†Tž|ašxU“{S—~S˜R£‡R§Šóðˆõëƒý߉öãŽð؋ôلëàƒè܃åã‚ð؅è͂쿂äʼnâІßˎϿ‡Ì¼~ÃÄ|ʾ}Æ´uǽz¾Âˆ¸¼„«³ƒ©­‚ž±‚¢§~ž¥}—œ‡— ›•ˆ™„™Œ†¢–¥Š˜™~•—‚Ž y¤u‡¦{Žªx¤s‡s„–o|œf„”h†‘m“™u˜r“‘c”j•™aˆc|œat—Wz[p›WrHwšKmSt”Rs‰NoƒTb‹bkŒcl}UpzKe€QlXguQvzCsv>j{Lg{Mt|HqqKgp?ej>uc8{f;rsHiqNbwHlzBh}AbwEPq?Kz3Mz>Oj=Rp9\h:On@Nh9Om6Vo8Jk;Cm3Mc#J_"TX,Na(Mc7Kc9NU)QV)PS%DWITPMNVZMUW `RcIgL^FZE_NnWoL_M#nTkW$k]#cS gJ dP ^P#`>%`B(YG^IRS%TI1NE+SE(GS)SN+WJ6]B2QJ,WS%T\+bb4`Y4QT-SW+[c4Wn4`m6_j>[sDVsAPpbd;fb@f`DbiC\`TTgSWlQUh_Qmb]jfac[ui^trctneuqcukxmfjffe\rqamlh|jk{jg€n\oaxp†wu€x}€gz|`iƒef•djša_œmcšm_Ÿda–daŒqbo]–h]’a^j^˜oZšxa™t[“oaxb‰vZq`—sUŽu_‡|Z€sV|iL€uY‚vW‡uQytMyfKbHƒeM‰nQ…{SŒvW’sV“j\‰ob†t]ŠwT“pV’tO‚X‰ŠSUŒ€][˜e™ˆg‘”e”qŠnŽ~o˜xk—~s’ƒq›Šh—†g™‘XœL›~Q›€U‘€PŒƒ\~Yž…Z¬Œ[¨‹õð€ðíõè‹óæ‰òå‘ôâ…úٍíæ‰îá…ì҅çāðŋßÁ~ÚʋÚÖÑȃž~¾Ç½Ä|ɺ{¿µ~ƽ€´ÄŒ°¿¦²…ª®«©Žœ£ƒ˜œ‹”’‡””œ †ž›{¨Ž§}›~‘œp†¡tŠšv†œ}‚Ÿv’ªo“¤tŽ™fˆ™p‹ŸhŒ”v“”q˜q•f™c“ži•U€‘T‹‰X‰L„•Tv•TzšIu“Uf‰Lu…Ze‡[g’]kŒ_i{Zly[mxPbwUjQw~LxuIlrJf~@pnEliDnv8noFyp7vl8np=elFoj:l{3as:fz=Yo/Pn7Nn6Xg0Ug>^h3No1NfAJn.Hk,Gh/Ri7Pb/SZ%T^([d$UZ-O[4Pf4R[$W_$IXIMLZ VJNMXUVKgQdR`N]M gW -mYfQbG$`R"eW#dQZ\&^R(_Dg@#b>,\;[;YD&TL&]QGR,KT"HR4HV8]L9SN+^W`]:iaHUeM`n\SjV_ifced_pb]pkmolseXxr`{gk€f_~ljto`gijghpa`liiymg„hctb‘ogŒsoŽkzŒtuz`z`oˆfl˜gnŽmeždežhY”i[–h[m`‰qb‹ef˜h_‹mT‘r\‹tZˆmW”qX…rQ‘}W–kX˜kZ—tex^„n\ˆhGƒiJ‚h[‡qO|fD‚iE{hP€nKrL‹w]–ySŽq`hg‹ob•}g†yZ‰„a†[‡x`‚†_‡`•~YŒ‡_šŒc}c‘Žg““i„zŠs‘k”ƒw—zj—…\—U“ŒU–†Y ‡MGŽ‡N™ƒWž‹Vš†Jª‘W©îæ‰ïæ€öí…ðå†ñè‡ûރ÷â…÷â€üà€ðׁ÷χíÄßÉȬÏӌÐ΍Ềľ…õÁ¼}¿¸{ÀÂ~¼Àƒº½‡Á·Š¸¹‰©©¨¤“«“–¢“Š ‰¤•~¥Œ}«Ž‚§†«zŒ›|—q‹žmƒ˜p„œgƒ¢c†žd—Ÿh’œe˜šk’Œk‹ŽmŠ…t—‡r›‡m‘cšˆV”‹MŒ„NŒ‹K„’S}šVršMq–Qk›^fŽ]cŒRe‡XbˆQ_‚Vc‡Pg|Tn}Oq{Gz}KuuMmzAmrBon7co:frDpk%aDg>#hBaQ^YPT#SP3QR1WS/QF0YP8\]:Tg5V`6^T2bS1eN.]Z,a_3]f.fi9`f=VmF[gEYgKQlD]h8_b:^h@]h;gc;ah>YjGXfVWea`ea_jbgfb`iajtjqpeno^skYyf_pk^xj_tqnkik_ajafm\kral…lh‚v`km—hq‘^r…dv…\y‡_l[m•al‘c]žl\œuZ›m`“f]’fT’rR›l]’fU…qS‚yR‚t[†pUˆuS‹{Y–tZŸkY¢pb™th‰sbxZŒvO‡kGkO†gS‹fL‡oQ}tJ‚xJƒzTŽuS‰l[’sjmgta˜`„_š‡^–…iš}bŒ‡_…Z”W—…U•†_œkœ‹e•‘p•–r‹v‰†q”‚l‘ˆi™~[š~TœŠ\O•”N”’M”ŒL•M•‰F£ŽFŸ…R xùãˆêã†çۀèæ}úÝóØ{úàƒôԊóã…ðۄñʓå͏á͍àƂÑǕØٍÕÀ‹Ì½ŠÁµ‹Å¼…ľ†¼´ƒ´¸|°»Œ²·‰µª¼§Ž©˜‰ªš¯•Ž¨‘”«˜†°ˆ§Š¬|ˆ§y‡¨ƒŒžsŒ˜oŽžp¥qŒ¦oŽ h”™b‘¢m— g™h‰“h•‡a‹“e’–m“[Š•S›…P–ˆS‘J‹‡[‹NQqœXdMdƒNcŒRk…Lf†Wa…[m~JtyVpzPguItpIyvMszCim8rwEck6ie6jh@dp=lh0so4sh;mm7bk6fq-Wp!Rq&LkVe)Zi \y-X‚9Ro.Ok,Ic,Hq(Wd'PZ-R^*J_NiY_,WkgkZjOc#Q\N^ XV -_XORRMUUOO -_JaT[UhZ _N_FeOVXUU"]SUKcL+bG&g@`@e5%^9&h>!fIbEQWF[OO#HL%TJ2M>-ZQ)\Z*d^,Yf;dY4dP5XU9Ma8V_ZsLNn>Si8Yb9dj9dd;[_G`lNa_N`qW\aYap_\fbXnb_j]kzgcvhoz\rnkuwbofmtkgpbpmog`jl[iebjqfg€oowa˜gb‘dvŽ_t‡ov†jnˆ\w‡cl‹[e_dšqc—uh mk¡tb›gf“m\Žuhn`…d\†d`Žic‹md‰w]‘pQ”lWžxU—sY tg’|nŒmYŒoX‡kNgN†hK‹sPŒoFˆxP‡yQ€zLŠxN’yd‡uXvfŽ€UŠ}Y†‰\‰b†…iŠ†^†ƒi…vWƒU“ŠX“Šd‘\ž‰p‘r—ŽeŠ—f‰q†…f‘|c‘uk¢‰_˜‘ažˆU›‹P¥”Y‘V‰G™•Tœ„R ^©sóävìã~éåîßxíÖvíÜzðҁúֈñáŒíەæՓäјîĒçĈàȌØԆÙɌÎÅȺŒ¿ºƒÆ½ƒ¾¶²¶‚´°Œ°¨ˆ½¨†Â¦†·—Š¸‘–²•©Š¯Ž“¨Š‹¥„‡¦Šƒ¤ˆ~Š§ˆ¢xŒ—t„£iƒ¥n‹žc˜hžd™ži•g“‹a•‰\Œ“hŽ“iŠ[—Š[–]Žc‘ŒXŠWŒP}To”\h–Yn†Gb…Nf…LcyXm}Up}LwxKjvRlkLuoGzqNrs>jv9ug;nd?ot5ar9av2co2pu3qq6ev5iu.Zu(Vp#SvWjcs_t&]|-S{&Ju$Jg+Qs1Sp-Pf$[h'QcOhKjWjcpcf!Wf$McKfP] -YZXGYE]OYJ\O`J^U ZTePjQbHZR$a[]P#[V[P$_N ]E]9\Ad9b6Y="YK"[JJLGQOFKH'GB!NETP_L'ZY0\a2Xb.[\2Yg8Nc=JaANc?Z[7W]9akHamFVrGYqGXmI^a;_]Aih;]`CVfOXnN]jW]fLcoMfiaZse`k^endol\nvcwv`qvmuvhkkknktnfmrldedhemmplzmn‹ja‘blˆfp†mk’moŽdi”bret‘_ngr‡msŽrv’tr op¢hj’jstoŠf`ƒf`‹keŠddˆsX”p]”rb’rX•nX–qYye—viŽqb†v_fX“eO†sSpL†rJuK‰lOŠpJmQŠt[‰uYxX“€X…T‹ƒV’‚g‡‹o‡†iƒ‚]ˆxa†y[†YY‰ŒY“‡_”Žp’c“a“‚^d|_‘|i¢„`©‰[§ŒSŸT¥‘S¡“V–›Y—’R›•`ª^©uöõ~ïã÷äîãrîéwõå{ù؄òօëӌîԘíՏãϒçԘä̊ÙÁ“×ːÖ̏Ë‹ÈǔøÂ°·½}²°…¸¬~²¨…Á¦‹´ªƒ¼”Ž®’—¶‰Œ°‰¦‡’§…Žž„€Ÿ„ˆ¯‹‹ª…‹¤w¥rŒ–u‘¢{‡›tŽšvš‘n”“n›”qœ—]•ŠZ™“[—•]•aŽ—_‡„bš“_—‹T–ŒQ’‹QŽyZy‡RtŒSw„PwwI|yGl‚Bl‰HuuMr€GpoNpsPjmIvsQvgDwn=jo1et?gm5ao/dc4cc,Zh%ds*ko"kg&eg#jh+`d"cpYlXs\i$`h*Rn$XgYi!Yp*KoMt!TjRk[m```hXleaYa^ZSV UWYP XG_DYM -XMVVVS[R^T -f`YPfN\JZUZSRM`TTNUDW7W9]B a@_8XKYHJRNQEGKG$OG#^K]F^R2]T%_^6_`:be3Lc5O[>Rk@Um8Uk8ObEShgf9a^6e`(bl$_o%_q'knbq$df!`ddbig^f_c`h$YoVl]f\i]k OlHgKjRfYqUo`_Vh[b -```W^PUNTQSI -QK -`QX[T^U\ [W aXW_P^ZXVR^N UU -XL[MSM _B]AV= -XG -XN -^C]=TBSNQITLQOWJ\G[D)`N0aP2Z^.^b,W^:V_?Qa - let name = sel#get_filename in - sel#destroy (); - callback name - end; - sel#show () - -let w = GWindow.window ~title:"Okaimono" () -let vb = GPack.vbox ~packing:w#add () - -let menubar = GMenu.menu_bar ~packing:vb#pack () -let factory = new GMenu.factory menubar -let file_menu = factory#add_submenu "File" -let edit_menu = factory#add_submenu "Edit" - -let sw = GBin.scrolled_window ~height:200 ~packing:vb#add - ~hpolicy:`AUTOMATIC ~vpolicy:`AUTOMATIC () -let vp = GBin.viewport ~width:340 ~shadow_type:`NONE ~packing:sw#add () -let table = GPack.table ~columns:4 ~rows:256 ~packing:vp#add () -let _ = - table#focus#set_vadjustment (Some vp#vadjustment) - -let top = ref 0 -and left = ref 0 -let add_to_table w = - table#attach ~left:!left ~top:!top ~expand:`X w; - incr left; - if !left >= 4 then (incr top; left := 0) - -let entry_list = ref [] - -let add_entry () = - let entry = - List.map [40;200;40;60] - ~f:(fun width -> GEdit.entry ~packing:add_to_table ~width ()) - in entry_list := entry :: !entry_list - -let _ = - List.iter2 ["Number";"Name";"Count";"Price"] [40;200;40;60] ~f: - begin fun text width -> - ignore (GButton.button ~label:text ~width ~packing:add_to_table ()) - end; - for i = 1 to 9 do add_entry () done - -let split ~sep s = - let len = String.length s in - let rec loop pos = - let next = - try String.index_from s pos sep with Not_found -> len - in - let sub = String.sub s ~pos ~len:(next-pos) in - if next = len then [sub] else sub::loop (next+1) - in loop 0 - -let load name = - try - let ic = open_in name in - List.iter !entry_list - ~f:(fun l -> List.iter l ~f:(fun e -> e#set_text "")); - let entries = Stack.create () in - List.iter !entry_list ~f:(fun x -> Stack.push x entries); - try while true do - let line = input_line ic in - let fields = split ~sep:'\t' line in - let entry = - try Stack.pop entries - with Stack.Empty -> - add_entry (); List.hd !entry_list - in - List.fold_left fields ~init:entry ~f: - begin fun acc field -> - (List.hd acc)#set_text field; - List.tl acc - end - done - with End_of_file -> close_in ic - with Sys_error _ -> () - - -let save name = - try - let oc = open_out name in - List.iter (List.rev !entry_list) ~f: - begin fun entry -> - let l = List.map entry ~f:(fun e -> e#text) in - if List.exists l ~f:((<>) "") then - let rec loop = function - [] -> () - | [x] -> fprintf oc "%s\n" x - | x::l -> fprintf oc "%s\t" x; loop l - in loop l - end; - close_out oc - with Sys_error _ -> () - -open GdkKeysyms - -let _ = - w#connect#destroy ~callback:Main.quit; - w#event#connect#key_press ~callback: - begin fun ev -> - let key = GdkEvent.Key.keyval ev and adj = vp#vadjustment in - if key = _Page_Up then - adj#set_value (adj#value -. adj#page_increment) - else if key = _Page_Down then - adj#set_value (min (adj#value +. adj#page_increment) - (adj#upper -. adj#page_size)); - false - end; - w#add_accel_group factory#accel_group; - let ff = new GMenu.factory file_menu ~accel_group:factory#accel_group in - ff#add_item ~key:_O "Open..." - ~callback:(file_dialog ~title:"Open data file" ~callback:load); - ff#add_item ~key:_S "Save..." - ~callback:(file_dialog ~title:"Save data" ~callback:save); - ff#add_separator (); - ff#add_item ~key:_Q "Quit" ~callback:w#destroy; - let ef = new GMenu.factory edit_menu ~accel_group:factory#accel_group in - ef#add_item ~key:_A "Add line" ~callback:add_entry; - w#show (); - Main.main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/label.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/label.ml deleted file mode 100644 index b9829fb77..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/label.ml +++ /dev/null @@ -1,48 +0,0 @@ -(* $Id$ *) - -(* Embedding xpm data into an ML file *) - -let openfile = [| -(* width height num_colors chars_per_pixel *) -" 20 19 5 1"; -(* colors *) -". c None"; -"# c #000000"; -"i c #ffffff"; -"s c #7f7f00"; -"y c #ffff00"; -(* pixels *) -"...................."; -"...................."; -"...................."; -"...........###......"; -"..........#...#.#..."; -"...............##..."; -"...###........###..."; -"..#yiy#######......."; -"..#iyiyiyiyi#......."; -"..#yiyiyiyiy#......."; -"..#iyiy###########.."; -"..#yiy#sssssssss#..."; -"..#iy#sssssssss#...."; -"..#y#sssssssss#....."; -"..##sssssssss#......"; -"..###########......."; -"...................."; -"...................."; -"...................." |] - -open GMain - -let main () = - let w = GWindow.window ~border_width:2 () in - w#misc#realize (); - let hbox = GPack.hbox ~spacing:10 ~packing:w#add () in - let pm = GDraw.pixmap_from_xpm_d ~data:openfile ~window:w () in - GMisc.pixmap pm ~packing:hbox#add (); - GMisc.label ~text:"Embedded xpm" ~packing:hbox#add (); - w#show (); - w#connect#destroy ~callback:Main.quit; - Main.main () - -let () = main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/lissajous.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/lissajous.ml deleted file mode 100644 index 9d6cf3b1b..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/lissajous.ml +++ /dev/null @@ -1,48 +0,0 @@ -(* $Id$ *) -(* Lissajous $B?^7A(B *) - -open GMain - - -let main () = - let window = GWindow.window ~border_width: 10 () in - window#event#connect#delete - ~callback:(fun _ -> prerr_endline "Delete event occured"; true); - window#connect#destroy ~callback:Main.quit; - let vbx = GPack.vbox ~packing:window#add () in - let quit = GButton.button ~label:"Quit" ~packing:vbx#add () in - quit#connect#clicked ~callback:window#destroy; - let area = GMisc.drawing_area ~width:200 ~height:200 ~packing:vbx#add () in - let drawing = area#misc#realize (); new GDraw.drawable (area#misc#window) in - let m_pi = acos (-1.) in - let c = ref 0. in - let expose_event _ = - drawing#set_foreground `WHITE; - drawing#rectangle ~filled:true ~x:0 ~y:0 ~width:200 ~height:200 (); - drawing#set_foreground `BLACK; -(* drawing#line x:0 y:0 x:150 y:150; - drawing#polygon filled:true [10,100; 35,35; 100,10; 10, 100]; -*) - let n = 200 in - let r = 100. in - let a = 3 in let b = 5 in - for i=0 to n do - let theta0 = 2.*.m_pi*.(float (i-1))/. (float n) in - let x0 = 100 + (truncate (r*.sin ((float a)*.theta0))) in - let y0 = 100 - (truncate (r*.cos ((float b)*.(theta0+. !c)))) in - let theta1 = 2.*.m_pi*.(float i)/.(float n) in - let x1 = 100 + (truncate (r*.sin((float a)*.theta1))) in - let y1 = 100 - (truncate (r*.cos((float b)*.(theta1+. !c)))) in - drawing#line ~x:x0 ~y:y0 ~x:x1 ~y:y1 - done; - false - in - area#event#connect#expose ~callback:expose_event; - let timeout _ = c := !c +. 0.01*.m_pi; - expose_event (); - true in - Timeout.add ~ms:500 ~callback:timeout; - window#show (); - Main.main () - -let _ = Printexc.print main() diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/nihongo.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/nihongo.ml deleted file mode 100644 index 48f7d8c22..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/nihongo.ml +++ /dev/null @@ -1,31 +0,0 @@ -(* $Id$ *) - -(* ¤³¤ì¤ò¼Â¹Ô¤¹¤ëÁ°¤ËLC_CTYPE=ja_JP.EUC¤Ê¤É¤È»ØÄꤷ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤ *) - -(* cut-and-paste ¤âÂбþ¤·¤Æ¤¤¤Þ¤¹¤¬¡¢edit¤Ï¤¦¤Þ¤¯¤¤¤­¤Þ¤»¤ó *) - -open GMain - -let window = GWindow.window () -let box = GPack.vbox ~packing: window#add () -let text = GEdit.text ~editable: true ~packing: box#add () -let font = Gdk.Font.load_fontset - "-*-fixed-medium-r-normal--24-*-c-120-iso8859-1, \ - -*-fixed-medium-r-normal--24-*-jisx0208.1983-0, \ - -*-fixed-medium-r-normal--24-*-jisx0201.1976-0" -let button = GButton.button ~label: "½ªÎ»" ~packing: box#add () -let label = GMisc.label ~text:"¤³¤ì¤Ë¤Ï±Æ¶Á¤·¤Ê¤¤" ~packing: box#add () - -let _ = - window#connect#destroy ~callback:Main.quit; - text#misc#realize (); - text#insert "¤³¤ó¤Ë¤Á¤Ï" ~font; - let style = button#misc#style#copy in - button#misc#set_style style; - style#set_font font; - style#set_bg [`NORMAL,`NAME "green"; `PRELIGHT,`NAME "red"]; - button#connect#clicked ~callback:Main.quit - -let _ = - window#show (); - Main.main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/pousse.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/pousse.ml deleted file mode 100644 index ecf0dff3a..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/pousse.ml +++ /dev/null @@ -1,199 +0,0 @@ -(* $Id$ *) - -(* The game logic *) - -type color = [`none|`white|`black] - -module type BoardSpec = sig - type t - val size : int - val get : t -> x:int -> y:int -> color - val set : t -> x:int -> y:int -> color:color -> unit -end - -module Board (Spec : BoardSpec) = struct - open Spec - let size = size - - let on_board x y = - x >= 0 && x < size && y >= 0 && y < size - - let rec string board ~x ~y ~dx ~dy ~color l = - let x = x+dx and y = y+dy in - if on_board x y then - let col = get board ~x ~y in - if col = (color : [`white|`black] :> color) then l else - if col = `none then [] else - string board ~x ~y ~dx ~dy ~color ((x,y)::l) - else [] - - let find_swaps board ~x ~y ~color = - if get board ~x ~y <> `none then [] else - List.fold_left [-1,-1; -1,0; -1,1; 0,-1; 0,1; 1,-1; 1,0; 1,1] - ~init:[] - ~f:(fun acc (dx,dy) -> string board ~x ~y ~dx ~dy ~color [] @ acc) - - let action board ~x ~y ~color = - let swaps = find_swaps board ~x ~y ~color in - if swaps = [] then false else begin - List.iter ((x,y)::swaps) - ~f:(fun (x,y) -> set board ~x ~y ~color:(color :> color)); - true - end - - let check_impossible board ~color = - try - for x = 0 to size - 1 do for y = 0 to size - 1 do - if find_swaps board ~x ~y ~color <> [] then raise Exit - done done; - true - with Exit -> false - - let count_cells board = - let w = ref 0 and b = ref 0 in - for x = 0 to size - 1 do for y = 0 to size - 1 do - match get board ~x ~y with - `white -> incr w - | `black -> incr b - | `none -> () - done done; - (!w,!b) -end - -(* GUI *) - -open GMain - -(* Toplevel window *) - -let window = GWindow.window ~title:"pousse" () - -(* Create pixmaps *) - -let pixdraw = - GDraw.pixmap ~window ~width:40 ~height:40 ~mask:true () -let pixdraw1 = - GDraw.pixmap ~window ~width:40 ~height:40 ~mask:true () -let pixdraw2 = - GDraw.pixmap ~window ~width:40 ~height:40 ~mask:true () - -let _ = - pixdraw1#set_foreground `BLACK; - pixdraw1#arc ~x:3 ~y:3 ~width:34 ~height:34 ~filled:true (); - pixdraw2#set_foreground `WHITE; - pixdraw2#arc ~x:3 ~y:3 ~width:34 ~height:34 ~filled:true (); - pixdraw2#set_foreground `BLACK; - pixdraw2#arc ~x:3 ~y:3 ~width:34 ~height:34 () - -(* The cell class: a button with a pixmap on it *) - -class cell ?packing ?show () = - let button = GButton.button ?packing ?show () in -object (self) - inherit GObj.widget button#as_widget - method connect = button#connect - val mutable color : color = `none - val pm = GMisc.pixmap pixdraw ~packing:button#add () - method color = color - method set_color col = - if col <> color then begin - color <- col; - pm#set_pixmap - (match col with `none -> pixdraw - | `black -> pixdraw1 - | `white -> pixdraw2) - end -end - -module RealBoard = Board ( - struct - type t = cell array array - let size = 8 - let get (board : t) ~x ~y = board.(x).(y)#color - let set (board : t) ~x ~y ~color = board.(x).(y)#set_color color - end -) - -(* Conducting a game *) - -open RealBoard - -class game ~(frame : #GContainer.container) ~(label : #GMisc.label) - ~(statusbar : #GMisc.statusbar) = - let table = GPack.table ~columns:size ~rows:size ~packing:frame#add () in -object (self) - val cells = - Array.init size - ~f:(fun i -> Array.init size - ~f:(fun j -> new cell ~packing:(table#attach ~top:i ~left:j) ())) - val label = label - val turn = statusbar#new_context ~name:"turn" - val messages = statusbar#new_context ~name:"messages" - val mutable current_color = `black - method board = cells - method table = table - method player = current_color - - method swap_players () = - current_color <- - match current_color with - `white -> turn#pop (); turn#push "Player is black"; `black - | `black -> turn#pop (); turn#push "Player is white"; `white - - method finish () = - turn#pop (); - let w, b = count_cells cells in - turn#push - (if w > b then "White wins" else - if w < b then "Black wins" else - "Game is a draw"); - () - - method update_label () = - let w, b = count_cells cells in - label#set_text (Printf.sprintf "White: %d Black: %d " w b) - - method play x y = - if action cells ~x ~y ~color:current_color then begin - self#update_label (); - self#swap_players (); - if check_impossible cells ~color:current_color then begin - self#swap_players (); - if check_impossible cells ~color:current_color then self#finish () - end - end else - messages#flash "You cannot play there" - - initializer - for i = 0 to size-1 do for j = 0 to size-1 do - let cell = cells.(i).(j) in - cell#connect#enter ~callback:cell#misc#grab_focus; - cell#connect#clicked ~callback:(fun () -> self#play i j) - done done; - List.iter ~f:(fun (x,y,col) -> cells.(x).(y)#set_color col) - [ 3,3,`black; 4,4,`black; 3,4,`white; 4,3,`white ]; - self#update_label (); - turn#push "Player is black"; - () -end - -(* Graphical elements *) - -let vbox = GPack.vbox ~packing:window#add () -let frame = GBin.frame ~shadow_type:`IN ~packing:vbox#add () -let hbox = GPack.hbox ~packing:vbox#pack () - -let bar = GMisc.statusbar ~packing:hbox#add () - -let frame2 = GBin.frame ~shadow_type:`IN ~packing:hbox#pack () -let label = - GMisc.label ~justify:`LEFT ~xpad:5 ~xalign:0.0 ~packing:frame2#add () - -let game = new game ~frame ~label ~statusbar:bar - -(* Start *) - -let _ = - window#connect#destroy ~callback:Main.quit; - window#show (); - Main.main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/progressbar.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/progressbar.ml deleted file mode 100644 index b614f08f8..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/progressbar.ml +++ /dev/null @@ -1,51 +0,0 @@ -(* $Id$ *) - -open GMain - -class bar bar = object - val bar : #GRange.progress = bar - val mutable pstat = true - method progress () = - let pvalue = bar#percentage in - let pvalue = - if pvalue > 0.99 || not pstat then (pstat <- true; 0.0) - else pvalue +. 0.01 - in - bar#set_percentage pvalue; - true - method reset () = - pstat <- false -end - -let main () = - - let window = GWindow.window ~border_width: 10 () in - window#connect#destroy ~callback:Main.quit; - - let table = GPack.table ~rows:3 ~columns:2 ~packing: window#add () in - - GMisc.label ~text:"Progress Bar Example" () - ~packing:(table#attach ~left:0 ~right:2 ~top:0 ~expand:`X ~shrink:`BOTH); - - let pbar = - GRange.progress_bar ~bar_style:`DISCRETE ~discrete_blocks:20 () - ~packing:(table#attach ~left:0 ~right:2 ~top:1 - ~expand:`BOTH ~fill:`X ~shrink:`BOTH) in - - let bar = new bar pbar in - let ptimer = Timeout.add ~ms:50 ~callback:bar#progress in - - let button = GButton.button ~label:"Reset" () - ~packing:(table#attach ~left:0 ~top:2 - ~expand:`NONE ~fill:`X ~shrink:`BOTH) in - button#connect#clicked ~callback:bar#reset; - - let button = GButton.button ~label:"Cancel" () - ~packing:(table#attach ~left:1 ~top:2 - ~expand:`NONE ~fill:`X ~shrink:`BOTH) in - button#connect#clicked ~callback:Main.quit; - - window#show (); - Main.main () - -let _ = main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/radiobuttons.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/radiobuttons.ml deleted file mode 100644 index 5743ee232..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/radiobuttons.ml +++ /dev/null @@ -1,39 +0,0 @@ -(* $Id$ *) - -open GMain - -let main () = - - let window = GWindow.window ~title: "radio buttons" ~border_width: 0 () in - window#connect#destroy ~callback:Main.quit; - - let box1 = GPack.vbox ~packing: window#add () in - - let box2 = GPack.vbox ~spacing:10 ~border_width: 10 ~packing: box1#add () in - - let button1 = GButton.radio_button ~label:"button1" ~packing: box2#add () in - button1#connect#clicked ~callback:(fun () -> prerr_endline "button1"); - - let button2 = GButton.radio_button ~group:button1#group ~label:"button2" - ~active:true ~packing: box2#add () in - button2#connect#clicked ~callback:(fun () -> prerr_endline "button2"); - - let button3 = GButton.radio_button - ~group:button1#group ~label:"button3" ~packing: box2#add () in - button3#connect#clicked ~callback:(fun () -> prerr_endline "button3"); - - let separator = - GMisc.separator `HORIZONTAL ~packing: box1#pack () in - - let box3 = GPack.vbox ~spacing: 10 ~border_width: 10 - ~packing: box1#pack () in - - let button = GButton.button ~label: "close" ~packing: box3#add () in - button#connect#clicked ~callback:Main.quit; - button#grab_default (); - - window#show (); - - Main.main () - -let _ = main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/rpn.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/rpn.ml deleted file mode 100644 index e701f185c..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/rpn.ml +++ /dev/null @@ -1,129 +0,0 @@ -(* $Id$ *) - -(* reverse polish calculator *) - -open GMain - -let wow _ = prerr_endline "Wow!"; () -let main () = - let stack = Stack.create () in - - (* toplevel window *) - let window = - GWindow.window ~border_width: 10 ~title:"Reverse Polish Calculator" () in - window#connect#destroy ~callback:Main.quit; - - - (* vbox *) - let vbx = GPack.vbox ~packing:window#add () in - - (* entry *) - let entry = - GEdit.entry ~text:"0" ~editable:false ~max_length: 20 ~packing: vbx#add () in - - (* BackSpace, Clear, All Clear, Quit *) - let table0 = GPack.table ~rows:1 ~columns:4 ~packing:vbx#add () in - let bs_clicked _ = begin - let txt = entry#text in - let len = String.length txt in - if len <= 1 then - entry#set_text "0" - else entry#set_text (String.sub txt ~pos:0 ~len:(len-1)) - end in - let c_clicked _ = entry#set_text("0") in - let ac_clicked _ = Stack.clear stack; entry#set_text("0") in - let labels0 = [("BS", bs_clicked) ; ("C", c_clicked); - ("AC", ac_clicked); ("Quit", window#destroy)] in - let rec loop0 labels n = - match labels - with [] -> () - | (lbl, cb) :: t -> - let button = - GButton.button ~label:lbl - ~packing:(table0#attach ~left:n ~top:1 ~expand:`BOTH) () in - button#connect#clicked ~callback:cb; - loop0 t (n+1) in - loop0 labels0 1; - - (* Numerals *) - let table1 = GPack.table ~rows:4 ~columns:5 ~packing:vbx#add () in - let labels1 = ["7"; "8"; "9"; "4"; "5"; "6"; "1"; "2"; "3"; "0"] in - let numClicked n _ = - let txt = entry#text in - if (txt = "0") then - entry#set_text n - else begin - entry#append_text n - end in - let rec loop1 labels n = - match labels with [] -> () - | lbl :: lbls -> - let button = GButton.button ~label:(" "^lbl^" ") - ~packing:(table1#attach ~left:(n mod 3) ~top:(n/3) ~expand:`BOTH) - () in - button#connect#clicked ~callback:(numClicked lbl); - loop1 lbls (n+1) in - loop1 labels1 0; - - (* Period *) - let periodClicked _ = - let txt = entry#text in - if (String.contains txt '.') then begin - Printf.printf "\a"; - flush stdout; - end - else - entry#append_text "." in - (GButton.button ~label:" . " - ~packing:(table1#attach ~left:1 ~top:3 ~expand:`BOTH) ()) - #connect#clicked ~callback:periodClicked; - - (* Enter (Push) *) - let enterClicked _ = - let txt = entry#text in - let n = float_of_string txt in begin - Stack.push n stack; - entry#set_text "0" - end in - (GButton.button ~label:"Ent" - ~packing:(table1#attach ~left:2 ~top:3 ~expand:`BOTH) ()) - #connect#clicked ~callback:enterClicked; - - (* Operators *) - let op2Clicked op _ = - let n1 = float_of_string (entry#text) in - let n2 = Stack.pop stack in - entry#set_text (string_of_float (op n2 n1)) - in - let op1Clicked op _ = - let n1 = float_of_string (entry#text) in - entry#set_text (string_of_float (op n1)) - in - let modClicked _ = - let n1 = int_of_string (entry#text) in - let n2 = truncate (Stack.pop stack) in - entry#set_text (string_of_int (n2 mod n1)) - in - let labels2 = [(" / ", op2Clicked (/.)); (" * ", op2Clicked ( *. )); - (" - ", op2Clicked (-.)); (" + ", op2Clicked (+.)); - ("mod", modClicked); (" ^ ", op2Clicked ( ** )); - ("+/-", op1Clicked (~-.)); - ("1/x", op1Clicked (fun x -> 1.0/.x))] in - let rec loop2 labels n = - match labels - with [] -> () - | (lbl, cb) :: t -> - let button = GButton.button ~label:lbl - ~packing:(table1#attach ~left:(3 + n/4) ~top: (n mod 4) - ~expand:`BOTH) - () in - button#connect#clicked ~callback:cb; - loop2 t (n+1) - in - loop2 labels2 0; - - (* show all and enter event loop *) - window#show (); - Main.main () - -let _ = Printexc.print main() diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/scrolledwin.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/scrolledwin.ml deleted file mode 100644 index 8f4bee21e..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/scrolledwin.ml +++ /dev/null @@ -1,35 +0,0 @@ -(* $Id$ *) - -open GMain - -let main () = - let window = GWindow.dialog ~title: "dialog" - ~border_width: 10 ~width: 300 ~height: 300 () in - window#connect#destroy ~callback:Main.quit; - - let scrolled_window = GBin.scrolled_window - ~border_width: 10 ~hpolicy: `AUTOMATIC ~packing: window#vbox#add () - in - - let table = GPack.table ~rows:10 ~columns:10 - ~row_spacings: 10 ~col_spacings: 10 - ~packing: scrolled_window#add_with_viewport () - in - - for i = 0 to 9 do - for j = 0 to 9 do - let label = Printf.sprintf "button (%d,%d)\n" i j in - GButton.toggle_button ~label - ~packing:(table#attach ~left: i ~top: j ~expand: `BOTH) () - done - done; - - let button = - GButton.button ~label: "close" ~packing: window#action_area#add () in - button#connect#clicked ~callback: Main.quit; - button#grab_default (); - window#show (); - Main.main () - -let _ = main () - diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/socket.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/socket.ml deleted file mode 100644 index 687389ca9..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/socket.ml +++ /dev/null @@ -1,16 +0,0 @@ -(* $Id$ *) - -open GMain - -let main () = - let w = GWindow.window ~title:"Socket example" () in - w#connect#destroy ~callback:Main.quit; - let vbox = GPack.vbox ~packing:w#add () in - let label = GMisc.label ~packing:vbox#pack () in - let socket = GBin.socket ~packing:vbox#add ~height:40 () in - label#set_text ("XID to plug into this socket: 0x" ^ - Int32.format "%x" socket#xwindow); - w#show (); - Main.main () - -let _ = main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/test.xpm b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/test.xpm deleted file mode 100644 index 9b0d2efdb..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/test.xpm +++ /dev/null @@ -1,92 +0,0 @@ -/* XPM */ -static char *openfile[] = { -/* width height num_colors chars_per_pixel */ -" 20 19 66 2", -/* colors */ -".. c None", -".# c #000000", -".a c #dfdfdf", -".b c #7f7f7f", -".c c #006f6f", -".d c #00efef", -".e c #009f9f", -".f c #004040", -".g c #00bfbf", -".h c #ff0000", -".i c #ffffff", -".j c #7f0000", -".k c #007070", -".l c #00ffff", -".m c #00a0a0", -".n c #004f4f", -".o c #00cfcf", -".p c #8f8f8f", -".q c #6f6f6f", -".r c #a0a0a0", -".s c #7f7f00", -".t c #007f7f", -".u c #5f5f5f", -".v c #707070", -".w c #00f0f0", -".x c #009090", -".y c #ffff00", -".z c #0000ff", -".A c #00afaf", -".B c #00d0d0", -".C c #00dfdf", -".D c #005f5f", -".E c #00b0b0", -".F c #001010", -".G c #00c0c0", -".H c #000f0f", -".I c #00007f", -".J c #005050", -".K c #002f2f", -".L c #dfcfcf", -".M c #dfd0d0", -".N c #006060", -".O c #00e0e0", -".P c #00ff00", -".Q c #002020", -".R c #dfc0c0", -".S c #008080", -".T c #001f1f", -".U c #003f3f", -".V c #007f00", -".W c #00000f", -".X c #000010", -".Y c #00001f", -".Z c #000020", -".0 c #00002f", -".1 c #000030", -".2 c #00003f", -".3 c #000040", -".4 c #00004f", -".5 c #000050", -".6 c #00005f", -".7 c #000060", -".8 c #00006f", -".9 c #000070", -"#. c #7f7f80", -"## c #9f9f9f", -/* pixels */ -"........................................", -"........................................", -"........................................", -".......................#.#.#............", -".....................#.......#...#......", -"...............................#.#......", -".......#.#.#.................#.#.#......", -".....#.y.i.y.#.#.#.#.#.#.#..............", -".....#.i.y.i.y.i.y.i.y.i.#..............", -".....#.y.i.y.i.y.i.y.i.y.#..............", -".....#.i.y.i.y.#.#.#.#.#.#.#.#.#.#.#....", -".....#.y.i.y.#.s.s.s.s.s.s.s.s.s.#......", -".....#.i.y.#.s.s.s.s.s.s.s.s.s.#........", -".....#.y.#.s.s.s.s.s.s.s.s.s.#..........", -".....#.#.s.s.s.s.s.s.s.s.s.#............", -".....#.#.#.#.#.#.#.#.#.#.#..............", -"........................................", -"........................................", -"........................................" -}; diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/testdnd.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/testdnd.ml deleted file mode 100644 index 8c10f7b98..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/testdnd.ml +++ /dev/null @@ -1,510 +0,0 @@ -(* this is a translation in Caml of the gtk+ example testdnd.c *) - - -open Gaux -open Gtk -open GObj -open GMain - -(* GtkThread.start() *) - -let drag_icon_xpm = [| -"36 48 9 1"; -" c None"; -". c #020204"; -"+ c #8F8F90"; -"@ c #D3D3D2"; -"# c #AEAEAC"; -"$ c #ECECEC"; -"% c #A2A2A4"; -"& c #FEFEFC"; -"* c #BEBEBC"; -" ....................."; -" ..&&&&&&&&&&&&&&&&&&&."; -" ...&&&&&&&&&&&&&&&&&&&."; -" ..&.&&&&&&&&&&&&&&&&&&&."; -" ..&&.&&&&&&&&&&&&&&&&&&&."; -" ..&&&.&&&&&&&&&&&&&&&&&&&."; -" ..&&&&.&&&&&&&&&&&&&&&&&&&."; -" ..&&&&&.&&&@&&&&&&&&&&&&&&&."; -" ..&&&&&&.*$%$+$&&&&&&&&&&&&&."; -" ..&&&&&&&.%$%$+&&&&&&&&&&&&&&."; -" ..&&&&&&&&.#&#@$&&&&&&&&&&&&&&."; -" ..&&&&&&&&&.#$**#$&&&&&&&&&&&&&."; -" ..&&&&&&&&&&.&@%&%$&&&&&&&&&&&&&."; -" ..&&&&&&&&&&&.&&&&&&&&&&&&&&&&&&&."; -" ..&&&&&&&&&&&&.&&&&&&&&&&&&&&&&&&&."; -"................&$@&&&@&&&&&&&&&&&&."; -".&&&&&&&+&&#@%#+@#@*$%$+$&&&&&&&&&&."; -".&&&&&&&+&&#@#@&&@*%$%$+&&&&&&&&&&&."; -".&&&&&&&+&$%&#@&#@@#&#@$&&&&&&&&&&&."; -".&&&&&&@#@@$&*@&@#@#$**#$&&&&&&&&&&."; -".&&&&&&&&&&&&&&&&&&&@%&%$&&&&&&&&&&."; -".&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&."; -".&&&&&&&&$#@@$&&&&&&&&&&&&&&&&&&&&&."; -".&&&&&&&&&+&$+&$&@&$@&&$@&&&&&&&&&&."; -".&&&&&&&&&+&&#@%#+@#@*$%&+$&&&&&&&&."; -".&&&&&&&&&+&&#@#@&&@*%$%$+&&&&&&&&&."; -".&&&&&&&&&+&$%&#@&#@@#&#@$&&&&&&&&&."; -".&&&&&&&&@#@@$&*@&@#@#$#*#$&&&&&&&&."; -".&&&&&&&&&&&&&&&&&&&&&$%&%$&&&&&&&&."; -".&&&&&&&&&&$#@@$&&&&&&&&&&&&&&&&&&&."; -".&&&&&&&&&&&+&$%&$$@&$@&&$@&&&&&&&&."; -".&&&&&&&&&&&+&&#@%#+@#@*$%$+$&&&&&&."; -".&&&&&&&&&&&+&&#@#@&&@*#$%$+&&&&&&&."; -".&&&&&&&&&&&+&$+&*@&#@@#&#@$&&&&&&&."; -".&&&&&&&&&&$%@@&&*@&@#@#$#*#&&&&&&&."; -".&&&&&&&&&&&&&&&&&&&&&&&$%&%$&&&&&&."; -".&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&."; -".&&&&&&&&&&&&&&$#@@$&&&&&&&&&&&&&&&."; -".&&&&&&&&&&&&&&&+&$%&$$@&$@&&$@&&&&."; -".&&&&&&&&&&&&&&&+&&#@%#+@#@*$%$+$&&."; -".&&&&&&&&&&&&&&&+&&#@#@&&@*#$%$+&&&."; -".&&&&&&&&&&&&&&&+&$+&*@&#@@#&#@$&&&."; -".&&&&&&&&&&&&&&$%@@&&*@&@#@#$#*#&&&."; -".&&&&&&&&&&&&&&&&&&&&&&&&&&&$%&%$&&."; -".&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&."; -".&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&."; -".&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&."; -"...................................." |] - - - -let trashcan_closed_xpm = [| -"64 80 17 1"; -" c None"; -". c #030304"; -"+ c #5A5A5C"; -"@ c #323231"; -"# c #888888"; -"$ c #1E1E1F"; -"% c #767677"; -"& c #494949"; -"* c #9E9E9C"; -"= c #111111"; -"- c #3C3C3D"; -"; c #6B6B6B"; -"> c #949494"; -", c #282828"; -"' c #808080"; -") c #545454"; -"! c #AEAEAC"; -" "; -" "; -" "; -" "; -" "; -" "; -" "; -" "; -" "; -" "; -" "; -" "; -" "; -" "; -" "; -" "; -" "; -" "; -" "; -" "; -" "; -" "; -" ==......=$$...=== "; -" ..$------)+++++++++++++@$$... "; -" ..=@@-------&+++++++++++++++++++-.... "; -" =.$$@@@-&&)++++)-,$$$$=@@&+++++++++++++,..$ "; -" .$$$$@@&+++++++&$$$@@@@-&,$,-++++++++++;;;&.. "; -" $$$$,@--&++++++&$$)++++++++-,$&++++++;%%'%%;;$@ "; -" .-@@-@-&++++++++-@++++++++++++,-++++++;''%;;;%*-$ "; -" +------++++++++++++++++++++++++++++++;;%%%;;##*!. "; -" =+----+++++++++++++++++++++++;;;;;;;;;;;;%'>>). "; -" .=)&+++++++++++++++++;;;;;;;;;;;;;;%''>>#>#@. "; -" =..=&++++++++++++;;;;;;;;;;;;;%###>>###+%== "; -" .&....=-+++++%;;####''''''''''##'%%%)..#. "; -" .+-++@....=,+%#####'%%%%%%%%%;@$-@-@*++!. "; -" .+-++-+++-&-@$$=$=......$,,,@;&)+!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" =+-++-+++-+++++++++!++++!++++!+++!++!+++= "; -" $.++-+++-+++++++++!++++!++++!+++!++!+.$ "; -" =.++++++++++++++!++++!++++!+++!++.= "; -" $..+++++++++++++++!++++++...$ "; -" $$=.............=$$ "; -" "; -" "; -" "; -" "; -" "; -" "; -" "; -" "; -" " |] - -let trashcan_open_xpm = [| -"64 80 17 1"; -" c None"; -". c #030304"; -"+ c #5A5A5C"; -"@ c #323231"; -"# c #888888"; -"$ c #1E1E1F"; -"% c #767677"; -"& c #494949"; -"* c #9E9E9C"; -"= c #111111"; -"- c #3C3C3D"; -"; c #6B6B6B"; -"> c #949494"; -", c #282828"; -"' c #808080"; -") c #545454"; -"! c #AEAEAC"; -" "; -" "; -" "; -" "; -" "; -" "; -" .=.==.,@ "; -" ==.,@-&&&)-= "; -" .$@,&++;;;%>*- "; -" $,-+)+++%%;;'#+. "; -" =---+++++;%%%;%##@. "; -" @)++++++++;%%%%'#%$ "; -" $&++++++++++;%%;%##@= "; -" ,-++++)+++++++;;;'#%) "; -" @+++&&--&)++++;;%'#'-. "; -" ,&++-@@,,,,-)++;;;'>'+, "; -" =-++&@$@&&&&-&+;;;%##%+@ "; -" =,)+)-,@@&+++++;;;;%##%&@ "; -" @--&&,,@&)++++++;;;;'#)@ "; -" ---&)-,@)+++++++;;;%''+, "; -" $--&)+&$-+++++++;;;%%'';- "; -" .,-&+++-$&++++++;;;%''%&= "; -" $,-&)++)-@++++++;;%''%), "; -" =,@&)++++&&+++++;%'''+$@&++++++ "; -" .$@-++++++++++++;'#';,........=$@&++++ "; -" =$@@&)+++++++++++'##-.................=&++ "; -" .$$@-&)+++++++++;%#+$.....................=)+ "; -" $$,@-)+++++++++;%;@=........................,+ "; -" .$$@@-++++++++)-)@=............................ "; -" $,@---)++++&)@===............................,. "; -" $-@---&)))-$$=..............................=)!. "; -" --&-&&,,$=,==...........................=&+++!. "; -" =,=$..=$+)+++++&@$=.............=$@&+++++!++!. "; -" .)-++-+++++++++++++++++++++++++++!++!++!. "; -" .+-++-+++++++++++++++++++++++!+++!++!++!. "; -" .+-++-+++-+++++++++!+++!!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" .+-++-+++-+++++++++!++++!++++!+++!++!++!. "; -" =+-++-+++-+++++++++!++++!++++!+++!++!+++= "; -" $.++-+++-+++++++++!++++!++++!+++!++!+.$ "; -" =.++++++++++++++!++++!++++!+++!++.= "; -" $..+++++++++++++++!++++++...$ "; -" $$==...........==$$ "; -" "; -" "; -" "; -" "; -" "; -" "; -" "; -" "; -" " |] - -let window = GWindow.window ~title:"DnD Test" () -let _ = window#misc#realize () - -let drag_icon = - GDraw.pixmap_from_xpm_d ~data:drag_icon_xpm ~window () - -let trashcan_open = - GDraw.pixmap_from_xpm_d ~data:trashcan_open_xpm ~window () - -let trashcan_closed = - GDraw.pixmap_from_xpm_d ~data:trashcan_closed_xpm ~window () - -let targets = [ - { target = "STRING"; flags = []; info = 0}; - { target = "text/plain"; flags = []; info = 0}; - { target = "text/uri-list"; flags = []; info = 2}; - { target = "application/x-rootwin-drop"; flags = []; info = 1} -] - -class drag_handler = object - method private beginning (_ : drag_context) = () - method private data_delete (_ : drag_context) = () - method private data_get (_ : drag_context) (_ : selection_data) - ~info:(_ : int) ~time:(_ : int) = () - method private data_received (_ : drag_context) ~x:(_ : int) ~y:(_ : int) - (_ : selection_data) ~info:(_ : int) ~time:(_ : int) = () - method private drop (_ : drag_context) ~x:(_ : int) ~y:(_ : int) - ~time:(_ : int) = false - method private ending (_ : drag_context) = () - method private leave (_ : drag_context) ~time:(_ : int) = () - method private motion (_ : drag_context) ~x:(_ : int) ~y:(_ : int) - ~time:(_ : int) = false -end - - -class target_drag ?packing ?show () = - let pixmap = GMisc.pixmap trashcan_closed ?packing ?show () in -object (self) - inherit widget pixmap#as_widget - inherit drag_handler - val mutable have_drag = false - - method leave _ ~time = - print_endline "leave"; flush stdout; - have_drag <- false; - pixmap#set_pixmap trashcan_closed - - method motion context ~x ~y ~time = - if not have_drag then begin - have_drag <- true; - pixmap#set_pixmap trashcan_open - end; - let source_typename = - try - context#source_widget#misc#get_type - with Gpointer.Null -> "unknown" - in - Printf.printf "motion, source %s\n" source_typename; flush stdout; - context#status [context#suggested_action] ~time; - true - - method drop context ~x ~y ~time = - prerr_endline "drop"; flush stdout; - have_drag <- false; - pixmap#set_pixmap trashcan_closed; - match context#targets with - | [] -> false - | d :: _ -> pixmap#drag#get_data d ~context ~time; true - - method data_received context ~x ~y data ~info ~time = - if data#format = 8 then begin - Printf.printf "Received \"%s\" in trashcan\n" data#data; - flush stdout; - context#finish ~success:true ~del:false ~time - end - else context#finish ~success:false ~del:false ~time - - initializer - pixmap#drag#dest_set targets ~actions:[`COPY;`MOVE]; - pixmap#drag#connect#leave ~callback:self#leave; - pixmap#drag#connect#motion ~callback:self#motion; - pixmap#drag#connect#drop ~callback:self#drop; - pixmap#drag#connect#data_received ~callback:self#data_received; - () -end - -class label_drag ?packing ?show () = - let label = GMisc.label ~text:"Drop Here\n" ?packing ?show () in -object (self) - inherit widget label#as_widget - inherit drag_handler - method data_received context ~x ~y data ~info ~time = - if data#format = 8 then begin - Printf.printf "Received \"%s\" in label\n" data#data; - flush stdout; - context#finish ~success:true ~del:false ~time - end - else context#finish ~success:false ~del:false ~time - - initializer - label#drag#dest_set targets ~actions:[`COPY; `MOVE ]; - label#drag#connect#data_received ~callback:self#data_received; - () -end - -class source_drag ?packing ?show () = - let button = GButton.button ~label:"Drag Here\n" ?packing ?show () in -object (self) - inherit widget button#as_widget - inherit drag_handler - method data_get _ data ~info ~time = - if info = 1 then begin - print_endline "I was dropped on the rootwin"; flush stdout - end - else if info = 2 then - data#set ~typ:data#target ~format:8 - ~data:"file:///home/otaylor/images/weave.png" - else - data#set ~typ:data#target ~format:8 ~data:"I'm Data!" - - method data_delete _ = - print_endline "Delete the data!"; flush stdout - - initializer - button#drag#source_set targets - ~modi:[`BUTTON1; `BUTTON3 ] ~actions:[`COPY; `MOVE ]; - button#drag#source_set_icon drag_icon; - button#drag#connect#data_get ~callback:self#data_get; - button#drag#connect#data_delete ~callback:self#data_delete; - () -end - -class popup () = object (self) - inherit drag_handler - val mutable popup_window = (None : GWindow.window option) - val mutable popped_up = false - val mutable in_popup = false - val mutable popdown_timer = None - val mutable popup_timer = None - - method timer = popup_timer - method remove_timer () = - may popup_timer - ~f:(fun pdt -> Timeout.remove pdt; popup_timer <- None) - method add_timer time ~callback = - popup_timer <- Some (Timeout.add ~ms:time ~callback) - - method popdown () = - popdown_timer <- None; - may popup_window ~f:(fun w -> w#misc#hide ()); - popped_up <- false; - false - - method motion (_ : drag_context) ~x ~y ~time = - if not in_popup then begin - in_popup <- true; - may popdown_timer ~f: - begin fun pdt -> - print_endline "removed popdown"; flush stdout; - Timeout.remove pdt; - popdown_timer <- None - end - end; - true - - method leave (_ : drag_context) ~time = - if in_popup then begin - in_popup <- false; - if popdown_timer = None then begin - print_endline "added popdown"; flush stdout; - popdown_timer <- Some (Timeout.add ~ms:500 ~callback:self#popdown) - end - end - - method popup () = - if not popped_up then begin - if popup_window = None then begin - let w = GWindow.window ~kind:`POPUP ~position:`MOUSE () in - popup_window <- Some w; - let table = GPack.table ~rows:3 ~columns:3 ~packing:w#add () in - for i = 0 to 2 do - for j = 0 to 2 do - let button = - GButton.button ~label:(string_of_int i ^ "," ^ string_of_int j) - ~packing:(table#attach ~left:i ~top:j ~expand:`BOTH) () - in - button#drag#dest_set targets ~actions:[`COPY; `MOVE ]; - button#drag#connect#motion ~callback:self#motion; - button#drag#connect#leave ~callback:self#leave; - done - done - end; - may popup_window ~f:(fun w -> w#show ()); - popped_up <- true - end; - popdown_timer <- Some (Timeout.add ~ms:500 ~callback:self#popdown); - print_endline "added popdown"; flush stdout; - self#remove_timer (); - false -end - -class popsite ?packing ?show () = - let label = GMisc.label ~text:"Popup\n" ?packing ?show () - and popup = new popup () in -object (self) - inherit widget label#as_widget - inherit drag_handler - method motion _ ~x ~y ~time = - if popup#timer = None then begin - print_endline "added popdown"; flush stdout; - popup#add_timer 500 ~callback:popup#popup - end; - true - - method leave _ ~time = - popup#remove_timer () - - initializer - label#drag#dest_set targets ~actions:[`COPY; `MOVE ]; - label#drag#connect#motion ~callback:self#motion; - label#drag#connect#leave ~callback:self#leave; - () -end - -let main () = - window#connect#destroy ~callback: Main.quit; - let table = GPack.table ~rows:2 ~columns:2 ~packing:window#add () in - let attach = table#attach ~expand:`BOTH in - new label_drag ~packing:(attach ~left:0 ~top:0) (); - new target_drag ~packing:(attach ~left:1 ~top:0) (); - new source_drag ~packing:(attach ~left:0 ~top:1) (); - new popsite ~packing:(attach ~left:1 ~top:1) (); - - window#show (); - Main.main () - -let _ = - main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/testgtk.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/testgtk.ml deleted file mode 100644 index 6c937f56d..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/testgtk.ml +++ /dev/null @@ -1,1140 +0,0 @@ -(* $Id$ *) - -open GdkKeysyms -open GMain -open GObj - -let create_bbox direction title spacing child_w child_h layout = - let frame = GBin.frame ~label: title () in - let bbox = GPack.button_box direction ~border_width: 5 ~packing: frame#add - ~layout: layout ~child_height: child_h ~child_width: child_w - ~spacing: spacing () in - GButton.button ~label: "OK" ~packing: bbox#add (); - GButton.button ~label: "Cancel" ~packing: bbox#add (); - GButton.button ~label: "Help" ~packing: bbox#add (); - frame#coerce - -let create_button_box = - let rw = ref None in - let aux () = - match !rw with - | None -> - let window = GWindow.window ~title: "Button Boxes" ~border_width: 0 () in - rw := Some window; - window #connect#destroy ~callback:(fun _ -> rw := None); - - let main_vbox = GPack.vbox ~packing: (window#add) () in - - let frame_horz = GBin.frame ~label: "Horizontal Button Boxes" - ~packing:(main_vbox#pack ~expand:true ~fill:true ~padding:10) () in - - let vbox = GPack.vbox ~border_width: 10 ~packing: frame_horz#add () in - - vbox#add (create_bbox `HORIZONTAL "Spread" 40 85 20 `SPREAD); - vbox#pack (create_bbox `HORIZONTAL "Edge" 40 85 20 `EDGE) - ~expand: true ~fill: true ~padding: 5; - vbox#pack (create_bbox `HORIZONTAL "Start" 40 85 20 `START) - ~expand: true ~fill: true ~padding: 5; - vbox#pack (create_bbox `HORIZONTAL "End" 40 85 20 `END) - ~expand: true ~fill: true ~padding: 5; - - let frame_vert = GBin.frame ~label: "Vertical Button Boxes" - ~packing:(main_vbox#pack ~expand:true ~fill:true ~padding:10) () in - - let hbox = GPack.hbox ~border_width: 10 ~packing: frame_vert#add () in - hbox#add (create_bbox `VERTICAL "Spread" 30 85 20 `SPREAD); - hbox#pack (create_bbox `VERTICAL "Edge" 30 85 20 `EDGE) - ~expand: true ~fill: true ~padding: 5; - hbox#pack (create_bbox `VERTICAL "Start" 30 85 20 `START) - ~expand: true ~fill: true ~padding: 5; - hbox#pack (create_bbox `VERTICAL "End" 30 85 20 `END) - ~expand: true ~fill: true ~padding: 5; - window #show () - - | Some window -> window #destroy () -in aux - - -let button_window button _ = - if button #misc#visible then - button #misc#hide () - else - button #misc#show () - -let create_buttons = - let rw = ref None in - let aux () = - match !rw with - | None -> - let window = GWindow.window ~title: "GtkButton" ~border_width: 0 () in - rw := Some window; - window #connect#destroy ~callback:(fun _ -> rw := None); - - let box1 = GPack.vbox ~packing:window#add () in - - let table = GPack.table ~rows:3 ~columns:3 ~homogeneous:false - ~row_spacings:3 ~col_spacings:3 ~border_width:10 - ~packing:box1#add () in - - let button = Array.create 9 (GButton.button ~label:"button1" ()) in - for i = 2 to 9 do - button.(i-1) <- GButton.button ~label:("button" ^ string_of_int i) (); - done; - - let f i l r t b = - button.(i) #connect#clicked ~callback:(button_window button.(i+1)); - table #attach button.(i)#coerce ~left:l ~right:r ~top:t ~bottom:b - ~xpadding:0 ~ypadding:0 ~expand:`BOTH - in - f 0 0 1 0 1; - f 1 1 2 1 2; - f 2 2 3 2 3; - f 3 0 1 2 3; - f 4 2 3 0 1; - f 5 1 2 2 3; - f 6 1 2 0 1; - f 7 2 3 1 2; - button.(8) #connect#clicked ~callback:(button_window button.(0)); - table #attach button.(8)#coerce ~left:0 ~right:1 ~top:1 ~bottom:2 - ~xpadding:0 ~ypadding:0 ~expand:`BOTH; - - GMisc.separator `HORIZONTAL ~packing:box1#pack (); - - let box2 = GPack.vbox ~spacing: 10 ~border_width: 10 - ~packing: box1#pack () in - - let button = GButton.button ~label: "close" ~packing: box2#add () in - button #connect#clicked ~callback: window#destroy; - button #grab_default (); - window #show () - - | Some window -> window #destroy () -in aux - - - -let create_check_buttons = - let rw = ref None in - let aux () = - match !rw with - | None -> - let window = GWindow.window ~title: "GtkCheckButton" - ~border_width: 0 () in - rw := Some window; - window #connect#destroy ~callback:(fun _ -> rw := None); - - let box1 = GPack.vbox ~packing:window#add () in - let box2 = GPack.vbox ~spacing: 10 ~border_width: 10 - ~packing: box1#pack () in - - for i = 1 to 3 do - GButton.check_button ~label:("button" ^ (string_of_int i)) - ~packing: box2#add (); - done; - - GMisc.separator `HORIZONTAL ~packing: box1#pack (); - - let box2 = GPack.vbox ~spacing:10 ~border_width:10 - ~packing: box1#pack () in - - let button = GButton.button ~label: "close" ~packing:box2#add () in - button #connect#clicked ~callback: window#destroy; - button #grab_default (); - window #show () - - | Some window -> window #destroy () -in aux - - -let create_radio_buttons = - let rw = ref None in - let aux () = - match !rw with - | None -> - let window = GWindow.window ~title: "radio buttons" - ~border_width: 0 () in - rw := Some window; - window #connect#destroy ~callback:(fun _ -> rw := None); - - let box1 = GPack.vbox ~packing:window#add () in - - let box2 = GPack.vbox ~spacing:10 ~border_width:10 - ~packing: box1#pack () in - - let button = GButton.radio_button ~label:"button1" - ~packing: box2#add () in - - let button = GButton.radio_button ~label:"button2" ~group:button#group - ~packing: box2#add ~active:true () in - - let button = GButton.radio_button ~label:"button3" ~group:button#group - ~packing: box2#add () in - - GMisc.separator `HORIZONTAL ~packing: box1#pack (); - - let box2 = GPack.vbox ~spacing:10 ~border_width:10 - ~packing: box1#pack () in - - let button = GButton.button ~label: "close" ~packing: box2#add () in - button #connect#clicked ~callback: window #destroy; - button #grab_default (); - window #show () - - | Some window -> window #destroy () -in aux - - -let create_toggle_buttons = - let rw = ref None in - let aux () = - match !rw with - | None -> - let window = GWindow.window ~title: "GtkToggleButton" - ~border_width: 0 () in - rw := Some window; - window #connect#destroy ~callback:(fun _ -> rw := None); - - let box1 = GPack.vbox ~packing: window#add () in - - let box2 = GPack.vbox ~spacing: 10 ~border_width: 10 - ~packing: box1#pack () in - - for i = 1 to 3 do - GButton.toggle_button ~label:("button" ^ (string_of_int i)) - ~packing: box2#add () - done; - - GMisc.separator `HORIZONTAL ~packing: box1#pack (); - - let box2 = GPack.vbox ~spacing: 10 ~border_width: 10 - ~packing: box1#pack () in - - let button = GButton.button ~label: "close" ~packing:box2#add () in - button #connect#clicked ~callback: window#destroy; - button #grab_default (); - window #show () - - | Some window -> window #destroy () -in aux - - -(* Menus *) - -let create_menu depth tearoff = - let rec aux depth tearoff = - let menu = GMenu.menu () and group = ref None in - if tearoff then ignore (GMenu.tearoff_item ~packing: menu#append ()); - for i = 0 to 4 do - let menuitem = GMenu.radio_menu_item ?group:!group - ~label:("item " ^ string_of_int depth ^ " - " ^ string_of_int (i+1)) - ~packing:menu#append ~show_toggle:(depth mod 2 <> 0) - () in - group := Some (menuitem #group); - if i = 3 then menuitem #misc#set_sensitive false; - if depth > 1 then - menuitem #set_submenu (aux (depth-1) true) - done; - - menu - in aux depth tearoff - - -let create_menus = - let rw = ref None in - fun () -> - match !rw with - | None -> - let window = GWindow.window ~title: "menus" - ~border_width: 0 () in - rw := Some window; - window #connect#destroy ~callback:(fun _ -> rw := None); - window #event#connect#delete ~callback:(fun _ -> true); - - let accel_group = GtkData.AccelGroup.create () in - window #add_accel_group accel_group ; - - let box1 = GPack.vbox ~packing:window#add () in - - let menubar = GMenu.menu_bar ~packing: box1#pack () in - - let menuitem = GMenu.menu_item ~label:"test\nline2" - ~packing: menubar#append () in - menuitem #set_submenu (create_menu 2 true); - - let menuitem = GMenu.menu_item ~label:"foo" - ~packing: menubar#append () in - menuitem #set_submenu (create_menu 3 true); - menuitem #right_justify (); - - let box2 = GPack.vbox ~spacing: 10 ~packing: box1#add - ~border_width: 10 () in - - let menu = create_menu 1 false in - menu #set_accel_group accel_group; - - let menuitem = GMenu.check_menu_item ~label:"Accelerate Me" - ~packing:menu#append () in - menuitem #add_accelerator ~group:accel_group _M - ~flags:[`VISIBLE; `SIGNAL_VISIBLE]; - - let menuitem = GMenu.check_menu_item ~label:"Accelerator Locked" - ~packing:menu#append () in - menuitem #add_accelerator ~group:accel_group _L - ~flags:[`VISIBLE; `LOCKED]; - - let menuitem = GMenu.check_menu_item ~label:"Accelerators Frozen" - ~packing:menu#append () in - menuitem #add_accelerator ~group:accel_group _F - ~flags:[`VISIBLE]; - menuitem #misc#lock_accelerators (); - - let optionmenu = GMenu.option_menu ~packing: box2#add () in - optionmenu #set_menu menu; - optionmenu #set_history 3; - - GMisc.separator `HORIZONTAL ~packing: box1#pack (); - - let box2 = GPack.vbox ~spacing:10 ~border_width:10 - ~packing: box1#pack () in - - let button = GButton.button ~label: "close" ~packing: box2#add () in - button #connect#clicked ~callback: window#destroy; - button #grab_default (); - window #show () - - | Some window -> window #destroy () - - - -(* Modal windows *) - -let cmw_destroy_cb _ = - Main.quit () - -let cmw_color parent _ = - let csd = GWindow.color_selection_dialog ~modal:true - ~title:"This is a modal color selection dialog" () in - csd # set_transient_for parent; - csd # connect#destroy ~callback:cmw_destroy_cb; - csd # ok_button # connect#clicked ~callback:csd#destroy; - csd # cancel_button # connect#clicked ~callback:csd#destroy; - csd # show (); - Main.main () - -let cmw_file parent _ = - let fs = GWindow.file_selection ~modal:true - ~title:"This is a modal file selection dialog" () in - fs # set_transient_for parent; - fs # connect#destroy ~callback:cmw_destroy_cb; - fs # ok_button # connect#clicked ~callback:fs#destroy; - fs # cancel_button # connect#clicked ~callback:fs#destroy; - fs # show (); - Main.main () - -let create_modal_window () = - let window = GWindow.window ~modal:true ~title:"This window is modal" () in - let box1 = GPack.vbox ~spacing:5 ~border_width:3 ~packing:window#add () in - let frame1 = GBin.frame ~label:"Standard dialogs in modal form" - ~packing:(box1#pack ~expand:true ~padding:4) () in - let box2 = GPack.vbox ~homogeneous:true ~spacing:5 ~packing:frame1#add () in - let btnColor = GButton.button ~label:"Color" - ~packing:(box2#pack ~padding:4) () - and btnFile = GButton.button ~label:"File selection" - ~packing:(box2#pack ~padding:4) () - and btnClose = GButton.button ~label:"Close" - ~packing:(box2#pack ~padding:4) () in - GMisc.separator `HORIZONTAL - ~packing:(box1#pack ~padding:4) (); - - btnClose #connect#clicked ~callback:(fun _ -> window #destroy ()); - window #connect#destroy ~callback:cmw_destroy_cb; - btnColor #connect#clicked ~callback: (cmw_color window); - btnFile #connect#clicked ~callback: (cmw_file window); - window # show (); - Main.main () - - -(* corrected bug in testgtk.c *) -let scrolled_windows_remove, scrolled_windows_clean = - let parent = ref None and float_parent = ref None in - let remove (scrollwin : GBin.scrolled_window) () = - match !parent with - | None -> - parent := scrollwin#misc#parent; - let f = GWindow.window ~title:"new parent" () in - float_parent := Some f#coerce; - f #set_default_size ~width:200 ~height:200; - scrollwin #misc#reparent f#coerce; - f #show () - | Some p -> - scrollwin #misc#reparent p; - match !float_parent with - | None -> () - | Some f -> - f #destroy (); - float_parent := None; - parent := None - and clean () = - match !float_parent with - | None -> () - | Some p -> p #destroy (); parent := None; float_parent := None - in remove, clean - - -(* scrolled windows *) - -let create_scrolled_windows = - let rw = ref None in - let aux () = - match !rw with - | None -> - let window = GWindow.dialog ~title:"dialog" ~border_width:0 () in - rw := Some window; - window #connect#destroy ~callback:(fun _ -> rw := None); - window #connect#destroy ~callback:scrolled_windows_clean; - - let scrolled_window = GBin.scrolled_window ~border_width:10 - ~hpolicy: `AUTOMATIC ~vpolicy:`AUTOMATIC - ~packing: window#vbox#add () in - - let table = GPack.table ~rows:20 ~columns:20 ~row_spacings:10 - ~col_spacings:10 ~packing:scrolled_window#add_with_viewport () in - table #focus#set_hadjustment (Some scrolled_window # hadjustment); - table #focus#set_vadjustment (Some scrolled_window # vadjustment); - - for i = 0 to 19 do - for j=0 to 19 do - GButton.toggle_button - ~label:("button ("^ string_of_int i ^","^ string_of_int j ^")\n") - ~packing:(table #attach ~left:i ~top:j ~expand:`BOTH) () - done - done; - - let button = GButton.button ~label:"close" - ~packing:window#action_area#add () in - button #connect#clicked ~callback:(window #destroy); - button #grab_default (); - - let button = GButton.button ~label:"remove" - ~packing:window#action_area#add () in - button #connect#clicked - ~callback:(scrolled_windows_remove scrolled_window); - button #grab_default (); - - window #set_default_size ~width:300 ~height:300; - window #show () - - | Some window -> window #destroy () - in aux - - -(* Toolbar *) - -let make_toolbar (toolbar : GButton.toolbar) window = - let icon = - let info = GDraw.pixmap_from_xpm ~file:"test.xpm" ~window () in - fun () -> (GMisc.pixmap info ())#coerce - in - - toolbar #insert_button ~text:"Horizontal" - ~tooltip:"Horizontal toolbar layout" - ~tooltip_private:"Toolbar/Horizontal" - ~icon:(icon ()) - ~callback:(fun _ -> toolbar #set_orientation `HORIZONTAL) (); - - toolbar #insert_button ~text:"Vertical" - ~tooltip:"Vertical toolbar layout" - ~tooltip_private:"Toolbar/Vertical" - ~icon:(icon ()) - ~callback:(fun _ -> toolbar #set_orientation `VERTICAL) (); - - toolbar #insert_space (); - - toolbar #insert_button ~text:"Icons" - ~tooltip: "Only show toolbar icons" - ~tooltip_private:"Toolbar/IconsOnly" - ~icon:(icon ()) - ~callback:(fun _ -> toolbar #set_style `ICONS) (); - - toolbar #insert_button ~text:"Text" - ~tooltip: "Only show toolbar text" - ~tooltip_private:"Toolbar/TextOnly" - ~icon:(icon ()) - ~callback:(fun _ -> toolbar #set_style `TEXT) (); - - toolbar #insert_button ~text:"Both" - ~tooltip: "Show toolbar icons and text" - ~tooltip_private:"Toolbar/Both" - ~icon:(icon ()) - ~callback:(fun _ -> toolbar #set_style `BOTH) (); - - toolbar #insert_space (); - - GEdit.entry ~packing:(toolbar #insert_widget - ~tooltip:"This is an unusable GtkEntry" - ~tooltip_private: "Hey don't click me!!!") (); - - toolbar #insert_button ~text:"Small" - ~tooltip:"Use small spaces" - ~tooltip_private:"Toolbar/Small" - ~icon:(icon ()) - ~callback:(fun _ -> toolbar #set_space_size 5) (); - - toolbar #insert_button ~text:"Big" - ~tooltip:"Use big spaces" - ~tooltip_private:"Toolbar/Big" - ~icon:(icon ()) - ~callback:(fun _ -> toolbar #set_space_size 10) (); - - toolbar #insert_space (); - - toolbar #insert_button ~text:"Enable" - ~tooltip:"Enable tooltips" - ~icon:(icon ()) - ~callback:(fun _ -> toolbar #set_tooltips true) (); - - toolbar #insert_button ~text:"Disable" - ~tooltip:"Disable tooltips" - ~icon:(icon ()) - ~callback:(fun _ -> toolbar #set_tooltips false) (); - - toolbar #insert_space (); - - toolbar #insert_button ~text:"Borders" - ~tooltip:"Show borders" - ~icon:(icon ()) - ~callback:(fun _ -> toolbar #set_button_relief `NORMAL) (); - - toolbar #insert_button ~text:"Borderless" - ~tooltip:"Hide borders" - ~icon:(icon ()) - ~callback:(fun _ -> toolbar #set_button_relief `NONE) (); - - toolbar #insert_space (); - - toolbar #insert_button ~text:"Empty" - ~tooltip:"Empty spaces" - ~icon:(icon ()) - ~callback:(fun _ -> toolbar #set_space_style `EMPTY) (); - - toolbar #insert_button ~text:"Lines" - ~tooltip:"Lines in spaces" - ~icon:(icon ()) - ~callback:(fun _ -> toolbar #set_space_style `LINE) (); - () - -let create_toolbar = - let rw = ref None in - let aux () = - match !rw with - | None -> - let window = GWindow.window ~title: "Toolbar test" - ~border_width: 0 ~allow_shrink: false ~allow_grow: true - ~auto_shrink: true () in - rw := Some window; - window #connect#destroy ~callback:(fun _ -> rw := None); - window #misc #realize (); - - let toolbar = GButton.toolbar ~packing: window#add () in - make_toolbar toolbar window; - - window #show () - - | Some window -> window #destroy () - in aux - - -(* Handlebox *) - -let handle_box_child_signal action (hb : GBin.handle_box) child = - Printf.printf "%s: child <%s> %s\n" hb#misc#get_type child#misc#get_type action - -let create_handle_box = - let rw = ref None in - let aux () = - match !rw with - | None -> - let window = GWindow.window ~title: "Handle box test" - ~border_width: 20 ~allow_shrink: false ~allow_grow: true - ~auto_shrink: true () in - rw := Some window; - window #connect#destroy ~callback:(fun _ -> rw := None); - window #misc #realize (); - - let vbox = GPack.vbox ~packing:window#add () in - - GMisc.label ~text:"Above" ~packing:vbox#add (); - GMisc.separator `HORIZONTAL ~packing:vbox#add (); - - let hbox = GPack.hbox ~spacing:10 ~packing:vbox#add () in - GMisc.separator `HORIZONTAL ~packing:vbox#add (); - - GMisc.label ~text:"Below" ~packing:vbox#add (); - let handle_box = GBin.handle_box ~packing:hbox#pack () in - handle_box #connect#child_attached - ~callback:(handle_box_child_signal "attached" handle_box); - handle_box #connect#child_detached - ~callback:(handle_box_child_signal "detached" handle_box); - - let toolbar = GButton.toolbar ~packing:handle_box#add () in - make_toolbar toolbar window; - toolbar #set_button_relief `NORMAL; - - let handle_box = GBin.handle_box ~packing:hbox#pack () in - handle_box #connect#child_attached - ~callback:(handle_box_child_signal "attached" handle_box); - handle_box #connect#child_detached - ~callback:(handle_box_child_signal "detached" handle_box); - - let handle_box2 = GBin.handle_box ~packing:handle_box#add () in - handle_box2 #connect#child_attached - ~callback:(handle_box_child_signal "attached" handle_box); - handle_box2 #connect#child_detached - ~callback:(handle_box_child_signal "detached" handle_box); - - GMisc.label ~text:"Fooo!" ~packing:handle_box2#add (); - window #show () - - | Some window -> window #destroy () - in aux - - - -(* Tree *) - -class tree_and_buttons () = -object - val tree = GTree.tree () - val add_button = GButton.button ~label: "Add Item" () - val remove_button = GButton.button ~label:"Remove Item(s)" () - val subtree_button = GButton.button ~label:"Remove Subtree" () - val mutable nb_item_add = 0 - - method tree = tree - method add_button = add_button - method remove_button = remove_button - method subtree_button = subtree_button - method nb_item_add = nb_item_add - method incr_nb_item_add = nb_item_add <- nb_item_add + 1 -end - -let cb_tree_destroy_event w = () - -let cb_add_new_item (treeb : tree_and_buttons) _ = - let subtree = - match treeb#tree#selection with - | [] -> treeb#tree - | selected_item :: _ -> - match selected_item#subtree with Some t -> t - | None -> - let t = GTree.tree () in - selected_item#set_subtree t; - t - in - let item_new = GTree.tree_item ~packing:(subtree#insert ~pos:0) - ~label:("item add " ^ string_of_int treeb # nb_item_add) () in - treeb #incr_nb_item_add - - -let cb_remove_item (treeb : tree_and_buttons) _ = - let tree = treeb#tree in - match tree #selection with - | [] -> () - | selected -> tree #remove_items selected - - -let cb_remove_subtree (treeb : tree_and_buttons) _ = - match treeb#tree #selection with - | [] -> () - | selected_item :: _ -> - try selected_item#subtree; selected_item#remove_subtree () - with Not_found -> () - -let cb_tree_changed (treeb : tree_and_buttons) _ = - let tree = treeb#tree in - let nb_selected = List.length (tree#selection) in - if nb_selected = 0 then begin - treeb # remove_button #misc#set_sensitive false; - treeb # subtree_button #misc#set_sensitive false; - end else begin - treeb # remove_button #misc#set_sensitive true; - treeb # subtree_button #misc#set_sensitive (nb_selected = 1); - treeb # add_button #misc#set_sensitive (nb_selected = 1); - end - - -let rec create_subtree (item : GTree.tree_item) level nb_item_max - recursion_level_max = - if level = recursion_level_max then () - else begin - let item_subtree = GTree.tree () in - for nb_item = 1 to nb_item_max do - let item_new = GTree.tree_item ~packing:(item_subtree#insert ~pos:0) - ~label:("item" ^ string_of_int level ^ "-" ^ string_of_int nb_item) () - in - create_subtree item_new (level + 1) nb_item_max recursion_level_max; - done; - item # set_subtree item_subtree - end - - -let create_tree_sample selection_mode draw_line view_line no_root_item - nb_item_max recursion_level_max = - let window = GWindow.window ~title:"Tree Sample" () in - let box1 = GPack.vbox ~packing:window#add () in - let box2 = GPack.vbox ~packing:box1#add ~border_width:5 () in - let scrolled_win = GBin.scrolled_window ~packing:box2#add - ~hpolicy: `AUTOMATIC ~vpolicy:`AUTOMATIC - ~width:200 ~height:200 () in - - let root_treeb = new tree_and_buttons () in - let root_tree = root_treeb#tree in - root_tree #connect#selection_changed ~callback:(cb_tree_changed root_treeb); - scrolled_win #add_with_viewport root_tree#coerce; - root_tree #set_selection_mode selection_mode; - root_tree #set_view_lines draw_line; - root_tree #set_view_mode - (match view_line with `LINE -> `ITEM | `ITEM -> `LINE); - - if no_root_item then - for nb_item = 1 to nb_item_max do - let item_new = GTree.tree_item ~label:("item0-" ^ string_of_int nb_item) - ~packing:(root_tree#insert ~pos:0) () in - create_subtree item_new 1 nb_item_max recursion_level_max; - done - else begin - let root_item = GTree.tree_item ~label:"root item" - ~packing:(root_tree #insert ~pos:0) () in - create_subtree root_item 0 nb_item_max recursion_level_max - end; - - let box2 = GPack.vbox ~border_width:5 ~packing:box1#pack () in - - let button = root_treeb #add_button in - button #misc#set_sensitive false; - button #connect#clicked ~callback:(cb_add_new_item root_treeb); - box2 #add button#coerce; - - let button = root_treeb #remove_button in - button #misc#set_sensitive false; - button #connect#clicked ~callback:(cb_remove_item root_treeb); - box2 #add button#coerce; - - let button = root_treeb #subtree_button in - button #misc#set_sensitive false; - button #connect#clicked ~callback:(cb_remove_subtree root_treeb); - box2 #add button#coerce; - - GMisc.separator `HORIZONTAL ~packing:box1#pack (); - - let button = GButton.button ~label:"Close" ~packing:box2#add () in - button #connect#clicked ~callback:window#destroy; - - window #show () - - -let create_tree_mode_window = - let rw = ref None in - let aux () = - let default_number_of_item = 3.0 in - let default_recursion_level = 3.0 in - let single_button = GButton.radio_button ~label:"SINGLE" () in - let browse_button = GButton.radio_button - ~group:single_button#group ~label:"BROWSE" () in - let multiple_button = GButton.radio_button - ~group:browse_button#group ~label:"MULTIPLE" () in - let draw_line_button = GButton.check_button ~label:"Draw line" () in - let view_line_button = GButton.check_button ~label:"View line mode" () in - let no_root_item_button = GButton.check_button - ~label:"Without Root item" () in - let nb_item_spinner = GEdit.spin_button - ~adjustment:(GData.adjustment ~value:default_number_of_item - ~lower:1.0 ~upper:255.0 ~step_incr:1.0 ~page_incr:5.0 - ~page_size:0.0 ()) ~rate:0. ~digits:0 () in - let recursion_spinner = GEdit.spin_button - ~adjustment:(GData.adjustment ~value:default_recursion_level - ~lower:0.0 ~upper:255.0 ~step_incr:1.0 ~page_incr:5.0 - ~page_size:0.0 ()) ~rate:0. ~digits:0 () in - let cb_create_tree _ = - let selection_mode = - if single_button #active then `SINGLE - else if browse_button #active then `BROWSE - else `MULTIPLE in - let nb_item = nb_item_spinner#value_as_int in - let recursion_level = recursion_spinner#value_as_int in - create_tree_sample selection_mode (draw_line_button #active) - (if (view_line_button #active) then `ITEM else `LINE) - (no_root_item_button #active) - nb_item recursion_level - in - match !rw with - | None -> - let window = GWindow.window ~title:"Set Tree Parameters" () in - rw := Some window; - window #connect#destroy ~callback:(fun _ -> rw := None); - - let box1 = GPack.vbox ~packing:window#add () in - - let box2 = GPack.vbox ~spacing:5 ~packing:box1#add - ~border_width:5 () in - - let box3 = GPack.hbox ~spacing:5 ~packing:box2#add () in - - let frame = GBin.frame ~label:"Selection Mode" ~packing:box3#add () - in - - let box4 = GPack.vbox ~packing:frame#add ~border_width:5 () in - - box4 #add single_button#coerce; - box4 #add browse_button#coerce; - box4 #add multiple_button#coerce; - - let frame = GBin.frame ~label:"Options" ~packing:box3#add () in - - let box4 = GPack.vbox ~packing:frame#add ~border_width:5 () in - box4 #add draw_line_button#coerce; - draw_line_button #set_active true; - - box4 #add view_line_button#coerce; - view_line_button #set_active true; - - box4 #add no_root_item_button#coerce; - - let frame = GBin.frame ~label:"Size Parameters" ~packing:box2#add () - in - - let box4 = GPack.hbox ~spacing:5 ~packing:frame#add ~border_width:5 () in - - let box5 = GPack.hbox ~spacing:5 ~packing:box4#add () in - let label = GMisc.label ~text:"Number of items : " - ~xalign:0. ~yalign:0.5 ~packing:box5#pack () in - box5 #pack nb_item_spinner#coerce; - - let label = GMisc.label ~text:"Depth : " ~xalign:0. ~yalign:0.5 - ~packing:box5#pack () in - box5 #pack recursion_spinner#coerce; - - GMisc.separator `HORIZONTAL ~packing:box1#pack (); - - let box2 = GPack.hbox ~homogeneous:true ~spacing:10 ~border_width:5 - ~packing:box1#pack () in - - let button = GButton.button ~label:"Create Tree" - ~packing:box2#add () in - button #connect#clicked ~callback:cb_create_tree; - - let button = GButton.button ~label: "close" ~packing:box2#add () in - button #connect#clicked ~callback: window#destroy; - button #grab_default (); - window #show () - - | Some window -> window #destroy () - in aux - - - -(* Tooltips *) - -let tips_query_widget_entered (toggle : GButton.toggle_button) - (tq : GMisc.tips_query) _ ~text ~privat:_ = - if toggle #active then begin - tq #set_text - (match text with - | None -> "There is no tip!" | Some _ -> "There is a tip!"); - GtkSignal.stop_emit () - end - -let tips_query_widget_selected (w : #widget option) ~text ~privat:tp _ = - (match w with - | None -> () - | Some w -> - Printf.printf "Help \"%s\" requested for <%s>\n" - (match tp with None -> "None" | Some t -> t) - (w #misc#get_type)); - true - - -let create_tooltips = - let rw = ref None in - let aux () = - match !rw with - | None -> - - let window = GWindow.window ~title:"Tooltips" - ~border_width:0 ~allow_shrink:false ~allow_grow:false - ~auto_shrink:true () in - rw := Some window; - let tooltips = GData.tooltips () in - window #connect#destroy - ~callback:(fun _ -> tooltips #destroy (); rw := None); - - let box1 = GPack.vbox ~packing:window#add () in - - let box2 = GPack.vbox ~spacing:10 ~border_width:10 - ~packing:box1#add () in - - let button = GButton.toggle_button ~label:"button1" - ~packing:box2#add () - in - tooltips #set_tip button#coerce ~text:"This is button1" - ~privat:"ContextHelp/buttons/1"; - - let button = GButton.toggle_button ~label:"button2" - ~packing:box2#add () - in - tooltips #set_tip button#coerce - ~text:"This is button 2. This is also a really long tooltip which probably won't fit on a single line and will therefore need to be wrapped. Hopefully the wrapping will work correctly." - ~privat:"ContextHelp/buttons/2_long"; - - let toggle = GButton.toggle_button ~label:"Override TipsQuery Label" - ~packing:box2#add () in - tooltips #set_tip toggle#coerce ~text:"Toggle TipsQuery view." - ~privat:"Hi msw! ;)"; - - let box3 = GPack.vbox ~spacing:5 ~border_width:5 () in - - let button = GButton.button ~label:"[?]" - ~packing:box3#pack () in - - let tips_query = GMisc.tips_query ~packing:box3#add () in - button #connect#clicked ~callback:(tips_query #start); - - tooltips #set_tip button#coerce ~text:"Start the Tooltips Inspector" - ~privat:"ContextHelp/buttons/?"; - - tips_query #set_caller button#coerce; - tips_query #connect#widget_entered - ~callback:(tips_query_widget_entered toggle tips_query); - tips_query #connect#widget_selected ~callback:tips_query_widget_selected; - - let frame = GBin.frame ~label:"Tooltips Inspector" - ~border_width:0 ~packing:(box2#pack ~expand:true ~padding:10) - ~label_xalign:0.5 ~label_yalign:0.0 () in - frame #add box3#coerce; - - GMisc.separator `HORIZONTAL ~packing:box1#pack (); - - let box2 = GPack.vbox ~spacing: 10 ~border_width: 10 - ~packing: box1#pack () in - - let button = GButton.button ~label: "close" ~packing: box2#add () in - button #connect#clicked ~callback: window#destroy; - button #grab_default (); - tooltips #set_tip button#coerce ~text:"Push this button to close window" - ~privat:"ContextHelp/buttons/Close"; - - window #show (); - - | Some window -> window #destroy () - in aux - - -(* Labels *) -let create_labels = - let rw = ref None in - let aux () = - match !rw with - | None -> - - let window = GWindow.window ~title:"Labels" ~border_width:5 () in - rw := Some window; - window #connect#destroy - ~callback:(fun _ -> rw := None); - - let hbox = GPack.hbox ~spacing:5 ~packing:window#add () in - let vbox = GPack.vbox ~spacing:5 ~packing:hbox#add () in - - let frame = GBin.frame ~label:"Normal Label" - ~packing:vbox#pack () in - GMisc.label ~text:"This is a normal label" ~packing:frame#add (); - - let frame = GBin.frame ~label:"Multi_line Label" - ~packing:vbox#pack () in - GMisc.label ~packing:frame#add - ~text:"This is a multi-line label.\nSecond line\nThird line" (); - - let frame = GBin.frame ~label:"Left Justified Label" - ~packing:vbox#pack () in - GMisc.label ~packing:frame#add ~justify:`LEFT - ~text:"This is a left justified\nmulti_line label\nThird line" (); - - let frame = GBin.frame ~label:"Right Justified Label" - ~packing:vbox#pack () in - GMisc.label ~packing:frame#add ~justify:`RIGHT - ~text:"This is a right justified\nmulti_line label\nThird line" (); - - let vbox = GPack.vbox ~spacing:5 ~packing:hbox#add () in - - let frame = GBin.frame ~label:"Line wrapped Label" - ~packing:vbox#pack () in - GMisc.label ~packing:frame#add ~line_wrap:true - ~text:"This is an example of a line-wrapped label. It should not be taking up the entire width allocated to it, but automatically wraps the words to fit. The time has come, for all good men, to come to the aid of their party. The sixth sheik's six sheep's sick.\n It supports multiple paragraphs correctly, and correctly adds many extra spaces. " (); - - let frame = GBin.frame ~label:"Underlined Label" - ~packing:vbox#pack () in - GMisc.label ~text:"This label is underlined!\nThis one is underlined in a quite a funky fashion" ~packing:frame#add - ~justify:`LEFT ~pattern:"_________________________ _ _________ _ _____ _ __ __ ___ ____ _____" (); - - window #show (); - - | Some window -> window #destroy () - in aux - - -(* reparent *) - - -let set_parent child old_parent = - let name_opt = function - | None -> "(NULL)" - | Some w -> w#misc#get_type in - Printf.printf - "set parent for \"%s\": new parent: \"%s\", old parent: \"%s\"\n" - child#misc#get_type - (match child#misc#parent with Some p -> p#misc#get_type | None -> "(NULL)") - (name_opt old_parent) - -let reparent_label (label : GMisc.label) new_parent _ = - label #misc#reparent new_parent - - - -let create_reparent = - let rw = ref None in - let aux () = - match !rw with - | None -> - - let window = GWindow.window ~title:"Reparent" ~border_width:5 () in - rw := Some window; - window #connect#destroy ~callback:(fun _ -> rw := None); - - let vbox = GPack.vbox ~packing:window#add () in - let hbox = GPack.hbox ~spacing:5 ~border_width:10 - ~packing:vbox#add () in - - let frame = GBin.frame ~label:"Frame1" ~packing:hbox#add () in - let vbox2 = GPack.vbox ~spacing:5 ~border_width:5 - ~packing:frame#add () in - let label = GMisc.label ~text:"Hello world" - ~packing:vbox2#pack () in - label #misc#connect#parent_set ~callback:(set_parent label); - let button = GButton.button ~label:"switch" - ~packing:vbox2#pack () in - button #connect#clicked ~callback:(reparent_label label vbox2#coerce); - - let frame = GBin.frame ~label:"Frame2" ~packing:hbox#add () in - let vbox2 = GPack.vbox ~spacing:5 ~packing:frame#add ~border_width:5 () in - let button = GButton.button ~label:"switch" - ~packing:vbox2#pack () in - button #connect#clicked ~callback:(reparent_label label vbox2#coerce); - - GMisc.separator `HORIZONTAL ~packing:vbox#pack (); - - let vbox = GPack.vbox ~spacing:10 ~border_width:10 - ~packing:vbox#pack () in - - let button = GButton.button ~label: "close" ~packing:vbox#add () in - button #connect#clicked ~callback: window#destroy; - button #grab_default (); - - window #show (); - - | Some window -> window #destroy () - in aux - - - - -let create_main_window () = - let buttons = [ - "button box", Some create_button_box; - "buttons", Some create_buttons; - "check buttons", Some create_check_buttons; - "clist", None; - "color selection", None; - "ctree", None; - "cursors", None; - "dialog", None; - "entry", None; - "event watcher", None; - "file selection", None; - "font selection", None; - "gamma curve", None; - "handle box", Some create_handle_box; - "item factory", None; - "labels", Some create_labels; - "layout", None; - "list", None; - "menus", Some create_menus; - "modal windows", Some create_modal_window; - "notebooks", None; - "panes", None; - "pixmap", None; - "preview color", None; - "preview gray", None; - "progress bar", None; - "radio buttons", Some create_radio_buttons; - "range controls", None; - "rc file", None; - "reparent", Some create_reparent; - "rulers", None; - "saved position", None; - "scrolled windows", Some create_scrolled_windows; - "shapes", None; - "spinbutton", None; - "statusbar", None; - "test idle", None; - "test mainloop", None; - "test scrolling", None; - "test selection", None; - "test timeout", None; - "text", None; - "toggle buttons", Some create_toggle_buttons; - "toolbar", Some create_toolbar; - "tooltips", Some create_tooltips; - "tree", Some create_tree_mode_window; - "WM hints", None - ] in - - let window = GWindow.window ~title:"main window" ~allow_shrink:false - ~allow_grow:false ~auto_shrink:false ~width:200 ~height:400 ~x:20 ~y:20 () in - - window #connect#destroy ~callback: Main.quit; - - let box1 = GPack.vbox ~packing: window#add () in - - GMisc.label ~text: "Gtk+ v1.2" ~packing:box1#pack (); - - let scrolled_window = GBin.scrolled_window ~border_width: 10 - ~hpolicy: `AUTOMATIC ~vpolicy: `AUTOMATIC - ~packing:box1#add () in - - let box2 = GPack.vbox ~border_width: 10 - ~packing:scrolled_window#add_with_viewport () in - box2 #focus#set_vadjustment (Some scrolled_window#vadjustment); - - let rec aux = function - | [] -> () - | (_, None) :: tl -> aux tl - | (label, Some func) :: tl -> - let button = GButton.button ~label: label ~packing: box2#add () in - button #connect#clicked ~callback: func; - aux tl - in aux buttons; - - GMisc.separator `HORIZONTAL ~packing: box1#pack (); - - let box2 = GPack.vbox ~spacing: 10 ~border_width: 10 - ~packing: box1#pack () in - - let button = GButton.button ~label: "close" ~packing: box2#add () in - button #connect#clicked ~callback: window#destroy; - button #grab_default (); - - window #show (); - - Main.main () - -let _ = create_main_window () - diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/testinput.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/testinput.ml deleted file mode 100644 index a6aceb825..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/testinput.ml +++ /dev/null @@ -1,43 +0,0 @@ -(* $Id$ *) - -open GMain - -let main () = - let window = GWindow.window () in - window#misc#set_name "Test input"; - window#connect#destroy ~callback:Main.quit; - - let vbox = GPack.vbox ~packing:window#add () in - - let drawing_area = - GMisc.drawing_area ~width:200 ~height:200 ~packing:vbox#add () in - - drawing_area#event#connect#key_press ~callback: - begin fun ev -> - let key = GdkEvent.Key.keyval ev in - if key >= 32 && key < 256 then - Printf.printf "I got a %c\n" (Char.chr key) - else - print_string "I got another key\n"; - flush stdout; - true - end; - - drawing_area#event#add - [`EXPOSURE;`LEAVE_NOTIFY;`BUTTON_PRESS; - `POINTER_MOTION;`POINTER_MOTION_HINT;`PROXIMITY_OUT]; - drawing_area#event#set_extensions `ALL; - drawing_area#misc#set_can_focus true; - drawing_area#misc#grab_focus (); - - GButton.button ~label:"Input Dialog" ~packing:vbox#pack (); - - let button = - GButton.button ~label:"Quit" ~packing:vbox#pack () in - - button#connect#clicked ~callback:window#destroy; - - window#show (); - Main.main () - -let _ = main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/tictactoe.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/tictactoe.ml deleted file mode 100644 index be01e19b9..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/tictactoe.ml +++ /dev/null @@ -1,113 +0,0 @@ -(* $Id$ *) - -open GtkNew -open GtkBase - -(* To create a new widget: - create an array sig_array containing the signals defined by - the new widget; - call: - make_new_widget name parent:parent signal_array:sig_array - where name is the name of the new widget (a string) - parent is the type of the parent: of type Gtk.New.object_type - This call returns a triple: - (get_type_func, new_func, sig_array_num) - where get_type_func is the new widget get_type function, - new_func is the function returning a new widget of the new type - sig_array_num is an array containing the Gtk id of the signals - of the new widget. -*) - -module Tictactoe = struct - type t = [`widget|`container|`box|`tictactoe] - module Signals = struct - open GtkSignal - let tictactoe : ([>`tictactoe],_) t = - { name = "tictactoe"; marshaller = marshal_unit } - let emit_tictactoe = emit_unit ~sgn:tictactoe - end - let create : unit -> t Gtk.obj = - let _,tictactoe_new = make_new_widget - ~name:"Tictactoe" ~parent:VBOX ~signals:[Signals.tictactoe] - in fun () -> Object.try_cast (tictactoe_new ()) "Tictactoe" -end - -open GMain - -class tictactoe_signals obj = object - inherit GContainer.container_signals obj - method tictactoe = - GtkSignal.connect ~sgn:Tictactoe.Signals.tictactoe obj ~after -end - -exception Trouve - -class tictactoe ?packing ?show () = - let obj : Tictactoe.t Gtk.obj = Tictactoe.create () in - let box = new GPack.box_skel obj in -object (self) - inherit GObj.widget obj - val mutable buttons = [||] - val mutable buttons_handlers = [||] - val label = GMisc.label ~text:"Go on!" ~packing:box#add () - method clear () = - for i = 0 to 2 do - for j = 0 to 2 do - let button = buttons.(i).(j) - and handler = buttons_handlers.(i).(j) in - button#misc#handler_block handler; - button#set_active false; - button#misc#handler_unblock handler - done - done - method connect = new tictactoe_signals obj - method emit_tictactoe () = - GtkSignal.emit_unit obj ~sgn:Tictactoe.Signals.tictactoe - method toggle () = - let rwins = [| [| 0; 0; 0 |]; [| 1; 1; 1 |]; [| 2; 2; 2 |]; - [| 0; 1; 2 |]; [| 0; 1; 2 |]; [| 0; 1; 2 |]; - [| 0; 1; 2 |]; [| 0; 1; 2 |] |] - and cwins = [| [| 0; 1; 2 |]; [| 0; 1; 2 |]; [| 0; 1; 2 |]; - [| 0; 0; 0 |]; [| 1; 1; 1 |]; [| 2; 2; 2 |]; - [| 0; 1; 2 |]; [| 2; 1; 0 |] |] in - label#set_text"Go on!"; - try - for k = 0 to 7 do - let rec aux i = - (i = 3) || - (buttons.(rwins.(k).(i)).(cwins.(k).(i))#active) && (aux (i+1)) in - if aux 0 then raise Trouve - done - with Trouve -> label#set_text "Win!!"; self#emit_tictactoe () - - initializer - let table = - GPack.table ~rows:3 ~columns:3 ~homogeneous:true ~packing:box#add () in - buttons <- - Array.init 3 ~f: - (fun i -> Array.init 3 ~f: - (fun j -> - GButton.toggle_button ~width:20 ~height:20 - ~packing:(table#attach ~left:i ~top:j ~expand:`BOTH) ())); - buttons_handlers <- - Array.mapi buttons ~f: - (fun i -> Array.mapi ~f: - (fun j button -> button #connect#toggled ~callback:self#toggle)); - GObj.pack_return self ~packing ~show; - () -end - -let win (ttt : tictactoe) _ = - Printf.printf "Gagne!!\n" ; - ttt #clear () - -let essai () = - let window = GWindow.window ~title:"Tictactoe" ~border_width:10 () in - window #connect#destroy ~callback:Main.quit; - let ttt = new tictactoe ~packing:window#add () in - ttt #connect#tictactoe ~callback:(win ttt); - window #show (); - Main.main () - -let _ = essai () - diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/tron.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/tron.ml deleted file mode 100644 index eced44a9c..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/tron.ml +++ /dev/null @@ -1,204 +0,0 @@ -(* $Id$ *) - -(* Tron? Game *) -open GMain - -let m_pi = acos (-1.) -let clRed = `NAME "red" (* `BLACK *) -let clBlue = `NAME "blue" (* `WHITE *) -let clBlack = `BLACK - -type point = {mutable x: int; mutable y: int} - -let main () = -(* Game State *) - let gameSize = 64 in - let gameState = - Array.create_matrix ~dimx:(gameSize+2) ~dimy:(gameSize+2) 0 in - let gameInit _ = - for i=1 to gameSize do - for j=1 to gameSize do - gameState.(i).(j) <- 0; - done - done; - for i=0 to gameSize do - gameState.(0).(i) <- 3; (* left wall *) - gameState.(i).(gameSize+1) <- 3; (* floor *) - gameState.(gameSize+1).(i+1) <- 3; (* right wall *) - gameState.(i+1).(0) <- 3 (* ceiling *) - done in - gameInit (); - let lpos = {x=4; y=4} in - let lspeed = {x=0; y=1} in - let rpos = {x=gameSize-3; y=gameSize-3} in - let rspeed = {x=0; y= -1} in - let keys = "asdfhjkl" in - let keyMapL = [|(-1, 0); (0, -1); (0, 1); (1, 0)|] in - let keyMapR = [|(-1, 0); (0, 1); (0, -1); (1, 0)|] in - -(* User Interface *) - let window = GWindow.window ~border_width:10 ~title:"tron(?)" () in - window#event#connect#delete - ~callback:(fun _ -> prerr_endline "Delete event occured"; false); - window#connect#destroy ~callback:Main.quit; - let vbx = GPack.vbox ~packing:window#add () in - let area = GMisc.drawing_area ~width:((gameSize+2)*4) ~height:((gameSize+2)*4) - ~packing:vbx#add () in - let drawing = area#misc#realize (); new GDraw.drawable (area#misc#window) in - let style = area#misc#style#copy in - style#set_bg [`NORMAL,`WHITE]; - area#misc#set_style style; - drawing#set_background `WHITE; - let area_expose _ = - for i=0 to gameSize+1 do - for j=0 to gameSize+1 do - if gameState.(i).(j) = 1 then begin - drawing#set_foreground clRed; - drawing#rectangle ~filled:true ~x:(i*4) ~y:(j*4) ~width:4 ~height:4 () - end - else if gameState.(i).(j) = 2 then begin - drawing#set_foreground clBlue; - drawing#rectangle ~filled:true ~x:(i*4) ~y:(j*4) ~width:4 ~height:4 () - end - else if gameState.(i).(j) = 3 then begin - drawing#set_foreground clBlack; - drawing#rectangle ~filled:true ~x:(i*4) ~y:(j*4) ~width:4 ~height:4 () - end - done - done; - false - in - area#event#connect#expose ~callback:area_expose; - let control = GPack.table ~rows:3 ~columns:7 ~packing:vbx#pack () in - - let abuttonClicked num (lbl : GMisc.label) _ = begin - let dialog = - GWindow.window ~kind:`DIALOG ~border_width:10 ~title:"Key remap" () in - let dvbx = GPack.box `VERTICAL ~packing:dialog#add () in - let entry = GEdit.entry ~max_length:1 ~packing: dvbx#add () in - let txt = String.make 1 keys.[num] in - entry#set_text txt; - let dquit = GButton.button ~label:"OK" ~packing: dvbx#add () in - dquit#connect#clicked ~callback: - begin fun _ -> - let chr = entry#text.[0] in - let txt2 = String.make 1 chr in - lbl#set_text txt2; - keys.[num]<-chr; - dialog#destroy () - end; - dialog#show () - end in - let attach = control#attach ~expand:`BOTH in - let new_my_button ~label:label ~left:left ~top:top = - let str = String.make 1 keys.[label] in - let btn = GButton.button ~packing:(attach ~left:left ~top:top) () in - let lbl = GMisc.label ~text:str ~packing:(btn#add) () in - btn#connect#clicked ~callback:(abuttonClicked label lbl); - btn - in - new_my_button ~label:0 ~left:1 ~top:2; - new_my_button ~label:1 ~left:2 ~top:1; - new_my_button ~label:2 ~left:2 ~top:3; - new_my_button ~label:3 ~left:3 ~top:2; - new_my_button ~label:4 ~left:5 ~top:2; - new_my_button ~label:5 ~left:6 ~top:3; - new_my_button ~label:6 ~left:6 ~top:1; - new_my_button ~label:7 ~left:7 ~top:2; - let quit = - GButton.button ~label:"Quit" ~packing:(attach ~left:4 ~top:2) () in - quit#connect#clicked ~callback:window#destroy; - let message = GMisc.label ~text:"tron(?) game" ~packing:vbx#pack () in - - let game_step () = - let lx = lpos.x in let ly = lpos.y in - gameState.(lx).(ly) <- 1; - drawing#set_foreground clRed; - drawing#rectangle ~filled:true ~x:(lx*4) ~y:(ly*4) ~width:4 ~height:4 (); - let rx = rpos.x in let ry = rpos.y in - gameState.(rx).(ry) <- 2; - drawing#set_foreground clBlue; - drawing#rectangle ~filled:true ~x:(rx*4) ~y:(ry*4) ~width:4 ~height:4 () - in - game_step (); - let keyDown ev = begin - let key = GdkEvent.Key.keyval ev in - for i=0 to (Array.length keyMapL)-1 do - let (x, y) = keyMapL.(i) in - let k = keys.[i] in - if key = Char.code k then begin - lspeed.x <- x; - lspeed.y <- y - end; - let (x, y) = keyMapR.(i) in - let k = keys.[i+4] in - if key = Char.code k then begin - rspeed.x <- x; - rspeed.y <- y - end - done; - false end in - window#event#connect#key_press ~callback:keyDown; - let safe_check _ = - if lpos.x == rpos.x && lpos.y == rpos.y then - 3 - else - (* player 1 *) - (if gameState.(lpos.x).(lpos.y) != 0 then 2 else 0) - + - (* player 2 *) - (if gameState.(rpos.x).(rpos.y) != 0 then 1 else 0) - in - let timerID = ref (* dummy *) (Timeout.add ~ms:100 ~callback:(fun _ -> true)) in - let timerTimer _ = begin - lpos.x <- lpos.x+lspeed.x; - lpos.y <- lpos.y+lspeed.y; - rpos.x <- rpos.x+rspeed.x; - rpos.y <- rpos.y+rspeed.y; - let result = safe_check() in - if result!=0 then begin - Timeout.remove (!timerID); - message#set_text ("player "^string_of_int result^" won.") - end - else begin - game_step() - end; - true - end in - let count = ref 3 in - let timerTimer2 _ = begin -(* message#set_label (string_of_int (!count)); *) - if (!count==0) then begin - Timeout.remove (!timerID); - timerID := Timeout.add ~ms:100 ~callback:timerTimer - end - else begin - count := !count-1; - end; - true - end in - let restartClicked () = - Timeout.remove !timerID; - gameInit(); - lpos.x <- 4; lpos.y <- 4; - lspeed.x <- 0; lspeed.y <- 1; - rpos.x <- gameSize-3; rpos.y <- gameSize-3; - rspeed.x <- 0; rspeed.y <- -1; - drawing#set_foreground `WHITE; - drawing#rectangle ~filled:true ~x:0 ~y:0 - ~width:((gameSize+2)*4) ~height:((gameSize+2)*4) (); - area_expose(); - count := 3; - timerID := Timeout.add ~ms:300 ~callback:timerTimer2; - in - let restart = - GButton.button ~label: "Restart" ~packing:(attach ~left:4 ~top:3) () in - restart#connect#clicked ~callback:restartClicked; - restartClicked (); - - window#show (); - Main.main () - -let _ = Printexc.print main () - - diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/xmhtml/test.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/xmhtml/test.ml deleted file mode 100644 index 6c9d3715a..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/examples/xmhtml/test.ml +++ /dev/null @@ -1,38 +0,0 @@ -(* $Id$ *) - -let test_string2 = String.concat ~sep:"" [ - "\n"; - "The Gtk/XmHTML test\n"; - "This is the Gtk/XmHTML test program

    \n"; - "You can invoke this program with a command line argument, like this:\n"; - "


    "; - "./xtest filename.html"; - "
    "; - "Click here to load a different
    test message"; - ""; -] - -let read_file file = - let ic = open_in file in - let b = Buffer.create 16384 and s = String.create 1024 and len = ref 0 in - while len := input ic ~buf:s ~pos:0 ~len:1024; !len > 0 do - Buffer.add_substring b s ~pos:0 ~len:!len - done; - Buffer.contents b - -open GMain - -let _ = - let w = GWindow.window ~width:600 ~height:500 () in - w#connect#destroy ~callback:Main.quit; - let source = - if Array.length Sys.argv > 1 then begin - Sys.chdir (Filename.dirname Sys.argv.(1)); - read_file (Filename.basename Sys.argv.(1)) - end - else test_string2 in - let html = GHtml.xmhtml ~source ~packing:w#add () in - html#set_anchor_buttons false; - html#set_anchor_underline [`SINGLE;`DASHED]; - w#show (); - Main.main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gBin.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gBin.ml deleted file mode 100644 index f248ba0f8..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gBin.ml +++ /dev/null @@ -1,153 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open GtkBase -open GtkBin -open GObj -open GContainer - -class scrolled_window obj = object - inherit container_full (obj : Gtk.scrolled_window obj) - method hadjustment = - new GData.adjustment (ScrolledWindow.get_hadjustment obj) - method vadjustment = - new GData.adjustment (ScrolledWindow.get_vadjustment obj) - method set_hadjustment adj = - ScrolledWindow.set_hadjustment obj (GData.as_adjustment adj) - method set_vadjustment adj = - ScrolledWindow.set_vadjustment obj (GData.as_adjustment adj) - method set_hpolicy hpolicy = ScrolledWindow.set_policy' obj ~hpolicy - method set_vpolicy vpolicy = ScrolledWindow.set_policy' obj ~vpolicy - method set_placement = ScrolledWindow.set_placement obj - method add_with_viewport w = - ScrolledWindow.add_with_viewport obj (as_widget w) -end - -let scrolled_window ?hadjustment ?vadjustment ?hpolicy ?vpolicy - ?placement ?border_width ?width ?height ?packing ?show () = - let w = - ScrolledWindow.create () - ?hadjustment:(may_map ~f:GData.as_adjustment hadjustment) - ?vadjustment:(may_map ~f:GData.as_adjustment vadjustment) in - ScrolledWindow.set w ?hpolicy ?vpolicy ?placement; - Container.set w ?border_width ?width ?height; - pack_return (new scrolled_window w) ~packing ~show - -class event_box obj = object - inherit container_full (obj : Gtk.event_box obj) - method event = new GObj.event_ops obj -end - -let event_box ?border_width ?width ?height ?packing ?show () = - let w = EventBox.create () in - Container.set w ?border_width ?width ?height; - pack_return (new event_box w) ~packing ~show - -class handle_box_signals obj = object - inherit container_signals obj - method child_attached ~callback = - GtkSignal.connect ~sgn:HandleBox.Signals.child_attached obj ~after - ~callback:(fun obj -> callback (new widget obj)) - method child_detached ~callback = - GtkSignal.connect ~sgn:HandleBox.Signals.child_detached obj ~after - ~callback:(fun obj -> callback (new widget obj)) -end - -class handle_box obj = object - inherit container (obj : Gtk.handle_box obj) - method set_shadow_type = HandleBox.set_shadow_type obj - method set_handle_position = HandleBox.set_handle_position obj - method set_snap_edge = HandleBox.set_snap_edge obj - method connect = new handle_box_signals obj - method event = new GObj.event_ops obj -end - -let handle_box ?border_width ?width ?height ?packing ?show () = - let w = HandleBox.create () in - let () = Container.set w ?border_width ?width ?height in - pack_return (new handle_box w) ~packing ~show - -class frame_skel obj = object - inherit container obj - method set_label = Frame.set_label obj - method set_label_align ?x ?y () = Frame.set_label_align' obj ?x ?y - method set_shadow_type = Frame.set_shadow_type obj -end - -class frame obj = object - inherit frame_skel (Frame.coerce obj) - method connect = new container_signals obj -end - -let frame ?(label="") ?label_xalign ?label_yalign ?shadow_type - ?border_width ?width ?height ?packing ?show () = - let w = Frame.create label in - Frame.set w ?label_xalign ?label_yalign ?shadow_type; - Container.set w ?border_width ?width ?height; - pack_return (new frame w) ~packing ~show - -class aspect_frame obj = object - inherit frame_skel (obj : Gtk.aspect_frame obj) - method connect = new container_signals obj - method set_alignment ?x ?y () = AspectFrame.set obj ?xalign:x ?yalign:y - method set_ratio ratio = AspectFrame.set obj ~ratio - method set_obey_child obey_child = AspectFrame.set obj ~obey_child -end - -let aspect_frame ?label ?xalign ?yalign ?ratio ?obey_child - ?label_xalign ?label_yalign ?shadow_type - ?border_width ?width ?height ?packing ?show () = - let w = - AspectFrame.create ?label ?xalign ?yalign ?ratio ?obey_child () in - Frame.set w ?label_xalign ?label_yalign ?shadow_type; - Container.set w ?border_width ?width ?height; - pack_return (new aspect_frame w) ~packing ~show - -class viewport obj = object - inherit container_full (obj : Gtk.viewport obj) - method event = new event_ops obj - method set_hadjustment adj = - Viewport.set_hadjustment obj (GData.as_adjustment adj) - method set_vadjustment adj = - Viewport.set_vadjustment obj (GData.as_adjustment adj) - method set_shadow_type = Viewport.set_shadow_type obj - method hadjustment = new GData.adjustment (Viewport.get_hadjustment obj) - method vadjustment = new GData.adjustment (Viewport.get_vadjustment obj) -end - -let viewport ?hadjustment ?vadjustment ?shadow_type - ?border_width ?width ?height ?packing ?show () = - let w = Viewport.create () - ?hadjustment:(may_map ~f:GData.as_adjustment hadjustment) - ?vadjustment:(may_map ~f:GData.as_adjustment vadjustment) in - may shadow_type ~f:(Viewport.set_shadow_type w); - Container.set w ?border_width ?width ?height; - pack_return (new viewport w) ~packing ~show - -class alignment obj = object - inherit container_full (obj : Gtk.alignment obj) - method set_alignment ?x ?y () = Alignment.set ?x ?y obj - method set_scale ?x ?y () = Alignment.set ?xscale:x ?yscale:y obj -end - -let alignment ?x ?y ?xscale ?yscale - ?border_width ?width ?height ?packing ?show () = - let w = Alignment.create ?x ?y ?xscale ?yscale () in - Container.set w ?border_width ?width ?height; - pack_return (new alignment w) ~packing ~show - -let alignment_cast w = new alignment (Alignment.cast w#as_widget) - -class socket obj = object (self) - inherit container_full (obj : Gtk.socket obj) - method steal = Socket.steal obj - method xwindow = - self#misc#realize (); - Gdk.Window.get_xwindow self#misc#window -end - -let socket ?border_width ?width ?height ?packing ?show () = - let w = Socket.create () in - Container.set w ?border_width ?width ?height; - pack_return (new socket w) ?packing ?show diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gBin.mli b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gBin.mli deleted file mode 100644 index 9593650c3..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gBin.mli +++ /dev/null @@ -1,163 +0,0 @@ -(* $Id$ *) - -open Gtk -open GObj -open GContainer - -class scrolled_window : Gtk.scrolled_window obj -> - object - inherit container_full - val obj : Gtk.scrolled_window obj - method add_with_viewport : widget -> unit - method hadjustment : GData.adjustment - method set_hadjustment : GData.adjustment -> unit - method set_hpolicy : Tags.policy_type -> unit - method set_placement : Tags.corner_type -> unit - method set_vadjustment : GData.adjustment -> unit - method set_vpolicy : Tags.policy_type -> unit - method vadjustment : GData.adjustment - end -val scrolled_window : - ?hadjustment:GData.adjustment -> - ?vadjustment:GData.adjustment -> - ?hpolicy:Tags.policy_type -> - ?vpolicy:Tags.policy_type -> - ?placement:Tags.corner_type -> - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> scrolled_window - -class event_box : Gtk.event_box obj -> - object - inherit container_full - val obj : Gtk.event_box obj - method event : event_ops - end -val event_box : - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> event_box - -class handle_box_signals : 'a obj -> - object - inherit container_signals - constraint 'a = [>`handlebox|`container|`widget] - val obj : 'a obj - method child_attached : callback:(widget -> unit) -> GtkSignal.id - method child_detached : callback:(widget -> unit) -> GtkSignal.id - end - -class handle_box : Gtk.handle_box obj -> - object - inherit container - val obj : Gtk.handle_box obj - method event : event_ops - method connect : handle_box_signals - method set_handle_position : Tags.position -> unit - method set_shadow_type : Tags.shadow_type -> unit - method set_snap_edge : Tags.position -> unit - end -val handle_box : - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> handle_box - -class frame_skel : 'a obj -> - object - inherit container - constraint 'a = [>`frame|`container|`widget] - val obj : 'a obj - method set_label : string -> unit - method set_label_align : ?x:clampf -> ?y:clampf -> unit -> unit - method set_shadow_type : Tags.shadow_type -> unit - end -class frame : [>`frame] obj -> - object - inherit frame_skel - val obj : Gtk.frame obj - method connect : GContainer.container_signals - end -val frame : - ?label:string -> - ?label_xalign:clampf -> - ?label_yalign:clampf -> - ?shadow_type:Tags.shadow_type -> - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> frame - -class aspect_frame : Gtk.aspect_frame obj -> - object - inherit frame - val obj : Gtk.aspect_frame obj - method set_alignment : ?x:clampf -> ?y:clampf -> unit -> unit - method set_obey_child : bool -> unit - method set_ratio : clampf -> unit - end -val aspect_frame : - ?label:string -> - ?xalign:clampf -> - ?yalign:clampf -> - ?ratio:float -> - ?obey_child:bool -> - ?label_xalign:clampf -> - ?label_yalign:clampf -> - ?shadow_type:Tags.shadow_type -> - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> aspect_frame - -class viewport : Gtk.viewport obj -> - object - inherit container_full - val obj : Gtk.viewport obj - method event : event_ops - method hadjustment : GData.adjustment - method set_hadjustment : GData.adjustment -> unit - method set_shadow_type : Gtk.Tags.shadow_type -> unit - method set_vadjustment : GData.adjustment -> unit - method vadjustment : GData.adjustment - end -val viewport : - ?hadjustment:GData.adjustment -> - ?vadjustment:GData.adjustment -> - ?shadow_type:Tags.shadow_type -> - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> viewport - -class alignment : Gtk.alignment obj -> - object - inherit container_full - val obj : Gtk.alignment obj - method set_alignment : ?x:Gtk.clampf -> ?y:Gtk.clampf -> unit -> unit - method set_scale : ?x:Gtk.clampf -> ?y:Gtk.clampf -> unit -> unit - end -val alignment : - ?x:Gtk.clampf -> - ?y:Gtk.clampf -> - ?xscale:Gtk.clampf -> - ?yscale:Gtk.clampf -> - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> alignment -val alignment_cast : < as_widget : 'a obj; .. > -> alignment - -class socket : Gtk.socket obj -> - object - inherit container_full - val obj : Gtk.socket obj - method steal : Gdk.xid -> unit - method xwindow : Gdk.xid - end - -val socket : - ?border_width:int -> ?width:int -> ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> socket diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gButton.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gButton.ml deleted file mode 100644 index 08ac70445..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gButton.ml +++ /dev/null @@ -1,124 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open GtkBase -open GtkButton -open GObj -open GContainer - -class button_skel obj = object (self) - inherit container obj - method clicked () = Button.clicked obj - method grab_default () = - Widget.set_can_default obj true; - Widget.grab_default obj -end - -class button_signals obj = object - inherit container_signals obj - method clicked = GtkSignal.connect ~sgn:Button.Signals.clicked ~after obj - method pressed = GtkSignal.connect ~sgn:Button.Signals.pressed ~after obj - method released = GtkSignal.connect ~sgn:Button.Signals.released ~after obj - method enter = GtkSignal.connect ~sgn:Button.Signals.enter ~after obj - method leave = GtkSignal.connect ~sgn:Button.Signals.leave ~after obj -end - -class button obj = object - inherit button_skel (Button.coerce obj) - method connect = new button_signals obj - method event = new GObj.event_ops obj -end - -let button ?label ?border_width ?width ?height ?packing ?show () = - let w = Button.create ?label () in - Container.set w ?border_width ?width ?height; - pack_return (new button w) ~packing ~show - -class toggle_button_signals obj = object - inherit button_signals obj - method toggled = - GtkSignal.connect ~sgn:ToggleButton.Signals.toggled obj ~after -end - -class toggle_button obj = object - inherit button_skel obj - method connect = new toggle_button_signals obj - method active = ToggleButton.get_active obj - method set_active = ToggleButton.set_active obj - method set_draw_indicator = ToggleButton.set_mode obj -end - -let toggle_button ?label ?active ?draw_indicator - ?border_width ?width ?height ?packing ?show () = - let w = ToggleButton.create_toggle ?label () in - ToggleButton.set w ?active ?draw_indicator; - Container.set w ?border_width ?width ?height; - pack_return (new toggle_button w) ~packing ~show - -let check_button ?label ?active ?draw_indicator - ?border_width ?width ?height ?packing ?show () = - let w = ToggleButton.create_check ?label () in - ToggleButton.set w ?active ?draw_indicator; - Container.set w ?border_width ?width ?height; - pack_return (new toggle_button w) ~packing ~show - -class radio_button obj = object - inherit toggle_button (obj : Gtk.radio_button obj) - method set_group = RadioButton.set_group obj - method group = Some obj -end - -let radio_button ?group ?label ?active ?draw_indicator - ?border_width ?width ?height ?packing ?show () = - let w = RadioButton.create ?group ?label () in - ToggleButton.set w ?active ?draw_indicator; - Container.set w ?border_width ?width ?height; - pack_return (new radio_button w) ~packing ~show - -class toolbar obj = object - inherit container_full (obj : Gtk.toolbar obj) - method insert_widget ?tooltip ?tooltip_private ?pos w = - Toolbar.insert_widget obj (as_widget w) ?tooltip ?tooltip_private ?pos - - method insert_button ?text ?tooltip ?tooltip_private ?icon - ?pos ?callback () = - let icon = may_map icon ~f:as_widget in - new button - (Toolbar.insert_button obj ~kind:`BUTTON ?icon ?text - ?tooltip ?tooltip_private ?pos ?callback ()) - - method insert_toggle_button ?text ?tooltip ?tooltip_private ?icon - ?pos ?callback () = - let icon = may_map icon ~f:as_widget in - new toggle_button - (ToggleButton.cast - (Toolbar.insert_button obj ~kind:`TOGGLEBUTTON ?icon ?text - ?tooltip ?tooltip_private ?pos ?callback ())) - - method insert_radio_button ?text ?tooltip ?tooltip_private ?icon - ?pos ?callback () = - let icon = may_map icon ~f:as_widget in - new radio_button - (RadioButton.cast - (Toolbar.insert_button obj ~kind:`RADIOBUTTON ?icon ?text - ?tooltip ?tooltip_private ?pos ?callback ())) - - method insert_space = Toolbar.insert_space obj - - method set_orientation = Toolbar.set_orientation obj - method set_style = Toolbar.set_style obj - method set_space_size = Toolbar.set_space_size obj - method set_space_style = Toolbar.set_space_style obj - method set_tooltips = Toolbar.set_tooltips obj - method set_button_relief = Toolbar.set_button_relief obj - method button_relief = Toolbar.get_button_relief obj -end - -let toolbar ?(orientation=`HORIZONTAL) ?style - ?space_size ?space_style ?tooltips ?button_relief - ?border_width ?width ?height ?packing ?show () = - let w = Toolbar.create orientation ?style () in - Toolbar.set w ?space_size ?space_style ?tooltips ?button_relief; - Container.set w ?border_width ?width ?height; - pack_return (new toolbar w) ~packing ~show diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gButton.mli b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gButton.mli deleted file mode 100644 index ee2653da1..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gButton.mli +++ /dev/null @@ -1,144 +0,0 @@ -(* $Id$ *) - -open Gtk -open GObj -open GContainer - -class button_skel : - 'a obj -> - object - inherit container - constraint 'a = [>`widget|`button|`container] - val obj : 'a obj - method clicked : unit -> unit - method grab_default : unit -> unit - end -class button_signals : - 'b obj -> - object ('a) - inherit container_signals - constraint 'b = [>`button|`container|`widget] - val obj : 'b obj - method clicked : callback:(unit -> unit) -> GtkSignal.id - method enter : callback:(unit -> unit) -> GtkSignal.id - method leave : callback:(unit -> unit) -> GtkSignal.id - method pressed : callback:(unit -> unit) -> GtkSignal.id - method released : callback:(unit -> unit) -> GtkSignal.id - end - -class button : - [>`button] obj -> - object - inherit button_skel - val obj : Gtk.button obj - method event : event_ops - method connect : button_signals - end -val button : - ?label:string -> - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> button - -class toggle_button_signals : - 'b obj -> - object ('a) - inherit button_signals - constraint 'b = [>`toggle|`button|`container|`widget] - val obj : 'b obj - method toggled : callback:(unit -> unit) -> GtkSignal.id - end - -class toggle_button : - 'a obj -> - object - inherit button_skel - constraint 'a = [>`toggle|`button|`container|`widget] - val obj : 'a obj - method active : bool - method connect : toggle_button_signals - method set_active : bool -> unit - method set_draw_indicator : bool -> unit - end -val toggle_button : - ?label:string -> - ?active:bool -> - ?draw_indicator:bool -> - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> toggle_button -val check_button : - ?label:string -> - ?active:bool -> - ?draw_indicator:bool -> - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> toggle_button - -class radio_button : - Gtk.radio_button obj -> - object - inherit toggle_button - val obj : Gtk.radio_button obj - method group : Gtk.radio_button group - method set_group : Gtk.radio_button group -> unit - end -val radio_button : - ?group:Gtk.radio_button group -> - ?label:string -> - ?active:bool -> - ?draw_indicator:bool -> - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> radio_button - -class toolbar : - Gtk.toolbar obj -> - object - inherit container_full - val obj : Gtk.toolbar obj - method button_relief : Tags.relief_style - method insert_button : - ?text:string -> - ?tooltip:string -> - ?tooltip_private:string -> - ?icon:widget -> - ?pos:int -> ?callback:(unit -> unit) -> unit -> button - method insert_radio_button : - ?text:string -> - ?tooltip:string -> - ?tooltip_private:string -> - ?icon:widget -> - ?pos:int -> ?callback:(unit -> unit) -> unit -> radio_button - method insert_space : ?pos:int -> unit -> unit - method insert_toggle_button : - ?text:string -> - ?tooltip:string -> - ?tooltip_private:string -> - ?icon:widget -> - ?pos:int -> ?callback:(unit -> unit) -> unit -> toggle_button - method insert_widget : - ?tooltip:string -> - ?tooltip_private:string -> ?pos:int -> widget -> unit - method set_button_relief : Tags.relief_style -> unit - method set_orientation : Tags.orientation -> unit - method set_space_size : int -> unit - method set_space_style : [`EMPTY|`LINE] -> unit - method set_style : Tags.toolbar_style -> unit - method set_tooltips : bool -> unit - end -val toolbar : - ?orientation:Tags.orientation -> - ?style:Tags.toolbar_style -> - ?space_size:int -> - ?space_style:[`EMPTY|`LINE] -> - ?tooltips:bool -> - ?button_relief:Tags.relief_style -> - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> toolbar diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gContainer.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gContainer.ml deleted file mode 100644 index 2ea765e83..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gContainer.ml +++ /dev/null @@ -1,75 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open GtkBase -open GObj -open GData - -class focus obj = object - val obj = obj - method circulate = Container.focus obj - method set (child : widget option) = - let child = may_map child ~f:(fun x -> x#as_widget) in - Container.set_focus_child obj (Gpointer.optboxed child) - method set_hadjustment adj = - Container.set_focus_hadjustment obj - (Gpointer.optboxed (may_map adj ~f:as_adjustment)) - method set_vadjustment adj = - Container.set_focus_vadjustment obj - (Gpointer.optboxed (may_map adj ~f:as_adjustment)) -end - -class container obj = object (self) - inherit widget obj - method add w = - (* Hack to avoid creating a bin class *) - if GtkBase.Object.is_a obj "GtkBin" && Container.children obj <> [] then - raise (Gtk.Error "GContainer.container#add: already full"); - Container.add obj (as_widget w) - method remove w = Container.remove obj (as_widget w) - method children = List.map ~f:(new widget) (Container.children obj) - method set_border_width = Container.set_border_width obj - method focus = new focus obj -end - -class container_signals obj = object - inherit widget_signals obj - method add ~callback = - GtkSignal.connect ~sgn:Container.Signals.add obj ~after - ~callback:(fun w -> callback (new widget w)) - method remove ~callback = - GtkSignal.connect ~sgn:Container.Signals.remove obj ~after - ~callback:(fun w -> callback (new widget w)) -end - -class container_full obj = object - inherit container obj - method connect = new container_signals obj -end - -let cast_container (w : widget) = - new container_full (GtkBase.Container.cast w#as_widget) - -class virtual ['a] item_container obj = object (self) - inherit widget obj - method add (w : 'a) = - Container.add obj w#as_item - method remove (w : 'a) = - Container.remove obj w#as_item - method private virtual wrap : Gtk.widget obj -> 'a - method children : 'a list = - List.map ~f:self#wrap (Container.children obj) - method set_border_width = Container.set_border_width obj - method focus = new focus obj - method virtual insert : 'a -> pos:int -> unit - method append (w : 'a) = self#insert w ~pos:(-1) - method prepend (w : 'a) = self#insert w ~pos:0 -end - -class item_signals obj = object - inherit container_signals obj - method select = GtkSignal.connect ~sgn:Item.Signals.select obj ~after - method deselect = GtkSignal.connect ~sgn:Item.Signals.deselect obj ~after - method toggle = GtkSignal.connect ~sgn:Item.Signals.toggle obj ~after -end diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gContainer.mli b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gContainer.mli deleted file mode 100644 index 290982942..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gContainer.mli +++ /dev/null @@ -1,79 +0,0 @@ -(* $Id$ *) - -open Gtk -open GObj - -class focus : - 'a obj -> - object - constraint 'a = [>`container] - val obj : 'a obj - method circulate : Tags.direction_type -> bool - method set : widget option -> unit - method set_hadjustment : GData.adjustment option -> unit - method set_vadjustment : GData.adjustment option -> unit - end - -class container : - 'a obj -> - object - inherit widget - constraint 'a = [>`container|`widget] - val obj : 'a obj - method add : widget -> unit - method children : widget list - method remove : widget -> unit - method focus : focus - method set_border_width : int -> unit - end - -class container_signals : - 'a obj -> - object - inherit widget_signals - constraint 'a = [>`container|`widget] - val obj : 'a obj - method add : callback:(widget -> unit) -> GtkSignal.id - method remove : callback:(widget -> unit) -> GtkSignal.id - end - -class container_full : - 'a obj -> - object - inherit container - constraint 'a = [>`container|`widget] - val obj : 'a obj - method connect : container_signals - end - -val cast_container : widget -> container_full -(* may raise [Gtk.Cannot_cast "GtkContainer"] *) - -class virtual ['a] item_container : - 'c obj -> - object - constraint 'a = < as_item : [>`widget] obj; .. > - constraint 'c = [>`container|`widget] - inherit widget - val obj : 'c obj - method add : 'a -> unit - method append : 'a -> unit - method children : 'a list - method virtual insert : 'a -> pos:int -> unit - method prepend : 'a -> unit - method remove : 'a -> unit - method focus : focus - method set_border_width : int -> unit - method private virtual wrap : Gtk.widget obj -> 'a - end - -class item_signals : - 'a obj -> - object - inherit container_signals - constraint 'a = [>`container|`item|`widget] - val obj : 'a obj - method deselect : callback:(unit -> unit) -> GtkSignal.id - method select : callback:(unit -> unit) -> GtkSignal.id - method toggle : callback:(unit -> unit) -> GtkSignal.id - end diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gData.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gData.ml deleted file mode 100644 index 52aa3f1f4..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gData.ml +++ /dev/null @@ -1,60 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open GtkData -open GObj - -class data_signals obj = object - inherit gtkobj_signals obj - method disconnect_data = - GtkSignal.connect ~sgn:Data.Signals.disconnect obj ~after -end - -class adjustment_signals obj = object - inherit data_signals obj - method changed = GtkSignal.connect ~sgn:Adjustment.Signals.changed obj ~after - method value_changed = - GtkSignal.connect ~sgn:Adjustment.Signals.value_changed obj ~after -end - -class adjustment obj = object - inherit gtkobj obj - method as_adjustment : Gtk.adjustment obj = obj - method connect = new adjustment_signals obj - method set_value = Adjustment.set_value obj - method clamp_page = Adjustment.clamp_page obj - method lower = Adjustment.get_lower obj - method upper = Adjustment.get_upper obj - method value = Adjustment.get_value obj - method step_increment = Adjustment.get_step_increment obj - method page_increment = Adjustment.get_page_increment obj - method page_size = Adjustment.get_page_size obj -end - -let adjustment ?(value=0.) ?(lower=0.) ?(upper=100.) - ?(step_incr=1.) ?(page_incr=10.) ?(page_size=10.) () = - let w = - Adjustment.create ~value ~lower ~upper ~step_incr ~page_incr ~page_size in - new adjustment w - -let as_adjustment (adj : adjustment) = adj#as_adjustment - -class tooltips obj = object - inherit gtkobj (obj : Gtk.tooltips obj) - method as_tooltips = obj - method connect = new data_signals obj - method enable () = Tooltips.enable obj - method disable () = Tooltips.disable obj - method set_tip ?text ?privat w = - Tooltips.set_tip obj (as_widget w) ?text ?privat - method set_delay = Tooltips.set_delay obj -end - -let tooltips ?delay () = - let tt = Tooltips.create () in - Tooltips.set tt ?delay; - new tooltips tt - - - diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gData.mli b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gData.mli deleted file mode 100644 index ae7b29eb5..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gData.mli +++ /dev/null @@ -1,60 +0,0 @@ -(* $Id$ *) - -open Gtk - -class data_signals : - 'a obj -> - object - inherit GObj.gtkobj_signals - constraint 'a = [>`data] - val obj : 'a obj - method disconnect_data : callback:(unit -> unit) -> GtkSignal.id - end - -class adjustment_signals : - 'a obj -> - object - inherit data_signals - constraint 'a = [>`adjustment|`data] - val obj : 'a obj - method changed : callback:(unit -> unit) -> GtkSignal.id - method value_changed : callback:(unit -> unit) -> GtkSignal.id - end - -class adjustment : Gtk.adjustment obj -> - object - inherit GObj.gtkobj - val obj : Gtk.adjustment obj - method as_adjustment : Gtk.adjustment obj - method clamp_page : lower:float -> upper:float -> unit - method connect : adjustment_signals - method set_value : float -> unit - method lower : float - method upper : float - method value : float - method step_increment : float - method page_increment : float - method page_size : float - end -val adjustment : - ?value:float -> - ?lower:float -> - ?upper:float -> - ?step_incr:float -> - ?page_incr:float -> ?page_size:float -> unit -> adjustment - -val as_adjustment : adjustment -> Gtk.adjustment obj - -class tooltips : - Gtk.tooltips obj -> - object - inherit GObj.gtkobj - val obj : Gtk.tooltips obj - method as_tooltips : Gtk.tooltips obj - method connect : data_signals - method disable : unit -> unit - method enable : unit -> unit - method set_delay : int -> unit - method set_tip : ?text:string -> ?privat:string -> GObj.widget -> unit - end -val tooltips : ?delay:int -> unit -> tooltips diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gDraw.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gDraw.ml deleted file mode 100644 index 5782079a0..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gDraw.ml +++ /dev/null @@ -1,163 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gdk - -type color = [ - | `COLOR of Color.t - | `WHITE - | `BLACK - | `NAME of string - | `RGB of int * int * int -] - -let default_colormap = GtkBase.Widget.get_default_colormap - -let color ?(colormap = default_colormap ()) (c : color) = - match c with - | `COLOR col -> col - | #Gdk.Color.spec as def -> Color.alloc ~colormap def - -type optcolor = [ - | `COLOR of Color.t - | `WHITE - | `BLACK - | `NAME of string - | `RGB of int * int * int - | `DEFAULT -] - -let optcolor ?colormap (c : optcolor) = - match c with - | `DEFAULT -> None - | #color as c -> Some (color ?colormap c) - -class ['a] drawable ?(colormap = default_colormap ()) w = -object (self) - val colormap = colormap - val gc = GC.create w - val w : 'a Gdk.drawable = w - method color = color ~colormap - method set_foreground col = GC.set_foreground gc (self#color col) - method set_background col = GC.set_background gc (self#color col) - method gc_values = GC.get_values gc - method set_clip_region region = GC.set_clip_region gc region - method set_line_attributes ?width ?style ?cap ?join () = - let v = GC.get_values gc in - GC.set_line_attributes gc - ~width:(default v.GC.line_width ~opt:width) - ~style:(default v.GC.line_style ~opt:style) - ~cap:(default v.GC.cap_style ~opt:cap) - ~join:(default v.GC.join_style ~opt:join) - method point = Draw.point w gc - method line = Draw.line w gc - method rectangle = Draw.rectangle w gc - method arc = Draw.arc w gc - method polygon ?filled l = Draw.polygon w gc ?filled l - method string s = Draw.string w gc ~string:s - method image ~width ~height ?(xsrc=0) ?(ysrc=0) ?(xdest=0) ?(ydest=0) image = - Draw.image w gc ~image ~width ~height ~xsrc ~ysrc ~xdest ~ydest -end - -class pixmap ?colormap ?mask pm = object - inherit [[`pixmap]] drawable ?colormap pm as pixmap - val bitmap = may_map mask ~f: - begin fun x -> - let mask = new drawable x in - mask#set_foreground `WHITE; - mask - end - val mask : Gdk.bitmap option = mask - method pixmap = w - method mask = mask - method set_line_attributes ?width ?style ?cap ?join () = - pixmap#set_line_attributes ?width ?style ?cap ?join (); - may bitmap ~f:(fun m -> m#set_line_attributes ?width ?style ?cap ?join ()) - method point ~x ~y = - pixmap#point ~x ~y; - may bitmap ~f:(fun m -> m#point ~x ~y) - method line ~x ~y ~x:x' ~y:y' = - pixmap#line ~x ~y ~x:x' ~y:y'; - may bitmap ~f:(fun m -> m#line ~x ~y ~x:x' ~y:y') - method rectangle ~x ~y ~width ~height ?filled () = - pixmap#rectangle ~x ~y ~width ~height ?filled (); - may bitmap ~f:(fun m -> m#rectangle ~x ~y ~width ~height ?filled ()) - method arc ~x ~y ~width ~height ?filled ?start ?angle () = - pixmap#arc ~x ~y ~width ~height ?filled ?start ?angle (); - may bitmap - ~f:(fun m -> m#arc ~x ~y ~width ~height ?filled ?start ?angle ()); - method polygon ?filled l = - pixmap#polygon ?filled l; - may bitmap ~f:(fun m -> m#polygon ?filled l) - method string s ~font ~x ~y = - pixmap#string s ~font ~x ~y; - may bitmap ~f:(fun m -> m#string s ~font ~x ~y) -end - -class type misc_ops = object - method allocation : Gtk.rectangle - method colormap : colormap - method draw : Rectangle.t option -> unit - method hide : unit -> unit - method hide_all : unit -> unit - method intersect : Rectangle.t -> Rectangle.t option - method pointer : int * int - method realize : unit -> unit - method set_app_paintable : bool -> unit - method set_geometry : - ?x:int -> ?y:int -> ?width:int -> ?height:int -> unit -> unit - method show : unit -> unit - method unmap : unit -> unit - method unparent : unit -> unit - method unrealize : unit -> unit - method visible : bool - method visual : visual - method visual_depth : int - method window : window -end - -let pixmap ~(window : < misc : #misc_ops; .. >) - ~width ~height ?(mask=false) () = - window#misc#realize (); - let window = - try window#misc#window - with Gpointer.Null -> failwith "GDraw.pixmap : no window" - and depth = window#misc#visual_depth - and colormap = window#misc#colormap in - let mask = - if not mask then None else - let bm = Bitmap.create window ~width ~height in - let mask = new drawable bm in - mask#set_foreground `BLACK; - mask#rectangle ~x:0 ~y:0 ~width ~height ~filled:true (); - Some bm - in - new pixmap (Pixmap.create window ~width ~height ~depth) ~colormap ?mask - -let pixmap_from_xpm ~window ~file ?colormap ?transparent () = - window#misc#realize (); - let window = - try window#misc#window - with Gpointer.Null -> failwith "GDraw.pixmap_from_xpm : no window" in - let pm, mask = - try Pixmap.create_from_xpm window ~file ?colormap - ?transparent:(may_map transparent ~f:(fun c -> color c)) - with Gpointer.Null -> invalid_arg ("GDraw.pixmap_from_xpm : " ^ file) in - new pixmap pm ?colormap ~mask - -let pixmap_from_xpm_d ~window ~data ?colormap ?transparent () = - window#misc#realize (); - let window = - try window#misc#window - with Gpointer.Null -> failwith "GDraw.pixmap_from_xpm_d : no window" in - let pm, mask = - Pixmap.create_from_xpm_d window ~data ?colormap - ?transparent:(may_map transparent ~f:(fun c -> color c)) in - new pixmap pm ?colormap ~mask - -class drag_context context = object - val context = context - method status ?(time=0) act = DnD.drag_status context act ~time - method suggested_action = DnD.drag_context_suggested_action context - method targets = DnD.drag_context_targets context -end diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gDraw.mli b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gDraw.mli deleted file mode 100644 index 2b5fc8627..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gDraw.mli +++ /dev/null @@ -1,107 +0,0 @@ -(* $Id$ *) - -open Gdk - -type color = - [ `COLOR of Color.t - | `WHITE - | `BLACK - | `NAME of string - | `RGB of int * int * int] - -val color : ?colormap:colormap -> color -> Color.t - -type optcolor = - [ `COLOR of Color.t - | `WHITE - | `BLACK - | `NAME of string - | `RGB of int * int * int - | `DEFAULT ] - -val optcolor : ?colormap:colormap -> optcolor -> Color.t option - -class ['a] drawable : ?colormap:colormap -> 'a Gdk.drawable -> - object - val gc : gc - val w : 'a Gdk.drawable - method arc : - x:int -> - y:int -> - width:int -> - height:int -> - ?filled:bool -> ?start:float -> ?angle:float -> unit -> unit - method color : color -> Color.t - method gc_values : GC.values - method image : - width:int -> - height:int -> - ?xsrc:int -> ?ysrc:int -> ?xdest:int -> ?ydest:int -> image -> unit - method line : x:int -> y:int -> x:int -> y:int -> unit - method point : x:int -> y:int -> unit - method polygon : ?filled:bool -> (int * int) list -> unit - method rectangle : - x:int -> - y:int -> width:int -> height:int -> ?filled:bool -> unit -> unit - method set_background : color -> unit - method set_foreground : color -> unit - method set_clip_region : region -> unit - method set_line_attributes : - ?width:int -> - ?style:GC.gdkLineStyle -> - ?cap:GC.gdkCapStyle -> ?join:GC.gdkJoinStyle -> unit -> unit - method string : string -> font:font -> x:int -> y:int -> unit - end - -class pixmap : - ?colormap:colormap -> ?mask:bitmap -> [ `pixmap] Gdk.drawable -> - object - inherit [[`pixmap]] drawable - val bitmap : [ `bitmap] drawable option - val mask : bitmap option - method mask : bitmap option - method pixmap : Gdk.pixmap - end - -class type misc_ops = - object - method allocation : Gtk.rectangle - method colormap : colormap - method draw : Rectangle.t option -> unit - method hide : unit -> unit - method hide_all : unit -> unit - method intersect : Rectangle.t -> Rectangle.t option - method pointer : int * int - method realize : unit -> unit - method set_app_paintable : bool -> unit - method set_geometry : - ?x:int -> ?y:int -> ?width:int -> ?height:int -> unit -> unit - method show : unit -> unit - method unmap : unit -> unit - method unparent : unit -> unit - method unrealize : unit -> unit - method visible : bool - method visual : visual - method visual_depth : int - method window : window - end - -val pixmap : - window:< misc : #misc_ops; .. > -> - width:int -> height:int -> ?mask:bool -> unit -> pixmap -val pixmap_from_xpm : - window:< misc : #misc_ops; .. > -> - file:string -> - ?colormap:colormap -> ?transparent:color -> unit -> pixmap -val pixmap_from_xpm_d : - window:< misc : #misc_ops; .. > -> - data:string array -> - ?colormap:colormap -> ?transparent:color -> unit -> pixmap - -class drag_context : Gdk.drag_context -> - object - val context : Gdk.drag_context - method status : ?time:int -> Tags.drag_action list -> unit - method suggested_action : Tags.drag_action - method targets : atom list - end diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gEdit.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gEdit.ml deleted file mode 100644 index 467ee4505..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gEdit.ml +++ /dev/null @@ -1,147 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open GtkBase -open GtkEdit -open GObj - -class editable_signals obj = object - inherit widget_signals obj - method activate = GtkSignal.connect ~sgn:Editable.Signals.activate obj ~after - method changed = GtkSignal.connect ~sgn:Editable.Signals.changed obj ~after - method insert_text = - GtkSignal.connect ~sgn:Editable.Signals.insert_text obj ~after - method delete_text = - GtkSignal.connect ~sgn:Editable.Signals.delete_text obj ~after -end - -class editable obj = object - inherit widget obj - method connect = new editable_signals obj - method select_region = Editable.select_region obj - method insert_text = Editable.insert_text obj - method delete_text = Editable.delete_text obj - method get_chars = Editable.get_chars obj - method cut_clipboard () = Editable.cut_clipboard obj - method copy_clipboard () = Editable.copy_clipboard obj - method paste_clipboard () = Editable.paste_clipboard obj - method delete_selection () = Editable.delete_selection obj - method set_position = Editable.set_position obj - method position = Editable.get_position obj - method set_editable = Editable.set_editable obj - method selection = - if Editable.has_selection obj then - Some (Editable.selection_start_pos obj, Editable.selection_end_pos obj) - else None -end - -class entry obj = object - inherit editable obj - method event = new GObj.event_ops obj - method set_text = Entry.set_text obj - method append_text = Entry.append_text obj - method prepend_text = Entry.prepend_text obj - method set_visibility = Entry.set_visibility obj - method set_max_length = Entry.set_max_length obj - method text = Entry.get_text obj - method text_length = Entry.text_length obj -end - -let set_editable ?editable ?(width = -2) ?(height = -2) w = - may editable ~f:(Editable.set_editable w); - if width <> -2 || height <> -2 then Widget.set_usize w ~width ~height - -let entry ?max_length ?text ?visibility ?editable - ?width ?height ?packing ?show () = - let w = Entry.create ?max_length () in - Entry.set w ?text ?visibility; - set_editable w ?editable ?width ?height; - pack_return (new entry w) ~packing ~show - -class spin_button obj = object - inherit entry (obj : Gtk.spin_button obj) - method adjustment = new GData.adjustment (SpinButton.get_adjustment obj) - method value = SpinButton.get_value obj - method value_as_int = SpinButton.get_value_as_int obj - method spin = SpinButton.spin obj - method update = SpinButton.update obj - method set_adjustment adj = - SpinButton.set_adjustment obj (GData.as_adjustment adj) - method set_digits = SpinButton.set_digits obj - method set_value = SpinButton.set_value obj - method set_update_policy = SpinButton.set_update_policy obj - method set_numeric = SpinButton.set_numeric obj - method set_wrap = SpinButton.set_wrap obj - method set_shadow_type = SpinButton.set_shadow_type obj - method set_snap_to_ticks = SpinButton.set_snap_to_ticks obj -end - -let spin_button ?adjustment ?rate ?digits ?value ?update_policy - ?numeric ?wrap ?shadow_type ?snap_to_ticks - ?width ?height ?packing ?show () = - let w = SpinButton.create ?rate ?digits - ?adjustment:(may_map ~f:GData.as_adjustment adjustment) () in - SpinButton.set w ?value ?update_policy - ?numeric ?wrap ?shadow_type ?snap_to_ticks; - set_editable w ?width ?height; - pack_return (new spin_button w) ~packing ~show - -class combo obj = object - inherit GObj.widget (obj : Gtk.combo obj) - method entry = new entry (Combo.entry obj) - method list = new GList.liste (Combo.list obj) - method set_popdown_strings = Combo.set_popdown_strings obj - method set_use_arrows = Combo.set_use_arrows' obj - method set_case_sensitive = Combo.set_case_sensitive obj - method set_value_in_list = Combo.set_value_in_list obj - method disable_activate () = Combo.disable_activate obj - method set_item_string (item : GList.list_item) = - Combo.set_item_string obj item#as_item -end - -let combo ?popdown_strings ?use_arrows - ?case_sensitive ?value_in_list ?ok_if_empty - ?border_width ?width ?height ?packing ?show () = - let w = Combo.create () in - Combo.set w ?popdown_strings ?use_arrows - ?case_sensitive ?value_in_list ?ok_if_empty; - Container.set w ?border_width ?width ?height; - pack_return (new combo w) ~packing ~show - -class text obj = object (self) - inherit editable (obj : Gtk.text obj) as super - method get_chars ~start ~stop:e = - if start < 0 || e > Text.get_length obj || e < start then - invalid_arg "GEdit.text#get_chars"; - super#get_chars ~start ~stop:e - method event = new GObj.event_ops obj - method set_point = Text.set_point obj - method set_hadjustment adj = - Text.set_adjustment obj ~horizontal:(GData.as_adjustment adj) () - method set_vadjustment adj = - Text.set_adjustment obj ~vertical:(GData.as_adjustment adj) () - method set_word_wrap = Text.set_word_wrap obj - method set_line_wrap = Text.set_line_wrap obj - method hadjustment = new GData.adjustment (Text.get_hadjustment obj) - method vadjustment = new GData.adjustment (Text.get_vadjustment obj) - method point = Text.get_point obj - method length = Text.get_length obj - method freeze () = Text.freeze obj - method thaw () = Text.thaw obj - method insert ?font ?foreground ?background text = - let colormap = try Some self#misc#colormap with _ -> None in - Text.insert obj text ?font - ?foreground:(may_map foreground ~f:(GDraw.color ?colormap)) - ?background:(may_map background ~f:(GDraw.color ?colormap)) -end - -let text ?hadjustment ?vadjustment ?editable - ?word_wrap ?line_wrap ?width ?height ?packing ?show () = - let w = Text.create () - ?hadjustment:(may_map ~f:GData.as_adjustment hadjustment) - ?vadjustment:(may_map ~f:GData.as_adjustment vadjustment) in - may word_wrap ~f:(Text.set_word_wrap w); - may line_wrap ~f:(Text.set_line_wrap w); - set_editable w ?editable ?width ?height; - pack_return (new text w) ~packing ~show diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gEdit.mli b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gEdit.mli deleted file mode 100644 index 3b2c286ea..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gEdit.mli +++ /dev/null @@ -1,146 +0,0 @@ -(* $Id$ *) - -open Gtk -open GObj - -class editable_signals : 'a obj -> - object - inherit widget_signals - constraint 'a = [>`editable|`widget] - val obj : 'a obj - method activate : callback:(unit -> unit) -> GtkSignal.id - method changed : callback:(unit -> unit) -> GtkSignal.id - method delete_text : - callback:(start:int -> stop:int -> unit) -> GtkSignal.id - method insert_text : - callback:(string -> pos:int -> unit) -> GtkSignal.id - end - -class editable : 'a obj -> - object - inherit widget - constraint 'a = [>`editable|`widget] - val obj : 'a obj - method connect : editable_signals - method copy_clipboard : unit -> unit - method cut_clipboard : unit -> unit - method delete_selection : unit -> unit - method delete_text : start:int -> stop:int -> unit - method get_chars : start:int -> stop:int -> string - method insert_text : string -> pos:int -> int - method paste_clipboard : unit -> unit - method position : int - method select_region : start:int -> stop:int -> unit - method selection : (int * int) option - method set_editable : bool -> unit - method set_position : int -> unit - end - -class entry : 'a obj -> - object - inherit editable - constraint 'a = [>`entry|`editable|`widget] - val obj : 'a obj - method event : event_ops - method append_text : string -> unit - method prepend_text : string -> unit - method set_max_length : int -> unit - method set_text : string -> unit - method set_visibility : bool -> unit - method text : string - method text_length : int - end -val entry : - ?max_length:int -> - ?text:string -> - ?visibility:bool -> - ?editable:bool -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> entry - -class spin_button : Gtk.spin_button obj -> - object - inherit entry - val obj : Gtk.spin_button obj - method adjustment : GData.adjustment - method set_adjustment : GData.adjustment -> unit - method set_digits : int -> unit - method set_numeric : bool -> unit - method set_shadow_type : Tags.shadow_type -> unit - method set_snap_to_ticks : bool -> unit - method set_update_policy : [`ALWAYS|`IF_VALID] -> unit - method set_value : float -> unit - method set_wrap : bool -> unit - method spin : Tags.spin_type -> unit - method update : unit - method value : float - method value_as_int : int - end -val spin_button : - ?adjustment:GData.adjustment -> - ?rate:float -> - ?digits:int -> - ?value:float -> - ?update_policy:[`ALWAYS|`IF_VALID] -> - ?numeric:bool -> - ?wrap:bool -> - ?shadow_type:Tags.shadow_type -> - ?snap_to_ticks:bool -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> spin_button - -class combo : Gtk.combo obj -> - object - inherit widget - val obj : Gtk.combo obj - method disable_activate : unit -> unit - method entry : entry - method list : GList.liste - method set_case_sensitive : bool -> unit - method set_item_string : GList.list_item -> string -> unit - method set_popdown_strings : string list -> unit - method set_use_arrows : [`NEVER|`DEFAULT|`ALWAYS] -> unit - method set_value_in_list : - ?required:bool -> ?ok_if_empty:bool -> unit -> unit - end -val combo : - ?popdown_strings:string list -> - ?use_arrows:[`NEVER|`DEFAULT|`ALWAYS] -> - ?case_sensitive:bool -> - ?value_in_list:bool -> - ?ok_if_empty:bool -> - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> combo - -class text : Gtk.text obj -> - object - inherit editable - val obj : Gtk.text obj - method event : event_ops - method freeze : unit -> unit - method hadjustment : GData.adjustment - method insert : - ?font:Gdk.font -> - ?foreground:GDraw.color -> ?background:GDraw.color -> string -> unit - method length : int - method point : int - method set_hadjustment : GData.adjustment -> unit - method set_point : int -> unit - method set_vadjustment : GData.adjustment -> unit - method set_word_wrap : bool -> unit - method set_line_wrap : bool -> unit - method thaw : unit -> unit - method vadjustment : GData.adjustment - end -val text : - ?hadjustment:GData.adjustment -> - ?vadjustment:GData.adjustment -> - ?editable:bool -> - ?word_wrap:bool -> - ?line_wrap:bool -> - ?width:int -> - ?height:int -> ?packing:(widget -> unit) -> ?show:bool -> unit -> text diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gHtml.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gHtml.ml deleted file mode 100644 index 1150790c5..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gHtml.ml +++ /dev/null @@ -1,33 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open GtkBase -open GObj -open GtkXmHTML - -class xmhtml obj = object (self) - inherit widget_full (obj : GtkXmHTML.xmhtml obj) - method event = new GObj.event_ops obj - method freeze = freeze obj - method thaw = thaw obj - method source = source obj - method set_fonts = set_font_familty obj - method set_fonts_fixed = set_font_familty_fixed obj - method set_anchor_buttons = set_anchor_buttons obj - method set_anchor_cursor = set_anchor_cursor obj - method set_anchor_underline = set_anchor_underline_type obj - method set_anchor_visited_underline = set_anchor_visited_underline_type obj - method set_anchor_target_underline = set_anchor_target_underline_type obj - method set_topline = set_topline obj - method topline = get_topline obj - method set_strict_checking = set_strict_checking obj - method set_bad_html_warnings = set_bad_html_warnings obj - method set_imagemap_draw = set_imagemap_draw obj -end - -let xmhtml ?source ?border_width ?width ?height ?packing ?show () = - let w = create () in - Container.set w ?border_width ?width ?height; - may source ~f:(GtkXmHTML.source w); - pack_return (new xmhtml w) ~packing ~show diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gList.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gList.ml deleted file mode 100644 index 3b1abe43b..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gList.ml +++ /dev/null @@ -1,162 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open GtkBase -open GtkList -open GObj -open GContainer - -class list_item obj = object - inherit container (obj : Gtk.list_item obj) - method event = new GObj.event_ops obj - method as_item = obj - method select () = Item.select obj - method deselect () = Item.deselect obj - method toggle () = Item.toggle obj - method connect = new item_signals obj -end - -let list_item ?label ?border_width ?width ?height ?packing ?(show=true) () = - let w = ListItem.create ?label () in - Container.set w ?border_width ?width ?height; - let item = new list_item w in - may packing ~f:(fun f -> (f item : unit)); - if show then item#misc#show (); - item - -class liste obj = object - inherit [list_item] item_container (obj : Gtk.liste obj) - method private wrap w = new list_item (ListItem.cast w) - method insert w = Liste.insert_item obj w#as_item - method clear_items = Liste.clear_items obj - method select_item = Liste.select_item obj - method unselect_item = Liste.unselect_item obj - method child_position (w : list_item) = Liste.child_position obj w#as_item -end - -let liste ?selection_mode ?border_width ?width ?height - ?packing ?show () = - let w = Liste.create () in - may selection_mode ~f:(Liste.set_selection_mode w); - Container.set w ?border_width ?width ?height; - pack_return (new liste w) ~packing ~show - -(* Cell lists *) - -class clist_signals obj = object - inherit container_signals obj - method click_column = - GtkSignal.connect ~sgn:CList.Signals.click_column obj ~after - method select_row = - GtkSignal.connect ~sgn:CList.Signals.select_row obj ~after - method unselect_row = - GtkSignal.connect ~sgn:CList.Signals.unselect_row obj ~after - method scroll_vertical = - GtkSignal.connect ~sgn:CList.Signals.scroll_vertical obj ~after - method scroll_horizontal = - GtkSignal.connect ~sgn:CList.Signals.scroll_horizontal obj ~after -end - -class ['a] clist obj = object (self) - inherit widget (obj : Gtk.clist obj) - method set_border_width = Container.set_border_width obj - method event = new GObj.event_ops obj - method connect = new clist_signals obj - method rows = CList.get_rows obj - method columns = CList.get_columns obj - method focus_row = CList.get_focus_row obj - method hadjustment = new GData.adjustment (CList.get_hadjustment obj) - method vadjustment = new GData.adjustment (CList.get_vadjustment obj) - method set_button_actions = CList.set_button_actions obj - method freeze () = CList.freeze obj - method thaw () = CList.thaw obj - method column_title = CList.get_column_title obj - method column_widget col = - new widget (CList.get_column_widget obj col) - method columns_autosize () = CList.columns_autosize obj - method optimal_column_width = CList.optimal_column_width obj - method moveto ?(row_align=0.) ?(col_align=0.) row col = - CList.moveto obj row col ~row_align ~col_align - method row_is_visible = CList.row_is_visible obj - method cell_type = CList.get_cell_type obj - method cell_text = CList.get_text obj - method cell_pixmap row col = - let pm, mask = CList.get_pixmap obj row col in - may_map pm ~f:(fun x -> new GDraw.pixmap ?mask x) - method cell_style row col = - try Some (new style (CList.get_cell_style obj row col)) - with Gpointer.Null -> None - method row_selectable row = CList.get_selectable obj ~row - method row_style row = - try Some (new style (CList.get_row_style obj ~row)) - with Gpointer.Null -> None - method set_shift = CList.set_shift obj - method insert ~row texts = - let texts = List.map texts ~f:(fun x -> Some x) in - CList.insert obj ~row texts - method append = self#insert ~row:self#rows - method prepend = self#insert ~row:0 - method remove = CList.remove obj - method select = CList.select obj - method unselect = CList.unselect obj - method clear () = CList.clear obj - method get_row_column = CList.get_row_column obj - method select_all () = CList.select_all obj - method unselect_all () = CList.unselect_all obj - method swap_rows = CList.swap_rows obj - method row_move = CList.row_move obj - method sort () = CList.sort obj - method set_hadjustment adj = - CList.set_hadjustment obj (GData.as_adjustment adj) - method set_vadjustment adj = - CList.set_vadjustment obj (GData.as_adjustment adj) - method set_shadow_type = CList.set_shadow_type obj - method set_button_actions = CList.set_button_actions obj - method set_selection_mode = CList.set_selection_mode obj - method set_reorderable = CList.set_reorderable obj - method set_use_drag_icons = CList.set_use_drag_icons obj - method set_row_height = CList.set_row_height obj - method set_titles_show = CList.set_titles_show obj - method set_titles_active = CList.set_titles_active obj - method set_sort = CList.set_sort obj - method set_column ?widget = - CList.set_column obj ?widget:(may_map widget ~f:as_widget) - method set_row ?foreground ?background ?selectable ?style = - let color = may_map ~f:(fun c -> Gpointer.optboxed (GDraw.optcolor c)) - and style = may_map ~f:(fun (st : style) -> st#as_style) style in - CList.set_row obj - ?foreground:(color foreground) ?background:(color background) - ?selectable ?style - method set_cell ?text ?pixmap ?spacing ?style = - let pixmap, mask = - match pixmap with None -> None, None - | Some (pm : GDraw.pixmap) -> Some pm#pixmap, pm#mask - and style = may_map ~f:(fun (st : style) -> st#as_style) style in - CList.set_cell obj ?text ?pixmap ?mask ?spacing ?style - method set_row_data n ~data = - CList.set_row_data obj ~row:n (Obj.repr (data : 'a)) - method get_row_data n : 'a = Obj.obj (CList.get_row_data obj ~row:n) - method scroll_vertical = - CList.Signals.emit_scroll obj ~sgn:CList.Signals.scroll_vertical - method scroll_horizontal = - CList.Signals.emit_scroll obj ~sgn:CList.Signals.scroll_horizontal -end - -let clist ?(columns=1) ?titles ?hadjustment ?vadjustment - ?shadow_type ?button_actions ?selection_mode - ?reorderable ?use_drag_icons ?row_height - ?titles_show ?titles_active ?auto_sort ?sort_column ?sort_type - ?border_width ?width ?height ?packing ?show () = - let w = - match titles with None -> CList.create ~cols:columns - | Some titles -> CList.create_with_titles (Array.of_list titles) - in - CList.set w - ?hadjustment:(may_map ~f:GData.as_adjustment hadjustment) - ?vadjustment:(may_map ~f:GData.as_adjustment vadjustment) - ?shadow_type ?button_actions ?selection_mode ?reorderable - ?use_drag_icons ?row_height ?titles_show ?titles_active; - CList.set_sort w ?auto:auto_sort ?column:sort_column ?dir:sort_type (); - Container.set w ?border_width ?width ?height; - pack_return (new clist w) ~packing ~show diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gList.mli b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gList.mli deleted file mode 100644 index 17f4cef96..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gList.mli +++ /dev/null @@ -1,158 +0,0 @@ -(* $Id$ *) - -open Gtk -open GObj -open GContainer - -class list_item : Gtk.list_item obj -> - object - inherit container - val obj : Gtk.list_item obj - method event : event_ops - method as_item : Gtk.list_item obj - method connect : item_signals - method deselect : unit -> unit - method select : unit -> unit - method toggle : unit -> unit - end -val list_item : - ?label:string -> - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(list_item -> unit) -> ?show:bool -> unit -> list_item - -class liste : Gtk.liste obj -> - object - inherit [list_item] item_container - val obj : Gtk.liste obj - method child_position : list_item -> int - method clear_items : start:int -> stop:int -> unit - method insert : list_item -> pos:int -> unit - method select_item : pos:int -> unit - method unselect_item : pos:int -> unit - method private wrap : Gtk.widget obj -> list_item - end -val liste : - ?selection_mode:Tags.selection_mode -> - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> liste - -class clist_signals : 'a obj -> - object - inherit container_signals - constraint 'a = [>`clist|`container|`widget] - val obj : 'a obj - method click_column : callback:(int -> unit) -> GtkSignal.id - method select_row : - callback:(row:int -> - column:int -> event:GdkEvent.Button.t option -> unit) -> - GtkSignal.id - method unselect_row : - callback:(row:int -> - column:int -> event:GdkEvent.Button.t option -> unit) -> - GtkSignal.id - method scroll_horizontal : - callback:(Tags.scroll_type -> pos:clampf -> unit) -> GtkSignal.id - method scroll_vertical : - callback:(Tags.scroll_type -> pos:clampf -> unit) -> GtkSignal.id - end - -class ['a] clist : Gtk.clist obj -> - object - inherit widget - val obj : Gtk.clist obj - method event : event_ops - method append : string list -> int - method cell_pixmap : int -> int -> GDraw.pixmap option - method cell_style : int -> int -> style option - method cell_text : int -> int -> string - method cell_type : int -> int -> Tags.cell_type - method clear : unit -> unit - method column_title : int -> string - method column_widget : int -> widget - method columns : int - method columns_autosize : unit -> unit - method connect : clist_signals - method focus_row : int - method freeze : unit -> unit - method get_row_column : x:int -> y:int -> int * int - method get_row_data : int -> 'a - method hadjustment : GData.adjustment - method insert : row:int -> string list -> int - method moveto : - ?row_align:clampf -> ?col_align:clampf -> int -> int -> unit - method optimal_column_width : int -> int - method prepend : string list -> int - method remove : row:int -> unit - method row_is_visible : int -> Tags.visibility - method row_move : int -> dst:int -> unit - method row_selectable : int -> bool - method row_style : int -> style option - method rows : int - method scroll_vertical : Tags.scroll_type -> pos:clampf -> unit - method scroll_horizontal : Tags.scroll_type -> pos:clampf -> unit - method select : int -> int -> unit - method select_all : unit -> unit - method set_border_width : int -> unit - method set_button_actions : int -> Tags.button_action list -> unit - method set_cell : - ?text:string -> - ?pixmap:GDraw.pixmap -> - ?spacing:int -> ?style:style -> int -> int -> unit - method set_column : - ?widget:widget -> - ?title:string -> - ?title_active:bool -> - ?justification:Tags.justification -> - ?visibility:bool -> - ?resizeable:bool -> - ?auto_resize:bool -> - ?width:int -> ?min_width:int -> ?max_width:int -> int -> unit - method set_hadjustment : GData.adjustment -> unit - method set_reorderable : bool -> unit - method set_row : - ?foreground:GDraw.optcolor -> - ?background:GDraw.optcolor -> - ?selectable:bool -> - ?style:style -> int -> unit - method set_row_data : int -> data:'a -> unit - method set_row_height : int -> unit - method set_selection_mode : Tags.selection_mode -> unit - method set_shadow_type : Tags.shadow_type -> unit - method set_shift : int -> int -> vertical:int -> horizontal:int -> unit - method set_sort : - ?auto:bool -> ?column:int -> ?dir:Tags.sort_type -> unit -> unit - method set_titles_active : bool -> unit - method set_titles_show : bool -> unit - method set_use_drag_icons : bool -> unit - method set_vadjustment : GData.adjustment -> unit - method sort : unit -> unit - method swap_rows : int -> int -> unit - method thaw : unit -> unit - method unselect : int -> int -> unit - method unselect_all : unit -> unit - method vadjustment : GData.adjustment - end -val clist : - ?columns:int -> - ?titles:string list -> - ?hadjustment:GData.adjustment -> - ?vadjustment:GData.adjustment -> - ?shadow_type:Tags.shadow_type -> - ?button_actions:(int * Tags.button_action list) list -> - ?selection_mode:Tags.selection_mode -> - ?reorderable:bool -> - ?use_drag_icons:bool -> - ?row_height:int -> - ?titles_show:bool -> - ?titles_active:bool -> - ?auto_sort:bool -> - ?sort_column:int -> - ?sort_type:Tags.sort_type -> - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> 'a clist diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gMain.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gMain.ml deleted file mode 100644 index 811f490d4..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gMain.ml +++ /dev/null @@ -1,26 +0,0 @@ -(* $Id$ *) - -open Gtk -open GtkMain -open GObj - -module Main : sig - val init : unit -> string (* returns the locale name *) - val main : unit -> unit - val quit : unit -> unit - val version : int * int * int - val flush : unit -> unit -end = Main - -module Grab = struct - open Grab - let add (w : #widget) = add w#as_widget - let remove (w : #widget) = remove w#as_widget - let get_current () = new widget (get_current ()) -end - -module Timeout : sig - type id - val add : ms:int -> callback:(unit -> bool) -> id - val remove : id -> unit -end = Timeout diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gMenu.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gMenu.ml deleted file mode 100644 index 52f05a462..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gMenu.ml +++ /dev/null @@ -1,199 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open GtkData -open GtkBase -open GtkMenu -open GObj -open GContainer - -(* Menu type *) - -class menu_shell_signals obj = object - inherit container_signals obj - method deactivate = - GtkSignal.connect ~sgn:MenuShell.Signals.deactivate obj ~after -end - -class type virtual ['a] pre_menu = object - inherit ['a] item_container - method as_menu : Gtk.menu Gtk.obj - method deactivate : unit -> unit - method connect : menu_shell_signals - method event : event_ops - method popup : button:int -> time:int -> unit - method popdown : unit -> unit - method set_accel_group : accel_group -> unit -end - -(* Menu items *) - -class menu_item_signals obj = object - inherit item_signals obj - method activate = GtkSignal.connect ~sgn:MenuItem.Signals.activate obj -end - - -class ['a] pre_menu_item_skel obj = object - inherit container obj - method as_item = MenuItem.coerce obj - method set_submenu (w : 'a pre_menu) = MenuItem.set_submenu obj w#as_menu - method remove_submenu () = MenuItem.remove_submenu obj - method configure = MenuItem.configure obj - method activate () = MenuItem.activate obj - method right_justify () = MenuItem.right_justify obj - method add_accelerator ~group ?modi:m ?flags key= - Widget.add_accelerator obj ~sgn:MenuItem.Signals.activate group ?flags - ?modi:m ~key -end - -class menu_item obj = object - inherit [menu_item] pre_menu_item_skel obj - method connect = new menu_item_signals obj - method event = new GObj.event_ops obj -end - -class menu_item_skel = [menu_item] pre_menu_item_skel - -let pack_item self ~packing ~show = - may packing ~f:(fun f -> (f (self :> menu_item) : unit)); - if show <> Some false then self#misc#show (); - self - -let menu_item ?label ?border_width ?width ?height ?packing ?show () = - let w = MenuItem.create ?label () in - Container.set w ?border_width ?width ?height; - pack_item (new menu_item w) ?packing ?show - -let tearoff_item ?border_width ?width ?height ?packing ?show () = - let w = MenuItem.tearoff_create () in - Container.set w ?border_width ?width ?height; - pack_item (new menu_item w) ?packing ?show - -class check_menu_item_signals obj = object - inherit menu_item_signals obj - method toggled = - GtkSignal.connect ~sgn:CheckMenuItem.Signals.toggled obj ~after -end - -class check_menu_item obj = object - inherit menu_item_skel obj - method set_active = CheckMenuItem.set_active obj - method set_show_toggle = CheckMenuItem.set_show_toggle obj - method active = CheckMenuItem.get_active obj - method toggled () = CheckMenuItem.toggled obj - method connect = new check_menu_item_signals obj - method event = new GObj.event_ops obj -end - -let check_menu_item ?label ?active ?show_toggle - ?border_width ?width ?height ?packing ?show () = - let w = CheckMenuItem.create ?label () in - CheckMenuItem.set w ?active ?show_toggle; - Container.set w ?border_width ?width ?height; - pack_item (new check_menu_item w) ?packing ?show - -class radio_menu_item obj = object - inherit check_menu_item (obj : Gtk.radio_menu_item obj) - method group = Some obj - method set_group = RadioMenuItem.set_group obj -end - -let radio_menu_item ?group ?label ?active ?show_toggle - ?border_width ?width ?height ?packing ?show () = - let w = RadioMenuItem.create ?group ?label () in - CheckMenuItem.set w ?active ?show_toggle; - Container.set w ?border_width ?width ?height; - pack_item (new radio_menu_item w) ?packing ?show - -(* Menus *) - -class menu_shell obj = object - inherit [menu_item] item_container obj - method private wrap w = new menu_item (MenuItem.cast w) - method insert w = MenuShell.insert obj w#as_item - method deactivate () = MenuShell.deactivate obj - method connect = new menu_shell_signals obj - method event = new GObj.event_ops obj -end - -class menu obj = object - inherit menu_shell obj - method popup = Menu.popup obj - method popdown () = Menu.popdown obj - method as_menu : Gtk.menu obj = obj - method set_accel_group = Menu.set_accel_group obj -end - -let menu ?border_width ?packing ?show () = - let w = Menu.create () in - may border_width ~f:(Container.set_border_width w); - let self = new menu w in - may packing ~f:(fun f -> (f (self :> menu) : unit)); - if show <> Some false then self#misc#show (); - self - -(* Option Menu (GtkButton?) *) - -class option_menu obj = object - inherit GButton.button_skel obj - method connect = new GButton.button_signals obj - method event = new GObj.event_ops obj - method set_menu (menu : menu) = OptionMenu.set_menu obj menu#as_menu - method get_menu = new menu (OptionMenu.get_menu obj) - method remove_menu () = OptionMenu.remove_menu obj - method set_history = OptionMenu.set_history obj -end - -let option_menu ?border_width ?width ?height ?packing ?show () = - let w = OptionMenu.create () in - Container.set w ?border_width ?width ?height; - pack_return (new option_menu w) ~packing ~show - -(* Menu Bar *) - -let menu_bar ?border_width ?width ?height ?packing ?show () = - let w = MenuBar.create () in - Container.set w ?border_width ?width ?height; - pack_return (new menu_shell w) ~packing ~show - -(* Menu Factory *) - -class ['a] factory - ?(accel_group=AccelGroup.create ()) - ?(accel_modi=[`CONTROL]) - ?(accel_flags=[`VISIBLE]) (menu_shell : 'a) = - object (self) - val menu_shell : #menu_shell = menu_shell - val group = accel_group - val m = accel_modi - val flags = accel_flags - method menu = menu_shell - method accel_group = group - method private bind ?key ?callback (item : menu_item) = - menu_shell#append item; - may key ~f:(item#add_accelerator ~group ~modi:m ~flags); - may callback ~f:(fun callback -> item#connect#activate ~callback) - method add_item ?key ?callback ?submenu label = - let item = menu_item ~label () in - self#bind item ?key ?callback; - may (submenu : menu option) ~f:item#set_submenu; - item - method add_check_item ?active ?key ?callback label = - let item = check_menu_item ~label ?active () in - self#bind (item :> menu_item) ?key - ?callback:(may_map callback ~f:(fun f () -> f item#active)); - item - method add_radio_item ?group ?active ?key ?callback label = - let item = radio_menu_item ~label ?group ?active () in - self#bind (item :> menu_item) ?key - ?callback:(may_map callback ~f:(fun f () -> f item#active)); - item - method add_separator () = menu_item ~packing:menu_shell#append () - method add_submenu ?key label = - let item = menu_item ~label () in - self#bind item ?key; - menu ~packing:item#set_submenu (); - method add_tearoff () = tearoff_item ~packing:menu_shell#append () -end diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gMenu.mli b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gMenu.mli deleted file mode 100644 index 505249bea..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gMenu.mli +++ /dev/null @@ -1,196 +0,0 @@ -(* $Id$ *) - -open Gtk -open GObj -open GContainer - -class menu_shell_signals : 'b obj -> - object ('a) - inherit container_signals - constraint 'b = [>`menushell|`container|`widget] - val obj : 'b obj - method deactivate : callback:(unit -> unit) -> GtkSignal.id - end - -class menu_item_signals : 'b obj -> - object ('a) - inherit item_signals - constraint 'b = [>`menuitem|`container|`item|`widget] - val obj : 'b obj - method activate : callback:(unit -> unit) -> GtkSignal.id - end - -class menu_item_skel : - 'a obj -> - object - inherit container - constraint 'a = [>`widget|`container|`menuitem] - val obj : 'a obj - method activate : unit -> unit - method add_accelerator : - group:accel_group -> - ?modi:Gdk.Tags.modifier list -> - ?flags:Tags.accel_flag list -> Gdk.keysym -> unit - method as_item : Gtk.menu_item obj - method configure : show_toggle:bool -> show_indicator:bool -> unit - method remove_submenu : unit -> unit - method right_justify : unit -> unit - method set_submenu : menu -> unit - end -and menu_item : 'a obj -> - object - inherit menu_item_skel - constraint 'a = [>`widget|`container|`item|`menuitem] - val obj : 'a obj - method event : event_ops - method connect : menu_item_signals - end -and menu : Gtk.menu obj -> - object - inherit [menu_item] item_container - val obj : Gtk.menu obj - method add : menu_item -> unit - method event : event_ops - method append : menu_item -> unit - method as_menu : Gtk.menu obj - method children : menu_item list - method connect : menu_shell_signals - method deactivate : unit -> unit - method insert : menu_item -> pos:int -> unit - method popdown : unit -> unit - method popup : button:int -> time:int -> unit - method prepend : menu_item -> unit - method remove : menu_item -> unit - method set_accel_group : accel_group -> unit - method set_border_width : int -> unit - method private wrap : Gtk.widget obj -> menu_item - end - -val menu : - ?border_width:int -> ?packing:(menu -> unit) -> ?show:bool -> unit -> menu -val menu_item : - ?label:string -> - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(menu_item -> unit) -> ?show:bool -> unit -> menu_item -val tearoff_item : - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(menu_item -> unit) -> ?show:bool -> unit -> menu_item - -class check_menu_item_signals : 'a obj -> - object - inherit menu_item_signals - constraint 'a = [>`checkmenuitem|`container|`item|`menuitem|`widget] - val obj : 'a obj - method toggled : callback:(unit -> unit) -> GtkSignal.id - end - -class check_menu_item : 'a obj -> - object - inherit menu_item_skel - constraint 'a = [>`widget|`checkmenuitem|`container|`item|`menuitem] - val obj : 'a obj - method active : bool - method event : event_ops - method connect : check_menu_item_signals - method set_active : bool -> unit - method set_show_toggle : bool -> unit - method toggled : unit -> unit - end -val check_menu_item : - ?label:string -> - ?active:bool -> - ?show_toggle:bool -> - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(menu_item -> unit) -> ?show:bool -> unit -> check_menu_item - -class radio_menu_item : Gtk.radio_menu_item obj -> - object - inherit check_menu_item - val obj : Gtk.radio_menu_item obj - method group : Gtk.radio_menu_item group - method set_group : Gtk.radio_menu_item group -> unit - end -val radio_menu_item : - ?group:Gtk.radio_menu_item group -> - ?label:string -> - ?active:bool -> - ?show_toggle:bool -> - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(menu_item -> unit) -> ?show:bool -> unit -> radio_menu_item - -class menu_shell : 'a obj -> - object - inherit [menu_item] item_container - constraint 'a = [>`widget|`container|`menushell] - val obj : 'a obj - method event : event_ops - method deactivate : unit -> unit - method connect : menu_shell_signals - method insert : menu_item -> pos:int -> unit - method private wrap : Gtk.widget obj -> menu_item - end - -val menu_bar : - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(GObj.widget -> unit) -> ?show:bool -> unit -> menu_shell - -class option_menu : 'a obj -> - object - inherit GButton.button_skel - constraint 'a = [>`optionmenu|`button|`container|`widget] - val obj : 'a obj - method event : event_ops - method connect : GButton.button_signals - method get_menu : menu - method remove_menu : unit -> unit - method set_history : int -> unit - method set_menu : menu -> unit - end -val option_menu : - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(GObj.widget -> unit) -> ?show:bool -> unit -> option_menu - -class ['a] factory : - ?accel_group:accel_group -> - ?accel_modi:Gdk.Tags.modifier list -> - ?accel_flags:Tags.accel_flag list -> - 'a -> - object - constraint 'a = #menu_shell - val flags : Tags.accel_flag list - val group : accel_group - val m : Gdk.Tags.modifier list - val menu_shell : 'a - method accel_group : accel_group - method add_check_item : - ?active:bool -> - ?key:Gdk.keysym -> - ?callback:(bool -> unit) -> string -> check_menu_item - method add_item : - ?key:Gdk.keysym -> - ?callback:(unit -> unit) -> - ?submenu:menu -> string -> menu_item - method add_radio_item : - ?group:Gtk.radio_menu_item group -> - ?active:bool -> - ?key:Gdk.keysym -> - ?callback:(bool -> unit) -> string -> radio_menu_item - method add_separator : unit -> menu_item - method add_submenu : ?key:Gdk.keysym -> string -> menu - method add_tearoff : unit -> menu_item - method private bind : - ?key:Gdk.keysym -> ?callback:(unit -> unit) -> menu_item -> unit - method menu : 'a - end diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gMisc.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gMisc.ml deleted file mode 100644 index 13fd7b4dd..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gMisc.ml +++ /dev/null @@ -1,217 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open GtkBase -open GtkMisc -open GObj - -let separator dir ?(width = -2) ?(height = -2) ?packing ?show () = - let w = Separator.create dir in - if width <> -2 || height <> -2 then Widget.set_usize w ~width ~height; - pack_return (new widget_full w) ~packing ~show - -class statusbar_context obj ctx = object (self) - val obj : statusbar obj = obj - val context : Gtk.statusbar_context = ctx - method context = context - method push text = Statusbar.push obj context ~text - method pop () = Statusbar.pop obj context - method remove = Statusbar.remove obj context - method flash ?(delay=1000) text = - let msg = self#push text in - GtkMain.Timeout.add ~ms:delay ~callback:(fun () -> self#remove msg; false); - () -end - -class statusbar obj = object - inherit GContainer.container_full (obj : Gtk.statusbar obj) - method new_context ~name = - new statusbar_context obj (Statusbar.get_context obj name) -end - -let statusbar ?border_width ?width ?height ?packing ?show () = - let w = Statusbar.create () in - Container.set w ?border_width ?width ?height; - pack_return (new statusbar w) ~packing ~show - -class calendar_signals obj = object - inherit widget_signals obj - method month_changed = - GtkSignal.connect obj ~sgn:Calendar.Signals.month_changed ~after - method day_selected = - GtkSignal.connect obj ~sgn:Calendar.Signals.day_selected ~after - method day_selected_double_click = - GtkSignal.connect obj - ~sgn:Calendar.Signals.day_selected_double_click ~after - method prev_month = - GtkSignal.connect obj ~sgn:Calendar.Signals.prev_month ~after - method next_month = - GtkSignal.connect obj ~sgn:Calendar.Signals.next_month ~after - method prev_year = - GtkSignal.connect obj ~sgn:Calendar.Signals.prev_year ~after - method next_year = - GtkSignal.connect obj ~sgn:Calendar.Signals.next_year ~after -end - -class calendar obj = object - inherit widget (obj : Gtk.calendar obj) - method event = new GObj.event_ops obj - method connect = new calendar_signals obj - method select_month = Calendar.select_month obj - method select_day = Calendar.select_day obj - method mark_day = Calendar.mark_day obj - method unmark_day = Calendar.unmark_day obj - method clear_marks = Calendar.clear_marks obj - method display_options = Calendar.display_options obj - method date = Calendar.get_date obj - method freeze () = Calendar.freeze obj - method thaw () = Calendar.thaw obj -end - -let calendar ?options ?(width = -2) ?(height = -2) ?packing ?show () = - let w = Calendar.create () in - if width <> -2 || height <> -2 then Widget.set_usize w ~width ~height; - may options ~f:(Calendar.display_options w); - pack_return (new calendar w) ~packing ~show - -class drawing_area obj = object - inherit widget_full (obj : Gtk.drawing_area obj) - method event = new GObj.event_ops obj - method set_size = DrawingArea.size obj -end - -let drawing_area ?(width=0) ?(height=0) ?packing ?show () = - let w = DrawingArea.create () in - if width <> 0 || height <> 0 then DrawingArea.size w ~width ~height; - pack_return (new drawing_area w) ~packing ~show - -class misc obj = object - inherit widget obj - method set_alignment = Misc.set_alignment obj - method set_padding = Misc.set_padding obj -end - -class arrow obj = object - inherit misc obj - method set_arrow kind ~shadow = Arrow.set obj ~kind ~shadow -end - -let arrow ~kind ~shadow - ?xalign ?yalign ?xpad ?ypad ?width ?height ?packing ?show () = - let w = Arrow.create ~kind ~shadow in - Misc.set w ?xalign ?yalign ?xpad ?ypad ?width ?height; - pack_return (new arrow w) ~packing ~show - -class image obj = object - inherit misc obj - method set_image ?mask image = Image.set obj image ?mask -end - -let image image ?mask - ?xalign ?yalign ?xpad ?ypad ?width ?height ?packing ?show () = - let w = Image.create image ?mask in - Misc.set w ?xalign ?yalign ?xpad ?ypad ?width ?height; - pack_return (new image w) ~packing ~show - -class label_skel obj = object - inherit misc obj - method set_text = Label.set_text obj - method set_justify = Label.set_justify obj - method set_pattern = Label.set_pattern obj - method set_line_wrap = Label.set_line_wrap obj - method text = Label.get_text obj -end - -class label obj = object - inherit label_skel (Label.coerce obj) - method connect = new widget_signals obj -end - -let label ?(text="") ?justify ?line_wrap ?pattern - ?xalign ?yalign ?xpad ?ypad ?width ?height ?packing ?show () = - let w = Label.create text in - Label.set w ?justify ?line_wrap ?pattern; - Misc.set w ?xalign ?yalign ?xpad ?ypad ?width ?height; - pack_return (new label w) ~packing ~show - -let label_cast w = new label (Label.cast w#as_widget) - -class tips_query_signals obj = object - inherit widget_signals obj - method widget_entered ~callback = - GtkSignal.connect ~sgn:TipsQuery.Signals.widget_entered obj ~after - ~callback:(function None -> callback None - | Some w -> callback (Some (new widget w))) - method widget_selected ~callback = - GtkSignal.connect ~sgn:TipsQuery.Signals.widget_selected obj ~after - ~callback:(function None -> callback None - | Some w -> callback (Some (new widget w))) -end - -class tips_query obj = object - inherit label_skel (obj : Gtk.tips_query obj) - method start () = TipsQuery.start obj - method stop () = TipsQuery.stop obj - method set_caller (w : widget) = TipsQuery.set_caller obj w#as_widget - method set_emit_always = TipsQuery.set_emit_always obj - method set_label_inactive inactive = TipsQuery.set_labels obj ~inactive - method set_label_no_tip no_tip = TipsQuery.set_labels obj ~no_tip - method connect = new tips_query_signals obj -end - -let tips_query ?caller ?emit_always ?label_inactive ?label_no_tip - ?xalign ?yalign ?xpad ?ypad ?width ?height ?packing ?show () = - let w = TipsQuery.create () in - let caller = may_map caller ~f:(fun (w : #widget) -> w#as_widget) in - TipsQuery.set w ?caller ?emit_always ?label_inactive ?label_no_tip; - Misc.set w ?xalign ?yalign ?xpad ?ypad ?width ?height; - pack_return (new tips_query w) ~packing ~show - -class color_selection obj = object - inherit GObj.widget_full (obj : Gtk.color_selection obj) - method set_update_policy = ColorSelection.set_update_policy obj - method set_opacity = ColorSelection.set_opacity obj - method set_color ~red ~green ~blue ?opacity () = - ColorSelection.set_color obj ~red ~green ~blue ?opacity - method get_color = ColorSelection.get_color obj -end - -let color_selection ?border_width ?width ?height ?packing ?show () = - let w = ColorSelection.create () in - Container.set w ?border_width ?width ?height; - pack_return (new color_selection w) ~packing ~show - -class pixmap obj = object - inherit misc (obj : Gtk.pixmap obj) - method connect = new widget_signals obj - method set_pixmap (pm : GDraw.pixmap) = - Pixmap.set obj ~pixmap:pm#pixmap ?mask:pm#mask - method pixmap = - new GDraw.pixmap (Pixmap.pixmap obj) - ?mask:(try Some(Pixmap.mask obj) with Gpointer.Null -> None) -end - -let pixmap (pm : #GDraw.pixmap) ?xalign ?yalign ?xpad ?ypad - ?(width = -2) ?(height = -2) ?packing ?show () = - let w = Pixmap.create pm#pixmap ?mask:pm#mask in - Misc.set w ?xalign ?yalign ?xpad ?ypad; - if width <> -2 || height <> -2 then Widget.set_usize w ~width ~height; - pack_return (new pixmap w) ~packing ~show - -class font_selection obj = object - inherit widget_full (obj : Gtk.font_selection obj) - method notebook = new GPack.notebook obj - method event = new event_ops obj - method font = FontSelection.get_font obj - method font_name = FontSelection.get_font_name obj - method set_font_name = FontSelection.set_font_name obj - method preview_text = FontSelection.get_preview_text obj - method set_preview_text = FontSelection.set_preview_text obj - method set_filter = FontSelection.set_filter obj -end - -let font_selection ?border_width ?width ?height ?packing ?show () = - let w = FontSelection.create () in - Container.set w ?border_width ?width ?height; - pack_return (new font_selection w) ~packing ~show diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gMisc.mli b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gMisc.mli deleted file mode 100644 index 7008369b7..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gMisc.mli +++ /dev/null @@ -1,263 +0,0 @@ -(* $Id$ *) - -open Gtk -open GObj -open GContainer - -val separator : - Tags.orientation -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> widget_full - -class statusbar_context : - Gtk.statusbar obj -> Gtk.statusbar_context -> - object - val context : Gtk.statusbar_context - val obj : Gtk.statusbar obj - method context : Gtk.statusbar_context - method flash : ?delay:int -> string -> unit - method pop : unit -> unit - method push : string -> statusbar_message - method remove : statusbar_message -> unit - end - -class statusbar : Gtk.statusbar obj -> - object - inherit container_full - val obj : Gtk.statusbar obj - method new_context : name:string -> statusbar_context - end -val statusbar : - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> statusbar - -class calendar_signals : 'a obj -> - object - inherit widget_signals - constraint 'a = [>`calendar|`widget] - val obj : 'a obj - method day_selected : callback:(unit -> unit) -> GtkSignal.id - method day_selected_double_click : - callback:(unit -> unit) -> GtkSignal.id - method month_changed : callback:(unit -> unit) -> GtkSignal.id - method next_month : callback:(unit -> unit) -> GtkSignal.id - method next_year : callback:(unit -> unit) -> GtkSignal.id - method prev_month : callback:(unit -> unit) -> GtkSignal.id - method prev_year : callback:(unit -> unit) -> GtkSignal.id - end - -class calendar : Gtk.calendar obj -> - object - inherit widget - val obj : Gtk.calendar obj - method event : event_ops - method clear_marks : unit - method connect : calendar_signals - method date : int * int * int - method display_options : Tags.calendar_display_options list -> unit - method freeze : unit -> unit - method mark_day : int -> unit - method select_day : int -> unit - method select_month : month:int -> year:int -> unit - method thaw : unit -> unit - method unmark_day : int -> unit - end -val calendar : - ?options:Tags.calendar_display_options list -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> calendar - -class drawing_area : Gtk.drawing_area obj -> - object - inherit widget_full - val obj : Gtk.drawing_area obj - method event : event_ops - method set_size : width:int -> height:int -> unit - end -val drawing_area : - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> drawing_area - -class misc : 'a obj -> - object - inherit widget - constraint 'a = [>`misc|`widget] - val obj : 'a obj - method set_alignment : ?x:float -> ?y:float -> unit -> unit - method set_padding : ?x:int -> ?y:int -> unit -> unit - end - -class arrow : 'a obj -> - object - inherit misc - constraint 'a = [>`arrow|`misc|`widget] - val obj : 'a obj - method set_arrow : Tags.arrow_type -> shadow:Tags.shadow_type -> unit - end - -val arrow : - kind:Tags.arrow_type -> - shadow:Tags.shadow_type -> - ?xalign:float -> - ?yalign:float -> - ?xpad:int -> - ?ypad:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> arrow - -class image : 'a obj -> - object - inherit misc - constraint 'a = [>`image|`misc|`widget] - val obj : 'a obj - method set_image : ?mask:Gdk.bitmap -> Gdk.image -> unit - end - -val image : - Gdk.image -> - ?mask:Gdk.bitmap -> - ?xalign:float -> - ?yalign:float -> - ?xpad:int -> - ?ypad:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> image - -class label_skel : 'a obj -> - object - inherit misc - constraint 'a = [>`label|`misc|`widget] - val obj : 'a obj - method set_justify : Tags.justification -> unit - method set_line_wrap : bool -> unit - method set_pattern : string -> unit - method set_text : string -> unit - method text : string - end - -class label : [>`label] obj -> - object - inherit label_skel - val obj : Gtk.label obj - method connect : widget_signals - end -val label : - ?text:string -> - ?justify:Tags.justification -> - ?line_wrap:bool -> - ?pattern:string -> - ?xalign:float -> - ?yalign:float -> - ?xpad:int -> - ?ypad:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> label -val label_cast : < as_widget : 'a obj ; .. > -> label - -class tips_query_signals : 'a obj -> - object - inherit widget_signals - constraint 'a = [>`tipsquery|`widget] - val obj : 'a obj - method widget_entered : - callback:(widget option -> - text:string option -> privat:string option -> unit) -> - GtkSignal.id - method widget_selected : - callback:(widget option -> text:string option -> - privat:string option -> GdkEvent.Button.t option -> bool) -> - GtkSignal.id - end - -class tips_query : Gtk.tips_query obj -> - object - inherit label_skel - val obj : Gtk.tips_query obj - method connect : tips_query_signals - method set_caller : widget -> unit - method set_emit_always : bool -> unit - method set_label_inactive : string -> unit - method set_label_no_tip : string -> unit - method start : unit -> unit - method stop : unit -> unit - end -val tips_query : - ?caller:#widget -> - ?emit_always:bool -> - ?label_inactive:string -> - ?label_no_tip:string -> - ?xalign:float -> - ?yalign:float -> - ?xpad:int -> - ?ypad:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> tips_query - -class pixmap : Gtk.pixmap Gtk.obj -> - object - inherit misc - val obj : Gtk.pixmap Gtk.obj - method connect : GObj.widget_signals - method pixmap : GDraw.pixmap - method set_pixmap : GDraw.pixmap -> unit - end -val pixmap : - #GDraw.pixmap -> - ?xalign:float -> - ?yalign:float -> - ?xpad:int -> - ?ypad:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> pixmap - -class color_selection : Gtk.color_selection obj -> - object - inherit widget_full - val obj : Gtk.color_selection obj - method get_color : Gtk.color - method set_color : - red:float -> green:float -> blue:float -> ?opacity:float -> unit -> unit - method set_opacity : bool -> unit - method set_update_policy : Tags.update_type -> unit - end -val color_selection : - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> color_selection - -class font_selection : Gtk.font_selection obj -> - object - inherit widget_full - val obj : Gtk.font_selection obj - method event : event_ops - method notebook : GPack.notebook - method font : Gdk.font option - method font_name : string option - method preview_text : string - method set_filter : - ?kind:Tags.font_type list -> - ?foundry:string list -> - ?weight:string list -> - ?slant:string list -> - ?setwidth:string list -> - ?spacing:string list -> - ?charset:string list -> Tags.font_filter_type -> unit - method set_font_name : string -> unit - method set_preview_text : string -> unit - end -val font_selection : - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> font_selection diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gObj.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gObj.ml deleted file mode 100644 index 5c4819fa0..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gObj.ml +++ /dev/null @@ -1,292 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open GtkData -open GtkBase - -(* Object *) - -class gtkobj obj = object - val obj = obj - method destroy () = Object.destroy obj - method get_id = Object.get_id obj -end - -class gtkobj_misc obj = object - val obj = obj - method get_type = Type.name (Object.get_type obj) - method disconnect = GtkSignal.disconnect obj - method handler_block = GtkSignal.handler_block obj - method handler_unblock = GtkSignal.handler_unblock obj -end - -class gtkobj_signals ?(after=false) obj = object - val obj = obj - val after = after - method after = {< after = true >} - method destroy = GtkSignal.connect ~sgn:Object.Signals.destroy obj -end - -(* Widget *) - -class event_signals ?(after=false) obj = object - val obj = Widget.coerce obj - val after = after - method after = {< after = true >} - method any = GtkSignal.connect ~sgn:Widget.Signals.Event.any ~after obj - method button_press = - GtkSignal.connect ~sgn:Widget.Signals.Event.button_press ~after obj - method button_release = - GtkSignal.connect ~sgn:Widget.Signals.Event.button_release ~after obj - method configure = - GtkSignal.connect ~sgn:Widget.Signals.Event.configure ~after obj - method delete = - GtkSignal.connect ~sgn:Widget.Signals.Event.delete ~after obj - method destroy = - GtkSignal.connect ~sgn:Widget.Signals.Event.destroy ~after obj - method enter_notify = - GtkSignal.connect ~sgn:Widget.Signals.Event.enter_notify ~after obj - method expose = - GtkSignal.connect ~sgn:Widget.Signals.Event.expose ~after obj - method focus_in = - GtkSignal.connect ~sgn:Widget.Signals.Event.focus_in ~after obj - method focus_out = - GtkSignal.connect ~sgn:Widget.Signals.Event.focus_out ~after obj - method key_press = - GtkSignal.connect ~sgn:Widget.Signals.Event.key_press ~after obj - method key_release = - GtkSignal.connect ~sgn:Widget.Signals.Event.key_release ~after obj - method leave_notify = - GtkSignal.connect ~sgn:Widget.Signals.Event.leave_notify ~after obj - method map = GtkSignal.connect ~sgn:Widget.Signals.Event.map ~after obj - method motion_notify = - GtkSignal.connect ~sgn:Widget.Signals.Event.motion_notify ~after obj - method property_notify = - GtkSignal.connect ~sgn:Widget.Signals.Event.property_notify ~after obj - method proximity_in = - GtkSignal.connect ~sgn:Widget.Signals.Event.proximity_in ~after obj - method proximity_out = - GtkSignal.connect ~sgn:Widget.Signals.Event.proximity_out ~after obj - method selection_clear = - GtkSignal.connect ~sgn:Widget.Signals.Event.selection_clear ~after obj - method selection_notify = - GtkSignal.connect ~sgn:Widget.Signals.Event.selection_notify ~after obj - method selection_request = - GtkSignal.connect ~sgn:Widget.Signals.Event.selection_request ~after obj - method unmap = GtkSignal.connect ~sgn:Widget.Signals.Event.unmap ~after obj -end - -class event_ops obj = object - val obj = Widget.coerce obj - method add = Widget.add_events obj - method connect = new event_signals obj - method send : Gdk.Tags.event_type Gdk.event -> bool = Widget.event obj - method set_extensions = Widget.set_extension_events obj -end - -class style st = object - val style = st - method as_style = style - method copy = {< style = Style.copy style >} - method bg state = Style.get_bg style ~state - method colormap = Style.get_colormap style - method font = Style.get_font style - method set_bg = - List.iter ~f: - (fun (state,c) -> Style.set_bg style ~state ~color:(GDraw.color c)) - method set_font = Style.set_font style - method set_background = Style.set_background style -end - -class selection_data (sel : Selection.t) = object - val sel = sel - method selection = Selection.selection sel - method target = Selection.target sel - method seltype = Selection.seltype sel - method format = Selection.format sel - method data = Selection.get_data sel - method set = Selection.set sel -end - -class drag_signals ?(after=false) obj = object - val obj = Widget.coerce obj - val after = after - method after = {< after = true >} - method beginning ~callback = - GtkSignal.connect ~sgn:Widget.Signals.drag_begin ~after obj - ~callback:(fun context -> callback (new drag_context context)) - method ending ~callback = - GtkSignal.connect ~sgn:Widget.Signals.drag_end ~after obj - ~callback:(fun context -> callback (new drag_context context)) - method data_delete ~callback = - GtkSignal.connect ~sgn:Widget.Signals.drag_data_delete ~after obj - ~callback:(fun context -> callback (new drag_context context)) - method leave ~callback = - GtkSignal.connect ~sgn:Widget.Signals.drag_leave ~after obj - ~callback:(fun context -> callback (new drag_context context)) - method motion ~callback = - GtkSignal.connect ~sgn:Widget.Signals.drag_motion ~after obj - ~callback:(fun context -> callback (new drag_context context)) - method drop ~callback = - GtkSignal.connect ~sgn:Widget.Signals.drag_drop ~after obj - ~callback:(fun context -> callback (new drag_context context)) - method data_get ~callback = - GtkSignal.connect ~sgn:Widget.Signals.drag_data_get ~after obj - ~callback:(fun context data -> callback (new drag_context context) - (new selection_data data)) - method data_received ~callback = - GtkSignal.connect ~sgn:Widget.Signals.drag_data_received ~after obj - ~callback:(fun context ~x ~y data -> callback (new drag_context context) - ~x ~y (new selection_data data)) - -end - -and drag_ops obj = object - val obj = Widget.coerce obj - method connect = new drag_signals obj - method dest_set ?(flags=[`ALL]) ?(actions=[]) targets = - DnD.dest_set obj ~flags ~actions ~targets:(Array.of_list targets) - method dest_unset () = DnD.dest_unset obj - method get_data ?(time=0) ~context:(context : drag_context) target = - DnD.get_data obj (context : < context : Gdk.drag_context; .. >)#context - ~target ~time - method highlight () = DnD.highlight obj - method unhighlight () = DnD.unhighlight obj - method source_set ?modi:m ?(actions=[]) targets = - DnD.source_set obj ?modi:m ~actions ~targets:(Array.of_list targets) - method source_set_icon ?(colormap = Gdk.Color.get_system_colormap ()) - (pix : GDraw.pixmap) = - DnD.source_set_icon obj ~colormap pix#pixmap ?mask:pix#mask - method source_unset () = DnD.source_unset obj -end - -and drag_context context = object - inherit GDraw.drag_context context - method context = context - method finish = DnD.finish context - method source_widget = - new widget (Object.unsafe_cast (DnD.get_source_widget context)) - method set_icon_widget (w : widget) = - DnD.set_icon_widget context (w#as_widget) - method set_icon_pixmap ?(colormap = Gdk.Color.get_system_colormap ()) - (pix : GDraw.pixmap) = - DnD.set_icon_pixmap context ~colormap pix#pixmap ?mask:pix#mask -end - -and misc_signals ?after obj = object - inherit gtkobj_signals ?after obj - method draw ~callback = - GtkSignal.connect obj ~sgn:Widget.Signals.draw ~after ~callback: - begin fun rect -> - callback - { x = Gdk.Rectangle.x rect ; y = Gdk.Rectangle.y rect; - width = Gdk.Rectangle.width rect; - height = Gdk.Rectangle.height rect } - end - method show = GtkSignal.connect ~sgn:Widget.Signals.show ~after obj - method hide = GtkSignal.connect ~sgn:Widget.Signals.hide ~after obj - method map = GtkSignal.connect ~sgn:Widget.Signals.map ~after obj - method unmap = GtkSignal.connect ~sgn:Widget.Signals.unmap ~after obj - method realize = GtkSignal.connect ~sgn:Widget.Signals.realize ~after obj - method state_changed = - GtkSignal.connect ~sgn:Widget.Signals.state_changed ~after obj - method parent_set ~callback = - GtkSignal.connect obj ~sgn:Widget.Signals.parent_set ~after ~callback: - begin function - None -> callback None - | Some w -> callback (Some (new widget (Object.unsafe_cast w))) - end - method style_set ~callback = - GtkSignal.connect obj ~sgn:Widget.Signals.style_set ~after ~callback: - (fun opt -> callback (may opt ~f:(new style))) -end - -and misc_ops obj = object - inherit gtkobj_misc (Widget.coerce obj) - method connect = new misc_signals obj - method show () = Widget.show obj - method unparent () = Widget.unparent obj - method show_all () = Widget.show_all obj - method hide () = Widget.hide obj - method hide_all () = Widget.hide_all obj - method map () = Widget.map obj - method unmap () = Widget.unmap obj - method realize () = Widget.realize obj - method unrealize () = Widget.unrealize obj - method draw = Widget.draw obj - method activate () = Widget.activate obj - method reparent (w : widget) = Widget.reparent obj w#as_widget - method popup = Widget.popup obj - method intersect = Widget.intersect obj - method grab_focus () = Widget.grab_focus obj - method grab_default () = Widget.grab_default obj - method is_ancestor (w : widget) = Widget.is_ancestor obj w#as_widget - method add_accelerator ~sgn:sg ~group ?modi ?flags key = - Widget.add_accelerator obj ~sgn:sg group ~key ?modi ?flags - method remove_accelerator ~group ?modi key = - Widget.remove_accelerator obj group ~key ?modi - method lock_accelerators () = Widget.lock_accelerators obj - method set_name = Widget.set_name obj - method set_state = Widget.set_state obj - method set_sensitive = Widget.set_sensitive obj - method set_can_default = Widget.set_can_default obj - method set_can_focus = Widget.set_can_focus obj - method set_geometry ?(x = -2) ?(y = -2) ?(width = -2) ?(height = -2) () = - if x+y <> -4 then Widget.set_uposition obj ~x ~y; - if width+height <> -4 then Widget.set_usize obj ~width ~height - method set_style (style : style) = Widget.set_style obj style#as_style - (* get functions *) - method name = Widget.get_name obj - method toplevel = - try Some (new widget (Object.unsafe_cast (Widget.get_toplevel obj))) - with Gpointer.Null -> None - method window = Widget.window obj - method colormap = Widget.get_colormap obj - method visual = Widget.get_visual obj - method visual_depth = Gdk.Window.visual_depth (Widget.get_visual obj) - method pointer = Widget.get_pointer obj - method style = new style (Widget.get_style obj) - method visible = Widget.visible obj - method has_focus = Widget.has_focus obj - method parent = - try Some (new widget (Object.unsafe_cast (Widget.parent obj))) - with Gpointer.Null -> None - method set_app_paintable = Widget.set_app_paintable obj - method allocation = Widget.allocation obj -end - -and widget obj = object (self) - inherit gtkobj obj - method as_widget = Widget.coerce obj - method misc = new misc_ops obj - method drag = new drag_ops (Object.unsafe_cast obj) - method coerce = - (self :> < destroy : _; get_id : _; as_widget : _; misc : _; - drag : _; coerce : _ >) -end - -(* just to check that GDraw.misc_ops is compatible with misc_ops *) -let _ = fun (x : #GDraw.misc_ops) -> (x : misc_ops) - -class widget_signals ?after (obj : [> `widget] obj) = - gtkobj_signals ?after obj - -(* -class widget_coerce obj = object - inherit widget obj - method coerce = (self :> widget) -end -*) - -class widget_full obj = object - inherit widget obj - method connect = new widget_signals obj -end - -let as_widget (w : widget) = w#as_widget - -let pack_return self ~packing ~show = - may packing ~f:(fun f -> (f (self :> widget) : unit)); - if show <> Some false then self#misc#show (); - self diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gObj.mli b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gObj.mli deleted file mode 100644 index 7c37cf124..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gObj.mli +++ /dev/null @@ -1,267 +0,0 @@ -(* $Id$ *) - -open Gtk - -(* Object *) - -class gtkobj : - 'a obj -> - object - val obj : 'a obj - method destroy : unit -> unit - method get_id : int - end - -class gtkobj_signals : - ?after:bool -> 'a obj -> - object ('b) - val obj : 'a obj - val after : bool - method after : 'b - method destroy : callback:(unit -> unit) -> GtkSignal.id - end - -class gtkobj_misc : 'a obj -> - object - method get_type : string - method disconnect : GtkSignal.id -> unit - method handler_block : GtkSignal.id -> unit - method handler_unblock : GtkSignal.id -> unit - end - -(* Widget *) - -class event_signals : - ?after:bool -> [>`widget] obj -> - object ('a) - method after : 'a - method any : - callback:(Gdk.Tags.event_type Gdk.event -> bool) -> GtkSignal.id - method button_press : callback:(GdkEvent.Button.t -> bool) -> GtkSignal.id - method button_release : - callback:(GdkEvent.Button.t -> bool) -> GtkSignal.id - method configure : callback:(GdkEvent.Configure.t -> bool) -> GtkSignal.id - method delete : callback:([`DELETE] Gdk.event -> bool) -> GtkSignal.id - method destroy : callback:([`DESTROY] Gdk.event -> bool) -> GtkSignal.id - method enter_notify : - callback:(GdkEvent.Crossing.t -> bool) -> GtkSignal.id - method expose : callback:(GdkEvent.Expose.t -> bool) -> GtkSignal.id - method focus_in : callback:(GdkEvent.Focus.t -> bool) -> GtkSignal.id - method focus_out : callback:(GdkEvent.Focus.t -> bool) -> GtkSignal.id - method key_press : callback:(GdkEvent.Key.t -> bool) -> GtkSignal.id - method key_release : callback:(GdkEvent.Key.t -> bool) -> GtkSignal.id - method leave_notify : - callback:(GdkEvent.Crossing.t -> bool) -> GtkSignal.id - method map : callback:([`MAP] Gdk.event -> bool) -> GtkSignal.id - method motion_notify : - callback:(GdkEvent.Motion.t -> bool) -> GtkSignal.id - method property_notify : - callback:(GdkEvent.Property.t -> bool) -> GtkSignal.id - method proximity_in : - callback:(GdkEvent.Proximity.t -> bool) -> GtkSignal.id - method proximity_out : - callback:(GdkEvent.Proximity.t -> bool) -> GtkSignal.id - method selection_clear : - callback:(GdkEvent.Selection.t -> bool) -> GtkSignal.id - method selection_notify : - callback:(GdkEvent.Selection.t -> bool) -> GtkSignal.id - method selection_request : - callback:(GdkEvent.Selection.t -> bool) -> GtkSignal.id - method unmap : callback:([`UNMAP] Gdk.event -> bool) -> GtkSignal.id - end - -class event_ops : [>`widget] obj -> - object - method add : Gdk.Tags.event_mask list -> unit - method connect : event_signals - method send : Gdk.Tags.event_type Gdk.event -> bool - method set_extensions : Gdk.Tags.extension_events -> unit - end - -class style : Gtk.style -> - object ('a) - val style : Gtk.style - method as_style : Gtk.style - method bg : Tags.state_type -> Gdk.Color.t - method colormap : Gdk.colormap - method copy : 'a - method font : Gdk.font - method set_background : Gdk.window -> Tags.state_type -> unit - method set_bg : (Tags.state_type * GDraw.color) list -> unit - method set_font : Gdk.font -> unit - end - -class selection_data : - GtkData.Selection.t -> - object - val sel : GtkData.Selection.t - method data : string (* May raise Null_pointer *) - method format : int - method selection : Gdk.atom - method seltype : Gdk.atom - method target : Gdk.atom - method set : typ:Gdk.atom -> format:int -> ?data:string -> unit - end - -class drag_ops : [>`widget] obj -> - object - method connect : drag_signals - method dest_set : - ?flags:Tags.dest_defaults list -> - ?actions:Gdk.Tags.drag_action list -> target_entry list -> unit - method dest_unset : unit -> unit - method get_data : ?time:int -> context:drag_context -> Gdk.atom ->unit - method highlight : unit -> unit - method source_set : - ?modi:Gdk.Tags.modifier list -> - ?actions:Gdk.Tags.drag_action list -> target_entry list -> unit - method source_set_icon : ?colormap:Gdk.colormap -> GDraw.pixmap -> unit - method source_unset : unit -> unit - method unhighlight : unit -> unit - end - -and misc_ops : - [>`widget] obj -> - object - inherit gtkobj_misc - val obj : Gtk.widget obj - method activate : unit -> bool - method add_accelerator : - sgn:(Gtk.widget, unit -> unit) GtkSignal.t -> - group:accel_group -> ?modi:Gdk.Tags.modifier list -> - ?flags:Tags.accel_flag list -> Gdk.keysym -> unit - method allocation : rectangle - method colormap : Gdk.colormap - method connect : misc_signals - method draw : Gdk.Rectangle.t option -> unit - method grab_default : unit -> unit - method grab_focus : unit -> unit - method has_focus : bool - method hide : unit -> unit - method hide_all : unit -> unit - method intersect : Gdk.Rectangle.t -> Gdk.Rectangle.t option - method is_ancestor : widget -> bool - method lock_accelerators : unit -> unit - method map : unit -> unit - method name : string - method parent : widget option - method pointer : int * int - method popup : x:int -> y:int -> unit - method realize : unit -> unit - method remove_accelerator : - group:accel_group -> ?modi:Gdk.Tags.modifier list -> Gdk.keysym -> unit - method reparent : widget -> unit - method set_app_paintable : bool -> unit - method set_can_default : bool -> unit - method set_can_focus : bool -> unit - method set_name : string -> unit - method set_sensitive : bool -> unit - method set_state : Tags.state_type -> unit - method set_style : style -> unit - method set_geometry : - ?x:int -> ?y:int -> ?width:int -> ?height:int -> unit -> unit - method show : unit -> unit - method show_all : unit -> unit - method style : style - method toplevel : widget option - method unmap : unit -> unit - method unparent : unit -> unit - method unrealize : unit -> unit - method visible : bool - method visual : Gdk.visual - method visual_depth : int - method window : Gdk.window - end - -and widget : - 'a obj -> - object - inherit gtkobj - constraint 'a = [>`widget] - val obj : 'a obj - method as_widget : Gtk.widget obj - method coerce : widget - method drag : drag_ops - method misc : misc_ops - end - -and misc_signals : - ?after:bool -> Gtk.widget obj -> - object ('b) - inherit gtkobj_signals - val obj : Gtk.widget obj - method after : 'b - method draw : callback:(Gtk.rectangle -> unit) -> GtkSignal.id - method hide : callback:(unit -> unit) -> GtkSignal.id - method map : callback:(unit -> unit) -> GtkSignal.id - method parent_set : callback:(widget option -> unit) -> GtkSignal.id - method realize : callback:(unit -> unit) -> GtkSignal.id - method show : callback:(unit -> unit) -> GtkSignal.id - method state_changed : - callback:(Gtk.Tags.state_type -> unit) -> GtkSignal.id - method style_set : callback:(unit -> unit) -> GtkSignal.id - method unmap : callback:(unit -> unit) -> GtkSignal.id - end - -and drag_context : - Gdk.drag_context -> - object - val context : Gdk.drag_context - method context : Gdk.drag_context - method finish : success:bool -> del:bool -> time:int -> unit - method source_widget : widget - method set_icon_pixmap : - ?colormap:Gdk.colormap -> GDraw.pixmap -> hot_x:int -> hot_y:int -> unit - method set_icon_widget : widget -> hot_x:int -> hot_y:int -> unit - method status : ?time:int -> Gdk.Tags.drag_action list -> unit - method suggested_action : Gdk.Tags.drag_action - method targets : Gdk.atom list - end - -and drag_signals : - ?after:bool -> Gtk.widget obj -> - object ('a) - method after : 'a - method beginning : - callback:(drag_context -> unit) -> GtkSignal.id - method data_delete : - callback:(drag_context -> unit) -> GtkSignal.id - method data_get : - callback:(drag_context -> selection_data -> info:int -> time:int -> unit) - -> GtkSignal.id - method data_received : - callback:(drag_context -> x:int -> y:int -> - selection_data -> info:int -> time:int -> unit) -> GtkSignal.id - method drop : - callback:(drag_context -> x:int -> y:int -> time:int -> bool) -> - GtkSignal.id - method ending : - callback:(drag_context -> unit) -> GtkSignal.id - method leave : - callback:(drag_context -> time:int -> unit) -> GtkSignal.id - method motion : - callback:(drag_context -> x:int -> y:int -> time:int -> bool) -> - GtkSignal.id - end - -class widget_signals : ?after:bool -> 'a obj -> - object - inherit gtkobj_signals - constraint 'a = [>`widget] - val obj : 'a obj - end - -class widget_full : 'a obj -> - object - inherit widget - constraint 'a = [>`widget] - val obj : 'a obj - method connect : widget_signals - end - -val as_widget : widget -> Gtk.widget obj - -val pack_return : - (#widget as 'a) -> - packing:(widget -> unit) option -> show:bool option -> 'a - (* To use in initializers to provide a ?packing: option *) diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gPack.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gPack.ml deleted file mode 100644 index 3641349a9..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gPack.ml +++ /dev/null @@ -1,217 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open GtkBase -open GtkPack -open GObj -open GContainer - -class box_skel obj = object - inherit container obj - method pack ?from:f ?expand ?fill ?padding w = - Box.pack obj (as_widget w) ?from:f ?expand ?fill ?padding - method set_homogeneous = Box.set_homogeneous obj - method set_spacing = Box.set_spacing obj - method set_child_packing ?from:f ?expand ?fill ?padding w = - Box.set_child_packing obj (as_widget w) ?from:f ?expand ?fill ?padding - method reorder_child w = Box.reorder_child obj (as_widget w) -end - -class box obj = object - inherit box_skel obj - method connect = new container_signals obj -end - -let box dir ?homogeneous ?spacing ?border_width ?width ?height - ?packing ?show () = - let w = Box.create dir ?homogeneous ?spacing () in - Container.set w ?border_width ?width ?height; - pack_return (new box w) ~packing ~show - -let vbox = box `VERTICAL -let hbox = box `HORIZONTAL - -class button_box obj = object - inherit box_skel (obj : Gtk.button_box obj) - method connect = new container_signals obj - method set_layout = BBox.set_layout obj - method set_spacing = BBox.set_spacing obj - method set_child_size = BBox.set_child_size obj - method set_child_ipadding = BBox.set_child_ipadding obj -end - -let button_box dir ?spacing ?child_width ?child_height ?child_ipadx - ?child_ipady ?layout ?border_width ?width ?height ?packing ?show ()= - let w = BBox.create dir in - BBox.set w ?spacing ?child_width ?child_height ?child_ipadx - ?child_ipady ?layout; - Container.set w ?border_width ?width ?height; - pack_return (new button_box w) ~packing ~show - -class table obj = object - inherit container_full (obj : Gtk.table obj) - method attach ~left ~top ?right ?bottom ?expand ?fill ?shrink - ?xpadding ?ypadding w = - Table.attach obj (as_widget w) ~left ~top ?right ?bottom ?expand - ?fill ?shrink ?xpadding ?ypadding - method set_row_spacing = Table.set_row_spacing obj - method set_col_spacing = Table.set_col_spacing obj - method set_row_spacings = Table.set_row_spacings obj - method set_col_spacings = Table.set_col_spacings obj - method set_homogeneous = Table.set_homogeneous obj -end - -let table ~rows ~columns ?homogeneous ?row_spacings ?col_spacings - ?border_width ?width ?height ?packing ?show () = - let w = Table.create ~rows ~columns ?homogeneous () in - Table.set w ?row_spacings ?col_spacings; - Container.set w ?border_width ?width ?height; - pack_return (new table w) ~packing ~show - -class fixed obj = object - inherit container_full (obj : Gtk.fixed obj) - method event = new GObj.event_ops obj - method put w = Fixed.put obj (as_widget w) - method move w = Fixed.move obj (as_widget w) -end - -let fixed ?border_width ?width ?height ?packing ?show () = - let w = Fixed.create () in - Container.set w ?border_width ?width ?height; - pack_return (new fixed w) ~packing ~show - -class layout obj = object - inherit container_full (obj : Gtk.layout obj) - method event = new GObj.event_ops obj - method put w = Layout.put obj (as_widget w) - method move w = Layout.move obj (as_widget w) - method set_hadjustment adj = - Layout.set_hadjustment obj (GData.as_adjustment adj) - method set_vadjustment adj = - Layout.set_vadjustment obj (GData.as_adjustment adj) - method set_width width = Layout.set_size obj ~width - method set_height height = Layout.set_size obj ~height - method hadjustment = new GData.adjustment (Layout.get_hadjustment obj) - method vadjustment = new GData.adjustment (Layout.get_vadjustment obj) - method freeze () = Layout.freeze obj - method thaw () = Layout.thaw obj - method width = Layout.get_width obj - method height = Layout.get_height obj -end - -let layout ?hadjustment ?vadjustment ?layout_width ?layout_height - ?border_width ?width ?height ?packing ?show () = - let w = Layout.create - (Gpointer.optboxed (may_map ~f:GData.as_adjustment hadjustment)) - (Gpointer.optboxed (may_map ~f:GData.as_adjustment vadjustment)) in - if layout_width <> None || layout_height <> None then - Layout.set_size w ?width:layout_width ?height:layout_height; - Container.set w ?border_width ?width ?height; - pack_return (new layout w) ~packing ~show - - -class packer obj = object - inherit container_full (obj : Gtk.packer obj) - method pack ?side ?anchor ?expand ?fill - ?border_width ?pad_x ?pad_y ?i_pad_x ?i_pad_y w = - let options = Packer.build_options ?expand ?fill () in - if border_width == None && pad_x == None && pad_y == None && - i_pad_x == None && i_pad_y == None - then Packer.add_defaults obj (as_widget w) ?side ?anchor ~options - else Packer.add obj (as_widget w) ?side ?anchor ~options - ?border_width ?pad_x ?pad_y ?i_pad_x ?i_pad_y - method set_child_packing ?side ?anchor ?expand ?fill - ?border_width ?pad_x ?pad_y ?i_pad_x ?i_pad_y w = - Packer.set_child_packing obj (as_widget w) ?side ?anchor - ~options:(Packer.build_options ?expand ?fill ()) - ?border_width ?pad_x ?pad_y ?i_pad_x ?i_pad_y - method reorder_child w = Packer.reorder_child obj (as_widget w) - method set_spacing = Packer.set_spacing obj - method set_defaults = Packer.set_defaults obj -end - -let packer ?spacing ?border_width ?width ?height ?packing ?show () = - let w = Packer.create () in - may spacing ~f:(Packer.set_spacing w); - Container.set w ?border_width ?width ?height; - pack_return (new packer w) ~packing ~show - -class paned obj = object - inherit container_full (obj : Gtk.paned obj) - method event = new GObj.event_ops obj - method add w = - if List.length (Container.children obj) = 2 then - raise(Error "Gpack.paned#add: already full"); - Container.add obj (as_widget w) - method add1 w = - try ignore(Paned.child1 obj); raise(Error "GPack.paned#add1: already full") - with _ -> Paned.add1 obj (as_widget w) - method add2 w = - try ignore(Paned.child2 obj); raise(Error "GPack.paned#add2: already full") - with _ -> Paned.add2 obj (as_widget w) - method set_handle_size = Paned.set_handle_size obj - method set_gutter_size = Paned.set_gutter_size obj - method child1 = new widget (Paned.child1 obj) - method child2 = new widget (Paned.child2 obj) - method handle_size = Paned.handle_size obj - method gutter_size = Paned.gutter_size obj -end - -let paned dir ?handle_size ?gutter_size - ?border_width ?width ?height ?packing ?show () = - let w = Paned.create dir in - Paned.set w ?handle_size ?gutter_size; - Container.set w ?border_width ?width ?height; - pack_return (new paned w) ~packing ~show - -class notebook_signals obj = object - inherit GContainer.container_signals obj - method switch_page = - GtkSignal.connect obj ~sgn:Notebook.Signals.switch_page ~after -end - -class notebook obj = object (self) - inherit GContainer.container obj - method event = new GObj.event_ops obj - method connect = new notebook_signals obj - method insert_page ?tab_label ?menu_label ~pos child = - Notebook.insert_page obj (as_widget child) ~pos - ~tab_label:(Gpointer.may_box tab_label ~f:as_widget) - ~menu_label:(Gpointer.may_box menu_label ~f:as_widget) - method append_page = self#insert_page ~pos:(-1) - method prepend_page = self#insert_page ~pos:0 - method remove_page = Notebook.remove_page obj - method current_page = Notebook.get_current_page obj - method goto_page = Notebook.set_page obj - method previous_page () = Notebook.prev_page obj - method next_page () = Notebook.next_page obj - method set_tab_pos = Notebook.set_tab_pos obj - method set_show_tabs = Notebook.set_show_tabs obj - method set_homogeneous_tabs = Notebook.set_homogeneous_tabs obj - method set_show_border = Notebook.set_show_border obj - method set_scrollable = Notebook.set_scrollable obj - method set_tab_border = Notebook.set_tab_border obj - method set_popup = Notebook.set_popup obj - method page_num w = Notebook.page_num obj (as_widget w) - method get_nth_page n = new widget (Notebook.get_nth_page obj n) - method get_tab_label w = - new widget (Notebook.get_tab_label obj (as_widget w)) - method get_menu_label w = - new widget (Notebook.get_tab_label obj (as_widget w)) - method set_page ?tab_label ?menu_label page = - let child = as_widget page in - may tab_label - ~f:(fun lbl -> Notebook.set_tab_label obj child (as_widget lbl)); - may menu_label - ~f:(fun lbl -> Notebook.set_menu_label obj child (as_widget lbl)) -end - -let notebook ?tab_pos ?tab_border ?show_tabs ?homogeneous_tabs - ?show_border ?scrollable ?popup - ?border_width ?width ?height ?packing ?show () = - let w = Notebook.create () in - Notebook.set w ?tab_pos ?tab_border ?show_tabs - ?homogeneous_tabs ?show_border ?scrollable ?popup; - Container.set w ?border_width ?width ?height; - pack_return (new notebook w) ~packing ~show diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gPack.mli b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gPack.mli deleted file mode 100644 index 994c8b87f..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gPack.mli +++ /dev/null @@ -1,267 +0,0 @@ -(* $Id$ *) - -open Gtk -open GObj -open GContainer - -class box_skel : - 'a obj -> - object - inherit container - constraint 'a = [>`box|`container|`widget] - val obj : 'a obj - method pack : - ?from:Tags.pack_type -> - ?expand:bool -> ?fill:bool -> ?padding:int -> widget -> unit - method reorder_child : widget -> pos:int -> unit - method set_child_packing : - ?from:Tags.pack_type -> - ?expand:bool -> ?fill:bool -> ?padding:int -> widget -> unit - method set_homogeneous : bool -> unit - method set_spacing : int -> unit - end -class box : - 'a obj -> - object - inherit box_skel - constraint 'a = [>`box|`container|`widget] - val obj : 'a obj - method connect : GContainer.container_signals - end - -val box : - Tags.orientation -> - ?homogeneous:bool -> - ?spacing:int -> - ?border_width:int -> - ?width:int -> - ?height:int -> ?packing:(widget -> unit) -> ?show:bool -> unit -> box -val vbox : - ?homogeneous:bool -> - ?spacing:int -> - ?border_width:int -> - ?width:int -> - ?height:int -> ?packing:(widget -> unit) -> ?show:bool -> unit -> box -val hbox : - ?homogeneous:bool -> - ?spacing:int -> - ?border_width:int -> - ?width:int -> - ?height:int -> ?packing:(widget -> unit) -> ?show:bool -> unit -> box - -class button_box : - Gtk.button_box obj -> - object - inherit container_full - val obj : Gtk.button_box obj - method pack : - ?from:Tags.pack_type -> - ?expand:bool -> ?fill:bool -> ?padding:int -> widget -> unit - method reorder_child : widget -> pos:int -> unit - method set_child_ipadding : ?x:int -> ?y:int -> unit -> unit - method set_child_packing : - ?from:Tags.pack_type -> - ?expand:bool -> ?fill:bool -> ?padding:int -> widget -> unit - method set_child_size : ?width:int -> ?height:int -> unit -> unit - method set_homogeneous : bool -> unit - method set_layout : GtkPack.BBox.bbox_style -> unit - method set_spacing : int -> unit - end -val button_box : - Tags.orientation -> - ?spacing:int -> - ?child_width:int -> - ?child_height:int -> - ?child_ipadx:int -> - ?child_ipady:int -> - ?layout:GtkPack.BBox.bbox_style -> - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> button_box - -class table : - Gtk.table obj -> - object - inherit container_full - val obj : Gtk.table obj - method attach : - left:int -> - top:int -> - ?right:int -> - ?bottom:int -> - ?expand:Tags.expand_type -> - ?fill:Tags.expand_type -> - ?shrink:Tags.expand_type -> - ?xpadding:int -> ?ypadding:int -> widget -> unit - method set_col_spacing : int -> int -> unit - method set_col_spacings : int -> unit - method set_homogeneous : bool -> unit - method set_row_spacing : int -> int -> unit - method set_row_spacings : int -> unit - end -val table : - rows:int -> - columns:int -> - ?homogeneous:bool -> - ?row_spacings:int -> - ?col_spacings:int -> - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> table - -class fixed : - Gtk.fixed obj -> - object - inherit container_full - val obj : Gtk.fixed obj - method event : event_ops - method move : widget -> x:int -> y:int -> unit - method put : widget -> x:int -> y:int -> unit - end -val fixed : - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> fixed - -class layout : - Gtk.layout obj -> - object - inherit container_full - val obj : Gtk.layout obj - method event : event_ops - method freeze : unit -> unit - method hadjustment : GData.adjustment - method height : int - method move : widget -> x:int -> y:int -> unit - method put : widget -> x:int -> y:int -> unit - method set_hadjustment : GData.adjustment -> unit - method set_height : int -> unit - method set_vadjustment : GData.adjustment -> unit - method set_width : int -> unit - method thaw : unit -> unit - method vadjustment : GData.adjustment - method width : int - end -val layout : - ?hadjustment:GData.adjustment -> - ?vadjustment:GData.adjustment -> - ?layout_width:int -> - ?layout_height:int -> - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> layout - -class notebook_signals : 'a obj -> - object - inherit container_signals - constraint 'a = [>`notebook|`container|`widget] - val obj : 'a obj - method switch_page : callback:(int -> unit) -> GtkSignal.id - end - -class notebook : ([> `widget | `container | `notebook] as 'a) obj -> - object - inherit container - val obj : 'a obj - method event : event_ops - method append_page : - ?tab_label:widget -> ?menu_label:widget -> widget -> unit - method connect : notebook_signals - method current_page : int - method get_menu_label : widget -> widget - method get_nth_page : int -> widget - method get_tab_label : widget -> widget - method goto_page : int -> unit - method insert_page : - ?tab_label:widget -> ?menu_label:widget -> pos:int -> widget -> unit - method next_page : unit -> unit - method page_num : widget -> int - method prepend_page : - ?tab_label:widget -> ?menu_label:widget -> widget -> unit - method previous_page : unit -> unit - method remove_page : int -> unit - method set_homogeneous_tabs : bool -> unit - method set_page : - ?tab_label:widget -> ?menu_label:widget -> widget -> unit - method set_popup : bool -> unit - method set_scrollable : bool -> unit - method set_show_border : bool -> unit - method set_show_tabs : bool -> unit - method set_tab_border : int -> unit - method set_tab_pos : Tags.position -> unit - end -val notebook : - ?tab_pos:Tags.position -> - ?tab_border:int -> - ?show_tabs:bool -> - ?homogeneous_tabs:bool -> - ?show_border:bool -> - ?scrollable:bool -> - ?popup:bool -> - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> notebook - -class packer : - Gtk.packer obj -> - object - inherit container_full - val obj : Gtk.packer obj - method pack : - ?side:Tags.side_type -> - ?anchor:Tags.anchor_type -> - ?expand:bool -> - ?fill:Tags.expand_type -> - ?border_width:int -> - ?pad_x:int -> - ?pad_y:int -> ?i_pad_x:int -> ?i_pad_y:int -> widget -> unit - method reorder_child : widget -> pos:int -> unit - method set_child_packing : - ?side:Tags.side_type -> - ?anchor:Tags.anchor_type -> - ?expand:bool -> - ?fill:Tags.expand_type -> - ?border_width:int -> - ?pad_x:int -> - ?pad_y:int -> ?i_pad_x:int -> ?i_pad_y:int -> widget -> unit - method set_defaults : - ?border_width:int -> - ?pad_x:int -> - ?pad_y:int -> ?i_pad_x:int -> ?i_pad_y:int -> unit -> unit - method set_spacing : int -> unit - end -val packer : - ?spacing:int -> - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> packer - -class paned : - Gtk.paned obj -> - object - inherit container_full - val obj : Gtk.paned obj - method add1 : widget -> unit - method add2 : widget -> unit - method event : event_ops - method child1 : widget - method child2 : widget - method gutter_size : int - method handle_size : int - method set_gutter_size : int -> unit - method set_handle_size : int -> unit - end -val paned : - Tags.orientation -> - ?handle_size:int -> - ?gutter_size:int -> - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> paned diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gRange.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gRange.ml deleted file mode 100644 index 7df53ced1..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gRange.ml +++ /dev/null @@ -1,83 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open GtkBase -open GtkRange -open GObj - -class progress obj = object - inherit widget_full obj - method set_adjustment adj = - Progress.set_adjustment obj (GData.as_adjustment adj) - method set_show_text = Progress.set_show_text obj - method set_format_string = Progress.set_format_string obj - method set_text_alignment = Progress.set_text_alignment obj - method set_activity_mode = Progress.set_activity_mode obj - method set_value = Progress.set_value obj - method set_percentage = Progress.set_percentage obj - method configure = Progress.configure obj - method value = Progress.get_value obj - method percentage = Progress.get_percentage obj - method current_text = Progress.get_current_text obj - method adjustment = new GData.adjustment (Progress.get_adjustment obj) -end - -class progress_bar obj = object - inherit progress (obj : Gtk.progress_bar obj) - method event = new GObj.event_ops obj - method set_bar_style = ProgressBar.set_bar_style obj - method set_discrete_blocks = ProgressBar.set_discrete_blocks obj - method set_activity_step = ProgressBar.set_activity_step obj - method set_activity_blocks = ProgressBar.set_activity_blocks obj - method set_orientation = ProgressBar.set_orientation obj -end - -let progress_bar ?adjustment ?bar_style ?discrete_blocks - ?activity_step ?activity_blocks ?value ?percentage ?activity_mode - ?show_text ?format_string ?text_xalign ?text_yalign - ?packing ?show () = - let w = - match adjustment with None -> ProgressBar.create () - | Some adj -> - ProgressBar.create_with_adjustment (GData.as_adjustment adj) - in - ProgressBar.set w ?bar_style ?discrete_blocks - ?activity_step ?activity_blocks; - Progress.set w ?value ?percentage ?activity_mode - ?show_text ?format_string ?text_xalign ?text_yalign; - pack_return (new progress_bar w) ~packing ~show - -class range obj = object - inherit widget_full obj - method adjustment = new GData.adjustment (Range.get_adjustment obj) - method set_adjustment adj = - Range.set_adjustment obj (GData.as_adjustment adj) - method set_update_policy = Range.set_update_policy obj -end - -class scale obj = object - inherit range (obj : Gtk.scale obj) - method set_digits = Scale.set_digits obj - method set_draw_value = Scale.set_draw_value obj - method set_value_pos = Scale.set_value_pos obj -end - -let scale dir ?adjustment ?digits ?draw_value ?value_pos - ?packing ?show () = - let w = - Scale.create dir ?adjustment:(may_map ~f:GData.as_adjustment adjustment) - in - let () = Scale.set w ?digits ?draw_value ?value_pos in - pack_return (new scale w) ~packing ~show - -class scrollbar obj = object - inherit range (obj : Gtk.scrollbar obj) - method event = new GObj.event_ops obj -end - -let scrollbar dir ?adjustment ?update_policy ?packing ?show () = - let w = Scrollbar.create dir - ?adjustment:(may_map ~f:GData.as_adjustment adjustment) in - let () = may update_policy ~f:(Range.set_update_policy w) in - pack_return (new scrollbar w) ~packing ~show diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gRange.mli b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gRange.mli deleted file mode 100644 index ac9b38c27..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gRange.mli +++ /dev/null @@ -1,87 +0,0 @@ -(* $Id$ *) - -open Gtk -open GObj - -class progress : 'a obj -> - object - inherit widget_full - constraint 'a = [>`progress|`widget] - val obj : 'a obj - method adjustment : GData.adjustment - method configure : current:float -> min:float -> max:float -> unit - method current_text : string - method percentage : float - method set_activity_mode : bool -> unit - method set_adjustment : GData.adjustment -> unit - method set_format_string : string -> unit - method set_percentage : float -> unit - method set_show_text : bool -> unit - method set_text_alignment : ?x:float -> ?y:float -> unit -> unit - method set_value : float -> unit - method value : float - end - -class progress_bar : Gtk.progress_bar obj -> - object - inherit progress - val obj : Gtk.progress_bar obj - method event : event_ops - method set_activity_blocks : int -> unit - method set_activity_step : int -> unit - method set_bar_style : [`CONTINUOUS|`DISCRETE] -> unit - method set_discrete_blocks : int -> unit - method set_orientation : Tags.progress_bar_orientation -> unit - end -val progress_bar : - ?adjustment:GData.adjustment -> - ?bar_style:[`CONTINUOUS|`DISCRETE] -> - ?discrete_blocks:int -> - ?activity_step:int -> - ?activity_blocks:int -> - ?value:float -> - ?percentage:float -> - ?activity_mode:bool -> - ?show_text:bool -> - ?format_string:string -> - ?text_xalign:float -> - ?text_yalign:float -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> progress_bar - -class range : 'a obj -> - object - inherit widget_full - constraint 'a = [>`range|`widget] - val obj : 'a obj - method adjustment : GData.adjustment - method set_adjustment : GData.adjustment -> unit - method set_update_policy : Tags.update_type -> unit - end - -class scale : Gtk.scale obj -> - object - inherit range - val obj : Gtk.scale obj - method set_digits : int -> unit - method set_draw_value : bool -> unit - method set_value_pos : Tags.position -> unit - end -val scale : - Tags.orientation -> - ?adjustment:GData.adjustment -> - ?digits:int -> - ?draw_value:bool -> - ?value_pos:Tags.position -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> scale - -class scrollbar : Gtk.scrollbar obj -> - object - inherit range - val obj : Gtk.scrollbar obj - method event : event_ops - end -val scrollbar : - Tags.orientation -> - ?adjustment:GData.adjustment -> - ?update_policy:Tags.update_type -> - ?packing:(widget -> unit) -> ?show:bool -> unit -> scrollbar diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gTree.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gTree.ml deleted file mode 100644 index 80dab7be6..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gTree.ml +++ /dev/null @@ -1,76 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open GtkBase -open GtkTree -open GObj -open GContainer - -class tree_item_signals obj = object - inherit item_signals obj - method expand = GtkSignal.connect obj ~sgn:TreeItem.Signals.expand ~after - method collapse = GtkSignal.connect obj ~sgn:TreeItem.Signals.collapse ~after -end - -class tree_item obj = object - inherit container obj - method event = new GObj.event_ops obj - method as_item : Gtk.tree_item obj = obj - method connect = new tree_item_signals obj - method set_subtree (w : tree) = TreeItem.set_subtree obj w#as_tree - method remove_subtree () = TreeItem.remove_subtree obj - method expand () = TreeItem.expand obj - method collapse () = TreeItem.collapse obj - method subtree = - try Some(new tree (TreeItem.subtree obj)) with Gpointer.Null -> None -end - -and tree_signals obj = object - inherit container_signals obj - method selection_changed = - GtkSignal.connect obj ~sgn:Tree.Signals.selection_changed ~after - method select_child ~callback = - GtkSignal.connect obj ~sgn:Tree.Signals.select_child ~after - ~callback:(fun w -> callback (new tree_item (TreeItem.cast w))) - method unselect_child ~callback = - GtkSignal.connect obj ~sgn:Tree.Signals.unselect_child ~after - ~callback:(fun w -> callback (new tree_item (TreeItem.cast w))) -end - -and tree obj = object (self) - inherit [tree_item] item_container obj - method event = new GObj.event_ops obj - method as_tree = Tree.coerce obj - method insert w ~pos = Tree.insert obj w#as_item ~pos - method connect = new tree_signals obj - method clear_items = Tree.clear_items obj - method select_item = Tree.select_item obj - method unselect_item = Tree.unselect_item obj - method child_position (w : tree_item) = Tree.child_position obj w#as_item - method remove_items items = - Tree.remove_items obj - (List.map ~f:(fun (t : tree_item) -> t#as_item) items) - method set_selection_mode = Tree.set_selection_mode obj - method set_view_mode = Tree.set_view_mode obj - method set_view_lines = Tree.set_view_lines obj - method selection = - List.map ~f:(fun w -> self#wrap (Widget.coerce w)) (Tree.selection obj) - method private wrap w = - new tree_item (TreeItem.cast w) -end - -let tree_item ?label ?border_width ?width ?height ?packing ?show () = - let w = TreeItem.create ?label () in - Container.set w ?border_width ?width ?height; - let self = new tree_item w in - may packing ~f:(fun f -> (f self : unit)); - if show <> Some false then self#misc#show (); - self - -let tree ?selection_mode ?view_mode ?view_lines - ?border_width ?width ?height ?packing ?show () = - let w = Tree.create () in - Tree.set w ?selection_mode ?view_mode ?view_lines; - Container.set w ?border_width ?width ?height; - pack_return (new tree w) ~packing ~show diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gTree.mli b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gTree.mli deleted file mode 100644 index d48e09b2a..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gTree.mli +++ /dev/null @@ -1,72 +0,0 @@ -(* $Id$ *) - -open Gtk -open GObj -open GContainer - -class tree_item_signals : 'a obj -> - object - inherit item_signals - constraint 'a = [>`treeitem|`container|`item|`widget] - val obj : 'a obj - method collapse : callback:(unit -> unit) -> GtkSignal.id - method expand : callback:(unit -> unit) -> GtkSignal.id - end - -class tree_item : Gtk.tree_item obj -> - object - inherit GContainer.container - val obj : Gtk.tree_item obj - method event : event_ops - method as_item : Gtk.tree_item obj - method collapse : unit -> unit - method connect : tree_item_signals - method expand : unit -> unit - method remove_subtree : unit -> unit - method set_subtree : tree -> unit - method subtree : tree option - end - -and tree_signals : Gtk.tree obj -> - object - inherit container_signals - val obj : Gtk.tree obj - method select_child : callback:(tree_item -> unit) -> GtkSignal.id - method selection_changed : callback:(unit -> unit) -> GtkSignal.id - method unselect_child : callback:(tree_item -> unit) -> GtkSignal.id - end - -and tree : Gtk.tree obj -> - object - inherit [tree_item] item_container - val obj : Gtk.tree obj - method event : event_ops - method as_tree : Gtk.tree obj - method child_position : tree_item -> int - method clear_items : start:int -> stop:int -> unit - method connect : tree_signals - method insert : tree_item -> pos:int -> unit - method remove_items : tree_item list -> unit - method select_item : pos:int -> unit - method selection : tree_item list - method set_selection_mode : Tags.selection_mode -> unit - method set_view_lines : bool -> unit - method set_view_mode : [`LINE|`ITEM] -> unit - method unselect_item : pos:int -> unit - method private wrap : Gtk.widget obj -> tree_item - end - -val tree_item : - ?label:string -> - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(tree_item -> unit) -> ?show:bool -> unit -> tree_item - -val tree : - ?selection_mode:Tags.selection_mode -> - ?view_mode:[`LINE|`ITEM] -> - ?view_lines:bool -> - ?border_width:int -> - ?width:int -> - ?height:int -> ?packing:(GObj.widget -> unit) -> ?show:bool -> unit -> tree diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gUtil.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gUtil.ml deleted file mode 100644 index 260c2acee..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gUtil.ml +++ /dev/null @@ -1,80 +0,0 @@ -(* $Id$ *) - -open GObj - -class ['a] memo () = object - constraint 'a = #widget - val tbl = Hashtbl.create 7 - method add (obj : 'a) = - Hashtbl.add tbl ~key:obj#get_id ~data:obj - method find (obj : widget) = Hashtbl.find tbl obj#get_id - method remove (obj : widget) = Hashtbl.remove tbl obj#get_id -end - -let signal_id = ref 0 - -let next_callback_id () : GtkSignal.id = - decr signal_id; Obj.magic (!signal_id : int) - -class ['a] signal () = object (self) - val mutable callbacks : (GtkSignal.id * ('a -> unit)) list = [] - method callbacks = callbacks - method connect ~after ~callback = - let id = next_callback_id () in - callbacks <- - if after then callbacks @ [id,callback] else (id,callback)::callbacks; - id - method call arg = - List.exists callbacks ~f: - begin fun (_,f) -> - let old = GtkSignal.push_callback () in - try f arg; GtkSignal.pop_callback old - with exn -> GtkSignal.pop_callback old; raise exn - end; - () - method disconnect key = - List.mem_assoc key callbacks && - (callbacks <- List.remove_assoc key callbacks; true) -end - -class virtual ml_signals disconnectors = - object (self) - val after = false - method after = {< after = true >} - val mutable disconnectors : (GtkSignal.id -> bool) list = disconnectors - method disconnect key = - ignore (List.exists disconnectors ~f:(fun f -> f key)) - end - -class virtual add_ml_signals obj disconnectors = - object (self) - val mutable disconnectors : (GtkSignal.id -> bool) list = disconnectors - method disconnect key = - if List.exists disconnectors ~f:(fun f -> f key) then () - else GtkSignal.disconnect obj key - end - -class ['a] variable_signals ~(set : 'a signal) ~(changed : 'a signal) = - object - inherit ml_signals [changed#disconnect; set#disconnect] - method changed = changed#connect ~after - method set = set#connect ~after - end - -class ['a] variable x = - object (self) - val changed = new signal () - val set = new signal () - method connect = new variable_signals ~set ~changed - val mutable x : 'a = x - method get = x - method set = set#call - method private equal : 'a -> 'a -> bool = (=) - method private real_set y = - let x0 = x in x <- y; - if changed#callbacks <> [] && not (self#equal x x0) - then changed#call y - initializer - ignore (set#connect ~after:false ~callback:self#real_set) - end - diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gUtil.mli b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gUtil.mli deleted file mode 100644 index cd88d8697..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gUtil.mli +++ /dev/null @@ -1,109 +0,0 @@ -(* $Id$ *) - -open GObj - -(* The memo class provides an easy way to remember the real class of - a widget. - Insert all widgets of class in one single t memo, and you can then - recover their original ML object with #find. -*) - -class ['a] memo : unit -> - object - constraint 'a = #widget - val tbl : (int, 'a) Hashtbl.t - method add : 'a -> unit - method find : widget -> 'a - method remove : widget -> unit - end - -(* The ML signal mechanism allows one to add GTK-like signals to - arbitrary objects. -*) - -val next_callback_id : unit -> GtkSignal.id - -class ['a] signal : - unit -> - object - val mutable callbacks : (GtkSignal.id * ('a -> unit)) list - method callbacks : (GtkSignal.id * ('a -> unit)) list - method call : 'a -> unit - method connect : after:bool -> callback:('a -> unit) -> GtkSignal.id - method disconnect : GtkSignal.id -> bool - end -(* As with GTK signals, you can use [GtkSignal.stop_emit] inside a - callback to prevent other callbacks from being called. *) - -class virtual ml_signals : (GtkSignal.id -> bool) list -> - object ('a) - val after : bool - method after : 'a - method disconnect : GtkSignal.id -> unit - val mutable disconnectors : (GtkSignal.id -> bool) list - end -class virtual add_ml_signals : - 'a Gtk.obj -> (GtkSignal.id -> bool) list -> - object - method disconnect : GtkSignal.id -> unit - val mutable disconnectors : (GtkSignal.id -> bool) list - end - -(* To add ML signals to a LablGTK object: - - class mywidget_signals obj ~mysignal1 ~mysignal2 = object - inherit somewidget_signals obj - inherit add_ml_signals obj [mysignal1#disconnect; mysignal2#disconnect] - method mysignal1 = mysignal1#connect ~after - method mysignal2 = mysignal2#connect ~after - end - - class mywidget obj = object (self) - inherit somewidget obj - val mysignal1 = new signal obj - val mysignal2 = new signal obj - method connect = new mywidget_signals obj ~mysignal1 ~mysignal2 - method call1 = mysignal1#call - method call2 = mysignal2#call - end - - You can also add ML signals to an arbitrary object; just inherit - from [ml_signals] in place of [widget_signals]+[add_ml_signals]. - - class mysignals ~mysignal1 ~mysignal2 = object - inherit ml_signals [mysignal1#disconnect; mysignal2#disconnect] - method mysignal1 = mysignal1#connect ~after - method mysignal2 = mysignal2#connect ~after - end -*) - -(* The variable class provides an easy way to propagate state modifications. - A new variable is created by [new variable init]. The [#set] method just - calls the [set] signal, which by default only calls [real_set]. - [real_set] sets the variable and calls [changed] when needed. - Deep equality is used to compare values, but check is only done if - there are callbacks for [changed]. -*) - -class ['a] variable_signals : - set:'a signal -> changed:'a signal -> - object ('b) - val after : bool - method after : 'b - method set : callback:('a -> unit) -> GtkSignal.id - method changed : callback:('a -> unit) -> GtkSignal.id - method disconnect : GtkSignal.id -> unit - val mutable disconnectors : (GtkSignal.id -> bool) list - end - -class ['a] variable : 'a -> - object - val set : 'a signal - val changed : 'a signal - val mutable x : 'a - method connect : 'a variable_signals - method get : 'a - method set : 'a -> unit - method private equal : 'a -> 'a -> bool - method private real_set : 'a -> unit - end diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gWindow.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gWindow.ml deleted file mode 100644 index 9ee313647..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gWindow.ml +++ /dev/null @@ -1,151 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open GtkBase -open GtkWindow -open GtkMisc -open GObj -open GContainer - -class ['a] window_skel obj = object - constraint 'a = _ #window_skel - inherit container obj - method event = new GObj.event_ops obj - method as_window = Window.coerce obj - method activate_focus () = Window.activate_focus obj - method activate_default () = Window.activate_default obj - method add_accel_group = Window.add_accel_group obj - method set_modal = Window.set_modal obj - method set_default_size = Window.set_default_size obj - method set_position = Window.set_position obj - method set_resize_mode = Container.set_resize_mode obj - method set_transient_for (w : 'a) = - Window.set_transient_for obj w#as_window - method set_title = Window.set_title obj - method set_wm_name name = Window.set_wmclass obj ~name - method set_wm_class cls = Window.set_wmclass obj ~clas:cls - method set_allow_shrink allow_shrink = Window.set_policy obj ~allow_shrink - method set_allow_grow allow_grow = Window.set_policy obj ~allow_grow - method set_auto_shrink auto_shrink = Window.set_policy obj ~auto_shrink - method show () = Widget.show obj -end - -class window obj = object - inherit [window] window_skel (Window.coerce obj) - method connect = new container_signals obj -end - -let window ?kind:(t=`TOPLEVEL) ?title ?wm_name ?wm_class ?position - ?allow_shrink ?allow_grow ?auto_shrink ?modal ?x ?y - ?border_width ?width ?height ?(show=false) () = - let w = Window.create t in - Window.set w ?title ?wm_name ?wm_class ?position - ?allow_shrink ?allow_grow ?auto_shrink ?modal ?x ?y; - Container.set w ?border_width ?width ?height; - if show then Widget.show w; - new window w - -class dialog obj = object - inherit [window] window_skel (Dialog.coerce obj) - method connect = new container_signals obj - method action_area = new GPack.box (Dialog.action_area obj) - method vbox = new GPack.box (Dialog.vbox obj) -end - -let dialog ?title ?wm_name ?wm_class ?position ?allow_shrink - ?allow_grow ?auto_shrink ?modal ?x ?y ?border_width ?width ?height - ?(show=false) () = - let w = Dialog.create () in - Window.set w ?title ?wm_name ?wm_class ?position - ?allow_shrink ?allow_grow ?auto_shrink ?modal ?x ?y; - Container.set w ?border_width ?width ?height; - if show then Widget.show w; - new dialog w - -class color_selection_dialog obj = object - inherit [window] window_skel (obj : Gtk.color_selection_dialog obj) - method connect = new container_signals obj - method ok_button = - new GButton.button (ColorSelection.ok_button obj) - method cancel_button = - new GButton.button (ColorSelection.cancel_button obj) - method help_button = - new GButton.button (ColorSelection.help_button obj) - method colorsel = - new GMisc.color_selection (ColorSelection.colorsel obj) -end - -let color_selection_dialog ?(title="Pick a color") - ?wm_name ?wm_class ?position - ?allow_shrink ?allow_grow ?auto_shrink ?modal ?x ?y - ?border_width ?width ?height ?(show=false) () = - let w = ColorSelection.create_dialog title in - Window.set w ?wm_name ?wm_class ?position - ?allow_shrink ?allow_grow ?auto_shrink ?modal ?x ?y; - Container.set w ?border_width ?width ?height; - if show then Widget.show w; - new color_selection_dialog w - -class file_selection obj = object - inherit [window] window_skel (obj : Gtk.file_selection obj) - method connect = new container_signals obj - method set_filename = FileSelection.set_filename obj - method get_filename = FileSelection.get_filename obj - method set_fileop_buttons = FileSelection.set_fileop_buttons obj - method ok_button = new GButton.button (FileSelection.get_ok_button obj) - method cancel_button = - new GButton.button (FileSelection.get_cancel_button obj) - method help_button = new GButton.button (FileSelection.get_help_button obj) -end - -let file_selection ?(title="Choose a file") ?filename - ?(fileop_buttons=false) - ?wm_name ?wm_class ?position - ?allow_shrink ?allow_grow ?auto_shrink ?modal ?x ?y - ?border_width ?width ?height ?(show=false) () = - let w = FileSelection.create title in - FileSelection.set w ?filename ~fileop_buttons; - Window.set w ?wm_name ?wm_class ?position - ?allow_shrink ?allow_grow ?auto_shrink ?modal ?x ?y; - Container.set w ?border_width ?width ?height; - if show then Widget.show w; - new file_selection w - -class font_selection_dialog obj = object - inherit [window] window_skel (obj : Gtk.font_selection_dialog obj) - method connect = new container_signals obj -(* - method font = FontSelectionDialog.get_font obj - method font_name = FontSelectionDialog.get_font_name obj - method set_font_name = FontSelectionDialog.set_font_name obj - method preview_text = FontSelectionDialog.get_preview_text obj - method set_preview_text = FontSelectionDialog.set_preview_text obj - method set_filter = FontSelectionDialog.set_filter obj -*) - method selection = - new GMisc.font_selection (FontSelectionDialog.font_selection obj) - method ok_button = new GButton.button (FontSelectionDialog.ok_button obj) - method apply_button = - new GButton.button (FontSelectionDialog.apply_button obj) - method cancel_button = - new GButton.button (FontSelectionDialog.cancel_button obj) -end - -let font_selection_dialog ?title ?wm_name ?wm_class ?position - ?allow_shrink ?allow_grow ?auto_shrink ?modal ?x ?y - ?border_width ?width ?height ?(show=false) () = - let w = FontSelectionDialog.create ?title () in - Window.set w ?wm_name ?wm_class ?position - ?allow_shrink ?allow_grow ?auto_shrink ?modal ?x ?y; - Container.set w ?border_width ?width ?height; - if show then Widget.show w; - new font_selection_dialog w - -class plug (obj : Gtk.plug obj) = window obj - -let plug ~window:xid ?border_width ?width ?height ?(show=false) () = - let w = Plug.create xid in - Container.set w ?border_width ?width ?height; - if show then Widget.show w; - new plug w diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gWindow.mli b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gWindow.mli deleted file mode 100644 index 4c89a76b6..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gWindow.mli +++ /dev/null @@ -1,156 +0,0 @@ -(* $Id$ *) - -open Gtk -open GObj - -class ['a] window_skel : 'b obj -> - object - inherit GContainer.container - constraint 'a = 'a #window_skel - constraint 'b = [>`widget|`container|`window] - val obj : 'b obj - method activate_default : unit -> unit - method activate_focus : unit -> unit - method add_accel_group : accel_group -> unit - method event : event_ops - method as_window : Gtk.window obj - method set_allow_grow : bool -> unit - method set_allow_shrink : bool -> unit - method set_auto_shrink : bool -> unit - method set_default_size : width:int -> height:int -> unit - method set_modal : bool -> unit - method set_position : Tags.window_position -> unit - method set_resize_mode : Tags.resize_mode -> unit - method set_title : string -> unit - method set_transient_for : 'a -> unit - method set_wm_class : string -> unit - method set_wm_name : string -> unit - method show : unit -> unit - end - -class window : [>`window] obj -> - object - inherit [window] window_skel - val obj : Gtk.window obj - method connect : GContainer.container_signals - end -val window : - ?kind:Tags.window_type -> - ?title:string -> - ?wm_name:string -> - ?wm_class:string -> - ?position:Tags.window_position -> - ?allow_shrink:bool -> - ?allow_grow:bool -> - ?auto_shrink:bool -> - ?modal:bool -> - ?x:int -> - ?y:int -> - ?border_width:int -> - ?width:int -> ?height:int -> ?show:bool -> unit -> window - -class dialog : [>`dialog] obj -> - object - inherit [window] window_skel - val obj : Gtk.dialog obj - method action_area : GPack.box - method connect : GContainer.container_signals - method event : event_ops - method vbox : GPack.box - end -val dialog : - ?title:string -> - ?wm_name:string -> - ?wm_class:string -> - ?position:Tags.window_position -> - ?allow_shrink:bool -> - ?allow_grow:bool -> - ?auto_shrink:bool -> - ?modal:bool -> - ?x:int -> - ?y:int -> - ?border_width:int -> - ?width:int -> ?height:int -> ?show:bool -> unit -> dialog - -class color_selection_dialog : Gtk.color_selection_dialog obj -> - object - inherit [window] window_skel - val obj : Gtk.color_selection_dialog obj - method cancel_button : GButton.button - method colorsel : GMisc.color_selection - method connect : GContainer.container_signals - method help_button : GButton.button - method ok_button : GButton.button - end -val color_selection_dialog : - ?title:string -> - ?wm_name:string -> - ?wm_class:string -> - ?position:Tags.window_position -> - ?allow_shrink:bool -> - ?allow_grow:bool -> - ?auto_shrink:bool -> - ?modal:bool -> - ?x:int -> - ?y:int -> - ?border_width:int -> - ?width:int -> ?height:int -> ?show:bool -> unit -> color_selection_dialog - -class file_selection : Gtk.file_selection obj -> - object - inherit [window] window_skel - val obj : Gtk.file_selection obj - method cancel_button : GButton.button - method connect : GContainer.container_signals - method get_filename : string - method help_button : GButton.button - method ok_button : GButton.button - method set_filename : string -> unit - method set_fileop_buttons : bool -> unit - end -val file_selection : - ?title:string -> - ?filename:string -> - ?fileop_buttons:bool -> - ?wm_name:string -> - ?wm_class:string -> - ?position:Tags.window_position -> - ?allow_shrink:bool -> - ?allow_grow:bool -> - ?auto_shrink:bool -> - ?modal:bool -> - ?x:int -> - ?y:int -> - ?border_width:int -> - ?width:int -> ?height:int -> ?show:bool -> unit -> file_selection - -class font_selection_dialog : Gtk.font_selection_dialog obj -> - object - inherit [window] window_skel - val obj : Gtk.font_selection_dialog obj - method apply_button : GButton.button - method cancel_button : GButton.button - method connect : GContainer.container_signals - method selection : GMisc.font_selection - method ok_button : GButton.button - end -val font_selection_dialog : - ?title:string -> - ?wm_name:string -> - ?wm_class:string -> - ?position:Tags.window_position -> - ?allow_shrink:bool -> - ?allow_grow:bool -> - ?auto_shrink:bool -> - ?modal:bool -> - ?x:int -> - ?y:int -> - ?border_width:int -> - ?width:int -> ?height:int -> ?show:bool -> unit -> font_selection_dialog - -class plug : Gtk.plug obj -> window - -val plug : - window:Gdk.xid -> - ?border_width:int -> - ?width:int -> ?height:int -> ?show:bool -> unit -> plug diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gaux.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gaux.ml deleted file mode 100644 index a1172915b..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gaux.ml +++ /dev/null @@ -1,17 +0,0 @@ -(* $Id$ *) - -(* Option handling *) - -let may ~f x = - match x with None -> () - | Some x -> let _ = f x in () - -let may_map ~f x = - match x with None -> None - | Some x -> Some (f x) - -let default x ~opt = - match opt with None -> x | Some y -> y - -let may_default f x ~opt = - match opt with None -> f x | Some y -> y diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gdk.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gdk.ml deleted file mode 100644 index c22c4b55c..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gdk.ml +++ /dev/null @@ -1,535 +0,0 @@ -(* $Id$ *) - -open Gaux - -type colormap -type visual -type region -type gc -type 'a drawable -type window = [`window] drawable -type pixmap = [`pixmap] drawable -type bitmap = [`bitmap] drawable -type font -type image -type atom = int -type keysym = int -type 'a event -type drag_context -type cursor -type xid = int32 - -exception Error of string -let _ = Callback.register_exception "gdkerror" (Error"") - -module Tags = struct - type event_type = - [ `NOTHING|`DELETE|`DESTROY|`EXPOSE|`MOTION_NOTIFY|`BUTTON_PRESS - |`TWO_BUTTON_PRESS|`THREE_BUTTON_PRESS - |`BUTTON_RELEASE|`KEY_PRESS - |`KEY_RELEASE|`ENTER_NOTIFY|`LEAVE_NOTIFY|`FOCUS_CHANGE - |`CONFIGURE|`MAP|`UNMAP|`PROPERTY_NOTIFY|`SELECTION_CLEAR - |`SELECTION_REQUEST|`SELECTION_NOTIFY|`PROXIMITY_IN - |`PROXIMITY_OUT|`DRAG_ENTER|`DRAG_LEAVE|`DRAG_MOTION|`DRAG_STATUS - |`DROP_START|`DROP_FINISHED|`CLIENT_EVENT|`VISIBILITY_NOTIFY - |`NO_EXPOSE ] - - type event_mask = - [ `EXPOSURE - |`POINTER_MOTION|`POINTER_MOTION_HINT - |`BUTTON_MOTION|`BUTTON1_MOTION|`BUTTON2_MOTION|`BUTTON3_MOTION - |`BUTTON_PRESS|`BUTTON_RELEASE - |`KEY_PRESS|`KEY_RELEASE - |`ENTER_NOTIFY|`LEAVE_NOTIFY|`FOCUS_CHANGE - |`STRUCTURE|`PROPERTY_CHANGE|`VISIBILITY_NOTIFY - |`PROXIMITY_IN|`PROXIMITY_OUT|`SUBSTRUCTURE - |`ALL_EVENTS ] - - type extension_events = - [ `NONE|`ALL|`CURSOR ] - - type visibility_state = - [ `UNOBSCURED|`PARTIAL|`FULLY_OBSCURED ] - - type input_source = - [ `MOUSE|`PEN|`ERASER|`CURSOR ] - - type notify_type = - [ `ANCESTOR|`VIRTUAL|`INFERIOR|`NONLINEAR|`NONLINEAR_VIRTUAL|`UNKNOWN ] - - type crossing_mode = - [ `NORMAL|`GRAB|`UNGRAB ] - - type modifier = - [ `SHIFT|`LOCK|`CONTROL|`MOD1|`MOD2|`MOD3|`MOD4|`MOD5|`BUTTON1 - |`BUTTON2|`BUTTON3|`BUTTON4|`BUTTON5 ] - - type drag_action = - [ `DEFAULT|`COPY|`MOVE|`LINK|`PRIVATE|`ASK ] - -end -open Tags - -module Convert = struct - external test_modifier : modifier -> int -> bool - = "ml_test_GdkModifier_val" - let modifier i = - List.filter [`SHIFT;`LOCK;`CONTROL;`MOD1;`MOD2;`MOD3;`MOD4;`MOD5; - `BUTTON1;`BUTTON2;`BUTTON3;`BUTTON4;`BUTTON5] - ~f:(fun m -> test_modifier m i) -end - -module Screen = struct - external width : unit -> int = "ml_gdk_screen_width" - external height : unit -> int = "ml_gdk_screen_height" -end - -module Visual = struct - type visual_type = - [ `STATIC_GRAY|`GRAYSCALE|`STATIC_COLOR - |`PSEUDO_COLOR|`TRUE_COLOR|`DIRECT_COLOR ] - - external get_best : ?depth:int -> ?kind:visual_type -> unit -> visual - = "ml_gdk_visual_get_best" - external get_type : visual -> visual_type = "ml_GdkVisual_type" - external depth : visual -> int = "ml_GdkVisual_depth" - external red_mask : visual -> int = "ml_GdkVisual_red_mask" - external red_shift : visual -> int = "ml_GdkVisual_red_shift" - external red_prec : visual -> int = "ml_GdkVisual_red_prec" - external green_mask : visual -> int = "ml_GdkVisual_green_mask" - external green_shift : visual -> int = "ml_GdkVisual_green_shift" - external green_prec : visual -> int = "ml_GdkVisual_green_prec" - external blue_mask : visual -> int = "ml_GdkVisual_blue_mask" - external blue_shift : visual -> int = "ml_GdkVisual_blue_shift" - external blue_prec : visual -> int = "ml_GdkVisual_blue_prec" -end - -module Image = struct - type image_type = - [ `NORMAL|`SHARED|`FASTEST ] - - external create_bitmap : visual: visual -> data: string -> - width: int -> height: int -> image - = "ml_gdk_image_new_bitmap" - external create : kind: image_type -> visual: visual -> - width: int -> height: int -> image - = "ml_gdk_image_new" - external get : - 'a drawable -> x: int -> y: int -> width: int -> height: int -> image - = "ml_gdk_image_get" - external put_pixel : image -> x: int -> y: int -> pixel: int -> unit - = "ml_gdk_image_put_pixel" - external get_pixel : image -> x: int -> y: int -> int - = "ml_gdk_image_get_pixel" - external destroy : image -> unit - = "ml_gdk_image_destroy" -end - -module Color = struct - type t - - external color_white : colormap -> t = "ml_gdk_color_white" - external color_black : colormap -> t = "ml_gdk_color_black" - external color_parse : string -> t = "ml_gdk_color_parse" - external color_alloc : colormap -> t -> bool = "ml_gdk_color_alloc" - external color_create : red:int -> green:int -> blue:int -> t - = "ml_GdkColor" - - external get_system_colormap : unit -> colormap - = "ml_gdk_colormap_get_system" - external colormap_new : visual -> privat:bool -> colormap - = "ml_gdk_colormap_new" - let get_colormap ?(privat=false) vis = colormap_new vis ~privat - - type spec = [ `BLACK | `NAME of string | `RGB of int * int * int | `WHITE] - let color_alloc ~colormap color = - if not (color_alloc colormap color) then raise (Error"Color.alloc"); - color - let alloc ~colormap color = - match color with - `WHITE -> color_white colormap - | `BLACK -> color_black colormap - | `NAME s -> color_alloc ~colormap (color_parse s) - | `RGB (red,green,blue) -> - color_alloc ~colormap (color_create ~red ~green ~blue) - - external red : t -> int = "ml_GdkColor_red" - external blue : t -> int = "ml_GdkColor_blue" - external green : t -> int = "ml_GdkColor_green" - external pixel : t -> int = "ml_GdkColor_pixel" -end - -module Rectangle = struct - type t - external create : x:int -> y:int -> width:int -> height:int -> t - = "ml_GdkRectangle" - external x : t -> int = "ml_GdkRectangle_x" - external y : t -> int = "ml_GdkRectangle_y" - external width : t -> int = "ml_GdkRectangle_width" - external height : t -> int = "ml_GdkRectangle_height" -end - -module Window = struct - type background_pixmap = [ `NONE | `PARENT_RELATIVE | `PIXMAP of pixmap] - external visual_depth : visual -> int = "ml_gdk_visual_get_depth" - external get_visual : window -> visual = "ml_gdk_window_get_visual" - external get_parent : window -> window = "ml_gdk_window_get_parent" - external get_size : window -> int * int = "ml_gdk_window_get_size" - external get_position : window -> int * int = - "ml_gdk_window_get_position" - external root_parent : unit -> window = "ml_GDK_ROOT_PARENT" - external set_back_pixmap : window -> pixmap -> int -> unit = - "ml_gdk_window_set_back_pixmap" - external clear : window -> unit = "ml_gdk_window_clear" - external get_xwindow : window -> xid = "ml_GDK_WINDOW_XWINDOW" - - let set_back_pixmap w pix = - let null_pixmap = (Obj.magic Gpointer.boxed_null : pixmap) in - match pix with - `NONE -> set_back_pixmap w null_pixmap 0 - | `PARENT_RELATIVE -> set_back_pixmap w null_pixmap 1 - | `PIXMAP(pixmap) -> set_back_pixmap w pixmap 0 - (* anything OK, Maybe... *) -end - -module PointArray = struct - type t = { len: int} - external create : len:int -> t = "ml_point_array_new" - external set : t -> pos:int -> x:int -> y:int -> unit = "ml_point_array_set" - let set arr ~pos = - if pos < 0 || pos >= arr.len then invalid_arg "PointArray.set"; - set arr ~pos -end - -module Region = struct - type gdkFillRule = [ `EVEN_ODD_RULE|`WINDING_RULE ] - type gdkOverlapType = [ `IN|`OUT|`PART ] - external create : unit -> region = "ml_gdk_region_new" - external destroy : region -> unit = "ml_gdk_region_destroy" - external polygon : PointArray.t -> gdkFillRule -> region - = "ml_gdk_region_polygon" - let polygon l = - let len = List.length l in - let arr = PointArray.create ~len in - List.fold_left l ~init:0 - ~f:(fun pos (x,y) -> PointArray.set arr ~pos ~x ~y; pos+1); - polygon arr - external intersect : region -> region -> region - = "ml_gdk_regions_intersect" - external union : region -> region -> region - = "ml_gdk_regions_union" - external subtract : region -> region -> region - = "ml_gdk_regions_subtract" - external xor : region -> region -> region - = "ml_gdk_regions_xor" - external union_with_rect : region -> Rectangle.t -> region - = "ml_gdk_region_union_with_rect" - external offset : region -> x:int -> y:int -> unit = "ml_gdk_region_offset" - external shrink : region -> x:int -> y:int -> unit = "ml_gdk_region_shrink" - external empty : region -> bool = "ml_gdk_region_empty" - external equal : region -> region -> bool = "ml_gdk_region_equal" - external point_in : region -> x:int -> y:int -> bool - = "ml_gdk_region_point_in" - external rect_in : region -> Rectangle.t -> gdkOverlapType - = "ml_gdk_region_rect_in" - external get_clipbox : region -> Rectangle.t -> unit - = "ml_gdk_region_get_clipbox" -end - - -module GC = struct - type gdkFunction = [ `COPY|`INVERT|`XOR ] - type gdkFill = [ `SOLID|`TILED|`STIPPLED|`OPAQUE_STIPPLED ] - type gdkSubwindowMode = [ `CLIP_BY_CHILDREN|`INCLUDE_INFERIORS ] - type gdkLineStyle = [ `SOLID|`ON_OFF_DASH|`DOUBLE_DASH ] - type gdkCapStyle = [ `NOT_LAST|`BUTT|`ROUND|`PROJECTING ] - type gdkJoinStyle = [ `MITER|`ROUND|`BEVEL ] - external create : 'a drawable -> gc = "ml_gdk_gc_new" - external set_foreground : gc -> Color.t -> unit = "ml_gdk_gc_set_foreground" - external set_background : gc -> Color.t -> unit = "ml_gdk_gc_set_background" - external set_font : gc -> font -> unit = "ml_gdk_gc_set_font" - external set_function : gc -> gdkFunction -> unit = "ml_gdk_gc_set_function" - external set_fill : gc -> gdkFill -> unit = "ml_gdk_gc_set_fill" - external set_tile : gc -> pixmap -> unit = "ml_gdk_gc_set_tile" - external set_stipple : gc -> pixmap -> unit = "ml_gdk_gc_set_stipple" - external set_ts_origin : gc -> x:int -> y:int -> unit - = "ml_gdk_gc_set_ts_origin" - external set_clip_origin : gc -> x:int -> y:int -> unit - = "ml_gdk_gc_set_clip_origin" - external set_clip_mask : gc -> bitmap -> unit = "ml_gdk_gc_set_clip_mask" - external set_clip_rectangle : gc -> Rectangle.t -> unit - = "ml_gdk_gc_set_clip_rectangle" - external set_clip_region : gc -> region -> unit = "ml_gdk_gc_set_clip_region" - external set_subwindow : gc -> gdkSubwindowMode -> unit - = "ml_gdk_gc_set_subwindow" - external set_exposures : gc -> bool -> unit = "ml_gdk_gc_set_exposures" - external set_line_attributes : - gc -> width:int -> style:gdkLineStyle -> cap:gdkCapStyle -> - join:gdkJoinStyle -> unit - = "ml_gdk_gc_set_line_attributes" - external copy : dst:gc -> gc -> unit = "ml_gdk_gc_copy" - type values = { - foreground : Color.t; - background : Color.t; - font : font option; - fonction : gdkFunction; - fill : gdkFill; - tile : pixmap option; - stipple : pixmap option; - clip_mask : bitmap option; - subwindow_mode : gdkSubwindowMode; - ts_x_origin : int; - ts_y_origin : int; - clip_x_origin : int; - clip_y_origin : int; - graphics_exposures : bool; - line_width : int; - line_style : gdkLineStyle; - cap_style : gdkCapStyle; - join_style : gdkJoinStyle; - } - external get_values : gc -> values = "ml_gdk_gc_get_values" -end - -module Pixmap = struct - external create : window -> width:int -> height:int -> depth:int -> pixmap - = "ml_gdk_pixmap_new" - external create_from_data : - window -> string -> width:int -> height:int -> depth:int -> - fg:Color.t -> bg:Color.t -> pixmap - = "ml_gdk_pixmap_create_from_data_bc" "ml_gk_pixmap_create_from_data" - external create_from_xpm : - window -> ?colormap:colormap -> ?transparent:Color.t -> - file:string -> pixmap * bitmap - = "ml_gdk_pixmap_colormap_create_from_xpm" - external create_from_xpm_d : - window -> ?colormap:colormap -> ?transparent:Color.t -> - data:string array -> pixmap * bitmap - = "ml_gdk_pixmap_colormap_create_from_xpm_d" -end - -module Bitmap = struct - let create : window -> width:int -> height:int -> bitmap = - Obj.magic (Pixmap.create ~depth:1) - external create_from_data : - window -> string -> width:int -> height:int -> bitmap - = "ml_gdk_bitmap_create_from_data" -end - -module Font = struct - external load : string -> font = "ml_gdk_font_load" - external load_fontset : string -> font = "ml_gdk_fontset_load" - external string_width : font -> string -> int = "ml_gdk_string_width" - external char_width : font -> char -> int = "ml_gdk_char_width" - external string_height : font -> string -> int = "ml_gdk_string_height" - external char_height : font -> char -> int = "ml_gdk_char_height" - external string_measure : font -> string -> int = "ml_gdk_string_measure" - external char_measure : font -> char -> int = "ml_gdk_char_measure" - external get_type : font -> [`FONT | `FONTSET] = "ml_GdkFont_type" - external ascent : font -> int = "ml_GdkFont_ascent" - external descent : font -> int = "ml_GdkFont_descent" -end - -module Draw = struct - external point : 'a drawable -> gc -> x:int -> y:int -> unit - = "ml_gdk_draw_point" - external line : 'a drawable -> gc -> x:int -> y:int -> x:int -> y:int -> unit - = "ml_gdk_draw_line_bc" "ml_gdk_draw_line" - external rectangle : - 'a drawable -> gc -> - filled:bool -> x:int -> y:int -> width:int -> height:int -> unit - = "ml_gdk_draw_rectangle_bc" "ml_gdk_draw_rectangle" - let rectangle w gc ~x ~y ~width ~height ?(filled=false) () = - rectangle w gc ~x ~y ~width ~height ~filled - external arc : - 'a drawable -> gc -> filled:bool -> x:int -> y:int -> - width:int -> height:int -> start:int -> angle:int -> unit - = "ml_gdk_draw_arc_bc" "ml_gdk_draw_arc" - let arc w gc ~x ~y ~width ~height ?(filled=false) ?(start=0.) - ?(angle=360.) () = - arc w gc ~x ~y ~width ~height ~filled - ~start:(truncate(start *. 64.)) - ~angle:(truncate(angle *. 64.)) - external polygon : 'a drawable -> gc -> filled:bool -> PointArray.t -> unit - = "ml_gdk_draw_polygon" - let polygon w gc ?(filled=false) l = - let len = List.length l in - let arr = PointArray.create ~len in - List.fold_left l ~init:0 - ~f:(fun pos (x,y) -> PointArray.set arr ~pos ~x ~y; pos+1); - polygon w gc ~filled arr - external string : 'a drawable -> font: font -> gc -> x: int -> y: int -> - string: string -> unit - = "ml_gdk_draw_string_bc" "ml_gdk_draw_string" - external image : 'a drawable -> gc -> image: image -> - xsrc: int -> ysrc: int -> xdest: int -> ydest: int -> - width: int -> height: int -> unit - = "ml_gdk_draw_image_bc" "ml_gdk_draw_image" -end - -module Rgb = struct - external init : unit -> unit = "ml_gdk_rgb_init" - external get_visual : unit -> visual = "ml_gdk_rgb_get_visual" - external get_cmap : unit -> colormap = "ml_gdk_rgb_get_cmap" -end - -module DnD = struct - external drag_status : drag_context -> drag_action list -> time:int -> unit - = "ml_gdk_drag_status" - external drag_context_suggested_action : drag_context -> drag_action - = "ml_GdkDragContext_suggested_action" - external drag_context_targets : drag_context -> atom list - = "ml_GdkDragContext_targets" -end - -module Truecolor = struct - (* Truecolor quick color query *) - - type visual_shift_prec = { - red_shift : int; - red_prec : int; - green_shift : int; - green_prec : int; - blue_shift : int; - blue_prec : int - } - - let shift_prec visual = { - red_shift = Visual.red_shift visual; - red_prec = Visual.red_prec visual; - green_shift = Visual.green_shift visual; - green_prec = Visual.green_prec visual; - blue_shift = Visual.blue_shift visual; - blue_prec = Visual.blue_prec visual; - } - - let color_creator visual = - match Visual.get_type visual with - `TRUE_COLOR | `DIRECT_COLOR -> - let shift_prec = shift_prec visual in - Format.eprintf "red : %d %d, " - shift_prec.red_shift shift_prec.red_prec; - Format.eprintf "green : %d %d, " - shift_prec.green_shift shift_prec.green_prec; - Format.eprintf "blue : %d %d" - shift_prec.blue_shift shift_prec.blue_prec; - Format.pp_print_newline Format.err_formatter (); - let red_lsr = 16 - shift_prec.red_prec - and green_lsr = 16 - shift_prec.green_prec - and blue_lsr = 16 - shift_prec.blue_prec in - fun ~red: red ~green: green ~blue: blue -> - (((red lsr red_lsr) lsl shift_prec.red_shift) lor - ((green lsr green_lsr) lsl shift_prec.green_shift) lor - ((blue lsr blue_lsr) lsl shift_prec.blue_shift)) - | _ -> raise (Invalid_argument "Gdk.Truecolor.color_creator") - - let color_parser visual = - match Visual.get_type visual with - `TRUE_COLOR | `DIRECT_COLOR -> - let shift_prec = shift_prec visual in - let red_lsr = 16 - shift_prec.red_prec - and green_lsr = 16 - shift_prec.green_prec - and blue_lsr = 16 - shift_prec.blue_prec in - let mask = 1 lsl 16 - 1 in - fun pixel -> - ((pixel lsr shift_prec.red_shift) lsl red_lsr) land mask, - ((pixel lsr shift_prec.green_shift) lsl green_lsr) land mask, - ((pixel lsr shift_prec.blue_shift) lsl blue_lsr) land mask - | _ -> raise (Invalid_argument "Gdk.Truecolor.color_parser") -end - -module X = struct - (* X related functions *) - external flush : unit -> unit - = "ml_gdk_flush" - external beep : unit -> unit - = "ml_gdk_beep" -end - -module Cursor = struct - type cursor_type = [ - | `X_CURSOR - | `ARROW - | `BASED_ARROW_DOWN - | `BASED_ARROW_UP - | `BOAT - | `BOGOSITY - | `BOTTOM_LEFT_CORNER - | `BOTTOM_RIGHT_CORNER - | `BOTTOM_SIDE - | `BOTTOM_TEE - | `BOX_SPIRAL - | `CENTER_PTR - | `CIRCLE - | `CLOCK - | `COFFEE_MUG - | `CROSS - | `CROSS_REVERSE - | `CROSSHAIR - | `DIAMOND_CROSS - | `DOT - | `DOTBOX - | `DOUBLE_ARROW - | `DRAFT_LARGE - | `DRAFT_SMALL - | `DRAPED_BOX - | `EXCHANGE - | `FLEUR - | `GOBBLER - | `GUMBY - | `HAND1 - | `HAND2 - | `HEART - | `ICON - | `IRON_CROSS - | `LEFT_PTR - | `LEFT_SIDE - | `LEFT_TEE - | `LEFTBUTTON - | `LL_ANGLE - | `LR_ANGLE - | `MAN - | `MIDDLEBUTTON - | `MOUSE - | `PENCIL - | `PIRATE - | `PLUS - | `QUESTION_ARROW - | `RIGHT_PTR - | `RIGHT_SIDE - | `RIGHT_TEE - | `RIGHTBUTTON - | `RTL_LOGO - | `SAILBOAT - | `SB_DOWN_ARROW - | `SB_H_DOUBLE_ARROW - | `SB_LEFT_ARROW - | `SB_RIGHT_ARROW - | `SB_UP_ARROW - | `SB_V_DOUBLE_ARROW - | `SHUTTLE - | `SIZING - | `SPIDER - | `SPRAYCAN - | `STAR - | `TARGET - | `TCROSS - | `TOP_LEFT_ARROW - | `TOP_LEFT_CORNER - | `TOP_RIGHT_CORNER - | `TOP_SIDE - | `TOP_TEE - | `TREK - | `UL_ANGLE - | `UMBRELLA - | `UR_ANGLE - | `WATCH - | `XTERM - ] - external create : cursor_type -> cursor = "ml_gdk_cursor_new" - external create_from_pixmap : - pixmap -> mask:bitmap -> - fg:Color.t -> bg:Color.t -> x:int -> y:int -> cursor - = "ml_gdk_cursor_new_from_pixmap_bc" "ml_gdk_cursor_new_from_pixmap" - external destroy : cursor -> unit = "ml_gdk_cursor_destroy" -end diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gdk.mli b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gdk.mli deleted file mode 100644 index 2914b60ce..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gdk.mli +++ /dev/null @@ -1,447 +0,0 @@ -(* $Id$ *) - -type colormap -type visual -type region -type gc -type 'a drawable -type window = [`window] drawable -type pixmap = [`pixmap] drawable -type bitmap = [`bitmap] drawable -type font -type image -type atom = int -type keysym = int -type 'a event -type drag_context -type cursor -type xid = int32 - -exception Error of string - -module Tags : sig - type event_type = - [ `NOTHING|`DELETE|`DESTROY|`EXPOSE|`MOTION_NOTIFY|`BUTTON_PRESS - |`TWO_BUTTON_PRESS|`THREE_BUTTON_PRESS - |`BUTTON_RELEASE|`KEY_PRESS - |`KEY_RELEASE|`ENTER_NOTIFY|`LEAVE_NOTIFY|`FOCUS_CHANGE - |`CONFIGURE|`MAP|`UNMAP|`PROPERTY_NOTIFY|`SELECTION_CLEAR - |`SELECTION_REQUEST|`SELECTION_NOTIFY|`PROXIMITY_IN - |`PROXIMITY_OUT|`DRAG_ENTER|`DRAG_LEAVE|`DRAG_MOTION|`DRAG_STATUS - |`DROP_START|`DROP_FINISHED|`CLIENT_EVENT|`VISIBILITY_NOTIFY - |`NO_EXPOSE ] - type event_mask = - [ `EXPOSURE - |`POINTER_MOTION|`POINTER_MOTION_HINT - |`BUTTON_MOTION|`BUTTON1_MOTION|`BUTTON2_MOTION|`BUTTON3_MOTION - |`BUTTON_PRESS|`BUTTON_RELEASE - |`KEY_PRESS|`KEY_RELEASE - |`ENTER_NOTIFY|`LEAVE_NOTIFY|`FOCUS_CHANGE - |`STRUCTURE|`PROPERTY_CHANGE|`VISIBILITY_NOTIFY - |`PROXIMITY_IN|`PROXIMITY_OUT|`SUBSTRUCTURE - |`ALL_EVENTS ] - type extension_events = [ `NONE|`ALL|`CURSOR ] - type visibility_state = [ `UNOBSCURED|`PARTIAL|`FULLY_OBSCURED ] - type input_source = [ `MOUSE|`PEN|`ERASER|`CURSOR ] - type notify_type = - [ `ANCESTOR|`VIRTUAL|`INFERIOR|`NONLINEAR|`NONLINEAR_VIRTUAL|`UNKNOWN ] - type crossing_mode = [ `NORMAL|`GRAB|`UNGRAB ] - type modifier = - [ `SHIFT|`LOCK|`CONTROL|`MOD1|`MOD2|`MOD3|`MOD4|`MOD5|`BUTTON1 - |`BUTTON2|`BUTTON3|`BUTTON4|`BUTTON5 ] - type drag_action = [ `DEFAULT|`COPY|`MOVE|`LINK|`PRIVATE|`ASK ] -end - -module Convert : - sig - val modifier : int -> Tags.modifier list - end - -module Screen : - sig - external width : unit -> int = "ml_gdk_screen_width" - external height : unit -> int = "ml_gdk_screen_height" - end - -module Visual : - sig - type visual_type = - [ `STATIC_GRAY|`GRAYSCALE|`STATIC_COLOR - |`PSEUDO_COLOR|`TRUE_COLOR|`DIRECT_COLOR ] - external get_best : ?depth:int -> ?kind:visual_type -> unit -> visual - = "ml_gdk_visual_get_best" - external get_type : visual -> visual_type = "ml_GdkVisual_type" - external depth : visual -> int = "ml_GdkVisual_depth" - external red_mask : visual -> int = "ml_GdkVisual_red_mask" - external red_shift : visual -> int = "ml_GdkVisual_red_shift" - external red_prec : visual -> int = "ml_GdkVisual_red_prec" - external green_mask : visual -> int = "ml_GdkVisual_green_mask" - external green_shift : visual -> int = "ml_GdkVisual_green_shift" - external green_prec : visual -> int = "ml_GdkVisual_green_prec" - external blue_mask : visual -> int = "ml_GdkVisual_blue_mask" - external blue_shift : visual -> int = "ml_GdkVisual_blue_shift" - external blue_prec : visual -> int = "ml_GdkVisual_blue_prec" - end - -module Image : - sig - type image_type = [ `FASTEST|`NORMAL|`SHARED ] - external create_bitmap : - visual:visual -> data:string -> width:int -> height:int -> image - = "ml_gdk_image_new_bitmap" - external create : - kind:image_type -> - visual:visual -> width:int -> height:int -> image = "ml_gdk_image_new" - external get : - 'a drawable -> x:int -> y:int -> width:int -> height:int -> image - = "ml_gdk_image_get" - external put_pixel : image -> x:int -> y:int -> pixel:int -> unit - = "ml_gdk_image_put_pixel" - external get_pixel : image -> x:int -> y:int -> int - = "ml_gdk_image_get_pixel" - external destroy : image -> unit = "ml_gdk_image_destroy" - end - -module Color : - sig - external get_system_colormap : unit -> colormap - = "ml_gdk_colormap_get_system" - val get_colormap : ?privat:bool -> visual -> colormap - - type t - type spec = [ - | `BLACK - | `NAME of string - | `RGB of int * int * int - | `WHITE - ] - val alloc : colormap:colormap -> spec -> t - external red : t -> int = "ml_GdkColor_red" - external blue : t -> int = "ml_GdkColor_blue" - external green : t -> int = "ml_GdkColor_green" - external pixel : t -> int = "ml_GdkColor_pixel" - end - -module Rectangle : - sig - type t - external create : x:int -> y:int -> width:int -> height:int -> t - = "ml_GdkRectangle" - external x : t -> int = "ml_GdkRectangle_x" - external y : t -> int = "ml_GdkRectangle_y" - external width : t -> int = "ml_GdkRectangle_width" - external height : t -> int = "ml_GdkRectangle_height" - end - -module Window : - sig - type background_pixmap = [ `NONE|`PARENT_RELATIVE|`PIXMAP of pixmap ] - external visual_depth : visual -> int = "ml_gdk_visual_get_depth" - external get_visual : window -> visual = "ml_gdk_window_get_visual" - external get_parent : window -> window = "ml_gdk_window_get_parent" - external get_size : window -> int * int = "ml_gdk_window_get_size" - external get_position : window -> int * int - = "ml_gdk_window_get_position" - external root_parent : unit -> window = "ml_GDK_ROOT_PARENT" - external clear : window -> unit = "ml_gdk_window_clear" - external get_xwindow : window -> xid = "ml_GDK_WINDOW_XWINDOW" - val set_back_pixmap : window -> background_pixmap -> unit - end - -module PointArray : - sig - type t = { len: int } - external create : len:int -> t = "ml_point_array_new" - val set : t -> pos:int -> x:int -> y:int -> unit - end - -module Region : - sig - type gdkFillRule = [ `EVEN_ODD_RULE|`WINDING_RULE ] - type gdkOverlapType = [ `IN|`OUT|`PART ] - external create : unit -> region = "ml_gdk_region_new" - external destroy : region -> unit = "ml_gdk_region_destroy" - val polygon : (int * int) list -> gdkFillRule -> region - external intersect : region -> region -> region - = "ml_gdk_regions_intersect" - external union : region -> region -> region - = "ml_gdk_regions_union" - external subtract : region -> region -> region - = "ml_gdk_regions_subtract" - external xor : region -> region -> region - = "ml_gdk_regions_xor" - external union_with_rect : region -> Rectangle.t -> region - = "ml_gdk_region_union_with_rect" - external offset : region -> x:int -> y:int -> unit = "ml_gdk_region_offset" - external shrink : region -> x:int -> y:int -> unit = "ml_gdk_region_shrink" - external empty : region -> bool = "ml_gdk_region_empty" - external equal : region -> region -> bool = "ml_gdk_region_equal" - external point_in : region -> x:int -> y:int -> bool - = "ml_gdk_region_point_in" - external rect_in : region -> Rectangle.t -> gdkOverlapType - = "ml_gdk_region_rect_in" - external get_clipbox : region -> Rectangle.t -> unit - = "ml_gdk_region_get_clipbox" - end - -module GC : - sig - type gdkFunction = [ `COPY|`INVERT|`XOR ] - type gdkFill = [ `SOLID|`TILED|`STIPPLED|`OPAQUE_STIPPLED ] - type gdkSubwindowMode = [ `CLIP_BY_CHILDREN|`INCLUDE_INFERIORS ] - type gdkLineStyle = [ `SOLID|`ON_OFF_DASH|`DOUBLE_DASH ] - type gdkCapStyle = [ `NOT_LAST|`BUTT|`ROUND|`PROJECTING ] - type gdkJoinStyle = [ `MITER|`ROUND|`BEVEL ] - external create : 'a drawable -> gc = "ml_gdk_gc_new" - external set_foreground : gc -> Color.t -> unit - = "ml_gdk_gc_set_foreground" - external set_background : gc -> Color.t -> unit - = "ml_gdk_gc_set_background" - external set_font : gc -> font -> unit = "ml_gdk_gc_set_font" - external set_function : gc -> gdkFunction -> unit - = "ml_gdk_gc_set_function" - external set_fill : gc -> gdkFill -> unit = "ml_gdk_gc_set_fill" - external set_tile : gc -> pixmap -> unit = "ml_gdk_gc_set_tile" - external set_stipple : gc -> pixmap -> unit = "ml_gdk_gc_set_stipple" - external set_ts_origin : gc -> x:int -> y:int -> unit - = "ml_gdk_gc_set_ts_origin" - external set_clip_origin : gc -> x:int -> y:int -> unit - = "ml_gdk_gc_set_clip_origin" - external set_clip_mask : gc -> bitmap -> unit = "ml_gdk_gc_set_clip_mask" - external set_clip_rectangle : gc -> Rectangle.t -> unit - = "ml_gdk_gc_set_clip_rectangle" - external set_clip_region : gc -> region -> unit - = "ml_gdk_gc_set_clip_region" - external set_subwindow : gc -> gdkSubwindowMode -> unit - = "ml_gdk_gc_set_subwindow" - external set_exposures : gc -> bool -> unit = "ml_gdk_gc_set_exposures" - external set_line_attributes : - gc -> - width:int -> - style:gdkLineStyle -> cap:gdkCapStyle -> join:gdkJoinStyle -> unit - = "ml_gdk_gc_set_line_attributes" - external copy : dst:gc -> gc -> unit = "ml_gdk_gc_copy" - type values = { - foreground : Color.t; - background : Color.t; - font : font option; - fonction : gdkFunction; - fill : gdkFill; - tile : pixmap option; - stipple : pixmap option; - clip_mask : bitmap option; - subwindow_mode : gdkSubwindowMode; - ts_x_origin : int; - ts_y_origin : int; - clip_x_origin : int; - clip_y_origin : int; - graphics_exposures : bool; - line_width : int; - line_style : gdkLineStyle; - cap_style : gdkCapStyle; - join_style : gdkJoinStyle; - } - external get_values : gc -> values = "ml_gdk_gc_get_values" - end - -module Pixmap : - sig - external create : - window -> width:int -> height:int -> depth:int -> pixmap - = "ml_gdk_pixmap_new" - external create_from_data : - window -> - string -> - width:int -> - height:int -> depth:int -> fg:Color.t -> bg:Color.t -> pixmap - = "ml_gdk_pixmap_create_from_data_bc" "ml_gk_pixmap_create_from_data" - external create_from_xpm : - window -> - ?colormap:colormap -> - ?transparent:Color.t -> file:string -> pixmap * bitmap - = "ml_gdk_pixmap_colormap_create_from_xpm" - external create_from_xpm_d : - window -> - ?colormap:colormap -> - ?transparent:Color.t -> data:string array -> pixmap * bitmap - = "ml_gdk_pixmap_colormap_create_from_xpm_d" - end - -module Bitmap : - sig - val create : window -> width:int -> height:int -> bitmap - external create_from_data : - window -> string -> width:int -> height:int -> bitmap - = "ml_gdk_bitmap_create_from_data" - end - -module Font : - sig - external load : string -> font = "ml_gdk_font_load" - external load_fontset : string -> font = "ml_gdk_fontset_load" - external string_width : font -> string -> int = "ml_gdk_string_width" - external char_width : font -> char -> int = "ml_gdk_char_width" - external string_height : font -> string -> int = "ml_gdk_string_height" - external char_height : font -> char -> int = "ml_gdk_char_height" - external string_measure : font -> string -> int = "ml_gdk_string_measure" - external char_measure : font -> char -> int = "ml_gdk_char_measure" - external get_type : font -> [`FONT | `FONTSET] = "ml_GdkFont_type" - external ascent : font -> int = "ml_GdkFont_ascent" - external descent : font -> int = "ml_GdkFont_descent" - end - -module Draw : - sig - external point : 'a drawable -> gc -> x:int -> y:int -> unit - = "ml_gdk_draw_point" - external line : - 'a drawable -> gc -> x:int -> y:int -> x:int -> y:int -> unit - = "ml_gdk_draw_line_bc" "ml_gdk_draw_line" - val rectangle : - 'a drawable -> gc -> - x:int -> y:int -> width:int -> height:int -> ?filled:bool -> unit -> unit - val arc : - 'a drawable -> gc -> - x:int -> y:int -> width:int -> height:int -> - ?filled:bool -> ?start:float -> ?angle:float -> unit -> unit - val polygon : - 'a drawable -> gc -> ?filled:bool ->(int * int) list -> unit - external string : - 'a drawable -> - font:font -> gc -> x:int -> y:int -> string:string -> unit - = "ml_gdk_draw_string_bc" "ml_gdk_draw_string" - external image : - 'a drawable -> - gc -> - image:image -> - xsrc:int -> - ysrc:int -> xdest:int -> ydest:int -> width:int -> height:int -> unit - = "ml_gdk_draw_image_bc" "ml_gdk_draw_image" - end - -module Rgb : - sig - external init : unit -> unit = "ml_gdk_rgb_init" - external get_visual : unit -> visual = "ml_gdk_rgb_get_visual" - external get_cmap : unit -> colormap = "ml_gdk_rgb_get_cmap" - end - -module DnD : - sig - external drag_status : - drag_context -> Tags.drag_action list -> time:int -> unit - = "ml_gdk_drag_status" - external drag_context_suggested_action : drag_context -> Tags.drag_action - = "ml_GdkDragContext_suggested_action" - external drag_context_targets : drag_context -> atom list - = "ml_GdkDragContext_targets" - end - -module Truecolor : - sig - val color_creator : visual -> (red: int -> green: int -> blue: int -> int) - (* [color_creator visual] creates a function to calculate - the pixel color id for given red, green and blue component - value ([0..65535]) at the client side. [visual] must have - `TRUE_COLOR or `DIRECT_COLOR type. This function improves - the speed of the color query of true color visual greatly. *) - (* WARN: this approach is not theoretically correct for true color - visual, because we need gamma correction. *) - - val color_parser : visual -> int -> int * int * int - end - -module X : - (* X related functions *) - sig - val flush : unit -> unit (* also in GtkMain *) - val beep : unit -> unit - end - -module Cursor : sig - type cursor_type = [ - | `X_CURSOR - | `ARROW - | `BASED_ARROW_DOWN - | `BASED_ARROW_UP - | `BOAT - | `BOGOSITY - | `BOTTOM_LEFT_CORNER - | `BOTTOM_RIGHT_CORNER - | `BOTTOM_SIDE - | `BOTTOM_TEE - | `BOX_SPIRAL - | `CENTER_PTR - | `CIRCLE - | `CLOCK - | `COFFEE_MUG - | `CROSS - | `CROSS_REVERSE - | `CROSSHAIR - | `DIAMOND_CROSS - | `DOT - | `DOTBOX - | `DOUBLE_ARROW - | `DRAFT_LARGE - | `DRAFT_SMALL - | `DRAPED_BOX - | `EXCHANGE - | `FLEUR - | `GOBBLER - | `GUMBY - | `HAND1 - | `HAND2 - | `HEART - | `ICON - | `IRON_CROSS - | `LEFT_PTR - | `LEFT_SIDE - | `LEFT_TEE - | `LEFTBUTTON - | `LL_ANGLE - | `LR_ANGLE - | `MAN - | `MIDDLEBUTTON - | `MOUSE - | `PENCIL - | `PIRATE - | `PLUS - | `QUESTION_ARROW - | `RIGHT_PTR - | `RIGHT_SIDE - | `RIGHT_TEE - | `RIGHTBUTTON - | `RTL_LOGO - | `SAILBOAT - | `SB_DOWN_ARROW - | `SB_H_DOUBLE_ARROW - | `SB_LEFT_ARROW - | `SB_RIGHT_ARROW - | `SB_UP_ARROW - | `SB_V_DOUBLE_ARROW - | `SHUTTLE - | `SIZING - | `SPIDER - | `SPRAYCAN - | `STAR - | `TARGET - | `TCROSS - | `TOP_LEFT_ARROW - | `TOP_LEFT_CORNER - | `TOP_RIGHT_CORNER - | `TOP_SIDE - | `TOP_TEE - | `TREK - | `UL_ANGLE - | `UMBRELLA - | `UR_ANGLE - | `WATCH - | `XTERM - ] - external create : cursor_type -> cursor = "ml_gdk_cursor_new" - external create_from_pixmap : - pixmap -> mask:bitmap -> - fg:Color.t -> bg:Color.t -> x:int -> y:int -> cursor - = "ml_gdk_cursor_new_from_pixmap_bc" "ml_gdk_cursor_new_from_pixmap" - external destroy : cursor -> unit = "ml_gdk_cursor_destroy" -end diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gdkEvent.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gdkEvent.ml deleted file mode 100644 index 87c0e888f..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gdkEvent.ml +++ /dev/null @@ -1,159 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gdk -open Tags - -external coerce : 'a event -> event_type event = "%identity" -external unsafe_copy : Gpointer.boxed -> #event_type event - = "ml_gdk_event_copy" -external copy : (#event_type as 'a) event -> 'a event - = "ml_gdk_event_copy" -external get_type : 'a event -> 'a = "ml_GdkEventAny_type" -external get_window : 'a event -> window = "ml_GdkEventAny_window" -external get_send_event : 'a event -> bool = "ml_GdkEventAny_send_event" - -external create : (#event_type as 'a) -> 'a event - = "ml_gdk_event_new" -external set_window : 'a event -> window -> unit - = "ml_gdk_event_set_window" - -module Expose = struct - type t = [ `EXPOSE ] event - let cast (ev : event_type event) : t = - match get_type ev with `EXPOSE -> Obj.magic ev - | _ -> invalid_arg "GdkEvent.Expose.cast" - external area : t -> Rectangle.t = "ml_GdkEventExpose_area" - external count : t -> int = "ml_GdkEventExpose_count" -end - -module Visibility = struct - type t = [ `VISIBILITY_NOTIFY ] event - let cast (ev : event_type event) : t = - match get_type ev with `VISIBILITY_NOTIFY -> Obj.magic ev - | _ -> invalid_arg "GdkEvent.Visibility.cast" - external visibility : t -> visibility_state - = "ml_GdkEventVisibility_state" -end - -module Motion = struct - type t = [ `MOTION_NOTIFY ] event - let cast (ev : event_type event) : t = - match get_type ev with `MOTION_NOTIFY -> Obj.magic ev - | _ -> invalid_arg "GdkEvent.Motion.cast" - external time : t -> int = "ml_GdkEventMotion_time" - external x : t -> float = "ml_GdkEventMotion_x" - external y : t -> float = "ml_GdkEventMotion_y" - external pressure : t -> float = "ml_GdkEventMotion_pressure" - external xtilt : t -> float = "ml_GdkEventMotion_xtilt" - external ytilt : t -> float = "ml_GdkEventMotion_ytilt" - external state : t -> int = "ml_GdkEventMotion_state" - external is_hint : t -> bool = "ml_GdkEventMotion_is_hint" - external source : t -> input_source = "ml_GdkEventMotion_source" - external deviceid : t -> int = "ml_GdkEventMotion_deviceid" - external x_root : t -> float = "ml_GdkEventMotion_x_root" - external y_root : t -> float = "ml_GdkEventMotion_y_root" -end - -module Button = struct - type types = - [ `BUTTON_PRESS|`TWO_BUTTON_PRESS|`THREE_BUTTON_PRESS|`BUTTON_RELEASE ] - type t = types event - let cast (ev : event_type event) : t = - match get_type ev with - `BUTTON_PRESS|`TWO_BUTTON_PRESS|`THREE_BUTTON_PRESS|`BUTTON_RELEASE - -> Obj.magic ev - | _ -> invalid_arg "GdkEvent.Button.cast" - external time : t -> int = "ml_GdkEventButton_time" - external x : t -> float = "ml_GdkEventButton_x" - external y : t -> float = "ml_GdkEventButton_y" - external pressure : t -> float = "ml_GdkEventButton_pressure" - external xtilt : t -> float = "ml_GdkEventButton_xtilt" - external ytilt : t -> float = "ml_GdkEventButton_ytilt" - external state : t -> int = "ml_GdkEventButton_state" - external button : t -> int = "ml_GdkEventButton_button" - external source : t -> input_source = "ml_GdkEventButton_source" - external deviceid : t -> int = "ml_GdkEventButton_deviceid" - external x_root : t -> float = "ml_GdkEventButton_x_root" - external y_root : t -> float = "ml_GdkEventButton_y_root" - external set_type : t -> #types -> unit - = "ml_gdk_event_set_type" - external set_button : t -> int -> unit - = "ml_gdk_event_button_set_button" -end - -module Key = struct - type t = [ `KEY_PRESS|`KEY_RELEASE ] event - let cast (ev : event_type event) : t = - match get_type ev with - `KEY_PRESS|`KEY_RELEASE -> Obj.magic ev - | _ -> invalid_arg "GdkEvent.Key.cast" - external time : t -> int = "ml_GdkEventKey_time" - external state : t -> int = "ml_GdkEventKey_state" - external keyval : t -> keysym = "ml_GdkEventKey_keyval" - external string : t -> string = "ml_GdkEventKey_string" - let state ev = Convert.modifier (state ev) -end - -module Crossing = struct - type t = [ `ENTER_NOTIFY|`LEAVE_NOTIFY ] event - let cast (ev : event_type event) : t = - match get_type ev with - `ENTER_NOTIFY|`LEAVE_NOTIFY -> Obj.magic ev - | _ -> invalid_arg "GdkEvent.Crossing.cast" - external subwindow : t -> window = "ml_GdkEventCrossing_subwindow" - external detail : t -> notify_type = "ml_GdkEventCrossing_detail" -end - -module Focus = struct - type t = [ `FOCUS_CHANGE ] event - let cast (ev : event_type event) : t = - match get_type ev with `FOCUS_CHANGE -> Obj.magic ev - | _ -> invalid_arg "GdkEvent.Focus.cast" - external focus_in : t -> bool = "ml_GdkEventFocus_in" -end - -module Configure = struct - type t = [ `CONFIGURE ] event - let cast (ev : event_type event) : t = - match get_type ev with `CONFIGURE -> Obj.magic ev - | _ -> invalid_arg "GdkEvent.Configure.cast" - external x : t -> int = "ml_GdkEventConfigure_x" - external y : t -> int = "ml_GdkEventConfigure_y" - external width : t -> int = "ml_GdkEventConfigure_width" - external height : t -> int = "ml_GdkEventConfigure_height" -end - -module Property = struct - type t = [ `PROPERTY_NOTIFY ] event - let cast (ev : event_type event) : t = - match get_type ev with `PROPERTY_NOTIFY -> Obj.magic ev - | _ -> invalid_arg "GdkEvent.Property.cast" - external atom : t -> atom = "ml_GdkEventProperty_atom" - external time : t -> int = "ml_GdkEventProperty_time" - external state : t -> int = "ml_GdkEventProperty_state" -end - -module Selection = struct - type t = [ `SELECTION_CLEAR|`SELECTION_REQUEST|`SELECTION_NOTIFY ] event - let cast (ev : event_type event) : t = - match get_type ev with - `SELECTION_CLEAR|`SELECTION_REQUEST|`SELECTION_NOTIFY -> Obj.magic ev - | _ -> invalid_arg "GdkEvent.Selection.cast" - external selection : t -> atom = "ml_GdkEventSelection_selection" - external target : t -> atom = "ml_GdkEventSelection_target" - external property : t -> atom = "ml_GdkEventSelection_property" - external requestor : t -> int = "ml_GdkEventSelection_requestor" - external time : t -> int = "ml_GdkEventSelection_time" -end - -module Proximity = struct - type t = [ `PROXIMITY_IN|`PROXIMITY_OUT ] event - let cast (ev : event_type event) : t = - match get_type ev with - `PROXIMITY_IN|`PROXIMITY_OUT -> Obj.magic ev - | _ -> invalid_arg "GdkEvent.Proximity.cast" - external time : t -> int = "ml_GdkEventProximity_time" - external source : t -> input_source = "ml_GdkEventProximity_source" - external deviceid : t -> int = "ml_GdkEventProximity_deviceid" -end diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gdkKeysyms.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gdkKeysyms.ml deleted file mode 100644 index b0257b439..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gdkKeysyms.ml +++ /dev/null @@ -1,1320 +0,0 @@ -(* $Id$ *) - -open Gdk -let _VoidSymbol : keysym = 0xFFFFFF -let _BackSpace : keysym = 0xFF08 -let _Tab : keysym = 0xFF09 -let _Linefeed : keysym = 0xFF0A -let _Clear : keysym = 0xFF0B -let _Return : keysym = 0xFF0D -let _Pause : keysym = 0xFF13 -let _Scroll_Lock : keysym = 0xFF14 -let _Sys_Req : keysym = 0xFF15 -let _Escape : keysym = 0xFF1B -let _Delete : keysym = 0xFFFF -let _Multi_key : keysym = 0xFF20 -let _SingleCandidate : keysym = 0xFF3C -let _MultipleCandidate : keysym = 0xFF3D -let _PreviousCandidate : keysym = 0xFF3E -let _Kanji : keysym = 0xFF21 -let _Muhenkan : keysym = 0xFF22 -let _Henkan_Mode : keysym = 0xFF23 -let _Henkan : keysym = 0xFF23 -let _Romaji : keysym = 0xFF24 -let _Hiragana : keysym = 0xFF25 -let _Katakana : keysym = 0xFF26 -let _Hiragana_Katakana : keysym = 0xFF27 -let _Zenkaku : keysym = 0xFF28 -let _Hankaku : keysym = 0xFF29 -let _Zenkaku_Hankaku : keysym = 0xFF2A -let _Touroku : keysym = 0xFF2B -let _Massyo : keysym = 0xFF2C -let _Kana_Lock : keysym = 0xFF2D -let _Kana_Shift : keysym = 0xFF2E -let _Eisu_Shift : keysym = 0xFF2F -let _Eisu_toggle : keysym = 0xFF30 -let _Zen_Koho : keysym = 0xFF3D -let _Mae_Koho : keysym = 0xFF3E -let _Home : keysym = 0xFF50 -let _Left : keysym = 0xFF51 -let _Up : keysym = 0xFF52 -let _Right : keysym = 0xFF53 -let _Down : keysym = 0xFF54 -let _Prior : keysym = 0xFF55 -let _Page_Up : keysym = 0xFF55 -let _Next : keysym = 0xFF56 -let _Page_Down : keysym = 0xFF56 -let _End : keysym = 0xFF57 -let _Begin : keysym = 0xFF58 -let _Select : keysym = 0xFF60 -let _Print : keysym = 0xFF61 -let _Execute : keysym = 0xFF62 -let _Insert : keysym = 0xFF63 -let _Undo : keysym = 0xFF65 -let _Redo : keysym = 0xFF66 -let _Menu : keysym = 0xFF67 -let _Find : keysym = 0xFF68 -let _Cancel : keysym = 0xFF69 -let _Help : keysym = 0xFF6A -let _Break : keysym = 0xFF6B -let _Mode_switch : keysym = 0xFF7E -let _script_switch : keysym = 0xFF7E -let _Num_Lock : keysym = 0xFF7F -let _KP_Space : keysym = 0xFF80 -let _KP_Tab : keysym = 0xFF89 -let _KP_Enter : keysym = 0xFF8D -let _KP_F1 : keysym = 0xFF91 -let _KP_F2 : keysym = 0xFF92 -let _KP_F3 : keysym = 0xFF93 -let _KP_F4 : keysym = 0xFF94 -let _KP_Home : keysym = 0xFF95 -let _KP_Left : keysym = 0xFF96 -let _KP_Up : keysym = 0xFF97 -let _KP_Right : keysym = 0xFF98 -let _KP_Down : keysym = 0xFF99 -let _KP_Prior : keysym = 0xFF9A -let _KP_Page_Up : keysym = 0xFF9A -let _KP_Next : keysym = 0xFF9B -let _KP_Page_Down : keysym = 0xFF9B -let _KP_End : keysym = 0xFF9C -let _KP_Begin : keysym = 0xFF9D -let _KP_Insert : keysym = 0xFF9E -let _KP_Delete : keysym = 0xFF9F -let _KP_Equal : keysym = 0xFFBD -let _KP_Multiply : keysym = 0xFFAA -let _KP_Add : keysym = 0xFFAB -let _KP_Separator : keysym = 0xFFAC -let _KP_Subtract : keysym = 0xFFAD -let _KP_Decimal : keysym = 0xFFAE -let _KP_Divide : keysym = 0xFFAF -let _KP_0 : keysym = 0xFFB0 -let _KP_1 : keysym = 0xFFB1 -let _KP_2 : keysym = 0xFFB2 -let _KP_3 : keysym = 0xFFB3 -let _KP_4 : keysym = 0xFFB4 -let _KP_5 : keysym = 0xFFB5 -let _KP_6 : keysym = 0xFFB6 -let _KP_7 : keysym = 0xFFB7 -let _KP_8 : keysym = 0xFFB8 -let _KP_9 : keysym = 0xFFB9 -let _F1 : keysym = 0xFFBE -let _F2 : keysym = 0xFFBF -let _F3 : keysym = 0xFFC0 -let _F4 : keysym = 0xFFC1 -let _F5 : keysym = 0xFFC2 -let _F6 : keysym = 0xFFC3 -let _F7 : keysym = 0xFFC4 -let _F8 : keysym = 0xFFC5 -let _F9 : keysym = 0xFFC6 -let _F10 : keysym = 0xFFC7 -let _F11 : keysym = 0xFFC8 -let _L1 : keysym = 0xFFC8 -let _F12 : keysym = 0xFFC9 -let _L2 : keysym = 0xFFC9 -let _F13 : keysym = 0xFFCA -let _L3 : keysym = 0xFFCA -let _F14 : keysym = 0xFFCB -let _L4 : keysym = 0xFFCB -let _F15 : keysym = 0xFFCC -let _L5 : keysym = 0xFFCC -let _F16 : keysym = 0xFFCD -let _L6 : keysym = 0xFFCD -let _F17 : keysym = 0xFFCE -let _L7 : keysym = 0xFFCE -let _F18 : keysym = 0xFFCF -let _L8 : keysym = 0xFFCF -let _F19 : keysym = 0xFFD0 -let _L9 : keysym = 0xFFD0 -let _F20 : keysym = 0xFFD1 -let _L10 : keysym = 0xFFD1 -let _F21 : keysym = 0xFFD2 -let _R1 : keysym = 0xFFD2 -let _F22 : keysym = 0xFFD3 -let _R2 : keysym = 0xFFD3 -let _F23 : keysym = 0xFFD4 -let _R3 : keysym = 0xFFD4 -let _F24 : keysym = 0xFFD5 -let _R4 : keysym = 0xFFD5 -let _F25 : keysym = 0xFFD6 -let _R5 : keysym = 0xFFD6 -let _F26 : keysym = 0xFFD7 -let _R6 : keysym = 0xFFD7 -let _F27 : keysym = 0xFFD8 -let _R7 : keysym = 0xFFD8 -let _F28 : keysym = 0xFFD9 -let _R8 : keysym = 0xFFD9 -let _F29 : keysym = 0xFFDA -let _R9 : keysym = 0xFFDA -let _F30 : keysym = 0xFFDB -let _R10 : keysym = 0xFFDB -let _F31 : keysym = 0xFFDC -let _R11 : keysym = 0xFFDC -let _F32 : keysym = 0xFFDD -let _R12 : keysym = 0xFFDD -let _F33 : keysym = 0xFFDE -let _R13 : keysym = 0xFFDE -let _F34 : keysym = 0xFFDF -let _R14 : keysym = 0xFFDF -let _F35 : keysym = 0xFFE0 -let _R15 : keysym = 0xFFE0 -let _Shift_L : keysym = 0xFFE1 -let _Shift_R : keysym = 0xFFE2 -let _Control_L : keysym = 0xFFE3 -let _Control_R : keysym = 0xFFE4 -let _Caps_Lock : keysym = 0xFFE5 -let _Shift_Lock : keysym = 0xFFE6 -let _Meta_L : keysym = 0xFFE7 -let _Meta_R : keysym = 0xFFE8 -let _Alt_L : keysym = 0xFFE9 -let _Alt_R : keysym = 0xFFEA -let _Super_L : keysym = 0xFFEB -let _Super_R : keysym = 0xFFEC -let _Hyper_L : keysym = 0xFFED -let _Hyper_R : keysym = 0xFFEE -let _ISO_Lock : keysym = 0xFE01 -let _ISO_Level2_Latch : keysym = 0xFE02 -let _ISO_Level3_Shift : keysym = 0xFE03 -let _ISO_Level3_Latch : keysym = 0xFE04 -let _ISO_Level3_Lock : keysym = 0xFE05 -let _ISO_Group_Shift : keysym = 0xFF7E -let _ISO_Group_Latch : keysym = 0xFE06 -let _ISO_Group_Lock : keysym = 0xFE07 -let _ISO_Next_Group : keysym = 0xFE08 -let _ISO_Next_Group_Lock : keysym = 0xFE09 -let _ISO_Prev_Group : keysym = 0xFE0A -let _ISO_Prev_Group_Lock : keysym = 0xFE0B -let _ISO_First_Group : keysym = 0xFE0C -let _ISO_First_Group_Lock : keysym = 0xFE0D -let _ISO_Last_Group : keysym = 0xFE0E -let _ISO_Last_Group_Lock : keysym = 0xFE0F -let _ISO_Left_Tab : keysym = 0xFE20 -let _ISO_Move_Line_Up : keysym = 0xFE21 -let _ISO_Move_Line_Down : keysym = 0xFE22 -let _ISO_Partial_Line_Up : keysym = 0xFE23 -let _ISO_Partial_Line_Down : keysym = 0xFE24 -let _ISO_Partial_Space_Left : keysym = 0xFE25 -let _ISO_Partial_Space_Right : keysym = 0xFE26 -let _ISO_Set_Margin_Left : keysym = 0xFE27 -let _ISO_Set_Margin_Right : keysym = 0xFE28 -let _ISO_Release_Margin_Left : keysym = 0xFE29 -let _ISO_Release_Margin_Right : keysym = 0xFE2A -let _ISO_Release_Both_Margins : keysym = 0xFE2B -let _ISO_Fast_Cursor_Left : keysym = 0xFE2C -let _ISO_Fast_Cursor_Right : keysym = 0xFE2D -let _ISO_Fast_Cursor_Up : keysym = 0xFE2E -let _ISO_Fast_Cursor_Down : keysym = 0xFE2F -let _ISO_Continuous_Underline : keysym = 0xFE30 -let _ISO_Discontinuous_Underline : keysym = 0xFE31 -let _ISO_Emphasize : keysym = 0xFE32 -let _ISO_Center_Object : keysym = 0xFE33 -let _ISO_Enter : keysym = 0xFE34 -let _dead_grave : keysym = 0xFE50 -let _dead_acute : keysym = 0xFE51 -let _dead_circumflex : keysym = 0xFE52 -let _dead_tilde : keysym = 0xFE53 -let _dead_macron : keysym = 0xFE54 -let _dead_breve : keysym = 0xFE55 -let _dead_abovedot : keysym = 0xFE56 -let _dead_diaeresis : keysym = 0xFE57 -let _dead_abovering : keysym = 0xFE58 -let _dead_doubleacute : keysym = 0xFE59 -let _dead_caron : keysym = 0xFE5A -let _dead_cedilla : keysym = 0xFE5B -let _dead_ogonek : keysym = 0xFE5C -let _dead_iota : keysym = 0xFE5D -let _dead_voiced_sound : keysym = 0xFE5E -let _dead_semivoiced_sound : keysym = 0xFE5F -let _dead_belowdot : keysym = 0xFE60 -let _First_Virtual_Screen : keysym = 0xFED0 -let _Prev_Virtual_Screen : keysym = 0xFED1 -let _Next_Virtual_Screen : keysym = 0xFED2 -let _Last_Virtual_Screen : keysym = 0xFED4 -let _Terminate_Server : keysym = 0xFED5 -let _AccessX_Enable : keysym = 0xFE70 -let _AccessX_Feedback_Enable : keysym = 0xFE71 -let _RepeatKeys_Enable : keysym = 0xFE72 -let _SlowKeys_Enable : keysym = 0xFE73 -let _BounceKeys_Enable : keysym = 0xFE74 -let _StickyKeys_Enable : keysym = 0xFE75 -let _MouseKeys_Enable : keysym = 0xFE76 -let _MouseKeys_Accel_Enable : keysym = 0xFE77 -let _Overlay1_Enable : keysym = 0xFE78 -let _Overlay2_Enable : keysym = 0xFE79 -let _AudibleBell_Enable : keysym = 0xFE7A -let _Pointer_Left : keysym = 0xFEE0 -let _Pointer_Right : keysym = 0xFEE1 -let _Pointer_Up : keysym = 0xFEE2 -let _Pointer_Down : keysym = 0xFEE3 -let _Pointer_UpLeft : keysym = 0xFEE4 -let _Pointer_UpRight : keysym = 0xFEE5 -let _Pointer_DownLeft : keysym = 0xFEE6 -let _Pointer_DownRight : keysym = 0xFEE7 -let _Pointer_Button_Dflt : keysym = 0xFEE8 -let _Pointer_Button1 : keysym = 0xFEE9 -let _Pointer_Button2 : keysym = 0xFEEA -let _Pointer_Button3 : keysym = 0xFEEB -let _Pointer_Button4 : keysym = 0xFEEC -let _Pointer_Button5 : keysym = 0xFEED -let _Pointer_DblClick_Dflt : keysym = 0xFEEE -let _Pointer_DblClick1 : keysym = 0xFEEF -let _Pointer_DblClick2 : keysym = 0xFEF0 -let _Pointer_DblClick3 : keysym = 0xFEF1 -let _Pointer_DblClick4 : keysym = 0xFEF2 -let _Pointer_DblClick5 : keysym = 0xFEF3 -let _Pointer_Drag_Dflt : keysym = 0xFEF4 -let _Pointer_Drag1 : keysym = 0xFEF5 -let _Pointer_Drag2 : keysym = 0xFEF6 -let _Pointer_Drag3 : keysym = 0xFEF7 -let _Pointer_Drag4 : keysym = 0xFEF8 -let _Pointer_Drag5 : keysym = 0xFEFD -let _Pointer_EnableKeys : keysym = 0xFEF9 -let _Pointer_Accelerate : keysym = 0xFEFA -let _Pointer_DfltBtnNext : keysym = 0xFEFB -let _Pointer_DfltBtnPrev : keysym = 0xFEFC -let _3270_Duplicate : keysym = 0xFD01 -let _3270_FieldMark : keysym = 0xFD02 -let _3270_Right2 : keysym = 0xFD03 -let _3270_Left2 : keysym = 0xFD04 -let _3270_BackTab : keysym = 0xFD05 -let _3270_EraseEOF : keysym = 0xFD06 -let _3270_EraseInput : keysym = 0xFD07 -let _3270_Reset : keysym = 0xFD08 -let _3270_Quit : keysym = 0xFD09 -let _3270_PA1 : keysym = 0xFD0A -let _3270_PA2 : keysym = 0xFD0B -let _3270_PA3 : keysym = 0xFD0C -let _3270_Test : keysym = 0xFD0D -let _3270_Attn : keysym = 0xFD0E -let _3270_CursorBlink : keysym = 0xFD0F -let _3270_AltCursor : keysym = 0xFD10 -let _3270_KeyClick : keysym = 0xFD11 -let _3270_Jump : keysym = 0xFD12 -let _3270_Ident : keysym = 0xFD13 -let _3270_Rule : keysym = 0xFD14 -let _3270_Copy : keysym = 0xFD15 -let _3270_Play : keysym = 0xFD16 -let _3270_Setup : keysym = 0xFD17 -let _3270_Record : keysym = 0xFD18 -let _3270_ChangeScreen : keysym = 0xFD19 -let _3270_DeleteWord : keysym = 0xFD1A -let _3270_ExSelect : keysym = 0xFD1B -let _3270_CursorSelect : keysym = 0xFD1C -let _3270_PrintScreen : keysym = 0xFD1D -let _3270_Enter : keysym = 0xFD1E -let _space : keysym = 0x020 -let _exclam : keysym = 0x021 -let _quotedbl : keysym = 0x022 -let _numbersign : keysym = 0x023 -let _dollar : keysym = 0x024 -let _percent : keysym = 0x025 -let _ampersand : keysym = 0x026 -let _apostrophe : keysym = 0x027 -let _quoteright : keysym = 0x027 -let _parenleft : keysym = 0x028 -let _parenright : keysym = 0x029 -let _asterisk : keysym = 0x02a -let _plus : keysym = 0x02b -let _comma : keysym = 0x02c -let _minus : keysym = 0x02d -let _period : keysym = 0x02e -let _slash : keysym = 0x02f -let _0 : keysym = 0x030 -let _1 : keysym = 0x031 -let _2 : keysym = 0x032 -let _3 : keysym = 0x033 -let _4 : keysym = 0x034 -let _5 : keysym = 0x035 -let _6 : keysym = 0x036 -let _7 : keysym = 0x037 -let _8 : keysym = 0x038 -let _9 : keysym = 0x039 -let _colon : keysym = 0x03a -let _semicolon : keysym = 0x03b -let _less : keysym = 0x03c -let _equal : keysym = 0x03d -let _greater : keysym = 0x03e -let _question : keysym = 0x03f -let _at : keysym = 0x040 -let _A : keysym = 0x041 -let _B : keysym = 0x042 -let _C : keysym = 0x043 -let _D : keysym = 0x044 -let _E : keysym = 0x045 -let _F : keysym = 0x046 -let _G : keysym = 0x047 -let _H : keysym = 0x048 -let _I : keysym = 0x049 -let _J : keysym = 0x04a -let _K : keysym = 0x04b -let _L : keysym = 0x04c -let _M : keysym = 0x04d -let _N : keysym = 0x04e -let _O : keysym = 0x04f -let _P : keysym = 0x050 -let _Q : keysym = 0x051 -let _R : keysym = 0x052 -let _S : keysym = 0x053 -let _T : keysym = 0x054 -let _U : keysym = 0x055 -let _V : keysym = 0x056 -let _W : keysym = 0x057 -let _X : keysym = 0x058 -let _Y : keysym = 0x059 -let _Z : keysym = 0x05a -let _bracketleft : keysym = 0x05b -let _backslash : keysym = 0x05c -let _bracketright : keysym = 0x05d -let _asciicircum : keysym = 0x05e -let _underscore : keysym = 0x05f -let _grave : keysym = 0x060 -let _quoteleft : keysym = 0x060 -let _a : keysym = 0x061 -let _b : keysym = 0x062 -let _c : keysym = 0x063 -let _d : keysym = 0x064 -let _e : keysym = 0x065 -let _f : keysym = 0x066 -let _g : keysym = 0x067 -let _h : keysym = 0x068 -let _i : keysym = 0x069 -let _j : keysym = 0x06a -let _k : keysym = 0x06b -let _l : keysym = 0x06c -let _m : keysym = 0x06d -let _n : keysym = 0x06e -let _o : keysym = 0x06f -let _p : keysym = 0x070 -let _q : keysym = 0x071 -let _r : keysym = 0x072 -let _s : keysym = 0x073 -let _t : keysym = 0x074 -let _u : keysym = 0x075 -let _v : keysym = 0x076 -let _w : keysym = 0x077 -let _x : keysym = 0x078 -let _y : keysym = 0x079 -let _z : keysym = 0x07a -let _braceleft : keysym = 0x07b -let _bar : keysym = 0x07c -let _braceright : keysym = 0x07d -let _asciitilde : keysym = 0x07e -let _nobreakspace : keysym = 0x0a0 -let _exclamdown : keysym = 0x0a1 -let _cent : keysym = 0x0a2 -let _sterling : keysym = 0x0a3 -let _currency : keysym = 0x0a4 -let _yen : keysym = 0x0a5 -let _brokenbar : keysym = 0x0a6 -let _section : keysym = 0x0a7 -let _diaeresis : keysym = 0x0a8 -let _copyright : keysym = 0x0a9 -let _ordfeminine : keysym = 0x0aa -let _guillemotleft : keysym = 0x0ab -let _notsign : keysym = 0x0ac -let _hyphen : keysym = 0x0ad -let _registered : keysym = 0x0ae -let _macron : keysym = 0x0af -let _degree : keysym = 0x0b0 -let _plusminus : keysym = 0x0b1 -let _twosuperior : keysym = 0x0b2 -let _threesuperior : keysym = 0x0b3 -let _acute : keysym = 0x0b4 -let _mu : keysym = 0x0b5 -let _paragraph : keysym = 0x0b6 -let _periodcentered : keysym = 0x0b7 -let _cedilla : keysym = 0x0b8 -let _onesuperior : keysym = 0x0b9 -let _masculine : keysym = 0x0ba -let _guillemotright : keysym = 0x0bb -let _onequarter : keysym = 0x0bc -let _onehalf : keysym = 0x0bd -let _threequarters : keysym = 0x0be -let _questiondown : keysym = 0x0bf -let _Agrave : keysym = 0x0c0 -let _Aacute : keysym = 0x0c1 -let _Acircumflex : keysym = 0x0c2 -let _Atilde : keysym = 0x0c3 -let _Adiaeresis : keysym = 0x0c4 -let _Aring : keysym = 0x0c5 -let _AE : keysym = 0x0c6 -let _Ccedilla : keysym = 0x0c7 -let _Egrave : keysym = 0x0c8 -let _Eacute : keysym = 0x0c9 -let _Ecircumflex : keysym = 0x0ca -let _Ediaeresis : keysym = 0x0cb -let _Igrave : keysym = 0x0cc -let _Iacute : keysym = 0x0cd -let _Icircumflex : keysym = 0x0ce -let _Idiaeresis : keysym = 0x0cf -let _ETH : keysym = 0x0d0 -let _Eth : keysym = 0x0d0 -let _Ntilde : keysym = 0x0d1 -let _Ograve : keysym = 0x0d2 -let _Oacute : keysym = 0x0d3 -let _Ocircumflex : keysym = 0x0d4 -let _Otilde : keysym = 0x0d5 -let _Odiaeresis : keysym = 0x0d6 -let _multiply : keysym = 0x0d7 -let _Ooblique : keysym = 0x0d8 -let _Ugrave : keysym = 0x0d9 -let _Uacute : keysym = 0x0da -let _Ucircumflex : keysym = 0x0db -let _Udiaeresis : keysym = 0x0dc -let _Yacute : keysym = 0x0dd -let _THORN : keysym = 0x0de -let _Thorn : keysym = 0x0de -let _ssharp : keysym = 0x0df -let _agrave : keysym = 0x0e0 -let _aacute : keysym = 0x0e1 -let _acircumflex : keysym = 0x0e2 -let _atilde : keysym = 0x0e3 -let _adiaeresis : keysym = 0x0e4 -let _aring : keysym = 0x0e5 -let _ae : keysym = 0x0e6 -let _ccedilla : keysym = 0x0e7 -let _egrave : keysym = 0x0e8 -let _eacute : keysym = 0x0e9 -let _ecircumflex : keysym = 0x0ea -let _ediaeresis : keysym = 0x0eb -let _igrave : keysym = 0x0ec -let _iacute : keysym = 0x0ed -let _icircumflex : keysym = 0x0ee -let _idiaeresis : keysym = 0x0ef -let _eth : keysym = 0x0f0 -let _ntilde : keysym = 0x0f1 -let _ograve : keysym = 0x0f2 -let _oacute : keysym = 0x0f3 -let _ocircumflex : keysym = 0x0f4 -let _otilde : keysym = 0x0f5 -let _odiaeresis : keysym = 0x0f6 -let _division : keysym = 0x0f7 -let _oslash : keysym = 0x0f8 -let _ugrave : keysym = 0x0f9 -let _uacute : keysym = 0x0fa -let _ucircumflex : keysym = 0x0fb -let _udiaeresis : keysym = 0x0fc -let _yacute : keysym = 0x0fd -let _thorn : keysym = 0x0fe -let _ydiaeresis : keysym = 0x0ff -let _Aogonek : keysym = 0x1a1 -let _breve : keysym = 0x1a2 -let _Lstroke : keysym = 0x1a3 -let _Lcaron : keysym = 0x1a5 -let _Sacute : keysym = 0x1a6 -let _Scaron : keysym = 0x1a9 -let _Scedilla : keysym = 0x1aa -let _Tcaron : keysym = 0x1ab -let _Zacute : keysym = 0x1ac -let _Zcaron : keysym = 0x1ae -let _Zabovedot : keysym = 0x1af -let _aogonek : keysym = 0x1b1 -let _ogonek : keysym = 0x1b2 -let _lstroke : keysym = 0x1b3 -let _lcaron : keysym = 0x1b5 -let _sacute : keysym = 0x1b6 -let _caron : keysym = 0x1b7 -let _scaron : keysym = 0x1b9 -let _scedilla : keysym = 0x1ba -let _tcaron : keysym = 0x1bb -let _zacute : keysym = 0x1bc -let _doubleacute : keysym = 0x1bd -let _zcaron : keysym = 0x1be -let _zabovedot : keysym = 0x1bf -let _Racute : keysym = 0x1c0 -let _Abreve : keysym = 0x1c3 -let _Lacute : keysym = 0x1c5 -let _Cacute : keysym = 0x1c6 -let _Ccaron : keysym = 0x1c8 -let _Eogonek : keysym = 0x1ca -let _Ecaron : keysym = 0x1cc -let _Dcaron : keysym = 0x1cf -let _Dstroke : keysym = 0x1d0 -let _Nacute : keysym = 0x1d1 -let _Ncaron : keysym = 0x1d2 -let _Odoubleacute : keysym = 0x1d5 -let _Rcaron : keysym = 0x1d8 -let _Uring : keysym = 0x1d9 -let _Udoubleacute : keysym = 0x1db -let _Tcedilla : keysym = 0x1de -let _racute : keysym = 0x1e0 -let _abreve : keysym = 0x1e3 -let _lacute : keysym = 0x1e5 -let _cacute : keysym = 0x1e6 -let _ccaron : keysym = 0x1e8 -let _eogonek : keysym = 0x1ea -let _ecaron : keysym = 0x1ec -let _dcaron : keysym = 0x1ef -let _dstroke : keysym = 0x1f0 -let _nacute : keysym = 0x1f1 -let _ncaron : keysym = 0x1f2 -let _odoubleacute : keysym = 0x1f5 -let _udoubleacute : keysym = 0x1fb -let _rcaron : keysym = 0x1f8 -let _uring : keysym = 0x1f9 -let _tcedilla : keysym = 0x1fe -let _abovedot : keysym = 0x1ff -let _Hstroke : keysym = 0x2a1 -let _Hcircumflex : keysym = 0x2a6 -let _Iabovedot : keysym = 0x2a9 -let _Gbreve : keysym = 0x2ab -let _Jcircumflex : keysym = 0x2ac -let _hstroke : keysym = 0x2b1 -let _hcircumflex : keysym = 0x2b6 -let _idotless : keysym = 0x2b9 -let _gbreve : keysym = 0x2bb -let _jcircumflex : keysym = 0x2bc -let _Cabovedot : keysym = 0x2c5 -let _Ccircumflex : keysym = 0x2c6 -let _Gabovedot : keysym = 0x2d5 -let _Gcircumflex : keysym = 0x2d8 -let _Ubreve : keysym = 0x2dd -let _Scircumflex : keysym = 0x2de -let _cabovedot : keysym = 0x2e5 -let _ccircumflex : keysym = 0x2e6 -let _gabovedot : keysym = 0x2f5 -let _gcircumflex : keysym = 0x2f8 -let _ubreve : keysym = 0x2fd -let _scircumflex : keysym = 0x2fe -let _kra : keysym = 0x3a2 -let _kappa : keysym = 0x3a2 -let _Rcedilla : keysym = 0x3a3 -let _Itilde : keysym = 0x3a5 -let _Lcedilla : keysym = 0x3a6 -let _Emacron : keysym = 0x3aa -let _Gcedilla : keysym = 0x3ab -let _Tslash : keysym = 0x3ac -let _rcedilla : keysym = 0x3b3 -let _itilde : keysym = 0x3b5 -let _lcedilla : keysym = 0x3b6 -let _emacron : keysym = 0x3ba -let _gcedilla : keysym = 0x3bb -let _tslash : keysym = 0x3bc -let _ENG : keysym = 0x3bd -let _eng : keysym = 0x3bf -let _Amacron : keysym = 0x3c0 -let _Iogonek : keysym = 0x3c7 -let _Eabovedot : keysym = 0x3cc -let _Imacron : keysym = 0x3cf -let _Ncedilla : keysym = 0x3d1 -let _Omacron : keysym = 0x3d2 -let _Kcedilla : keysym = 0x3d3 -let _Uogonek : keysym = 0x3d9 -let _Utilde : keysym = 0x3dd -let _Umacron : keysym = 0x3de -let _amacron : keysym = 0x3e0 -let _iogonek : keysym = 0x3e7 -let _eabovedot : keysym = 0x3ec -let _imacron : keysym = 0x3ef -let _ncedilla : keysym = 0x3f1 -let _omacron : keysym = 0x3f2 -let _kcedilla : keysym = 0x3f3 -let _uogonek : keysym = 0x3f9 -let _utilde : keysym = 0x3fd -let _umacron : keysym = 0x3fe -let _overline : keysym = 0x47e -let _kana_fullstop : keysym = 0x4a1 -let _kana_openingbracket : keysym = 0x4a2 -let _kana_closingbracket : keysym = 0x4a3 -let _kana_comma : keysym = 0x4a4 -let _kana_conjunctive : keysym = 0x4a5 -let _kana_middledot : keysym = 0x4a5 -let _kana_WO : keysym = 0x4a6 -let _kana_a : keysym = 0x4a7 -let _kana_i : keysym = 0x4a8 -let _kana_u : keysym = 0x4a9 -let _kana_e : keysym = 0x4aa -let _kana_o : keysym = 0x4ab -let _kana_ya : keysym = 0x4ac -let _kana_yu : keysym = 0x4ad -let _kana_yo : keysym = 0x4ae -let _kana_tsu : keysym = 0x4af -let _kana_tu : keysym = 0x4af -let _prolongedsound : keysym = 0x4b0 -let _kana_A : keysym = 0x4b1 -let _kana_I : keysym = 0x4b2 -let _kana_U : keysym = 0x4b3 -let _kana_E : keysym = 0x4b4 -let _kana_O : keysym = 0x4b5 -let _kana_KA : keysym = 0x4b6 -let _kana_KI : keysym = 0x4b7 -let _kana_KU : keysym = 0x4b8 -let _kana_KE : keysym = 0x4b9 -let _kana_KO : keysym = 0x4ba -let _kana_SA : keysym = 0x4bb -let _kana_SHI : keysym = 0x4bc -let _kana_SU : keysym = 0x4bd -let _kana_SE : keysym = 0x4be -let _kana_SO : keysym = 0x4bf -let _kana_TA : keysym = 0x4c0 -let _kana_CHI : keysym = 0x4c1 -let _kana_TI : keysym = 0x4c1 -let _kana_TSU : keysym = 0x4c2 -let _kana_TU : keysym = 0x4c2 -let _kana_TE : keysym = 0x4c3 -let _kana_TO : keysym = 0x4c4 -let _kana_NA : keysym = 0x4c5 -let _kana_NI : keysym = 0x4c6 -let _kana_NU : keysym = 0x4c7 -let _kana_NE : keysym = 0x4c8 -let _kana_NO : keysym = 0x4c9 -let _kana_HA : keysym = 0x4ca -let _kana_HI : keysym = 0x4cb -let _kana_FU : keysym = 0x4cc -let _kana_HU : keysym = 0x4cc -let _kana_HE : keysym = 0x4cd -let _kana_HO : keysym = 0x4ce -let _kana_MA : keysym = 0x4cf -let _kana_MI : keysym = 0x4d0 -let _kana_MU : keysym = 0x4d1 -let _kana_ME : keysym = 0x4d2 -let _kana_MO : keysym = 0x4d3 -let _kana_YA : keysym = 0x4d4 -let _kana_YU : keysym = 0x4d5 -let _kana_YO : keysym = 0x4d6 -let _kana_RA : keysym = 0x4d7 -let _kana_RI : keysym = 0x4d8 -let _kana_RU : keysym = 0x4d9 -let _kana_RE : keysym = 0x4da -let _kana_RO : keysym = 0x4db -let _kana_WA : keysym = 0x4dc -let _kana_N : keysym = 0x4dd -let _voicedsound : keysym = 0x4de -let _semivoicedsound : keysym = 0x4df -let _kana_switch : keysym = 0xFF7E -let _Arabic_comma : keysym = 0x5ac -let _Arabic_semicolon : keysym = 0x5bb -let _Arabic_question_mark : keysym = 0x5bf -let _Arabic_hamza : keysym = 0x5c1 -let _Arabic_maddaonalef : keysym = 0x5c2 -let _Arabic_hamzaonalef : keysym = 0x5c3 -let _Arabic_hamzaonwaw : keysym = 0x5c4 -let _Arabic_hamzaunderalef : keysym = 0x5c5 -let _Arabic_hamzaonyeh : keysym = 0x5c6 -let _Arabic_alef : keysym = 0x5c7 -let _Arabic_beh : keysym = 0x5c8 -let _Arabic_tehmarbuta : keysym = 0x5c9 -let _Arabic_teh : keysym = 0x5ca -let _Arabic_theh : keysym = 0x5cb -let _Arabic_jeem : keysym = 0x5cc -let _Arabic_hah : keysym = 0x5cd -let _Arabic_khah : keysym = 0x5ce -let _Arabic_dal : keysym = 0x5cf -let _Arabic_thal : keysym = 0x5d0 -let _Arabic_ra : keysym = 0x5d1 -let _Arabic_zain : keysym = 0x5d2 -let _Arabic_seen : keysym = 0x5d3 -let _Arabic_sheen : keysym = 0x5d4 -let _Arabic_sad : keysym = 0x5d5 -let _Arabic_dad : keysym = 0x5d6 -let _Arabic_tah : keysym = 0x5d7 -let _Arabic_zah : keysym = 0x5d8 -let _Arabic_ain : keysym = 0x5d9 -let _Arabic_ghain : keysym = 0x5da -let _Arabic_tatweel : keysym = 0x5e0 -let _Arabic_feh : keysym = 0x5e1 -let _Arabic_qaf : keysym = 0x5e2 -let _Arabic_kaf : keysym = 0x5e3 -let _Arabic_lam : keysym = 0x5e4 -let _Arabic_meem : keysym = 0x5e5 -let _Arabic_noon : keysym = 0x5e6 -let _Arabic_ha : keysym = 0x5e7 -let _Arabic_heh : keysym = 0x5e7 -let _Arabic_waw : keysym = 0x5e8 -let _Arabic_alefmaksura : keysym = 0x5e9 -let _Arabic_yeh : keysym = 0x5ea -let _Arabic_fathatan : keysym = 0x5eb -let _Arabic_dammatan : keysym = 0x5ec -let _Arabic_kasratan : keysym = 0x5ed -let _Arabic_fatha : keysym = 0x5ee -let _Arabic_damma : keysym = 0x5ef -let _Arabic_kasra : keysym = 0x5f0 -let _Arabic_shadda : keysym = 0x5f1 -let _Arabic_sukun : keysym = 0x5f2 -let _Arabic_switch : keysym = 0xFF7E -let _Serbian_dje : keysym = 0x6a1 -let _Macedonia_gje : keysym = 0x6a2 -let _Cyrillic_io : keysym = 0x6a3 -let _Ukrainian_ie : keysym = 0x6a4 -let _Ukranian_je : keysym = 0x6a4 -let _Macedonia_dse : keysym = 0x6a5 -let _Ukrainian_i : keysym = 0x6a6 -let _Ukranian_i : keysym = 0x6a6 -let _Ukrainian_yi : keysym = 0x6a7 -let _Ukranian_yi : keysym = 0x6a7 -let _Cyrillic_je : keysym = 0x6a8 -let _Serbian_je : keysym = 0x6a8 -let _Cyrillic_lje : keysym = 0x6a9 -let _Serbian_lje : keysym = 0x6a9 -let _Cyrillic_nje : keysym = 0x6aa -let _Serbian_nje : keysym = 0x6aa -let _Serbian_tshe : keysym = 0x6ab -let _Macedonia_kje : keysym = 0x6ac -let _Byelorussian_shortu : keysym = 0x6ae -let _Cyrillic_dzhe : keysym = 0x6af -let _Serbian_dze : keysym = 0x6af -let _numerosign : keysym = 0x6b0 -let _Serbian_DJE : keysym = 0x6b1 -let _Macedonia_GJE : keysym = 0x6b2 -let _Cyrillic_IO : keysym = 0x6b3 -let _Ukrainian_IE : keysym = 0x6b4 -let _Ukranian_JE : keysym = 0x6b4 -let _Macedonia_DSE : keysym = 0x6b5 -let _Ukrainian_I : keysym = 0x6b6 -let _Ukranian_I : keysym = 0x6b6 -let _Ukrainian_YI : keysym = 0x6b7 -let _Ukranian_YI : keysym = 0x6b7 -let _Cyrillic_JE : keysym = 0x6b8 -let _Serbian_JE : keysym = 0x6b8 -let _Cyrillic_LJE : keysym = 0x6b9 -let _Serbian_LJE : keysym = 0x6b9 -let _Cyrillic_NJE : keysym = 0x6ba -let _Serbian_NJE : keysym = 0x6ba -let _Serbian_TSHE : keysym = 0x6bb -let _Macedonia_KJE : keysym = 0x6bc -let _Byelorussian_SHORTU : keysym = 0x6be -let _Cyrillic_DZHE : keysym = 0x6bf -let _Serbian_DZE : keysym = 0x6bf -let _Cyrillic_yu : keysym = 0x6c0 -let _Cyrillic_a : keysym = 0x6c1 -let _Cyrillic_be : keysym = 0x6c2 -let _Cyrillic_tse : keysym = 0x6c3 -let _Cyrillic_de : keysym = 0x6c4 -let _Cyrillic_ie : keysym = 0x6c5 -let _Cyrillic_ef : keysym = 0x6c6 -let _Cyrillic_ghe : keysym = 0x6c7 -let _Cyrillic_ha : keysym = 0x6c8 -let _Cyrillic_i : keysym = 0x6c9 -let _Cyrillic_shorti : keysym = 0x6ca -let _Cyrillic_ka : keysym = 0x6cb -let _Cyrillic_el : keysym = 0x6cc -let _Cyrillic_em : keysym = 0x6cd -let _Cyrillic_en : keysym = 0x6ce -let _Cyrillic_o : keysym = 0x6cf -let _Cyrillic_pe : keysym = 0x6d0 -let _Cyrillic_ya : keysym = 0x6d1 -let _Cyrillic_er : keysym = 0x6d2 -let _Cyrillic_es : keysym = 0x6d3 -let _Cyrillic_te : keysym = 0x6d4 -let _Cyrillic_u : keysym = 0x6d5 -let _Cyrillic_zhe : keysym = 0x6d6 -let _Cyrillic_ve : keysym = 0x6d7 -let _Cyrillic_softsign : keysym = 0x6d8 -let _Cyrillic_yeru : keysym = 0x6d9 -let _Cyrillic_ze : keysym = 0x6da -let _Cyrillic_sha : keysym = 0x6db -let _Cyrillic_e : keysym = 0x6dc -let _Cyrillic_shcha : keysym = 0x6dd -let _Cyrillic_che : keysym = 0x6de -let _Cyrillic_hardsign : keysym = 0x6df -let _Cyrillic_YU : keysym = 0x6e0 -let _Cyrillic_A : keysym = 0x6e1 -let _Cyrillic_BE : keysym = 0x6e2 -let _Cyrillic_TSE : keysym = 0x6e3 -let _Cyrillic_DE : keysym = 0x6e4 -let _Cyrillic_IE : keysym = 0x6e5 -let _Cyrillic_EF : keysym = 0x6e6 -let _Cyrillic_GHE : keysym = 0x6e7 -let _Cyrillic_HA : keysym = 0x6e8 -let _Cyrillic_I : keysym = 0x6e9 -let _Cyrillic_SHORTI : keysym = 0x6ea -let _Cyrillic_KA : keysym = 0x6eb -let _Cyrillic_EL : keysym = 0x6ec -let _Cyrillic_EM : keysym = 0x6ed -let _Cyrillic_EN : keysym = 0x6ee -let _Cyrillic_O : keysym = 0x6ef -let _Cyrillic_PE : keysym = 0x6f0 -let _Cyrillic_YA : keysym = 0x6f1 -let _Cyrillic_ER : keysym = 0x6f2 -let _Cyrillic_ES : keysym = 0x6f3 -let _Cyrillic_TE : keysym = 0x6f4 -let _Cyrillic_U : keysym = 0x6f5 -let _Cyrillic_ZHE : keysym = 0x6f6 -let _Cyrillic_VE : keysym = 0x6f7 -let _Cyrillic_SOFTSIGN : keysym = 0x6f8 -let _Cyrillic_YERU : keysym = 0x6f9 -let _Cyrillic_ZE : keysym = 0x6fa -let _Cyrillic_SHA : keysym = 0x6fb -let _Cyrillic_E : keysym = 0x6fc -let _Cyrillic_SHCHA : keysym = 0x6fd -let _Cyrillic_CHE : keysym = 0x6fe -let _Cyrillic_HARDSIGN : keysym = 0x6ff -let _Greek_ALPHAaccent : keysym = 0x7a1 -let _Greek_EPSILONaccent : keysym = 0x7a2 -let _Greek_ETAaccent : keysym = 0x7a3 -let _Greek_IOTAaccent : keysym = 0x7a4 -let _Greek_IOTAdiaeresis : keysym = 0x7a5 -let _Greek_OMICRONaccent : keysym = 0x7a7 -let _Greek_UPSILONaccent : keysym = 0x7a8 -let _Greek_UPSILONdieresis : keysym = 0x7a9 -let _Greek_OMEGAaccent : keysym = 0x7ab -let _Greek_accentdieresis : keysym = 0x7ae -let _Greek_horizbar : keysym = 0x7af -let _Greek_alphaaccent : keysym = 0x7b1 -let _Greek_epsilonaccent : keysym = 0x7b2 -let _Greek_etaaccent : keysym = 0x7b3 -let _Greek_iotaaccent : keysym = 0x7b4 -let _Greek_iotadieresis : keysym = 0x7b5 -let _Greek_iotaaccentdieresis : keysym = 0x7b6 -let _Greek_omicronaccent : keysym = 0x7b7 -let _Greek_upsilonaccent : keysym = 0x7b8 -let _Greek_upsilondieresis : keysym = 0x7b9 -let _Greek_upsilonaccentdieresis : keysym = 0x7ba -let _Greek_omegaaccent : keysym = 0x7bb -let _Greek_ALPHA : keysym = 0x7c1 -let _Greek_BETA : keysym = 0x7c2 -let _Greek_GAMMA : keysym = 0x7c3 -let _Greek_DELTA : keysym = 0x7c4 -let _Greek_EPSILON : keysym = 0x7c5 -let _Greek_ZETA : keysym = 0x7c6 -let _Greek_ETA : keysym = 0x7c7 -let _Greek_THETA : keysym = 0x7c8 -let _Greek_IOTA : keysym = 0x7c9 -let _Greek_KAPPA : keysym = 0x7ca -let _Greek_LAMDA : keysym = 0x7cb -let _Greek_LAMBDA : keysym = 0x7cb -let _Greek_MU : keysym = 0x7cc -let _Greek_NU : keysym = 0x7cd -let _Greek_XI : keysym = 0x7ce -let _Greek_OMICRON : keysym = 0x7cf -let _Greek_PI : keysym = 0x7d0 -let _Greek_RHO : keysym = 0x7d1 -let _Greek_SIGMA : keysym = 0x7d2 -let _Greek_TAU : keysym = 0x7d4 -let _Greek_UPSILON : keysym = 0x7d5 -let _Greek_PHI : keysym = 0x7d6 -let _Greek_CHI : keysym = 0x7d7 -let _Greek_PSI : keysym = 0x7d8 -let _Greek_OMEGA : keysym = 0x7d9 -let _Greek_alpha : keysym = 0x7e1 -let _Greek_beta : keysym = 0x7e2 -let _Greek_gamma : keysym = 0x7e3 -let _Greek_delta : keysym = 0x7e4 -let _Greek_epsilon : keysym = 0x7e5 -let _Greek_zeta : keysym = 0x7e6 -let _Greek_eta : keysym = 0x7e7 -let _Greek_theta : keysym = 0x7e8 -let _Greek_iota : keysym = 0x7e9 -let _Greek_kappa : keysym = 0x7ea -let _Greek_lamda : keysym = 0x7eb -let _Greek_lambda : keysym = 0x7eb -let _Greek_mu : keysym = 0x7ec -let _Greek_nu : keysym = 0x7ed -let _Greek_xi : keysym = 0x7ee -let _Greek_omicron : keysym = 0x7ef -let _Greek_pi : keysym = 0x7f0 -let _Greek_rho : keysym = 0x7f1 -let _Greek_sigma : keysym = 0x7f2 -let _Greek_finalsmallsigma : keysym = 0x7f3 -let _Greek_tau : keysym = 0x7f4 -let _Greek_upsilon : keysym = 0x7f5 -let _Greek_phi : keysym = 0x7f6 -let _Greek_chi : keysym = 0x7f7 -let _Greek_psi : keysym = 0x7f8 -let _Greek_omega : keysym = 0x7f9 -let _Greek_switch : keysym = 0xFF7E -let _leftradical : keysym = 0x8a1 -let _topleftradical : keysym = 0x8a2 -let _horizconnector : keysym = 0x8a3 -let _topintegral : keysym = 0x8a4 -let _botintegral : keysym = 0x8a5 -let _vertconnector : keysym = 0x8a6 -let _topleftsqbracket : keysym = 0x8a7 -let _botleftsqbracket : keysym = 0x8a8 -let _toprightsqbracket : keysym = 0x8a9 -let _botrightsqbracket : keysym = 0x8aa -let _topleftparens : keysym = 0x8ab -let _botleftparens : keysym = 0x8ac -let _toprightparens : keysym = 0x8ad -let _botrightparens : keysym = 0x8ae -let _leftmiddlecurlybrace : keysym = 0x8af -let _rightmiddlecurlybrace : keysym = 0x8b0 -let _topleftsummation : keysym = 0x8b1 -let _botleftsummation : keysym = 0x8b2 -let _topvertsummationconnector : keysym = 0x8b3 -let _botvertsummationconnector : keysym = 0x8b4 -let _toprightsummation : keysym = 0x8b5 -let _botrightsummation : keysym = 0x8b6 -let _rightmiddlesummation : keysym = 0x8b7 -let _lessthanequal : keysym = 0x8bc -let _notequal : keysym = 0x8bd -let _greaterthanequal : keysym = 0x8be -let _integral : keysym = 0x8bf -let _therefore : keysym = 0x8c0 -let _variation : keysym = 0x8c1 -let _infinity : keysym = 0x8c2 -let _nabla : keysym = 0x8c5 -let _approximate : keysym = 0x8c8 -let _similarequal : keysym = 0x8c9 -let _ifonlyif : keysym = 0x8cd -let _implies : keysym = 0x8ce -let _identical : keysym = 0x8cf -let _radical : keysym = 0x8d6 -let _includedin : keysym = 0x8da -let _includes : keysym = 0x8db -let _intersection : keysym = 0x8dc -let _union : keysym = 0x8dd -let _logicaland : keysym = 0x8de -let _logicalor : keysym = 0x8df -let _partialderivative : keysym = 0x8ef -let _function : keysym = 0x8f6 -let _leftarrow : keysym = 0x8fb -let _uparrow : keysym = 0x8fc -let _rightarrow : keysym = 0x8fd -let _downarrow : keysym = 0x8fe -let _blank : keysym = 0x9df -let _soliddiamond : keysym = 0x9e0 -let _checkerboard : keysym = 0x9e1 -let _ht : keysym = 0x9e2 -let _ff : keysym = 0x9e3 -let _cr : keysym = 0x9e4 -let _lf : keysym = 0x9e5 -let _nl : keysym = 0x9e8 -let _vt : keysym = 0x9e9 -let _lowrightcorner : keysym = 0x9ea -let _uprightcorner : keysym = 0x9eb -let _upleftcorner : keysym = 0x9ec -let _lowleftcorner : keysym = 0x9ed -let _crossinglines : keysym = 0x9ee -let _horizlinescan1 : keysym = 0x9ef -let _horizlinescan3 : keysym = 0x9f0 -let _horizlinescan5 : keysym = 0x9f1 -let _horizlinescan7 : keysym = 0x9f2 -let _horizlinescan9 : keysym = 0x9f3 -let _leftt : keysym = 0x9f4 -let _rightt : keysym = 0x9f5 -let _bott : keysym = 0x9f6 -let _topt : keysym = 0x9f7 -let _vertbar : keysym = 0x9f8 -let _emspace : keysym = 0xaa1 -let _enspace : keysym = 0xaa2 -let _em3space : keysym = 0xaa3 -let _em4space : keysym = 0xaa4 -let _digitspace : keysym = 0xaa5 -let _punctspace : keysym = 0xaa6 -let _thinspace : keysym = 0xaa7 -let _hairspace : keysym = 0xaa8 -let _emdash : keysym = 0xaa9 -let _endash : keysym = 0xaaa -let _signifblank : keysym = 0xaac -let _ellipsis : keysym = 0xaae -let _doubbaselinedot : keysym = 0xaaf -let _onethird : keysym = 0xab0 -let _twothirds : keysym = 0xab1 -let _onefifth : keysym = 0xab2 -let _twofifths : keysym = 0xab3 -let _threefifths : keysym = 0xab4 -let _fourfifths : keysym = 0xab5 -let _onesixth : keysym = 0xab6 -let _fivesixths : keysym = 0xab7 -let _careof : keysym = 0xab8 -let _figdash : keysym = 0xabb -let _leftanglebracket : keysym = 0xabc -let _decimalpoint : keysym = 0xabd -let _rightanglebracket : keysym = 0xabe -let _marker : keysym = 0xabf -let _oneeighth : keysym = 0xac3 -let _threeeighths : keysym = 0xac4 -let _fiveeighths : keysym = 0xac5 -let _seveneighths : keysym = 0xac6 -let _trademark : keysym = 0xac9 -let _signaturemark : keysym = 0xaca -let _trademarkincircle : keysym = 0xacb -let _leftopentriangle : keysym = 0xacc -let _rightopentriangle : keysym = 0xacd -let _emopencircle : keysym = 0xace -let _emopenrectangle : keysym = 0xacf -let _leftsinglequotemark : keysym = 0xad0 -let _rightsinglequotemark : keysym = 0xad1 -let _leftdoublequotemark : keysym = 0xad2 -let _rightdoublequotemark : keysym = 0xad3 -let _prescription : keysym = 0xad4 -let _minutes : keysym = 0xad6 -let _seconds : keysym = 0xad7 -let _latincross : keysym = 0xad9 -let _hexagram : keysym = 0xada -let _filledrectbullet : keysym = 0xadb -let _filledlefttribullet : keysym = 0xadc -let _filledrighttribullet : keysym = 0xadd -let _emfilledcircle : keysym = 0xade -let _emfilledrect : keysym = 0xadf -let _enopencircbullet : keysym = 0xae0 -let _enopensquarebullet : keysym = 0xae1 -let _openrectbullet : keysym = 0xae2 -let _opentribulletup : keysym = 0xae3 -let _opentribulletdown : keysym = 0xae4 -let _openstar : keysym = 0xae5 -let _enfilledcircbullet : keysym = 0xae6 -let _enfilledsqbullet : keysym = 0xae7 -let _filledtribulletup : keysym = 0xae8 -let _filledtribulletdown : keysym = 0xae9 -let _leftpointer : keysym = 0xaea -let _rightpointer : keysym = 0xaeb -let _club : keysym = 0xaec -let _diamond : keysym = 0xaed -let _heart : keysym = 0xaee -let _maltesecross : keysym = 0xaf0 -let _dagger : keysym = 0xaf1 -let _doubledagger : keysym = 0xaf2 -let _checkmark : keysym = 0xaf3 -let _ballotcross : keysym = 0xaf4 -let _musicalsharp : keysym = 0xaf5 -let _musicalflat : keysym = 0xaf6 -let _malesymbol : keysym = 0xaf7 -let _femalesymbol : keysym = 0xaf8 -let _telephone : keysym = 0xaf9 -let _telephonerecorder : keysym = 0xafa -let _phonographcopyright : keysym = 0xafb -let _caret : keysym = 0xafc -let _singlelowquotemark : keysym = 0xafd -let _doublelowquotemark : keysym = 0xafe -let _cursor : keysym = 0xaff -let _leftcaret : keysym = 0xba3 -let _rightcaret : keysym = 0xba6 -let _downcaret : keysym = 0xba8 -let _upcaret : keysym = 0xba9 -let _overbar : keysym = 0xbc0 -let _downtack : keysym = 0xbc2 -let _upshoe : keysym = 0xbc3 -let _downstile : keysym = 0xbc4 -let _underbar : keysym = 0xbc6 -let _jot : keysym = 0xbca -let _quad : keysym = 0xbcc -let _uptack : keysym = 0xbce -let _circle : keysym = 0xbcf -let _upstile : keysym = 0xbd3 -let _downshoe : keysym = 0xbd6 -let _rightshoe : keysym = 0xbd8 -let _leftshoe : keysym = 0xbda -let _lefttack : keysym = 0xbdc -let _righttack : keysym = 0xbfc -let _hebrew_doublelowline : keysym = 0xcdf -let _hebrew_aleph : keysym = 0xce0 -let _hebrew_bet : keysym = 0xce1 -let _hebrew_beth : keysym = 0xce1 -let _hebrew_gimel : keysym = 0xce2 -let _hebrew_gimmel : keysym = 0xce2 -let _hebrew_dalet : keysym = 0xce3 -let _hebrew_daleth : keysym = 0xce3 -let _hebrew_he : keysym = 0xce4 -let _hebrew_waw : keysym = 0xce5 -let _hebrew_zain : keysym = 0xce6 -let _hebrew_zayin : keysym = 0xce6 -let _hebrew_chet : keysym = 0xce7 -let _hebrew_het : keysym = 0xce7 -let _hebrew_tet : keysym = 0xce8 -let _hebrew_teth : keysym = 0xce8 -let _hebrew_yod : keysym = 0xce9 -let _hebrew_finalkaph : keysym = 0xcea -let _hebrew_kaph : keysym = 0xceb -let _hebrew_lamed : keysym = 0xcec -let _hebrew_finalmem : keysym = 0xced -let _hebrew_mem : keysym = 0xcee -let _hebrew_finalnun : keysym = 0xcef -let _hebrew_nun : keysym = 0xcf0 -let _hebrew_samech : keysym = 0xcf1 -let _hebrew_samekh : keysym = 0xcf1 -let _hebrew_ayin : keysym = 0xcf2 -let _hebrew_finalpe : keysym = 0xcf3 -let _hebrew_pe : keysym = 0xcf4 -let _hebrew_finalzade : keysym = 0xcf5 -let _hebrew_finalzadi : keysym = 0xcf5 -let _hebrew_zade : keysym = 0xcf6 -let _hebrew_zadi : keysym = 0xcf6 -let _hebrew_qoph : keysym = 0xcf7 -let _hebrew_kuf : keysym = 0xcf7 -let _hebrew_resh : keysym = 0xcf8 -let _hebrew_shin : keysym = 0xcf9 -let _hebrew_taw : keysym = 0xcfa -let _hebrew_taf : keysym = 0xcfa -let _Hebrew_switch : keysym = 0xFF7E -let _Thai_kokai : keysym = 0xda1 -let _Thai_khokhai : keysym = 0xda2 -let _Thai_khokhuat : keysym = 0xda3 -let _Thai_khokhwai : keysym = 0xda4 -let _Thai_khokhon : keysym = 0xda5 -let _Thai_khorakhang : keysym = 0xda6 -let _Thai_ngongu : keysym = 0xda7 -let _Thai_chochan : keysym = 0xda8 -let _Thai_choching : keysym = 0xda9 -let _Thai_chochang : keysym = 0xdaa -let _Thai_soso : keysym = 0xdab -let _Thai_chochoe : keysym = 0xdac -let _Thai_yoying : keysym = 0xdad -let _Thai_dochada : keysym = 0xdae -let _Thai_topatak : keysym = 0xdaf -let _Thai_thothan : keysym = 0xdb0 -let _Thai_thonangmontho : keysym = 0xdb1 -let _Thai_thophuthao : keysym = 0xdb2 -let _Thai_nonen : keysym = 0xdb3 -let _Thai_dodek : keysym = 0xdb4 -let _Thai_totao : keysym = 0xdb5 -let _Thai_thothung : keysym = 0xdb6 -let _Thai_thothahan : keysym = 0xdb7 -let _Thai_thothong : keysym = 0xdb8 -let _Thai_nonu : keysym = 0xdb9 -let _Thai_bobaimai : keysym = 0xdba -let _Thai_popla : keysym = 0xdbb -let _Thai_phophung : keysym = 0xdbc -let _Thai_fofa : keysym = 0xdbd -let _Thai_phophan : keysym = 0xdbe -let _Thai_fofan : keysym = 0xdbf -let _Thai_phosamphao : keysym = 0xdc0 -let _Thai_moma : keysym = 0xdc1 -let _Thai_yoyak : keysym = 0xdc2 -let _Thai_rorua : keysym = 0xdc3 -let _Thai_ru : keysym = 0xdc4 -let _Thai_loling : keysym = 0xdc5 -let _Thai_lu : keysym = 0xdc6 -let _Thai_wowaen : keysym = 0xdc7 -let _Thai_sosala : keysym = 0xdc8 -let _Thai_sorusi : keysym = 0xdc9 -let _Thai_sosua : keysym = 0xdca -let _Thai_hohip : keysym = 0xdcb -let _Thai_lochula : keysym = 0xdcc -let _Thai_oang : keysym = 0xdcd -let _Thai_honokhuk : keysym = 0xdce -let _Thai_paiyannoi : keysym = 0xdcf -let _Thai_saraa : keysym = 0xdd0 -let _Thai_maihanakat : keysym = 0xdd1 -let _Thai_saraaa : keysym = 0xdd2 -let _Thai_saraam : keysym = 0xdd3 -let _Thai_sarai : keysym = 0xdd4 -let _Thai_saraii : keysym = 0xdd5 -let _Thai_saraue : keysym = 0xdd6 -let _Thai_sarauee : keysym = 0xdd7 -let _Thai_sarau : keysym = 0xdd8 -let _Thai_sarauu : keysym = 0xdd9 -let _Thai_phinthu : keysym = 0xdda -let _Thai_maihanakat_maitho : keysym = 0xdde -let _Thai_baht : keysym = 0xddf -let _Thai_sarae : keysym = 0xde0 -let _Thai_saraae : keysym = 0xde1 -let _Thai_sarao : keysym = 0xde2 -let _Thai_saraaimaimuan : keysym = 0xde3 -let _Thai_saraaimaimalai : keysym = 0xde4 -let _Thai_lakkhangyao : keysym = 0xde5 -let _Thai_maiyamok : keysym = 0xde6 -let _Thai_maitaikhu : keysym = 0xde7 -let _Thai_maiek : keysym = 0xde8 -let _Thai_maitho : keysym = 0xde9 -let _Thai_maitri : keysym = 0xdea -let _Thai_maichattawa : keysym = 0xdeb -let _Thai_thanthakhat : keysym = 0xdec -let _Thai_nikhahit : keysym = 0xded -let _Thai_leksun : keysym = 0xdf0 -let _Thai_leknung : keysym = 0xdf1 -let _Thai_leksong : keysym = 0xdf2 -let _Thai_leksam : keysym = 0xdf3 -let _Thai_leksi : keysym = 0xdf4 -let _Thai_lekha : keysym = 0xdf5 -let _Thai_lekhok : keysym = 0xdf6 -let _Thai_lekchet : keysym = 0xdf7 -let _Thai_lekpaet : keysym = 0xdf8 -let _Thai_lekkao : keysym = 0xdf9 -let _Hangul : keysym = 0xff31 -let _Hangul_Start : keysym = 0xff32 -let _Hangul_End : keysym = 0xff33 -let _Hangul_Hanja : keysym = 0xff34 -let _Hangul_Jamo : keysym = 0xff35 -let _Hangul_Romaja : keysym = 0xff36 -let _Hangul_Codeinput : keysym = 0xff37 -let _Hangul_Jeonja : keysym = 0xff38 -let _Hangul_Banja : keysym = 0xff39 -let _Hangul_PreHanja : keysym = 0xff3a -let _Hangul_PostHanja : keysym = 0xff3b -let _Hangul_SingleCandidate : keysym = 0xff3c -let _Hangul_MultipleCandidate : keysym = 0xff3d -let _Hangul_PreviousCandidate : keysym = 0xff3e -let _Hangul_Special : keysym = 0xff3f -let _Hangul_switch : keysym = 0xFF7E -let _Hangul_Kiyeog : keysym = 0xea1 -let _Hangul_SsangKiyeog : keysym = 0xea2 -let _Hangul_KiyeogSios : keysym = 0xea3 -let _Hangul_Nieun : keysym = 0xea4 -let _Hangul_NieunJieuj : keysym = 0xea5 -let _Hangul_NieunHieuh : keysym = 0xea6 -let _Hangul_Dikeud : keysym = 0xea7 -let _Hangul_SsangDikeud : keysym = 0xea8 -let _Hangul_Rieul : keysym = 0xea9 -let _Hangul_RieulKiyeog : keysym = 0xeaa -let _Hangul_RieulMieum : keysym = 0xeab -let _Hangul_RieulPieub : keysym = 0xeac -let _Hangul_RieulSios : keysym = 0xead -let _Hangul_RieulTieut : keysym = 0xeae -let _Hangul_RieulPhieuf : keysym = 0xeaf -let _Hangul_RieulHieuh : keysym = 0xeb0 -let _Hangul_Mieum : keysym = 0xeb1 -let _Hangul_Pieub : keysym = 0xeb2 -let _Hangul_SsangPieub : keysym = 0xeb3 -let _Hangul_PieubSios : keysym = 0xeb4 -let _Hangul_Sios : keysym = 0xeb5 -let _Hangul_SsangSios : keysym = 0xeb6 -let _Hangul_Ieung : keysym = 0xeb7 -let _Hangul_Jieuj : keysym = 0xeb8 -let _Hangul_SsangJieuj : keysym = 0xeb9 -let _Hangul_Cieuc : keysym = 0xeba -let _Hangul_Khieuq : keysym = 0xebb -let _Hangul_Tieut : keysym = 0xebc -let _Hangul_Phieuf : keysym = 0xebd -let _Hangul_Hieuh : keysym = 0xebe -let _Hangul_A : keysym = 0xebf -let _Hangul_AE : keysym = 0xec0 -let _Hangul_YA : keysym = 0xec1 -let _Hangul_YAE : keysym = 0xec2 -let _Hangul_EO : keysym = 0xec3 -let _Hangul_E : keysym = 0xec4 -let _Hangul_YEO : keysym = 0xec5 -let _Hangul_YE : keysym = 0xec6 -let _Hangul_O : keysym = 0xec7 -let _Hangul_WA : keysym = 0xec8 -let _Hangul_WAE : keysym = 0xec9 -let _Hangul_OE : keysym = 0xeca -let _Hangul_YO : keysym = 0xecb -let _Hangul_U : keysym = 0xecc -let _Hangul_WEO : keysym = 0xecd -let _Hangul_WE : keysym = 0xece -let _Hangul_WI : keysym = 0xecf -let _Hangul_YU : keysym = 0xed0 -let _Hangul_EU : keysym = 0xed1 -let _Hangul_YI : keysym = 0xed2 -let _Hangul_I : keysym = 0xed3 -let _Hangul_J_Kiyeog : keysym = 0xed4 -let _Hangul_J_SsangKiyeog : keysym = 0xed5 -let _Hangul_J_KiyeogSios : keysym = 0xed6 -let _Hangul_J_Nieun : keysym = 0xed7 -let _Hangul_J_NieunJieuj : keysym = 0xed8 -let _Hangul_J_NieunHieuh : keysym = 0xed9 -let _Hangul_J_Dikeud : keysym = 0xeda -let _Hangul_J_Rieul : keysym = 0xedb -let _Hangul_J_RieulKiyeog : keysym = 0xedc -let _Hangul_J_RieulMieum : keysym = 0xedd -let _Hangul_J_RieulPieub : keysym = 0xede -let _Hangul_J_RieulSios : keysym = 0xedf -let _Hangul_J_RieulTieut : keysym = 0xee0 -let _Hangul_J_RieulPhieuf : keysym = 0xee1 -let _Hangul_J_RieulHieuh : keysym = 0xee2 -let _Hangul_J_Mieum : keysym = 0xee3 -let _Hangul_J_Pieub : keysym = 0xee4 -let _Hangul_J_PieubSios : keysym = 0xee5 -let _Hangul_J_Sios : keysym = 0xee6 -let _Hangul_J_SsangSios : keysym = 0xee7 -let _Hangul_J_Ieung : keysym = 0xee8 -let _Hangul_J_Jieuj : keysym = 0xee9 -let _Hangul_J_Cieuc : keysym = 0xeea -let _Hangul_J_Khieuq : keysym = 0xeeb -let _Hangul_J_Tieut : keysym = 0xeec -let _Hangul_J_Phieuf : keysym = 0xeed -let _Hangul_J_Hieuh : keysym = 0xeee -let _Hangul_RieulYeorinHieuh : keysym = 0xeef -let _Hangul_SunkyeongeumMieum : keysym = 0xef0 -let _Hangul_SunkyeongeumPieub : keysym = 0xef1 -let _Hangul_PanSios : keysym = 0xef2 -let _Hangul_KkogjiDalrinIeung : keysym = 0xef3 -let _Hangul_SunkyeongeumPhieuf : keysym = 0xef4 -let _Hangul_YeorinHieuh : keysym = 0xef5 -let _Hangul_AraeA : keysym = 0xef6 -let _Hangul_AraeAE : keysym = 0xef7 -let _Hangul_J_PanSios : keysym = 0xef8 -let _Hangul_J_KkogjiDalrinIeung : keysym = 0xef9 -let _Hangul_J_YeorinHieuh : keysym = 0xefa -let _Korean_Won : keysym = 0xeff diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gdk_tags.var b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gdk_tags.var deleted file mode 100644 index 2c244a79c..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gdk_tags.var +++ /dev/null @@ -1,163 +0,0 @@ -(* $Id$ *) - -type gdkEventType = "GDK_" - [ `NOTHING | `DELETE | `DESTROY | `EXPOSE | `MOTION_NOTIFY | `BUTTON_PRESS - | `TWO_BUTTON_PRESS "GDK_2BUTTON_PRESS" - | `THREE_BUTTON_PRESS "GDK_3BUTTON_PRESS" - | `BUTTON_RELEASE | `KEY_PRESS - | `KEY_RELEASE | `ENTER_NOTIFY | `LEAVE_NOTIFY | `FOCUS_CHANGE - | `CONFIGURE | `MAP | `UNMAP | `PROPERTY_NOTIFY | `SELECTION_CLEAR - | `SELECTION_REQUEST | `SELECTION_NOTIFY | `PROXIMITY_IN - | `PROXIMITY_OUT - | `DRAG_ENTER | `DRAG_LEAVE | `DRAG_MOTION | `DRAG_STATUS - | `DROP_START | `DROP_FINISHED | `CLIENT_EVENT | `VISIBILITY_NOTIFY - | `NO_EXPOSE ] - -type event_mask = "GDK_" - [ `EXPOSURE - | `POINTER_MOTION | `POINTER_MOTION_HINT - | `BUTTON_MOTION | `BUTTON1_MOTION | `BUTTON2_MOTION | `BUTTON3_MOTION - | `BUTTON_PRESS | `BUTTON_RELEASE - | `KEY_PRESS | `KEY_RELEASE - | `ENTER_NOTIFY | `LEAVE_NOTIFY | `FOCUS_CHANGE - | `STRUCTURE | `PROPERTY_CHANGE | `VISIBILITY_NOTIFY - | `PROXIMITY_IN | `PROXIMITY_OUT | `SUBSTRUCTURE - | `ALL_EVENTS ] "_MASK" - -type extension_events = "GDK_EXTENSION_EVENTS_" - [ `NONE | `ALL | `CURSOR ] - -type gdkVisibilityState = "GDK_VISIBILITY_" - [ `UNOBSCURED | `PARTIAL | `FULLY_OBSCURED ] - -type gdkInputSource = "GDK_SOURCE_" - [ `MOUSE | `PEN | `ERASER | `CURSOR ] - -type gdkCrossingMode = "GDK_CROSSING_" - [ `NORMAL | `GRAB | `UNGRAB ] - -type gdkNotifyType = "GDK_NOTIFY_" - [ `ANCESTOR | `VIRTUAL | `INFERIOR | `NONLINEAR | `NONLINEAR_VIRTUAL - | `UNKNOWN ] - -type gdkFillRule = "GDK_" - [ `EVEN_ODD_RULE | `WINDING_RULE ] - -type gdkOverlapType = "GDK_OVERLAP_RECTANGLE_" - [ `IN | `OUT | `PART ] - -type gdkFunction = "GDK_" - [ `COPY | `INVERT | `XOR ] - -type gdkFill = "GDK_" - [ `SOLID | `TILED | `STIPPLED | `OPAQUE_STIPPLED ] - -type gdkSubwindowMode = "GDK_" - [ `CLIP_BY_CHILDREN | `INCLUDE_INFERIORS ] - -type gdkLineStyle = "GDK_LINE_" - [ `SOLID | `ON_OFF_DASH | `DOUBLE_DASH ] - -type gdkCapStyle = "GDK_CAP_" - [ `NOT_LAST | `BUTT | `ROUND | `PROJECTING ] - -type gdkJoinStyle = "GDK_JOIN_" - [ `MITER | `ROUND | `BEVEL ] - -type gdkModifier = "GDK_" - [ `SHIFT | `LOCK | `CONTROL | `MOD1 | `MOD2 | `MOD3 | `MOD4 | `MOD5 - | `BUTTON1 | `BUTTON2 | `BUTTON3 | `BUTTON4 | `BUTTON5 ] "_MASK" - -type gdkImageType = "GDK_IMAGE_" - [ `NORMAL | `SHARED | `FASTEST ] - -type gdkVisualType = "GDK_VISUAL_" - [ `STATIC_GRAY | `GRAYSCALE | `STATIC_COLOR | `PSEUDO_COLOR - | `TRUE_COLOR | `DIRECT_COLOR ] - -type gdkFontType = "GDK_FONT_" - [ `FONT | `FONTSET ] - -type gdkDragAction = "GDK_ACTION_" - [ `DEFAULT | `COPY | `MOVE | `LINK | `PRIVATE | `ASK ] - -type gdkCursorType = "GDK_" [ - | `NUM_GLYPHS - | `X_CURSOR - | `ARROW - | `BASED_ARROW_DOWN - | `BASED_ARROW_UP - | `BOAT - | `BOGOSITY - | `BOTTOM_LEFT_CORNER - | `BOTTOM_RIGHT_CORNER - | `BOTTOM_SIDE - | `BOTTOM_TEE - | `BOX_SPIRAL - | `CENTER_PTR - | `CIRCLE - | `CLOCK - | `COFFEE_MUG - | `CROSS - | `CROSS_REVERSE - | `CROSSHAIR - | `DIAMOND_CROSS - | `DOT - | `DOTBOX - | `DOUBLE_ARROW - | `DRAFT_LARGE - | `DRAFT_SMALL - | `DRAPED_BOX - | `EXCHANGE - | `FLEUR - | `GOBBLER - | `GUMBY - | `HAND1 - | `HAND2 - | `HEART - | `ICON - | `IRON_CROSS - | `LEFT_PTR - | `LEFT_SIDE - | `LEFT_TEE - | `LEFTBUTTON - | `LL_ANGLE - | `LR_ANGLE - | `MAN - | `MIDDLEBUTTON - | `MOUSE - | `PENCIL - | `PIRATE - | `PLUS - | `QUESTION_ARROW - | `RIGHT_PTR - | `RIGHT_SIDE - | `RIGHT_TEE - | `RIGHTBUTTON - | `RTL_LOGO - | `SAILBOAT - | `SB_DOWN_ARROW - | `SB_H_DOUBLE_ARROW - | `SB_LEFT_ARROW - | `SB_RIGHT_ARROW - | `SB_UP_ARROW - | `SB_V_DOUBLE_ARROW - | `SHUTTLE - | `SIZING - | `SPIDER - | `SPRAYCAN - | `STAR - | `TARGET - | `TCROSS - | `TOP_LEFT_ARROW - | `TOP_LEFT_CORNER - | `TOP_RIGHT_CORNER - | `TOP_SIDE - | `TOP_TEE - | `TREK - | `UL_ANGLE - | `UMBRELLA - | `UR_ANGLE - | `WATCH - | `XTERM - ] diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/glGtk.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/glGtk.ml deleted file mode 100644 index c7020a4fd..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/glGtk.ml +++ /dev/null @@ -1,86 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk - -type visual_options = [ - | `USE_GL - | `BUFFER_SIZE of int - | `LEVEL of int - | `RGBA - | `DOUBLEBUFFER - | `STEREO - | `AUX_BUFFERS of int - | `RED_SIZE of int - | `GREEN_SIZE of int - | `BLUE_SIZE of int - | `ALPHA_SIZE of int - | `DEPTH_SIZE of int - | `STENCIL_SIZE of int - | `ACCUM_GREEN_SIZE of int - | `ACCUM_ALPHA_SIZE of int -] - -type gl_area = [`widget|`drawing|`glarea] - -module Raw = struct - external create : - visual_options list -> share:[>`glarea] optobj -> gl_area obj - = "ml_gtk_gl_area_new" - - external swap_buffers : [>`glarea] obj -> unit - = "ml_gtk_gl_area_swapbuffers" - - external make_current : [>`glarea] obj -> bool - = "ml_gtk_gl_area_make_current" -end - -class area_signals obj = -object (connect) - inherit GObj.widget_signals obj - method display ~callback = - (new GObj.event_signals ~after obj)#expose ~callback: - begin fun ev -> - if GdkEvent.Expose.count ev = 0 then - if Raw.make_current obj then callback () - else prerr_endline "GlGtk-WARNING **: could not make current"; - true - end - method reshape ~callback = - (new GObj.event_signals ~after obj)#configure ~callback: - begin fun ev -> - if Raw.make_current obj then begin - callback ~width:(GdkEvent.Configure.width ev) - ~height:(GdkEvent.Configure.height ev) - end - else prerr_endline "GlGtk-WARNING **: could not make current"; - true - end - method realize ~callback = - let connect = new GObj.misc_signals ~after (GtkBase.Widget.coerce obj) in - connect#realize ~callback: - begin fun ev -> - if Raw.make_current obj then callback () - else prerr_endline "GlGtk-WARNING **: could not make current" - end -end - -class area obj = object (self) - inherit GObj.widget (obj : gl_area obj) - method as_area = obj - method event = new GObj.event_ops obj - method connect = new area_signals obj - method set_size = GtkMisc.DrawingArea.size obj - method swap_buffers () = Raw.swap_buffers obj - method make_current () = - if not (Raw.make_current obj) then - raise (Gl.GLerror "make_current") -end - -let area options ?share ?(width=0) ?(height=0) ?packing ?show () = - let share = - match share with Some (x : area) -> Some x#as_area | None -> None in - let w = Raw.create options ~share:(Gpointer.optboxed share) in - if width <> 0 || height <> 0 then GtkMisc.DrawingArea.size w ~width ~height; - GtkBase.Widget.add_events w [`EXPOSURE]; - GObj.pack_return (new area w) ~packing ~show diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/glGtk.mli b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/glGtk.mli deleted file mode 100644 index 599f24a09..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/glGtk.mli +++ /dev/null @@ -1,63 +0,0 @@ -(* $Id$ *) - -open Gtk -open GObj - -type visual_options = [ - `USE_GL - | `BUFFER_SIZE of int - | `LEVEL of int - | `RGBA - | `DOUBLEBUFFER - | `STEREO - | `AUX_BUFFERS of int - | `RED_SIZE of int - | `GREEN_SIZE of int - | `BLUE_SIZE of int - | `ALPHA_SIZE of int - | `DEPTH_SIZE of int - | `STENCIL_SIZE of int - | `ACCUM_GREEN_SIZE of int - | `ACCUM_ALPHA_SIZE of int -] -type gl_area = [`widget|`drawing|`glarea] - -module Raw : - sig - external create : - visual_options list -> share:[>`glarea] optobj -> gl_area obj - = "ml_gtk_gl_area_new" - external swap_buffers : [>`glarea] obj -> unit - = "ml_gtk_gl_area_swapbuffers" - external make_current : [>`glarea] obj -> bool - = "ml_gtk_gl_area_make_current" - end - -class area_signals : 'a obj -> - object - inherit widget_signals - constraint 'a = [>`glarea|`widget] - val obj : 'a obj - method display : callback:(unit -> unit) -> GtkSignal.id - method realize : callback:(unit -> unit) -> GtkSignal.id - method reshape : - callback:(width:int -> height:int -> unit) -> GtkSignal.id - end - -class area : gl_area obj -> - object - inherit widget - val obj : gl_area obj - method event : event_ops - method as_area : gl_area obj - method connect : area_signals - method make_current : unit -> unit - method set_size : width:int -> height:int -> unit - method swap_buffers : unit -> unit - end - -val area : - visual_options list -> - ?share:area -> - ?width:int -> - ?height:int -> ?packing:(widget -> unit) -> ?show:bool -> unit -> area diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/glib.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/glib.ml deleted file mode 100644 index 2fd014099..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/glib.ml +++ /dev/null @@ -1,21 +0,0 @@ -(* $Id$ *) - -type warning_func = string -> unit - -external set_warning_handler : (string -> unit) -> warning_func - = "ml_g_set_warning_handler" - -type print_func = string -> unit - -external set_print_handler : (string -> unit) -> print_func - = "ml_g_set_print_handler" - -module Main = struct - type t - external create : bool -> t = "ml_g_main_new" - external iteration : bool -> bool = "ml_g_main_iteration" - external pending : unit -> bool = "ml_g_main_pending" - external is_running : t -> bool = "ml_g_main_is_running" - external quit : t -> unit = "ml_g_main_quit" - external destroy : t -> unit = "ml_g_main_destroy" -end diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gpointer.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gpointer.ml deleted file mode 100644 index 7d28a1f9d..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gpointer.ml +++ /dev/null @@ -1,41 +0,0 @@ -(* $Id$ *) - -(* marked pointers *) -type 'a optaddr - -let optaddr : 'a option -> 'a optaddr = - function - None -> Obj.magic 0 - | Some x -> Obj.magic x - -(* naked pointers *) -type optstring - -external get_null : unit -> optstring = "ml_get_null" -let raw_null = get_null () - -let optstring : string option -> optstring = - function - None -> raw_null - | Some x -> Obj.magic x - -(* boxed pointers *) -type boxed -let boxed_null : boxed = Obj.magic (0, raw_null) - -type 'a optboxed - -let optboxed : 'a option -> 'a optboxed = - function - None -> Obj.magic boxed_null - | Some obj -> Obj.magic obj - -let may_box ~f obj : 'a optboxed = - match obj with - None -> Obj.magic boxed_null - | Some obj -> Obj.magic (f obj : 'a) - -(* Exceptions *) - -exception Null -let _ = Callback.register_exception "null_pointer" Null diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtk.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtk.ml deleted file mode 100644 index 0c7892e6f..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtk.ml +++ /dev/null @@ -1,158 +0,0 @@ -(* $Id$ *) - -exception Error of string -exception Warning of string -exception Cannot_cast of string * string -type 'a obj -type 'a optobj = 'a obj Gpointer.optboxed -type clampf = float - -module Tags = struct - type arrow_type = [ `UP|`DOWN|`LEFT|`RIGHT ] - type attach_options = [ `EXPAND|`SHRINK|`FILL ] - type direction_type = [ `TAB_FORWARD|`TAB_BACKWARD|`UP|`DOWN|`LEFT|`RIGHT ] - type justification = [ `LEFT|`RIGHT|`CENTER|`FILL ] - type match_type = [ `ALL|`ALL_TAIL|`HEAD|`TAIL|`EXACT|`LAST ] - type metric_type = [ `PIXELS|`INCHES|`CENTIMETERS ] - type orientation = [ `HORIZONTAL|`VERTICAL ] - type corner_type = [ `TOP_LEFT|`BOTTOM_LEFT|`TOP_RIGHT|`BOTTOM_RIGHT ] - type pack_type = [ `START|`END ] - type path_type = [ `WIDGET|`WIDGET_CLASS|`CLASS ] - type policy_type = [ `ALWAYS|`AUTOMATIC|`NEVER ] - type position = [ `LEFT|`RIGHT|`TOP|`BOTTOM ] - type preview_type = [ `COLOR|`GRAYSCALE ] - type relief_style = [ `NORMAL|`HALF|`NONE ] - type resize_mode = [ `PARENT|`QUEUE|`IMMEDIATE ] - type signal_run_type = [ `FIRST|`LAST|`BOTH|`NO_RECURSE|`ACTION|`NO_HOOKS ] - type scroll_type = - [ `NONE|`STEP_FORWARD|`STEP_BACKWARD|`PAGE_BACKWARD|`PAGE_FORWARD|`JUMP ] - type selection_mode = [ `SINGLE|`BROWSE|`MULTIPLE|`EXTENDED ] - type shadow_type = [ `NONE|`IN|`OUT|`ETCHED_IN|`ETCHED_OUT ] - type state_type = [ `NORMAL|`ACTIVE|`PRELIGHT|`SELECTED|`INSENSITIVE ] - type submenu_direction = [ `LEFT|`RIGHT ] - type submenu_placement = [ `TOP_BOTTOM|`LEFT_RIGHT ] - type toolbar_style = [ `ICONS|`TEXT|`BOTH ] - type trough_type = [ `NONE|`START|`END|`JUMP ] - type update_type = [ `CONTINUOUS|`DISCONTINUOUS|`DELAYED ] - type visibility = [ `NONE|`PARTIAL|`FULL ] - type window_position = [ `NONE|`CENTER|`MOUSE|`CENTER_ALWAYS ] - type window_type = [ `TOPLEVEL|`DIALOG|`POPUP ] - type sort_type = [ `ASCENDING|`DESCENDING ] - type fundamental_type = - [ `INVALID|`NONE|`CHAR|`BOOL|`INT|`UINT|`LONG|`ULONG|`FLOAT|`DOUBLE - |`STRING|`ENUM|`FLAGS|`BOXED|`FOREIGN|`CALLBACK|`ARGS|`POINTER - |`SIGNAL|`C_CALLBACK|`OBJECT ] - - type accel_flag = [ `VISIBLE|`SIGNAL_VISIBLE|`LOCKED ] - type button_box_style = [ `DEFAULT_STYLE|`SPREAD|`EDGE|`START|`END ] - type expand_type = [ `X|`Y|`BOTH|`NONE ] - type packer_options = [ `PACK_EXPAND|`FILL_X|`FILL_Y ] - type side_type = [ `TOP|`BOTTOM|`LEFT|`RIGHT ] - type anchor_type = [ `CENTER|`NORTH|`NW|`NE|`SOUTH|`SW|`SE|`WEST|`EAST ] - type update_policy = [ `ALWAYS|`IF_VALID|`SNAP_TO_TICKS ] - type cell_type = [ `EMPTY|`TEXT|`PIXMAP|`PIXTEXT|`WIDGET ] - type button_action = [ `SELECTS|`DRAGS|`EXPANDS ] - type calendar_display_options = - [ `SHOW_HEADING|`SHOW_DAY_NAMES|`NO_MONTH_CHANGE|`SHOW_WEEK_NUMBERS - |`WEEK_START_MONDAY ] - type spin_button_update_policy = [ `ALWAYS|`IF_VALID ] - type spin_type = - [ `STEP_FORWARD|`STEP_BACKWARD|`PAGE_FORWARD|`PAGE_BACKWARD - |`HOME|`END|`USER_DEFINED of float ] - type progress_bar_style = [ `CONTINUOUS|`DISCRETE ] - type progress_bar_orientation = - [ `LEFT_TO_RIGHT|`RIGHT_TO_LEFT|`BOTTOM_TO_TOP|`TOP_TO_BOTTOM ] - type dest_defaults = [ `MOTION|`HIGHLIGHT|`DROP|`ALL ] - type target_flags = [ `SAME_APP|`SAME_WIDGET ] - type font_metric_type = [ `PIXELS|`POINTS ] - type font_type = [ `BITMAP|`SCALABLE|`SCALABLE_BITMAP|`ALL ] - type font_filter_type = [ `BASE|`USER ] -end -open Tags - -type gtk_type -type gtk_class - -type accel_group - -type style -type 'a group = 'a obj option - -type statusbar_message -type statusbar_context - -type color = { red: float; green: float; blue: float; opacity: float } -type rectangle = { x: int; y: int; width: int; height: int } -type target_entry = { target: string; flags: target_flags list; info: int } - -type data = [`data] -type adjustment = [`data|`adjustment] -type tooltips = [`data|`tooltips] -type widget = [`widget] -type container = [`widget|`container] -type alignment = [`widget|`container|`bin|`alignment] -type event_box = [`widget|`container|`bin|`eventbox] -type frame = [`widget|`container|`bin|`frame] -type aspect_frame = [`widget|`container|`bin|`frame|`aspect] -type handle_box = [`widget|`container|`bin|`handlebox] -type invisible = [`widget|`container|`bin|`invisible] -type item = [`widget|`container|`bin|`item] -type list_item = [`widget|`container|`bin|`item|`listitem] -type menu_item = [`widget|`container|`bin|`item|`menuitem] -type check_menu_item = [`widget|`container|`bin|`item|`menuitem|`checkmenuitem] -type radio_menu_item = - [`widget|`container|`bin|`item|`menuitem|`checkmenuitem|`radiomenuitem] -type tree_item = [`widget|`container|`bin|`item|`treeitem] -type viewport = [`widget|`container|`bin|`viewport] -type window = [`widget|`container|`bin|`window] -type color_selection_dialog = [`widget|`container|`window|`colorseldialog] -type dialog = [`widget|`container|`bin|`window|`dialog] -type input_dialog = [`widget|`container|`bin|`window|`dialog|`inputdialog] -type file_selection = [`widget|`container|`bin|`window|`filesel] -type font_selection_dialog = [`widget|`container|`bin|`window|`fontseldialog] -type plug = [`widget|`container|`bin|`window|`plug] -type box = [`widget|`container|`box] -type button_box = [`widget|`container|`box|`bbox] -type gamma_curve = [`widget|`container|`bbox|`gamma] -type color_selection = [`widget|`container|`box|`colorsel] -type combo = [`widget|`container|`box|`combo] -type statusbar = [`widget|`container|`box|`statusbar] -type button = [`widget|`container|`button] -type toggle_button = [`widget|`container|`button|`toggle] -type radio_button = [`widget|`container|`button|`toggle|`radio] -type option_menu = [`widget|`container|`button|`optionmenu] -type clist = [`widget|`container|`clist] -type fixed = [`widget|`container|`fixed] -type layout = [`widget|`container|`layout] -type liste = [`widget|`container|`list] -type menu_shell = [`widget|`container|`menushell] -type menu = [`widget|`container|`menushell|`menu] -type menu_bar = [`widget|`container|`menushell|`menubar] -type notebook = [`widget|`container|`notebook] -type font_selection = [`widget|`container|`notebook|`fontsel] -type packer = [`widget|`container|`packer] -type paned = [`widget|`container|`paned] -type scrolled_window = [`widget|`container|`scrolled] -type socket = [`widget|`container|`socket] -type table = [`widget|`container|`table] -type toolbar = [`widget|`container|`toolbar] -type tree = [`widget|`container|`tree] -type calendar = [`widget|`calendar] -type drawing_area = [`widget|`drawing] -type editable = [`widget|`editable] -type entry = [`widget|`editable|`entry] -type spin_button = [`widget|`editable|`entry|`spinbutton] -type text = [`widget|`editable|`text] -type misc = [`widget|`misc] -type arrow = [`widget|`misc|`arrow] -type image = [`widget|`misc|`image] -type label = [`widget|`misc|`label] -type tips_query = [`widget|`misc|`label|`tipsquery] -type pixmap = [`widget|`misc|`pixmap] -type progress = [`widget|`progress] -type progress_bar = [`widget|`progress|`progressbar] -type range = [`widget|`range] -type scale = [`widget|`range|`scale] -type scrollbar = [`widget|`range|`scrollbar] -type ruler = [`widget|`ruler] -type separator = [`widget|`separator] diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkArgv.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkArgv.ml deleted file mode 100644 index 5e60c8d5e..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkArgv.ml +++ /dev/null @@ -1,106 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk - -type data = - | NONE - | CHAR of char - | BOOL of bool - | INT of int - | FLOAT of float - | STRING of string option - | OBJECT of unit obj option - | POINTER of Gpointer.boxed option - -type 'a result = - [ `NONE - | `CHAR of char | `BOOL of bool | `INT of int - | `UINT of int32 | `LONG of nativeint | `ULONG of nativeint - | `FLOAT of float | `DOUBLE of float - | `STRING of string option | `ENUM of int | `FLAGS of int32 - | `BOXED of Gpointer.boxed option - | `POINTER of Gpointer.boxed option - | `OBJECT of 'a obj option ] - -module Arg = struct - type t - external shift : t -> pos:int -> t = "ml_gtk_arg_shift" - external get_type : t -> gtk_type = "ml_gtk_arg_get_type" - external get : t -> data = "ml_gtk_arg_get" - external set_retloc : t -> 'a result -> unit = "ml_gtk_arg_set_retloc" - external get_pointer : t -> Gpointer.boxed = "ml_gtk_arg_get_pointer" - external get_nativeint : t -> nativeint = "ml_gtk_arg_get_nativeint" - - (* Safely get an argument *) - (* - external get_char : t -> char = "ml_gtk_arg_get_char" - external get_bool : t -> bool = "ml_gtk_arg_get_bool" - external get_int : t -> int = "ml_gtk_arg_get_int" - external get_float : t -> float = "ml_gtk_arg_get_float" - external get_string : t -> string option = "ml_gtk_arg_get_string" - external get_object : t -> unit obj option = "ml_gtk_arg_get_object" - *) - (* Safely set a result - Beware: this is not the opposite of get, arguments and results - are two different ways to use GtkArg. *) - (* - external set_char : t -> char -> unit = "ml_gtk_arg_set_char" - external set_bool : t -> bool -> unit = "ml_gtk_arg_set_bool" - external set_int : t -> int -> unit = "ml_gtk_arg_set_int" - external set_nativeint : t -> nativeint -> unit = "ml_gtk_arg_set_nativeint" - external set_float : t -> float -> unit = "ml_gtk_arg_set_float" - external set_string : t -> string -> unit = "ml_gtk_arg_set_string" - external set_pointer : t -> Gpointer.boxed -> unit = "ml_gtk_arg_set_pointer" - external set_object : t -> 'a obj -> unit = "ml_gtk_arg_set_object" - *) -end - -open Arg -type raw_obj -type t = { referent: raw_obj; nargs: int; args: Arg.t } -let nth arg ~pos = - if pos < 0 || pos >= arg.nargs then invalid_arg "GtkArg.Vect.nth"; - shift arg.args ~pos -let result arg = - if arg.nargs < 0 then invalid_arg "GtkArgv.result"; - shift arg.args ~pos:arg.nargs -external wrap_object : raw_obj -> unit obj = "Val_GtkObject" -let referent arg = - if arg.referent == Obj.magic (-1) then invalid_arg "GtkArgv.referent"; - wrap_object arg.referent -let get_result_type arg = get_type (result arg) -let get_type arg ~pos = get_type (nth arg ~pos) -let get arg ~pos = get (nth arg ~pos) -let set_result arg = set_retloc (result arg) - -let get_args arg = - let rec loop args ~pos = - if pos < 0 then args - else loop (get arg ~pos :: args) ~pos:(pos-1) - in loop [] ~pos:(arg.nargs - 1) - -let get_pointer arg ~pos = get_pointer (nth arg ~pos) -let get_nativeint arg ~pos = get_nativeint (nth arg ~pos) - -(* -let get_char arg ~pos = get_char (nth arg ~pos) -let get_bool arg ~pos = get_bool (nth arg ~pos) -let get_int arg ~pos = get_int (nth arg ~pos) -let get_float arg ~pos = get_float (nth arg ~pos) -let get_string arg ~pos = get_string (nth arg ~pos) -let get_object arg ~pos = get_object (nth arg ~pos) -let set_result_char arg = set_char (result arg) -let set_result_bool arg = set_bool (result arg) -let set_result_int arg = set_int (result arg) -let set_result_nativeint arg = set_nativeint (result arg) -let set_result_float arg = set_float (result arg) -let set_result_string arg = set_string (result arg) -let set_result_pointer arg = set_pointer (result arg) -let set_result_object arg = set_object (result arg) -*) - -external string_at_pointer : ?pos:int -> ?len:int -> Gpointer.boxed -> string - = "ml_string_at_pointer" -external int_at_pointer : Gpointer.boxed -> int - = "ml_int_at_pointer" diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkBase.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkBase.ml deleted file mode 100644 index 3b1a00fdf..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkBase.ml +++ /dev/null @@ -1,414 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open Tags - -module Type = struct - external name : gtk_type -> string = "ml_gtk_type_name" - external from_name : string -> gtk_type = "ml_gtk_type_from_name" - external parent : gtk_type -> gtk_type = "ml_gtk_type_parent" - external get_class : gtk_type -> gtk_class = "ml_gtk_type_class" - external parent_class : gtk_type -> gtk_class = "ml_gtk_type_parent_class" - external is_a : gtk_type -> gtk_type -> bool = "ml_gtk_type_is_a" - external fundamental : gtk_type -> fundamental_type - = "ml_gtk_type_fundamental" -end - -module Object = struct - external get_type : 'a obj -> gtk_type = "ml_gtk_object_type" - let is_a obj name = - Type.is_a (get_type obj) (Type.from_name name) - external destroy : 'a obj -> unit = "ml_gtk_object_destroy" - external coerce : 'a obj -> unit obj = "%identity" - external unsafe_cast : 'a obj -> 'b obj = "%identity" - let try_cast w name = - if is_a w name then unsafe_cast w - else raise (Cannot_cast(Type.name(get_type w), name)) - let get_id (obj : 'a obj) : int = (snd (Obj.magic obj) lor 0) - module Signals = struct - open GtkSignal - let destroy : (_,_) t = - { name = "destroy"; marshaller = marshal_unit } - end -end - -module Widget = struct - let cast w : widget obj = Object.try_cast w "GtkWidget" - external coerce : [>`widget] obj -> widget obj = "%identity" - external unparent : [>`widget] obj -> unit = "ml_gtk_widget_unparent" - external show : [>`widget] obj -> unit = "ml_gtk_widget_show" - external show_now : [>`widget] obj -> unit = "ml_gtk_widget_show_now" - external show_all : [>`widget] obj -> unit = "ml_gtk_widget_show_all" - external hide : [>`widget] obj -> unit = "ml_gtk_widget_hide" - external hide_all : [>`widget] obj -> unit = "ml_gtk_widget_hide_all" - external map : [>`widget] obj -> unit = "ml_gtk_widget_map" - external unmap : [>`widget] obj -> unit = "ml_gtk_widget_unmap" - external realize : [>`widget] obj -> unit = "ml_gtk_widget_realize" - external unrealize : [>`widget] obj -> unit = "ml_gtk_widget_unrealize" - external queue_draw : [>`widget] obj -> unit = "ml_gtk_widget_queue_draw" - external queue_resize : [>`widget] obj -> unit = "ml_gtk_widget_queue_resize" - external draw : [>`widget] obj -> Gdk.Rectangle.t option -> unit - = "ml_gtk_widget_draw" - external draw_focus : [>`widget] obj -> unit - = "ml_gtk_widget_draw_focus" - external draw_default : [>`widget] obj -> unit - = "ml_gtk_widget_draw_default" - external event : [>`widget] obj -> 'a Gdk.event -> bool - = "ml_gtk_widget_event" - external activate : [>`widget] obj -> bool - = "ml_gtk_widget_activate" - external reparent : [>`widget] obj -> [>`widget] obj -> unit - = "ml_gtk_widget_reparent" - external popup : [>`widget] obj -> x:int -> y:int -> unit - = "ml_gtk_widget_popup" - external intersect : - [>`widget] obj -> Gdk.Rectangle.t -> Gdk.Rectangle.t option - = "ml_gtk_widget_intersect" - external set_can_default : [>`widget] obj -> bool -> unit - = "ml_gtk_widget_set_can_default" - external set_can_focus : [>`widget] obj -> bool -> unit - = "ml_gtk_widget_set_can_focus" - external grab_focus : [>`widget] obj -> unit - = "ml_gtk_widget_grab_focus" - external grab_default : [>`widget] obj -> unit - = "ml_gtk_widget_grab_default" - external set_name : [>`widget] obj -> string -> unit - = "ml_gtk_widget_set_name" - external get_name : [>`widget] obj -> string - = "ml_gtk_widget_get_name" - external set_state : [>`widget] obj -> state_type -> unit - = "ml_gtk_widget_set_state" - external set_sensitive : [>`widget] obj -> bool -> unit - = "ml_gtk_widget_set_sensitive" - external set_uposition : [>`widget] obj -> x:int -> y:int -> unit - = "ml_gtk_widget_set_uposition" - external set_usize : [>`widget] obj -> width:int -> height:int -> unit - = "ml_gtk_widget_set_usize" - external add_events : [>`widget] obj -> Gdk.Tags.event_mask list -> unit - = "ml_gtk_widget_add_events" - external set_events : [>`widget] obj -> Gdk.Tags.event_mask list -> unit - = "ml_gtk_widget_set_events" - external set_extension_events : - [>`widget] obj -> Gdk.Tags.extension_events -> unit - = "ml_gtk_widget_set_extension_events" - external get_toplevel : [>`widget] obj -> widget obj - = "ml_gtk_widget_get_toplevel" - external get_ancestor : [>`widget] obj -> gtk_type -> widget obj - = "ml_gtk_widget_get_ancestor" - external get_colormap : [>`widget] obj -> Gdk.colormap - = "ml_gtk_widget_get_colormap" - external get_visual : [>`widget] obj -> Gdk.visual - = "ml_gtk_widget_get_visual" - external get_pointer : [>`widget] obj -> int * int - = "ml_gtk_widget_get_pointer" - external is_ancestor : [>`widget] obj -> [>`widget] obj -> bool - = "ml_gtk_widget_is_ancestor" - external set_style : [>`widget] obj -> style -> unit - = "ml_gtk_widget_set_style" - external set_rc_style : [>`widget] obj -> unit - = "ml_gtk_widget_set_rc_style" - external ensure_style : [>`widget] obj -> unit - = "ml_gtk_widget_ensure_style" - external get_style : [>`widget] obj -> style - = "ml_gtk_widget_get_style" - external restore_default_style : [>`widget] obj -> unit - = "ml_gtk_widget_restore_default_style" - external add_accelerator : - ([>`widget] as 'a) obj -> sgn:('a,unit->unit) GtkSignal.t -> - accel_group -> key:Gdk.keysym -> ?modi:Gdk.Tags.modifier list -> - ?flags:accel_flag list -> unit - = "ml_gtk_widget_add_accelerator_bc" "ml_gtk_widget_add_accelerator" - external remove_accelerator : - [>`widget] obj -> accel_group -> - key:Gdk.keysym -> ?modi:Gdk.Tags.modifier list -> unit - = "ml_gtk_widget_remove_accelerator" - external lock_accelerators : [>`widget] obj -> unit - = "ml_gtk_widget_lock_accelerators" - external unlock_accelerators : [>`widget] obj -> unit - = "ml_gtk_widget_unlock_accelerators" - external accelerators_locked : [>`widget] obj -> bool - = "ml_gtk_widget_accelerators_locked" - external window : [>`widget] obj -> Gdk.window - = "ml_GtkWidget_window" - external visible : [>`widget] obj -> bool - = "ml_GTK_WIDGET_VISIBLE" - external has_focus : [>`widget] obj -> bool - = "ml_GTK_WIDGET_HAS_FOCUS" - external parent : [>`widget] obj -> widget obj - = "ml_gtk_widget_parent" - external set_app_paintable : [>`widget] obj -> bool -> unit - = "ml_gtk_widget_set_app_paintable" - external allocation : [>`widget] obj -> rectangle - = "ml_gtk_widget_allocation" - external set_colormap : [>`widget] obj -> Gdk.colormap -> unit - = "ml_gtk_widget_set_colormap" - external set_visual : [>`widget] obj -> Gdk.visual -> unit - = "ml_gtk_widget_set_visual" - external set_default_colormap : Gdk.colormap -> unit - = "ml_gtk_widget_set_default_colormap" - external set_default_visual : Gdk.visual -> unit - = "ml_gtk_widget_set_default_visual" - external get_default_colormap : unit -> Gdk.colormap - = "ml_gtk_widget_get_default_colormap" - external get_default_visual : unit -> Gdk.visual - = "ml_gtk_widget_get_default_visual" - external push_colormap : Gdk.colormap -> unit - = "ml_gtk_widget_push_colormap" - external push_visual : Gdk.visual -> unit - = "ml_gtk_widget_push_visual" - external pop_colormap : unit -> unit - = "ml_gtk_widget_pop_colormap" - external pop_visual : unit -> unit - = "ml_gtk_widget_pop_visual" - module Signals = struct - open GtkArgv - open GtkSignal - let marshal f _ = function - | OBJECT(Some p) :: _ -> f (cast p) - | _ -> invalid_arg "GtkBase.Widget.Signals.marshal" - let marshal_opt f _ = function - | OBJECT(Some obj) :: _ -> f (Some (cast obj)) - | OBJECT None :: _ -> f None - | _ -> invalid_arg "GtkBase.Widget.Signals.marshal_opt" - let marshal_style f _ = function - | POINTER p :: _ -> f (Obj.magic p : Gtk.style option) - | _ -> invalid_arg "GtkBase.Widget.Signals.marshal_opt" - let marshal_drag1 f _ = function - | POINTER(Some p) :: _ -> f (Obj.magic p : Gdk.drag_context) - | _ -> invalid_arg "GtkBase.Widget.Signals.marshal_drag1" - let marshal_drag2 f _ = function - | POINTER(Some p) :: INT time :: _ -> - f (Obj.magic p : Gdk.drag_context) ~time - | _ -> invalid_arg "GtkBase.Widget.Signals.marshal_drag2" - let marshal_drag3 f argv = function - | POINTER(Some p) :: INT x :: INT y :: INT time :: _ -> - let res = f (Obj.magic p : Gdk.drag_context) ~x ~y ~time - in GtkArgv.set_result argv (`BOOL res) - | _ -> invalid_arg "GtkBase.Widget.Signals.marshal_drag3" - let show : ([>`widget],_) t = - { name = "show"; marshaller = marshal_unit } - let hide : ([>`widget],_) t = - { name = "hide"; marshaller = marshal_unit } - let map : ([>`widget],_) t = - { name = "map"; marshaller = marshal_unit } - let unmap : ([>`widget],_) t = - { name = "unmap"; marshaller = marshal_unit } - let realize : ([>`widget],_) t = - { name = "realize"; marshaller = marshal_unit } - let draw : ([>`widget],_) t = - let marshal f _ = function - | POINTER(Some p) :: _ -> f (Obj.magic p : Gdk.Rectangle.t) - | _ -> invalid_arg "GtkBase.Widget.Signals.marshal_draw" - in { name = "draw"; marshaller = marshal } - let draw_focus : ([>`widget],_) t = - { name = "draw_focus"; marshaller = marshal_unit } - let draw_default : ([>`widget],_) t = - { name = "draw_default"; marshaller = marshal_unit } - external val_state : int -> state_type = "ml_Val_state_type" - let state_changed : ([>`widget],_) t = - let marshal f = marshal_int (fun x -> f (val_state x)) in - { name = "state_changed"; marshaller = marshal } - let parent_set : ([>`widget],_) t = - { name = "parent_set"; marshaller = marshal_opt } - let style_set : ([>`widget],_) t = - { name = "style_set"; marshaller = marshal_style } - let drag_begin : ([>`widget],_) t = - { name = "drag_begin"; marshaller = marshal_drag1 } - let drag_end : ([>`widget],_) t = - { name = "drag_end"; marshaller = marshal_drag1 } - let drag_data_delete : ([>`widget],_) t = - { name = "drag_data_delete"; marshaller = marshal_drag1 } - let drag_leave : ([>`widget],_) t = - { name = "drag_leave"; marshaller = marshal_drag2 } - let drag_motion : ([>`widget],_) t = - { name = "drag_motion"; marshaller = marshal_drag3 } - let drag_drop : ([>`widget],_) t = - { name = "drag_drop"; marshaller = marshal_drag3 } - let drag_data_get : ([>`widget],_) t = - let marshal f argv = function - | POINTER(Some p) :: POINTER(Some q) :: INT info :: INT time :: _ -> - f (Obj.magic p : Gdk.drag_context) - (Obj.magic q : GtkData.Selection.t) - ~info - ~time - | _ -> invalid_arg "GtkBase.Widget.Signals.marshal_drag_data_get" - in - { name = "drag_data_get"; marshaller = marshal } - let drag_data_received : ([>`widget],_) t = - let marshal f _ = function - | POINTER(Some p) :: INT x :: INT y :: POINTER(Some q) :: - INT info :: INT time :: _ -> - f (Obj.magic p : Gdk.drag_context) ~x ~y - (Obj.magic q : GtkData.Selection.t) - ~info ~time - | _ -> invalid_arg "GtkBase.Widget.Signals.marshal_drag_data_received" - in - { name = "drag_data_received"; marshaller = marshal } - - module Event = struct - let marshal f argv = function - | [POINTER(Some p)] -> - let ev = GdkEvent.unsafe_copy p in - GtkArgv.set_result argv (`BOOL(f ev)) - | _ -> invalid_arg "GtkBase.Widget.Event.marshal" - let any : ([>`widget], Gdk.Tags.event_type Gdk.event -> bool) t = - { name = "event"; marshaller = marshal } - let button_press : ([>`widget], GdkEvent.Button.t -> bool) t = - { name = "button_press_event"; marshaller = marshal } - let button_release : ([>`widget], GdkEvent.Button.t -> bool) t = - { name = "button_release_event"; marshaller = marshal } - let motion_notify : ([>`widget], GdkEvent.Motion.t -> bool) t = - { name = "motion_notify_event"; marshaller = marshal } - let delete : ([>`widget], [`DELETE] Gdk.event -> bool) t = - { name = "delete_event"; marshaller = marshal } - let destroy : ([>`widget], [`DESTROY] Gdk.event -> bool) t = - { name = "destroy_event"; marshaller = marshal } - let expose : ([>`widget], GdkEvent.Expose.t -> bool) t = - { name = "expose_event"; marshaller = marshal } - let key_press : ([>`widget], GdkEvent.Key.t -> bool) t = - { name = "key_press_event"; marshaller = marshal } - let key_release : ([>`widget], GdkEvent.Key.t -> bool) t = - { name = "key_release_event"; marshaller = marshal } - let enter_notify : ([>`widget], GdkEvent.Crossing.t -> bool) t = - { name = "enter_notify_event"; marshaller = marshal } - let leave_notify : ([>`widget], GdkEvent.Crossing.t -> bool) t = - { name = "leave_notify_event"; marshaller = marshal } - let configure : ([>`widget], GdkEvent.Configure.t -> bool) t = - { name = "configure_event"; marshaller = marshal } - let focus_in : ([>`widget], GdkEvent.Focus.t -> bool) t = - { name = "focus_in_event"; marshaller = marshal } - let focus_out : ([>`widget], GdkEvent.Focus.t -> bool) t = - { name = "focus_out_event"; marshaller = marshal } - let map : ([>`widget], [`MAP] Gdk.event -> bool) t = - { name = "map_event"; marshaller = marshal } - let unmap : ([>`widget], [`UNMAP] Gdk.event -> bool) t = - { name = "unmap_event"; marshaller = marshal } - let property_notify : ([>`widget], GdkEvent.Property.t -> bool) t = - { name = "property_notify_event"; marshaller = marshal } - let selection_clear : ([>`widget], GdkEvent.Selection.t -> bool) t = - { name = "selection_clear_event"; marshaller = marshal } - let selection_request : ([>`widget], GdkEvent.Selection.t -> bool) t = - { name = "selection_request_event"; marshaller = marshal } - let selection_notify : ([>`widget], GdkEvent.Selection.t -> bool) t = - { name = "selection_notify_event"; marshaller = marshal } - let proximity_in : ([>`widget], GdkEvent.Proximity.t -> bool) t = - { name = "proximity_in_event"; marshaller = marshal } - let proximity_out : ([>`widget], GdkEvent.Proximity.t -> bool) t = - { name = "proximity_out_event"; marshaller = marshal } - end - end -end - -module Container = struct - let cast w : container obj = Object.try_cast w "GtkContainer" - external coerce : [>`container] obj -> container obj = "%identity" - external set_border_width : [>`container] obj -> int -> unit - = "ml_gtk_container_set_border_width" - external set_resize_mode : [>`container] obj -> resize_mode -> unit - = "ml_gtk_container_set_resize_mode" - external add : [>`container] obj -> [>`widget] obj -> unit - = "ml_gtk_container_add" - external remove : [>`container] obj -> [>`widget] obj -> unit - = "ml_gtk_container_remove" - let set ?border_width ?(width = -2) ?(height = -2) w = - may border_width ~f:(set_border_width w); - if width <> -2 || height <> -2 then - Widget.set_usize w ?width ?height - external foreach : [>`container] obj -> f:(widget obj-> unit) -> unit - = "ml_gtk_container_foreach" - let children w = - let l = ref [] in - foreach w ~f:(fun c -> l := c :: !l); - List.rev !l - external focus : [>`container] obj -> direction_type -> bool - = "ml_gtk_container_focus" - (* Called by Widget.grab_focus *) - external set_focus_child : [>`container] obj -> [>`widget] optobj -> unit - = "ml_gtk_container_set_focus_child" - external set_focus_vadjustment : - [>`container] obj -> [>`adjustment] optobj -> unit - = "ml_gtk_container_set_focus_vadjustment" - external set_focus_hadjustment : - [>`container] obj -> [>`adjustment] optobj -> unit - = "ml_gtk_container_set_focus_hadjustment" - module Signals = struct - open GtkSignal - let add : ([>`container],_) t = - { name = "add"; marshaller = Widget.Signals.marshal } - let remove : ([>`container],_) t = - { name = "remove"; marshaller = Widget.Signals.marshal } - let need_resize : ([>`container],_) t = - let marshal f argv _ = GtkArgv.set_result argv (`BOOL(f ())) in - { name = "need_resize"; marshaller = marshal } - external val_direction : int -> direction_type = "ml_Val_direction_type" - let focus : ([>`container],_) t = - let marshal f argv = function - | GtkArgv.INT dir :: _ -> - GtkArgv.set_result argv (`BOOL(f (val_direction dir))) - | _ -> invalid_arg "GtkBase.Container.Signals.marshal_focus" - in { name = "focus"; marshaller = marshal } - end -end - -module Item = struct - let cast w : item obj = Object.try_cast w "GtkItem" - external coerce : [>`item] obj -> item obj = "%identity" - external select : [>`item] obj -> unit = "ml_gtk_item_select" - external deselect : [>`item] obj -> unit = "ml_gtk_item_deselect" - external toggle : [>`item] obj -> unit = "ml_gtk_item_toggle" - module Signals = struct - open GtkSignal - let select : ([>`item],_) t = - { name = "select"; marshaller = marshal_unit } - let deselect : ([>`item],_) t = - { name = "deselect"; marshaller = marshal_unit } - let toggle : ([>`item],_) t = - { name = "toggle"; marshaller = marshal_unit } - end -end - - -module DnD = struct - external dest_set : - [>`widget] obj -> flags:dest_defaults list -> - targets:target_entry array -> actions:Gdk.Tags.drag_action list -> unit - = "ml_gtk_drag_dest_set" - external dest_unset : [>`widget] obj -> unit - = "ml_gtk_drag_dest_unset" - external finish : - Gdk.drag_context -> success:bool -> del:bool -> time:int -> unit - = "ml_gtk_drag_finish" - external get_data : - [>`widget] obj -> Gdk.drag_context -> target:Gdk.atom -> time:int -> unit - = "ml_gtk_drag_get_data" - external get_source_widget : Gdk.drag_context -> widget obj - = "ml_gtk_drag_get_source_widget" - external highlight : [>`widget] obj -> unit = "ml_gtk_drag_highlight" - external unhighlight : [>`widget] obj -> unit = "ml_gtk_drag_unhighlight" - external set_icon_widget : - Gdk.drag_context -> [>`widget] obj -> hot_x:int -> hot_y:int -> unit - = "ml_gtk_drag_set_icon_widget" - external set_icon_pixmap : - Gdk.drag_context -> colormap:Gdk.colormap -> - Gdk.pixmap -> ?mask:Gdk.bitmap -> hot_x:int -> hot_y:int -> unit - = "ml_gtk_drag_set_icon_pixmap_bc" "ml_gtk_drag_set_icon_pixmap" - external set_icon_default : Gdk.drag_context -> unit - = "ml_gtk_drag_set_icon_default" - external set_default_icon : - colormap:Gdk.colormap -> Gdk.pixmap -> - ?mask:Gdk.bitmap -> hot_x:int -> hot_y:int -> unit - = "ml_gtk_drag_set_default_icon" - external source_set : - [>`widget] obj -> ?modi:Gdk.Tags.modifier list -> - targets:target_entry array -> actions:Gdk.Tags.drag_action list -> unit - = "ml_gtk_drag_source_set" - external source_set_icon : - [>`widget] obj -> colormap:Gdk.colormap -> - Gdk.pixmap -> ?mask:Gdk.bitmap -> unit - = "ml_gtk_drag_source_set_icon" - external source_unset : [>`widget] obj -> unit - = "ml_gtk_drag_source_unset" -(* external dest_handle_event : [>`widget] -> *) -end - diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkBin.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkBin.ml deleted file mode 100644 index ab4cc7e85..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkBin.ml +++ /dev/null @@ -1,170 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open Tags -open GtkBase - -module Alignment = struct - let cast w : alignment obj = Object.try_cast w "GtkAlignment" - external create : - x:clampf -> y:clampf -> xscale:clampf -> yscale:clampf -> alignment obj - = "ml_gtk_alignment_new" - let create ?(x=0.5) ?(y=0.5) ?(xscale=1.) ?(yscale=1.) () = - create ~x ~y ~xscale ~yscale - external set : - ?x:clampf -> ?y:clampf -> ?xscale:clampf -> ?yscale:clampf -> - [>`alignment] obj -> unit - = "ml_gtk_alignment_set" -end - -module EventBox = struct - let cast w : event_box obj = Object.try_cast w "GtkEventBox" - external create : unit -> event_box obj = "ml_gtk_event_box_new" -end - -module Frame = struct - let cast w : frame obj = Object.try_cast w "GtkFrame" - external coerce : [>`frame] obj -> frame obj = "%identity" - external create : string -> frame obj = "ml_gtk_frame_new" - external set_label : [>`frame] obj -> string -> unit - = "ml_gtk_frame_set_label" - external set_label_align : [>`frame] obj -> x:clampf -> y:clampf -> unit - = "ml_gtk_frame_set_label_align" - external set_shadow_type : [>`frame] obj -> shadow_type -> unit - = "ml_gtk_frame_set_shadow_type" - external get_label_xalign : [>`frame] obj -> float - = "ml_gtk_frame_get_label_xalign" - external get_label_yalign : [>`frame] obj -> float - = "ml_gtk_frame_get_label_yalign" - let set_label_align' ?x ?y w = - set_label_align w - ~x:(may_default get_label_xalign w ~opt:x) - ~y:(may_default get_label_yalign w ~opt:y) - let set ?label ?label_xalign ?label_yalign ?shadow_type w = - may label ~f:(set_label w); - if label_xalign <> None || label_yalign <> None then - set_label_align' w ?x:label_xalign ?y:label_yalign; - may shadow_type ~f:(set_shadow_type w) -end - -module AspectFrame = struct - let cast w : aspect_frame obj = Object.try_cast w "GtkAspectFrame" - external create : - label:string -> xalign:clampf -> - yalign:clampf -> ratio:float -> obey_child:bool -> aspect_frame obj - = "ml_gtk_aspect_frame_new" - let create ?(label="") ?(xalign=0.5) ?(yalign=0.5) - ?(ratio=1.0) ?(obey_child=true) () = - create ~label ~xalign ~yalign ~ratio ~obey_child - external set : - [>`aspect] obj -> - xalign:clampf -> yalign:clampf -> ratio:float -> obey_child:bool -> unit - = "ml_gtk_aspect_frame_set" - external get_xalign : [>`aspect] obj -> clampf - = "ml_gtk_aspect_frame_get_xalign" - external get_yalign : [>`aspect] obj -> clampf - = "ml_gtk_aspect_frame_get_yalign" - external get_ratio : [>`aspect] obj -> clampf - = "ml_gtk_aspect_frame_get_ratio" - external get_obey_child : [>`aspect] obj -> bool - = "ml_gtk_aspect_frame_get_obey_child" - let set ?xalign ?yalign ?ratio ?obey_child w = - if xalign <> None || yalign <> None || ratio <> None || obey_child <> None - then set w - ~xalign:(may_default get_xalign w ~opt:xalign) - ~yalign:(may_default get_yalign w ~opt:yalign) - ~ratio:(may_default get_ratio w ~opt:ratio) - ~obey_child:(may_default get_obey_child w ~opt:obey_child) -end - -module HandleBox = struct - let cast w : handle_box obj = Object.try_cast w "GtkHandleBox" - external create : unit -> handle_box obj = "ml_gtk_handle_box_new" - external set_shadow_type : [>`handlebox] obj -> shadow_type -> unit = - "ml_gtk_handle_box_set_shadow_type" - external set_handle_position : [>`handlebox] obj -> position -> unit = - "ml_gtk_handle_box_set_handle_position" - external set_snap_edge : [>`handlebox] obj -> position -> unit = - "ml_gtk_handle_box_set_snap_edge" - module Signals = struct - open GtkSignal - let child_attached : ([>`handlebox],_) t = - { name = "child_attached"; marshaller = Widget.Signals.marshal } - let child_detached : ([>`handlebox],_) t = - { name = "child_detached"; marshaller = Widget.Signals.marshal } - end -end - -module Viewport = struct - let cast w : viewport obj = Object.try_cast w "GtkViewport" - external create : - [>`adjustment] optobj -> [>`adjustment] optobj -> viewport obj - = "ml_gtk_viewport_new" - let create ?hadjustment ?vadjustment () = - create (Gpointer.optboxed hadjustment) (Gpointer.optboxed vadjustment) - external get_hadjustment : [>`viewport] obj -> adjustment obj - = "ml_gtk_viewport_get_hadjustment" - external get_vadjustment : [>`viewport] obj -> adjustment obj - = "ml_gtk_viewport_get_vadjustment" - external set_hadjustment : [>`viewport] obj -> [>`adjustment] obj -> unit - = "ml_gtk_viewport_set_hadjustment" - external set_vadjustment : [>`viewport] obj -> [>`adjustment] obj -> unit - = "ml_gtk_viewport_set_vadjustment" - external set_shadow_type : [>`viewport] obj -> shadow_type -> unit - = "ml_gtk_viewport_set_shadow_type" - let set ?hadjustment ?vadjustment ?shadow_type w = - may hadjustment ~f:(set_hadjustment w); - may vadjustment ~f:(set_vadjustment w); - may shadow_type ~f:(set_shadow_type w) -end - -module ScrolledWindow = struct - let cast w : scrolled_window obj = Object.try_cast w "GtkScrolledWindow" - external create : - [>`adjustment] optobj -> [>`adjustment] optobj -> scrolled_window obj - = "ml_gtk_scrolled_window_new" - let create ?hadjustment ?vadjustment () = - create (Gpointer.optboxed hadjustment) (Gpointer.optboxed vadjustment) - external set_hadjustment : [>`scrolled] obj -> [>`adjustment] obj -> unit - = "ml_gtk_scrolled_window_set_hadjustment" - external set_vadjustment : [>`scrolled] obj -> [>`adjustment] obj -> unit - = "ml_gtk_scrolled_window_set_vadjustment" - external get_hadjustment : [>`scrolled] obj -> adjustment obj - = "ml_gtk_scrolled_window_get_hadjustment" - external get_vadjustment : [>`scrolled] obj -> adjustment obj - = "ml_gtk_scrolled_window_get_vadjustment" - external set_policy : [>`scrolled] obj -> policy_type -> policy_type -> unit - = "ml_gtk_scrolled_window_set_policy" - external add_with_viewport : [>`scrolled] obj -> [>`widget] obj -> unit - = "ml_gtk_scrolled_window_add_with_viewport" - external get_hscrollbar_policy : [>`scrolled] obj -> policy_type - = "ml_gtk_scrolled_window_get_hscrollbar_policy" - external get_vscrollbar_policy : [>`scrolled] obj -> policy_type - = "ml_gtk_scrolled_window_get_vscrollbar_policy" - external set_placement : [>`scrolled] obj -> corner_type -> unit - = "ml_gtk_scrolled_window_set_placement" - let set_policy' ?hpolicy ?vpolicy w = - set_policy w - (may_default get_hscrollbar_policy w ~opt:hpolicy) - (may_default get_vscrollbar_policy w ~opt:vpolicy) - let set ?hpolicy ?vpolicy ?placement w = - if hpolicy <> None || vpolicy <> None then - set_policy' w ?hpolicy ?vpolicy; - may placement ~f:(set_placement w) -end - -module Socket = struct - let cast w : socket obj = Object.try_cast w "GtkSocket" - external coerce : [>`socket] obj -> socket obj = "%identity" - external create : unit -> socket obj = "ml_gtk_socket_new" - external steal : [>`socket] obj -> Gdk.xid -> unit = "ml_gtk_socket_steal" -end - -(* -module Invisible = struct - let cast w : socket obj = Object.try_cast w "GtkInvisible" - external coerce : [>`invisible] obj -> invisible obj = "%identity" - external create : unit -> invisible obj = "ml_gtk_invisible_new" -end -*) diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkButton.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkButton.ml deleted file mode 100644 index 6d9ddf500..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkButton.ml +++ /dev/null @@ -1,148 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open Tags -open GtkBase - -module Button = struct - let cast w : button obj = Object.try_cast w "GtkButton" - external coerce : [>`button] obj -> button obj = "%identity" - external create : unit -> button obj = "ml_gtk_button_new" - external create_with_label : string -> button obj - = "ml_gtk_button_new_with_label" - let create ?label () = - match label with None -> create () - | Some x -> create_with_label x - external pressed : [>`button] obj -> unit = "ml_gtk_button_pressed" - external released : [>`button] obj -> unit = "ml_gtk_button_released" - external clicked : [>`button] obj -> unit = "ml_gtk_button_clicked" - external enter : [>`button] obj -> unit = "ml_gtk_button_enter" - external leave : [>`button] obj -> unit = "ml_gtk_button_leave" - module Signals = struct - open GtkSignal - let pressed : ([>`button],_) t = - { name = "pressed"; marshaller = marshal_unit } - let released : ([>`button],_) t = - { name = "released"; marshaller = marshal_unit } - let clicked : ([>`button],_) t = - { name = "clicked"; marshaller = marshal_unit } - let enter : ([>`button],_) t = - { name = "enter"; marshaller = marshal_unit } - let leave : ([>`button],_) t = - { name = "leave"; marshaller = marshal_unit } - end -end - -module ToggleButton = struct - let cast w : toggle_button obj = Object.try_cast w "GtkToggleButton" - external coerce : [>`toggle] obj -> toggle_button obj = "%identity" - external toggle_button_create : unit -> toggle_button obj - = "ml_gtk_toggle_button_new" - external toggle_button_create_with_label : string -> toggle_button obj - = "ml_gtk_toggle_button_new_with_label" - external check_button_create : unit -> toggle_button obj - = "ml_gtk_check_button_new" - external check_button_create_with_label : string -> toggle_button obj - = "ml_gtk_check_button_new_with_label" - let create_toggle ?label () = - match label with None -> toggle_button_create () - | Some label -> toggle_button_create_with_label label - let create_check ?label () = - match label with None -> check_button_create () - | Some label -> check_button_create_with_label label - external set_mode : [>`toggle] obj -> bool -> unit - = "ml_gtk_toggle_button_set_mode" - external set_active : [>`toggle] obj -> bool -> unit - = "ml_gtk_toggle_button_set_active" - let set ?active ?draw_indicator w = - may ~f:(set_mode w) draw_indicator; - may ~f:(set_active w) active - external get_active : [>`toggle] obj -> bool - = "ml_gtk_toggle_button_get_active" - external toggled : [>`toggle] obj -> unit - = "ml_gtk_toggle_button_toggled" - module Signals = struct - open GtkSignal - let toggled : ([>`toggle],_) t = - { name = "toggled"; marshaller = marshal_unit } - end -end - -module RadioButton = struct - let cast w : radio_button obj = Object.try_cast w "GtkRadioButton" - external create : radio_button group -> radio_button obj - = "ml_gtk_radio_button_new" - external create_with_label : radio_button group -> string -> radio_button obj - = "ml_gtk_radio_button_new_with_label" - external set_group : [>`radio] obj -> radio_button group -> unit - = "ml_gtk_radio_button_set_group" - let create ?(group = None) ?label () = - match label with None -> create group - | Some label -> create_with_label group label -end - -module Toolbar = struct - let cast w : toolbar obj = Object.try_cast w "GtkToolbar" - external create : orientation -> style:toolbar_style -> toolbar obj - = "ml_gtk_toolbar_new" - let create dir ?(style=`BOTH) () = create dir ~style - external insert_space : [>`toolbar] obj -> pos:int -> unit - = "ml_gtk_toolbar_insert_space" - let insert_space w ?(pos = -1) () = insert_space w ~pos - external insert_button : - [>`toolbar] obj -> kind:[`BUTTON|`TOGGLEBUTTON|`RADIOBUTTON] -> - text:string -> tooltip:string -> - tooltip_private:string -> - icon:[>`widget] optobj -> pos:int -> button obj - = "ml_gtk_toolbar_insert_element_bc" "ml_gtk_toolbar_insert_element" - let insert_button w ?(kind=`BUTTON) ?(text="") ?(tooltip="") - ?(tooltip_private="") ?icon ?(pos = -1) ?callback () = - let b =insert_button w ~kind ~text ~tooltip ~tooltip_private ~pos - ~icon:(Gpointer.optboxed icon) - in - match callback with - | None -> b - | Some c -> GtkSignal.connect b ~sgn:Button.Signals.clicked - ~callback: c; b - external insert_widget : - [>`toolbar] obj -> [>`widget] obj -> - tooltip:string -> tooltip_private:string -> pos:int -> unit - = "ml_gtk_toolbar_insert_widget" - let insert_widget w ?(tooltip="") ?(tooltip_private="") ?(pos = -1) w' = - insert_widget w w' ~tooltip ~tooltip_private ~pos - external set_orientation : [>`toolbar] obj -> orientation -> unit = - "ml_gtk_toolbar_set_orientation" - external set_style : [>`toolbar] obj -> toolbar_style -> unit = - "ml_gtk_toolbar_set_style" - external set_space_size : [>`toolbar] obj -> int -> unit = - "ml_gtk_toolbar_set_space_size" - external set_space_style : [>`toolbar] obj -> [ `EMPTY|`LINE ] -> unit = - "ml_gtk_toolbar_set_space_style" - external set_tooltips : [>`toolbar] obj -> bool -> unit = - "ml_gtk_toolbar_set_tooltips" - external set_button_relief : [>`toolbar] obj -> relief_style -> unit = - "ml_gtk_toolbar_set_button_relief" - external get_button_relief : [>`toolbar] obj -> relief_style = - "ml_gtk_toolbar_get_button_relief" - let set ?orientation ?style ?space_size - ?space_style ?tooltips ?button_relief w = - may orientation ~f:(set_orientation w); - may style ~f:(set_style w); - may space_size ~f:(set_space_size w); - may space_style ~f:(set_space_style w); - may tooltips ~f:(set_tooltips w); - may button_relief ~f:(set_button_relief w) - module Signals = struct - open GtkSignal - external val_orientation : int -> orientation = "ml_Val_orientation" - external val_toolbar_style : int -> toolbar_style - = "ml_Val_toolbar_style" - let orientation_changed : ([>`toolbar],_) t = - let marshal f = marshal_int (fun x -> f (val_orientation x)) in - { name = "orientation_changed"; marshaller = marshal } - let style_changed : ([>`toolbar],_) t = - let marshal f = marshal_int (fun x -> f (val_toolbar_style x)) in - { name = "style_changed"; marshaller = marshal } - end -end diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkData.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkData.ml deleted file mode 100644 index 5b7f90ec0..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkData.ml +++ /dev/null @@ -1,148 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open Tags - -module AccelGroup = struct - external create : unit -> accel_group = "ml_gtk_accel_group_new" - external activate : - accel_group -> key:Gdk.keysym -> ?modi:Gdk.Tags.modifier list -> bool - = "ml_gtk_accel_group_activate" - external groups_activate : - 'a obj -> key:Gdk.keysym -> ?modi:Gdk.Tags.modifier list -> bool - = "ml_gtk_accel_groups_activate" - external attach : accel_group -> 'a obj -> unit - = "ml_gtk_accel_group_attach" - external detach : accel_group -> 'a obj -> unit - = "ml_gtk_accel_group_detach" - external lock : accel_group -> unit - = "ml_gtk_accel_group_lock" - external unlock : accel_group -> unit - = "ml_gtk_accel_group_unlock" - external lock_entry : - accel_group -> key:Gdk.keysym -> ?modi:Gdk.Tags.modifier list -> bool - = "ml_gtk_accel_group_lock_entry" - external add : - accel_group -> key:Gdk.keysym -> ?modi:Gdk.Tags.modifier list -> - ?flags:accel_flag list -> - call:'a obj -> sgn:('a,unit->unit) GtkSignal.t -> unit - = "ml_gtk_accel_group_add_bc" "ml_gtk_accel_group_add" - external remove : - accel_group -> - key:Gdk.keysym -> ?modi:Gdk.Tags.modifier list -> call:'a obj -> unit - = "ml_gtk_accel_group_remove" - external valid : key:Gdk.keysym -> ?modi:Gdk.Tags.modifier list -> bool - = "ml_gtk_accelerator_valid" - external set_default_mod_mask : Gdk.Tags.modifier list option -> unit - = "ml_gtk_accelerator_set_default_mod_mask" -end - -module Style = struct - external create : unit -> style = "ml_gtk_style_new" - external copy : style -> style = "ml_gtk_style_copy" - external attach : style -> Gdk.window -> style = "ml_gtk_style_attach" - external detach : style -> unit = "ml_gtk_style_detach" - external set_background : style -> Gdk.window -> state_type -> unit - = "ml_gtk_style_set_background" - external draw_hline : - style -> Gdk.window -> state_type -> x:int -> x:int -> y:int -> unit - = "ml_gtk_draw_hline_bc" "ml_gtk_draw_hline" - external draw_vline : - style -> Gdk.window -> state_type -> y:int -> y:int -> x:int -> unit - = "ml_gtk_draw_vline_bc" "ml_gtk_draw_vline" - external get_bg : style -> state:state_type -> Gdk.Color.t - = "ml_gtk_style_get_bg" - external set_bg : style -> state:state_type -> color:Gdk.Color.t -> unit - = "ml_gtk_style_set_bg" - external get_dark_gc : style -> state:state_type -> Gdk.gc - = "ml_gtk_style_get_dark_gc" - external get_light_gc : style -> state:state_type -> Gdk.gc - = "ml_gtk_style_get_light_gc" - external get_colormap : style -> Gdk.colormap = "ml_gtk_style_get_colormap" - external get_font : style -> Gdk.font = "ml_gtk_style_get_font" - external set_font : style -> Gdk.font -> unit = "ml_gtk_style_set_font" -(* - let set st ?:background ?:font = - let may_set f = may fun:(f st) in - may_set set_background background; - may_set set_font font -*) -end - -module Data = struct - module Signals = struct - open GtkSignal - let disconnect : ([>`data],_) t = - { name = "disconnect"; marshaller = marshal_unit } - end -end - -module Adjustment = struct - external create : - value:float -> lower:float -> upper:float -> - step_incr:float -> page_incr:float -> page_size:float -> adjustment obj - = "ml_gtk_adjustment_new_bc" "ml_gtk_adjustment_new" - external set_value : [>`adjustment] obj -> float -> unit - = "ml_gtk_adjustment_set_value" - external clamp_page : - [>`adjustment] obj -> lower:float -> upper:float -> unit - = "ml_gtk_adjustment_clamp_page" - external get_lower : [>`adjustment] obj -> float - = "ml_gtk_adjustment_get_lower" - external get_upper : [>`adjustment] obj -> float - = "ml_gtk_adjustment_get_upper" - external get_value : [>`adjustment] obj -> float - = "ml_gtk_adjustment_get_value" - external get_step_increment : [>`adjustment] obj -> float - = "ml_gtk_adjustment_get_step_increment" - external get_page_increment : [>`adjustment] obj -> float - = "ml_gtk_adjustment_get_page_increment" - external get_page_size : [>`adjustment] obj -> float - = "ml_gtk_adjustment_get_page_size" - module Signals = struct - open GtkSignal - let changed : ([>`adjustment],_) t = - { name = "changed"; marshaller = marshal_unit } - let value_changed : ([>`adjustment],_) t = - { name = "value_changed"; marshaller = marshal_unit } - end -end - -module Tooltips = struct - external create : unit -> tooltips obj = "ml_gtk_tooltips_new" - external enable : [>`tooltips] obj -> unit = "ml_gtk_tooltips_enable" - external disable : [>`tooltips] obj -> unit = "ml_gtk_tooltips_disable" - external set_delay : [>`tooltips] obj -> int -> unit - = "ml_gtk_tooltips_set_delay" - external set_tip : - [>`tooltips] obj -> - [>`widget] obj -> ?text:string -> ?privat:string -> unit - = "ml_gtk_tooltips_set_tip" - external set_colors : - [>`tooltips] obj -> - ?foreground:Gdk.Color.t -> ?background:Gdk.Color.t -> unit -> unit - = "ml_gtk_tooltips_set_colors" - let set ?delay ?foreground ?background tt = - may ~f:(set_delay tt) delay; - if foreground <> None || background <> None then - set_colors tt ?foreground ?background () -end - - -module Selection = struct - type t - external selection : t -> Gdk.atom - = "ml_gtk_selection_data_selection" - external target : t -> Gdk.atom - = "ml_gtk_selection_data_target" - external seltype : t -> Gdk.atom - = "ml_gtk_selection_data_type" - external format : t -> int - = "ml_gtk_selection_data_format" - external get_data : t -> string - = "ml_gtk_selection_data_get_data" (* May raise Gpointer.null *) - external set : - t -> typ:Gdk.atom -> format:int -> ?data:string -> unit - = "ml_gtk_selection_data_set" -end diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkEdit.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkEdit.ml deleted file mode 100644 index bef2fedb9..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkEdit.ml +++ /dev/null @@ -1,223 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open Tags -open GtkBase - -module Editable = struct - let cast w : editable obj = Object.try_cast w "GtkEditable" - external coerce : [>`editable] obj -> editable obj = "%identity" - external select_region : [>`editable] obj -> start:int -> stop:int -> unit - = "ml_gtk_editable_select_region" - external insert_text : [>`editable] obj -> string -> pos:int -> int - = "ml_gtk_editable_insert_text" - external delete_text : [>`editable] obj -> start:int -> stop:int -> unit - = "ml_gtk_editable_delete_text" - external get_chars : [>`editable] obj -> start:int -> stop:int -> string - = "ml_gtk_editable_get_chars" - external cut_clipboard : [>`editable] obj -> unit - = "ml_gtk_editable_cut_clipboard" - external copy_clipboard : [>`editable] obj -> unit - = "ml_gtk_editable_copy_clipboard" - external paste_clipboard : [>`editable] obj -> unit - = "ml_gtk_editable_paste_clipboard" - external claim_selection : - [>`editable] obj -> claim:bool -> time:int -> unit - = "ml_gtk_editable_claim_selection" - external delete_selection : [>`editable] obj -> unit - = "ml_gtk_editable_delete_selection" - external changed : [>`editable] obj -> unit = "ml_gtk_editable_changed" - external set_position : [>`editable] obj -> int -> unit - = "ml_gtk_editable_set_position" - external get_position : [>`editable] obj -> int - = "ml_gtk_editable_get_position" - external set_editable : [>`editable] obj -> bool -> unit - = "ml_gtk_editable_set_editable" - external selection_start_pos : [>`editable] obj -> int - = "ml_gtk_editable_selection_start_pos" - external selection_end_pos : [>`editable] obj -> int - = "ml_gtk_editable_selection_end_pos" - external has_selection : [>`editable] obj -> bool - = "ml_gtk_editable_has_selection" - module Signals = struct - open GtkArgv - open GtkSignal - let activate : ([>`editable],_) t = - { name = "activate"; marshaller = marshal_unit } - let changed : ([>`editable],_) t = - { name = "changed"; marshaller = marshal_unit } - let marshal_insert f argv = function - | STRING _ :: INT len :: POINTER(Some pos) :: _ -> - (* XXX These two accesses are implementation-dependent *) - let s = string_at_pointer (get_pointer argv ~pos:0) ~len - and pos = int_at_pointer pos in - f s ~pos - | _ -> invalid_arg "GtkEdit.Editable.Signals.marshal_insert" - let insert_text : ([>`editable],_) t = - { name = "insert_text"; marshaller = marshal_insert } - let marshal_delete f _ = function - | INT start :: INT stop :: _ -> - f ~start ~stop - | _ -> invalid_arg "GtkEdit.Editable.Signals.marshal_delete" - let delete_text : ([>`editable],_) t = - { name = "delete_text"; marshaller = marshal_delete } - end -end - -module Entry = struct - let cast w : entry obj = Object.try_cast w "GtkEntry" - external coerce : [>`entry] obj -> entry obj = "%identity" - external create : unit -> entry obj = "ml_gtk_entry_new" - external create_with_max_length : int -> entry obj - = "ml_gtk_entry_new_with_max_length" - let create ?max_length () = - match max_length with None -> create () - | Some len -> create_with_max_length len - external set_text : [>`entry] obj -> string -> unit - = "ml_gtk_entry_set_text" - external append_text : [>`entry] obj -> string -> unit - = "ml_gtk_entry_append_text" - external prepend_text : [>`entry] obj -> string -> unit - = "ml_gtk_entry_prepend_text" - external get_text : [>`entry] obj -> string = "ml_gtk_entry_get_text" - external set_visibility : [>`entry] obj -> bool -> unit - = "ml_gtk_entry_set_visibility" - external set_max_length : [>`entry] obj -> int -> unit - = "ml_gtk_entry_set_max_length" - let set ?text ?visibility ?max_length w = - let may_set f = may ~f:(f w) in - may_set set_text text; - may_set set_visibility visibility; - may_set set_max_length max_length - external text_length : [>`entry] obj -> int - = "ml_GtkEntry_text_length" -end - -module SpinButton = struct - let cast w : spin_button obj = Object.try_cast w "GtkSpinButton" - external create : - [>`adjustment] optobj -> rate:float -> digits:int -> spin_button obj - = "ml_gtk_spin_button_new" - let create ?adjustment ?(rate=0.5) ?(digits=0) () = - create (Gpointer.optboxed adjustment) ~rate ~digits - external configure : - [>`spinbutton] obj -> adjustment:[>`adjustment] obj -> - rate:float -> digits:int -> unit - = "ml_gtk_spin_button_configure" - external set_adjustment : [>`spinbutton] obj -> [>`adjustment] obj -> unit - = "ml_gtk_spin_button_set_adjustment" - external get_adjustment : [>`spinbutton] obj -> adjustment obj - = "ml_gtk_spin_button_get_adjustment" - external set_digits : [>`spinbutton] obj -> int -> unit - = "ml_gtk_spin_button_set_digits" - external get_value : [>`spinbutton] obj -> float - = "ml_gtk_spin_button_get_value_as_float" - let get_value_as_int w = truncate (get_value w +. 0.5) - external set_value : [>`spinbutton] obj -> float -> unit - = "ml_gtk_spin_button_set_value" - external set_update_policy : - [>`spinbutton] obj -> [`ALWAYS|`IF_VALID] -> unit - = "ml_gtk_spin_button_set_update_policy" - external set_numeric : [>`spinbutton] obj -> bool -> unit - = "ml_gtk_spin_button_set_numeric" - external spin : [>`spinbutton] obj -> spin_type -> unit - = "ml_gtk_spin_button_spin" - external set_wrap : [>`spinbutton] obj -> bool -> unit - = "ml_gtk_spin_button_set_wrap" - external set_shadow_type : [>`spinbutton] obj -> shadow_type -> unit - = "ml_gtk_spin_button_set_shadow_type" - external set_snap_to_ticks : [>`spinbutton] obj -> bool -> unit - = "ml_gtk_spin_button_set_snap_to_ticks" - external update : [>`spinbutton] obj -> unit - = "ml_gtk_spin_button_update" - let set ?adjustment ?digits ?value ?update_policy - ?numeric ?wrap ?shadow_type ?snap_to_ticks w = - let may_set f = may ~f:(f w) in - may_set set_adjustment adjustment; - may_set set_digits digits; - may_set set_value value; - may_set set_update_policy update_policy; - may_set set_numeric numeric; - may_set set_wrap wrap; - may_set set_shadow_type shadow_type; - may_set set_snap_to_ticks snap_to_ticks -end - -module Text = struct - let cast w : text obj = Object.try_cast w "GtkText" - external create : [>`adjustment] optobj -> [>`adjustment] optobj -> text obj - = "ml_gtk_text_new" - let create ?hadjustment ?vadjustment () = - create (Gpointer.optboxed hadjustment) (Gpointer.optboxed vadjustment) - external set_word_wrap : [>`text] obj -> bool -> unit - = "ml_gtk_text_set_word_wrap" - external set_line_wrap : [>`text] obj -> bool -> unit - = "ml_gtk_text_set_line_wrap" - external set_adjustment : - [>`text] obj -> ?horizontal:[>`adjustment] obj -> - ?vertical:[>`adjustment] obj -> unit -> unit - = "ml_gtk_text_set_adjustments" - external get_hadjustment : [>`text] obj -> adjustment obj - = "ml_gtk_text_get_hadj" - external get_vadjustment : [>`text] obj -> adjustment obj - = "ml_gtk_text_get_vadj" - external set_point : [>`text] obj -> int -> unit - = "ml_gtk_text_set_point" - external get_point : [>`text] obj -> int = "ml_gtk_text_get_point" - external get_length : [>`text] obj -> int = "ml_gtk_text_get_length" - external freeze : [>`text] obj -> unit = "ml_gtk_text_freeze" - external thaw : [>`text] obj -> unit = "ml_gtk_text_thaw" - external insert : - [>`text] obj -> ?font:Gdk.font -> ?foreground:Gdk.Color.t -> - ?background:Gdk.Color.t -> string -> unit - = "ml_gtk_text_insert" - let set ?hadjustment ?vadjustment ?word_wrap w = - if hadjustment <> None || vadjustment <> None then - set_adjustment w ?horizontal: hadjustment ?vertical: vadjustment (); - may word_wrap ~f:(set_word_wrap w) -end - -module Combo = struct - let cast w : combo obj = Object.try_cast w "GtkCombo" - external create : unit -> combo obj = "ml_gtk_combo_new" - external set_value_in_list : - [>`combo] obj -> ?required:bool -> ?ok_if_empty:bool -> unit -> unit - = "ml_gtk_combo_set_value_in_list" - external set_use_arrows : [>`combo] obj -> bool -> unit - = "ml_gtk_combo_set_use_arrows" - external set_use_arrows_always : [>`combo] obj -> bool -> unit - = "ml_gtk_combo_set_use_arrows_always" - external set_case_sensitive : [>`combo] obj -> bool -> unit - = "ml_gtk_combo_set_case_sensitive" - external set_item_string : [>`combo] obj -> [>`item] obj -> string -> unit - = "ml_gtk_combo_set_item_string" - external entry : [>`combo] obj -> entry obj= "ml_gtk_combo_entry" - external list : [>`combo] obj -> liste obj= "ml_gtk_combo_list" - let set_popdown_strings combo strings = - GtkList.Liste.clear_items (list combo) ~start:0 ~stop:(-1); - List.iter strings ~f: - begin fun s -> - let li = GtkList.ListItem.create_with_label s in - Widget.show li; - Container.add (list combo) li - end - let set_use_arrows' w (mode : [`NEVER|`DEFAULT|`ALWAYS]) = - let def,always = - match mode with - `NEVER -> false, false - | `DEFAULT -> true, false - | `ALWAYS -> true, true - in - set_use_arrows w def; - set_use_arrows_always w always - let set ?popdown_strings ?use_arrows - ?case_sensitive ?value_in_list ?ok_if_empty w = - may popdown_strings ~f:(set_popdown_strings w); - may use_arrows ~f:(set_use_arrows' w); - may case_sensitive ~f:(set_case_sensitive w); - if value_in_list <> None || ok_if_empty <> None then - set_value_in_list w ?required:value_in_list ?ok_if_empty () - external disable_activate : [>`combo] obj -> unit - = "ml_gtk_combo_disable_activate" -end diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkInit.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkInit.ml deleted file mode 100644 index 5ce40db5f..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkInit.ml +++ /dev/null @@ -1,5 +0,0 @@ -(* $Id$ *) - -(* Does the initialization for toplevels *) - -let locale = GtkMain.Main.init () diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkList.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkList.ml deleted file mode 100644 index 4d2ae0951..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkList.ml +++ /dev/null @@ -1,294 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open Tags -open GtkBase - -module ListItem = struct - let cast w : list_item obj = Object.try_cast w "GtkListItem" - external create : unit -> list_item obj = "ml_gtk_list_item_new" - external create_with_label : string -> list_item obj - = "ml_gtk_list_item_new_with_label" - let create ?label () = - match label with None -> create () - | Some label -> create_with_label label -end - -module Liste = struct - let cast w : liste obj = Object.try_cast w "GtkList" - external create : unit -> liste obj = "ml_gtk_list_new" - external insert_item : - [>`list] obj -> [>`listitem] obj -> pos:int -> unit - = "ml_gtk_list_insert_item" - let insert_items l wl ~pos = - let wl = if pos < 0 then wl else List.rev wl in - List.iter wl ~f:(insert_item l ~pos) - let append_items l = insert_items l ~pos:(-1) - let prepend_items l = insert_items l ~pos:0 - external clear_items : [>`list] obj -> start:int -> stop:int -> unit = - "ml_gtk_list_clear_items" - external select_item : [>`list] obj -> pos:int -> unit - = "ml_gtk_list_select_item" - external unselect_item : [>`list] obj -> pos:int -> unit - = "ml_gtk_list_unselect_item" - external select_child : [>`list] obj -> [>`listitem] obj -> unit - = "ml_gtk_list_select_child" - external unselect_child : [>`list] obj -> [>`listitem] obj -> unit - = "ml_gtk_list_unselect_child" - external child_position : [>`list] obj -> [>`listitem] obj -> int - = "ml_gtk_list_child_position" - external set_selection_mode : [>`list] obj -> selection_mode -> unit - = "ml_gtk_list_set_selection_mode" - module Signals = struct - open GtkSignal - let selection_changed : ([>`list],_) t = - { name = "selection_changed"; marshaller = marshal_unit } - let select_child : ([>`list],_) t = - { name = "select_child"; marshaller = Widget.Signals.marshal } - let unselect_child : ([>`list],_) t = - { name = "unselect_child"; marshaller = Widget.Signals.marshal } - end -end - -module CList = struct - let cast w : clist obj = Object.try_cast w "GtkCList" - external create : cols:int -> clist obj = "ml_gtk_clist_new" - external create_with_titles : string array -> clist obj - = "ml_gtk_clist_new_with_titles" - external get_rows : [>`clist] obj -> int = "ml_gtk_clist_get_rows" - external get_columns : [>`clist] obj -> int = "ml_gtk_clist_get_columns" - external get_focus_row : [>`clist] obj -> int - = "ml_gtk_clist_get_focus_row" - external set_hadjustment : [>`clist] obj -> [>`adjustment] obj -> unit - = "ml_gtk_clist_set_hadjustment" - external set_vadjustment : [>`clist] obj -> [>`adjustment] obj -> unit - = "ml_gtk_clist_set_vadjustment" - external get_hadjustment : [>`clist] obj -> adjustment obj - = "ml_gtk_clist_get_hadjustment" - external get_vadjustment : [>`clist] obj -> adjustment obj - = "ml_gtk_clist_get_vadjustment" - external set_shadow_type : [>`clist] obj -> shadow_type -> unit - = "ml_gtk_clist_set_shadow_type" - external set_selection_mode : [>`clist] obj -> selection_mode -> unit - = "ml_gtk_clist_set_selection_mode" - external set_reorderable : [>`clist] obj -> bool -> unit - = "ml_gtk_clist_set_reorderable" - external set_use_drag_icons : [>`clist] obj -> bool -> unit - = "ml_gtk_clist_set_use_drag_icons" - external set_button_actions : - [>`clist] obj -> int -> button_action list -> unit - = "ml_gtk_clist_set_button_actions" - external freeze : [>`clist] obj -> unit = "ml_gtk_clist_freeze" - external thaw : [>`clist] obj -> unit = "ml_gtk_clist_thaw" - external column_titles_show : [>`clist] obj -> unit - = "ml_gtk_clist_column_titles_show" - external column_titles_hide : [>`clist] obj -> unit - = "ml_gtk_clist_column_titles_hide" - external column_title_active : [>`clist] obj -> int -> unit - = "ml_gtk_clist_column_title_active" - external column_title_passive : [>`clist] obj -> int -> unit - = "ml_gtk_clist_column_title_passive" - external column_titles_active : [>`clist] obj -> unit - = "ml_gtk_clist_column_titles_active" - external column_titles_passive : [>`clist] obj -> unit - = "ml_gtk_clist_column_titles_passive" - external set_column_title : [>`clist] obj -> int -> string -> unit - = "ml_gtk_clist_set_column_title" - external get_column_title : [>`clist] obj -> int -> string - = "ml_gtk_clist_get_column_title" - external set_column_widget : [>`clist] obj -> int -> [>`widget] obj -> unit - = "ml_gtk_clist_set_column_widget" - external get_column_widget : [>`clist] obj -> int -> widget obj - = "ml_gtk_clist_get_column_widget" - external set_column_justification : - [>`clist] obj -> int -> justification -> unit - = "ml_gtk_clist_set_column_justification" - external set_column_visibility : [>`clist] obj -> int -> bool -> unit - = "ml_gtk_clist_set_column_visibility" - external set_column_resizeable : [>`clist] obj -> int -> bool -> unit - = "ml_gtk_clist_set_column_resizeable" - external set_column_auto_resize : [>`clist] obj -> int -> bool -> unit - = "ml_gtk_clist_set_column_auto_resize" - external columns_autosize : [>`clist] obj -> unit - = "ml_gtk_clist_columns_autosize" - external optimal_column_width : [>`clist] obj -> int -> int - = "ml_gtk_clist_optimal_column_width" - external set_column_width : [>`clist] obj -> int -> int -> unit - = "ml_gtk_clist_set_column_width" - external set_column_min_width : [>`clist] obj -> int -> int -> unit - = "ml_gtk_clist_set_column_min_width" - external set_column_max_width : [>`clist] obj -> int -> int -> unit - = "ml_gtk_clist_set_column_max_width" - external set_row_height : [>`clist] obj -> int -> unit - = "ml_gtk_clist_set_row_height" - external moveto : - [>`clist] obj -> - int -> int -> row_align:clampf -> col_align:clampf -> unit - = "ml_gtk_clist_moveto" - external row_is_visible : [>`clist] obj -> int -> visibility - = "ml_gtk_clist_row_is_visible" - external get_cell_type : [>`clist] obj -> int -> int -> cell_type - = "ml_gtk_clist_get_cell_type" - external set_text : [>`clist] obj -> int -> int -> string -> unit - = "ml_gtk_clist_set_text" - external get_text : [>`clist] obj -> int -> int -> string - = "ml_gtk_clist_get_text" - external set_pixmap : - [>`clist] obj -> - int -> int -> Gdk.pixmap -> Gdk.bitmap Gpointer.optboxed -> unit - = "ml_gtk_clist_set_pixmap" - external get_pixmap : - [>`clist] obj -> int -> int -> Gdk.pixmap option * Gdk.bitmap option - = "ml_gtk_clist_get_pixmap" - external set_pixtext : - [>`clist] obj -> int -> int -> - string -> int -> Gdk.pixmap -> Gdk.bitmap Gpointer.optboxed -> unit - = "ml_gtk_clist_set_pixtext_bc" "ml_gtk_clist_set_pixtext" - external set_foreground : - [>`clist] obj -> row:int -> Gdk.Color.t Gpointer.optboxed -> unit - = "ml_gtk_clist_set_foreground" - external set_background : - [>`clist] obj -> row:int -> Gdk.Color.t Gpointer.optboxed -> unit - = "ml_gtk_clist_set_background" - external get_cell_style : [>`clist] obj -> int -> int -> Gtk.style - = "ml_gtk_clist_get_cell_style" - external set_cell_style : [>`clist] obj -> int -> int -> Gtk.style -> unit - = "ml_gtk_clist_set_cell_style" - external get_row_style : [>`clist] obj -> row:int -> Gtk.style - = "ml_gtk_clist_get_row_style" - external set_row_style : [>`clist] obj -> row:int -> Gtk.style -> unit - = "ml_gtk_clist_set_row_style" - external set_selectable : [>`clist] obj -> row:int -> bool -> unit - = "ml_gtk_clist_set_selectable" - external get_selectable : [>`clist] obj -> row:int -> bool - = "ml_gtk_clist_get_selectable" - external set_shift : - [>`clist] obj -> int -> int -> vertical:int -> horizontal:int -> unit - = "ml_gtk_clist_set_shift" - external insert : [>`clist] obj -> row:int -> Gpointer.optstring array -> int - = "ml_gtk_clist_insert" - let insert w ~row texts = - let len = get_columns w in - if List.length texts > len then invalid_arg "CList.insert"; - let arr = Array.create (get_columns w) None in - List.fold_left texts ~init:0 - ~f:(fun pos text -> arr.(pos) <- text; pos+1); - let r = insert w ~row (Array.map ~f:Gpointer.optstring arr) in - if r = -1 then invalid_arg "GtkCList::insert"; - r - external remove : [>`clist] obj -> row:int -> unit - = "ml_gtk_clist_remove" - external set_row_data : [>`clist] obj -> row:int -> Obj.t -> unit - = "ml_gtk_clist_set_row_data" - external get_row_data : [>`clist] obj -> row:int -> Obj.t - = "ml_gtk_clist_get_row_data" - external select : [>`clist] obj -> int -> int -> unit - = "ml_gtk_clist_select_row" - external unselect : [>`clist] obj -> int -> int -> unit - = "ml_gtk_clist_unselect_row" - external clear : [>`clist] obj -> unit = "ml_gtk_clist_clear" - external get_row_column : [>`clist] obj -> x:int -> y:int -> int * int - = "ml_gtk_clist_get_selection_info" - external select_all : [>`clist] obj -> unit = "ml_gtk_clist_select_all" - external unselect_all : [>`clist] obj -> unit = "ml_gtk_clist_unselect_all" - external swap_rows : [>`clist] obj -> int -> int -> unit - = "ml_gtk_clist_swap_rows" - external row_move : [>`clist] obj -> int -> dst:int -> unit - = "ml_gtk_clist_row_move" - external set_sort_column : [>`clist] obj -> int -> unit - = "ml_gtk_clist_set_sort_column" - external set_sort_type : [>`clist] obj -> sort_type -> unit - = "ml_gtk_clist_set_sort_type" - external sort : [>`clist] obj -> unit - = "ml_gtk_clist_sort" - external set_auto_sort : [>`clist] obj -> bool -> unit - = "ml_gtk_clist_set_auto_sort" - let set_titles_show w = function - true -> column_titles_show w - | false -> column_titles_hide w - let set_titles_active w = function - true -> column_titles_active w - | false -> column_titles_passive w - let set ?hadjustment ?vadjustment ?shadow_type - ?(button_actions=[]) ?selection_mode ?reorderable - ?use_drag_icons ?row_height ?titles_show ?titles_active w = - let may_set f param = may param ~f:(f w) in - may_set set_hadjustment hadjustment; - may_set set_vadjustment vadjustment; - may_set set_shadow_type shadow_type; - List.iter button_actions ~f:(fun (n,act) -> set_button_actions w n act); - may_set set_selection_mode selection_mode; - may_set set_reorderable reorderable; - may_set set_use_drag_icons use_drag_icons; - may_set set_row_height row_height; - may_set set_titles_show titles_show; - may_set set_titles_active titles_active - let set_sort w ?auto ?column ?dir:sort_type () = - may auto ~f:(set_auto_sort w); - may column ~f:(set_sort_column w); - may sort_type ~f:(set_sort_type w) - let set_cell w ?text ?pixmap ?mask ?(spacing=0) ?style row col = - begin match text, pixmap with - | Some text, None -> - set_text w row col text - | None, Some pm -> - set_pixmap w row col pm (Gpointer.optboxed mask) - | Some text, Some pm -> - set_pixtext w row col text spacing pm (Gpointer.optboxed mask) - | _ -> () - end; - may style ~f:(set_cell_style w row col) - let set_column w ?widget ?title ?title_active ?justification - ?visibility ?resizeable ?auto_resize ?width ?min_width ?max_width - col = - let may_set f param = may param ~f:(f w col) in - may_set set_column_widget widget; - may_set set_column_title title; - may title_active - ~f:(fun active -> if active then column_title_active w col - else column_title_passive w col); - may_set set_column_justification justification; - may_set set_column_visibility visibility; - may_set set_column_resizeable resizeable; - may_set set_column_auto_resize auto_resize; - may_set set_column_width width; - may_set set_column_min_width min_width; - may_set set_column_max_width max_width - let set_row w ?foreground ?background ?selectable ?style row = - let may_set f = may ~f:(f w ~row) in - may_set set_foreground foreground; - may_set set_background background; - may_set set_selectable selectable; - may_set set_row_style style - module Signals = struct - open GtkArgv - open GtkSignal - let marshal_select f argv = function - | INT row :: INT column :: POINTER p :: _ -> - let event : GdkEvent.Button.t option = - may_map ~f:GdkEvent.unsafe_copy p - in - f ~row ~column ~event - | _ -> invalid_arg "GtkList.CList.Signals.marshal_select" - let select_row : ([>`clist],_) t = - { name = "select_row"; marshaller = marshal_select } - let unselect_row : ([>`clist],_) t = - { name = "unselect_row"; marshaller = marshal_select } - let click_column : ([>`clist],_) t = - { name = "click_column"; marshaller = marshal_int } - external val_scroll_type : int -> scroll_type = "ml_Val_scroll_type" - let marshal_scroll f argv = function - | INT st :: FLOAT (pos : clampf) :: _ -> - f (val_scroll_type st) ~pos - | _ -> invalid_arg "GtkList.CList.Signals.marshal_scroll" - let scroll_horizontal : ([>`clist],_) t = - { name = "scroll_horizontal"; marshaller = marshal_scroll } - let scroll_vertical : ([>`clist],_) t = - { name = "scroll_vertical"; marshaller = marshal_scroll } - external emit_scroll : - 'a obj -> name:string -> Tags.scroll_type -> pos:clampf -> unit - = "ml_gtk_signal_emit_scroll" - let emit_scroll = emit ~emitter:emit_scroll - end -end diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkMain.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkMain.ml deleted file mode 100644 index 3c4561429..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkMain.ml +++ /dev/null @@ -1,49 +0,0 @@ -(* $Id$ *) - -open Gtk - -let _ = Callback.register_exception "gtkerror" (Error"") - -module Timeout = struct - type id - external add : ms:int -> callback:(GtkArgv.t -> unit) -> id - = "ml_gtk_timeout_add" - let add ~ms ~callback = - add ~ms ~callback:(fun arg -> GtkArgv.set_result arg (`BOOL(callback ()))) - external remove : id -> unit = "ml_gtk_timeout_remove" -end - -module Main = struct - external init : string array -> string array = "ml_gtk_init" - (* external exit : int -> unit = "ml_gtk_exit" *) - external set_locale : unit -> string = "ml_gtk_set_locale" - (* external main : unit -> unit = "ml_gtk_main" *) - let init () = - let locale = set_locale () in - let argv = init Sys.argv in - Array.blit ~src:argv ~dst:Sys.argv ~len:(Array.length argv) - ~src_pos:0 ~dst_pos:0; - Obj.truncate (Obj.repr Sys.argv) ~len:(Array.length argv); - locale - open Glib - let loops = ref [] - let main () = - let loop = (Main.create true) in - loops := loop :: !loops; - while Main.is_running loop do Main.iteration true done; - loops := List.tl !loops - and quit () = Main.quit (List.hd !loops) - external get_version : unit -> int * int * int = "ml_gtk_get_version" - let version = get_version () - - let flush = Gdk.X.flush -end - -module Grab = struct - external add : [>`widget] obj -> unit = "ml_gtk_grab_add" - external remove : [>`widget] obj -> unit = "ml_gtk_grab_remove" - external get_current : unit -> widget obj= "ml_gtk_grab_get_current" -end - -let _ = Glib.set_warning_handler (fun msg -> raise (Warning msg)) -let _ = Glib.set_print_handler (fun msg -> print_string msg) diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkMenu.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkMenu.ml deleted file mode 100644 index 2f1eb30f0..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkMenu.ml +++ /dev/null @@ -1,144 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open GtkBase - -module MenuItem = struct - let cast w : menu_item obj = Object.try_cast w "GtkMenuItem" - external coerce : [>`menuitem] obj -> menu_item obj = "%identity" - external create : unit -> menu_item obj = "ml_gtk_menu_item_new" - external create_with_label : string -> menu_item obj - = "ml_gtk_menu_item_new_with_label" - external tearoff_create : unit -> menu_item obj - = "ml_gtk_tearoff_menu_item_new" - let create ?label () = - match label with None -> create () - | Some label -> create_with_label label - external set_submenu : [>`menuitem] obj -> [>`menu] obj -> unit - = "ml_gtk_menu_item_set_submenu" - external remove_submenu : [>`menuitem] obj -> unit - = "ml_gtk_menu_item_remove_submenu" - external configure : - [>`menuitem] obj -> show_toggle:bool -> show_indicator:bool -> unit - = "ml_gtk_menu_item_configure" - external activate : [>`menuitem] obj -> unit - = "ml_gtk_menu_item_activate" - external right_justify : [>`menuitem] obj -> unit - = "ml_gtk_menu_item_right_justify" - module Signals = struct - open GtkSignal - let activate : ([>`menuitem],_) t = - { name = "activate"; marshaller = marshal_unit } - let activate_item : ([>`menuitem],_) t = - { name = "activate_item"; marshaller = marshal_unit } - end -end - -module CheckMenuItem = struct - let cast w : check_menu_item obj = Object.try_cast w "GtkCheckMenuItem" - external coerce : [>`checkmenuitem] obj -> check_menu_item obj = "%identity" - external create : unit -> check_menu_item obj = "ml_gtk_check_menu_item_new" - external create_with_label : string -> check_menu_item obj - = "ml_gtk_check_menu_item_new_with_label" - let create ?label () = - match label with None -> create () - | Some label -> create_with_label label - external set_active : [>`checkmenuitem] obj -> bool -> unit - = "ml_gtk_check_menu_item_set_active" - external get_active : [>`checkmenuitem] obj -> bool - = "ml_gtk_check_menu_item_get_active" - external set_show_toggle : [>`checkmenuitem] obj -> bool -> unit - = "ml_gtk_check_menu_item_set_show_toggle" - let set ?active ?show_toggle w = - may active ~f:(set_active w); - may show_toggle ~f:(set_show_toggle w) - external toggled : [>`checkmenuitem] obj -> unit - = "ml_gtk_check_menu_item_toggled" - module Signals = struct - open GtkSignal - let toggled : ([>`checkmenuitem],_) t = - { name = "toggled"; marshaller = marshal_unit } - end -end - -module RadioMenuItem = struct - let cast w : radio_menu_item obj = Object.try_cast w "GtkRadioMenuItem" - external create : radio_menu_item group -> radio_menu_item obj - = "ml_gtk_radio_menu_item_new" - external create_with_label : - radio_menu_item group -> string -> radio_menu_item obj - = "ml_gtk_radio_menu_item_new_with_label" - let create ?(group = None) ?label () = - match label with None -> create group - | Some label -> create_with_label group label - external set_group : [>`radiomenuitem] obj -> radio_menu_item group -> unit - = "ml_gtk_radio_menu_item_set_group" -end - -module OptionMenu = struct - let cast w : option_menu obj = Object.try_cast w "GtkOptionMenu" - external create : unit -> option_menu obj = "ml_gtk_option_menu_new" - external get_menu : [>`optionmenu] obj -> menu obj - = "ml_gtk_option_menu_get_menu" - external set_menu : [>`optionmenu] obj -> [>`menu] obj -> unit - = "ml_gtk_option_menu_set_menu" - external remove_menu : [>`optionmenu] obj -> unit - = "ml_gtk_option_menu_remove_menu" - external set_history : [>`optionmenu] obj -> int -> unit - = "ml_gtk_option_menu_set_history" - let set ?menu ?history w = - may menu ~f:(set_menu w); - may history ~f:(set_history w) -end - -module MenuShell = struct - let cast w : menu_shell obj = Object.try_cast w "GtkMenuShell" - external coerce : [>`menushell] obj -> menu_shell obj = "%identity" - external append : [>`menushell] obj -> [>`widget] obj -> unit - = "ml_gtk_menu_shell_append" - external prepend : [>`menushell] obj -> [>`widget] obj -> unit - = "ml_gtk_menu_shell_prepend" - external insert : [>`menushell] obj -> [>`widget] obj -> pos:int -> unit - = "ml_gtk_menu_shell_insert" - external deactivate : [>`menushell] obj -> unit - = "ml_gtk_menu_shell_deactivate" - module Signals = struct - open GtkSignal - let deactivate : ([>`menushell],_) t = - { name = "deactivate"; marshaller = marshal_unit } - end -end - -module Menu = struct - let cast w : menu obj = Object.try_cast w "GtkMenu" - external create : unit -> menu obj = "ml_gtk_menu_new" - external popup : - [>`menu] obj -> [>`menushell] optobj -> - [>`menuitem] optobj -> button:int -> time:int -> unit - = "ml_gtk_menu_popup" - let popup ?parent_menu ?parent_item w = - popup w (Gpointer.optboxed parent_menu) (Gpointer.optboxed parent_item) - external popdown : [>`menu] obj -> unit = "ml_gtk_menu_popdown" - external get_active : [>`menu] obj -> widget obj= "ml_gtk_menu_get_active" - external set_active : [>`menu] obj -> int -> unit = "ml_gtk_menu_set_active" - external set_accel_group : [>`menu] obj -> accel_group -> unit - = "ml_gtk_menu_set_accel_group" - external get_accel_group : [>`menu] obj -> accel_group - = "ml_gtk_menu_get_accel_group" - external ensure_uline_accel_group : [>`menu] obj -> accel_group - = "ml_gtk_menu_ensure_uline_accel_group" - external attach_to_widget : [>`menu] obj -> [>`widget] obj -> unit - = "ml_gtk_menu_attach_to_widget" - external get_attach_widget : [>`menu] obj -> widget obj - = "ml_gtk_menu_get_attach_widget" - external detach : [>`menu] obj -> unit = "ml_gtk_menu_detach" - let set ?active ?accel_group w = - may active ~f:(set_active w); - may accel_group ~f:(set_accel_group w) -end - -module MenuBar = struct - let cast w : menu_bar obj = Object.try_cast w "GtkMenuBar" - external create : unit -> menu_bar obj = "ml_gtk_menu_bar_new" -end diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkMisc.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkMisc.ml deleted file mode 100644 index ded7f487a..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkMisc.ml +++ /dev/null @@ -1,323 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open Tags -open GtkBase - -module GammaCurve = struct - let cast w : gamma_curve obj = Object.try_cast w "GtkGammaCurve" - external create : unit -> gamma_curve obj = "ml_gtk_gamma_curve_new" - external get_gamma : [>`gamma] obj -> float = "ml_gtk_gamma_curve_get_gamma" -end - -module ColorSelection = struct - let cast w : color_selection obj = Object.try_cast w "GtkColorSelection" - external create : unit -> color_selection obj = "ml_gtk_color_selection_new" - external create_dialog : string -> color_selection_dialog obj - = "ml_gtk_color_selection_dialog_new" - external set_update_policy : [>`colorsel] obj -> update_type -> unit - = "ml_gtk_color_selection_set_update_policy" - external set_opacity : [>`colorsel] obj -> bool -> unit - = "ml_gtk_color_selection_set_opacity" - let set ?update_policy ?opacity w = - may update_policy ~f:(set_update_policy w); - may opacity ~f:(set_opacity w) - external set_color : - [>`colorsel] obj -> - red:float -> green:float -> blue:float -> ?opacity:float -> unit - = "ml_gtk_color_selection_set_color" - external get_color : [>`colorsel] obj -> color - = "ml_gtk_color_selection_get_color" - - external ok_button : [>`colorseldialog] obj -> button obj = - "ml_gtk_color_selection_dialog_ok_button" - external cancel_button : [>`colorseldialog] obj -> button obj = - "ml_gtk_color_selection_dialog_cancel_button" - external help_button : [>`colorseldialog] obj -> button obj = - "ml_gtk_color_selection_dialog_help_button" - external colorsel : [>`colorseldialog] obj -> color_selection obj = - "ml_gtk_color_selection_dialog_colorsel" - module Signals = struct - open GtkSignal - let color_changed : ([>`colorsel],_) t = - { name = "color_changed"; marshaller = marshal_unit } - end -end - -module Statusbar = struct - let cast w : statusbar obj = Object.try_cast w "GtkStatusbar" - external create : unit -> statusbar obj = "ml_gtk_statusbar_new" - external get_context : [>`statusbar] obj -> string -> statusbar_context - = "ml_gtk_statusbar_get_context_id" - external push : - [>`statusbar] obj -> - statusbar_context -> text:string -> statusbar_message - = "ml_gtk_statusbar_push" - external pop : [>`statusbar] obj -> statusbar_context -> unit - = "ml_gtk_statusbar_pop" - external remove : - [>`statusbar] obj -> statusbar_context -> statusbar_message -> unit - = "ml_gtk_statusbar_remove" - module Signals = struct - open GtkSignal - let text_pushed : ([>`statusbar],_) t = - let marshal f _ = function - | GtkArgv.INT ctx :: GtkArgv.STRING s :: _ -> - f (Obj.magic ctx : statusbar_context) s - | _ -> invalid_arg "GtkMisc.Statusbar.Signals.marshal_text" - in - { name = "text_pushed"; marshaller = marshal } - end -end - -module Calendar = struct - let cast w : calendar obj = Object.try_cast w "GtkCalendar" - external create : unit -> calendar obj = "ml_gtk_calendar_new" - external select_month : [>`calendar] obj -> month:int -> year:int -> unit - = "ml_gtk_calendar_select_month" - external select_day : [>`calendar] obj -> int -> unit - = "ml_gtk_calendar_select_day" - external mark_day : [>`calendar] obj -> int -> unit - = "ml_gtk_calendar_mark_day" - external unmark_day : [>`calendar] obj -> int -> unit - = "ml_gtk_calendar_unmark_day" - external clear_marks : [>`calendar] obj -> unit - = "ml_gtk_calendar_clear_marks" - external display_options : - [>`calendar] obj -> Tags.calendar_display_options list -> unit - = "ml_gtk_calendar_display_options" - external get_date : [>`calendar] obj -> int * int * int - = "ml_gtk_calendar_get_date" (* year * month * day *) - external freeze : [>`calendar] obj -> unit - = "ml_gtk_calendar_freeze" - external thaw : [>`calendar] obj -> unit - = "ml_gtk_calendar_thaw" - module Signals = struct - open GtkSignal - let month_changed : ([>`calendar],_) t = - { name = "month_changed"; marshaller = marshal_unit } - let day_selected : ([>`calendar],_) t = - { name = "day_selected"; marshaller = marshal_unit } - let day_selected_double_click : ([>`calendar],_) t = - { name = "day_selected_double_click"; marshaller = marshal_unit } - let prev_month : ([>`calendar],_) t = - { name = "prev_month"; marshaller = marshal_unit } - let next_month : ([>`calendar],_) t = - { name = "next_month"; marshaller = marshal_unit } - let prev_year : ([>`calendar],_) t = - { name = "prev_year"; marshaller = marshal_unit } - let next_year : ([>`calendar],_) t = - { name = "next_year"; marshaller = marshal_unit } - end -end - -module DrawingArea = struct - let cast w : drawing_area obj = Object.try_cast w "GtkDrawingArea" - external create : unit -> drawing_area obj = "ml_gtk_drawing_area_new" - external size : [>`drawing] obj -> width:int -> height:int -> unit - = "ml_gtk_drawing_area_size" -end - -(* Does not seem very useful ... -module Curve = struct - type t = [widget drawing curve] obj - let cast w : t = Object.try_cast w "GtkCurve" - external create : unit -> t = "ml_gtk_curve_new" - external reset : [>`curve] obj -> unit = "ml_gtk_curve_reset" - external set_gamma : [>`curve] obj -> float -> unit - = "ml_gtk_curve_set_gamma" - external set_range : - [>`curve] obj -> min_x:float -> max_x:float -> - min_y:float -> max_y:float -> unit - = "ml_gtk_curve_set_gamma" -end -*) - -module Misc = struct - let cast w : misc obj = Object.try_cast w "GtkMisc" - external coerce : [>`misc] obj -> misc obj = "%identity" - external set_alignment : [>`misc] obj -> x:float -> y:float -> unit - = "ml_gtk_misc_set_alignment" - external set_padding : [>`misc] obj -> x:int -> y:int -> unit - = "ml_gtk_misc_set_padding" - external get_xalign : [>`misc] obj -> float = "ml_gtk_misc_get_xalign" - external get_yalign : [>`misc] obj -> float = "ml_gtk_misc_get_yalign" - external get_xpad : [>`misc] obj -> int = "ml_gtk_misc_get_xpad" - external get_ypad : [>`misc] obj -> int = "ml_gtk_misc_get_ypad" - let set_alignment w ?x ?y () = - set_alignment w ~x:(may_default get_xalign w ~opt:x) - ~y:(may_default get_yalign w ~opt:y) - let set_padding w ?x ?y () = - set_padding w ~x:(may_default get_xpad w ~opt:x) - ~y:(may_default get_ypad w ~opt:y) - let set ?xalign ?yalign ?xpad ?ypad ?(width = -2) ?(height = -2) w = - if xalign <> None || yalign <> None then - set_alignment w ?x:xalign ?y:yalign (); - if xpad <> None || ypad <> None then - set_padding w ?x:xpad ?y:ypad (); - if width <> -2 || height <> -2 then Widget.set_usize w ~width ~height -end - -module Arrow = struct - let cast w : arrow obj = Object.try_cast w "GtkArrow" - external create : kind:arrow_type -> shadow:shadow_type -> arrow obj - = "ml_gtk_arrow_new" - external set : [>`arrow] obj -> kind:arrow_type -> shadow:shadow_type -> unit - = "ml_gtk_arrow_set" -end - -module Image = struct - let cast w : image obj = Object.try_cast w "GtkImage" - external create : Gdk.image -> ?mask:Gdk.bitmap -> image obj - = "ml_gtk_image_new" - let create ?mask img = create img ?mask - external set : [>`image] obj -> Gdk.image -> ?mask:Gdk.bitmap -> unit - = "ml_gtk_image_set" -end - -module Label = struct - let cast w : label obj = Object.try_cast w "GtkLabel" - external coerce : [>`label] obj -> label obj = "%identity" - external create : string -> label obj = "ml_gtk_label_new" - external set_text : [>`label] obj -> string -> unit = "ml_gtk_label_set_text" - external set_justify : [>`label] obj -> justification -> unit - = "ml_gtk_label_set_justify" - external set_pattern : [>`label] obj -> string -> unit - = "ml_gtk_label_set_pattern" - external set_line_wrap : [>`label] obj -> bool -> unit - = "ml_gtk_label_set_line_wrap" - let set ?text ?justify ?line_wrap ?pattern w = - may ~f:(set_text w) text; - may ~f:(set_justify w) justify; - may ~f:(set_line_wrap w) line_wrap; - may ~f:(set_pattern w) pattern - external get_text : [>`label] obj -> string = "ml_gtk_label_get_label" -end - -module TipsQuery = struct - let cast w : tips_query obj = Object.try_cast w "GtkTipsQuery" - external create : unit -> tips_query obj = "ml_gtk_tips_query_new" - external start : [>`tipsquery] obj -> unit = "ml_gtk_tips_query_start_query" - external stop : [>`tipsquery] obj -> unit = "ml_gtk_tips_query_stop_query" - external set_caller : [>`tipsquery] obj -> [>`widget] obj -> unit - = "ml_gtk_tips_query_set_caller" - external set_labels : - [>`tipsquery] obj -> inactive:string -> no_tip:string -> unit - = "ml_gtk_tips_query_set_labels" - external set_emit_always : [>`tipsquery] obj -> bool -> unit - = "ml_gtk_tips_query_set_emit_always" - external get_caller : [>`tipsquery] obj -> widget obj - = "ml_gtk_tips_query_get_caller" - external get_label_inactive : [>`tipsquery] obj -> string - = "ml_gtk_tips_query_get_label_inactive" - external get_label_no_tip : [>`tipsquery] obj -> string - = "ml_gtk_tips_query_get_label_no_tip" - external get_emit_always : [>`tipsquery] obj -> bool - = "ml_gtk_tips_query_get_emit_always" - let set_labels ?inactive ?no_tip w = - set_labels w - ~inactive:(may_default get_label_inactive w ~opt:inactive) - ~no_tip:(may_default get_label_no_tip w ~opt:no_tip) - let set ?caller ?emit_always ?label_inactive ?label_no_tip w = - may caller ~f:(set_caller w); - may emit_always ~f:(set_emit_always w); - if label_inactive <> None || label_no_tip <> None then - set_labels w ?inactive:label_inactive ?no_tip:label_no_tip - module Signals = struct - open GtkArgv - open GtkSignal - let start_query : ([>`tipsquery],_) t = - { name = "start_query"; marshaller = marshal_unit } - let stop_query : ([>`tipsquery],_) t = - { name = "stop_query"; marshaller = marshal_unit } - let widget_entered : - ([>`tipsquery], - widget obj option -> - text:string option -> privat:string option -> unit) t = - let marshal f _ = function - | OBJECT opt :: STRING text :: STRING privat :: _ -> - f (may_map ~f:Widget.cast opt) ~text ~privat - | _ -> invalid_arg "GtkMisc.TipsQuery.Signals.marshal_entered" - in - { name = "widget_entered"; marshaller = marshal } - let widget_selected : - ([>`tipsquery], - widget obj option -> - text:string option -> - privat:string option -> GdkEvent.Button.t option -> bool) t = - let marshal f argv = function - | OBJECT obj :: STRING text :: STRING privat :: POINTER p :: _ -> - let stop = - f (may_map ~f:Widget.cast obj) ~text ~privat - (may_map ~f:GdkEvent.unsafe_copy p) - in set_result argv (`BOOL stop) - | _ -> invalid_arg "GtkMisc.TipsQuery.Signals.marshal_selected" - in - { name = "widget_selected"; marshaller = marshal } - end -end - -module Pixmap = struct - let cast w : pixmap obj = Object.try_cast w "GtkPixmap" - external create : Gdk.pixmap -> ?mask:Gdk.bitmap -> pixmap obj - = "ml_gtk_pixmap_new" - let create ?mask img = create img ?mask - external set : - [>`pixmap] obj -> ?pixmap:Gdk.pixmap -> ?mask:Gdk.bitmap -> unit - = "ml_gtk_pixmap_set" - external pixmap : [>`pixmap] obj -> Gdk.pixmap = "ml_GtkPixmap_pixmap" - external mask : [>`pixmap] obj -> Gdk.bitmap = "ml_GtkPixmap_mask" -end - -module Separator = struct - let cast w : separator obj = Object.try_cast w "GtkSeparator" - external hseparator_new : unit -> separator obj = "ml_gtk_hseparator_new" - external vseparator_new : unit -> separator obj = "ml_gtk_vseparator_new" - let create (dir : Tags.orientation) = - if dir = `HORIZONTAL then hseparator_new () else vseparator_new () -end - -module FontSelection = struct - type null_terminated - let null_terminated arg : null_terminated = - match arg with None -> Obj.magic Gpointer.raw_null - | Some l -> - let len = List.length l in - let arr = Array.create (len + 1) "" in - let rec loop i = function - [] -> arr.(i) <- Obj.magic Gpointer.raw_null - | s::l -> arr.(i) <- s; loop (i+1) l - in loop 0 l; - Obj.magic (arr : string array) - let cast w : font_selection obj = - Object.try_cast w "GtkFontSelection" - external create : unit -> font_selection obj - = "ml_gtk_font_selection_new" - external get_font : [>`fontsel] obj -> Gdk.font - = "ml_gtk_font_selection_get_font" - let get_font w = - try Some (get_font w) with Gpointer.Null -> None - external get_font_name : [>`fontsel] obj -> string - = "ml_gtk_font_selection_get_font_name" - let get_font_name w = - try Some (get_font_name w) with Gpointer.Null -> None - external set_font_name : [>`fontsel] obj -> string -> unit - = "ml_gtk_font_selection_set_font_name" - external set_filter : - [>`fontsel] obj -> font_filter_type -> font_type list -> - null_terminated -> null_terminated -> null_terminated -> - null_terminated -> null_terminated -> null_terminated -> unit - = "ml_gtk_font_selection_set_filter_bc" - "ml_gtk_font_selection_set_filter" - let set_filter w ?kind:(tl=[`ALL]) ?foundry - ?weight ?slant ?setwidth ?spacing ?charset filter = - set_filter w filter tl (null_terminated foundry) - (null_terminated weight) (null_terminated slant) - (null_terminated setwidth) (null_terminated spacing) - (null_terminated charset) - external get_preview_text : [>`fontsel] obj -> string - = "ml_gtk_font_selection_get_preview_text" - external set_preview_text : [>`fontsel] obj -> string -> unit - = "ml_gtk_font_selection_set_preview_text" -end diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkNew.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkNew.ml deleted file mode 100644 index 532a709d7..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkNew.ml +++ /dev/null @@ -1,56 +0,0 @@ -(* $Id$ *) - -open Gtk - -type t - -(* if you modify this type modify widget_info_array - in ml_gtk.c in accordance *) -type object_type = - | OBJECT | WIDGET | MISC | LABEL | ACCELLABEL | TIPSQUERY | ARROW - | IMAGE | PIXMAP | CONTAINER | BIN | ALIGNMENT | FRAME | ASPECTFRAME - | BUTTON | TOGGLEBUTTON | CHECKBUTTON | RADIOBUTTON | OPTIONMENU - | ITEM | MENUITEM | CHECKMENUITEM | RADIOMENUITEM | TEAROFFMENUITEM - | LISTITEM | TREEITEM | WINDOW | COLORSELECTIONDIALOG | DIALOG - | INPUTDIALOG | FILESELECTION | FONTSELECTIONDIALOG | PLUG - | EVENTBOX | HANDLEBOX | SCROLLEDWINDOW | VIEWPORT | BOX - | BUTTONBOX | HBUTTONBOX | VBUTTONBOX | VBOX | COLORSELECTION - | GAMMACURVE | HBOX | COMBO | STATUSBAR | CLIST | CTREE | FIXED - | NOTEBOOK | FONTSELECTION | PANED | HPANED | VPANED | LAYOUT - | LIST | MENUSHELL | MENUBAR | MENU | PACKER | SOCKET | TABLE - | TOOLBAR | TREE | CALENDAR | DRAWINGAREA | CURVE | EDITABLE - | ENTRY | SPINBUTTON | TEXT | RULER | HRULER | VRULER | RANGE - | SCALE | HSCALE | VSCALE | SCROLLBAR | HSCROLLBAR | VSCROLLBAR - | SEPARATOR | HSEPARATOR | VSEPARATOR | PREVIEW | PROGRESS - | PROGRESSBAR | DATA | ADJUSTMENT | TOOLTIPS | ITEMFACTORY - -external set_ml_class_init : (t -> unit) -> unit = "set_ml_class_init" -external signal_new : string -> int -> t -> object_type -> int -> int - = "ml_gtk_signal_new" -external object_class_add_signals : t -> int array -> int -> unit - = "ml_gtk_object_class_add_signals" -external type_unique : - name:string -> parent:object_type -> nsignals:int -> gtk_type - = "ml_gtk_type_unique" -external type_new : gtk_type -> unit obj - = "ml_gtk_type_new" - -open GtkSignal - -let make_new_widget ~name ~parent - ~(signals : ('a, unit -> unit) GtkSignal.t list) = - let nsignals = List.length signals in - let new_type = type_unique ~name ~parent ~nsignals in - let signal_num_array = Array.create nsignals 0 in - let class_init_func classe = - List.fold_left signals ~init:0 ~f: - (fun i signal -> - signal_num_array.(i) <- signal_new signal.name 1 classe parent i; - i+1); - object_class_add_signals classe signal_num_array nsignals - in - new_type, - (fun () -> - set_ml_class_init class_init_func; - type_new new_type) - (* , signal_num_array *) diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkPack.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkPack.ml deleted file mode 100644 index 20adb0505..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkPack.ml +++ /dev/null @@ -1,318 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open Tags -open GtkBase - -module Box = struct - let cast w : box obj = Object.try_cast w "GtkBox" - external coerce : [>`box] obj -> box obj = "%identity" - external pack_start : - [>`box] obj -> [>`widget] obj -> - expand:bool -> fill:bool -> padding:int -> unit - = "ml_gtk_box_pack_start" - external pack_end : - [>`box] obj -> [>`widget] obj -> - expand:bool -> fill:bool -> padding:int -> unit - = "ml_gtk_box_pack_end" - let pack box ?from:( dir = (`START : pack_type)) - ?(expand=false) ?(fill=true) ?(padding=0) child = - (match dir with `START -> pack_start | `END -> pack_end) - box child ~expand ~fill ~padding - external reorder_child : [>`box] obj -> [>`widget] obj -> pos:int -> unit - = "ml_gtk_box_reorder_child" - external set_homogeneous : [>`box] obj -> bool -> unit - = "ml_gtk_box_set_homogeneous" - external set_spacing : [>`box] obj -> int -> unit - = "ml_gtk_box_set_spacing" - let set ?homogeneous ?spacing w = - may homogeneous ~f:(set_homogeneous w); - may spacing ~f:(set_spacing w) - type packing = - { expand: bool; fill: bool; padding: int; pack_type: pack_type } - external query_child_packing : [>`box] obj -> [>`widget] obj -> packing - = "ml_gtk_box_query_child_packing" - external set_child_packing : - [>`box] obj -> [>`widget] obj -> - ?expand:bool -> ?fill:bool -> ?padding:int -> ?from:pack_type -> unit - = "ml_gtk_box_set_child_packing_bc" "ml_gtk_box_set_child_packing" - external hbox_new : homogeneous:bool -> spacing:int -> box obj - = "ml_gtk_hbox_new" - external vbox_new : homogeneous:bool -> spacing:int -> box obj - = "ml_gtk_vbox_new" - let create (dir : orientation) ?(homogeneous=false) ?(spacing=0) () = - (match dir with `HORIZONTAL -> hbox_new | `VERTICAL -> vbox_new) - ~homogeneous ~spacing -end - -module BBox = struct - (* Omitted defaults setting *) - let cast w : button_box obj = Object.try_cast w "GtkBBox" - external coerce : [>`bbox] obj -> button_box obj = "%identity" - type bbox_style = [ `DEFAULT_STYLE|`SPREAD|`EDGE|`START|`END ] - external get_spacing : [>`bbox] obj -> int = "ml_gtk_button_box_get_spacing" - external get_child_width : [>`bbox] obj -> int - = "ml_gtk_button_box_get_child_min_width" - external get_child_height : [>`bbox] obj -> int - = "ml_gtk_button_box_get_child_min_height" - external get_child_ipadx : [>`bbox] obj -> int - = "ml_gtk_button_box_get_child_ipad_x" - external get_child_ipady : [>`bbox] obj -> int - = "ml_gtk_button_box_get_child_ipad_y" - external get_layout : [>`bbox] obj -> bbox_style - = "ml_gtk_button_box_get_layout_style" - external set_spacing : [>`bbox] obj -> int -> unit - = "ml_gtk_button_box_set_spacing" - external set_child_size : [>`bbox] obj -> width:int -> height:int -> unit - = "ml_gtk_button_box_set_child_size" - external set_child_ipadding : [>`bbox] obj -> x:int -> y:int -> unit - = "ml_gtk_button_box_set_child_ipadding" - external set_layout : [>`bbox] obj -> bbox_style -> unit - = "ml_gtk_button_box_set_layout" - let set_child_size w ?width ?height () = - set_child_size w ~width:(may_default get_child_width w ~opt:width) - ~height:(may_default get_child_height w ~opt:height) - let set_child_ipadding w ?x ?y () = - set_child_ipadding w - ~x:(may_default get_child_ipadx w ~opt:x) - ~y:(may_default get_child_ipady w ~opt:y) - let set ?spacing ?child_width ?child_height ?child_ipadx - ?child_ipady ?layout w = - may spacing ~f:(set_spacing w); - if child_width <> None || child_height <> None then - set_child_size w ?width:child_width ?height:child_height (); - if child_ipadx <> None || child_ipady <> None then - set_child_ipadding w ?x:child_ipadx ?y:child_ipady (); - may layout ~f:(set_layout w) - external set_child_size_default : width:int -> height:int -> unit - = "ml_gtk_button_box_set_child_size_default" - external set_child_ipadding_default : x:int -> y:int -> unit - = "ml_gtk_button_box_set_child_ipadding_default" - external create_hbbox : unit -> button_box obj = "ml_gtk_hbutton_box_new" - external create_vbbox : unit -> button_box obj = "ml_gtk_vbutton_box_new" - let create (dir : orientation) = - if dir = `HORIZONTAL then create_hbbox () else create_vbbox () -end - -module Fixed = struct - let cast w : fixed obj = Object.try_cast w "GtkFixed" - external create : unit -> fixed obj = "ml_gtk_fixed_new" - external put : [>`fixed] obj -> [>`widget] obj -> x:int -> y:int -> unit - = "ml_gtk_fixed_put" - external move : [>`fixed] obj -> [>`widget] obj -> x:int -> y:int -> unit - = "ml_gtk_fixed_move" -end - -module Layout = struct - let cast w : layout obj = Object.try_cast w "GtkLayout" - external create : - [>`adjustment] optobj -> [>`adjustment] optobj -> layout obj - = "ml_gtk_layout_new" - external put : [>`layout] obj -> [>`widget] obj -> x:int -> y:int -> unit - = "ml_gtk_layout_put" - external move : [>`layout] obj -> [>`widget] obj -> x:int -> y:int -> unit - = "ml_gtk_layout_move" - external set_size : [>`layout] obj -> width:int -> height:int -> unit - = "ml_gtk_layout_set_size" - external get_hadjustment : [>`layout] obj -> adjustment obj - = "ml_gtk_layout_get_hadjustment" - external get_vadjustment : [>`layout] obj -> adjustment obj - = "ml_gtk_layout_get_vadjustment" - external set_hadjustment : [>`layout] obj -> [>`adjustment] obj -> unit - = "ml_gtk_layout_set_hadjustment" - external set_vadjustment : [>`layout] obj -> [>`adjustment] obj -> unit - = "ml_gtk_layout_set_vadjustment" - external freeze : [>`layout] obj -> unit - = "ml_gtk_layout_freeze" - external thaw : [>`layout] obj -> unit - = "ml_gtk_layout_thaw" - external get_height : [>`layout] obj -> int - = "ml_gtk_layout_get_height" - external get_width : [>`layout] obj -> int - = "ml_gtk_layout_get_width" - let set_size ?width ?height w = - set_size w ~width:(may_default get_width w ~opt:width) - ~height:(may_default get_height w ~opt:height) -end - - -module Packer = struct - let cast w : packer obj = Object.try_cast w "GtkPacker" - external create : unit -> packer obj = "ml_gtk_packer_new" - external add : - [>`packer] obj -> [>`widget] obj -> - ?side:side_type -> ?anchor:anchor_type -> - ?options:packer_options list -> - ?border_width:int -> ?pad_x:int -> ?pad_y:int -> - ?i_pad_x:int -> ?i_pad_y:int -> unit - = "ml_gtk_packer_add_bc" "ml_gtk_packer_add" - external add_defaults : - [>`packer] obj -> [>`widget] obj -> - ?side:side_type -> ?anchor:anchor_type -> - ?options:packer_options list -> unit - = "ml_gtk_packer_add_defaults" - external set_child_packing : - [>`packer] obj -> [>`widget] obj -> - ?side:side_type -> ?anchor:anchor_type -> - ?options:packer_options list -> - ?border_width:int -> ?pad_x:int -> ?pad_y:int -> - ?i_pad_x:int -> ?i_pad_y:int -> unit - = "ml_gtk_packer_set_child_packing_bc" "ml_gtk_packer_set_child_packing" - external reorder_child : [>`packer] obj -> [>`widget] obj -> pos:int -> unit - = "ml_gtk_packer_reorder_child" - external set_spacing : [>`packer] obj -> int -> unit - = "ml_gtk_packer_set_spacing" - external set_defaults : - [>`packer] obj -> ?border_width:int -> ?pad_x:int -> ?pad_y:int -> - ?i_pad_x:int -> ?i_pad_y:int -> unit -> unit - = "ml_gtk_packer_set_defaults_bc" "ml_gtk_packer_set_defaults" - - let build_options ?(expand=false) ?(fill=`BOTH) () = - (if expand then [`PACK_EXPAND] else []) @ - (match (fill : expand_type) with `NONE -> [] - | `X -> [`FILL_X] - | `Y -> [`FILL_Y] - | `BOTH -> [`FILL_X;`FILL_Y]) -end - -module Paned = struct - let cast w : paned obj = Object.try_cast w "GtkPaned" - external add1 : [>`paned] obj -> [>`widget] obj -> unit - = "ml_gtk_paned_add1" - external add2 : [>`paned] obj -> [>`widget] obj -> unit - = "ml_gtk_paned_add2" - external set_handle_size : [>`paned] obj -> int -> unit - = "ml_gtk_paned_set_handle_size" - external set_gutter_size : [>`paned] obj -> int -> unit - = "ml_gtk_paned_set_gutter_size" - let set ?handle_size ?gutter_size w = - may ~f:(set_handle_size w) handle_size; - may ~f:(set_gutter_size w) gutter_size - external child1 : [>`paned] obj -> widget obj = "ml_gtk_paned_child1" - external child2 : [>`paned] obj -> widget obj = "ml_gtk_paned_child2" - external handle_size : [>`paned] obj -> int = "ml_gtk_paned_handle_size" - external gutter_size : [>`paned] obj -> int = "ml_gtk_paned_handle_size" - external hpaned_new : unit -> paned obj = "ml_gtk_hpaned_new" - external vpaned_new : unit -> paned obj = "ml_gtk_vpaned_new" - let create (dir : orientation) = - if dir = `HORIZONTAL then hpaned_new () else vpaned_new () -end - -module Table = struct - let cast w : table obj = Object.try_cast w "GtkTable" - external create : int -> int -> homogeneous:bool -> table obj - = "ml_gtk_table_new" - let create ~rows:r ~columns:c ?(homogeneous=false) () = - create r c ~homogeneous - external attach : - [>`table] obj -> [>`widget] obj -> left:int -> right:int -> - top:int -> bottom:int -> xoptions:attach_options list -> - yoptions:attach_options list -> xpadding:int -> ypadding:int -> unit - = "ml_gtk_table_attach_bc" "ml_gtk_table_attach" - let has_x : expand_type -> bool = - function `X|`BOTH -> true | `Y|`NONE -> false - let has_y : expand_type -> bool = - function `Y|`BOTH -> true | `X|`NONE -> false - let attach t ~left ~top ?(right=left+1) ?(bottom=top+1) - ?(expand=`NONE) ?(fill=`BOTH) ?(shrink=`NONE) - ?(xpadding=0) ?(ypadding=0) w = - let xoptions = if has_x shrink then [`SHRINK] else [] in - let xoptions = if has_x fill then `FILL::xoptions else xoptions in - let xoptions = if has_x expand then `EXPAND::xoptions else xoptions in - let yoptions = if has_y shrink then [`SHRINK] else [] in - let yoptions = if has_y fill then `FILL::yoptions else yoptions in - let yoptions = if has_y expand then `EXPAND::yoptions else yoptions in - attach t w ~left ~top ~right ~bottom ~xoptions ~yoptions - ~xpadding ~ypadding - external set_row_spacing : [>`table] obj -> int -> int -> unit - = "ml_gtk_table_set_row_spacing" - external set_col_spacing : [>`table] obj -> int -> int -> unit - = "ml_gtk_table_set_col_spacing" - external set_row_spacings : [>`table] obj -> int -> unit - = "ml_gtk_table_set_row_spacings" - external set_col_spacings : [>`table] obj -> int -> unit - = "ml_gtk_table_set_col_spacings" - external set_homogeneous : [>`table] obj -> bool -> unit - = "ml_gtk_table_set_homogeneous" - let set ?homogeneous ?row_spacings ?col_spacings w = - may row_spacings ~f:(set_row_spacings w); - may col_spacings ~f:(set_col_spacings w); - may homogeneous ~f:(set_homogeneous w) -end - -module Notebook = struct - let cast w : notebook obj = Object.try_cast w "GtkNotebook" - external create : unit -> notebook obj = "ml_gtk_notebook_new" - external insert_page : - [>`notebook] obj -> [>`widget] obj -> tab_label:[>`widget] optobj -> - menu_label:[>`widget] optobj -> pos:int -> unit - = "ml_gtk_notebook_insert_page_menu" - (* default is append to end *) - external remove_page : [>`notebook] obj -> int -> unit - = "ml_gtk_notebook_remove_page" - external get_current_page : [>`notebook] obj -> int - = "ml_gtk_notebook_get_current_page" - external set_page : [>`notebook] obj -> int -> unit - = "ml_gtk_notebook_set_page" - external set_tab_pos : [>`notebook] obj -> position -> unit - = "ml_gtk_notebook_set_tab_pos" - external set_homogeneous_tabs : [>`notebook] obj -> bool -> unit - = "ml_gtk_notebook_set_homogeneous_tabs" - external set_show_tabs : [>`notebook] obj -> bool -> unit - = "ml_gtk_notebook_set_show_tabs" - external set_show_border : [>`notebook] obj -> bool -> unit - = "ml_gtk_notebook_set_show_border" - external set_scrollable : [>`notebook] obj -> bool -> unit - = "ml_gtk_notebook_set_scrollable" - external set_tab_border : [>`notebook] obj -> int -> unit - = "ml_gtk_notebook_set_tab_border" - external popup_enable : [>`notebook] obj -> unit - = "ml_gtk_notebook_popup_enable" - external popup_disable : [>`notebook] obj -> unit - = "ml_gtk_notebook_popup_disable" - external get_nth_page : [>`notebook] obj -> int -> widget obj - = "ml_gtk_notebook_get_nth_page" - external page_num : [>`notebook] obj -> [>`widget] obj -> int - = "ml_gtk_notebook_page_num" - external next_page : [>`notebook] obj -> unit - = "ml_gtk_notebook_next_page" - external prev_page : [>`notebook] obj -> unit - = "ml_gtk_notebook_prev_page" - external get_tab_label : [>`notebook] obj -> [>`widget] obj -> widget obj - = "ml_gtk_notebook_get_tab_label" - external set_tab_label : - [>`notebook] obj -> [>`widget] obj -> [>`widget] obj -> unit - = "ml_gtk_notebook_set_tab_label" - external get_menu_label : [>`notebook] obj -> [>`widget] obj -> widget obj - = "ml_gtk_notebook_get_menu_label" - external set_menu_label : - [>`notebook] obj -> [>`widget] obj -> [>`widget] obj -> unit - = "ml_gtk_notebook_set_menu_label" - external reorder_child : [>`notebook] obj -> [>`widget] obj -> int -> unit - = "ml_gtk_notebook_reorder_child" - - let set_popup w = function - true -> popup_enable w - | false -> popup_disable w - let set ?page ?tab_pos ?show_tabs ?homogeneous_tabs - ?show_border ?scrollable ?tab_border ?popup w = - let may_set f = may ~f:(f w) in - may_set set_page page; - may_set set_tab_pos tab_pos; - may_set set_show_tabs show_tabs; - may_set set_homogeneous_tabs homogeneous_tabs; - may_set set_show_border show_border; - may_set set_scrollable scrollable; - may_set set_tab_border tab_border; - may_set set_popup popup - module Signals = struct - open GtkArgv - open GtkSignal - let marshal_page f argv = function - | _ :: INT page :: _ -> f page - | _ -> invalid_arg "GtkPack.Notebook.Signals.marshal_page" - let switch_page : ([>`notebook],_) t = - { name = "switch_page"; marshaller = marshal_page } - end -end diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkRange.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkRange.ml deleted file mode 100644 index b67e49b2e..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkRange.ml +++ /dev/null @@ -1,147 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open Tags -open GtkBase - -module Progress = struct - let cast w : progress obj = Object.try_cast w "GtkProgress" - external set_show_text : [>`progress] obj -> bool -> unit - = "ml_gtk_progress_set_show_text" - external set_text_alignment : - [>`progress] obj -> ?x:float -> ?y:float -> unit -> unit - = "ml_gtk_progress_set_show_text" - external set_format_string : [>`progress] obj -> string -> unit - = "ml_gtk_progress_set_format_string" - external set_adjustment : [>`progress] obj -> [>`adjustment] obj -> unit - = "ml_gtk_progress_set_adjustment" - external configure : - [>`progress] obj -> current:float -> min:float -> max:float -> unit - = "ml_gtk_progress_configure" - external set_percentage : [>`progress] obj -> float -> unit - = "ml_gtk_progress_set_percentage" - external set_value : [>`progress] obj -> float -> unit - = "ml_gtk_progress_set_value" - external get_value : [>`progress] obj -> float - = "ml_gtk_progress_get_value" - external get_percentage : [>`progress] obj -> float - = "ml_gtk_progress_get_current_percentage" - external set_activity_mode : [>`progress] obj -> bool -> unit - = "ml_gtk_progress_set_activity_mode" - external get_current_text : [>`progress] obj -> string - = "ml_gtk_progress_get_current_text" - external get_adjustment : [>`progress] obj -> adjustment obj - = "ml_gtk_progress_get_adjustment" - let set ?value ?percentage ?activity_mode - ?show_text ?format_string ?text_xalign ?text_yalign w = - may value ~f:(set_value w); - may percentage ~f:(set_percentage w); - may activity_mode ~f:(set_activity_mode w); - may show_text ~f:(set_show_text w); - may format_string ~f:(set_format_string w); - if text_xalign <> None || text_yalign <> None then - set_text_alignment w ?x:text_xalign ?y:text_yalign () -end - -module ProgressBar = struct - let cast w : progress_bar obj = Object.try_cast w "GtkProgressBar" - external create : unit -> progress_bar obj = "ml_gtk_progress_bar_new" - external create_with_adjustment : [>`adjustment] obj -> progress_bar obj - = "ml_gtk_progress_bar_new_with_adjustment" - external set_bar_style : - [>`progressbar] obj -> [`CONTINUOUS|`DISCRETE] -> unit - = "ml_gtk_progress_bar_set_bar_style" - external set_discrete_blocks : [>`progressbar] obj -> int -> unit - = "ml_gtk_progress_bar_set_discrete_blocks" - external set_activity_step : [>`progressbar] obj -> int -> unit - = "ml_gtk_progress_bar_set_activity_step" - external set_activity_blocks : [>`progressbar] obj -> int -> unit - = "ml_gtk_progress_bar_set_activity_blocks" - external set_orientation : - [>`progressbar] obj -> Tags.progress_bar_orientation -> unit - = "ml_gtk_progress_bar_set_orientation" - let set ?bar_style ?discrete_blocks ?activity_step ?activity_blocks w = - let may_set f opt = may opt ~f:(f w) in - may_set set_bar_style bar_style; - may_set set_discrete_blocks discrete_blocks; - may_set set_activity_step activity_step; - may_set set_activity_blocks activity_blocks -end - -module Range = struct - let cast w : range obj = Object.try_cast w "GtkRange" - external coerce : [>`range] obj -> range obj = "%identity" - external get_adjustment : [>`range] obj -> adjustment obj - = "ml_gtk_range_get_adjustment" - external set_adjustment : [>`range] obj -> [>`adjustment] obj -> unit - = "ml_gtk_range_set_adjustment" - external set_update_policy : [>`range] obj -> update_type -> unit - = "ml_gtk_range_set_update_policy" - let set ?adjustment ?update_policy w = - may adjustment ~f:(set_adjustment w); - may update_policy ~f:(set_update_policy w) -end - -module Scale = struct - let cast w : scale obj = Object.try_cast w "GtkScale" - external hscale_new : [>`adjustment] optobj -> scale obj - = "ml_gtk_hscale_new" - external vscale_new : [>`adjustment] optobj -> scale obj - = "ml_gtk_vscale_new" - let create ?adjustment (dir : orientation) = - let create = if dir = `HORIZONTAL then hscale_new else vscale_new in - create (Gpointer.optboxed adjustment) - external set_digits : [>`scale] obj -> int -> unit - = "ml_gtk_scale_set_digits" - external set_draw_value : [>`scale] obj -> bool -> unit - = "ml_gtk_scale_set_draw_value" - external set_value_pos : [>`scale] obj -> position -> unit - = "ml_gtk_scale_set_value_pos" - external get_value_width : [>`scale] obj -> int - = "ml_gtk_scale_get_value_width" - external draw_value : [>`scale] obj -> unit - = "ml_gtk_scale_draw_value" - let set ?digits ?draw_value ?value_pos w = - may digits ~f:(set_digits w); - may draw_value ~f:(set_draw_value w); - may value_pos ~f:(set_value_pos w) -end - -module Scrollbar = struct - let cast w : scrollbar obj = Object.try_cast w "GtkScrollbar" - external hscrollbar_new : [>`adjustment] optobj -> scrollbar obj - = "ml_gtk_hscrollbar_new" - external vscrollbar_new : [>`adjustment] optobj -> scrollbar obj - = "ml_gtk_vscrollbar_new" - let create ?adjustment (dir : orientation) = - let create = if dir = `HORIZONTAL then hscrollbar_new else vscrollbar_new - in create (Gpointer.optboxed adjustment) -end - -module Ruler = struct - let cast w : ruler obj = Object.try_cast w "GtkRuler" - external hruler_new : unit -> ruler obj = "ml_gtk_hruler_new" - external vruler_new : unit -> ruler obj = "ml_gtk_vruler_new" - let create (dir : orientation) = - if dir = `HORIZONTAL then hruler_new () else vruler_new () - external set_metric : [>`ruler] obj -> metric_type -> unit - = "ml_gtk_ruler_set_metric" - external set_range : - [>`ruler] obj -> - lower:float -> upper:float -> position:float -> max_size:float -> unit - = "ml_gtk_ruler_set_range" - external get_lower : [>`ruler] obj -> float = "ml_gtk_ruler_get_lower" - external get_upper : [>`ruler] obj -> float = "ml_gtk_ruler_get_upper" - external get_position : [>`ruler] obj -> float = "ml_gtk_ruler_get_position" - external get_max_size : [>`ruler] obj -> float = "ml_gtk_ruler_get_max_size" - let set_range ?lower ?upper ?position ?max_size w = - set_range w ~lower:(may_default get_lower w ~opt:lower) - ~upper:(may_default get_upper w ~opt:upper) - ~position:(may_default get_position w ~opt:position) - ~max_size:(may_default get_max_size w ~opt:max_size) - let set ?metric ?lower ?upper ?position ?max_size w = - may metric ~f:(set_metric w); - if lower <> None || upper <> None || position <> None || max_size <> None - then set_range w ?lower ?upper ?position ?max_size -end diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkSignal.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkSignal.ml deleted file mode 100644 index 8fa460288..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkSignal.ml +++ /dev/null @@ -1,65 +0,0 @@ -(* $Id$ *) - -open Gtk - -type id -type ('a,'b) t = - { name: string; - marshaller: ('b -> GtkArgv.t -> GtkArgv.data list -> unit) } - -let enter_callback = ref (fun () -> ()) -and exit_callback = ref (fun () -> ()) - -let stop_emit_ref = ref false -let stop_emit () = stop_emit_ref := true - -type saved_state = State of bool -let push_callback () = - !enter_callback (); - let old = !stop_emit_ref in - stop_emit_ref := false; - State old - -let pop_callback (State old) = - let res = !stop_emit_ref in - stop_emit_ref := old; - !exit_callback (); - res - -external connect : - 'a obj -> name:string -> callback:(GtkArgv.t -> unit) -> after:bool -> id - = "ml_gtk_signal_connect" -external emit_stop_by_name : 'a obj -> name:string -> unit - = "ml_gtk_signal_emit_stop_by_name" -let connect ~(sgn : ('a, _) t) ~callback ?(after=false) (obj : 'a obj) = - let callback argv = - let old = push_callback () in - let exn = - try sgn.marshaller callback argv (GtkArgv.get_args argv); None - with exn -> Some exn - in - if pop_callback old then emit_stop_by_name obj ~name:sgn.name; - Gaux.may ~f:raise exn - in - connect obj ~name:sgn.name ~callback ~after -external disconnect : 'a obj -> id -> unit - = "ml_gtk_signal_disconnect" -external handler_block : 'a obj -> id -> unit - = "ml_gtk_signal_handler_block" -external handler_unblock : 'a obj -> id -> unit - = "ml_gtk_signal_handler_unblock" - -let marshal_unit f _ _ = f () -let marshal_int f _ = function - | GtkArgv.INT n :: _ -> f n - | _ -> invalid_arg "GtkSignal.marshal_int" - -let emit (obj : 'a obj) ~(sgn : ('a, 'b) t) - ~(emitter : 'a obj -> name:string -> 'b) = - emitter obj ~name:sgn.name -external emit_none : 'a obj -> name:string -> unit -> unit - = "ml_gtk_signal_emit_none" -let emit_unit obj ~sgn = emit obj ~emitter:emit_none ~sgn () -external emit_int : 'a obj -> name:string -> int -> unit - = "ml_gtk_signal_emit_int" -let emit_int = emit ~emitter:emit_int diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkSignal.mli b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkSignal.mli deleted file mode 100644 index 0ef2ab2ea..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkSignal.mli +++ /dev/null @@ -1,45 +0,0 @@ -(* $Id$ *) - -open Gtk - -type id -type ('a,'b) t = - { name: string; - marshaller: ('b -> GtkArgv.t -> GtkArgv.data list -> unit) } - -val stop_emit : unit -> unit - (* Call [stop_emit ()] in a callback to prohibit further handling - of the current signal invocation, by calling [emit_stop_by_name]. - Be careful about where you use it, since the concept of current - signal may be tricky. *) - -val connect : - sgn:('a, 'b) t -> callback:'b -> ?after:bool -> 'a obj -> id - (* You may use [stop_emit] inside the callback *) - -external disconnect : 'a obj -> id -> unit - = "ml_gtk_signal_disconnect" -external emit_stop_by_name : 'a obj -> name:string -> unit - = "ml_gtk_signal_emit_stop_by_name" - (* Unsafe: use [stop_emit] instead. *) -external handler_block : 'a obj -> id -> unit - = "ml_gtk_signal_handler_block" -external handler_unblock : 'a obj -> id -> unit - = "ml_gtk_signal_handler_unblock" - -(* Some marshaller functions, to build signals *) -val marshal_unit : (unit -> unit) -> GtkArgv.t -> GtkArgv.data list -> unit -val marshal_int : (int -> unit) -> GtkArgv.t -> GtkArgv.data list -> unit - -(* Emitter functions *) -val emit : - 'a obj -> sgn:('a, 'b) t -> emitter:('a obj -> name:string -> 'b) -> 'b -val emit_unit : 'a obj -> sgn:('a, unit -> unit) t -> unit -val emit_int : 'a obj -> sgn:('a, int -> unit) t -> int -> unit - -(* Internal functions. *) -val enter_callback : (unit -> unit) ref -val exit_callback : (unit -> unit) ref -type saved_state -val push_callback : unit -> saved_state -val pop_callback : saved_state -> bool diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkThInit.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkThInit.ml deleted file mode 100644 index 517f80be4..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkThInit.ml +++ /dev/null @@ -1,5 +0,0 @@ -(* $Id$ *) - -(* Start the main thread in a threaded toplevel *) - -let thread = GtkThread.start () diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkThread.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkThread.ml deleted file mode 100644 index 3ab577e3e..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkThread.ml +++ /dev/null @@ -1,33 +0,0 @@ -(* $Id$ *) - -open GtkMain - -(* We check first whether there are some event pending, and run - some iterations. We then need to delay, thus focing a thread switch. *) - -let main () = - try - let loop = (Glib.Main.create true) in - Main.loops := loop :: !Main.loops; - while Glib.Main.is_running loop do - let i = ref 0 in - while !i < 100 && Glib.Main.pending () do - Glib.Main.iteration true; - incr i - done; - Thread.delay 0.001 - done; - Main.loops := List.tl !Main.loops - with exn -> - Main.loops := List.tl !Main.loops; - raise exn - -let start = Thread.create main - -let _ = - let mutex = Mutex.create () in - let depth = ref 0 in - GtkSignal.enter_callback := - (fun () -> if !depth = 0 then Mutex.lock mutex; incr depth); - GtkSignal.exit_callback := - (fun () -> decr depth; if !depth = 0 then Mutex.unlock mutex) diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkTree.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkTree.ml deleted file mode 100644 index 926074167..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkTree.ml +++ /dev/null @@ -1,122 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open Tags -open GtkBase - -module TreeItem = struct - let cast w : tree_item obj = Object.try_cast w "GtkTreeItem" - external create : unit -> tree_item obj = "ml_gtk_tree_item_new" - external create_with_label : string -> tree_item obj - = "ml_gtk_tree_item_new_with_label" - let create ?label () = - match label with None -> create () - | Some label -> create_with_label label - external set_subtree : [>`treeitem] obj -> [>`widget] obj -> unit - = "ml_gtk_tree_item_set_subtree" - external remove_subtree : [>`treeitem] obj -> unit - = "ml_gtk_tree_item_remove_subtree" - external expand : [>`treeitem] obj -> unit - = "ml_gtk_tree_item_expand" - external collapse : [>`treeitem] obj -> unit - = "ml_gtk_tree_item_collapse" - external subtree : [>`treeitem] obj -> tree obj - = "ml_GTK_TREE_ITEM_SUBTREE" - module Signals = struct - open GtkSignal - let expand : ([>`treeitem],_) t = - { name = "expand"; marshaller = marshal_unit } - let collapse : ([>`treeitem],_) t = - { name = "collapse"; marshaller = marshal_unit } - end -end - -module Tree = struct - let cast w : tree obj = Object.try_cast w "GtkTree" - external coerce : [>`tree] obj -> tree obj = "%identity" - external create : unit -> tree obj = "ml_gtk_tree_new" - external insert : [>`tree] obj -> [>`treeitem] obj -> pos:int -> unit - = "ml_gtk_tree_insert" - external remove_items : [>`tree] obj -> [>`treeitem] obj list -> unit - = "ml_gtk_tree_remove_items" - external clear_items : [>`tree] obj -> start:int -> stop:int -> unit - = "ml_gtk_tree_clear_items" - external select_item : [>`tree] obj -> pos:int -> unit - = "ml_gtk_tree_select_item" - external unselect_item : [>`tree] obj -> pos:int -> unit - = "ml_gtk_tree_unselect_item" - external child_position : [>`tree] obj -> [>`treeitem] obj -> int - = "ml_gtk_tree_child_position" - external set_selection_mode : [>`tree] obj -> selection_mode -> unit - = "ml_gtk_tree_set_selection_mode" - external set_view_mode : [>`tree] obj -> [`LINE|`ITEM] -> unit - = "ml_gtk_tree_set_view_mode" - external set_view_lines : [>`tree] obj -> bool -> unit - = "ml_gtk_tree_set_view_lines" - external selection : [>`tree] obj -> tree_item obj list = - "ml_gtk_tree_selection" - let set ?selection_mode ?view_mode ?view_lines w = - let may_set f = may ~f:(f w) in - may_set set_selection_mode selection_mode; - may_set set_view_mode view_mode; - may_set set_view_lines view_lines - module Signals = struct - open GtkSignal - let selection_changed : ([>`tree],_) t = - { name = "selection_changed"; marshaller = marshal_unit } - let select_child : ([>`tree],_) t = - { name = "select_child"; marshaller = Widget.Signals.marshal } - let unselect_child : ([>`tree],_) t = - { name = "unselect_child"; marshaller = Widget.Signals.marshal } - end -end -(* -module CTree = struct - type t - type node = [`ctree] obj * t - let cast w : ctree obj = Object.try_cast w "GtkCTree" - external create : cols:int -> treecol:int -> ctree obj = "ml_gtk_ctree_new" - external insert_node : - [>`ctree] obj -> ?parent:node -> ?sibling:node -> - titles:optstring array -> - spacing:int -> ?pclosed:Gdk.pixmap -> ?mclosed:Gdk.bitmap obj -> - ?popened:Gdk.pixmap -> ?mopened:Gdk.bitmap obj -> - is_leaf:bool -> expanded:bool -> node - = "ml_gtk_ctree_insert_node_bc" "ml_gtk_ctree_insert_node" - let insert_node' - w ?parent ?sibling ?(spacing = 0) ?(is_leaf = true) - ?(expanded = false) - ?pclosed ?mclosed ?popened ?mopened titles = - let len = GtkList.CList.get_columns w in - if List.length titles > len then invalid_arg "CTree.insert_node"; - let arr = Array.create ~len None in - List.fold_left titles ~acc:0 - ~f:(fun ~acc text -> arr.(acc) <- Some text; acc+1); - insert_node w - ?parent ?sibling ~titles:(Array.map ~f:optstring arr) - ~spacing ~is_leaf ~expanded - ?pclosed ?mclosed ?popened ?mopened - external node_set_row_data : [>`ctree] obj -> node:node -> Obj.t -> unit - = "ml_gtk_ctree_node_set_row_data" - external node_get_row_data : [>`ctree] obj -> node:node -> Obj.t - = "ml_gtk_ctree_node_get_row_data" - external set_indent : [>`ctree] obj -> int -> unit - = "ml_gtk_ctree_set_indent" - module Signals = struct - open GtkSignal - let marshal_select f argv = - let node : node = - match GtkArgv.get_pointer argv ~pos:0 with - Some p -> Obj.magic p - | None -> invalid_arg "GtkTree.CTree.Signals.marshal_select" - in - f ~node ~column:(GtkArgv.get_int argv ~pos:1) - - let tree_select_row : ([>`ctree],_) t = - { name = "tree_select_row"; marshaller = marshal_select } - let tree_unselect_row : ([>`ctree],_) t = - { name = "tree_unselect_row"; marshaller = marshal_select } - end -end -*) diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkWindow.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkWindow.ml deleted file mode 100644 index ffe00e921..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkWindow.ml +++ /dev/null @@ -1,189 +0,0 @@ -(* $Id$ *) - -open Gaux -open Gtk -open Tags -open GtkBase - -module Window = struct - let cast w : window obj = Object.try_cast w "GtkWindow" - external coerce : [>`window] obj -> window obj = "%identity" - external create : window_type -> window obj = "ml_gtk_window_new" - external set_title : [>`window] obj -> string -> unit - = "ml_gtk_window_set_title" - external set_wmclass : [>`window] obj -> name:string -> clas:string -> unit - = "ml_gtk_window_set_title" - external get_wmclass_name : [>`window] obj -> string - = "ml_gtk_window_get_wmclass_name" - external get_wmclass_class : [>`window] obj -> string - = "ml_gtk_window_get_wmclass_class" - (* set_focus/default are called by Widget.grab_focus/default *) - external set_focus : [>`window] obj -> [>`widget] obj -> unit - = "ml_gtk_window_set_focus" - external set_default : [>`window] obj -> [>`widget] obj -> unit - = "ml_gtk_window_set_default" - external set_policy : - [>`window] obj -> - allow_shrink:bool -> allow_grow:bool -> auto_shrink:bool -> unit - = "ml_gtk_window_set_policy" - external get_allow_shrink : [>`window] obj -> bool - = "ml_gtk_window_get_allow_shrink" - external get_allow_grow : [>`window] obj -> bool - = "ml_gtk_window_get_allow_grow" - external get_auto_shrink : [>`window] obj -> bool - = "ml_gtk_window_get_auto_shrink" - external activate_focus : [>`window] obj -> bool - = "ml_gtk_window_activate_focus" - external activate_default : [>`window] obj -> bool - = "ml_gtk_window_activate_default" - external set_modal : [>`window] obj -> bool -> unit - = "ml_gtk_window_set_modal" - external set_default_size : - [>`window] obj -> width:int -> height:int -> unit - = "ml_gtk_window_set_default_size" - external set_position : [>`window] obj -> window_position -> unit - = "ml_gtk_window_set_position" - external set_transient_for : [>`window] obj ->[>`window] obj -> unit - = "ml_gtk_window_set_transient_for" - - let set_wmclass ?name ?clas:wm_class w = - set_wmclass w ~name:(may_default get_wmclass_name w ~opt:name) - ~clas:(may_default get_wmclass_class w ~opt:wm_class) - let set_policy ?allow_shrink ?allow_grow ?auto_shrink w = - set_policy w - ~allow_shrink:(may_default get_allow_shrink w ~opt:allow_shrink) - ~allow_grow:(may_default get_allow_grow w ~opt:allow_grow) - ~auto_shrink:(may_default get_auto_shrink w ~opt:auto_shrink) - let set ?title ?wm_name ?wm_class ?position ?allow_shrink ?allow_grow - ?auto_shrink ?modal ?(x = -2) ?(y = -2) w = - may title ~f:(set_title w); - if wm_name <> None || wm_class <> None then - set_wmclass w ?name:wm_name ?clas:wm_class; - may position ~f:(set_position w); - if allow_shrink <> None || allow_grow <> None || auto_shrink <> None then - set_policy w ?allow_shrink ?allow_grow ?auto_shrink; - may ~f:(set_modal w) modal; - if x <> -2 || y <> -2 then Widget.set_uposition w ~x ~y - external add_accel_group : [>`window] obj -> accel_group -> unit - = "ml_gtk_window_add_accel_group" - external remove_accel_group : - [>`window] obj -> accel_group -> unit - = "ml_gtk_window_remove_accel_group" - external activate_focus : [>`window] obj -> unit - = "ml_gtk_window_activate_focus" - external activate_default : [>`window] obj -> unit - = "ml_gtk_window_activate_default" - module Signals = struct - open GtkSignal - let move_resize : ([>`window],_) t = - { name = "move_resize"; marshaller = marshal_unit } - let set_focus : ([>`window],_) t = - { name = "set_focus"; marshaller = Widget.Signals.marshal_opt } - end -end - -module Dialog = struct - let cast w : dialog obj = Object.try_cast w "GtkDialog" - external coerce : [>`dialog] obj -> dialog obj = "%identity" - external create : unit -> dialog obj = "ml_gtk_dialog_new" - external action_area : [>`dialog] obj -> box obj - = "ml_GtkDialog_action_area" - external vbox : [>`dialog] obj -> box obj - = "ml_GtkDialog_vbox" -end - -module InputDialog = struct - let cast w : input_dialog obj = Object.try_cast w "GtkInputDialog" - external create : unit -> input_dialog obj = "ml_gtk_input_dialog_new" - module Signals = struct - open GtkSignal - let enable_device : ([>`inputdialog],_) t = - { name = "enable_device"; marshaller = marshal_int } - let disable_device : ([>`inputdialog],_) t = - { name = "disable_device"; marshaller = marshal_int } - end -end - -module FileSelection = struct - let cast w : file_selection obj = Object.try_cast w "GtkFileSelection" - external create : string -> file_selection obj = "ml_gtk_file_selection_new" - external set_filename : [>`filesel] obj -> string -> unit - = "ml_gtk_file_selection_set_filename" - external get_filename : [>`filesel] obj -> string - = "ml_gtk_file_selection_get_filename" - external show_fileop_buttons : [>`filesel] obj -> unit - = "ml_gtk_file_selection_show_fileop_buttons" - external hide_fileop_buttons : [>`filesel] obj -> unit - = "ml_gtk_file_selection_hide_fileop_buttons" - external get_ok_button : [>`filesel] obj -> button obj - = "ml_gtk_file_selection_get_ok_button" - external get_cancel_button : [>`filesel] obj -> button obj - = "ml_gtk_file_selection_get_cancel_button" - external get_help_button : [>`filesel] obj -> button obj - = "ml_gtk_file_selection_get_help_button" - let set_fileop_buttons w = function - true -> show_fileop_buttons w - | false -> hide_fileop_buttons w - let set ?filename ?fileop_buttons w = - may filename ~f:(set_filename w); - may fileop_buttons ~f:(set_fileop_buttons w) -end - -module FontSelectionDialog = struct - let cast w : font_selection_dialog obj = - Object.try_cast w "GtkFontSelectionDialog" - external create : ?title:string -> unit -> font_selection_dialog obj - = "ml_gtk_font_selection_dialog_new" - external font_selection : [>`fontseldialog] obj -> font_selection obj - = "ml_gtk_font_selection_dialog_fontsel" - external ok_button : [>`fontseldialog] obj -> button obj - = "ml_gtk_font_selection_dialog_ok_button" - external apply_button : [>`fontseldialog] obj -> button obj - = "ml_gtk_font_selection_dialog_apply_button" - external cancel_button : [>`fontseldialog] obj -> button obj - = "ml_gtk_font_selection_dialog_cancel_button" -(* - type null_terminated - let null_terminated arg : null_terminated = - match arg with None -> Obj.magic Gpointer.raw_null - | Some l -> - let len = List.length l in - let arr = Array.create (len + 1) "" in - let rec loop i = function - [] -> arr.(i) <- Obj.magic Gpointer.raw_null - | s::l -> arr.(i) <- s; loop (i+1) l - in loop 0 l; - Obj.magic (arr : string array) - external get_font : [>`fontseldialog] obj -> Gdk.font - = "ml_gtk_font_selection_dialog_get_font" - let get_font w = - try Some (get_font w) with Gpointer.Null -> None - external get_font_name : [>`fontseldialog] obj -> string - = "ml_gtk_font_selection_dialog_get_font_name" - let get_font_name w = - try Some (get_font_name w) with Gpointer.Null -> None - external set_font_name : [>`fontseldialog] obj -> string -> unit - = "ml_gtk_font_selection_dialog_set_font_name" - external set_filter : - [>`fontseldialog] obj -> font_filter_type -> font_type list -> - null_terminated -> null_terminated -> null_terminated -> - null_terminated -> null_terminated -> null_terminated -> unit - = "ml_gtk_font_selection_dialog_set_filter_bc" - "ml_gtk_font_selection_dialog_set_filter" - let set_filter w ?kind:(tl=[`ALL]) ?foundry - ?weight ?slant ?setwidth ?spacing ?charset filter = - set_filter w filter tl (null_terminated foundry) - (null_terminated weight) (null_terminated slant) - (null_terminated setwidth) (null_terminated spacing) - (null_terminated charset) - external get_preview_text : [>`fontseldialog] obj -> string - = "ml_gtk_font_selection_dialog_get_preview_text" - external set_preview_text : [>`fontseldialog] obj -> string -> unit - = "ml_gtk_font_selection_dialog_set_preview_text" -*) -end - -module Plug = struct - let cast w : plug obj = Object.try_cast w "GtkPlug" - external create : Gdk.xid -> plug obj = "ml_gtk_plug_new" -end diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkXmHTML.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkXmHTML.ml deleted file mode 100644 index 3bf5791a4..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkXmHTML.ml +++ /dev/null @@ -1,109 +0,0 @@ -(* $Id$ *) - -open Gtk - -type string_direction = [ - | `R_TO_L - | `L_TO_R -] - -type position = [ - | `END - | `CENTER - | `BEGINNING -] - -type line_type = [ - | `SOLID - | `DASHED - | `SINGLE - | `DOUBLE - | `STRIKE - | `UNDER - | `NONE -] - -type dither_type = [ - | `QUICK - | `BEST - | `FAST - | `SLOW - | `DISABLED -] - -type xmhtml = [`widget|`container|`xmhtml] - -external create : unit -> xmhtml obj = "ml_gtk_xmhtml_new" -external freeze : [> `xmhtml] obj -> unit = "ml_gtk_xmhtml_freeze" -external thaw : [> `xmhtml] obj -> unit = "ml_gtk_xmhtml_thaw" -external source : [> `xmhtml] obj -> string -> unit = "ml_gtk_xmhtml_source" -(* external get_source : [> `xmhtml] obj -> string = "ml_gtk_xmhtml_get_source" *) -external set_string_direction : [> `xmhtml] obj -> string_direction -> unit - = "ml_gtk_xmhtml_set_string_direction" -external set_alignment : [> `xmhtml] obj -> position -> unit - = "ml_gtk_xmhtml_set_alignment" -(* external set_outline : [> `xmhtml] obj -> bool -> unit - = "ml_gtk_xmhtml_outline" *) -external set_font_familty : - [> `xmhtml] obj -> family:string -> sizes:string -> unit - = "ml_gtk_xmhtml_set_font_familty" -external set_font_familty_fixed : - [> `xmhtml] obj -> family:string -> sizes:string -> unit - = "ml_gtk_xmhtml_set_font_familty_fixed" -external set_font_charset : [> `xmhtml] obj -> string -> unit - = "ml_gtk_xmhtml_set_font_charset" -external set_allow_body_colors : [> `xmhtml] obj -> bool -> unit - = "ml_gtk_xmhtml_set_allow_body_colors" -external set_hilight_on_enter : [> `xmhtml] obj -> bool -> unit - = "ml_gtk_xmhtml_set_hilight_on_enter" -external set_anchor_underline_type : [> `xmhtml] obj -> line_type list -> unit - = "ml_gtk_xmhtml_set_anchor_underline_type" -external set_anchor_visited_underline_type : - [> `xmhtml] obj -> line_type list -> unit - = "ml_gtk_xmhtml_set_anchor_visited_underline_type" -external set_anchor_target_underline_type : - [> `xmhtml] obj -> line_type list -> unit - = "ml_gtk_xmhtml_set_anchor_target_underline_type" -external set_allow_color_switching : [> `xmhtml] obj -> bool -> unit - = "ml_gtk_xmhtml_set_allow_color_switching" -external set_dithering : [> `xmhtml] obj -> dither_type -> unit - = "ml_gtk_xmhtml_set_dithering" -external set_allow_font_switching : [> `xmhtml] obj -> bool -> unit - = "ml_gtk_xmhtml_set_allow_font_switching" -external set_max_image_colors : [> `xmhtml] obj -> int -> unit - = "ml_gtk_xmhtml_set_max_image_colors" -external set_allow_images : [> `xmhtml] obj -> bool -> unit - = "ml_gtk_xmhtml_set_allow_images" -external set_plc_intervals : - [> `xmhtml] obj -> min:int -> max:int -> default:int -> unit - = "ml_gtk_xmhtml_set_plc_intervals" -(* -external set_def_body_image_url : [> `xmhtml] obj -> string -> unit - = "ml_gtk_xmhtml_set_def_body_image_url" -*) -external set_anchor_buttons : [> `xmhtml] obj -> bool -> unit - = "ml_gtk_xmhtml_set_anchor_buttons" -external set_anchor_cursor : [> `xmhtml] obj -> Gdk.cursor option -> unit - = "ml_gtk_xmhtml_set_anchor_cursor" -external set_topline : [> `xmhtml] obj -> int -> unit - = "ml_gtk_xmhtml_set_topline" -external get_topline : [> `xmhtml] obj -> int - = "ml_gtk_xmhtml_get_topline" -external set_freeze_animations : [> `xmhtml] obj -> bool -> unit - = "ml_gtk_xmhtml_set_freeze_animations" -external set_screen_gamma : [> `xmhtml] obj -> float -> unit - = "ml_gtk_xmhtml_set_screen_gamma" -external set_perfect_colors : [> `xmhtml] obj -> bool -> unit - = "ml_gtk_xmhtml_set_perfect_colors" -external set_uncompress_command : [> `xmhtml] obj -> string -> unit - = "ml_gtk_xmhtml_set_uncompress_command" -external set_strict_checking : [> `xmhtml] obj -> bool -> unit - = "ml_gtk_xmhtml_set_strict_checking" -external set_bad_html_warnings : [> `xmhtml] obj -> bool -> unit - = "ml_gtk_xmhtml_set_bad_html_warnings" -external set_allow_form_coloring : [> `xmhtml] obj -> bool -> unit - = "ml_gtk_xmhtml_set_allow_form_coloring" -external set_imagemap_draw : [> `xmhtml] obj -> bool -> unit - = "ml_gtk_xmhtml_set_imagemap_draw" -external set_alpha_processing : [> `xmhtml] obj -> bool -> unit - = "ml_gtk_xmhtml_set_alpha_processing" diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtk_tags.var b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtk_tags.var deleted file mode 100644 index b2a7d2a80..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtk_tags.var +++ /dev/null @@ -1,169 +0,0 @@ -(* $Id$ *) - -type arrow_type = "GTK_ARROW_" - [ `UP | `DOWN | `LEFT | `RIGHT ] - -type attach_options = "GTK_" - [ `EXPAND | `SHRINK | `FILL ] - -type button_box_style = "GTK_BUTTONBOX_" - [ `DEFAULT_STYLE | `SPREAD | `EDGE | `START | `END ] - -type direction_type = "GTK_DIR_" - [ `TAB_FORWARD | `TAB_BACKWARD | `UP | `DOWN | `LEFT | `RIGHT ] - -type justification = "GTK_JUSTIFY_" - [ `LEFT | `RIGHT | `CENTER | `FILL ] - -type match_type = "GTK_MATCH_" - [ `ALL | `ALL_TAIL | `HEAD | `TAIL | `EXACT | `LAST ] - -type metric_type = "GTK_" - [ `PIXELS | `INCHES | `CENTIMETERS ] - -type orientation = "GTK_ORIENTATION_" - [ `HORIZONTAL | `VERTICAL ] - -type corner_type = "GTK_CORNER_" - [ `TOP_LEFT | `BOTTOM_LEFT | `TOP_RIGHT | `BOTTOM_RIGHT ] - -type pack_type = "GTK_PACK_" - [ `START | `END ] - -type path_type = "GTK_PATH_" - [ `WIDGET | `WIDGET_CLASS | `CLASS ] - -type policy_type = "GTK_POLICY_" - [ `ALWAYS | `AUTOMATIC | `NEVER ] - -type position = "GTK_POS_" - [ `LEFT | `RIGHT | `TOP | `BOTTOM ] - -type preview_type = "GTK_PREVIEW_" - [ `COLOR | `GRAYSCALE ] - -type relief_style = "GTK_RELIEF_" - [ `NORMAL | `HALF | `NONE ] - -type resize_mode = "GTK_RESIZE_" - [ `PARENT | `QUEUE | `IMMEDIATE ] - -type signal_run_type = "GTK_RUN_" - [ `FIRST | `LAST | `BOTH | `NO_RECURSE | `ACTION | `NO_HOOKS ] - -type scroll_type = "GTK_SCROLL_" - [ `NONE | `STEP_FORWARD | `STEP_BACKWARD | `PAGE_BACKWARD - | `PAGE_FORWARD | `JUMP ] - -type selection_mode = "GTK_SELECTION_" - [ `SINGLE | `BROWSE | `MULTIPLE | `EXTENDED ] - -type shadow_type = "GTK_SHADOW_" - [ `NONE | `IN | `OUT | `ETCHED_IN | `ETCHED_OUT ] - -type state_type = "GTK_STATE_" - [ `NORMAL | `ACTIVE | `PRELIGHT | `SELECTED | `INSENSITIVE ] - -type submenu_direction = "GTK_DIRECTION_" - [ `LEFT | `RIGHT ] - -type submenu_placement = "GTK_" - [ `TOP_BOTTOM | `LEFT_RIGHT ] - -type toolbar_style = "GTK_TOOLBAR_" - [ `ICONS | `TEXT | `BOTH ] - -type trough_type = "GTK_TROUGH_" - [ `NONE | `START | `END | `JUMP ] - -type update_type = "GTK_UPDATE_" - [ `CONTINUOUS | `DISCONTINUOUS | `DELAYED ] - -type visibility = "GTK_VISIBILITY_" - [ `NONE | `PARTIAL | `FULL ] - -type window_position = "GTK_WIN_POS_" - [ `NONE | `CENTER | `MOUSE | `CENTER_ALWAYS ] - -type window_type = "GTK_WINDOW_" - [ `TOPLEVEL | `DIALOG | `POPUP ] - -type sort_type = "GTK_SORT_" - [ `ASCENDING | `DESCENDING ] - - -type fundamental_type = "GTK_TYPE_" - [ `INVALID | `NONE | `CHAR | `BOOL | `INT | `UINT | `LONG | `ULONG - | `FLOAT | `DOUBLE | `STRING | `ENUM | `FLAGS | `BOXED | `FOREIGN - | `CALLBACK | `ARGS | `POINTER | `SIGNAL | `C_CALLBACK | `OBJECT ] - -type cell_type = "GTK_CELL_" - [ `EMPTY | `TEXT | `PIXMAP | `PIXTEXT | `WIDGET ] - -type toolbar_child = "GTK_TOOLBAR_CHILD_" - [ `SPACE | `BUTTON | `TOGGLEBUTTON | `RADIOBUTTON | `WIDGET ] - -type toolbar_space_style = "GTK_TOOLBAR_SPACE_" - [ `EMPTY | `LINE ] - -type tree_view_mode = "GTK_TREE_VIEW_" - [ `LINE | `ITEM ] - -type spin_type = "GTK_SPIN_" - [ `STEP_FORWARD | `STEP_BACKWARD | `PAGE_FORWARD | `PAGE_BACKWARD - | `HOME | `END | `USER_DEFINED ] - -type accel_flag = "GTK_ACCEL_" - [ `VISIBLE | `SIGNAL_VISIBLE | `LOCKED ] - -type packer_options = "GTK_" - [ `PACK_EXPAND | `FILL_X | `FILL_Y ] - -type side_type = "GTK_SIDE_" - [ `TOP | `BOTTOM | `LEFT | `RIGHT ] - -type anchor_type = "GTK_ANCHOR_" - [ `CENTER | `NORTH | `NW | `NE | `SOUTH | `SW | `SE | `WEST | `EAST ] - -type button_action = "GTK_BUTTON_" - [ `SELECTS | `DRAGS | `EXPANDS ] - -type calendar_display_options = "GTK_CALENDAR_" - [ `SHOW_HEADING | `SHOW_DAY_NAMES | `NO_MONTH_CHANGE | `SHOW_WEEK_NUMBERS - | `WEEK_START_MONDAY ] - -type progress_bar_style = "GTK_PROGRESS_" - [ `CONTINUOUS | `DISCRETE ] - -type progress_bar_orientation = "GTK_PROGRESS_" - [ `LEFT_TO_RIGHT | `RIGHT_TO_LEFT | `BOTTOM_TO_TOP | `TOP_TO_BOTTOM ] - -type dest_defaults = "GTK_DEST_DEFAULT_" - [ `MOTION | `HIGHLIGHT | `DROP | `ALL ] - -type target_flags = "GTK_TARGET_" - [ `SAME_APP | `SAME_WIDGET ] - -type font_metric_type = "GTK_FONT_METRIC_" - [ `PIXELS | `POINTS ] - -type font_type = "GTK_FONT_" - [ `BITMAP | `SCALABLE | `SCALABLE_BITMAP | `ALL ] - -type font_filter_type = "GTK_FONT_FILTER_" - [ `BASE | `USER ] - -(* -type tree_pos = "GTK_CTREE_POS_" - [ `BEFORE | `AS_CHILD | `AFTER ] - -type tree_line_style = "GTK_CTREE_LINES_" - [ `NONE | `SOLID | `DOTTED | `TABBED ] - -type tree_expander_style = "GTK_CTREE_EXPANDER_" - [ `NONE | `SQUARE | `TRIANGLE | `CIRCULAR ] - -type tree_expansion_type = "GTK_CTREE_EXPANSION_" - [ `EXPAND | `EXPAND_RECURSIVE | `COLLAPSE | `COLLAPSE_RECURSIVE - | `TOGGLE | `TOGGLE_RECURSIVE ] -*) diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkgl_tags.var b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkgl_tags.var deleted file mode 100644 index 57a9f7365..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkgl_tags.var +++ /dev/null @@ -1,19 +0,0 @@ -(* $Id$ *) - -type visual_options = "GDK_GL_" [ - | `USE_GL - | `BUFFER_SIZE - | `LEVEL - | `RGBA - | `DOUBLEBUFFER - | `STEREO - | `AUX_BUFFERS - | `RED_SIZE - | `GREEN_SIZE - | `BLUE_SIZE - | `ALPHA_SIZE - | `DEPTH_SIZE - | `STENCIL_SIZE - | `ACCUM_GREEN_SIZE - | `ACCUM_ALPHA_SIZE -] diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkxmhtml_tags.var b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkxmhtml_tags.var deleted file mode 100644 index f26206ecf..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/gtkxmhtml_tags.var +++ /dev/null @@ -1,30 +0,0 @@ -(* $Id$ *) - -type string_direction = "TSTRING_DIRECTION_" [ - | `R_TO_L - | `L_TO_R -] - -type alignment = "TALIGNMENT_" [ - | `END - | `CENTER - | `BEGINNING -] - -type line_type = "LINE_" [ - | `SOLID - | `DASHED - | `SINGLE - | `DOUBLE - | `STRIKE - | `UNDER - | `NONE "NO_LINE" -] - -type dither_type = "Xm" [ - | `QUICK - | `BEST - | `FAST - | `SLOW - | `DISABLED -] diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/lablgl.patch b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/lablgl.patch deleted file mode 100644 index c48de24d7..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/lablgl.patch +++ /dev/null @@ -1,112 +0,0 @@ -Index: Makefile -=================================================================== -RCS file: /staff2/garrigue/repos/lablGL/Makefile,v -retrieving revision 1.33 -retrieving revision 1.34 -diff -c -r1.33 -r1.34 -*** Makefile 1998/09/17 03:16:06 1.33 ---- Makefile 1999/06/18 07:39:08 1.34 -*************** -*** 12,22 **** - OTHERLIBS=-L$(LABLTKDIR) -llabltk41 $(LIBS) - - # Files -! MLOBJS = raw.cmo togl.cmo \ - gl.cmo glLight.cmo glList.cmo glMap.cmo \ - glMat.cmo glMisc.cmo glPix.cmo glClear.cmo \ - glTex.cmo glDraw.cmo glFunc.cmo gluMisc.cmo \ - gluNurbs.cmo gluQuadric.cmo gluTess.cmo gluMat.cmo - OPTOBJS = $(MLOBJS:.cmo=.cmx) - COBJS = ml_gl.o ml_glu.o ml_togl.o ml_raw.o \ - $(TOGLDIR)/togl.o ---- 12,23 ---- - OTHERLIBS=-L$(LABLTKDIR) -llabltk41 $(LIBS) - - # Files -! LIBOBJS = raw.cmo \ - gl.cmo glLight.cmo glList.cmo glMap.cmo \ - glMat.cmo glMisc.cmo glPix.cmo glClear.cmo \ - glTex.cmo glDraw.cmo glFunc.cmo gluMisc.cmo \ - gluNurbs.cmo gluQuadric.cmo gluTess.cmo gluMat.cmo -+ MLOBJS = $(LIBOBJS) togl.cmo - OPTOBJS = $(MLOBJS:.cmo=.cmx) - COBJS = ml_gl.o ml_glu.o ml_togl.o ml_raw.o \ - $(TOGLDIR)/togl.o -*************** -*** 53,60 **** - var2switch: var2switch.cmo - $(LINKER) var2switch.cmo -o $@ - -! lablgl.cma: $(MLOBJS) -! $(LIBRARIAN) -o lablgl.cma $(MLOBJS) - - lablgl.cmxa: $(OPTOBJS) - $(OPTLIB) -o lablgl.cmxa $(OPTOBJS) ---- 54,61 ---- - var2switch: var2switch.cmo - $(LINKER) var2switch.cmo -o $@ - -! lablgl.cma: $(LIBOBJS) -! $(LIBRARIAN) -o lablgl.cma $(LIBOBJS) - - lablgl.cmxa: $(OPTOBJS) - $(OPTLIB) -o lablgl.cmxa $(OPTOBJS) -*************** -*** 66,74 **** - $(TOGLDIR)/togl.o: - cd $(TOGLDIR) && $(MAKE) togl.o - -! lablgltop: lablgl.cma liblablgl.a - olablmktop $(OLABLINC) -custom -o lablgltop \ -! unix.cma tk41.cma lablgl.cma \ - -cclib "-L. -llablgl -lunix $(OTHERLIBS)" - - lablgl: lablgl.in Makefile.config ---- 67,75 ---- - $(TOGLDIR)/togl.o: - cd $(TOGLDIR) && $(MAKE) togl.o - -! lablgltop: lablgl.cma togl.cmo liblablgl.a - olablmktop $(OLABLINC) -custom -o lablgltop \ -! unix.cma tk41.cma lablgl.cma togl.cmo \ - -cclib "-L. -llablgl -lunix $(OTHERLIBS)" - - lablgl: lablgl.in Makefile.config -*************** -*** 107,113 **** - if test -d $(INSTALLDIR); then : ; else mkdir -p $(INSTALLDIR); fi - cp $(MLOBJS:.cmo=.cmi) $(INSTALLDIR) - cp $(MLOBJS:.cmo=.mli) $(INSTALLDIR) -! cp lablgl.cma liblablgl.a $(INSTALLDIR) - cp lablgltop $(INSTALLDIR) - cp lablgl lablgllink $(BINDIR) - if test -f lablgl.cmxa; then : ; \ ---- 108,114 ---- - if test -d $(INSTALLDIR); then : ; else mkdir -p $(INSTALLDIR); fi - cp $(MLOBJS:.cmo=.cmi) $(INSTALLDIR) - cp $(MLOBJS:.cmo=.mli) $(INSTALLDIR) -! cp lablgl.cma togl.cmo liblablgl.a $(INSTALLDIR) - cp lablgltop $(INSTALLDIR) - cp lablgl lablgllink $(BINDIR) - if test -f lablgl.cmxa; then : ; \ -Index: lablgllink.in -=================================================================== -RCS file: /staff2/garrigue/repos/lablGL/lablgllink.in,v -retrieving revision 1.2 -retrieving revision 1.3 -diff -c -r1.2 -r1.3 -*** lablgllink.in 1998/09/16 10:26:17 1.2 ---- lablgllink.in 1999/06/18 07:39:09 1.3 -*************** -*** 1,5 **** - #!/bin/sh - - exec olablc -custom @INCLUDES@ -I @INSTALLDIR@ \ -! tk41.cma lablgl.cma $* -cclib "-L@INSTALLDIR@ -llablgl" \ - -cclib "@OTHERLIBS@" ---- 1,5 ---- - #!/bin/sh - - exec olablc -custom @INCLUDES@ -I @INSTALLDIR@ \ -! tk41.cma lablgl.cma togl.cmo $* -cclib "-L@INSTALLDIR@ -llablgl" \ - -cclib "@OTHERLIBS@" diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/lablgtk.in b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/lablgtk.in deleted file mode 100644 index 98015140c..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/lablgtk.in +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/sh - -thread="no" - -case $1 in --help) - echo "Usage: lablgtk [-thread] [script-file]" - echo " -thread use the threaded version of the toplevel" - ;; --thread) - thread=yes - shift - ;; -esac - -if test $thread = yes; then - toplevel="@INSTALLDIR@/lablgtktop_t -I @LIBDIR@/threads" -else - toplevel=@INSTALLDIR@/lablgtktop -fi - -exec $toplevel -w s \ - -I @LABLGLDIR@ \ - -I @INSTALLDIR@ $* diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gdk.c b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gdk.c deleted file mode 100644 index 052625888..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gdk.c +++ /dev/null @@ -1,522 +0,0 @@ -/* $Id$ */ - -#include -#include -#ifdef _WIN32 -#include -#else -#include -#endif -#include -#include -#include -#include - -#include "wrappers.h" -#include "ml_glib.h" -#include "ml_gdk.h" -#include "gdk_tags.h" - -void ml_raise_gdk (const char *errmsg) -{ - static value * exn = NULL; - if (exn == NULL) - exn = caml_named_value ("gdkerror"); - raise_with_string (*exn, (char*)errmsg); -} - -#include "gdk_tags.c" - -Make_OptFlags_val (GdkModifier_val) -Make_Flags_val (Event_mask_val) - -#define Make_test(conv) \ -value ml_test_##conv (value mask, value test) \ -{ return Val_bool (conv(mask) & Int_val(test)); } - -Make_test(GdkModifier_val) - -/* Colormap */ - -Make_Val_final_pointer (GdkColormap, gdk_colormap_ref, gdk_colormap_unref, 0) -ML_0 (gdk_colormap_get_system, Val_GdkColormap) - -/* Screen geometry */ -ML_0 (gdk_screen_width, Val_int) -ML_0 (gdk_screen_height, Val_int) - -/* Visual */ -value ml_gdk_visual_get_best (value depth, value type) -{ - GdkVisual *vis; - if (type == Val_unit) - if (depth == Val_unit) vis = gdk_visual_get_best (); - else vis = gdk_visual_get_best_with_depth (Int_val(Field(depth,0))); - else - if (depth == Val_unit) - vis = gdk_visual_get_best_with_type - (GdkVisualType_val(Field(type,0))); - else vis = gdk_visual_get_best_with_both - (Int_val(Field(depth,0)),GdkVisualType_val(Field(type,0))); - if (!vis) ml_raise_gdk("Gdk.Visual.get_best"); - return Val_GdkVisual(vis); -} - -Make_Extractor (GdkVisual,GdkVisual_val,type,Val_gdkVisualType) -Make_Extractor (GdkVisual,GdkVisual_val,depth,Val_int) -Make_Extractor (GdkVisual,GdkVisual_val,red_mask,Val_int) -Make_Extractor (GdkVisual,GdkVisual_val,red_shift,Val_int) -Make_Extractor (GdkVisual,GdkVisual_val,red_prec,Val_int) -Make_Extractor (GdkVisual,GdkVisual_val,green_mask,Val_int) -Make_Extractor (GdkVisual,GdkVisual_val,green_shift,Val_int) -Make_Extractor (GdkVisual,GdkVisual_val,green_prec,Val_int) -Make_Extractor (GdkVisual,GdkVisual_val,blue_mask,Val_int) -Make_Extractor (GdkVisual,GdkVisual_val,blue_shift,Val_int) -Make_Extractor (GdkVisual,GdkVisual_val,blue_prec,Val_int) - -/* Image */ - -Make_Val_final_pointer (GdkImage, Ignore, gdk_image_destroy, 0) -GdkImage *GdkImage_val(value val) -{ - if (!Field(val,1)) ml_raise_gdk ("attempt to use destroyed GdkImage"); - return (GdkImage*)(Field(val,1)); -} -value ml_gdk_image_destroy (value val) -{ - if (Field(val,1)) gdk_image_destroy((GdkImage*)(Field(val,1))); - Field(val,1) = 0; - return Val_unit; -} -ML_4 (gdk_image_new_bitmap, GdkVisual_val, String_val, Int_val, Int_val, - Val_GdkImage) -ML_4 (gdk_image_new, GdkImageType_val, GdkVisual_val, Int_val, Int_val, - Val_GdkImage) -ML_5 (gdk_image_get, GdkWindow_val, Int_val, Int_val, Int_val, Int_val, - Val_GdkImage) -ML_4 (gdk_image_put_pixel, GdkImage_val, Int_val, Int_val, Int_val, Unit) -ML_3 (gdk_image_get_pixel, GdkImage_val, Int_val, Int_val, Val_int) - -/* Color */ - -ML_2 (gdk_colormap_new, GdkVisual_val, Bool_val, Val_GdkColormap) - -value ml_gdk_color_white (value cmap) -{ - GdkColor color; - gdk_color_white (GdkColormap_val(cmap), &color); - return Val_copy(color); -} - -value ml_gdk_color_black (value cmap) -{ - GdkColor color; - gdk_color_black (GdkColormap_val(cmap), &color); - return Val_copy(color); -} - -value ml_gdk_color_parse (char *spec) -{ - GdkColor color; - if (!gdk_color_parse (spec, &color)) - ml_raise_gdk ("color_parse"); - return Val_copy(color); -} - -ML_2 (gdk_color_alloc, GdkColormap_val, GdkColor_val, Val_bool) - -value ml_GdkColor (value red, value green, value blue) -{ - GdkColor color; - color.red = Int_val(red); - color.green = Int_val(green); - color.blue = Int_val(blue); - color.pixel = 0; - return Val_copy(color); -} - -Make_Extractor (GdkColor, GdkColor_val, red, Val_int) -Make_Extractor (GdkColor, GdkColor_val, green, Val_int) -Make_Extractor (GdkColor, GdkColor_val, blue, Val_int) -Make_Extractor (GdkColor, GdkColor_val, pixel, Val_int) - -/* Rectangle */ - -value ml_GdkRectangle (value x, value y, value width, value height) -{ - GdkRectangle rectangle; - rectangle.x = Int_val(x); - rectangle.y = Int_val(y); - rectangle.width = Int_val(width); - rectangle.height = Int_val(height); - return Val_copy(rectangle); -} - -Make_Extractor (GdkRectangle, GdkRectangle_val, x, Val_int) -Make_Extractor (GdkRectangle, GdkRectangle_val, y, Val_int) -Make_Extractor (GdkRectangle, GdkRectangle_val, width, Val_int) -Make_Extractor (GdkRectangle, GdkRectangle_val, height, Val_int) - -/* Window */ - -Make_Val_final_pointer (GdkWindow, gdk_window_ref, gdk_window_unref, 0) -Make_Extractor (gdk_visual_get, GdkVisual_val, depth, Val_int) -ML_1 (gdk_window_get_visual, GdkWindow_val, Val_GdkVisual) -ML_3 (gdk_window_set_back_pixmap, GdkWindow_val, GdkPixmap_val, Int_val, Unit) -ML_1 (gdk_window_clear, GdkWindow_val, Unit) -ML_0 (GDK_ROOT_PARENT, Val_GdkWindow) -ML_1 (gdk_window_get_parent, GdkWindow_val, Val_GdkWindow) -ML_1 (GDK_WINDOW_XWINDOW, GdkWindow_val, Val_XID) -value ml_gdk_window_get_position (value window) -{ - int x, y; - value ret; - - gdk_window_get_position (GdkWindow_val(window), &x, &y); - - ret = alloc_small (2,0); - Field(ret,0) = Val_int(x); - Field(ret,1) = Val_int(y); - return ret; -} - -value ml_gdk_window_get_size (value window) -{ - int x, y; - value ret; - - gdk_window_get_size (GdkWindow_val(window), &x, &y); - - ret = alloc_small (2,0); - Field(ret,0) = Val_int(x); - Field(ret,1) = Val_int(y); - return ret; -} - -/* Cursor */ - -ML_1 (gdk_cursor_new, GdkCursorType_val, Val_GdkCursor) -ML_6 (gdk_cursor_new_from_pixmap, GdkPixmap_val, GdkPixmap_val, - GdkColor_val, GdkColor_val, Int_val, Int_val, Val_GdkCursor) -ML_bc6 (ml_gdk_cursor_new_from_pixmap) -ML_1 (gdk_cursor_destroy, GdkCursor_val, Unit) - -/* Pixmap */ - -Make_Val_final_pointer (GdkPixmap, gdk_pixmap_ref, gdk_pixmap_unref, 0) -Make_Val_final_pointer (GdkBitmap, gdk_bitmap_ref, gdk_bitmap_unref, 0) -Make_Val_final_pointer_ext (GdkPixmap, _no_ref, Ignore, gdk_pixmap_unref, 20) -Make_Val_final_pointer_ext (GdkBitmap, _no_ref, Ignore, gdk_bitmap_unref, 20) -ML_4 (gdk_pixmap_new, GdkWindow_val, Int_val, Int_val, Int_val, - Val_GdkPixmap_no_ref) -ML_4 (gdk_bitmap_create_from_data, GdkWindow_val, - String_val, Int_val, Int_val, Val_GdkBitmap_no_ref) -ML_7 (gdk_pixmap_create_from_data, GdkWindow_val, String_val, - Int_val, Int_val, Int_val, GdkColor_val, GdkColor_val, - Val_GdkPixmap_no_ref) -ML_bc7 (ml_gdk_pixmap_create_from_data) - -value ml_gdk_pixmap_colormap_create_from_xpm - (value window, value colormap, value transparent, char *filename) -{ - CAMLparam0(); - GdkBitmap *mask; - CAMLlocal2(vpixmap, vmask); - value ret; - - vpixmap = Val_GdkPixmap_no_ref - (gdk_pixmap_colormap_create_from_xpm - (GdkWindow_val(window), Option_val(colormap,GdkColormap_val,NULL), - &mask, Option_val(transparent,GdkColor_val,NULL), filename)); - vmask = Val_GdkBitmap_no_ref (mask); - - ret = alloc_small (2,0); - Field(ret,0) = vpixmap; - Field(ret,1) = vmask; - CAMLreturn(ret); -} - -value ml_gdk_pixmap_colormap_create_from_xpm_d - (value window, value colormap, value transparent, char **data) -{ - CAMLparam0(); - GdkBitmap *mask; - CAMLlocal2(vpixmap, vmask); - value ret; - - vpixmap = Val_GdkPixmap_no_ref - (gdk_pixmap_colormap_create_from_xpm_d - (GdkWindow_val(window), Option_val(colormap,GdkColormap_val,NULL), - &mask, Option_val(transparent,GdkColor_val,NULL), data)); - vmask = Val_GdkBitmap_no_ref (mask); - - ret = alloc_small (2, 0); - Field(ret,0) = vpixmap; - Field(ret,1) = vmask; - CAMLreturn(ret); -} - -/* Font */ - -Make_Val_final_pointer (GdkFont, gdk_font_ref, gdk_font_unref, 0) -Make_Val_final_pointer_ext (GdkFont, _no_ref, Ignore, gdk_font_unref, 20) -ML_1 (gdk_font_load, String_val, Val_GdkFont_no_ref) -ML_1 (gdk_fontset_load, String_val, Val_GdkFont_no_ref) -ML_2 (gdk_string_width, GdkFont_val, String_val, Val_int) -ML_2 (gdk_char_width, GdkFont_val, (gchar)Long_val, Val_int) -ML_2 (gdk_string_height, GdkFont_val, String_val, Val_int) -ML_2 (gdk_char_height, GdkFont_val, (gchar)Long_val, Val_int) -ML_2 (gdk_string_measure, GdkFont_val, String_val, Val_int) -ML_2 (gdk_char_measure, GdkFont_val, (char)Long_val, Val_int) -Make_Extractor (GdkFont, GdkFont_val, type, Val_gdkFontType) -Make_Extractor (GdkFont, GdkFont_val, ascent, Val_int) -Make_Extractor (GdkFont, GdkFont_val, descent, Val_int) - -/* Region */ - -#define PointArray_val(val) ((GdkPoint*)&Field(val,1)) -#define PointArrayLen_val(val) Int_val(Field(val,0)) -Make_Val_final_pointer (GdkRegion, Ignore, gdk_region_destroy, 0) -GdkRegion *GdkRegion_val(value val) -{ - if (!Field(val,1)) ml_raise_gdk ("attempt to use destroyed GdkRegion"); - return (GdkRegion*)(Field(val,1)); -} -value ml_gdk_region_destroy (value val) -{ - if (Field(val,1)) gdk_region_destroy((GdkRegion*)(Field(val,1))); - Field(val,1) = 0; - return Val_unit; -} -ML_0 (gdk_region_new, Val_GdkRegion) -ML_2 (gdk_region_polygon, Insert(PointArray_val(arg1)) PointArrayLen_val, - GdkFillRule_val, Val_GdkRegion) -ML_2 (gdk_regions_intersect, GdkRegion_val, GdkRegion_val, Val_GdkRegion) -ML_2 (gdk_regions_union, GdkRegion_val, GdkRegion_val, Val_GdkRegion) -ML_2 (gdk_regions_subtract, GdkRegion_val, GdkRegion_val, Val_GdkRegion) -ML_2 (gdk_regions_xor, GdkRegion_val, GdkRegion_val, Val_GdkRegion) -ML_2 (gdk_region_union_with_rect, GdkRegion_val, GdkRectangle_val, - Val_GdkRegion) -ML_3 (gdk_region_offset, GdkRegion_val, Int_val, Int_val, Unit) -ML_3 (gdk_region_shrink, GdkRegion_val, Int_val, Int_val, Unit) -ML_1 (gdk_region_empty, GdkRegion_val, Val_bool) -ML_2 (gdk_region_equal, GdkRegion_val, GdkRegion_val, Val_bool) -ML_3 (gdk_region_point_in, GdkRegion_val, Int_val, Int_val, Val_bool) -ML_2 (gdk_region_rect_in, GdkRegion_val, GdkRectangle_val, Val_gdkOverlapType) -ML_2 (gdk_region_get_clipbox, GdkRegion_val, GdkRectangle_val, Unit) - - -/* GC */ - -Make_Val_final_pointer (GdkGC, gdk_gc_ref, gdk_gc_unref, 0) -Make_Val_final_pointer_ext (GdkGC, _no_ref, Ignore, gdk_gc_unref, 20) -ML_1 (gdk_gc_new, GdkWindow_val, Val_GdkGC_no_ref) -ML_2 (gdk_gc_set_foreground, GdkGC_val, GdkColor_val, Unit) -ML_2 (gdk_gc_set_background, GdkGC_val, GdkColor_val, Unit) -ML_2 (gdk_gc_set_font, GdkGC_val, GdkFont_val, Unit) -ML_2 (gdk_gc_set_function, GdkGC_val, GdkFunction_val, Unit) -ML_2 (gdk_gc_set_fill, GdkGC_val, GdkFill_val, Unit) -ML_2 (gdk_gc_set_tile, GdkGC_val, GdkPixmap_val, Unit) -ML_2 (gdk_gc_set_stipple, GdkGC_val, GdkPixmap_val, Unit) -ML_3 (gdk_gc_set_ts_origin, GdkGC_val, Int_val, Int_val, Unit) -ML_3 (gdk_gc_set_clip_origin, GdkGC_val, Int_val, Int_val, Unit) -ML_2 (gdk_gc_set_clip_mask, GdkGC_val, GdkBitmap_val, Unit) -ML_2 (gdk_gc_set_clip_rectangle, GdkGC_val, GdkRectangle_val, Unit) -ML_2 (gdk_gc_set_clip_region, GdkGC_val, GdkRegion_val, Unit) -ML_2 (gdk_gc_set_subwindow, GdkGC_val, GdkSubwindowMode_val, Unit) -ML_2 (gdk_gc_set_exposures, GdkGC_val, Bool_val, Unit) -ML_5 (gdk_gc_set_line_attributes, GdkGC_val, Int_val, GdkLineStyle_val, - GdkCapStyle_val, GdkJoinStyle_val, Unit) -ML_2 (gdk_gc_copy, GdkGC_val, GdkGC_val, Unit) -value ml_gdk_gc_get_values (value gc) -{ - CAMLparam0(); - GdkGCValues values; - int i; - CAMLlocal2(ret, tmp); - - gdk_gc_get_values (GdkGC_val(gc), &values); - ret = alloc (18, 0); - tmp = Val_copy(values.foreground); Store_field(ret, 0, tmp); - tmp = Val_copy(values.background); Store_field(ret, 1, tmp); - if (values.font) { - tmp = ml_some(Val_GdkFont(values.font)); - Store_field(ret, 2, tmp); - } - Field(ret,3) = Val_gdkFunction(values.function); - Field(ret,4) = Val_gdkFill(values.fill); - if (values.tile) { - tmp = ml_some(Val_GdkPixmap(values.tile)); - Store_field(ret, 5, tmp); - } - if (values.tile) { - tmp = ml_some(Val_GdkPixmap(values.stipple)); - Store_field(ret, 6, tmp); - } - if (values.tile) { - tmp = ml_some(Val_GdkPixmap(values.clip_mask)); - Store_field(ret, 7, tmp); - } - Field(ret,8) = Val_gdkSubwindowMode(values.subwindow_mode); - Field(ret,9) = Val_int(values.ts_x_origin); - Field(ret,10) = Val_int(values.ts_y_origin); - Field(ret,11) = Val_int(values.clip_x_origin); - Field(ret,12) = Val_int(values.clip_y_origin); - Field(ret,13) = Val_bool(values.graphics_exposures); - Field(ret,14) = Val_int(values.line_width); - Field(ret,15) = Val_gdkLineStyle(values.line_style); - Field(ret,16) = Val_gdkCapStyle(values.cap_style); - Field(ret,17) = Val_gdkJoinStyle(values.join_style); - CAMLreturn(ret); -} - -/* Draw */ - -value ml_point_array_new (value len) -{ - value ret = alloc (1 + Wosize_asize(Int_val(len)*sizeof(GdkPoint)), - Abstract_tag); - Field(ret,0) = len; - return ret; -} -value ml_point_array_set (value arr, value pos, value x, value y) -{ - GdkPoint *pt = PointArray_val(arr) + Int_val(pos); - pt->x = Int_val(x); - pt->y = Int_val(y); - return Val_unit; -} - -ML_4 (gdk_draw_point, GdkDrawable_val, GdkGC_val, Int_val, Int_val, Unit) -ML_6 (gdk_draw_line, GdkDrawable_val, GdkGC_val, Int_val, Int_val, - Int_val, Int_val, Unit) -ML_bc6 (ml_gdk_draw_line) -ML_7 (gdk_draw_rectangle, GdkDrawable_val, GdkGC_val, Bool_val, - Int_val, Int_val, Int_val, Int_val, Unit) -ML_bc7 (ml_gdk_draw_rectangle) -ML_9 (gdk_draw_arc, GdkDrawable_val, GdkGC_val, Bool_val, Int_val, Int_val, - Int_val, Int_val, Int_val, Int_val, Unit) -ML_bc9 (ml_gdk_draw_arc) -ML_4 (gdk_draw_polygon, GdkDrawable_val, GdkGC_val, Bool_val, - Insert(PointArray_val(arg4)) PointArrayLen_val, Unit) -ML_6 (gdk_draw_string, GdkDrawable_val, GdkFont_val, GdkGC_val, Int_val, Int_val, String_val, Unit) -ML_bc6 (ml_gdk_draw_string) - -ML_9 (gdk_draw_image, GdkDrawable_val, GdkGC_val, GdkImage_val, Int_val, Int_val, Int_val, Int_val, Int_val, Int_val, Unit) -ML_bc9 (ml_gdk_draw_image) - -/* RGB */ - -ML_0 (gdk_rgb_init, Unit) -ML_0 (gdk_rgb_get_visual, Val_GdkVisual) -ML_0 (gdk_rgb_get_cmap, Val_GdkColormap) - -/* Events */ - -/* Have a major collection every 1000 events */ -Make_Val_final_pointer (GdkEvent, Ignore, gdk_event_free, 1) -ML_1 (gdk_event_copy, GdkEvent_val, Val_GdkEvent) - -value ml_gdk_event_new (value event_type) -{ - GdkEvent event; - memset (&event, 0, sizeof(GdkEvent)); - event.type = GdkEventType_val(event_type); - event.any.send_event = TRUE; - return Val_copy(event); -} - -#define GdkEvent_arg(type) (GdkEvent##type*)GdkEvent_val - -Make_Extractor (GdkEventAny, GdkEvent_arg(Any), type, Val_gdkEventType) -Make_Extractor (GdkEventAny, GdkEvent_arg(Any), window, Val_GdkWindow) -Make_Extractor (GdkEventAny, GdkEvent_arg(Any), send_event, Val_bool) -Make_Setter (gdk_event_set, GdkEvent_arg(Any), GdkEventType_val, type) -Make_Setter (gdk_event_set, GdkEvent_arg(Any), GdkWindow_val, window) - -Make_Extractor (GdkEventExpose, GdkEvent_arg(Expose), area, Val_copy) -Make_Extractor (GdkEventExpose, GdkEvent_arg(Expose), count, Val_int) - -Make_Extractor (GdkEventVisibility, GdkEvent_arg(Visibility), state, - Val_gdkVisibilityState) - -Make_Extractor (GdkEventMotion, GdkEvent_arg(Motion), time, Val_int) -Make_Extractor (GdkEventMotion, GdkEvent_arg(Motion), x, copy_double) -Make_Extractor (GdkEventMotion, GdkEvent_arg(Motion), y, copy_double) -Make_Extractor (GdkEventMotion, GdkEvent_arg(Motion), pressure, copy_double) -Make_Extractor (GdkEventMotion, GdkEvent_arg(Motion), xtilt, copy_double) -Make_Extractor (GdkEventMotion, GdkEvent_arg(Motion), ytilt, copy_double) -Make_Extractor (GdkEventMotion, GdkEvent_arg(Motion), state, Val_int) -Make_Extractor (GdkEventMotion, GdkEvent_arg(Motion), is_hint, Val_int) -Make_Extractor (GdkEventMotion, GdkEvent_arg(Motion), source, Val_gdkInputSource) -Make_Extractor (GdkEventMotion, GdkEvent_arg(Motion), deviceid, Val_int) -Make_Extractor (GdkEventMotion, GdkEvent_arg(Motion), x_root, copy_double) -Make_Extractor (GdkEventMotion, GdkEvent_arg(Motion), y_root, copy_double) - -Make_Extractor (GdkEventButton, GdkEvent_arg(Button), time, Val_int) -Make_Extractor (GdkEventButton, GdkEvent_arg(Button), x, copy_double) -Make_Extractor (GdkEventButton, GdkEvent_arg(Button), y, copy_double) -Make_Extractor (GdkEventButton, GdkEvent_arg(Button), pressure, copy_double) -Make_Extractor (GdkEventButton, GdkEvent_arg(Button), xtilt, copy_double) -Make_Extractor (GdkEventButton, GdkEvent_arg(Button), ytilt, copy_double) -Make_Extractor (GdkEventButton, GdkEvent_arg(Button), state, Val_int) -Make_Extractor (GdkEventButton, GdkEvent_arg(Button), button, Val_int) -Make_Extractor (GdkEventButton, GdkEvent_arg(Button), source, Val_gdkInputSource) -Make_Extractor (GdkEventButton, GdkEvent_arg(Button), deviceid, Val_int) -Make_Extractor (GdkEventButton, GdkEvent_arg(Button), x_root, copy_double) -Make_Extractor (GdkEventButton, GdkEvent_arg(Button), y_root, copy_double) - -Make_Setter (gdk_event_button_set, GdkEvent_arg(Button), Int_val, button) - -Make_Extractor (GdkEventKey, GdkEvent_arg(Key), time, Val_int) -Make_Extractor (GdkEventKey, GdkEvent_arg(Key), state, Val_int) -Make_Extractor (GdkEventKey, GdkEvent_arg(Key), keyval, Val_int) -Make_Extractor (GdkEventKey, GdkEvent_arg(Key), string, Val_string) - -Make_Extractor (GdkEventCrossing, GdkEvent_arg(Crossing), subwindow, - Val_GdkWindow) -Make_Extractor (GdkEventCrossing, GdkEvent_arg(Crossing), detail, - Val_gdkNotifyType) - -Make_Extractor (GdkEventFocus, GdkEvent_arg(Focus), in, Val_int) - -Make_Extractor (GdkEventConfigure, GdkEvent_arg(Configure), x, Val_int) -Make_Extractor (GdkEventConfigure, GdkEvent_arg(Configure), y, Val_int) -Make_Extractor (GdkEventConfigure, GdkEvent_arg(Configure), width, Val_int) -Make_Extractor (GdkEventConfigure, GdkEvent_arg(Configure), height, Val_int) - -Make_Extractor (GdkEventProperty, GdkEvent_arg(Property), atom, Val_int) -Make_Extractor (GdkEventProperty, GdkEvent_arg(Property), time, Val_int) -Make_Extractor (GdkEventProperty, GdkEvent_arg(Property), state, Val_int) - -Make_Extractor (GdkEventSelection, GdkEvent_arg(Selection), selection, Val_int) -Make_Extractor (GdkEventSelection, GdkEvent_arg(Selection), target, Val_int) -Make_Extractor (GdkEventSelection, GdkEvent_arg(Selection), property, Val_int) -Make_Extractor (GdkEventSelection, GdkEvent_arg(Selection), requestor, Val_int) -Make_Extractor (GdkEventSelection, GdkEvent_arg(Selection), time, Val_int) - -Make_Extractor (GdkEventProximity, GdkEvent_arg(Proximity), time, Val_int) -Make_Extractor (GdkEventProximity, GdkEvent_arg(Proximity), source, - Val_gdkInputSource) -Make_Extractor (GdkEventProximity, GdkEvent_arg(Proximity), deviceid, Val_int) - -/* DnD */ -Make_Val_final_pointer (GdkDragContext, gdk_drag_context_ref, gdk_drag_context_unref, 0) -Make_Flags_val (GdkDragAction_val) -ML_3 (gdk_drag_status, GdkDragContext_val, Flags_GdkDragAction_val, Int_val, Unit) -Make_Extractor (GdkDragContext, GdkDragContext_val, suggested_action, Val_gdkDragAction) -value val_int(gpointer i) -{ - return Val_int (GPOINTER_TO_INT(i)); -} -value ml_GdkDragContext_targets (value c) -{ - GList *t; - - t = (GdkDragContext_val(c))->targets; - return Val_GList (t, val_int); -} - -/* Misc */ -ML_0 (gdk_flush, Unit) -ML_0 (gdk_beep, Unit) diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gdk.h b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gdk.h deleted file mode 100644 index 5d699ace2..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gdk.h +++ /dev/null @@ -1,53 +0,0 @@ -/* $Id$ */ - -#define GdkColormap_val(val) ((GdkColormap*)Pointer_val(val)) -extern value Val_GdkColormap (GdkColormap *); - -#define GdkColor_val(val) ((GdkColor*)MLPointer_val(val)) -#define Val_GdkColor Val_pointer - -#define GdkRectangle_val(val) ((GdkRectangle*)MLPointer_val(val)) -#define Val_GdkRectangle Val_pointer - -#define GdkDrawable_val(val) ((GdkDrawable*)Pointer_val(val)) - -#define GdkWindow_val(val) ((GdkWindow*)Pointer_val(val)) -extern value Val_GdkWindow (GdkWindow *); - -#define GdkCursor_val(val) ((GdkCursor*)Pointer_val(val)) -#define Val_GdkCursor Val_pointer - -#define GdkPixmap_val(val) ((GdkPixmap*)Pointer_val(val)) -extern value Val_GdkPixmap (GdkPixmap *); - -#define GdkBitmap_val(val) ((GdkBitmap*)Pointer_val(val)) -extern value Val_GdkBitmap (GdkBitmap *); - -extern GdkImage *GdkImage_val (value); /* check argument */ -extern value Val_GdkImage (GdkImage *); /* finalizer is destroy! */ - -#define GdkFont_val(val) ((GdkFont*)Pointer_val(val)) -extern value Val_GdkFont (GdkFont *); - -extern GdkRegion *GdkRegion_val (value); /* check argument */ -extern value Val_GdkRegion (GdkRegion *); /* finalizer is destroy! */ - -#define GdkGC_val(val) ((GdkGC*)Pointer_val(val)) -extern value Val_GdkGC (GdkGC *); - -#define GdkEvent_val (GdkEvent*)MLPointer_val - -#define GdkVisual_val(val) ((GdkVisual*) val) -#define Val_GdkVisual(visual) ((value) visual) - -#define Val_XID copy_int32 -#define XID_val Int32_val - -extern int OptFlags_GdkModifier_val (value); -extern int Flags_Event_mask_val (value); -extern lookup_info ml_table_extension_events[]; -#define Extension_events_val(key) ml_lookup_to_c (ml_table_extension_events, key) - -#define GdkDragContext_val(val) ((GdkDragContext*)Pointer_val(val)) -extern value Val_GdkDragContext (GdkDragContext *); -extern int Flags_GdkDragAction_val (value); diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_glib.c b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_glib.c deleted file mode 100644 index a93bb586f..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_glib.c +++ /dev/null @@ -1,143 +0,0 @@ -/* $Id$ */ - -#include -#include -#include -#include -#include - -#include "wrappers.h" -#include "ml_glib.h" - -value copy_string_and_free (char *str) -{ - value res; - res = copy_string_check (str); - g_free (str); - return res; -} - -value Val_GList (GList *list, value (*func)(gpointer)) -{ - value new_cell, result, last_cell, cell; - - if (list == NULL) return Val_unit; - - last_cell = cell = Val_unit; - result = func(list->data); - Begin_roots3 (last_cell, cell, result); - cell = last_cell = alloc_small(2,0); - Field(cell,0) = result; - Field(cell,1) = Val_unit; - list = list->next; - while (list != NULL) { - result = func(list->data); - new_cell = alloc_small(2,0); - Field(new_cell,0) = result; - Field(new_cell,1) = Val_unit; - modify(&Field(last_cell,1), new_cell); - last_cell = new_cell; - list = list->next; - } - End_roots (); - return cell; -} - -GList *GList_val (value list, gpointer (*func)(value)) -{ - CAMLparam1(list); - GList *res = NULL; - if (list == Val_unit) CAMLreturn (res); - for (; Is_block(list); list = Field(list,1)) - res = g_list_append (res, func(Field(list,0))); - CAMLreturn (res); -} - -static value ml_warning_handler = 0L; - -static void ml_warning_wrapper (const gchar *msg) -{ - value arg = copy_string ((char*)msg); - callback (ml_warning_handler, arg); -} - -value ml_g_set_warning_handler (value clos) -{ - value old_handler = ml_warning_handler ? ml_warning_handler : clos; - if (!ml_warning_handler) register_global_root (&ml_warning_handler); - g_set_warning_handler (ml_warning_wrapper); - ml_warning_handler = clos; - return old_handler; -} - -static value ml_print_handler = 0L; - -static void ml_print_wrapper (const gchar *msg) -{ - value arg = copy_string ((char*)msg); - callback (ml_print_handler, arg); -} - -value ml_g_set_print_handler (value clos) -{ - value old_handler = ml_print_handler ? ml_print_handler : clos; - if (!ml_print_handler) register_global_root (&ml_print_handler); - g_set_print_handler (ml_print_wrapper); - ml_print_handler = clos; - return old_handler; -} - -value ml_get_null (value unit) { return 0L; } - -#define GMainLoop_val(val) ((GMainLoop*)Addr_val(val)) -ML_1 (g_main_new, Bool_val, Val_addr) -ML_1 (g_main_iteration, Bool_val, Val_bool) -ML_0 (g_main_pending, Val_bool) -ML_1 (g_main_is_running, GMainLoop_val, Val_bool) -ML_1 (g_main_quit, GMainLoop_val, Unit) -ML_1 (g_main_destroy, GMainLoop_val, Unit) - -/* -value Val_GSList (GSList *list, value (*func)(gpointer)) -{ - value new_cell, result, last_cell, cell; - - if (list == NULL) return Val_unit; - - last_cell = cell = Val_unit; - result = func(list->data); - Begin_roots3 (last_cell, cell, result); - cell = last_cell = alloc_tuple (2); - Field(cell,0) = result; - Field(cell,1) = Val_unit; - list = list->next; - while (list != NULL) { - result = func(list->data); - new_cell = alloc_tuple(2); - Field(new_cell,0) = result; - Field(new_cell,1) = Val_unit; - modify(&Field(last_cell,1), new_cell); - last_cell = new_cell; - list = list->next; - } - End_roots (); - return cell; -} - -GSList *GSList_val (value list, gpointer (*func)(value)) -{ - GSList *res = NULL; - GSList **current = &res; - value cell = list; - if (list == Val_unit) return res; - Begin_root (cell); - while (cell != Val_unit) { - *current = g_slist_alloc (); - (*current)->data = func(Field(cell,0)); - cell = Field(cell,1); - current = &(*current)->next; - } - End_roots (); - return res; -} -*/ diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_glib.h b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_glib.h deleted file mode 100644 index 10f31ca7f..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_glib.h +++ /dev/null @@ -1,10 +0,0 @@ -/* $Id$ */ - -value copy_string_and_free (char *str); /* for g_strings only */ -value Val_GList (GList *list, value (*func)(gpointer)); -GList *GList_val (value list, gpointer (*func)(value)); - -/* -value Val_GSList (GSList *list, value (*func)(gpointer)); -GSList *GSList_val (value list, gpointer (*func)(value)); -*/ diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtk.c b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtk.c deleted file mode 100644 index 271f09405..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtk.c +++ /dev/null @@ -1,1013 +0,0 @@ -/* $Id$ */ - -#include -#include -#include -#include -#include -#include -#include - -#include "wrappers.h" -#include "ml_glib.h" -#include "ml_gdk.h" -#include "ml_gtk.h" -#include "gtk_tags.h" - -void ml_raise_gtk (const char *errmsg) -{ - static value * exn = NULL; - if (exn == NULL) - exn = caml_named_value ("gtkerror"); - raise_with_string (*exn, (char*)errmsg); -} - -/* conversion functions */ - -#include "gtk_tags.c" - -ML_1 (Val_direction_type, Int_val, Id) -ML_1 (Val_orientation, Int_val, Id) -ML_1 (Val_toolbar_style, Int_val, Id) -ML_1 (Val_state_type, Int_val, Id) -ML_1 (Val_scroll_type, Int_val, Id) - -static Make_Flags_val (Dest_defaults_val) -static Make_Flags_val (Target_flags_val) -static Make_Flags_val (Font_type_val) - -/* gtkobject.h */ - -Make_Val_final_pointer(GtkObject, gtk_object_ref, gtk_object_unref, 0) - -#define gtk_object_ref_and_sink(w) (gtk_object_ref(w), gtk_object_sink(w)) -Make_Val_final_pointer_ext(GtkObject, _sink , gtk_object_ref_and_sink, - gtk_object_unref, 20) - -/* gtkaccelgroup.h */ - -Make_Val_final_pointer (GtkAccelGroup, gtk_accel_group_ref, - gtk_accel_group_unref, 0) -Make_Val_final_pointer_ext (GtkAccelGroup, _no_ref, Ignore, - gtk_accel_group_unref, 20) -Make_OptFlags_val (Accel_flag_val) - -#define Signal_name_val(val) String_val(Field(val,0)) - -ML_0 (gtk_accel_group_new, Val_GtkAccelGroup_no_ref) -ML_0 (gtk_accel_group_get_default, Val_GtkAccelGroup) -ML_3 (gtk_accel_group_activate, GtkAccelGroup_val, Int_val, - OptFlags_GdkModifier_val, Val_bool) -ML_3 (gtk_accel_groups_activate, GtkObject_val, Int_val, - OptFlags_GdkModifier_val, Val_bool) -ML_2 (gtk_accel_group_attach, GtkAccelGroup_val, GtkObject_val, Unit) -ML_2 (gtk_accel_group_detach, GtkAccelGroup_val, GtkObject_val, Unit) -ML_1 (gtk_accel_group_lock, GtkAccelGroup_val, Unit) -ML_1 (gtk_accel_group_unlock, GtkAccelGroup_val, Unit) -ML_3 (gtk_accel_group_lock_entry, GtkAccelGroup_val, Int_val, - OptFlags_GdkModifier_val, Unit) -ML_3 (gtk_accel_group_unlock_entry, GtkAccelGroup_val, Int_val, - OptFlags_GdkModifier_val, Unit) -ML_6 (gtk_accel_group_add, GtkAccelGroup_val, Int_val, - OptFlags_GdkModifier_val, OptFlags_Accel_flag_val, - GtkObject_val, Signal_name_val, Unit) -ML_bc6 (ml_gtk_accel_group_add) -ML_4 (gtk_accel_group_remove, GtkAccelGroup_val, Int_val, - OptFlags_GdkModifier_val, GtkObject_val, Unit) -ML_2 (gtk_accelerator_valid, Int_val, OptFlags_GdkModifier_val, Val_bool) -ML_1 (gtk_accelerator_set_default_mod_mask, OptFlags_GdkModifier_val, Unit) - -/* gtkstyle.h */ - -Make_Val_final_pointer (GtkStyle, gtk_style_ref, gtk_style_unref, 0) -Make_Val_final_pointer_ext (GtkStyle, _no_ref, Ignore, gtk_style_unref, 20) -ML_0 (gtk_style_new, Val_GtkStyle_no_ref) -ML_1 (gtk_style_copy, GtkStyle_val, Val_GtkStyle_no_ref) -ML_2 (gtk_style_attach, GtkStyle_val, GdkWindow_val, Val_GtkStyle) -ML_1 (gtk_style_detach, GtkStyle_val, Unit) -ML_3 (gtk_style_set_background, GtkStyle_val, GdkWindow_val, State_type_val, Unit) -ML_6 (gtk_draw_hline, GtkStyle_val, GdkWindow_val, State_type_val, - Int_val, Int_val, Int_val, Unit) -ML_bc6 (ml_gtk_draw_hline) -ML_6 (gtk_draw_vline, GtkStyle_val, GdkWindow_val, State_type_val, - Int_val, Int_val, Int_val, Unit) -ML_bc6 (ml_gtk_draw_vline) -Make_Array_Extractor (gtk_style_get, GtkStyle_val, State_type_val, bg, Val_copy) -Make_Array_Setter (gtk_style_set, GtkStyle_val, State_type_val, *GdkColor_val, bg) -Make_Extractor (gtk_style_get, GtkStyle_val, colormap, Val_GdkColormap) -Make_Extractor (gtk_style_get, GtkStyle_val, depth, Val_int) -Make_Extractor (gtk_style_get, GtkStyle_val, font, Val_GdkFont) -/* Make_Setter (gtk_style_set, GtkStyle_val, GdkFont_val, font) */ -value ml_gtk_style_set_font (value st, value font) -{ - GtkStyle *style = GtkStyle_val(st); - if (style->font) gdk_font_unref(style->font); - style->font = GdkFont_val(font); - gdk_font_ref(style->font); - return Val_unit; -} -Make_Array_Extractor (gtk_style_get, GtkStyle_val, State_type_val, dark_gc, Val_GdkGC) -Make_Array_Extractor (gtk_style_get, GtkStyle_val, State_type_val, light_gc, Val_GdkGC) - -/* gtktypeutils.h */ - -ML_1 (gtk_type_name, Int_val, Val_string) -ML_1 (gtk_type_from_name, String_val, Val_int) -ML_1 (gtk_type_parent, Int_val, Val_int) -ML_1 (gtk_type_class, Int_val, (value)) -ML_1 (gtk_type_parent_class, Int_val, (value)) -ML_2 (gtk_type_is_a, Int_val, Int_val, Val_bool) -value ml_gtk_type_fundamental (value type) -{ - return Val_fundamental_type (GTK_FUNDAMENTAL_TYPE (Int_val(type))); -} - -/* gtkobject.h */ - -/* ML_1 (GTK_OBJECT_TYPE, GtkObject_val, Val_int) */ -value ml_gtk_object_type (value val) -{ - return Val_int (GtkObject_val(val)->klass->type); -} - -ML_1 (gtk_object_destroy, GtkObject_val, Unit) -ML_1 (gtk_object_ref, GtkObject_val, Unit) -ML_1 (gtk_object_unref, GtkObject_val, Unit) -ML_1 (gtk_object_sink, GtkObject_val, Unit) - -Make_Extractor (gtk_class,(GtkObjectClass *),type,Val_int) - -/* gtkdata.h */ - -/* gtkadjustment.h */ - -ML_6 (gtk_adjustment_new, Float_val, Float_val, Float_val, Float_val, - Float_val, Float_val, Val_GtkObject_sink) -ML_bc6 (ml_gtk_adjustment_new) -ML_2 (gtk_adjustment_set_value, GtkAdjustment_val, Float_val, Unit) -ML_3 (gtk_adjustment_clamp_page, GtkAdjustment_val, - Float_val, Float_val, Unit) -Make_Extractor (gtk_adjustment_get, GtkAdjustment_val, lower, copy_double) -Make_Extractor (gtk_adjustment_get, GtkAdjustment_val, upper, copy_double) -Make_Extractor (gtk_adjustment_get, GtkAdjustment_val, value, copy_double) -Make_Extractor (gtk_adjustment_get, GtkAdjustment_val, step_increment, - copy_double) -Make_Extractor (gtk_adjustment_get, GtkAdjustment_val, page_increment, - copy_double) -Make_Extractor (gtk_adjustment_get, GtkAdjustment_val, page_size, copy_double) - -/* gtktooltips.h */ - -#define GtkTooltips_val(val) check_cast(GTK_TOOLTIPS,val) -ML_0 (gtk_tooltips_new, Val_GtkAny) -ML_1 (gtk_tooltips_enable, GtkTooltips_val, Unit) -ML_1 (gtk_tooltips_disable, GtkTooltips_val, Unit) -ML_2 (gtk_tooltips_set_delay, GtkTooltips_val, Int_val, Unit) -ML_4 (gtk_tooltips_set_tip, GtkTooltips_val, GtkWidget_val, - String_option_val, String_option_val, Unit) -ML_3 (gtk_tooltips_set_colors, GtkTooltips_val, - Option_val(arg2, GdkColor_val, NULL) Ignore, - Option_val(arg3, GdkColor_val, NULL) Ignore, - Unit) - -/* gtkwidget.h */ - -value ml_gtk_widget_set_can_default (value val, value bool) -{ - GtkWidget *w = GtkWidget_val(val); - guint32 saved_flags = GTK_WIDGET_FLAGS(w); - if (Bool_val(bool)) GTK_WIDGET_SET_FLAGS(w, GTK_CAN_DEFAULT); - else GTK_WIDGET_UNSET_FLAGS(w, GTK_CAN_DEFAULT); - if (saved_flags != GTK_WIDGET_FLAGS(w)) - gtk_widget_queue_resize (w); - return Val_unit; -} -value ml_gtk_widget_set_can_focus (value val, value bool) -{ - GtkWidget *w = GtkWidget_val(val); - guint32 saved_flags = GTK_WIDGET_FLAGS(w); - if (Bool_val(bool)) GTK_WIDGET_SET_FLAGS(w, GTK_CAN_FOCUS); - else GTK_WIDGET_UNSET_FLAGS(w, GTK_CAN_FOCUS); - if (saved_flags != GTK_WIDGET_FLAGS(w)) - gtk_widget_queue_resize (w); - return Val_unit; -} -ML_1 (gtk_widget_unparent, GtkWidget_val, Unit) -ML_1 (gtk_widget_show, GtkWidget_val, Unit) -ML_1 (gtk_widget_show_now, GtkWidget_val, Unit) -ML_1 (gtk_widget_show_all, GtkWidget_val, Unit) -ML_1 (gtk_widget_hide, GtkWidget_val, Unit) -ML_1 (gtk_widget_hide_all, GtkWidget_val, Unit) -ML_1 (gtk_widget_map, GtkWidget_val, Unit) -ML_1 (gtk_widget_unmap, GtkWidget_val, Unit) -ML_1 (gtk_widget_realize, GtkWidget_val, Unit) -ML_1 (gtk_widget_unrealize, GtkWidget_val, Unit) -ML_1 (gtk_widget_queue_draw, GtkWidget_val, Unit) -ML_1 (gtk_widget_queue_resize, GtkWidget_val, Unit) -ML_2 (gtk_widget_draw, GtkWidget_val, - Option_val(arg2,GdkRectangle_val,NULL) Ignore, Unit) -ML_1 (gtk_widget_draw_focus, GtkWidget_val, Unit) -ML_1 (gtk_widget_draw_default, GtkWidget_val, Unit) -/* ML_1 (gtk_widget_draw_children, GtkWidget_val, Unit) */ -ML_2 (gtk_widget_event, GtkWidget_val, GdkEvent_val, Val_bool) -ML_1 (gtk_widget_activate, GtkWidget_val, Val_bool) -ML_2 (gtk_widget_reparent, GtkWidget_val, GtkWidget_val, Unit) -ML_3 (gtk_widget_popup, GtkWidget_val, Int_val, Int_val, Unit) -value ml_gtk_widget_intersect (value w, value area) -{ - GdkRectangle inter; - if (gtk_widget_intersect(GtkWidget_val(w), GdkRectangle_val(area), &inter)) - return ml_some (Val_copy (inter)); - return Val_unit; -} -/* ML_1 (gtk_widget_basic, GtkWidget_val, Val_bool) */ -ML_1 (gtk_widget_grab_focus, GtkWidget_val, Unit) -ML_1 (gtk_widget_grab_default, GtkWidget_val, Unit) -ML_2 (gtk_widget_set_name, GtkWidget_val, String_val, Unit) -ML_1 (gtk_widget_get_name, GtkWidget_val, Val_string) -ML_2 (gtk_widget_set_state, GtkWidget_val, State_type_val, Unit) -ML_2 (gtk_widget_set_sensitive, GtkWidget_val, Bool_val, Unit) -ML_3 (gtk_widget_set_uposition, GtkWidget_val, Int_val, Int_val, Unit) -ML_3 (gtk_widget_set_usize, GtkWidget_val, Int_val, Int_val, Unit) -ML_2 (gtk_widget_add_events, GtkWidget_val, Flags_Event_mask_val, Unit) -ML_2 (gtk_widget_set_events, GtkWidget_val, Flags_Event_mask_val, Unit) -ML_2 (gtk_widget_set_extension_events, GtkWidget_val, Extension_events_val, - Unit) -ML_1 (gtk_widget_get_toplevel, GtkWidget_val, Val_GtkWidget) -ML_2 (gtk_widget_get_ancestor, GtkWidget_val, Int_val, Val_GtkWidget) -ML_1 (gtk_widget_get_colormap, GtkWidget_val, Val_GdkColormap) -ML_1 (gtk_widget_get_visual, GtkWidget_val, (value)) -value ml_gtk_widget_get_pointer (value w) -{ - int x,y; - value ret; - gtk_widget_get_pointer (GtkWidget_val(w), &x, &y); - ret = alloc_small (2,0); - Field(ret,0) = Val_int(x); - Field(ret,1) = Val_int(y); - return ret; -} -ML_2 (gtk_widget_is_ancestor, GtkWidget_val, GtkWidget_val, Val_bool) -/* ML_2 (gtk_widget_is_child, GtkWidget_val, GtkWidget_val, Val_bool) */ -ML_2 (gtk_widget_set_style, GtkWidget_val, GtkStyle_val, Unit) -ML_1 (gtk_widget_set_rc_style, GtkWidget_val, Unit) -ML_1 (gtk_widget_ensure_style, GtkWidget_val, Unit) -ML_1 (gtk_widget_get_style, GtkWidget_val, Val_GtkStyle) -ML_1 (gtk_widget_restore_default_style, GtkWidget_val, Unit) - -ML_6 (gtk_widget_add_accelerator, GtkWidget_val, Signal_name_val, - GtkAccelGroup_val, Char_val, OptFlags_GdkModifier_val, - OptFlags_Accel_flag_val, Unit) -ML_bc6 (ml_gtk_widget_add_accelerator) -ML_4 (gtk_widget_remove_accelerator, GtkWidget_val, GtkAccelGroup_val, - Char_val, OptFlags_GdkModifier_val, Unit) -ML_1 (gtk_widget_lock_accelerators, GtkWidget_val, Unit) -ML_1 (gtk_widget_unlock_accelerators, GtkWidget_val, Unit) -ML_1 (gtk_widget_accelerators_locked, GtkWidget_val, Val_bool) - -ML_1 (GTK_WIDGET_VISIBLE, GtkWidget_val, Val_bool) -ML_1 (GTK_WIDGET_HAS_FOCUS, GtkWidget_val, Val_bool) - -Make_Extractor (GtkWidget, GtkWidget_val, window, Val_GdkWindow) -Make_Extractor (gtk_widget, GtkWidget_val, parent, Val_GtkWidget) -static value Val_GtkAllocation (GtkAllocation allocation) -{ - value ret = alloc_small (4, 0); - Field(ret,0) = Val_int(allocation.x); - Field(ret,1) = Val_int(allocation.y); - Field(ret,2) = Val_int(allocation.width); - Field(ret,3) = Val_int(allocation.height); - return ret; -} -Make_Extractor (gtk_widget, GtkWidget_val, allocation, Val_GtkAllocation) -/* -#define GtkAllocation_val(val) ((GtkAllocation*)Pointer_val(val)) -Make_Extractor (gtk_allocation, GtkAllocation_val, x, Val_int) -Make_Extractor (gtk_allocation, GtkAllocation_val, y, Val_int) -Make_Extractor (gtk_allocation, GtkAllocation_val, width, Val_int) -Make_Extractor (gtk_allocation, GtkAllocation_val, height, Val_int) -*/ - -ML_2 (gtk_widget_set_app_paintable, GtkWidget_val, Bool_val, Unit) - -ML_2 (gtk_widget_set_visual, GtkWidget_val, GdkVisual_val, Unit) -ML_2 (gtk_widget_set_colormap, GtkWidget_val, GdkColormap_val, Unit) -ML_1 (gtk_widget_set_default_visual, GdkVisual_val, Unit) -ML_1 (gtk_widget_set_default_colormap, GdkColormap_val, Unit) -ML_0 (gtk_widget_get_default_visual, Val_GdkVisual) -ML_0 (gtk_widget_get_default_colormap, Val_GdkColormap) -ML_1 (gtk_widget_push_visual, GdkVisual_val, Unit) -ML_1 (gtk_widget_push_colormap, GdkColormap_val, Unit) -ML_0 (gtk_widget_pop_visual, Unit) -ML_0 (gtk_widget_pop_colormap, Unit) - -/* gtkdnd.h */ - -value ml_gtk_drag_dest_set (value w, value f, value t, value a) -{ - GtkTargetEntry *targets = (GtkTargetEntry *)Val_unit; - int n_targets, i; - - CAMLparam4 (w,f,t,a); - n_targets = Wosize_val(t); - if (n_targets) - targets = (GtkTargetEntry *) - alloc (Wosize_asize(n_targets * sizeof(GtkTargetEntry)), - Abstract_tag); - for (i=0; ilength < 0) ml_raise_null_pointer(); - ret = alloc_string (data->length); - if (data->length) memcpy ((void*)ret, data->data, data->length); - return ret; -} - -ML_4 (gtk_selection_data_set, GtkSelectionData_val, Int_val, Int_val, - Insert((guchar*)String_option_val(arg4)) - Option_val(arg4, string_length, -1) Ignore, - Unit) - -/* gtkcontainer.h */ - -#define GtkContainer_val(val) check_cast(GTK_CONTAINER,val) -ML_2 (gtk_container_set_border_width, GtkContainer_val, Int_val, Unit) -ML_2 (gtk_container_set_resize_mode, GtkContainer_val, Resize_mode_val, Unit) -ML_2 (gtk_container_add, GtkContainer_val, GtkWidget_val, Unit) -ML_2 (gtk_container_remove, GtkContainer_val, GtkWidget_val, Unit) -static void ml_gtk_simple_callback (GtkWidget *w, gpointer data) -{ - value val, *clos = (value*)data; - val = Val_GtkWidget(w); - callback (*clos, val); -} -value ml_gtk_container_foreach (value w, value clos) -{ - CAMLparam1(clos); - gtk_container_foreach (GtkContainer_val(w), ml_gtk_simple_callback, - &clos); - CAMLreturn(Val_unit); -} -ML_1 (gtk_container_register_toplevel, GtkContainer_val, Unit) -ML_1 (gtk_container_unregister_toplevel, GtkContainer_val, Unit) -ML_2 (gtk_container_focus, GtkContainer_val, Direction_type_val, Val_bool) -ML_2 (gtk_container_set_focus_child, GtkContainer_val, GtkWidget_val, Unit) -ML_2 (gtk_container_set_focus_vadjustment, GtkContainer_val, - GtkAdjustment_val, Unit) -ML_2 (gtk_container_set_focus_hadjustment, GtkContainer_val, - GtkAdjustment_val, Unit) - -/* gtkdialog.h */ - -static void window_unref (GtkObject *w) -{ - /* If the window exists and is still not visible, then unreference twice. - This should be enough to destroy it. */ - if (!GTK_OBJECT_DESTROYED(w) && !GTK_WIDGET_VISIBLE(w)) - gtk_object_unref (w); - gtk_object_unref (w); -} -Make_Val_final_pointer_ext (GtkObject, _window, gtk_object_ref, window_unref, - 20) -#define Val_GtkWidget_window(w) Val_GtkObject_window((GtkObject*)w) - -#define GtkDialog_val(val) check_cast(GTK_DIALOG,val) -ML_0 (gtk_dialog_new, Val_GtkWidget_window) -Make_Extractor (GtkDialog, GtkDialog_val, action_area, Val_GtkWidget) -Make_Extractor (GtkDialog, GtkDialog_val, vbox, Val_GtkWidget) - -/* gtkinputdialog.h */ - -ML_0 (gtk_input_dialog_new, Val_GtkWidget_window) - -/* gtkfileselection.h */ - -#define GtkFileSelection_val(val) check_cast(GTK_FILE_SELECTION,val) -ML_1 (gtk_file_selection_new, String_val, Val_GtkWidget_window) -ML_2 (gtk_file_selection_set_filename, GtkFileSelection_val, String_val, Unit) -ML_1 (gtk_file_selection_get_filename, GtkFileSelection_val, Val_string) -ML_1 (gtk_file_selection_show_fileop_buttons, GtkFileSelection_val, Unit) -ML_1 (gtk_file_selection_hide_fileop_buttons, GtkFileSelection_val, Unit) -Make_Extractor (gtk_file_selection_get, GtkFileSelection_val, ok_button, - Val_GtkWidget) -Make_Extractor (gtk_file_selection_get, GtkFileSelection_val, cancel_button, - Val_GtkWidget) -Make_Extractor (gtk_file_selection_get, GtkFileSelection_val, help_button, - Val_GtkWidget) - -/* gtkwindow.h */ - -#define GtkWindow_val(val) check_cast(GTK_WINDOW,val) -ML_1 (gtk_window_new, Window_type_val, Val_GtkWidget_window) -ML_2 (gtk_window_set_title, GtkWindow_val, String_val, Unit) -ML_3 (gtk_window_set_wmclass, GtkWindow_val, String_val, String_val, Unit) -Make_Extractor (gtk_window_get, GtkWindow_val, wmclass_name, Val_optstring) -Make_Extractor (gtk_window_get, GtkWindow_val, wmclass_class, Val_optstring) -ML_2 (gtk_window_set_focus, GtkWindow_val, GtkWidget_val, Unit) -ML_2 (gtk_window_set_default, GtkWindow_val, GtkWidget_val, Unit) -ML_4 (gtk_window_set_policy, GtkWindow_val, Bool_val, Bool_val, Bool_val, Unit) -Make_Extractor (gtk_window_get, GtkWindow_val, allow_shrink, Val_bool) -Make_Extractor (gtk_window_get, GtkWindow_val, allow_grow, Val_bool) -Make_Extractor (gtk_window_get, GtkWindow_val, auto_shrink, Val_bool) -ML_2 (gtk_window_add_accel_group, GtkWindow_val, - GtkAccelGroup_val, Unit) -ML_2 (gtk_window_remove_accel_group, GtkWindow_val, - GtkAccelGroup_val, Unit) -ML_1 (gtk_window_activate_focus, GtkWindow_val, Val_bool) -ML_1 (gtk_window_activate_default, GtkWindow_val, Val_bool) -ML_2 (gtk_window_set_modal, GtkWindow_val, Bool_val, Unit) -ML_3 (gtk_window_set_default_size, GtkWindow_val, Int_val, Int_val, Unit) -ML_2 (gtk_window_set_position, GtkWindow_val, Window_position_val, Unit) -ML_2 (gtk_window_set_transient_for, GtkWindow_val, GtkWindow_val, Unit) - -/* gtkcolorsel.h */ - -#define GtkColorSelection_val(val) check_cast(GTK_COLOR_SELECTION,val) -#define GtkColorSelectionDialog_val(val) check_cast(GTK_COLOR_SELECTION_DIALOG,val) -ML_0 (gtk_color_selection_new, Val_GtkWidget_sink) -ML_2 (gtk_color_selection_set_update_policy, GtkColorSelection_val, - Update_type_val, Unit) -ML_2 (gtk_color_selection_set_opacity, GtkColorSelection_val, - Bool_val, Unit) -value ml_gtk_color_selection_set_color (value w, value red, value green, - value blue, value opacity) -{ - double color[4]; - color[0] = Double_val(red); - color[1] = Double_val(green); - color[2] = Double_val(blue); - color[3] = Option_val(opacity,Double_val,0.0); - gtk_color_selection_set_color (GtkColorSelection_val(w), color); - return Val_unit; -} -value ml_gtk_color_selection_get_color (value w) -{ - value ret; - double color[4]; - color[3] = 0.0; - gtk_color_selection_get_color (GtkColorSelection_val(w), color); - ret = alloc (4*Double_wosize, Double_array_tag); - Store_double_field (ret, 0, color[0]); - Store_double_field (ret, 1, color[1]); - Store_double_field (ret, 2, color[2]); - Store_double_field (ret, 3, color[3]); - return ret; -} -ML_1 (gtk_color_selection_dialog_new, String_val, Val_GtkWidget_window) -Make_Extractor (gtk_color_selection_dialog, GtkColorSelectionDialog_val, ok_button, Val_GtkWidget) -Make_Extractor (gtk_color_selection_dialog, GtkColorSelectionDialog_val, cancel_button, Val_GtkWidget) -Make_Extractor (gtk_color_selection_dialog, GtkColorSelectionDialog_val, help_button, Val_GtkWidget) -Make_Extractor (gtk_color_selection_dialog, GtkColorSelectionDialog_val, colorsel, Val_GtkWidget) - -/* gtkfontsel.h */ - -#define GtkFontSelection_val(val) \ - check_cast(GTK_FONT_SELECTION,val) -ML_0 (gtk_font_selection_new, Val_GtkWidget_sink) -ML_1 (gtk_font_selection_get_font, GtkFontSelection_val, - Val_GdkFont) -ML_1 (gtk_font_selection_get_font_name, GtkFontSelection_val, - copy_string_check) -ML_2 (gtk_font_selection_set_font_name, GtkFontSelection_val, - String_val, Val_bool) -ML_9 (gtk_font_selection_set_filter, GtkFontSelection_val, - Font_filter_type_val, Flags_Font_type_val, - (gchar**), (gchar**), (gchar**), - (gchar**), (gchar**), (gchar**), Unit) -ML_bc9 (ml_gtk_font_selection_set_filter) -ML_1 (gtk_font_selection_get_preview_text, GtkFontSelection_val, - copy_string) -ML_2 (gtk_font_selection_set_preview_text, GtkFontSelection_val, - String_val, Unit) - -#define GtkFontSelectionDialog_val(val) \ - check_cast(GTK_FONT_SELECTION_DIALOG,val) -ML_1 (gtk_font_selection_dialog_new, String_option_val, Val_GtkWidget_window) -/* -ML_1 (gtk_font_selection_dialog_get_font, GtkFontSelectionDialog_val, - Val_GdkFont) -ML_1 (gtk_font_selection_dialog_get_font_name, GtkFontSelectionDialog_val, - copy_string_check) -ML_2 (gtk_font_selection_dialog_set_font_name, GtkFontSelectionDialog_val, - String_val, Val_bool) -ML_9 (gtk_font_selection_dialog_set_filter, GtkFontSelectionDialog_val, - Font_filter_type_val, Flags_Font_type_val, - (gchar**), (gchar**), (gchar**), - (gchar**), (gchar**), (gchar**), Unit) -ML_bc9 (ml_gtk_font_selection_dialog_set_filter) -ML_1 (gtk_font_selection_dialog_get_preview_text, GtkFontSelectionDialog_val, - copy_string) -ML_2 (gtk_font_selection_dialog_set_preview_text, GtkFontSelectionDialog_val, - String_val, Unit) -*/ -Make_Extractor (gtk_font_selection_dialog, GtkFontSelectionDialog_val, - fontsel, Val_GtkWidget) -Make_Extractor (gtk_font_selection_dialog, GtkFontSelectionDialog_val, - ok_button, Val_GtkWidget) -Make_Extractor (gtk_font_selection_dialog, GtkFontSelectionDialog_val, - apply_button, Val_GtkWidget) -Make_Extractor (gtk_font_selection_dialog, GtkFontSelectionDialog_val, - cancel_button, Val_GtkWidget) - -/* gtkplug.h */ - -ML_1 (gtk_plug_new, XID_val, Val_GtkWidget_window) - -/* gtkctree.h */ -#define GtkCTree_val(val) check_cast(GTK_CTREE,val) -/* Beware: this definition axpects arg1 to be a GtkCTree */ -/* -#define GtkCTreeNode_val(val) \ - (gtk_ctree_find(GtkCTree_val(arg1),NULL,(GtkCTreeNode*)(val-1)) \ - ? (GtkCTreeNode*)(val-1) : (ml_raise_gtk ("Bad GtkCTreeNode"), NULL)) -#define Val_GtkCTreeNode Val_addr -ML_2 (gtk_ctree_new, Int_val, Int_val, Val_GtkWidget_sink) -ML_3 (gtk_ctree_new_with_titles, Int_val, Int_val, (char **), - Val_GtkWidget_sink) -ML_11 (gtk_ctree_insert_node, GtkCTree_val, GtkCTreeNode_val, - GtkCTreeNode_val, (char**), Int_val, GdkPixmap_val, GdkBitmap_val, - GdkPixmap_val, GdkBitmap_val, Bool_val, Bool_val, - Val_GtkCTreeNode) -ML_2 (gtk_ctree_remove_node, GtkCTree_val, GtkCTreeNode_val, Unit) -ML_2 (gtk_ctree_is_viewable, GtkCTree_val, GtkCTreeNode_val, Val_bool) -*/ - -/* gtkpreview.h */ -/* -#define GtkPreview_val(val) GTK_PREVIEW(Pointer_val(val)) -ML_1 (gtk_preview_new, Preview_val, Val_GtkWidget_sink) -ML_3 (gtk_preview_size, GtkPreview_val, Int_val, Int_val, Unit) -ML_9 (gtk_preview_put, GtkPreview_val, GdkWindow_val, GdkGC_val, - Int_val, Int_val, Int_val, Int_val, Int_val, Int_val, Unit) -ML_bc9 (ml_gtk_preview_put) -*/ - -/* gtkmain.h */ - -value ml_gtk_init (value argv) -{ - CAMLparam1 (argv); - int argc = Wosize_val(argv), i; - CAMLlocal1 (copy); - - copy = (argc ? alloc (argc, Abstract_tag) : Atom(0)); - for (i = 0; i < argc; i++) Field(copy,i) = Field(argv,i); - gtk_init (&argc, (char ***)©); - - argv = (argc ? alloc (argc, 0) : Atom(0)); - for (i = 0; i < argc; i++) modify(&Field(argv,i), Field(copy,i)); - CAMLreturn (argv); -} -ML_1 (gtk_exit, Int_val, Unit) -ML_0 (gtk_set_locale, Val_string) -ML_0 (gtk_main, Unit) -ML_1 (gtk_main_iteration_do, Bool_val, Val_bool) -ML_0 (gtk_main_quit, Unit) -ML_1 (gtk_grab_add, GtkWidget_val, Unit) -ML_1 (gtk_grab_remove, GtkWidget_val, Unit) -ML_0 (gtk_grab_get_current, Val_GtkWidget) -value ml_gtk_get_version (value unit) -{ - value ret = alloc_small(3,0); - Field(ret,0) = Val_int(gtk_major_version); - Field(ret,1) = Val_int(gtk_minor_version); - Field(ret,2) = Val_int(gtk_micro_version); - return ret; -} - -/* Marshalling */ - -void ml_gtk_callback_marshal (GtkObject *object, gpointer data, - guint nargs, GtkArg *args) -{ - value vargs = alloc_small(3,0); - - CAMLparam1 (vargs); - Field(vargs,0) = (value) object; - Field(vargs,1) = Val_int(nargs); - Field(vargs,2) = (value) args; - - callback (*(value*)data, vargs); - - Field(vargs,0) = Val_int(-1); - Field(vargs,1) = Val_int(-1); - CAMLreturn0; -} - -value ml_gtk_arg_shift (GtkArg *args, value index) -{ - return (value) (&args[Int_val(index)]); -} - -value ml_gtk_arg_get_type (GtkArg *arg) -{ - return Val_int (arg->type); -} - -value ml_gtk_arg_get (GtkArg *arg) -{ - CAMLparam0(); - CAMLlocal1(tmp); - value ret = Val_unit; - GtkFundamentalType type = GTK_FUNDAMENTAL_TYPE(arg->type); - int tag; - - switch (type) { - case GTK_TYPE_CHAR: - tag = 0; - tmp = Int_val(GTK_VALUE_CHAR(*arg)); - break; - case GTK_TYPE_BOOL: - tag = 1; - tmp = Val_bool(GTK_VALUE_BOOL(*arg)); - break; - case GTK_TYPE_INT: - case GTK_TYPE_ENUM: - case GTK_TYPE_UINT: - case GTK_TYPE_FLAGS: - tag = 2; - tmp = Val_int (GTK_VALUE_INT(*arg)); break; - case GTK_TYPE_LONG: - case GTK_TYPE_ULONG: - tag = 2; - tmp = Val_int (GTK_VALUE_LONG(*arg)); break; - case GTK_TYPE_FLOAT: - tag = 3; - tmp = copy_double ((double)GTK_VALUE_FLOAT(*arg)); break; - case GTK_TYPE_DOUBLE: - tag = 3; - tmp = copy_double (GTK_VALUE_DOUBLE(*arg)); break; - case GTK_TYPE_STRING: - tag = 4; - tmp = Val_option (GTK_VALUE_STRING(*arg), copy_string); break; - case GTK_TYPE_OBJECT: - tag = 5; - tmp = Val_option (GTK_VALUE_OBJECT(*arg), Val_GtkObject); break; - case GTK_TYPE_BOXED: - case GTK_TYPE_POINTER: - tag = 6; - tmp = Val_option (GTK_VALUE_POINTER(*arg), Val_pointer); break; - default: - tag = -1; - } - if (tag != -1) { - ret = alloc_small(1,tag); - Field(ret,0) = tmp; - } - CAMLreturn(ret); -} - -value ml_gtk_arg_set_retloc (GtkArg *arg, value val) -{ - value type = Fundamental_type_val(Is_block(val) ? Field(val,0) : val); - value data = (Is_block(val) ? Field(val,1) : 0); - if (GTK_FUNDAMENTAL_TYPE(arg->type) != GTK_TYPE_POINTER - && GTK_FUNDAMENTAL_TYPE(arg->type) != type) - ml_raise_gtk ("GtkArgv.Arg.set : argument type mismatch"); - switch (type) { - case GTK_TYPE_CHAR: *GTK_RETLOC_CHAR(*arg) = Int_val(data); break; - case GTK_TYPE_BOOL: *GTK_RETLOC_BOOL(*arg) = Int_val(data); break; - case GTK_TYPE_INT: - case GTK_TYPE_ENUM: *GTK_RETLOC_INT(*arg) = Int_val(data); break; - case GTK_TYPE_UINT: - case GTK_TYPE_FLAGS: *GTK_RETLOC_UINT(*arg) = Int32_val(data); break; - case GTK_TYPE_LONG: - case GTK_TYPE_ULONG: *GTK_RETLOC_LONG(*arg) = Nativeint_val(data); break; - case GTK_TYPE_FLOAT: *GTK_RETLOC_FLOAT(*arg) = Float_val(data); break; - case GTK_TYPE_DOUBLE: *GTK_RETLOC_DOUBLE(*arg) = Double_val(data); break; - case GTK_TYPE_STRING: - *GTK_RETLOC_STRING(*arg) = Option_val(data, String_val, NULL); - break; - case GTK_TYPE_BOXED: - case GTK_TYPE_POINTER: - case GTK_TYPE_OBJECT: - *GTK_RETLOC_POINTER(*arg) = Option_val(data, Pointer_val, NULL); - break; - } - return Val_unit; -} - -/* -value ml_gtk_arg_get_char (GtkArg *arg) -{ - if (GTK_FUNDAMENTAL_TYPE(arg->type) != GTK_TYPE_CHAR) - ml_raise_gtk ("argument type mismatch"); - return Val_char (GTK_VALUE_CHAR(*arg)); -} - -value ml_gtk_arg_get_bool (GtkArg *arg) -{ - if (GTK_FUNDAMENTAL_TYPE(arg->type) != GTK_TYPE_BOOL) - ml_raise_gtk ("argument type mismatch"); - return Val_bool (GTK_VALUE_BOOL(*arg)); -} - -value ml_gtk_arg_get_int (GtkArg *arg) -{ - switch (GTK_FUNDAMENTAL_TYPE(arg->type)) { - case GTK_TYPE_INT: - case GTK_TYPE_UINT: - return Val_int (GTK_VALUE_INT(*arg)); - case GTK_TYPE_LONG: - case GTK_TYPE_ULONG: - return Val_long (GTK_VALUE_LONG(*arg)); - case GTK_TYPE_ENUM: - return Val_int (GTK_VALUE_ENUM(*arg)); - case GTK_TYPE_FLAGS: - return Val_int (GTK_VALUE_FLAGS(*arg)); - default: - ml_raise_gtk ("argument type mismatch"); - } - return Val_unit; -} -*/ -value ml_gtk_arg_get_nativeint(GtkArg *arg) { - - switch(GTK_FUNDAMENTAL_TYPE(arg->type)) { - case GTK_TYPE_INT: - case GTK_TYPE_UINT: - return copy_nativeint (GTK_VALUE_INT(*arg)); - case GTK_TYPE_LONG: - case GTK_TYPE_ULONG: - return copy_nativeint (GTK_VALUE_LONG(*arg)); - case GTK_TYPE_ENUM: - return copy_nativeint (GTK_VALUE_ENUM(*arg)); - case GTK_TYPE_FLAGS: - return copy_nativeint (GTK_VALUE_FLAGS(*arg)); - default: - ml_raise_gtk ("argument type mismatch"); - } - return Val_unit; -} -/* -value ml_gtk_arg_get_float (GtkArg *arg) -{ - switch (GTK_FUNDAMENTAL_TYPE(arg->type)) { - case GTK_TYPE_FLOAT: - return copy_double ((double)GTK_VALUE_FLOAT(*arg)); - case GTK_TYPE_DOUBLE: - return copy_double (GTK_VALUE_DOUBLE(*arg)); - default: - ml_raise_gtk ("argument type mismatch"); - } - return Val_unit; -} - -value ml_gtk_arg_get_string (GtkArg *arg) -{ - char *p; - if (GTK_FUNDAMENTAL_TYPE(arg->type) != GTK_TYPE_STRING) - ml_raise_gtk ("argument type mismatch"); - p = GTK_VALUE_STRING(*arg); - return Val_option (p, copy_string); -} -*/ -value ml_gtk_arg_get_pointer (GtkArg *arg) -{ - gpointer p = NULL; - switch (GTK_FUNDAMENTAL_TYPE(arg->type)) { - case GTK_TYPE_STRING: - case GTK_TYPE_BOXED: - case GTK_TYPE_POINTER: - case GTK_TYPE_OBJECT: - p = GTK_VALUE_POINTER(*arg); break; - default: - ml_raise_gtk ("GtkArgv.get_pointer : argument type mismatch"); - } - return Val_pointer(p); -} -/* -value ml_gtk_arg_get_object (GtkArg *arg) -{ - GtkObject *p; - if (GTK_FUNDAMENTAL_TYPE(arg->type) != GTK_TYPE_OBJECT) - ml_raise_gtk ("argument type mismatch"); - p = GTK_VALUE_OBJECT(*arg); - return Val_option (p, Val_GtkObject); -} -*/ - -value ml_string_at_pointer (value ofs, value len, value ptr) -{ - char *start = ((char*)Pointer_val(ptr)) + Option_val(ofs, Int_val, 0); - int length = Option_val(len, Int_val, strlen(start)); - value ret = alloc_string(length); - memcpy ((char*)ret, start, length); - return ret; -} - -value ml_int_at_pointer (value ptr) -{ - return Val_int(*(int*)Pointer_val(ptr)); -} - -/* -value ml_gtk_arg_set_char (GtkArg *arg, value val) -{ - switch (GTK_FUNDAMENTAL_TYPE(arg->type)) { - case GTK_TYPE_POINTER: - case GTK_TYPE_CHAR: - *GTK_RETLOC_CHAR(*arg) = Char_val(val); break; - default: - ml_raise_gtk ("argument type mismatch"); - } - return Val_unit; -} - -value ml_gtk_arg_set_bool (GtkArg *arg, value val) -{ - switch (GTK_FUNDAMENTAL_TYPE(arg->type)) { - case GTK_TYPE_POINTER: - case GTK_TYPE_BOOL: - *GTK_RETLOC_BOOL(*arg) = Bool_val(val); break; - default: - ml_raise_gtk ("argument type mismatch"); - } - return Val_unit; -} - -value ml_gtk_arg_set_int (GtkArg *arg, value val) -{ - switch (GTK_FUNDAMENTAL_TYPE(arg->type)) { - case GTK_TYPE_POINTER: - case GTK_TYPE_INT: - case GTK_TYPE_UINT: - *GTK_RETLOC_INT(*arg) = Int_val(val); break; - case GTK_TYPE_LONG: - case GTK_TYPE_ULONG: - *GTK_RETLOC_LONG(*arg) = Long_val(val); break; - case GTK_TYPE_ENUM: - *GTK_RETLOC_ENUM(*arg) = Int_val(val); break; - case GTK_TYPE_FLAGS: - *GTK_RETLOC_FLAGS(*arg) = Int_val(val); break; - default: - ml_raise_gtk ("argument type mismatch"); - } - return Val_unit; -} - -value ml_gtk_arg_set_nativeint (GtkArg *arg, value val) -{ - switch (GTK_FUNDAMENTAL_TYPE(arg->type)) { - case GTK_TYPE_POINTER: - case GTK_TYPE_INT: - case GTK_TYPE_UINT: - *GTK_RETLOC_INT(*arg) = Nativeint_val(val); break; - case GTK_TYPE_LONG: - case GTK_TYPE_ULONG: - *GTK_RETLOC_LONG(*arg) = Nativeint_val(val); break; - case GTK_TYPE_ENUM: - *GTK_RETLOC_ENUM(*arg) = Nativeint_val(val); break; - case GTK_TYPE_FLAGS: - *GTK_RETLOC_FLAGS(*arg) = Nativeint_val(val); break; - default: - ml_raise_gtk ("argument type mismatch"); - } - return Val_unit; -} - -value ml_gtk_arg_set_float (GtkArg *arg, value val) -{ - switch (GTK_FUNDAMENTAL_TYPE(arg->type)) { - case GTK_TYPE_POINTER: - case GTK_TYPE_FLOAT: - *GTK_RETLOC_FLOAT(*arg) = (float) Double_val(val); break; - case GTK_TYPE_DOUBLE: - *GTK_RETLOC_DOUBLE(*arg) = Double_val(val); break; - default: - ml_raise_gtk ("argument type mismatch"); - } - return Val_unit; -} - -value ml_gtk_arg_set_string (GtkArg *arg, value val) -{ - switch (GTK_FUNDAMENTAL_TYPE(arg->type)) { - case GTK_TYPE_POINTER: - case GTK_TYPE_STRING: - *GTK_RETLOC_STRING(*arg) = String_val(val); break; - default: - ml_raise_gtk ("argument type mismatch"); - } - return Val_unit; -} - -value ml_gtk_arg_set_pointer (GtkArg *arg, value val) -{ - switch (GTK_FUNDAMENTAL_TYPE(arg->type)) { - case GTK_TYPE_BOXED: - *GTK_RETLOC_BOXED(*arg) = Pointer_val(val); break; - case GTK_TYPE_POINTER: - *GTK_RETLOC_POINTER(*arg) = Pointer_val(val); break; - default: - ml_raise_gtk ("argument type mismatch"); - } - return Val_unit; -} - -value ml_gtk_arg_set_object (GtkArg *arg, value val) -{ - switch (GTK_FUNDAMENTAL_TYPE(arg->type)) { - case GTK_TYPE_POINTER: - case GTK_TYPE_OBJECT: - *GTK_RETLOC_OBJECT(*arg) = GtkObject_val(val); break; - default: - ml_raise_gtk ("argument type mismatch"); - } - return Val_unit; -} -*/ - -/* gtksignal.h */ - -value ml_gtk_signal_connect (value object, value name, value clos, value after) -{ - value *clos_p = ml_global_root_new (clos); - return Val_int (gtk_signal_connect_full - (GtkObject_val(object), String_val(name), NULL, - ml_gtk_callback_marshal, clos_p, - ml_global_root_destroy, FALSE, Bool_val(after))); -} - -ML_2 (gtk_signal_disconnect, GtkObject_val, Int_val, Unit) -ML_2 (gtk_signal_emit_stop_by_name, GtkObject_val, String_val, Unit) -ML_2 (gtk_signal_handler_block, GtkObject_val, Int_val, Unit) -ML_2 (gtk_signal_handler_unblock, GtkObject_val, Int_val, Unit) -ML_2_name (ml_gtk_signal_emit_none, gtk_signal_emit_by_name, - GtkObject_val, String_val, Unit) -ML_3_name (ml_gtk_signal_emit_int, gtk_signal_emit_by_name, - GtkObject_val, String_val, Int_val, Unit) -ML_4_name (ml_gtk_signal_emit_scroll, gtk_signal_emit_by_name, - GtkObject_val, String_val, Scroll_type_val, Double_val, Unit) - -/* gtkmain.h (again) */ - -value ml_gtk_timeout_add (value interval, value clos) -{ - value *clos_p = ml_global_root_new (clos); - return Val_int (gtk_timeout_add_full - (Int_val(interval), NULL, ml_gtk_callback_marshal, clos_p, - ml_global_root_destroy)); -} -ML_1 (gtk_timeout_remove, Int_val, Unit) - -ML_1 (gtk_rc_add_default_file, String_val, Unit) diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtk.h b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtk.h deleted file mode 100644 index eac3f6ea5..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtk.h +++ /dev/null @@ -1,24 +0,0 @@ -/* $Id$ */ - -#define GtkObject_val(obj) ((GtkObject*)Field(obj,1)) -value Val_GtkObject (GtkObject *w); -value Val_GtkObject_sink (GtkObject *w); -#define GtkAccelGroup_val(val) ((GtkAccelGroup*)Pointer_val(val)) -value Val_GtkAccelGroup (GtkAccelGroup *); -#define GtkStyle_val(val) ((GtkStyle*)Pointer_val(val)) -value Val_GtkStyle (GtkStyle *); - -#define Val_GtkAny(w) Val_GtkObject((GtkObject*)w) -#define Val_GtkAny_sink(w) Val_GtkObject_sink((GtkObject*)w) -#define Val_GtkWidget Val_GtkAny -#define Val_GtkWidget_sink Val_GtkAny_sink - -#ifdef GTK_NO_CHECK_CASTS -#define check_cast(f,v) f(Pointer_val(v)) -#else -#define check_cast(f,v) (Pointer_val(v) == NULL ? NULL : f(Pointer_val(v))) -#endif - -#define GtkWidget_val(val) check_cast(GTK_WIDGET,val) -#define GtkAdjustment_val(val) check_cast(GTK_ADJUSTMENT,val) -#define GtkItem_val(val) check_cast(GTK_ITEM,val) diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtkbin.c b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtkbin.c deleted file mode 100644 index 9b797a6c9..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtkbin.c +++ /dev/null @@ -1,118 +0,0 @@ -/* $Id$ */ - -#include -#include -#include -#include -#include -#include -#include - -#include "wrappers.h" -#include "ml_glib.h" -#include "ml_gdk.h" -#include "ml_gtk.h" -#include "gtk_tags.h" - -/* gtkalignment.h */ - -#define GtkAlignment_val(val) check_cast(GTK_ALIGNMENT,val) -ML_4 (gtk_alignment_new, Float_val, Float_val, Float_val, Float_val, - Val_GtkWidget_sink) -value ml_gtk_alignment_set (value x, value y, - value xscale, value yscale, value val) -{ - GtkAlignment *alignment = GtkAlignment_val(val); - gtk_alignment_set (alignment, - Option_val(x, Float_val, alignment->xalign), - Option_val(y, Float_val, alignment->yalign), - Option_val(xscale, Float_val, alignment->xscale), - Option_val(yscale, Float_val, alignment->xscale)); - return Val_unit; -} - -/* gtkeventbox.h */ - -ML_0 (gtk_event_box_new, Val_GtkWidget_sink) - -/* gtkframe.h */ - -#define GtkFrame_val(val) check_cast(GTK_FRAME,val) -ML_1 (gtk_frame_new, Optstring_val, Val_GtkWidget_sink) -ML_2 (gtk_frame_set_label, GtkFrame_val, Optstring_val, Unit) -ML_3 (gtk_frame_set_label_align, GtkFrame_val, Float_val, Float_val, Unit) -ML_2 (gtk_frame_set_shadow_type, GtkFrame_val, Shadow_type_val, Unit) -Make_Extractor (gtk_frame_get, GtkFrame_val, label_xalign, copy_double) -Make_Extractor (gtk_frame_get, GtkFrame_val, label_yalign, copy_double) - -/* gtkaspectframe.h */ - -#define GtkAspectFrame_val(val) check_cast(GTK_ASPECT_FRAME,val) -ML_5 (gtk_aspect_frame_new, Optstring_val, - Float_val, Float_val, Float_val, Bool_val, Val_GtkWidget_sink) -ML_5 (gtk_aspect_frame_set, GtkAspectFrame_val, Float_val, Float_val, - Float_val, Bool_val, Unit) -Make_Extractor (gtk_aspect_frame_get, GtkAspectFrame_val, xalign, copy_double) -Make_Extractor (gtk_aspect_frame_get, GtkAspectFrame_val, yalign, copy_double) -Make_Extractor (gtk_aspect_frame_get, GtkAspectFrame_val, ratio, copy_double) -Make_Extractor (gtk_aspect_frame_get, GtkAspectFrame_val, obey_child, Val_bool) - -/* gtkhandlebox.h */ - -#define GtkHandleBox_val(val) check_cast(GTK_HANDLE_BOX,val) -ML_0 (gtk_handle_box_new, Val_GtkWidget_sink) -ML_2 (gtk_handle_box_set_shadow_type, GtkHandleBox_val, Shadow_type_val, Unit) -ML_2 (gtk_handle_box_set_handle_position, GtkHandleBox_val, Position_val, Unit) -ML_2 (gtk_handle_box_set_snap_edge, GtkHandleBox_val, Position_val, Unit) - -/* gtkinvisible.h */ -/* private class -ML_0 (gtk_invisible_new, Val_GtkWidget_sink) -*/ - -/* gtkitem.h */ - -ML_1 (gtk_item_select, GtkItem_val, Unit) -ML_1 (gtk_item_deselect, GtkItem_val, Unit) -ML_1 (gtk_item_toggle, GtkItem_val, Unit) - -/* gtkviewport.h */ - -#define GtkViewport_val(val) check_cast(GTK_VIEWPORT,val) -ML_2 (gtk_viewport_new, GtkAdjustment_val, GtkAdjustment_val, - Val_GtkWidget_sink) -ML_1 (gtk_viewport_get_hadjustment, GtkViewport_val, Val_GtkWidget_sink) -ML_1 (gtk_viewport_get_vadjustment, GtkViewport_val, Val_GtkWidget) -ML_2 (gtk_viewport_set_hadjustment, GtkViewport_val, GtkAdjustment_val, Unit) -ML_2 (gtk_viewport_set_vadjustment, GtkViewport_val, GtkAdjustment_val, Unit) -ML_2 (gtk_viewport_set_shadow_type, GtkViewport_val, Shadow_type_val, Unit) - -/* gtkscrolledwindow.h */ - -#define GtkScrolledWindow_val(val) check_cast(GTK_SCROLLED_WINDOW,val) -ML_2 (gtk_scrolled_window_new, GtkAdjustment_val ,GtkAdjustment_val, - Val_GtkWidget_sink) -ML_2 (gtk_scrolled_window_set_hadjustment, GtkScrolledWindow_val , - GtkAdjustment_val, Unit) -ML_2 (gtk_scrolled_window_set_vadjustment, GtkScrolledWindow_val , - GtkAdjustment_val, Unit) -ML_1 (gtk_scrolled_window_get_hadjustment, GtkScrolledWindow_val, - Val_GtkWidget) -ML_1 (gtk_scrolled_window_get_vadjustment, GtkScrolledWindow_val, - Val_GtkWidget) -ML_3 (gtk_scrolled_window_set_policy, GtkScrolledWindow_val, - Policy_type_val, Policy_type_val, Unit) -Make_Extractor (gtk_scrolled_window_get, GtkScrolledWindow_val, - hscrollbar_policy, Val_policy_type) -Make_Extractor (gtk_scrolled_window_get, GtkScrolledWindow_val, - vscrollbar_policy, Val_policy_type) -ML_2 (gtk_scrolled_window_set_placement, GtkScrolledWindow_val, - Corner_type_val, Unit) -ML_2 (gtk_scrolled_window_add_with_viewport, GtkScrolledWindow_val, - GtkWidget_val, Unit) - -/* gtksocket.h */ - -#define GtkSocket_val(val) check_cast(GTK_SOCKET,val) -ML_0 (gtk_socket_new, Val_GtkWidget_sink) -ML_2 (gtk_socket_steal, GtkSocket_val, XID_val, Unit) diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtkbutton.c b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtkbutton.c deleted file mode 100644 index a718305e6..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtkbutton.c +++ /dev/null @@ -1,75 +0,0 @@ -/* $Id$ */ - -#include -#include -#include -#include -#include -#include -#include - -#include "wrappers.h" -#include "ml_glib.h" -#include "ml_gdk.h" -#include "ml_gtk.h" -#include "gtk_tags.h" - -/* gtkbutton.h */ - -#define GtkButton_val(val) check_cast(GTK_BUTTON,val) -ML_0 (gtk_button_new, Val_GtkWidget_sink) -ML_1 (gtk_button_new_with_label, String_val, Val_GtkWidget_sink) -ML_1 (gtk_button_pressed, GtkButton_val, Unit) -ML_1 (gtk_button_released, GtkButton_val, Unit) -ML_1 (gtk_button_clicked, GtkButton_val, Unit) -ML_1 (gtk_button_enter, GtkButton_val, Unit) -ML_1 (gtk_button_leave, GtkButton_val, Unit) - -/* gtktogglebutton.h */ - -#define GtkToggleButton_val(val) check_cast(GTK_TOGGLE_BUTTON,val) -ML_0 (gtk_toggle_button_new, Val_GtkWidget_sink) -ML_1 (gtk_toggle_button_new_with_label, String_val, Val_GtkWidget_sink) -ML_2 (gtk_toggle_button_set_mode, GtkToggleButton_val, Bool_val, Unit) -ML_2 (gtk_toggle_button_set_active, GtkToggleButton_val, Bool_val, Unit) -ML_1 (gtk_toggle_button_toggled, GtkToggleButton_val, Unit) -Make_Extractor (gtk_toggle_button_get, GtkToggleButton_val, active, Val_bool) - -/* gtkcheckbutton.h */ - -#define GtkCheckButton_val(val) check_cast(GTK_CHECK_BUTTON,val) -ML_0 (gtk_check_button_new, Val_GtkWidget_sink) -ML_1 (gtk_check_button_new_with_label, String_val, Val_GtkWidget_sink) - -/* gtkradiobutton.h */ - -#define GtkRadioButton_val(val) check_cast(GTK_RADIO_BUTTON,val) -static GSList* button_group_val(value val) -{ - return (val == Val_unit ? NULL : - gtk_radio_button_group(GtkRadioButton_val(Field(val,0)))); -} -ML_1 (gtk_radio_button_new, button_group_val, - Val_GtkWidget_sink) -ML_2 (gtk_radio_button_new_with_label, button_group_val, - String_val, Val_GtkWidget_sink) -ML_2 (gtk_radio_button_set_group, GtkRadioButton_val, button_group_val, Unit) - -/* gtktoolbar.h */ - -#define GtkToolbar_val(val) check_cast(GTK_TOOLBAR,val) -ML_2 (gtk_toolbar_new, Orientation_val, Toolbar_style_val, Val_GtkWidget_sink) -ML_2 (gtk_toolbar_insert_space, GtkToolbar_val, Int_val, Unit) -ML_7 (gtk_toolbar_insert_element, GtkToolbar_val, Toolbar_child_val, - Insert(NULL) Optstring_val, Optstring_val, Optstring_val, GtkWidget_val, - Insert(NULL) Insert(NULL) Int_val, Val_GtkWidget) -ML_bc7 (ml_gtk_toolbar_insert_element) -ML_5 (gtk_toolbar_insert_widget, GtkToolbar_val, GtkWidget_val, - Optstring_val, Optstring_val, Int_val, Unit) -ML_2 (gtk_toolbar_set_orientation, GtkToolbar_val, Orientation_val, Unit) -ML_2 (gtk_toolbar_set_style, GtkToolbar_val, Toolbar_style_val, Unit) -ML_2 (gtk_toolbar_set_space_size, GtkToolbar_val, Int_val, Unit) -ML_2 (gtk_toolbar_set_space_style, GtkToolbar_val, Toolbar_space_style_val, Unit) -ML_2 (gtk_toolbar_set_tooltips, GtkToolbar_val, Bool_val, Unit) -ML_2 (gtk_toolbar_set_button_relief, GtkToolbar_val, Relief_style_val, Unit) -ML_1 (gtk_toolbar_get_button_relief, GtkToolbar_val, Val_relief_style) diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtkedit.c b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtkedit.c deleted file mode 100644 index 1c64ec2c7..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtkedit.c +++ /dev/null @@ -1,126 +0,0 @@ -/* $Id$ */ - -#include -#include -#include -#include -#include -#include -#include - -#include "wrappers.h" -#include "ml_glib.h" -#include "ml_gdk.h" -#include "ml_gtk.h" -#include "gtk_tags.h" - -/* gtkeditable.h */ - -#define GtkEditable_val(val) check_cast(GTK_EDITABLE,val) -ML_3 (gtk_editable_select_region, GtkEditable_val, Int_val, Int_val, Unit) -value ml_gtk_editable_insert_text (value w, value s, value pos) -{ - int position = Int_val(pos); - gtk_editable_insert_text (GtkEditable_val(w), String_val(s), - string_length(s), &position); - return Val_int(position); -} -ML_3 (gtk_editable_delete_text, GtkEditable_val, Int_val, Int_val, Unit) -ML_3 (gtk_editable_get_chars, GtkEditable_val, Int_val, Int_val, - copy_string_and_free) -ML_1 (gtk_editable_cut_clipboard, GtkEditable_val, Unit) -ML_1 (gtk_editable_copy_clipboard, GtkEditable_val, Unit) -ML_1 (gtk_editable_paste_clipboard, GtkEditable_val, Unit) -ML_3 (gtk_editable_claim_selection, GtkEditable_val, Bool_val, Int_val, Unit) -ML_1 (gtk_editable_delete_selection, GtkEditable_val, Unit) -ML_1 (gtk_editable_changed, GtkEditable_val, Unit) -ML_2 (gtk_editable_set_position, GtkEditable_val, Int_val, Unit) -ML_1 (gtk_editable_get_position, GtkEditable_val, Val_int) -ML_2 (gtk_editable_set_editable, GtkEditable_val, Bool_val, Unit) -Make_Extractor (gtk_editable, GtkEditable_val, selection_start_pos, Val_int) -Make_Extractor (gtk_editable, GtkEditable_val, selection_end_pos, Val_int) -Make_Extractor (gtk_editable, GtkEditable_val, has_selection, Val_bool) - -/* gtkentry.h */ - -#define GtkEntry_val(val) check_cast(GTK_ENTRY,val) -ML_0 (gtk_entry_new, Val_GtkWidget_sink) -ML_1 (gtk_entry_new_with_max_length, (gint16)Long_val, Val_GtkWidget_sink) -ML_2 (gtk_entry_set_text, GtkEntry_val, String_val, Unit) -ML_2 (gtk_entry_append_text, GtkEntry_val, String_val, Unit) -ML_2 (gtk_entry_prepend_text, GtkEntry_val, String_val, Unit) -ML_1 (gtk_entry_get_text, GtkEntry_val, Val_string) -ML_3 (gtk_entry_select_region, GtkEntry_val, Int_val, Int_val, Unit) -ML_2 (gtk_entry_set_visibility, GtkEntry_val, Bool_val, Unit) -ML_2 (gtk_entry_set_max_length, GtkEntry_val, (gint16)Long_val, Unit) -Make_Extractor (GtkEntry, GtkEntry_val, text_length, Val_int) - -/* gtkspinbutton.h */ - -#define GtkSpinButton_val(val) check_cast(GTK_SPIN_BUTTON,val) -ML_3 (gtk_spin_button_new, GtkAdjustment_val, - Float_val, Int_val, Val_GtkWidget_sink) -ML_2 (gtk_spin_button_set_adjustment, GtkSpinButton_val, GtkAdjustment_val, - Unit) -ML_1 (gtk_spin_button_get_adjustment, GtkSpinButton_val, Val_GtkAny) -ML_2 (gtk_spin_button_set_digits, GtkSpinButton_val, Int_val, Unit) -ML_1 (gtk_spin_button_get_value_as_float, GtkSpinButton_val, copy_double) -ML_2 (gtk_spin_button_set_value, GtkSpinButton_val, Float_val, Unit) -ML_2 (gtk_spin_button_set_update_policy, GtkSpinButton_val, - Update_type_val, Unit) -ML_2 (gtk_spin_button_set_numeric, GtkSpinButton_val, Bool_val, Unit) -ML_2 (gtk_spin_button_spin, GtkSpinButton_val, - Insert (Is_long(arg2) ? Spin_type_val(arg2) : GTK_SPIN_USER_DEFINED) - (Is_long(arg2) ? 0.0 : Float_val(Field(arg2,1))) Ignore, Unit) -ML_2 (gtk_spin_button_set_wrap, GtkSpinButton_val, Bool_val, Unit) -ML_2 (gtk_spin_button_set_shadow_type, GtkSpinButton_val, Shadow_type_val, Unit) -ML_2 (gtk_spin_button_set_snap_to_ticks, GtkSpinButton_val, Bool_val, Unit) -ML_4 (gtk_spin_button_configure, GtkSpinButton_val, GtkAdjustment_val, - Float_val, Int_val, Unit) -ML_1 (gtk_spin_button_update, GtkSpinButton_val, Unit) - -/* gtktext.h */ - -#define GtkText_val(val) check_cast(GTK_TEXT,val) -ML_2 (gtk_text_new, GtkAdjustment_val, GtkAdjustment_val, Val_GtkWidget_sink) -ML_2 (gtk_text_set_word_wrap, GtkText_val, Bool_val, Unit) -ML_2 (gtk_text_set_line_wrap, GtkText_val, Bool_val, Unit) -ML_3 (gtk_text_set_adjustments, GtkText_val, - Option_val(arg2,GtkAdjustment_val,GtkText_val(arg1)->hadj) Ignore, - Option_val(arg3,GtkAdjustment_val,GtkText_val(arg1)->vadj) Ignore, - Unit) -Make_Extractor (gtk_text_get, GtkText_val, hadj, Val_GtkWidget) -Make_Extractor (gtk_text_get, GtkText_val, vadj, Val_GtkWidget) -ML_2 (gtk_text_set_point, GtkText_val, Int_val, Unit) -ML_1 (gtk_text_get_point, GtkText_val, Val_int) -ML_1 (gtk_text_get_length, GtkText_val, Val_int) -ML_1 (gtk_text_freeze, GtkText_val, Unit) -ML_1 (gtk_text_thaw, GtkText_val, Unit) -value ml_gtk_text_insert (value text, value font, value fore, value back, - value str) -{ - gtk_text_insert (GtkText_val(text), - Option_val(font,GdkFont_val,NULL), - Option_val(fore,GdkColor_val,NULL), - Option_val(back,GdkColor_val,NULL), - String_val(str), string_length(str)); - return Val_unit; -} -ML_2 (gtk_text_forward_delete, GtkText_val, Int_val, Val_int) -ML_2 (gtk_text_backward_delete, GtkText_val, Int_val, Val_int) - -/* gtkcombo.h */ - -#define GtkCombo_val(val) check_cast(GTK_COMBO,val) -ML_0 (gtk_combo_new, Val_GtkWidget_sink) -ML_3 (gtk_combo_set_value_in_list, GtkCombo_val, - Option_val(arg2, Bool_val, GtkCombo_val(arg1)->value_in_list) Ignore, - Option_val(arg3, Bool_val, GtkCombo_val(arg1)->ok_if_empty) Ignore, - Unit) -ML_2 (gtk_combo_set_use_arrows, GtkCombo_val, Bool_val, Unit) -ML_2 (gtk_combo_set_use_arrows_always, GtkCombo_val, Bool_val, Unit) -ML_2 (gtk_combo_set_case_sensitive, GtkCombo_val, Bool_val, Unit) -ML_3 (gtk_combo_set_item_string, GtkCombo_val, GtkItem_val, String_val, Unit) -ML_1 (gtk_combo_disable_activate, GtkCombo_val, Unit) -Make_Extractor (gtk_combo, GtkCombo_val, entry, Val_GtkWidget) -Make_Extractor (gtk_combo, GtkCombo_val, list, Val_GtkWidget) diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtkgl.c b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtkgl.c deleted file mode 100644 index 5e0efd718..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtkgl.c +++ /dev/null @@ -1,54 +0,0 @@ -/* $Id$ */ - -#include -#include -#include -#include -#include -#include -#include - -#include "wrappers.h" -#include "ml_glib.h" -#include "ml_gdk.h" -#include "ml_gtk.h" -#include "gtkgl_tags.h" - -/* Conversion functions */ -#include "gtkgl_tags.c" - -#define GtkGLArea_val(val) ((GtkGLArea*)GtkObject_val(val)) - -value ml_gtk_gl_area_new (value list, value share) -{ - value cursor, res; - int len, i; - int *attrs; - - for (len = 0, cursor = list; cursor != Val_unit; cursor = Field(cursor,1)) - { - if (Is_block(Field(cursor,0))) len += 2; - else len++; - } - - attrs = (int*) stat_alloc ((len+1)*sizeof(int)); - - for (i = 0, cursor = list; cursor != Val_unit; cursor = Field(cursor,1)) - { - value option = Field(cursor,0); - if (Is_block(option)) { - attrs[i++] = Visual_options_val(Field(option,0)); - attrs[i++] = Int_val(Field(option,1)); - } - else attrs[i++] = Visual_options_val(option); - } - attrs[i] = GDK_GL_NONE; - - res = Val_GtkObject - ((GtkObject*)gtk_gl_area_share_new(attrs,GtkGLArea_val(share))); - stat_free(attrs); - return res; -} - -ML_1 (gtk_gl_area_make_current, GtkGLArea_val, Val_bool) -ML_1 (gtk_gl_area_swapbuffers, GtkGLArea_val, Unit) diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtklist.c b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtklist.c deleted file mode 100644 index d651ca3ab..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtklist.c +++ /dev/null @@ -1,168 +0,0 @@ -/* $Id$ */ - -#include -#include -#include -#include -#include -#include -#include - -#include "wrappers.h" -#include "ml_glib.h" -#include "ml_gdk.h" -#include "ml_gtk.h" -#include "gtk_tags.h" - -static Make_Flags_val (Button_action_val) - -/* gtklistitem.h */ - -ML_0 (gtk_list_item_new, Val_GtkWidget_sink) -ML_1 (gtk_list_item_new_with_label, String_val, Val_GtkWidget_sink) - -/* gtklist.h */ - -#define GtkList_val(val) check_cast(GTK_LIST,val) -ML_0 (gtk_list_new, Val_GtkWidget_sink) -value ml_gtk_list_insert_item (value list, value item, value pos) -{ - GList *tmp_list = g_list_alloc (); - tmp_list->data = GtkWidget_val(item); - tmp_list->next = NULL; - tmp_list->prev = NULL; - gtk_list_insert_items (GtkList_val(list), tmp_list, Int_val(pos)); - return Val_unit; -} -ML_3 (gtk_list_clear_items, GtkList_val, Int_val, Int_val, Unit) -ML_2 (gtk_list_select_item, GtkList_val, Int_val, Unit) -ML_2 (gtk_list_unselect_item, GtkList_val, Int_val, Unit) -ML_2 (gtk_list_select_child, GtkList_val, GtkWidget_val, Unit) -ML_2 (gtk_list_unselect_child, GtkList_val, GtkWidget_val, Unit) -ML_2 (gtk_list_child_position, GtkList_val, GtkWidget_val, Val_int) -ML_2 (gtk_list_set_selection_mode, GtkList_val, Selection_mode_val, Unit) - -/* gtkclist.h */ - -#define GtkCList_val(val) check_cast(GTK_CLIST,val) -ML_1 (gtk_clist_new, Int_val, Val_GtkWidget_sink) -ML_1 (gtk_clist_new_with_titles, Insert(Wosize_val(arg1)) (char **), - Val_GtkWidget_sink) -Make_Extractor (gtk_clist_get, GtkCList_val, rows, Val_int) -Make_Extractor (gtk_clist_get, GtkCList_val, columns, Val_int) -Make_Extractor (gtk_clist_get, GtkCList_val, focus_row, Val_int) -ML_2 (gtk_clist_set_hadjustment, GtkCList_val, GtkAdjustment_val, Unit) -ML_2 (gtk_clist_set_vadjustment, GtkCList_val, GtkAdjustment_val, Unit) -ML_1 (gtk_clist_get_hadjustment, GtkCList_val, Val_GtkAny) -ML_1 (gtk_clist_get_vadjustment, GtkCList_val, Val_GtkAny) -ML_2 (gtk_clist_set_shadow_type, GtkCList_val, Shadow_type_val, Unit) -ML_2 (gtk_clist_set_selection_mode, GtkCList_val, Selection_mode_val, Unit) -ML_2 (gtk_clist_set_reorderable, GtkCList_val, Bool_val, Unit) -ML_2 (gtk_clist_set_use_drag_icons, GtkCList_val, Bool_val, Unit) -ML_3 (gtk_clist_set_button_actions, GtkCList_val, Int_val, - (guint8)Flags_Button_action_val, Unit) -ML_1 (gtk_clist_freeze, GtkCList_val, Unit) -ML_1 (gtk_clist_thaw, GtkCList_val, Unit) -ML_1 (gtk_clist_column_titles_show, GtkCList_val, Unit) -ML_1 (gtk_clist_column_titles_hide, GtkCList_val, Unit) -ML_2 (gtk_clist_column_title_active, GtkCList_val, Int_val, Unit) -ML_2 (gtk_clist_column_title_passive, GtkCList_val, Int_val, Unit) -ML_1 (gtk_clist_column_titles_active, GtkCList_val, Unit) -ML_1 (gtk_clist_column_titles_passive, GtkCList_val, Unit) -ML_3 (gtk_clist_set_column_title, GtkCList_val, Int_val, String_val, Unit) -ML_2 (gtk_clist_get_column_title, GtkCList_val, Int_val, Val_string) -ML_3 (gtk_clist_set_column_widget, GtkCList_val, Int_val, GtkWidget_val, Unit) -ML_2 (gtk_clist_get_column_widget, GtkCList_val, Int_val, Val_GtkWidget) -ML_3 (gtk_clist_set_column_justification, GtkCList_val, Int_val, - Justification_val, Unit) -ML_3 (gtk_clist_set_column_visibility, GtkCList_val, Int_val, Bool_val, Unit) -ML_3 (gtk_clist_set_column_resizeable, GtkCList_val, Int_val, Bool_val, Unit) -ML_3 (gtk_clist_set_column_auto_resize, GtkCList_val, Int_val, Bool_val, Unit) -ML_1 (gtk_clist_columns_autosize, GtkCList_val, Unit) -ML_2 (gtk_clist_optimal_column_width, GtkCList_val, Int_val, Val_int) -ML_3 (gtk_clist_set_column_width, GtkCList_val, Int_val, Int_val, Unit) -ML_3 (gtk_clist_set_column_min_width, GtkCList_val, Int_val, Int_val, Unit) -ML_3 (gtk_clist_set_column_max_width, GtkCList_val, Int_val, Int_val, Unit) -ML_2 (gtk_clist_set_row_height, GtkCList_val, Int_val, Unit) -ML_5 (gtk_clist_moveto, GtkCList_val, Int_val, Int_val, - Double_val, Double_val, Unit) -ML_2 (gtk_clist_row_is_visible, GtkCList_val, Int_val, Val_visibility) -ML_3 (gtk_clist_get_cell_type, GtkCList_val, Int_val, Int_val, Val_cell_type) -ML_4 (gtk_clist_set_text, GtkCList_val, Int_val, Int_val, Optstring_val, Unit) -value ml_gtk_clist_get_text (value clist, value row, value column) -{ - char *text; - if (!gtk_clist_get_text (GtkCList_val(clist), Int_val(row), - Int_val(column), &text)) - invalid_argument ("Gtk.Clist.get_text"); - return Val_optstring(text); -} -ML_5 (gtk_clist_set_pixmap, GtkCList_val, Int_val, Int_val, GdkPixmap_val, - GdkBitmap_val, Unit) -value ml_gtk_clist_get_pixmap (value clist, value row, value column) -{ - CAMLparam0 (); - GdkPixmap *pixmap; - GdkBitmap *bitmap; - CAMLlocal2 (vpixmap,vbitmap); - value ret; - - if (!gtk_clist_get_pixmap (GtkCList_val(clist), Int_val(row), - Int_val(column), &pixmap, &bitmap)) - invalid_argument ("Gtk.Clist.get_pixmap"); - vpixmap = Val_option (pixmap, Val_GdkPixmap); - vbitmap = Val_option (bitmap, Val_GdkBitmap); - - ret = alloc_small (2,0); - Field(ret,0) = vpixmap; - Field(ret,1) = vbitmap; - CAMLreturn(ret); -} -ML_7 (gtk_clist_set_pixtext, GtkCList_val, Int_val, Int_val, String_val, - (guint8)Long_val, GdkPixmap_val, GdkBitmap_val, Unit) -ML_bc7 (ml_gtk_clist_set_pixtext) -ML_3 (gtk_clist_set_foreground, GtkCList_val, Int_val, GdkColor_val, Unit) -ML_3 (gtk_clist_set_background, GtkCList_val, Int_val, GdkColor_val, Unit) -ML_3 (gtk_clist_get_cell_style, GtkCList_val, Int_val, Int_val, Val_GtkStyle) -ML_4 (gtk_clist_set_cell_style, GtkCList_val, Int_val, Int_val, GtkStyle_val, - Unit) -ML_2 (gtk_clist_get_row_style, GtkCList_val, Int_val, Val_GtkStyle) -ML_3 (gtk_clist_set_row_style, GtkCList_val, Int_val, GtkStyle_val, Unit) -ML_3 (gtk_clist_set_selectable, GtkCList_val, Int_val, Bool_val, Unit) -ML_2 (gtk_clist_get_selectable, GtkCList_val, Int_val, Val_bool) -ML_5 (gtk_clist_set_shift, GtkCList_val, Int_val, Int_val, Int_val, Int_val, - Unit) -/* ML_2 (gtk_clist_append, GtkCList_val, (char **), Val_int) */ -ML_3 (gtk_clist_insert, GtkCList_val, Int_val, (char **), Val_int) -ML_2 (gtk_clist_remove, GtkCList_val, Int_val, Unit) -value ml_gtk_clist_set_row_data (value w, value row, value data) -{ - value *data_p = ml_global_root_new (data); - gtk_clist_set_row_data_full (GtkCList_val(w), Int_val(row), - data_p, ml_global_root_destroy); - return Val_unit; -} -ML_2 (gtk_clist_get_row_data, GtkCList_val, Int_val, *(value*)Check_null) -ML_3 (gtk_clist_select_row, GtkCList_val, Int_val, Int_val, Unit) -ML_3 (gtk_clist_unselect_row, GtkCList_val, Int_val, Int_val, Unit) -ML_1 (gtk_clist_clear, GtkCList_val, Unit) -value ml_gtk_clist_get_selection_info (value clist, value x, value y) -{ - int row, column; - value ret; - if (!gtk_clist_get_selection_info (GtkCList_val(clist), Int_val(x), - Int_val(y), &row, &column)) - invalid_argument ("Gtk.Clist.get_selection_info"); - ret = alloc_small (2,0); - Field(ret,0) = row; - Field(ret,1) = column; - return ret; -} -ML_1 (gtk_clist_select_all, GtkCList_val, Unit) -ML_1 (gtk_clist_unselect_all, GtkCList_val, Unit) -ML_3 (gtk_clist_swap_rows, GtkCList_val, Int_val, Int_val, Unit) -ML_3 (gtk_clist_row_move, GtkCList_val, Int_val, Int_val, Unit) -ML_2 (gtk_clist_set_sort_column, GtkCList_val, Int_val, Unit) -ML_2 (gtk_clist_set_sort_type, GtkCList_val, Sort_type_val, Unit) -ML_1 (gtk_clist_sort, GtkCList_val, Unit) -ML_2 (gtk_clist_set_auto_sort, GtkCList_val, Bool_val, Unit) diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtkmenu.c b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtkmenu.c deleted file mode 100644 index 355b9fea1..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtkmenu.c +++ /dev/null @@ -1,97 +0,0 @@ -/* $Id$ */ - -#include -#include -#include -#include -#include -#include -#include - -#include "wrappers.h" -#include "ml_glib.h" -#include "ml_gdk.h" -#include "ml_gtk.h" -#include "gtk_tags.h" - -/* gtkmenuitem.h */ - -#define GtkMenuItem_val(val) check_cast(GTK_MENU_ITEM,val) -ML_0 (gtk_menu_item_new, Val_GtkWidget_sink) -ML_0 (gtk_tearoff_menu_item_new, Val_GtkWidget_sink) -ML_1 (gtk_menu_item_new_with_label, String_val, Val_GtkWidget_sink) -ML_2 (gtk_menu_item_set_submenu, GtkMenuItem_val, GtkWidget_val, Unit) -ML_1 (gtk_menu_item_remove_submenu, GtkMenuItem_val, Unit) -ML_2 (gtk_menu_item_set_placement, GtkMenuItem_val, - Submenu_placement_val, Unit) -ML_3 (gtk_menu_item_configure, GtkMenuItem_val, Bool_val, Bool_val, Unit) -ML_1 (gtk_menu_item_activate, GtkMenuItem_val, Unit) -ML_1 (gtk_menu_item_right_justify, GtkMenuItem_val, Unit) - -/* gtkcheckmenuitem.h */ - -#define GtkCheckMenuItem_val(val) check_cast(GTK_CHECK_MENU_ITEM,val) -ML_0 (gtk_check_menu_item_new, Val_GtkWidget_sink) -ML_1 (gtk_check_menu_item_new_with_label, String_val, Val_GtkWidget_sink) -ML_2 (gtk_check_menu_item_set_active, GtkCheckMenuItem_val, Bool_val, Unit) -ML_2 (gtk_check_menu_item_set_show_toggle, GtkCheckMenuItem_val, - Bool_val, Unit) -ML_1 (gtk_check_menu_item_toggled, GtkCheckMenuItem_val, Unit) -Make_Extractor (gtk_check_menu_item_get, GtkCheckMenuItem_val, - active, Val_bool) - -/* gtkradiomenuitem.h */ - -#define GtkRadioMenuItem_val(val) check_cast(GTK_RADIO_MENU_ITEM,val) -static GSList* item_group_val(value val) -{ - return (val == Val_unit ? NULL : - gtk_radio_menu_item_group(GtkRadioMenuItem_val(Field(val,0)))); -} -ML_1 (gtk_radio_menu_item_new, item_group_val, Val_GtkWidget_sink) -ML_2 (gtk_radio_menu_item_new_with_label, item_group_val, - String_val, Val_GtkWidget_sink) -ML_2 (gtk_radio_menu_item_set_group, GtkRadioMenuItem_val, - item_group_val, Unit) - -/* gtkoptionmenu.h */ - -#define GtkOptionMenu_val(val) check_cast(GTK_OPTION_MENU,val) -ML_0 (gtk_option_menu_new, Val_GtkWidget_sink) -ML_1 (gtk_option_menu_get_menu, GtkOptionMenu_val, Val_GtkWidget_sink) -ML_2 (gtk_option_menu_set_menu, GtkOptionMenu_val, GtkWidget_val, Unit) -ML_1 (gtk_option_menu_remove_menu, GtkOptionMenu_val, Unit) -ML_2 (gtk_option_menu_set_history, GtkOptionMenu_val, Int_val, Unit) - -/* gtkmenushell.h */ - -#define GtkMenuShell_val(val) check_cast(GTK_MENU_SHELL,val) -ML_2 (gtk_menu_shell_append, GtkMenuShell_val, GtkWidget_val, Unit) -ML_2 (gtk_menu_shell_prepend, GtkMenuShell_val, GtkWidget_val, Unit) -ML_3 (gtk_menu_shell_insert, GtkMenuShell_val, GtkWidget_val, Int_val, Unit) -ML_1 (gtk_menu_shell_deactivate, GtkMenuShell_val, Unit) - -/* gtkmenu.h */ - -#define GtkMenu_val(val) check_cast(GTK_MENU,val) -ML_0 (gtk_menu_new, Val_GtkWidget_sink) -ML_5 (gtk_menu_popup, GtkMenu_val, GtkWidget_val, GtkWidget_val, - Insert(NULL) Insert(NULL) Int_val, Int_val, Unit) -ML_1 (gtk_menu_popdown, GtkMenu_val, Unit) -ML_1 (gtk_menu_get_active, GtkMenu_val, Val_GtkWidget) -ML_2 (gtk_menu_set_active, GtkMenu_val, Int_val, Unit) -ML_2 (gtk_menu_set_accel_group, GtkMenu_val, GtkAccelGroup_val, Unit) -ML_1 (gtk_menu_get_accel_group, GtkMenu_val, Val_GtkAccelGroup) -ML_1 (gtk_menu_ensure_uline_accel_group, GtkMenu_val, Val_GtkAccelGroup) -value ml_gtk_menu_attach_to_widget (value menu, value widget) -{ - gtk_menu_attach_to_widget (GtkMenu_val(menu), GtkWidget_val(widget), NULL); - return Val_unit; -} -ML_1 (gtk_menu_get_attach_widget, GtkMenu_val, Val_GtkWidget) -ML_1 (gtk_menu_detach, GtkMenu_val, Unit) - -/* gtkmenubar.h */ - -#define GtkMenuBar_val(val) check_cast(GTK_MENU_BAR,val) -ML_0 (gtk_menu_bar_new, Val_GtkWidget_sink) diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtkmisc.c b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtkmisc.c deleted file mode 100644 index f69f34390..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtkmisc.c +++ /dev/null @@ -1,139 +0,0 @@ -/* $Id$ */ - -#include -#include -#include -#include -#include -#include -#include - -#include "wrappers.h" -#include "ml_glib.h" -#include "ml_gdk.h" -#include "ml_gtk.h" -#include "gtk_tags.h" - -/* gtkgamma.h */ - -#define GtkGammaCurve_val(val) check_cast(GTK_GAMMA_CURVE,val) -ML_0 (gtk_gamma_curve_new, Val_GtkWidget_sink) -Make_Extractor (gtk_gamma_curve_get, GtkGammaCurve_val, gamma, copy_double) - -/* gtkstatusbar.h */ - -#define GtkStatusbar_val(val) check_cast(GTK_STATUSBAR,val) -ML_0 (gtk_statusbar_new, Val_GtkWidget_sink) -ML_2 (gtk_statusbar_get_context_id, GtkStatusbar_val, String_val, Val_int) -ML_3 (gtk_statusbar_push, GtkStatusbar_val, Int_val, String_val, Val_int) -ML_2 (gtk_statusbar_pop, GtkStatusbar_val, Int_val, Unit) -ML_3 (gtk_statusbar_remove, GtkStatusbar_val, Int_val, Int_val, Unit) - -/* gtkcalendar.h */ - -#define GtkCalendar_val(val) check_cast(GTK_CALENDAR,val) -ML_0 (gtk_calendar_new, Val_GtkWidget_sink) -ML_3 (gtk_calendar_select_month, GtkCalendar_val, Int_val, Int_val, Unit) -ML_2 (gtk_calendar_select_day, GtkCalendar_val, Int_val, Unit) -ML_2 (gtk_calendar_mark_day, GtkCalendar_val, Int_val, Unit) -ML_2 (gtk_calendar_unmark_day, GtkCalendar_val, Int_val, Unit) -ML_1 (gtk_calendar_clear_marks, GtkCalendar_val, Unit) -Make_Flags_val (Calendar_display_options_val) -ML_2 (gtk_calendar_display_options, GtkCalendar_val, - Flags_Calendar_display_options_val, Unit) -value ml_gtk_calendar_get_date (value w) -{ - guint year, month, day; - value ret; - - gtk_calendar_get_date (GtkCalendar_val(w), &year, &month, &day); - ret = alloc_small (3, 0); - Field(ret,0) = Val_int(year); - Field(ret,1) = Val_int(month); - Field(ret,2) = Val_int(day); - return ret; -} -ML_1 (gtk_calendar_freeze, GtkCalendar_val, Unit) -ML_1 (gtk_calendar_thaw, GtkCalendar_val, Unit) - -/* gtkdrawingarea.h */ - -#define GtkDrawingArea_val(val) check_cast(GTK_DRAWING_AREA,val) -ML_0 (gtk_drawing_area_new, Val_GtkWidget_sink) -ML_3 (gtk_drawing_area_size, GtkDrawingArea_val, Int_val, Int_val, Unit) - -/* gtkmisc.h */ - -#define GtkMisc_val(val) check_cast(GTK_MISC,val) -ML_3 (gtk_misc_set_alignment, GtkMisc_val, Double_val, Double_val, Unit) -ML_3 (gtk_misc_set_padding, GtkMisc_val, Int_val, Int_val, Unit) -Make_Extractor (gtk_misc_get, GtkMisc_val, xalign, copy_double) -Make_Extractor (gtk_misc_get, GtkMisc_val, yalign, copy_double) -Make_Extractor (gtk_misc_get, GtkMisc_val, xpad, Val_int) -Make_Extractor (gtk_misc_get, GtkMisc_val, ypad, Val_int) - -/* gtkarrow.h */ - -#define GtkArrow_val(val) check_cast(GTK_ARROW,val) -ML_2 (gtk_arrow_new, Arrow_type_val, Shadow_type_val, Val_GtkWidget_sink) -ML_3 (gtk_arrow_set, GtkArrow_val, Arrow_type_val, Shadow_type_val, Unit) - -/* gtkimage.h */ - -#define GtkImage_val(val) check_cast(GTK_IMAGE,val) -ML_2 (gtk_image_new, GdkImage_val, - Option_val (arg2, GdkBitmap_val, NULL) Ignore, Val_GtkWidget_sink) -ML_3 (gtk_image_set, GtkImage_val, GdkImage_val, - Option_val (arg2, GdkBitmap_val, NULL) Ignore, Unit) - -/* gtklabel.h */ - -#define GtkLabel_val(val) check_cast(GTK_LABEL,val) -ML_1 (gtk_label_new, String_val, Val_GtkWidget_sink) -ML_2 (gtk_label_set_text, GtkLabel_val, String_val, Unit) -ML_2 (gtk_label_set_pattern, GtkLabel_val, String_val, Unit) -ML_2 (gtk_label_set_justify, GtkLabel_val, Justification_val, Unit) -ML_2 (gtk_label_set_line_wrap, GtkLabel_val, Bool_val, Unit) -Make_Extractor (gtk_label_get, GtkLabel_val, label, Val_string) - -/* gtktipsquery.h */ - -#define GtkTipsQuery_val(val) check_cast(GTK_TIPS_QUERY,val) -ML_0 (gtk_tips_query_new, Val_GtkWidget_sink) -ML_1 (gtk_tips_query_start_query, GtkTipsQuery_val, Unit) -ML_1 (gtk_tips_query_stop_query, GtkTipsQuery_val, Unit) -ML_2 (gtk_tips_query_set_caller, GtkTipsQuery_val, GtkWidget_val, Unit) -ML_3 (gtk_tips_query_set_labels, GtkTipsQuery_val, - String_val, String_val, Unit) -value ml_gtk_tips_query_set_emit_always (value w, value arg) -{ - GtkTipsQuery_val(w)->emit_always = Bool_val(arg); - return Val_unit; -} -Make_Extractor (gtk_tips_query_get, GtkTipsQuery_val, emit_always, Val_bool) -Make_Extractor (gtk_tips_query_get, GtkTipsQuery_val, caller, Val_GtkWidget) -Make_Extractor (gtk_tips_query_get, GtkTipsQuery_val, label_inactive, - Val_string) -Make_Extractor (gtk_tips_query_get, GtkTipsQuery_val, label_no_tip, - Val_string) - -/* gtkpixmap.h */ - -#define GtkPixmap_val(val) check_cast(GTK_PIXMAP,val) -ML_2 (gtk_pixmap_new, GdkPixmap_val, - Option_val (arg2, GdkBitmap_val, NULL) Ignore, - Val_GtkWidget_sink) -value ml_gtk_pixmap_set (value val, value pixmap, value mask) -{ - GtkPixmap *w = GtkPixmap_val(val); - gtk_pixmap_set (w, Option_val(pixmap,GdkPixmap_val,w->pixmap), - Option_val(mask,GdkBitmap_val,w->mask)); - return Val_unit; -} -Make_Extractor (GtkPixmap, GtkPixmap_val, pixmap, Val_GdkPixmap) -Make_Extractor (GtkPixmap, GtkPixmap_val, mask, Val_GdkBitmap) - -/* gtk[hv]separator.h */ - -ML_0 (gtk_hseparator_new, Val_GtkWidget_sink) -ML_0 (gtk_vseparator_new, Val_GtkWidget_sink) diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtknew.c b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtknew.c deleted file mode 100644 index a75c1fb1f..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtknew.c +++ /dev/null @@ -1,180 +0,0 @@ -/* $Id$ */ - -#include -#include -#include -#include -#include -#include - -#include "wrappers.h" -#include "ml_glib.h" -#include "ml_gdk.h" -#include "ml_gtk.h" - -static value ml_class_init=0; - -static void class_init (value class) -{ - callback(ml_class_init, class); -} - - -value set_ml_class_init (value class_func) -{ - if (!ml_class_init) register_global_root (&ml_class_init); - ml_class_init = class_func; - return Val_unit; -} - -value ml_gtk_type_new (value type) -{ - return Val_GtkWidget_sink(gtk_type_new(Int_val(type))); -} - - -struct widget_info { - guint size; - guint class_size; - guint (*get_type_func)(void); -} -widget_info_array[] = { - { sizeof(GtkObject), sizeof(GtkObjectClass), gtk_object_get_type }, - { sizeof(GtkWidget), sizeof(GtkWidgetClass), gtk_widget_get_type }, - { sizeof(GtkMisc), sizeof(GtkMiscClass), gtk_misc_get_type }, - { sizeof(GtkLabel), sizeof(GtkLabelClass), gtk_label_get_type }, - { sizeof(GtkAccelLabel), sizeof(GtkAccelLabelClass), gtk_accel_label_get_type }, - { sizeof(GtkTipsQuery), sizeof(GtkTipsQueryClass), gtk_tips_query_get_type }, - { sizeof(GtkArrow), sizeof(GtkArrowClass), gtk_arrow_get_type }, - { sizeof(GtkImage), sizeof(GtkImageClass), gtk_image_get_type }, - { sizeof(GtkPixmap), sizeof(GtkPixmapClass), gtk_pixmap_get_type }, - { sizeof(GtkContainer), sizeof(GtkContainerClass), gtk_container_get_type }, - { sizeof(GtkBin), sizeof(GtkBinClass), gtk_bin_get_type }, - { sizeof(GtkAlignment), sizeof(GtkAlignmentClass), gtk_alignment_get_type }, - { sizeof(GtkFrame), sizeof(GtkFrameClass), gtk_frame_get_type }, - { sizeof(GtkAspectFrame), sizeof(GtkAspectFrameClass), gtk_aspect_frame_get_type }, - { sizeof(GtkButton), sizeof(GtkButtonClass), gtk_button_get_type }, - { sizeof(GtkToggleButton), sizeof(GtkToggleButtonClass), gtk_toggle_button_get_type }, - { sizeof(GtkCheckButton), sizeof(GtkCheckButtonClass), gtk_check_button_get_type }, - { sizeof(GtkRadioButton), sizeof(GtkRadioButtonClass), gtk_radio_button_get_type }, - { sizeof(GtkOptionMenu), sizeof(GtkOptionMenuClass), gtk_option_menu_get_type }, - { sizeof(GtkItem), sizeof(GtkItemClass), gtk_item_get_type }, - { sizeof(GtkMenuItem), sizeof(GtkMenuItemClass), gtk_menu_item_get_type }, - { sizeof(GtkCheckMenuItem), sizeof(GtkCheckMenuItemClass), gtk_check_menu_item_get_type }, - { sizeof(GtkRadioMenuItem), sizeof(GtkRadioMenuItemClass), gtk_radio_menu_item_get_type }, - { sizeof(GtkTearoffMenuItem), sizeof(GtkTearoffMenuItemClass), gtk_tearoff_menu_item_get_type }, - { sizeof(GtkListItem), sizeof(GtkListItemClass), gtk_list_item_get_type }, - { sizeof(GtkTreeItem), sizeof(GtkTreeItemClass), gtk_tree_item_get_type }, - { sizeof(GtkWindow), sizeof(GtkWindowClass), gtk_window_get_type }, - { sizeof(GtkColorSelectionDialog), sizeof(GtkColorSelectionDialogClass), gtk_color_selection_dialog_get_type }, - { sizeof(GtkDialog), sizeof(GtkDialogClass), gtk_dialog_get_type }, - { sizeof(GtkInputDialog), sizeof(GtkInputDialogClass), gtk_input_dialog_get_type }, - { sizeof(GtkFileSelection), sizeof(GtkFileSelectionClass), gtk_file_selection_get_type }, - { sizeof(GtkFontSelectionDialog), sizeof(GtkFontSelectionDialogClass), gtk_font_selection_dialog_get_type }, - { sizeof(GtkPlug), sizeof(GtkPlugClass), gtk_plug_get_type }, - { sizeof(GtkEventBox), sizeof(GtkEventBoxClass), gtk_event_box_get_type }, - { sizeof(GtkHandleBox), sizeof(GtkHandleBoxClass), gtk_handle_box_get_type }, - { sizeof(GtkScrolledWindow), sizeof(GtkScrolledWindowClass), gtk_scrolled_window_get_type }, - { sizeof(GtkViewport), sizeof(GtkViewportClass), gtk_viewport_get_type }, - { sizeof(GtkBox), sizeof(GtkBoxClass), gtk_box_get_type }, - { sizeof(GtkButtonBox), sizeof(GtkButtonBoxClass), gtk_button_box_get_type }, - { sizeof(GtkHButtonBox), sizeof(GtkHButtonBoxClass), gtk_hbutton_box_get_type }, - { sizeof(GtkVButtonBox), sizeof(GtkVButtonBoxClass), gtk_vbutton_box_get_type }, - { sizeof(GtkVBox), sizeof(GtkVBoxClass), gtk_vbox_get_type }, - { sizeof(GtkColorSelection), sizeof(GtkColorSelectionClass), gtk_color_selection_get_type }, - { sizeof(GtkGammaCurve), sizeof(GtkGammaCurveClass), gtk_gamma_curve_get_type }, - { sizeof(GtkHBox), sizeof(GtkHBoxClass), gtk_hbox_get_type }, - { sizeof(GtkCombo), sizeof(GtkComboClass), gtk_combo_get_type }, - { sizeof(GtkStatusbar), sizeof(GtkStatusbarClass), gtk_statusbar_get_type }, - { sizeof(GtkCList), sizeof(GtkCListClass), gtk_clist_get_type }, - { sizeof(GtkCTree), sizeof(GtkCTreeClass), gtk_ctree_get_type }, - { sizeof(GtkFixed), sizeof(GtkFixedClass), gtk_fixed_get_type }, - { sizeof(GtkNotebook), sizeof(GtkNotebookClass), gtk_notebook_get_type }, - { sizeof(GtkFontSelection), sizeof(GtkFontSelectionClass), gtk_font_selection_get_type }, - { sizeof(GtkPaned), sizeof(GtkPanedClass), gtk_paned_get_type }, - { sizeof(GtkHPaned), sizeof(GtkHPanedClass), gtk_hpaned_get_type }, - { sizeof(GtkVPaned), sizeof(GtkVPanedClass), gtk_vpaned_get_type }, - { sizeof(GtkLayout), sizeof(GtkLayoutClass), gtk_layout_get_type }, - { sizeof(GtkList), sizeof(GtkListClass), gtk_list_get_type }, - { sizeof(GtkMenuShell), sizeof(GtkMenuShellClass), gtk_menu_shell_get_type }, - { sizeof(GtkMenuBar), sizeof(GtkMenuBarClass), gtk_menu_bar_get_type }, - { sizeof(GtkMenu), sizeof(GtkMenuClass), gtk_menu_get_type }, - { sizeof(GtkPacker), sizeof(GtkPackerClass), gtk_packer_get_type }, - { sizeof(GtkSocket), sizeof(GtkSocketClass), gtk_socket_get_type }, - { sizeof(GtkTable), sizeof(GtkTableClass), gtk_table_get_type }, - { sizeof(GtkToolbar), sizeof(GtkToolbarClass), gtk_toolbar_get_type }, - { sizeof(GtkTree), sizeof(GtkTreeClass), gtk_tree_get_type }, - { sizeof(GtkCalendar), sizeof(GtkCalendarClass), gtk_calendar_get_type }, - { sizeof(GtkDrawingArea), sizeof(GtkDrawingAreaClass), gtk_drawing_area_get_type }, - { sizeof(GtkCurve), sizeof(GtkCurveClass), gtk_curve_get_type }, - { sizeof(GtkEditable), sizeof(GtkEditableClass), gtk_editable_get_type }, - { sizeof(GtkEntry), sizeof(GtkEntryClass), gtk_entry_get_type }, - { sizeof(GtkSpinButton), sizeof(GtkSpinButtonClass), gtk_spin_button_get_type }, - { sizeof(GtkText), sizeof(GtkTextClass), gtk_text_get_type }, - { sizeof(GtkRuler), sizeof(GtkRulerClass), gtk_ruler_get_type }, - { sizeof(GtkHRuler), sizeof(GtkHRulerClass), gtk_hruler_get_type }, - { sizeof(GtkVRuler), sizeof(GtkVRulerClass), gtk_vruler_get_type }, - { sizeof(GtkRange), sizeof(GtkRangeClass), gtk_range_get_type }, - { sizeof(GtkScale), sizeof(GtkScaleClass), gtk_scale_get_type }, - { sizeof(GtkHScale), sizeof(GtkHScaleClass), gtk_hscale_get_type }, - { sizeof(GtkVScale), sizeof(GtkVScaleClass), gtk_vscale_get_type }, - { sizeof(GtkScrollbar), sizeof(GtkScrollbarClass), gtk_scrollbar_get_type }, - { sizeof(GtkHScrollbar), sizeof(GtkHScrollbarClass), gtk_hscrollbar_get_type }, - { sizeof(GtkVScrollbar), sizeof(GtkVScrollbarClass), gtk_vscrollbar_get_type }, - { sizeof(GtkSeparator), sizeof(GtkSeparatorClass), gtk_separator_get_type }, - { sizeof(GtkHSeparator), sizeof(GtkHSeparatorClass), gtk_hseparator_get_type }, - { sizeof(GtkVSeparator), sizeof(GtkVSeparatorClass), gtk_vseparator_get_type }, - { sizeof(GtkPreview), sizeof(GtkPreviewClass), gtk_preview_get_type }, - { sizeof(GtkProgress), sizeof(GtkProgressClass), gtk_progress_get_type }, - { sizeof(GtkProgressBar), sizeof(GtkProgressBarClass), gtk_progress_bar_get_type }, - { sizeof(GtkData), sizeof(GtkDataClass), gtk_data_get_type }, - { sizeof(GtkAdjustment), sizeof(GtkAdjustmentClass), gtk_adjustment_get_type }, - { sizeof(GtkTooltips), sizeof(GtkTooltipsClass), gtk_tooltips_get_type }, - { sizeof(GtkItemFactory), sizeof(GtkItemFactoryClass), gtk_item_factory_get_type } -}; - - -value ml_gtk_type_unique (value name, value parent, value nsignals) -{ - struct widget_info * wi; - GtkTypeInfo ttt_info; - - wi = widget_info_array + Int_val(parent); - ttt_info.type_name = String_val(name); - ttt_info.object_size = wi->size; - ttt_info.class_size = wi->class_size + Int_val(nsignals)*sizeof(void *); - ttt_info.class_init_func = (GtkClassInitFunc) class_init; - ttt_info.object_init_func = (GtkObjectInitFunc) NULL; - ttt_info.reserved_1 = NULL; - ttt_info.reserved_2 = NULL; - ttt_info.base_class_init_func = (GtkClassInitFunc) NULL; - - return Val_int(gtk_type_unique(wi->get_type_func (), &ttt_info)); -} - -static guint sig[100]; - -value ml_gtk_object_class_add_signals (value class, value signals, - value nsignals) -{ - int i; - for (i=0; iclass_size+Int_val(num)*sizeof(void *); - return Val_int(gtk_signal_new (String_val(name), Int_val(run_type), - ((GtkObjectClass *)classe)->type, offset, - gtk_signal_default_marshaller, GTK_TYPE_NONE, 0)); - *(((int *)classe)+offset) = 0; -} diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtkpack.c b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtkpack.c deleted file mode 100644 index b089b882e..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtkpack.c +++ /dev/null @@ -1,229 +0,0 @@ -/* $Id$ */ - -#include -#include -#include -#include -#include -#include -#include - -#include "wrappers.h" -#include "ml_glib.h" -#include "ml_gdk.h" -#include "ml_gtk.h" -#include "gtk_tags.h" - -static Make_Flags_val (Attach_options_val) - -/* gtkbox.h */ - -#define GtkBox_val(val) check_cast(GTK_BOX,val) -ML_5 (gtk_box_pack_start, GtkBox_val, GtkWidget_val, Bool_val, Bool_val, - Int_val, Unit) -ML_5 (gtk_box_pack_end, GtkBox_val, GtkWidget_val, Bool_val, Bool_val, - Int_val, Unit) -ML_2 (gtk_box_set_homogeneous, GtkBox_val, Bool_val, Unit) -ML_2 (gtk_box_set_spacing, GtkBox_val, Int_val, Unit) -ML_3 (gtk_box_reorder_child, GtkBox_val, GtkWidget_val, Int_val, Unit) -value ml_gtk_box_query_child_packing (value box, value child) -{ - int expand, fill; - unsigned int padding; - GtkPackType pack_type; - value ret; - gtk_box_query_child_packing (GtkBox_val(box), GtkWidget_val(child), - &expand, &fill, &padding, &pack_type); - ret = alloc_small(4,0); - Field(ret,0) = Val_bool(expand); - Field(ret,1) = Val_bool(fill); - Field(ret,2) = Val_int(padding); - Field(ret,3) = Val_pack_type(pack_type); - return ret; -} -value ml_gtk_box_set_child_packing (value vbox, value vchild, value vexpand, - value vfill, value vpadding, value vpack) -{ - GtkBox *box = GtkBox_val(vbox); - GtkWidget *child = GtkWidget_val(vchild); - int expand, fill; - unsigned int padding; - GtkPackType pack; - gtk_box_query_child_packing (box, child, &expand, &fill, &padding, &pack); - gtk_box_set_child_packing (box, child, - Option_val(vexpand, Bool_val, expand), - Option_val(vfill, Bool_val, fill), - Option_val(vpadding, Int_val, padding), - Option_val(vpack, Pack_type_val, pack)); - return Val_unit; -} -ML_bc6 (ml_gtk_box_set_child_packing) - -ML_2 (gtk_hbox_new, Bool_val, Int_val, Val_GtkWidget_sink) -ML_2 (gtk_vbox_new, Bool_val, Int_val, Val_GtkWidget_sink) - -/* gtkbbox.h */ - -#define GtkButtonBox_val(val) check_cast(GTK_BUTTON_BOX,val) -Make_Extractor (gtk_button_box_get, GtkButtonBox_val, spacing, Val_int) -Make_Extractor (gtk_button_box_get, GtkButtonBox_val, child_min_width, Val_int) -Make_Extractor (gtk_button_box_get, GtkButtonBox_val, child_min_height, - Val_int) -Make_Extractor (gtk_button_box_get, GtkButtonBox_val, child_ipad_x, Val_int) -Make_Extractor (gtk_button_box_get, GtkButtonBox_val, child_ipad_y, Val_int) -Make_Extractor (gtk_button_box_get, GtkButtonBox_val, layout_style, - Val_button_box_style) -ML_2 (gtk_button_box_set_spacing, GtkButtonBox_val, Int_val, Unit) -ML_3 (gtk_button_box_set_child_size, GtkButtonBox_val, - Int_val, Int_val, Unit) -ML_3 (gtk_button_box_set_child_ipadding, GtkButtonBox_val, - Int_val, Int_val, Unit) -ML_2 (gtk_button_box_set_layout, GtkButtonBox_val, Button_box_style_val, Unit) -ML_2 (gtk_button_box_set_child_size_default, Int_val, Int_val, Unit) -ML_2 (gtk_button_box_set_child_ipadding_default, Int_val, Int_val, Unit) - -ML_0 (gtk_hbutton_box_new, Val_GtkWidget_sink) -ML_0 (gtk_vbutton_box_new, Val_GtkWidget_sink) - -/* gtkfixed.h */ - -#define GtkFixed_val(val) check_cast(GTK_FIXED,val) -ML_0 (gtk_fixed_new, Val_GtkWidget_sink) -ML_4 (gtk_fixed_put, GtkFixed_val, GtkWidget_val, (gint16)Long_val, (gint16)Long_val, Unit) -ML_4 (gtk_fixed_move, GtkFixed_val, GtkWidget_val, (gint16)Long_val, (gint16)Long_val, Unit) - -/* gtklayout.h */ - -#define GtkLayout_val(val) check_cast(GTK_LAYOUT,val) -ML_2 (gtk_layout_new, GtkAdjustment_val, GtkAdjustment_val, Val_GtkWidget_sink) -ML_4 (gtk_layout_put, GtkLayout_val, GtkWidget_val, Int_val, Int_val, Unit) -ML_4 (gtk_layout_move, GtkLayout_val, GtkWidget_val, Int_val, Int_val, Unit) -ML_3 (gtk_layout_set_size, GtkLayout_val, Int_val, Int_val, Unit) -ML_1 (gtk_layout_get_hadjustment, GtkLayout_val, Val_GtkAny) -ML_1 (gtk_layout_get_vadjustment, GtkLayout_val, Val_GtkAny) -ML_2 (gtk_layout_set_hadjustment, GtkLayout_val, GtkAdjustment_val, Unit) -ML_2 (gtk_layout_set_vadjustment, GtkLayout_val, GtkAdjustment_val, Unit) -ML_1 (gtk_layout_freeze, GtkLayout_val, Unit) -ML_1 (gtk_layout_thaw, GtkLayout_val, Unit) -Make_Extractor (gtk_layout_get, GtkLayout_val, width, Val_int) -Make_Extractor (gtk_layout_get, GtkLayout_val, height, Val_int) - -/* gtknotebook.h */ - -#define GtkNotebook_val(val) check_cast(GTK_NOTEBOOK,val) -ML_0 (gtk_notebook_new, Val_GtkWidget_sink) - -ML_5 (gtk_notebook_insert_page_menu, GtkNotebook_val, GtkWidget_val, - GtkWidget_val, GtkWidget_val, Int_val, Unit) -ML_2 (gtk_notebook_remove_page, GtkNotebook_val, Int_val, Unit) - -ML_2 (gtk_notebook_set_tab_pos, GtkNotebook_val, Position_val, Unit) -ML_2 (gtk_notebook_set_homogeneous_tabs, GtkNotebook_val, Bool_val, Unit) -ML_2 (gtk_notebook_set_show_tabs, GtkNotebook_val, Bool_val, Unit) -ML_2 (gtk_notebook_set_show_border, GtkNotebook_val, Bool_val, Unit) -ML_2 (gtk_notebook_set_scrollable, GtkNotebook_val, Bool_val, Unit) -ML_2 (gtk_notebook_set_tab_border, GtkNotebook_val, Int_val, Unit) -ML_1 (gtk_notebook_popup_enable, GtkNotebook_val, Unit) -ML_1 (gtk_notebook_popup_disable, GtkNotebook_val, Unit) - -ML_1 (gtk_notebook_get_current_page, GtkNotebook_val, Val_int) -ML_2 (gtk_notebook_set_page, GtkNotebook_val, Int_val, Unit) -ML_2 (gtk_notebook_get_nth_page, GtkNotebook_val, Int_val, Val_GtkWidget) -ML_2 (gtk_notebook_page_num, GtkNotebook_val, GtkWidget_val, Val_int) -ML_1 (gtk_notebook_next_page, GtkNotebook_val, Unit) -ML_1 (gtk_notebook_prev_page, GtkNotebook_val, Unit) - -ML_2 (gtk_notebook_get_tab_label, GtkNotebook_val, GtkWidget_val, - Val_GtkWidget) -ML_3 (gtk_notebook_set_tab_label, GtkNotebook_val, GtkWidget_val, - GtkWidget_val, Unit) -ML_2 (gtk_notebook_get_menu_label, GtkNotebook_val, GtkWidget_val, - Val_GtkWidget) -ML_3 (gtk_notebook_set_menu_label, GtkNotebook_val, GtkWidget_val, - GtkWidget_val, Unit) -ML_3 (gtk_notebook_reorder_child, GtkNotebook_val, GtkWidget_val, - Int_val, Unit) - - -/* gtkpacker.h */ - -Make_OptFlags_val(Packer_options_val) - -#define GtkPacker_val(val) check_cast(GTK_PACKER,val) -ML_0 (gtk_packer_new, Val_GtkWidget_sink) -ML_10 (gtk_packer_add, GtkPacker_val, GtkWidget_val, - Option_val(arg3,Side_type_val,GTK_SIDE_TOP) Ignore, - Option_val(arg4,Anchor_type_val,GTK_ANCHOR_CENTER) Ignore, - OptFlags_Packer_options_val, - Option_val(arg6,Int_val,GtkPacker_val(arg1)->default_border_width) Ignore, - Option_val(arg7,Int_val,GtkPacker_val(arg1)->default_pad_x) Ignore, - Option_val(arg8,Int_val,GtkPacker_val(arg1)->default_pad_y) Ignore, - Option_val(arg9,Int_val,GtkPacker_val(arg1)->default_i_pad_x) Ignore, - Option_val(arg10,Int_val,GtkPacker_val(arg1)->default_i_pad_y) Ignore, - Unit) -ML_bc10 (ml_gtk_packer_add) -ML_5 (gtk_packer_add_defaults, GtkPacker_val, GtkWidget_val, - Option_val(arg3,Side_type_val,GTK_SIDE_TOP) Ignore, - Option_val(arg4,Anchor_type_val,GTK_ANCHOR_CENTER) Ignore, - OptFlags_Packer_options_val, Unit) -ML_10 (gtk_packer_set_child_packing, GtkPacker_val, GtkWidget_val, - Option_val(arg3,Side_type_val,GTK_SIDE_TOP) Ignore, - Option_val(arg4,Anchor_type_val,GTK_ANCHOR_CENTER) Ignore, - OptFlags_Packer_options_val, - Option_val(arg6,Int_val,GtkPacker_val(arg1)->default_border_width) Ignore, - Option_val(arg7,Int_val,GtkPacker_val(arg1)->default_pad_x) Ignore, - Option_val(arg8,Int_val,GtkPacker_val(arg1)->default_pad_y) Ignore, - Option_val(arg9,Int_val,GtkPacker_val(arg1)->default_i_pad_x) Ignore, - Option_val(arg10,Int_val,GtkPacker_val(arg1)->default_i_pad_y) Ignore, - Unit) -ML_bc10 (ml_gtk_packer_set_child_packing) -ML_3 (gtk_packer_reorder_child, GtkPacker_val, GtkWidget_val, - Int_val, Unit) -ML_2 (gtk_packer_set_spacing, GtkPacker_val, Int_val, Unit) -value ml_gtk_packer_set_defaults (value w, value border_width, - value pad_x, value pad_y, - value i_pad_x, value i_pad_y) -{ - GtkPacker *p = GtkPacker_val(w); - if (Is_block(border_width)) - gtk_packer_set_default_border_width (p,Int_val(Field(border_width,0))); - if (Is_block(pad_x) || Is_block(pad_y)) - gtk_packer_set_default_pad - (p, Option_val(pad_x,Int_val,p->default_pad_x), - Option_val(pad_y,Int_val,p->default_pad_y)); - if (Is_block(i_pad_x) || Is_block(i_pad_y)) - gtk_packer_set_default_ipad - (p, Option_val(pad_x,Int_val,p->default_i_pad_x), - Option_val(pad_y,Int_val,p->default_i_pad_y)); - return Val_unit; -} -ML_bc6 (ml_gtk_packer_set_defaults) - -/* gtkpaned.h */ - -#define GtkPaned_val(val) check_cast(GTK_PANED,val) -ML_0 (gtk_hpaned_new, Val_GtkWidget_sink) -ML_0 (gtk_vpaned_new, Val_GtkWidget_sink) -ML_2 (gtk_paned_add1, GtkPaned_val, GtkWidget_val, Unit) -ML_2 (gtk_paned_add2, GtkPaned_val, GtkWidget_val, Unit) -ML_2 (gtk_paned_set_handle_size, GtkPaned_val, (gint16)Int_val, Unit) -ML_2 (gtk_paned_set_gutter_size, GtkPaned_val, (gint16)Int_val, Unit) -Make_Extractor (gtk_paned, GtkPaned_val, child1, Val_GtkWidget) -Make_Extractor (gtk_paned, GtkPaned_val, child2, Val_GtkWidget) -Make_Extractor (gtk_paned, GtkPaned_val, handle_size, Val_int) -Make_Extractor (gtk_paned, GtkPaned_val, gutter_size, Val_int) - -/* gtktable.h */ - -#define GtkTable_val(val) check_cast(GTK_TABLE,val) -ML_3 (gtk_table_new, Int_val, Int_val, Int_val, Val_GtkWidget_sink) -ML_10 (gtk_table_attach, GtkTable_val, GtkWidget_val, - Int_val, Int_val, Int_val, Int_val, - Flags_Attach_options_val, Flags_Attach_options_val, - Int_val, Int_val, Unit) -ML_bc10 (ml_gtk_table_attach) -ML_3 (gtk_table_set_row_spacing, GtkTable_val, Int_val, Int_val, Unit) -ML_3 (gtk_table_set_col_spacing, GtkTable_val, Int_val, Int_val, Unit) -ML_2 (gtk_table_set_row_spacings, GtkTable_val, Int_val, Unit) -ML_2 (gtk_table_set_col_spacings, GtkTable_val, Int_val, Unit) -ML_2 (gtk_table_set_homogeneous, GtkTable_val, Bool_val, Unit) diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtkrange.c b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtkrange.c deleted file mode 100644 index 642d26909..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtkrange.c +++ /dev/null @@ -1,88 +0,0 @@ -/* $Id$ */ - -#include -#include -#include -#include -#include -#include -#include - -#include "wrappers.h" -#include "ml_glib.h" -#include "ml_gdk.h" -#include "ml_gtk.h" -#include "gtk_tags.h" - -/* gtkprogress.h */ - -#define GtkProgress_val(val) check_cast(GTK_PROGRESS,val) -ML_2 (gtk_progress_set_show_text, GtkProgress_val, Bool_val, Unit) -ML_3 (gtk_progress_set_text_alignment, GtkProgress_val, - Option_val(arg2,Float_val,(GtkProgress_val(arg1))->x_align) Ignore, - Option_val(arg3,Float_val,(GtkProgress_val(arg1))->y_align) Ignore, Unit) -ML_2 (gtk_progress_set_format_string, GtkProgress_val, String_val, Unit) -ML_2 (gtk_progress_set_adjustment, GtkProgress_val, GtkAdjustment_val, Unit) -ML_4 (gtk_progress_configure, GtkProgress_val, - Float_val, Float_val, Float_val, Unit) -ML_2 (gtk_progress_set_percentage, GtkProgress_val, Float_val, Unit) -ML_2 (gtk_progress_set_value, GtkProgress_val, Float_val, Unit) -ML_1 (gtk_progress_get_value, GtkProgress_val, copy_double) -ML_1 (gtk_progress_get_current_percentage, GtkProgress_val, copy_double) -ML_2 (gtk_progress_set_activity_mode, GtkProgress_val, Bool_val, Unit) -ML_1 (gtk_progress_get_current_text, GtkProgress_val, Val_string) -Make_Extractor (gtk_progress_get, GtkProgress_val, adjustment, - Val_GtkAny) - -/* gtkprogressbar.h */ - -#define GtkProgressBar_val(val) check_cast(GTK_PROGRESS_BAR,val) -ML_0 (gtk_progress_bar_new, Val_GtkWidget_sink) -ML_1 (gtk_progress_bar_new_with_adjustment, GtkAdjustment_val, - Val_GtkWidget_sink) -ML_2 (gtk_progress_bar_set_bar_style, GtkProgressBar_val, - Progress_bar_style_val, Unit) -ML_2 (gtk_progress_bar_set_discrete_blocks, GtkProgressBar_val, Int_val, Unit) -ML_2 (gtk_progress_bar_set_activity_step, GtkProgressBar_val, Int_val, Unit) -ML_2 (gtk_progress_bar_set_activity_blocks, GtkProgressBar_val, Int_val, Unit) -ML_2 (gtk_progress_bar_set_orientation, GtkProgressBar_val, - Progress_bar_orientation_val, Unit) -/* ML_2 (gtk_progress_bar_update, GtkProgressBar_val, Float_val, Unit) */ - -/* gtkrange.h */ - -#define GtkRange_val(val) check_cast(GTK_RANGE,val) -ML_1 (gtk_range_get_adjustment, GtkRange_val, Val_GtkAny) -ML_2 (gtk_range_set_adjustment, GtkRange_val, GtkAdjustment_val, Unit) -ML_2 (gtk_range_set_update_policy, GtkRange_val, Update_type_val, Unit) - -/* gtkscale.h */ - -#define GtkScale_val(val) check_cast(GTK_SCALE,val) -ML_2 (gtk_scale_set_digits, GtkScale_val, Int_val, Unit) -ML_2 (gtk_scale_set_draw_value, GtkScale_val, Bool_val, Unit) -ML_2 (gtk_scale_set_value_pos, GtkScale_val, Position_val, Unit) -ML_1 (gtk_scale_get_value_width, GtkScale_val, Val_int) -ML_1 (gtk_scale_draw_value, GtkScale_val, Unit) -ML_1 (gtk_hscale_new, GtkAdjustment_val, Val_GtkWidget_sink) -ML_1 (gtk_vscale_new, GtkAdjustment_val, Val_GtkWidget_sink) - -/* gtkscrollbar.h */ - -ML_1 (gtk_hscrollbar_new, GtkAdjustment_val, Val_GtkWidget_sink) -ML_1 (gtk_vscrollbar_new, GtkAdjustment_val, Val_GtkWidget_sink) - -/* gtkruler.h */ - -#define GtkRuler_val(val) check_cast(GTK_RULER,val) -ML_2 (gtk_ruler_set_metric, GtkRuler_val, Metric_type_val, Unit) -ML_5 (gtk_ruler_set_range, GtkRuler_val, Float_val, - Float_val, Float_val, Float_val, Unit) -Make_Extractor (gtk_ruler_get, GtkRuler_val, lower, copy_double) -Make_Extractor (gtk_ruler_get, GtkRuler_val, upper, copy_double) -Make_Extractor (gtk_ruler_get, GtkRuler_val, position, copy_double) -Make_Extractor (gtk_ruler_get, GtkRuler_val, max_size, copy_double) -ML_1 (gtk_ruler_draw_ticks, GtkRuler_val, Unit) -ML_1 (gtk_ruler_draw_pos, GtkRuler_val, Unit) -ML_0 (gtk_hruler_new, Val_GtkWidget_sink) -ML_0 (gtk_vruler_new, Val_GtkWidget_sink) diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtktree.c b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtktree.c deleted file mode 100644 index a1239c2a7..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtktree.c +++ /dev/null @@ -1,53 +0,0 @@ -/* $Id$ */ - -#include -#include -#include -#include -#include -#include -#include - -#include "wrappers.h" -#include "ml_glib.h" -#include "ml_gdk.h" -#include "ml_gtk.h" -#include "gtk_tags.h" - -/* gtktreeitem.h */ - -#define GtkTreeItem_val(val) check_cast(GTK_TREE_ITEM,val) -ML_0 (gtk_tree_item_new, Val_GtkWidget_sink) -ML_1 (gtk_tree_item_new_with_label, String_val, Val_GtkWidget_sink) -ML_2 (gtk_tree_item_set_subtree, GtkTreeItem_val, GtkWidget_val, Unit) -ML_1 (gtk_tree_item_remove_subtree, GtkTreeItem_val, Unit) -ML_1 (gtk_tree_item_expand, GtkTreeItem_val, Unit) -ML_1 (gtk_tree_item_collapse, GtkTreeItem_val, Unit) -ML_1 (GTK_TREE_ITEM_SUBTREE, GtkTreeItem_val, Val_GtkWidget) - -/* gtktree.h */ - -#define GtkTree_val(val) check_cast(GTK_TREE,val) -ML_0 (gtk_tree_new, Val_GtkWidget_sink) -ML_3 (gtk_tree_insert, GtkTree_val, GtkWidget_val, Int_val, Unit) -ML_3 (gtk_tree_clear_items, GtkTree_val, Int_val, Int_val, Unit) -ML_2 (gtk_tree_select_item, GtkTree_val, Int_val, Unit) -ML_2 (gtk_tree_unselect_item, GtkTree_val, Int_val, Unit) -ML_2 (gtk_tree_child_position, GtkTree_val, GtkWidget_val, Val_int) -ML_2 (gtk_tree_set_selection_mode, GtkTree_val, Selection_mode_val, Unit) -ML_2 (gtk_tree_set_view_mode, GtkTree_val, Tree_view_mode_val, Unit) -ML_2 (gtk_tree_set_view_lines, GtkTree_val, Bool_val, Unit) - -static value val_gtkany (gpointer p) { return Val_GtkAny(p); } -value ml_gtk_tree_selection (value tree) -{ - GList *selection = GTK_TREE_SELECTION(GtkTree_val(tree)); - return Val_GList(selection, val_gtkany); -} -static gpointer gtkobject_val (value val) { return GtkObject_val(val); } -value ml_gtk_tree_remove_items (value tree, value items) -{ - GList *items_list = GList_val (items, gtkobject_val); - gtk_tree_remove_items (GtkTree_val(tree), items_list); - return Val_unit; -} diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtkxmhtml.c b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtkxmhtml.c deleted file mode 100644 index 54bd51ed0..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/ml_gtkxmhtml.c +++ /dev/null @@ -1,76 +0,0 @@ -/* $Id$ */ - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "wrappers.h" -#include "ml_glib.h" -#include "ml_gdk.h" -#include "ml_gtk.h" -#include "gtkxmhtml_tags.h" - -/* conversion functions */ - -#include "gtkxmhtml_tags.c" - -Make_Flags_val (Line_type_val) - -#define GtkXmHTML_val(val) ((GtkXmHTML*)GtkObject_val(val)) - -ML_0 (gtk_xmhtml_new, Val_GtkAny_sink) -ML_1 (gtk_xmhtml_freeze, GtkXmHTML_val, Unit) -ML_1 (gtk_xmhtml_thaw, GtkXmHTML_val, Unit) -ML_2 (gtk_xmhtml_source, GtkXmHTML_val, String_val, Unit) -ML_2 (gtk_xmhtml_set_string_direction, GtkXmHTML_val, String_direction_val, - Unit) -ML_2 (gtk_xmhtml_set_alignment, GtkXmHTML_val, Alignment_val, Unit) -/* ML_2 (gtk_xmhtml_outline, GtkXmHTML_val, Bool_val, Unit) */ -ML_3 (gtk_xmhtml_set_font_familty, GtkXmHTML_val, String_val, String_val, Unit) -ML_3 (gtk_xmhtml_set_font_familty_fixed, GtkXmHTML_val, String_val, String_val, - Unit) -ML_2 (gtk_xmhtml_set_font_charset, GtkXmHTML_val, String_val, Unit) -ML_2 (gtk_xmhtml_set_allow_body_colors, GtkXmHTML_val, Bool_val, Unit) -ML_2 (gtk_xmhtml_set_hilight_on_enter, GtkXmHTML_val, Bool_val, Unit) -ML_2 (gtk_xmhtml_set_anchor_underline_type, GtkXmHTML_val, Flags_Line_type_val, - Unit) -ML_2 (gtk_xmhtml_set_anchor_visited_underline_type, GtkXmHTML_val, - Flags_Line_type_val, Unit) -ML_2 (gtk_xmhtml_set_anchor_target_underline_type, GtkXmHTML_val, - Flags_Line_type_val, Unit) -ML_2 (gtk_xmhtml_set_allow_color_switching, GtkXmHTML_val, Bool_val, Unit) -ML_2 (gtk_xmhtml_set_dithering, GtkXmHTML_val, Dither_type_val, Unit) -ML_2 (gtk_xmhtml_set_allow_font_switching, GtkXmHTML_val, Bool_val, Unit) -ML_2 (gtk_xmhtml_set_max_image_colors, GtkXmHTML_val, Int_val, Unit) -ML_2 (gtk_xmhtml_set_allow_images, GtkXmHTML_val, Bool_val, Unit) -ML_4 (gtk_xmhtml_set_plc_intervals, GtkXmHTML_val, Int_val, Int_val, Int_val, - Unit) -/* ML_2 (gtk_xmhtml_set_def_body_image_url, GtkXmHTML_val, String_val, Unit) */ -ML_2 (gtk_xmhtml_set_anchor_buttons, GtkXmHTML_val, Bool_val, Unit) -value ml_gtk_xmhtml_set_anchor_cursor(value html, value cursor) -{ - gtk_xmhtml_set_anchor_cursor - (GtkXmHTML_val(html), Option_val(cursor, GdkCursor_val, NULL), - Bool_val(cursor)); - return Val_unit; -} -ML_2 (gtk_xmhtml_set_topline, GtkXmHTML_val, Int_val, Unit) -ML_1 (gtk_xmhtml_get_topline, GtkXmHTML_val, Val_int) -ML_2 (gtk_xmhtml_set_freeze_animations, GtkXmHTML_val, Bool_val, Unit) -/* ML_1 (gtk_xmhtml_get_source, GtkXmHTML_val, copy_string) */ -ML_2 (gtk_xmhtml_set_screen_gamma, GtkXmHTML_val, Float_val, Unit) -/* ML_2 (gtk_xmhtml_set_event_proc, GtkXmHTML_val, ???, Unit) */ -ML_2 (gtk_xmhtml_set_perfect_colors, GtkXmHTML_val, Bool_val, Unit) -ML_2 (gtk_xmhtml_set_uncompress_command, GtkXmHTML_val, String_val, Unit) -ML_2 (gtk_xmhtml_set_strict_checking, GtkXmHTML_val, Bool_val, Unit) -ML_2 (gtk_xmhtml_set_bad_html_warnings, GtkXmHTML_val, Bool_val, Unit) -ML_2 (gtk_xmhtml_set_allow_form_coloring, GtkXmHTML_val, Bool_val, Unit) -ML_2 (gtk_xmhtml_set_imagemap_draw, GtkXmHTML_val, Bool_val, Unit) -ML_2 (gtk_xmhtml_set_mime_type, GtkXmHTML_val, String_val, Unit) -ML_2 (gtk_xmhtml_set_alpha_processing, GtkXmHTML_val, Bool_val, Unit) -ML_2 (gtk_xmhtml_set_rgb_conv_mode, GtkXmHTML_val, Dither_type_val, Unit) diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/varcc.ml b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/varcc.ml deleted file mode 100644 index 100bee331..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/varcc.ml +++ /dev/null @@ -1,157 +0,0 @@ -(* $Id$ *) - -(* Compile a list of variant tags into CPP defines *) - -(* hash_variant, from ctype.ml *) - -let hash_variant s = - let accu = ref 0 in - for i = 0 to String.length s - 1 do - accu := 223 * !accu + Char.code s.[i] - done; - (* reduce to 31 bits *) - accu := !accu land (1 lsl 31 - 1); - (* make it signed for 64 bits architectures *) - if !accu > 0x3FFFFFFF then !accu - (1 lsl 31) else !accu - -open Genlex - -let lexer = make_lexer ["type"; "public"; "="; "["; "]"; "`"; "|"] - -let may_string = parser - [< ' String s >] -> s - | [< >] -> "" - -let may_bar = parser - [< ' Kwd "|" >] -> () - | [< >] -> () - -let rec ident_list = parser - [< ' Kwd "`"; ' Ident x; trans = may_string; _ = may_bar; s >] -> - (x, trans) :: ident_list s - | [< >] -> [] - -let static = ref false -let may_public = parser - [< ' Kwd "public" >] -> true - | [< ' Kwd "private" >] -> false - | [< >] -> not !static - -open Printf - -let hashes = Hashtbl.create 57 - -let declaration ~hc ~cc = parser - [< ' Kwd "type"; public = may_public; ' Ident name; ' Kwd "="; - prefix = may_string; ' Kwd "["; _ = may_bar; - tags = ident_list; ' Kwd "]"; suffix = may_string >] -> - let oh x = fprintf hc x and oc x = fprintf cc x in - (* Output tag values to headers *) - let first = ref true in - List.iter tags ~f: - begin fun (tag, _) -> - let hash = hash_variant tag in - try - let tag' = Hashtbl.find hashes hash in - if tag <> tag' then - failwith (String.concat ~sep:" " ["Doublon tag:";tag;"and";tag']) - with Not_found -> - Hashtbl.add ~key:hash ~data:tag hashes; - if !first then begin - oh "/* %s : tags and macros */\n" name; first := false - end; - oh "#define MLTAG_%s\tVal_int(%d)\n" tag hash; - end; - (* compute C name *) - let ctag tag trans = - if trans <> "" then trans else - let tag = - if tag.[0] = '_' then - String.sub tag ~pos:1 ~len:(String.length tag -1) - else tag - in - match - if prefix = "" then None, "" - else - Some (prefix.[String.length prefix - 1]), - String.sub prefix ~pos:0 ~len:(String.length prefix - 1) - with - Some '#', prefix -> - prefix ^ String.uncapitalize tag ^ suffix - | Some '^', prefix -> - prefix ^ String.uppercase tag ^ suffix - | _ -> - prefix ^ tag ^ suffix - and cname = - String.capitalize name - in - let tags = - Sort.list tags - ~order:(fun (tag1,_) (tag2,_) -> hash_variant tag1 < hash_variant tag2) - in - (* Output table to code file *) - oc "/* %s : conversion table */\n" name; - let static = if not public then "static " else "" in - oc "%slookup_info ml_table_%s[] = {\n" static name; - oc " { 0, %d },\n" (List.length tags); - List.iter tags ~f: - begin fun (tag,trans) -> - oc " { MLTAG_%s, %s },\n" tag (ctag tag trans) - end; - oc "};\n\n"; - (* Output macros to headers *) - if not !first then oh "\n"; - if public then oh "extern lookup_info ml_table_%s[];\n" name; - oh "#define Val_%s(data) ml_lookup_from_c (ml_table_%s, data)\n" - name name; - oh "#define %s_val(key) ml_lookup_to_c (ml_table_%s, key)\n\n" - cname name; - | [< >] -> raise End_of_file - - -let process ic ~hc ~cc = - let chars = Stream.of_channel ic in - let s = lexer chars in - try - while true do declaration s ~hc ~cc done - with End_of_file -> () - | Stream.Error err -> - failwith - (Printf.sprintf "Parsing error \"%s\" at character %d on input stream" - err (Stream.count chars)) - -let main () = - let inputs = ref [] in - let header = ref "" in - let code = ref "" in - Arg.parse ~errmsg:"usage: varcc [options] file.var" ~keywords: - [ "-h", Arg.String ((:=) header), "file to output macros (file.h)"; - "-c", Arg.String ((:=) code), - "file to output conversion tables (file.c)"; - "-static", Arg.Set static, "do not export conversion tables" ] - ~others:(fun s -> inputs := s :: !inputs); - let inputs = List.rev !inputs in - begin match inputs with - | [] -> - if !header = "" then header := "a.h"; - if !code = "" then code := "a.c" - | ip :: _ -> - let rad = - if Filename.check_suffix ip ".var" then Filename.chop_extension ip - else ip in - if !header = "" then header := rad ^ ".h"; - if !code = "" then code := rad ^ ".c" - end; - let hc = open_out !header and cc = open_out !code in - let chars = Stream.of_channel stdin in - if inputs = [] then process stdin ~hc ~cc else begin - List.iter inputs ~f: - begin fun file -> - let ic = open_in file in - try process ic ~hc ~cc; close_in ic - with exn -> close_in ic; prerr_endline ("Error in " ^ file); raise exn - end - end; - close_out hc; close_out cc - -let _ = Printexc.print main () diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/wrappers.c b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/wrappers.c deleted file mode 100644 index ee0f56797..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/wrappers.c +++ /dev/null @@ -1,90 +0,0 @@ -/* $Id$ */ - -#include -#include -#include -#include -#include -#include - -#include "wrappers.h" - -value copy_memblock_indirected (void *src, asize_t size) -{ - value ret = alloc (Wosize_asize(size)+2, Abstract_tag); - if (!src) ml_raise_null_pointer (); - - Field(ret,1) = 2; - memcpy (&Field(ret,2), src, size); - return ret; -} - -value ml_some (value v) -{ - CAMLparam1(v); - value ret = alloc_small(1,0); - Field(ret,0) = v; - CAMLreturn(ret); -} - -void ml_raise_null_pointer () -{ - static value * exn = NULL; - if (exn == NULL) - exn = caml_named_value ("null_pointer"); - raise_constant (*exn); -} - -value Val_pointer (void *ptr) -{ - value ret = alloc_small (2, Abstract_tag); - if (!ptr) ml_raise_null_pointer (); - Field(ret,1) = (value)ptr; - return ret; -} - -value copy_string_check (const char*str) -{ - if (!str) ml_raise_null_pointer (); - return copy_string ((char*) str); -} - -value copy_string_or_null (const char*str) -{ - return copy_string (str ? (char*) str : ""); -} - -value *ml_global_root_new (value v) -{ - value *p = stat_alloc(sizeof(value)); - *p = v; - register_global_root (p); - return p; -} - -void ml_global_root_destroy (void *data) -{ - remove_global_root ((value *)data); - stat_free (data); -} - -value ml_lookup_from_c (lookup_info *table, int data) -{ - int i; - for (i = table[0].data; i > 0; i--) - if (table[i].data == data) return table[i].key; - invalid_argument ("ml_lookup_from_c"); -} - -int ml_lookup_to_c (lookup_info *table, value key) -{ - int first = 1, last = table[0].data, current; - - while (first < last) { - current = (first+last)/2; - if (table[current].key >= key) last = current; - else first = current + 1; - } - if (table[first].key == key) return table[first].data; - invalid_argument ("ml_lookup_to_c"); -} diff --git a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/wrappers.h b/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/wrappers.h deleted file mode 100644 index 2006bcbd5..000000000 --- a/helm/DEVEL/lablgtk/lablgtk_20001129-0.1.0/wrappers.h +++ /dev/null @@ -1,225 +0,0 @@ -/* $Id$ */ - -#ifndef _wrappers_ -#define _wrappers_ - -#include -#include - -value copy_memblock_indirected (void *src, asize_t size); -value ml_some (value); -void ml_raise_null_pointer (void) Noreturn; -value Val_pointer (void *); -value copy_string_check (const char*); -value copy_string_or_null (const char *); - -value *ml_global_root_new (value v); -void ml_global_root_destroy (void *data); - -typedef struct { value key; int data; } lookup_info; -value ml_lookup_from_c (lookup_info *table, int data); -int ml_lookup_to_c (lookup_info *table, value key); - -/* Wrapper generators */ - -#define ML_0(cname, conv) \ -value ml_##cname (value unit) { return conv (cname ()); } -#define ML_1(cname, conv1, conv) \ -value ml_##cname (value arg1) { return conv (cname (conv1 (arg1))); } -#define ML_1_post(cname, conv1, conv, post) \ -value ml_##cname (value arg1) \ -{ value ret = conv (cname (conv1(arg1))); post; return ret; } -#define ML_2(cname, conv1, conv2, conv) \ -value ml_##cname (value arg1, value arg2) \ -{ return conv (cname (conv1(arg1), conv2(arg2))); } -#define ML_2_name(mlname, cname, conv1, conv2, conv) \ -value mlname (value arg1, value arg2) \ -{ return conv (cname (conv1(arg1), conv2(arg2))); } -#define ML_3(cname, conv1, conv2, conv3, conv) \ -value ml_##cname (value arg1, value arg2, value arg3) \ -{ return conv (cname (conv1(arg1), conv2(arg2), conv3(arg3))); } -#define ML_3_name(mlname, cname, conv1, conv2, conv3, conv) \ -value mlname (value arg1, value arg2, value arg3) \ -{ return conv (cname (conv1(arg1), conv2(arg2), conv3(arg3))); } -#define ML_4(cname, conv1, conv2, conv3, conv4, conv) \ -value ml_##cname (value arg1, value arg2, value arg3, value arg4) \ -{ return conv (cname (conv1(arg1), conv2(arg2), conv3(arg3), conv4(arg4))); } -#define ML_4_name(mlname, cname, conv1, conv2, conv3, conv4, conv) \ -value mlname (value arg1, value arg2, value arg3, value arg4) \ -{ return conv (cname (conv1(arg1), conv2(arg2), conv3(arg3), conv4(arg4))); } -#define ML_5(cname, conv1, conv2, conv3, conv4, conv5, conv) \ -value ml_##cname (value arg1, value arg2, value arg3, value arg4, value arg5) \ -{ return conv (cname (conv1(arg1), conv2(arg2), conv3(arg3), conv4(arg4), \ - conv5(arg5))); } -#define ML_6(cname, conv1, conv2, conv3, conv4, conv5, conv6, conv) \ -value ml_##cname (value arg1, value arg2, value arg3, value arg4, value arg5, \ - value arg6) \ -{ return conv (cname (conv1(arg1), conv2(arg2), conv3(arg3), conv4(arg4), \ - conv5(arg5), conv6(arg6))); } -#define ML_7(cname, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv) \ -value ml_##cname (value arg1, value arg2, value arg3, value arg4, value arg5, \ - value arg6, value arg7) \ -{ return conv (cname (conv1(arg1), conv2(arg2), conv3(arg3), conv4(arg4), \ - conv5(arg5), conv6(arg6), conv7(arg7))); } -#define ML_8(cname, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8, \ - conv) \ -value ml_##cname (value arg1, value arg2, value arg3, value arg4, value arg5, \ - value arg6, value arg7, value arg8) \ -{ return conv (cname (conv1(arg1), conv2(arg2), conv3(arg3), conv4(arg4), \ - conv5(arg5), conv6(arg6), conv7(arg7), conv8(arg8))); } -#define ML_9(cname, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8, \ - conv9, conv) \ -value ml_##cname (value arg1, value arg2, value arg3, value arg4, value arg5, \ - value arg6, value arg7, value arg8, value arg9) \ -{ return conv (cname (conv1(arg1), conv2(arg2), conv3(arg3), conv4(arg4), \ - conv5(arg5), conv6(arg6), conv7(arg7), conv8(arg8), \ - conv9(arg9))); } -#define ML_10(cname, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8, \ - conv9, conv10, conv) \ -value ml_##cname (value arg1, value arg2, value arg3, value arg4, value arg5, \ - value arg6, value arg7, value arg8, value arg9, value arg10)\ -{ return conv (cname (conv1(arg1), conv2(arg2), conv3(arg3), conv4(arg4), \ - conv5(arg5), conv6(arg6), conv7(arg7), conv8(arg8), \ - conv9(arg9), conv10(arg10))); } -#define ML_11(cname, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8, \ - conv9, conv10, conv11, conv) \ -value ml_##cname (value arg1, value arg2, value arg3, value arg4, value arg5, \ - value arg6, value arg7, value arg8, value arg9, value arg10,\ - value arg11) \ -{ return conv (cname (conv1(arg1), conv2(arg2), conv3(arg3), conv4(arg4), \ - conv5(arg5), conv6(arg6), conv7(arg7), conv8(arg8), \ - conv9(arg9), conv10(arg10), conv11(arg11))); } -#define ML_12(cname, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8, \ - conv9, conv10, conv11, conv12, conv) \ -value ml_##cname (value arg1, value arg2, value arg3, value arg4, value arg5, \ - value arg6, value arg7, value arg8, value arg9, value arg10,\ - value arg11, value arg12) \ -{ return conv (cname (conv1(arg1), conv2(arg2), conv3(arg3), conv4(arg4), \ - conv5(arg5), conv6(arg6), conv7(arg7), conv8(arg8), \ - conv9(arg9), conv10(arg10), conv11(arg11), \ - conv12(arg12))); } - -/* Use with care: needs the argument index */ -#define Ignore(x) -#define Insert(x) (x), -#define Split(x,f,g) f(x), g(x) Ignore -#define Split3(x,f,g,h) f(x), g(x), h(x) Ignore -#define Pair(x,f,g) f(Field(x,0)), g(Field(x,1)) Ignore -#define Triple(x,f,g,h) f(Field(x,0)), g(Field(x,1)), h(Field(x,2)) Ignore - -/* For more than 5 arguments */ -#define ML_bc6(cname) \ -value cname##_bc (value *argv, int argn) \ -{ return cname(argv[0],argv[1],argv[2],argv[3],argv[4],argv[5]); } -#define ML_bc7(cname) \ -value cname##_bc (value *argv, int argn) \ -{ return cname(argv[0],argv[1],argv[2],argv[3],argv[4],argv[5],argv[6]); } -#define ML_bc8(cname) \ -value cname##_bc (value *argv, int argn) \ -{ return cname(argv[0],argv[1],argv[2],argv[3],argv[4],argv[5],argv[6], \ - argv[7]); } -#define ML_bc9(cname) \ -value cname##_bc (value *argv, int argn) \ -{ return cname(argv[0],argv[1],argv[2],argv[3],argv[4],argv[5],argv[6], \ - argv[7],argv[8]); } -#define ML_bc10(cname) \ -value cname##_bc (value *argv, int argn) \ -{ return cname(argv[0],argv[1],argv[2],argv[3],argv[4],argv[5],argv[6], \ - argv[7],argv[8],argv[9]); } -#define ML_bc11(cname) \ -value cname##_bc (value *argv, int argn) \ -{ return cname(argv[0],argv[1],argv[2],argv[3],argv[4],argv[5],argv[6], \ - argv[7],argv[8],argv[9],argv[10]); } -#define ML_bc12(cname) \ -value cname##_bc (value *argv, int argn) \ -{ return cname(argv[0],argv[1],argv[2],argv[3],argv[4],argv[5],argv[6], \ - argv[7],argv[8],argv[9],argv[10],argv[11]); } - -/* result conversion */ -#define Unit(x) ((x), Val_unit) -#define Id(x) x -#define Val_char Val_int - -/* parameter conversion */ -#define Bool_ptr(x) ((long) x - 1) -#define Char_val Int_val -#define Float_val(x) ((float)Double_val(x)) - -#define Option_val(val,unwrap,default) \ -((long)val-1 ? unwrap(Field(val,0)) : default) -#define String_option_val(s) Option_val(s,String_val,NULL) - -/* Utility */ - -#define Copy_array(ret,l,src,conv) \ - if (!l) ret = Atom(0); \ - else if (l <= Max_young_wosize) { int i; ret = alloc_tuple(l); \ - for(i=0;ifield); } - -#define Make_Setter(name,conv1,conv2,field) \ -value ml_##name##_##field (value val, value new) \ -{ (conv1(val))->field = conv2(new); return Val_unit; } - -#define Make_Array_Extractor(name,conv1,conv2,field,conv) \ -value ml_##name##_##field (value val, value index) \ -{ return conv ((conv1(val))->field[conv2(index)]); } - -#define Make_Array_Setter(name,conv1,conv2,conv3,field) \ -value ml_##name##_##field (value val, value index, value new) \ -{ (conv1(val))->field[conv2(index)] = conv3(new); return Val_unit; } - -/* ML value is [flag list] */ -#define Make_Flags_val(conv) \ -int Flags_##conv (value list) \ -{ int flags = 0L; \ - while Is_block(list) { flags |= conv(Field(list,0)); list = Field(list,1); }\ - return flags; } - -/* ML value is [flag list option] */ -#define Make_OptFlags_val(conv) \ -int OptFlags_##conv (value list) \ -{ int flags = 0L; \ - if Is_block(list) list = Field(list,0); \ - while Is_block(list) { flags |= conv(Field(list,0)); list = Field(list,1); }\ - return flags; } - -#define Val_copy(val) copy_memblock_indirected (&val, sizeof(val)) -#define Val_string copy_string_check -#define Val_optstring copy_string_or_null -#define Optstring_val(v) (string_length(v) ? String_val(v) : (char*)NULL) -#define Val_option(v,f) (v ? ml_some(f(v)) : Val_unit) - -#define Check_null(v) (v ? v : (ml_raise_null_pointer (), v)) - -#endif /* _wrappers_ */ diff --git a/helm/DEVEL/lablgtk_gtkmathview/.cvsignore b/helm/DEVEL/lablgtk_gtkmathview/.cvsignore deleted file mode 100644 index 8e6f4f936..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -*.cmi *.cmo *.cmx *.cma *.cmxa test test.opt diff --git a/helm/DEVEL/lablgtk_gtkmathview/.depend b/helm/DEVEL/lablgtk_gtkmathview/.depend deleted file mode 100644 index 600449bb8..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/.depend +++ /dev/null @@ -1,4 +0,0 @@ -gMathView.cmo: gtkMathView.cmo gtk_mathview.cmo -gMathView.cmx: gtkMathView.cmx gtk_mathview.cmx -gtkMathView.cmo: gtk_mathview.cmo -gtkMathView.cmx: gtk_mathview.cmx diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0-1.i386.rpm b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0-1.i386.rpm deleted file mode 100644 index e759a668b59b21fc56addbe331bfc3f81f8aa944..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16862 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 diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0.tar.gz b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0.tar.gz deleted file mode 100644 index 73f44b3641b51a61bb03a72124437196596ec844..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5777 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 diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0/.depend b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0/.depend deleted file mode 100644 index 600449bb8..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0/.depend +++ /dev/null @@ -1,4 +0,0 @@ -gMathView.cmo: gtkMathView.cmo gtk_mathview.cmo -gMathView.cmx: gtkMathView.cmx gtk_mathview.cmx -gtkMathView.cmo: gtk_mathview.cmo -gtkMathView.cmx: gtk_mathview.cmx diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0/COPYING b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0/COPYING deleted file mode 100644 index 20b480a10..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0/COPYING +++ /dev/null @@ -1,11 +0,0 @@ -This library is made available under the LGPL. -You should have got a copy of the LGPL with Objective Caml. -The LGPL applies to all the files in this directory, but not in -subdirectories. - -For the test subdirectory, there is no specific licensing policy, -but you may freely take inspiration from the code, and copy parts of -it in your application. - -Author: - Claudio Sacerdoti Coen diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0/Makefile b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0/Makefile deleted file mode 100644 index 1195de528..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0/Makefile +++ /dev/null @@ -1,98 +0,0 @@ -# Makefile for lablgtk_mathview. - -LABLGTKDIR = /usr/local/lib/ocaml/lablgtk -MLFLAGS += -I $(LABLGTKDIR) - -TARGETS = ml_gtk_mathview.o lablgtkmathview.cma - -all: $(TARGETS) - -opt: lablgtkmathviewopt - -configure: - @rm -f config.make - @$(MAKE) --no-print-directory -f configure.mk - -depend: - @rm -f .depend - @$(MAKE) --no-print-directory -f configure.mk .depend - -.depend config.make: - @$(MAKE) --no-print-directory -f configure.mk - -COMPILER = $(CAMLC) $(MLFLAGS) -w s -labels -c -LINKER = $(CAMLC) $(MLFLAGS) -COMPOPT = $(CAMLOPT) $(MLFLAGS) -w s -labels -c -LINKOPT = $(CAMLOPT) $(MLFLAGS) - -include config.make - -INSTALLDIR = $(LIBDIR)/lablgtk/mathview - -MLLIBS = lablgtkmathview.cma -CLIBS = -MLLINK = unix.cma str.cma - -ifdef DEBUG -CFLAGS = -g $(GTKCFLAGS) -MLLINK += -cclib -lcamlrund -MLFLAGS += -g -else -CFLAGS = -O -DGTK_NO_CHECK_CASTS -DGTK_DISABLE_COMPAT_H $(GTKCFLAGS) -endif - -THFLAGS = -thread -THLINK = unix.cma threads.cma - -ifdef USE_CC -CCOMPILER = $(CC) -c -I$(LIBDIR) $(CFLAGS) -else -CCOMPILER = ocamlc -c -ccopt "$(CFLAGS)" -endif - -# Rules -.SUFFIXES: .ml .mli .cmo .cmi .cmx .c .o .var .h .opt .def -.c.o: - $(CCOMPILER) $< -.ml.cmo: - $(COMPILER) $< -.mli.cmi: - $(COMPILER) $< -.ml.cmx: - $(COMPOPT) $< -.var.h: - ./var2def < $< > $@ -.var.c: - ./var2conv < $< > $@ - -# Targets -COBJS = ml_gtk_mathview.o -MLOBJS = gtk_mathview.cmo gtkMathView.cmo gMathView.cmo -ALLOBJS = $(MLOBJS) - -lablgtkmathviewopt: $(CLIBS) $(MLLIBS:.cma=.cmxa) - -install: - if test -d $(INSTALLDIR); then : ; else mkdir -p $(INSTALLDIR); fi - cp $(ALLOBJS:.cmo=.cmi) $(INSTALLDIR) - if test -f *.mli ; then cp *.mli $(INSTALLDIR) ; fi - cp $(ALLOBJS:.cmo=.ml) $(INSTALLDIR) - cp $(MLLIBS) $(INSTALLDIR) - cp $(COBJS) $(INSTALLDIR) - if test ! -z "$(CLIBS)" ; then cp $(CLIBS) $(INSTALLDIR) ; fi - if test -f lablgtkmathview.cmxa; then \ - cp $(MLLIBS:.cma=.cmxa) $(MLLIBS:.cma=.a) \ - $(INSTALLDIR); fi - -lablgtkmathview.cma: $(MLOBJS) - $(LINKER) -a -custom -o $@ $(MLOBJS) $(GTKLIBS) $(GTKMATHVIEWLIBS) -lablgtkmathview.cmxa: $(MLOBJS:.cmo=.cmx) - $(LINKOPT) -a -o $@ $(MLOBJS:.cmo=.cmx) $(GTKLIBS) $(GTKMATHVIEWLIBS) - -ml_gtk.o: $(LABLGTKDIR)/gtk_tags.c $(LABLGTKDIR)/gtk_tags.h \ - $(LABLGTKDIR)/ml_gtk.h $(LABLGTKDIR)/ml_gdk.h $(LABLGTKDIR)/wrappers.h - -clean: - rm -f *.cm* *.o *.a *_tags.[ch] $(TARGETS) - -include .depend diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0/config.make b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0/config.make deleted file mode 100644 index d50ffb585..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0/config.make +++ /dev/null @@ -1,15 +0,0 @@ -CAMLC=ocamlc -CAMLOPT=ocamlopt -USE_GL= -USE_GNOME= -USE_CC= -DEBUG= -CC=cc -RANLIB=ranlib -LIBDIR=/usr/lib/ocaml -BINDIR=/usr/bin -INSTALLDIR=/usr/lib/ocaml/lablgtk/mathview -GTKCFLAGS=-I/usr/lib/glib/include -I/usr/X11R6/include -I/usr/lib/ocaml/lablgtk -GTKLIBS=-ccopt -L/usr/lib -ccopt -L/usr/X11R6/lib -cclib -lgtk -cclib -lgdk -ccopt -rdynamic -cclib -lgmodule -cclib -lglib -cclib -ldl -cclib -lXi -cclib -lXext -cclib -lX11 -cclib -lm -GTKMATHVIEWLIBS=-ccopt -L/usr/local/lib/gtkmathview -cclib -lgtkmathview -GNOMELIBS= diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0/configure.mk b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0/configure.mk deleted file mode 100644 index 73cfc3d35..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0/configure.mk +++ /dev/null @@ -1,53 +0,0 @@ -# makefile for configuring lablGTK_mathview - -# Default compilers -CAMLC = ocamlc -CAMLOPT = ocamlopt - -# Default installation directories -BINDIR = `$(GETBINDIR)` -INSTALLDIR = $(LIBDIR)/lablgtk/mathview - -# Autoconf -GETLIBDIR = ocamlc -v | grep "^Standard" | sed 's/^.*: *//' -LIBDIR = `$(GETLIBDIR)` -GETBINDIR = $(GETLIBDIR) | sed -e 's|/lib/[^/]*$$|/bin|' -e 's|/lib$$|/bin|' -GETRANLIB = which ranlib 2>/dev/null | sed -e 's|.*/ranlib$$|!|' -e 's/^[^!]*$$/:/' -e 's/!/ranlib/' - -ifdef USE_GNOME -GTKGETCFLAGS = gtk-config --cflags`" -I"`gnome-config --includedir -GNOMELIBS = `gnome-config --libs gtkxmhtml` -else -GTKGETCFLAGS = gtk-config --cflags -endif - -GTKGETLIBS = gtk-config --libs - -configure: .depend config.make - -.depend: - ocamldep *.ml *.mli > .depend - -config.make: - @echo CAMLC=$(CAMLC) > config.make - @echo CAMLOPT=$(CAMLOPT) >> config.make - @echo USE_GL=$(USE_GL) >> config.make - @echo USE_GNOME=$(USE_GNOME) >> config.make - @echo USE_CC=$(USE_CC) >> config.make - @echo DEBUG=$(DEBUG) >> config.make - @echo CC=$(CC) >> config.make - @echo RANLIB=`$(GETRANLIB)` >> config.make - @echo LIBDIR=$(LIBDIR) >> config.make - @echo BINDIR=`$(GETBINDIR)` >> config.make - @echo INSTALLDIR=$(INSTALLDIR) >> config.make - @echo GTKCFLAGS=`$(GTKGETCFLAGS)` -I/usr/lib/ocaml/lablgtk >> config.make - @echo GTKLIBS=`$(GTKGETLIBS)` | \ - sed -e 's/-l/-cclib &/g' -e 's/-[LRWr][^ ]*/-ccopt &/g' \ - >> config.make - # - echo GTKMATHVIEWLIBS="-ccopt -L/usr/local/lib/gtkmathview -cclib -lgtkmathview " >> config.make - # - @echo GNOMELIBS=$(GNOMELIBS) | \ - sed -e 's/-l/-cclib &/g' -e 's/-[LRWr][^ ]*/-ccopt &/g' \ - >> config.make - cat config.make diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0/gMathView.ml b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0/gMathView.ml deleted file mode 100644 index b79c81244..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0/gMathView.ml +++ /dev/null @@ -1,50 +0,0 @@ -open Gaux -open Gtk -open Gtk_mathview -open GtkBase -open GtkMathView -open GObj - -exception ErrorLoadingFile of string;; - -class math_view_signals obj = object - inherit GContainer.container_signals obj - method jump = GtkSignal.connect ~sgn:MathView.Signals.jump obj ~after - method clicked = GtkSignal.connect ~sgn:MathView.Signals.clicked obj ~after -end - -class math_view obj = object - inherit GContainer.container (obj : Gtk_mathview.math_view obj) - method connect = new math_view_signals obj - method load ~filename = - if not (MathView.load obj ~filename) then raise (ErrorLoadingFile filename) - method get_selection = MathView.get_selection obj - method unload = MathView.unload obj - method dump = MathView.dump obj - method get_width = MathView.get_width obj - method get_height = MathView.get_height obj - method set_adjustments = - fun adj1 adj2 -> - MathView.set_adjustments obj (GData.as_adjustment adj1) - (GData.as_adjustment adj2) - method get_hadjustment = new GData.adjustment (MathView.get_hadjustment obj) - method get_vadjustment = new GData.adjustment (MathView.get_vadjustment obj) - method get_buffer = MathView.get_buffer obj - method get_frame = new GBin.frame (MathView.get_frame obj) - method set_font_size = MathView.set_font_size obj - (*method get_top = MathView.get_top obj - method set_top = MathView.set_top obj*) -end - -let math_view ?adjustmenth ?adjustmentv ?border_width ?width ?height - ?packing ?show () -= - let w = - MathView.create - ?adjustmenth:(may_map ~f:GData.as_adjustment adjustmenth) - ?adjustmentv:(may_map ~f:GData.as_adjustment adjustmentv) - () - in - Container.set w ?border_width ?width ?height; - pack_return (new math_view w) ~packing ~show -;; diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0/gtkMathView.ml b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0/gtkMathView.ml deleted file mode 100644 index 9ed42b8b7..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0/gtkMathView.ml +++ /dev/null @@ -1,61 +0,0 @@ -open Gtk -open Gtk_mathview -open Tags -open GtkBase -open Gpointer - -module MathView = struct - let cast w : math_view obj = Object.try_cast w "GtkMathView" - external create : Gtk.adjustment optobj -> Gtk.adjustment optobj -> - math_view obj = "ml_gtk_math_view_new" - let create ~adjustmenth ~adjustmentv () = - create (optboxed adjustmenth) (optboxed adjustmentv) - external load : [>`math_view] obj -> filename:string -> bool = - "ml_gtk_math_view_load" - external get_selection : [>`math_view] obj -> string option = - "ml_gtk_math_view_get_selection" - external unload : [>`math_view] obj -> unit = - "ml_gtk_math_view_unload" - external dump : [>`math_view] obj -> unit = - "ml_gtk_math_view_dump" - external get_width : [>`math_view] obj -> int = - "ml_gtk_math_view_get_width" - external get_height : [>`math_view] obj -> int = - "ml_gtk_math_view_get_height" - external set_adjustments : [>`math_view] obj -> Gtk.adjustment obj -> Gtk.adjustment obj -> unit = - "ml_gtk_math_view_set_adjustments" - external get_hadjustment : [>`math_view] obj -> Gtk.adjustment obj = - "ml_gtk_math_view_get_hadjustment" - external get_vadjustment : [>`math_view] obj -> Gtk.adjustment obj = - "ml_gtk_math_view_get_vadjustment" - external get_buffer : [>`math_view] obj -> Gdk.pixmap = - "ml_gtk_math_view_get_buffer" - external get_frame : [>`math_view] obj -> [`frame] obj = - "ml_gtk_math_view_get_frame" - external set_font_size : [>`math_view] obj -> int -> unit = - "ml_gtk_math_view_set_font_size" - (*external get_top : [>`math_view] obj -> (int * int) = - "ml_gtk_math_view_get_top" - external set_top : [>`math_view] obj -> int -> int -> unit = - "ml_gtk_math_view_set_top"*) - - module Signals = struct - open GtkSignal - - let jump : ([>`math_view],_) t = - let marshal_jump f _ = - function - [GtkArgv.STRING (Some str)] -> f str - | _ -> invalid_arg "GtkMathView.MathView.Signals.marshal_jump" - in - { name = "jump"; marshaller = marshal_jump } - - let clicked : ([>`math_view],_) t = - let marshal_clicked f _ = - function - [] -> f () - | _ -> invalid_arg "GtkMathView.MathView.Signals.marshal_clicked" - in - { name = "clicked"; marshaller = marshal_clicked } - end -end diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0/gtk_mathview.ml b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0/gtk_mathview.ml deleted file mode 100644 index 745a1ba82..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0/gtk_mathview.ml +++ /dev/null @@ -1 +0,0 @@ -type math_view = [`widget|`container|`bin|`eventbox|`math_view] diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0/ml_gtk_mathview.c b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0/ml_gtk_mathview.c deleted file mode 100644 index b16f68e50..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0/ml_gtk_mathview.c +++ /dev/null @@ -1,55 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include -#include -#include -#include -#include - -/* : Next row should be put in a .h of lablgtk. */ -#define GtkAdjustment_val(val) check_cast(GTK_ADJUSTMENT,val) - -#define GtkMathView_val(val) check_cast(GTK_MATH_VIEW,val) -ML_2 (gtk_math_view_new,GtkAdjustment_val, GtkAdjustment_val,Val_GtkWidget_sink) -ML_2 (gtk_math_view_load, GtkMathView_val, String_val, Val_bool) -ML_1 (gtk_math_view_unload, GtkMathView_val, Unit) -ML_1 (gtk_math_view_dump, GtkMathView_val, Unit) -ML_1 (gtk_math_view_get_width, GtkMathView_val, Val_int) -ML_1 (gtk_math_view_get_height, GtkMathView_val, Val_int) -//ML_3 (gtk_math_view_set_top, GtkMathView_val, Int_val, Int_val, Unit) -ML_3 (gtk_math_view_set_adjustments, GtkMathView_val, GtkAdjustment_val, GtkAdjustment_val, Unit) -ML_1 (gtk_math_view_get_hadjustment, GtkMathView_val, Val_GtkWidget) -ML_1 (gtk_math_view_get_vadjustment, GtkMathView_val, Val_GtkWidget) -ML_1 (gtk_math_view_get_buffer, GtkMathView_val, Val_GdkPixmap) -ML_1 (gtk_math_view_get_frame, GtkMathView_val, Val_GtkWidget) -ML_2 (gtk_math_view_set_font_size, GtkMathView_val, Int_val, Unit) - -/* -value ml_gtk_math_view_get_top (value arg1) -{ - CAMLparam1(arg1); - CAMLlocal1 (result); - int x, y; - gtk_math_view_get_top(GtkMathView_val (arg1), &x, &y); - result = alloc(2, 0); - Store_field(result, 0, Val_int(x)); - Store_field(result, 0, Val_int(y)); - CAMLreturn (result); -} -*/ - -value ml_gtk_math_view_get_selection (value arg1) -{ - const char *stringa; - stringa = gtk_math_view_get_selection (GtkMathView_val (arg1)); - return Val_option (stringa, Val_string); -} diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0/test/Makefile b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0/test/Makefile deleted file mode 100644 index cc5bd50f5..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0/test/Makefile +++ /dev/null @@ -1,36 +0,0 @@ -LABLGTK_DIR = ../../lablgtk-20000829 -LABLGTK_MATHVIEW_DIR = .. -OCAMLC = ocamlc -I $(LABLGTK_DIR) -I $(LABLGTK_MATHVIEW_DIR) -I mlmathview -OCAMLOPT = ocamlopt -I $(LABLGTK_DIR) -I $(LABLGTK_MATHVIEW_DIR) -I mlmathview - -all: test -opt: test.opt - -test: test.cmo - $(OCAMLC) -custom -o test lablgtk.cma gtkInit.cmo \ - $(LABLGTK_MATHVIEW_DIR)/lablgtkmathview.cma \ - test.cmo \ - -cclib "-lstr -L/usr/lib -L/usr/X11R6/lib -lgtk -lgdk \ - -rdynamic -lgmodule -lglib -ldl -lXi -lXext -lX11 -lm \ - -L/usr/local/lib/gtkmathview -lgtkmathview \ - $(LABLGTK_MATHVIEW_DIR)/ml_gtk_mathview.o" - -test.opt: test.cmx - $(OCAMLOPT) -o test.opt lablgtk.cmxa gtkInit.cmx \ - $(LABLGTK_MATHVIEW_DIR)/lablgtkmathview.cmxa \ - test.cmx \ - -cclib "-lstr -L/usr/lib -L/usr/X11R6/lib -lgtk -lgdk \ - -rdynamic -lgmodule -lglib -ldl -lXi -lXext -lX11 -lm \ - -L/usr/local/lib/gtkmathview -lgtkmathview \ - $(LABLGTK_MATHVIEW_DIR)/ml_gtk_mathview.o" - -.SUFFIXES: .ml .mli .cmo .cmi .cmx -.ml.cmo: - $(OCAMLC) -c $< -.mli.cmi: - $(OCAMLC) -c $< -.ml.cmx: - $(OCAMLOPT) -c $< - -clean: - rm -f *.cm[iox] *.o test test.opt diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0/test/test.ml b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0/test/test.ml deleted file mode 100644 index e914f4d6b..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0/test/test.ml +++ /dev/null @@ -1,141 +0,0 @@ -(******************************************************************************) -(* Claudio Sacerdoti Coen *) -(* 25/09/2000 *) -(* *) -(* This is a simple test for the OCaml (LablGtk indeed) binding of the *) -(* MathView widget *) -(******************************************************************************) - -(* Callbacks *) -let jump s = - print_string ("jump: " ^ s ^ "\n") ; - flush stdout -;; - -let clicked () = - print_string "clicked: IT WORKS\n" ; - flush stdout -;; - -let load mathview () = - mathview#load "test.xml" ; - print_string "load: SEEMS TO WORK\n" ; - flush stdout -;; - -exception Ok;; -let get_selection mathview () = - let selection = - match mathview#get_selection with - None -> "NO SELECTION" - | Some s -> s - in - print_string ("get_selection: " ^ selection ^ "\n") ; - flush stdout -;; - -let unload mathview () = - mathview#unload ; - print_string "unload: SEEMS TO WORK\n" ; - flush stdout -;; - -let dump mathview () = - mathview#dump ; - print_string "dump: SEEMS TO WORK\n" ; - flush stdout -;; - -let get_width mathview () = - print_string ("get_width: " ^ string_of_int (mathview#get_width) ^ "\n") ; - flush stdout -;; - -let get_height mathview () = - print_string ("get_height: " ^ string_of_int (mathview#get_height) ^ "\n") ; - flush stdout -;; - -let set_adjustments mathview () = - let adj1 = GData.adjustment () in - let adj2 = GData.adjustment () in - mathview#set_adjustments adj1 adj2 ; - adj1#set_value ((adj1#lower +. adj1#upper) /. 2.0) ; - adj2#set_value ((adj2#lower +. adj2#upper) /. 2.0) ; - print_string "set_adjustments: SEEM TO WORK\n" ; - flush stdout -;; - -let get_hadjustment mathview () = - let adj = mathview#get_hadjustment in - adj#set_value ((adj#lower +. adj#upper) /. 2.0) ; - print_string "get_hadjustment: SEEM TO WORK\n" ; - flush stdout -;; - -let get_vadjustment mathview () = - let adj = mathview#get_vadjustment in - adj#set_value ((adj#lower +. adj#upper) /. 2.0) ; - print_string "get_vadjustment: SEEM TO WORK\n" ; - flush stdout -;; - -let get_buffer mathview () = - let buffer = mathview#get_buffer in - Gdk.Draw.rectangle buffer (Gdk.GC.create buffer) ~x:0 ~y:0 - ~width:50 ~height:50 ~filled:true () ; - print_string "get_buffer: SEEMS TO WORK (hint: force the widget redrawing)\n"; - flush stdout -;; - -let get_frame mathview () = - let frame = mathview#get_frame in - frame#set_shadow_type `NONE ; - print_string "get_frame: SEEMS TO WORK\n" ; - flush stdout -;; - -let set_font_size mathview () = - mathview#set_font_size 24 ; - print_string "set_font_size: FONT IS NOW 24\n" ; - flush stdout -;; - -(* Widget creation *) -let main_window = GWindow.window ~title:"GtkMathView test" () in -let vbox = GPack.vbox ~packing:main_window#add () in -let sw = GBin.scrolled_window ~width:50 ~height:50 ~packing:vbox#pack () in -(*let mathview = GMathView.math_view ~packing:sw#add_with_viewport ~width:50 ~height:50 () in*) -let mathview = GMathView.math_view ~packing:sw#add ~width:50 ~height:50 () in -let hbox = GPack.hbox ~packing:vbox#pack () in -let button_load = GButton.button ~label:"load" ~packing:hbox#pack () in -let button_get_selection = GButton.button ~label:"get_selection" ~packing:hbox#pack () in -let button_unload = GButton.button ~label:"unload" ~packing:hbox#pack () in -let button_dump = GButton.button ~label:"dump" ~packing:hbox#pack () in -let button_get_width = GButton.button ~label:"get_width" ~packing:hbox#pack () in -let button_get_height = GButton.button ~label:"get_height" ~packing:hbox#pack () in -let button_set_adjustments = GButton.button ~label:"set_adjustments" ~packing:hbox#pack () in -let button_get_hadjustment = GButton.button ~label:"get_hadjustment" ~packing:hbox#pack () in -let button_get_vadjustment = GButton.button ~label:"get_vadjustment" ~packing:hbox#pack () in -let button_get_buffer = GButton.button ~label:"get_buffer" ~packing:hbox#pack () in -let button_get_frame = GButton.button ~label:"get_frame" ~packing:hbox#pack () in -let button_set_font_size = GButton.button ~label:"set_font_size" ~packing:hbox#pack () in -(* Signals connection *) -ignore(button_load#connect#clicked (load mathview)) ; -ignore(button_get_selection#connect#clicked (get_selection mathview)) ; -ignore(button_unload#connect#clicked (unload mathview)) ; -ignore(button_dump#connect#clicked (dump mathview)) ; -ignore(button_get_width#connect#clicked (get_width mathview)) ; -ignore(button_get_height#connect#clicked (get_height mathview)) ; -ignore(button_set_adjustments#connect#clicked (set_adjustments mathview)) ; -ignore(button_get_hadjustment#connect#clicked (get_hadjustment mathview)) ; -ignore(button_get_vadjustment#connect#clicked (get_vadjustment mathview)) ; -ignore(button_get_buffer#connect#clicked (get_buffer mathview)) ; -ignore(button_get_frame#connect#clicked (get_frame mathview)) ; -ignore(button_set_font_size#connect#clicked (set_font_size mathview)) ; -ignore(mathview#connect#jump jump) ; -ignore(mathview#connect#clicked clicked) ; -(* Main Loop *) -main_window#show () ; -GMain.Main.main () -;; diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0/test/test.xml b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0/test/test.xml deleted file mode 100644 index b0f8c1563..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0/test/test.xml +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - a - - x - - + - b - - - - x - 2 - - + - - p - - x - - + - q - - - - d - x - = - - - a2 - - - ln - - - ( - - x2 - + - - p - - x - - + - q - - ) - - - - + - - - - - 2 - - b - - - - - a - - p - - - - - - 4 - - q - - - - - p - 2 - - - - - - - arctg - - - - - 2 - - x - - + - p - - - - - 4 - - q - - - - - p - 2 - - - - - - - + - c - - diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0-1.spec b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0-1.spec deleted file mode 100644 index 59a3298b3..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0-1.spec +++ /dev/null @@ -1,25 +0,0 @@ -Summary: GtkMathView : the binding for lablgtk of the GtkMathView widget -Name: lablgtk-20000829_gtkmathview -Version: 0.2.0 -Release: 1 -Copyright: LGPL -Group: Development/Libraries -Requires: lablgtk_20000829 gtkmathview -Source: www.cs.unibo.it:/~lpadovan/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.1.0.tar.gz -%description -GtkMathView is the binding for lablgtk of the GtkMathView widget. - -%prep -%setup - -%build -make -make opt - -%install -make install - -%files -%doc COPYING - -/usr/lib/ocaml/lablgtk/mathview diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0.tar.gz b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0.tar.gz deleted file mode 100644 index 489f3c727d5e1f5ffd3eb5028820e03d4eb49dd9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14050 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 o{d;5(()sS-0!~T^g9WXe&V*`O diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/Makefile b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/Makefile deleted file mode 100644 index d5a1685d2..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/Makefile +++ /dev/null @@ -1,107 +0,0 @@ -# Makefile for lablgtk_mathview. - -LABLGTKDIR = /usr/lib/ocaml/lablgtk -MINIDOMDIR = ./minidom -MLFLAGS += -I $(LABLGTKDIR) -I $(MINIDOMDIR) - -TARGETS = ml_gtk_mathview.o lablgtkmathview.cma - -all: Minidom $(TARGETS) - -opt: Minidom.opt lablgtkmathviewopt - -Minidom: - cd minidom ; make - -Minidom.opt: - cd minidom ; make opt - -configure: - @rm -f config.make - @$(MAKE) --no-print-directory -f configure.mk - -depend: - @rm -f .depend - @$(MAKE) --no-print-directory -f configure.mk .depend - -.depend config.make: - @$(MAKE) --no-print-directory -f configure.mk - -COMPILER = $(CAMLC) $(MLFLAGS) -w s -labels -c -LINKER = $(CAMLC) $(MLFLAGS) -COMPOPT = $(CAMLOPT) $(MLFLAGS) -w s -labels -c -LINKOPT = $(CAMLOPT) $(MLFLAGS) - -include config.make - -INSTALLDIR = $(LIBDIR)/lablgtk/mathview - -MLLIBS = lablgtkmathview.cma -CLIBS = -MLLINK = unix.cma str.cma - -ifdef DEBUG -CFLAGS = -g $(GTKCFLAGS) -MLLINK += -cclib -lcamlrund -MLFLAGS += -g -else -CFLAGS = -O -DGTK_NO_CHECK_CASTS -DGTK_DISABLE_COMPAT_H $(GTKCFLAGS) -endif - -THFLAGS = -thread -THLINK = unix.cma threads.cma - -ifdef USE_CC -CCOMPILER = $(CC) -c -I$(LIBDIR) $(CFLAGS) -else -CCOMPILER = ocamlc -c -ccopt "$(CFLAGS)" -endif - -# Rules -.SUFFIXES: .ml .mli .cmo .cmi .cmx .c .o .var .h .opt .def -.c.o: - $(CCOMPILER) $< -.ml.cmo: - $(COMPILER) $< -.mli.cmi: - $(COMPILER) $< -.ml.cmx: - $(COMPOPT) $< -.var.h: - ./var2def < $< > $@ -.var.c: - ./var2conv < $< > $@ - -# Targets -COBJS = ml_gtk_mathview.o -MLOBJS = gtk_mathview.cmo gtkMathView.cmo gMathView.cmo -ALLOBJS = $(MLOBJS) - -lablgtkmathviewopt: $(CLIBS) $(MLLIBS:.cma=.cmxa) - -install: - if test -d $(INSTALLDIR); then : ; else mkdir -p $(INSTALLDIR); fi - cp $(ALLOBJS:.cmo=.cmi) $(INSTALLDIR) - if test -f *.mli ; then cp *.mli $(INSTALLDIR) ; fi - cp $(ALLOBJS:.cmo=.ml) $(INSTALLDIR) - cp $(MLLIBS) $(INSTALLDIR) - cp $(COBJS) $(INSTALLDIR) - if test ! -z "$(CLIBS)" ; then cp $(CLIBS) $(INSTALLDIR) ; fi - if test -f lablgtkmathview.cmxa; then \ - cp $(MLLIBS:.cma=.cmxa) $(MLLIBS:.cma=.a) \ - $(INSTALLDIR); fi - cd minidom ; make install - -lablgtkmathview.cma: $(MLOBJS) - $(LINKER) -a -custom -o $@ $(MLOBJS) $(GTKLIBS) $(GTKMATHVIEWLIBS) -lablgtkmathview.cmxa: $(MLOBJS:.cmo=.cmx) - $(LINKOPT) -a -o $@ $(MLOBJS:.cmo=.cmx) $(GTKLIBS) $(GTKMATHVIEWLIBS) - -ml_gtk.o: $(LABLGTKDIR)/gtk_tags.c $(LABLGTKDIR)/gtk_tags.h \ - $(LABLGTKDIR)/ml_gtk.h $(LABLGTKDIR)/ml_gdk.h $(LABLGTKDIR)/wrappers.h - -clean: - rm -f *.cm* *.o *.a *_tags.[ch] $(TARGETS) - cd minidom ; make clean - -include .depend diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/configure.mk b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/configure.mk deleted file mode 100644 index c5fd71121..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/configure.mk +++ /dev/null @@ -1,53 +0,0 @@ -# makefile for configuring lablGTK_mathview - -# Default compilers -CAMLC = ocamlc -CAMLOPT = ocamlopt - -# Default installation directories -BINDIR = `$(GETBINDIR)` -INSTALLDIR = $(LIBDIR)/lablgtk/mathview - -# Autoconf -GETLIBDIR = ocamlc -v | grep "^Standard" | sed 's/^.*: *//' -LIBDIR = `$(GETLIBDIR)` -GETBINDIR = $(GETLIBDIR) | sed -e 's|/lib/[^/]*$$|/bin|' -e 's|/lib$$|/bin|' -GETRANLIB = which ranlib 2>/dev/null | sed -e 's|.*/ranlib$$|!|' -e 's/^[^!]*$$/:/' -e 's/!/ranlib/' - -ifdef USE_GNOME -GTKGETCFLAGS = gtk-config --cflags`" -I"`gnome-config --includedir" "`xml-config --cflags`" "`gtkmathview-config --cflags -GNOMELIBS = `gnome-config --libs gtkxmhtml` -else -GTKGETCFLAGS = gtk-config --cflags`" "`xml-config --cflags`" "`gtkmathview-config --cflags -endif - -GTKGETLIBS = gtk-config --libs - -configure: .depend config.make - -.depend: - ocamldep *.ml *.mli > .depend - -config.make: - @echo CAMLC=$(CAMLC) > config.make - @echo CAMLOPT=$(CAMLOPT) >> config.make - @echo USE_GL=$(USE_GL) >> config.make - @echo USE_GNOME=$(USE_GNOME) >> config.make - @echo USE_CC=$(USE_CC) >> config.make - @echo DEBUG=$(DEBUG) >> config.make - @echo CC=$(CC) >> config.make - @echo RANLIB=`$(GETRANLIB)` >> config.make - @echo LIBDIR=$(LIBDIR) >> config.make - @echo BINDIR=`$(GETBINDIR)` >> config.make - @echo INSTALLDIR=$(INSTALLDIR) >> config.make - @echo GTKCFLAGS=`$(GTKGETCFLAGS)` -I/usr/lib/ocaml/lablgtk >> config.make - @echo GTKLIBS=`$(GTKGETLIBS)` | \ - sed -e 's/-l/-cclib &/g' -e 's/-[LRWr][^ ]*/-ccopt &/g' \ - >> config.make - # - echo GTKMATHVIEWLIBS="-ccopt \""`gtkmathview-config --libs`"\"" >> config.make - # - @echo GNOMELIBS=$(GNOMELIBS) | \ - sed -e 's/-l/-cclib &/g' -e 's/-[LRWr][^ ]*/-ccopt &/g' \ - >> config.make - cat config.make diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/gMathView.ml b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/gMathView.ml deleted file mode 100644 index 87f0d5035..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/gMathView.ml +++ /dev/null @@ -1,64 +0,0 @@ -open Gaux -open Gtk -open Gtk_mathview -open GtkBase -open GtkMathView -open GObj - -exception ErrorLoadingFile of string;; -exception ErrorWritingFile of string;; - -class math_view_signals obj = object - inherit GContainer.container_signals obj - method clicked = GtkSignal.connect ~sgn:MathView.Signals.clicked obj ~after - method jump = GtkSignal.connect ~sgn:MathView.Signals.jump obj ~after - method selection_changed = - GtkSignal.connect ~sgn:MathView.Signals.selection_changed obj ~after -end - -class math_view obj = object - inherit GContainer.container (obj : Gtk_mathview.math_view obj) - method connect = new math_view_signals obj - method load ~filename = - if not (MathView.load obj ~filename) then raise (ErrorLoadingFile filename) - method unload = MathView.unload obj - method get_selection = MathView.get_selection obj - method set_selection = MathView.set_selection obj - method get_width = MathView.get_width obj - method get_height = MathView.get_height obj - method get_top = MathView.get_top obj - method set_top = MathView.set_top obj - method set_adjustments = - fun adj1 adj2 -> - MathView.set_adjustments obj (GData.as_adjustment adj1) - (GData.as_adjustment adj2) - method get_hadjustment = new GData.adjustment (MathView.get_hadjustment obj) - method get_vadjustment = new GData.adjustment (MathView.get_vadjustment obj) - method get_buffer = MathView.get_buffer obj - method get_frame = new GBin.frame (MathView.get_frame obj) - method set_font_size = MathView.set_font_size obj - method get_font_size = MathView.get_font_size obj - method set_anti_aliasing = MathView.set_anti_aliasing obj - method get_anti_aliasing = MathView.get_anti_aliasing obj - method set_kerning = MathView.set_kerning obj - method get_kerning = MathView.get_kerning obj - method set_log_verbosity = MathView.set_log_verbosity obj - method get_log_verbosity = MathView.get_log_verbosity obj - method export_to_postscript ~filename = - if not (MathView.export_to_postscript obj ~filename) then - raise (ErrorWritingFile filename) -end - -let math_view ?adjustmenth ?adjustmentv ?(use_t1_lib=false) ?border_width - ?width ?height ?packing ?show () -= - let w = - MathView.create - ?adjustmenth:(may_map ~f:GData.as_adjustment adjustmenth) - ?adjustmentv:(may_map ~f:GData.as_adjustment adjustmentv) - ?use_t1_lib - () - in - Container.set w ?border_width ?width ?height; - pack_return (new math_view w) ~packing ~show -;; diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/gtkMathView.ml b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/gtkMathView.ml deleted file mode 100644 index 97ae38e32..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/gtkMathView.ml +++ /dev/null @@ -1,93 +0,0 @@ -open Gtk -open Gtk_mathview -open Tags -open GtkBase -open Gpointer - -external mDOMNode_of_boxed_option : - Gpointer.boxed option -> Minidom.mDOMNode = - "ml_gtk_math_view_mDOMNode_of_bodex_option" - -external mDOMNode_option_of_boxed_option : - Gpointer.boxed option -> Minidom.mDOMNode option = - "ml_gtk_math_view_mDOMNode_option_of_bodex_option" - -module MathView = struct - let cast w : math_view obj = Object.try_cast w "GtkMathView" - external create : Gtk.adjustment optobj -> Gtk.adjustment optobj -> bool -> - math_view obj = "ml_gtk_math_view_new" - let create ~adjustmenth ~adjustmentv ~use_t1_lib () = - create (optboxed adjustmenth) (optboxed adjustmentv) use_t1_lib - external load : [>`math_view] obj -> filename:string -> bool = - "ml_gtk_math_view_load" - external unload : [>`math_view] obj -> unit = - "ml_gtk_math_view_unload" - external get_selection : [>`math_view] obj -> Minidom.mDOMNode option = - "ml_gtk_math_view_get_selection" - external set_selection : [>`math_view] obj -> Minidom.mDOMNode option -> unit= - "ml_gtk_math_view_set_selection" - external get_width : [>`math_view] obj -> int = - "ml_gtk_math_view_get_width" - external get_height : [>`math_view] obj -> int = - "ml_gtk_math_view_get_height" - external get_top : [>`math_view] obj -> (int * int) = - "ml_gtk_math_view_get_top" - external set_top : [>`math_view] obj -> int -> int -> unit = - "ml_gtk_math_view_set_top" - external set_adjustments : [>`math_view] obj -> Gtk.adjustment obj -> Gtk.adjustment obj -> unit = - "ml_gtk_math_view_set_adjustments" - external get_hadjustment : [>`math_view] obj -> Gtk.adjustment obj = - "ml_gtk_math_view_get_hadjustment" - external get_vadjustment : [>`math_view] obj -> Gtk.adjustment obj = - "ml_gtk_math_view_get_vadjustment" - external get_buffer : [>`math_view] obj -> Gdk.pixmap = - "ml_gtk_math_view_get_buffer" - external get_frame : [>`math_view] obj -> [`frame] obj = - "ml_gtk_math_view_get_frame" - external set_font_size : [>`math_view] obj -> int -> unit = - "ml_gtk_math_view_set_font_size" - external get_font_size : [>`math_view] obj -> int = - "ml_gtk_math_view_get_font_size" - external set_anti_aliasing : [>`math_view] obj -> bool -> unit = - "ml_gtk_math_view_set_anti_aliasing" - external get_anti_aliasing : [>`math_view] obj -> bool = - "ml_gtk_math_view_get_anti_aliasing" - external set_kerning : [>`math_view] obj -> bool -> unit = - "ml_gtk_math_view_set_kerning" - external get_kerning : [>`math_view] obj -> bool = - "ml_gtk_math_view_get_kerning" - external set_log_verbosity : [>`math_view] obj -> int -> unit = - "ml_gtk_math_view_set_log_verbosity" - external get_log_verbosity : [>`math_view] obj -> int = - "ml_gtk_math_view_get_log_verbosity" - external export_to_postscript : [>`math_view] obj -> filename:string -> bool = - "ml_gtk_math_view_export_to_postscript" - - module Signals = struct - open GtkSignal - - let clicked : ([>`math_view],_) t = - let marshal_clicked f _ = - function - [GtkArgv.POINTER node] -> f (mDOMNode_of_boxed_option node) - | _ -> invalid_arg "GtkMathView.MathView.Signals.marshal_clicked" - in - { name = "clicked"; marshaller = marshal_clicked } - - let jump : ([>`math_view],_) t = - let marshal_jump f _ = - function - [GtkArgv.POINTER node] -> f (mDOMNode_of_boxed_option node) - | _ -> invalid_arg "GtkMathView.MathView.Signals.marshal_jump" - in - { name = "jump"; marshaller = marshal_jump } - - let selection_changed : ([>`math_view],_) t = - let marshal_selection_changed f _ = - function - [GtkArgv.POINTER node] -> f (mDOMNode_option_of_boxed_option node) - | _ -> invalid_arg "GtkMathView.MathView.Signals.marshal_selection_changed" - in - { name = "selection_changed"; marshaller = marshal_selection_changed } - end -end diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/gtk_mathview.ml b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/gtk_mathview.ml deleted file mode 100644 index 745a1ba82..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/gtk_mathview.ml +++ /dev/null @@ -1 +0,0 @@ -type math_view = [`widget|`container|`bin|`eventbox|`math_view] diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/minidom/.cvsignore b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/minidom/.cvsignore deleted file mode 100644 index 84bdd8eff..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/minidom/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -*.cmi *.cmo *.cmx test test.opt diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/minidom/Makefile b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/minidom/Makefile deleted file mode 100644 index 7463870b8..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/minidom/Makefile +++ /dev/null @@ -1,43 +0,0 @@ -LIBDIR = /usr/lib/ocaml -INSTALLDIR = $(LIBDIR)/lablgtk/mathview/minidom -OBJECTS = minidom.cmi minidom.cmo minidom.cmx minidom.mli ml_minidom.h \ - ml_minidom.o minidom.o - -all: test - -opt: test.opt - -ml_minidom.o: ml_minidom.c - gcc -c -I/usr/lib/ocaml/caml/ `glib-config --cflags` `xml-config --cflags` `gtkmathview-config --cflags` $< - -minidom.cmi: minidom.mli - ocamlc -c $< - -minidom.cmo: minidom.ml minidom.cmi - ocamlc -c $< - -minidom.cmx: minidom.ml minidom.cmi - ocamlopt -c $< - -test.cmo: test.ml minidom.cmo - ocamlc -c test.ml - -test.cmx: test.ml minidom.cmx - ocamlopt -c test.ml - -test: test.cmo minidom.cmo ml_minidom.o - ocamlc -custom -o test minidom.cmo test.cmo ml_minidom.o \ - -cclib "`xml-config --libs`" -cclib "`glib-config --libs`" \ - -cclib "`gtkmathview-config --libs`" - -test.opt: test.cmx minidom.cmx ml_minidom.o - ocamlopt -o test.opt minidom.cmx test.cmx ml_minidom.o \ - -cclib "`xml-config --libs`" -cclib "`glib-config --libs`" \ - -cclib "`gtkmathview-config --libs`" - -install: - if test -d $(INSTALLDIR); then : ; else mkdir -p $(INSTALLDIR); fi - cp $(OBJECTS) $(INSTALLDIR) - -clean: - rm -f *.o *.cm? test test.opt diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/minidom/minidom.ml b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/minidom/minidom.ml deleted file mode 100644 index 31e677b3f..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/minidom/minidom.ml +++ /dev/null @@ -1,61 +0,0 @@ - -type mDOMString -type mDOMDoc -type mDOMNode -type mDOMAttr -type mDOMEntity - -external string_of_mDOMString : mDOMString -> string = "ml_string_of_mDOMString" -external mDOMString_of_string : string -> mDOMString = "ml_mDOMString_of_string" -external mDOMString_eq : string -> string -> bool = "ml_mDOMString_eq" - -external doc_load : string -> mDOMDoc = "ml_doc_load" -external doc_unload : mDOMDoc -> unit = "ml_doc_unload" - -external doc_new : mDOMString -> mDOMDoc = "ml_doc_new" -external doc_get_root_node : mDOMDoc -> mDOMNode = "ml_doc_get_root_node" - -external doc_add_entity : mDOMDoc -> mDOMString -> mDOMString -> mDOMEntity = "ml_doc_add_entity" -external doc_get_entity : mDOMDoc -> mDOMString -> mDOMEntity option = "ml_doc_get_entity" -external doc_get_predefined_entity : mDOMDoc -> mDOMString -> mDOMEntity option = "ml_doc_get_predefined_entity" -external entity_get_content : mDOMEntity -> mDOMString = "ml_entity_get_content" - -external node_is_text : mDOMNode -> bool = "ml_node_is_text" -external node_is_element : mDOMNode -> bool = "ml_node_is_element" -external node_is_blank : mDOMNode -> bool = "ml_node_is_blank" -external node_is_entity_ref : mDOMNode -> bool = "ml_node_is_entity_ref" -external node_get_type : mDOMNode -> int = "ml_node_get_type" -external node_get_name : mDOMNode -> mDOMString option = "ml_node_get_name" -external node_get_ns_uri : mDOMNode -> mDOMString option = "ml_node_get_ns_uri" -external node_get_attribute : mDOMNode -> mDOMString -> mDOMString option = "ml_node_get_attribute" -external node_get_attribute_ns : mDOMNode -> mDOMString -> mDOMString -> mDOMString option = "ml_node_get_attribute_ns" -external node_get_content : mDOMNode -> mDOMString option = "ml_node_get_content" -external node_get_parent : mDOMNode -> mDOMNode option = "ml_node_get_parent" -external node_get_prev_sibling : mDOMNode -> mDOMNode option = "ml_node_get_prev_sibling" -external node_get_next_sibling : mDOMNode -> mDOMNode option = "ml_node_get_next_sibling" -external node_get_first_child : mDOMNode -> mDOMNode option = "ml_node_get_first_child" -external node_get_first_attribute : mDOMNode -> mDOMAttr option = "ml_node_get_first_attribute" -external node_is_first : mDOMNode -> bool = "ml_node_is_first" -external node_is_last : mDOMNode -> bool = "ml_node_is_last" - -external attr_get_name : mDOMAttr -> mDOMString option = "ml_attr_get_name" -external attr_get_ns_uri : mDOMAttr -> mDOMString option = "ml_attr_get_ns_uri" -external attr_get_value : mDOMAttr -> mDOMString option = "ml_attr_get_value" -external attr_get_prev_sibling : mDOMAttr -> mDOMAttr option = "ml_attr_get_prev_sibling" -external attr_get_next_sibling : mDOMAttr -> mDOMAttr option = "ml_attr_get_next_sibling" -external attr_get_parent : mDOMAttr -> mDOMNode option = "ml_attr_get_parent" - -let rec node_list_of_node_first = - function None -> [] - | Some node -> node :: (node_list_of_node_first (node_get_next_sibling node)) - -let rec attr_list_of_attr_first = - function None -> [] - | Some attr -> attr :: (attr_list_of_attr_first (attr_get_next_sibling attr)) - -let node_get_children node = - (node_list_of_node_first (node_get_first_child node)) - -let node_get_attributes node = - (attr_list_of_attr_first (node_get_first_attribute node)) - diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/minidom/minidom.mli b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/minidom/minidom.mli deleted file mode 100644 index 0b655955b..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/minidom/minidom.mli +++ /dev/null @@ -1,50 +0,0 @@ - -type mDOMString -type mDOMDoc -type mDOMNode -type mDOMAttr -type mDOMEntity - -external string_of_mDOMString : mDOMString -> string = "ml_string_of_mDOMString" -external mDOMString_of_string : string -> mDOMString = "ml_mDOMString_of_string" -external mDOMString_eq : string -> string -> bool = "ml_mDOMString_eq" - -external doc_load : string -> mDOMDoc = "ml_doc_load" -external doc_unload : mDOMDoc -> unit = "ml_doc_unload" - -external doc_new : mDOMString -> mDOMDoc = "ml_doc_new" -external doc_get_root_node : mDOMDoc -> mDOMNode = "ml_doc_get_root_node" - -external doc_add_entity : doc:mDOMDoc -> name:mDOMString -> content:mDOMString -> mDOMEntity = "ml_doc_add_entity" -external doc_get_entity : doc:mDOMDoc -> name:mDOMString -> mDOMEntity option = "ml_doc_get_entity" -external doc_get_predefined_entity : doc:mDOMDoc -> name:mDOMString -> mDOMEntity option = "ml_doc_get_predefined_entity" -external entity_get_content : mDOMEntity -> mDOMString = "ml_entity_get_content" - -external node_is_text : mDOMNode -> bool = "ml_node_is_text" -external node_is_element : mDOMNode -> bool = "ml_node_is_element" -external node_is_blank : mDOMNode -> bool = "ml_node_is_blank" -external node_is_entity_ref : mDOMNode -> bool = "ml_node_is_entity_ref" -external node_get_type : mDOMNode -> int = "ml_node_get_type" -external node_get_name : mDOMNode -> mDOMString option = "ml_node_get_name" -external node_get_ns_uri : mDOMNode -> mDOMString option = "ml_node_get_ns_uri" -external node_get_attribute : node:mDOMNode -> name:mDOMString -> mDOMString option = "ml_node_get_attribute" -external node_get_attribute_ns : node:mDOMNode -> name:mDOMString -> ns_uri:mDOMString -> mDOMString option = "ml_node_get_attribute_ns" -external node_get_content : mDOMNode -> mDOMString option = "ml_node_get_content" -external node_get_parent : mDOMNode -> mDOMNode option = "ml_node_get_parent" -external node_get_prev_sibling : mDOMNode -> mDOMNode option = "ml_node_get_prev_sibling" -external node_get_next_sibling : mDOMNode -> mDOMNode option = "ml_node_get_next_sibling" -external node_get_first_child : mDOMNode -> mDOMNode option = "ml_node_get_first_child" -external node_get_first_attribute : mDOMNode -> mDOMAttr option = "ml_node_get_first_attribute" -external node_is_first : mDOMNode -> bool = "ml_node_is_first" -external node_is_last : mDOMNode -> bool = "ml_node_is_last" - -external attr_get_name : mDOMAttr -> mDOMString option = "ml_attr_get_name" -external attr_get_ns_uri : mDOMAttr -> mDOMString option = "ml_attr_get_ns_uri" -external attr_get_value : mDOMAttr -> mDOMString option = "ml_attr_get_value" -external attr_get_prev_sibling : mDOMAttr -> mDOMAttr option = "ml_attr_get_prev_sibling" -external attr_get_next_sibling : mDOMAttr -> mDOMAttr option = "ml_attr_get_next_sibling" -external attr_get_parent : mDOMAttr -> mDOMNode option = "ml_attr_get_parent" - -val node_get_children : mDOMNode -> mDOMNode list -val node_get_attributes : mDOMNode -> mDOMAttr list - diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/minidom/ml_minidom.c b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/minidom/ml_minidom.c deleted file mode 100644 index 10626143c..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/minidom/ml_minidom.c +++ /dev/null @@ -1,288 +0,0 @@ - -#include -#include -#include - -#include "minidom.h" - -#define Val_ptr(p) ((value) (p)) -#define Val_option(p,f) ((p != NULL) ? ml_some(f(p)) : Val_unit) -#define Val_mDOMString(s) (copy_string((char*) (s))) -#define mDOMString_val(v) ((mDOMStringRef) String_val(v)) - -static value -ml_some(value v) -{ - CAMLparam1(v); - value ret = alloc_small(1,0); - Field(ret,0) = v; - CAMLreturn(ret); -} - -value -ml_string_of_mDOMString(value s) -{ - CAMLparam1(s); - CAMLreturn(s); -} - -value -ml_mDOMString_of_string(value s) -{ - CAMLparam1(s); - CAMLreturn(s); -} - -value -ml_doc_load(value file_name) -{ - mDOMDocRef doc_ref; - - CAMLparam1(file_name); - - doc_ref = mdom_load(String_val(file_name), FALSE, NULL); - if (doc_ref == NULL) failwith("minidom: could not load document"); - - CAMLreturn((value) doc_ref); -} - -value -ml_doc_unload(value doc) -{ - CAMLparam1(doc); - - mdom_unload((mDOMDocRef) doc); - - CAMLreturn(Val_unit); -} - -value -ml_doc_new(value s) -{ - mDOMDocRef doc_ref; - - CAMLparam1(s); - - doc_ref = mdom_doc_new(mDOMString_val(s)); - if (doc_ref == NULL) failwith("minidom: could not create new document"); - - CAMLreturn((value) doc_ref); -} - - -value -ml_doc_get_root_node(value doc) -{ - mDOMNodeRef root; - - CAMLparam1(doc); - root = mdom_doc_get_root_node((mDOMDocRef) doc); - if (root == NULL) failwith("minidom: document has no root node!"); - - CAMLreturn((value) root); -} - -value -ml_doc_add_entity(value doc, value name, value content) -{ - mDOMEntityRef ent; - - CAMLparam3(doc, name, content); - ent = mdom_doc_add_entity((mDOMDocRef) doc, mDOMString_val(name), mDOMString_val(content)); - if (ent == NULL) failwith("minidom: could not add entity"); - - CAMLreturn((value) ent); -} - -value -ml_doc_get_entity(value doc, value name) -{ - mDOMEntityRef ent; - - CAMLparam2(doc, name); - ent = mdom_doc_get_entity((mDOMDocRef) doc, mDOMString_val(name)); - - CAMLreturn(Val_option(ent, Val_ptr)); -} - -value -ml_doc_get_predefined_entity(value name) -{ - mDOMEntityRef ent; - - CAMLparam1(name); - ent = mdom_get_predefined_entity(mDOMString_val(name)); - - CAMLreturn(Val_option(ent, Val_ptr)); -} - -value -ml_entity_get_content(value ent) -{ - CAMLparam1(ent); - CAMLreturn(Val_mDOMString(mdom_entity_get_content((mDOMEntityRef) ent))); -} - -value -ml_node_is_text(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_bool(mdom_node_is_text((mDOMNodeRef) node))); -} - -value -ml_node_is_element(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_bool(mdom_node_is_element((mDOMNodeRef) node))); -} - -value -ml_node_is_blank(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_bool(mdom_node_is_blank((mDOMNodeRef) node))); -} - -value -ml_node_is_entity_ref(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_bool(mdom_node_is_entity_ref((mDOMNodeRef) node))); -} - -value -ml_node_get_type(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_int(mdom_node_get_type((mDOMNodeRef) node))); -} - -value -ml_node_get_name(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_option(mdom_node_get_name((mDOMNodeRef) node), Val_mDOMString)); -} - -value -ml_node_get_content(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_option(mdom_node_get_content((mDOMNodeRef) node), Val_mDOMString)); -} - -value -ml_node_get_ns_uri(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_option(mdom_node_get_ns_uri((mDOMNodeRef) node), Val_mDOMString)); -} - -value -ml_node_get_attribute(value node, value name) -{ - CAMLparam2(node,name); - CAMLreturn(Val_option(mdom_node_get_attribute((mDOMNodeRef) node, String_val(name)), Val_mDOMString)); -} - -value -ml_node_get_attribute_ns(value node, value name, value ns_uri) -{ - CAMLparam2(node,name); - CAMLreturn(Val_option(mdom_node_get_attribute_ns((mDOMNodeRef) node, - String_val(name), - String_val(ns_uri)), Val_mDOMString)); -} - -value -ml_node_get_parent(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_option(mdom_node_get_parent((mDOMNodeRef) node), Val_ptr)); -} - -value -ml_node_get_prev_sibling(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_option(mdom_node_get_prev_sibling((mDOMNodeRef) node), Val_ptr)); -} - -value -ml_node_get_next_sibling(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_option(mdom_node_get_next_sibling((mDOMNodeRef) node), Val_ptr)); -} - -value -ml_node_get_first_child(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_option(mdom_node_get_first_child((mDOMNodeRef) node), Val_ptr)); -} - -value -ml_node_get_first_attribute(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_option(mdom_node_get_first_attribute((mDOMNodeRef) node), Val_ptr)); -} - -value -ml_node_is_first(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_bool(mdom_node_is_first((mDOMNodeRef) node))); -} - -value -ml_node_is_last(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_bool(mdom_node_is_last((mDOMNodeRef) node))); -} - -value -ml_attr_get_name(value attr) -{ - CAMLparam1(attr); - CAMLreturn(Val_option(mdom_attr_get_name((mDOMAttrRef) attr), Val_mDOMString)); -} - -value -ml_attr_get_ns_uri(value attr) -{ - CAMLparam1(attr); - CAMLreturn(Val_option(mdom_attr_get_ns_uri((mDOMAttrRef) attr), Val_mDOMString)); -} - -value -ml_attr_get_value(value attr) -{ - CAMLparam1(attr); - CAMLreturn(Val_option(mdom_attr_get_value((mDOMAttrRef) attr), Val_mDOMString)); -} - -value -ml_attr_get_prev_sibling(value attr) -{ - CAMLparam1(attr); - CAMLreturn(Val_option(mdom_attr_get_prev_sibling((mDOMAttrRef) attr), Val_ptr)); -} - -value -ml_attr_get_next_sibling(value attr) -{ - CAMLparam1(attr); - CAMLreturn(Val_option(mdom_attr_get_next_sibling((mDOMAttrRef) attr), Val_ptr)); -} - -value -ml_attr_get_parent(value attr) -{ - CAMLparam1(attr); - CAMLreturn(Val_option(mdom_attr_get_parent((mDOMAttrRef) attr), Val_ptr)); -} - diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/minidom/ml_minidom.h b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/minidom/ml_minidom.h deleted file mode 100644 index cf1be3a4a..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/minidom/ml_minidom.h +++ /dev/null @@ -1,10 +0,0 @@ -#define Val_ptr(p) ((value) (p)) -#define Val_option(p,f) ((p != NULL) ? ml_some(f(p)) : Val_unit) -#define Val_mDOMString(s) (copy_string((char*) (s))) -#define mDOMString_val(v) ((mDOMStringRef) String_val(v)) -#define mDOMNode_val(v) ((mDOMNodeRef) v) - -#define mDOMNode_option_mDOMNodeRef(p) (((p) != NULL) ? ml_some((value) (p)) : Val_unit) -#define mDOMNodeRef_mDOMNode_option(v) ((v == Val_unit) ? NULL : (mDOMNodeRef)Field((v),0)) -#define Val_mDOMNodeRef(p) (mDOMNode_option_mDOMNodeRef(p)) -#define mDOMNodeRef_val(v) (mDOMNodeRef_mDOMNode_option(v)) diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/minidom/test.ml b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/minidom/test.ml deleted file mode 100644 index 3c7a092e9..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/minidom/test.ml +++ /dev/null @@ -1,84 +0,0 @@ - -let doc = Minidom.doc_load "test.xml" - -let root = Minidom.doc_get_root_node doc - -let check_attribute_ns attr = - Printf.printf "\n\n"; - let ns_uri = Minidom.attr_get_ns_uri attr - and attr_name = Minidom.attr_get_name attr - and attr_value = Minidom.attr_get_value attr - and parent = Minidom.attr_get_parent attr - in - match parent,ns_uri,attr_name,attr_value with - Some parent_node,Some uri,Some attribute_name,Some attribute_value -> - let attr_value = Minidom.node_get_attribute_ns parent_node attribute_name uri - in begin - match attr_value with - Some attr1 -> - Printf.printf "found the attribute with ns %s (was %s)\n" - (Minidom.string_of_mDOMString attr1) (Minidom.string_of_mDOMString attribute_value) - | None -> - Printf.printf "attribute not found (uri was %s)!!!!\n" (Minidom.string_of_mDOMString uri) - end - | _ -> - Printf.printf "parent_node == NULL || uri == NULL || attribute_name == NULL || attribute_value == NULL\n" -;; - -let print_attribute attr = - check_attribute_ns attr; - let ns_uri = Minidom.attr_get_ns_uri attr - in - begin - match ns_uri with - Some uri -> Printf.printf " %s:" (Minidom.string_of_mDOMString uri); - | None -> () - end; - match ((Minidom.attr_get_name attr), (Minidom.attr_get_value attr)) with - (Some attr_name, Some attr_value) -> - Printf.printf " %s=\"%s\"" (Minidom.string_of_mDOMString attr_name) (Minidom.string_of_mDOMString attr_value) - | (Some attr_name, _) -> - Printf.printf " ??? attribute %s has no value !!!" (Minidom.string_of_mDOMString attr_name) - | (_,_) -> - Printf.printf " ??? very strange attribute !!!" -;; - -let rec print_node n node = - if Minidom.node_is_blank node then () - else if Minidom.node_is_element node then begin - match Minidom.node_get_name node with - Some node_name -> - begin - let children = Minidom.node_get_children node - and attributes = Minidom.node_get_attributes node - and ns_uri = Minidom.node_get_ns_uri node - and is_first,is_last = (Minidom.node_is_first node), (Minidom.node_is_last node) - in - for i = 1 to n do print_char ' ' done; - Printf.printf "<"; - begin - match ns_uri with - Some uri -> Printf.printf "%s:" (Minidom.string_of_mDOMString uri) - | None -> () - end; - Printf.printf "%s" (Minidom.string_of_mDOMString node_name); - List.iter print_attribute attributes; - Printf.printf ">\n"; - List.iter (print_node (n + 2)) children; - for i = 1 to n do print_char ' ' done; - Printf.printf "\n" (Minidom.string_of_mDOMString node_name) - end - | None -> Printf.printf "??? this node has no name !!!\n" - end else if Minidom.node_is_text node then begin - match Minidom.node_get_content node with - Some node_content -> - for i = 1 to n do print_char ' ' done; - Printf.printf "%s\n" (Minidom.string_of_mDOMString node_content) - | None -> Printf.printf "??? this node has no content !!!\n" - end else begin - Printf.printf "don't know how to manage a node with type %d\n" (Minidom.node_get_type node) - end -;; - -print_node 0 root;; - diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/minidom/test.xml b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/minidom/test.xml deleted file mode 100644 index 83d2eef68..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/minidom/test.xml +++ /dev/null @@ -1,505 +0,0 @@ - - - - - - - - DEFINITION and_ind() OF TYPE - - - - - - - - __ - - - - - - - - ( - - - - - Π - A - : - - Prop - - - - - - - . - - - - - Π - B - : - - Prop - - - - - - - . - - - - - Π - P - : - - Prop - - - - - - - . - - - - - Π - f - : - - ( - A - - - ( - B - - P - ) - - ) - - - - - - - . - - Π - a - : - - ( - and - - _ - - A - - _ - - B - ) - - . - P - - - - - - - - - - - - - - - - - - - - - - - - - - - - :> - - Prop - - - - - - - - ) - - - - - - - - cast - - prod - - A - - - Prop - - - - - prod - - B - - - Prop - - - - - prod - - P - - - Prop - - - - - prod - - f - - - arrow - A - - arrow - B - P - - - - - - prod - - a - - - app - and - A - B - - - - P - - - - - - - Prop - - - - - - - - - - - AS - - - - - - - - __ - - - - - - - λ - A - : - - Prop - - - - - - - . - - - - - λ - B - : - - Prop - - - - - - - . - - - - - λ - P - : - - Prop - - - - - - - . - - - - - λ - f - : - - ( - A - - - ( - B - - P - ) - - ) - - - - - - - . - - - - - λ - a - : - - ( - and - - _ - - A - - _ - - B - ) - - - - - - - . - - < - P - > - CASES - - _ - - a - - _ - - OF - - ( - conj - - _ - - $1 - - _ - - $2 - ) - - - - ( - f - - _ - - $1 - - _ - - $2 - ) - - - _ - - END - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - A - - - Prop - - - - - - B - - - Prop - - - - - - P - - - Prop - - - - - - f - - - arrow - A - - arrow - B - P - - - - - - - a - - - app - and - A - B - - - - - mutcase - P - a - - app - conj - $1 - $2 - - - app - f - $1 - $2 - - - - - - - - - - - - - - diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/ml_gtk_mathview.c b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/ml_gtk_mathview.c deleted file mode 100644 index 39f3d74c4..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/ml_gtk_mathview.c +++ /dev/null @@ -1,120 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include -#include -#include -#include -#include - -#include "minidom/ml_minidom.h" - -/* : Next row should be put in a .h of lablgtk. */ -#define GtkAdjustment_val(val) check_cast(GTK_ADJUSTMENT,val) - -#define GtkMathView_val(val) check_cast(GTK_MATH_VIEW,val) -ML_3 (gtk_math_view_new,GtkAdjustment_val, GtkAdjustment_val, Bool_val, Val_GtkWidget_sink) -ML_2 (gtk_math_view_load, GtkMathView_val, String_val, Val_bool) -ML_1 (gtk_math_view_unload, GtkMathView_val, Unit) -/*ML_1 (gtk_math_view_dump, GtkMathView_val, Unit)*/ -ML_1 (gtk_math_view_get_selection, GtkMathView_val, Val_mDOMNodeRef) -ML_2 (gtk_math_view_set_selection, GtkMathView_val, mDOMNodeRef_val, Unit) -ML_1 (gtk_math_view_get_width, GtkMathView_val, Val_int) -ML_1 (gtk_math_view_get_height, GtkMathView_val, Val_int) -ML_3 (gtk_math_view_set_top, GtkMathView_val, Int_val, Int_val, Unit) -ML_3 (gtk_math_view_set_adjustments, GtkMathView_val, GtkAdjustment_val, GtkAdjustment_val, Unit) -ML_1 (gtk_math_view_get_hadjustment, GtkMathView_val, Val_GtkWidget) -ML_1 (gtk_math_view_get_vadjustment, GtkMathView_val, Val_GtkWidget) -ML_1 (gtk_math_view_get_buffer, GtkMathView_val, Val_GdkPixmap) -ML_1 (gtk_math_view_get_frame, GtkMathView_val, Val_GtkWidget) -ML_2 (gtk_math_view_set_font_size, GtkMathView_val, Int_val, Unit) -ML_1 (gtk_math_view_get_font_size, GtkMathView_val, Val_int) -ML_2 (gtk_math_view_set_anti_aliasing, GtkMathView_val, Bool_val, Unit) -ML_1 (gtk_math_view_get_anti_aliasing, GtkMathView_val, Val_bool) -ML_2 (gtk_math_view_set_kerning, GtkMathView_val, Bool_val, Unit) -ML_1 (gtk_math_view_get_kerning, GtkMathView_val, Val_bool) -ML_2 (gtk_math_view_set_log_verbosity, GtkMathView_val, Int_val, Unit) -ML_1 (gtk_math_view_get_log_verbosity, GtkMathView_val, Val_int) - - -value ml_gtk_math_view_export_to_postscript (value arg1, value arg2) -{ - CAMLparam1(arg1); - char *filename; - FILE *fd; - int res; - filename = String_val (arg2); - if ((fd = fopen(filename, "w"))) { - gtk_math_view_export_to_postscript (GtkMathView_val (arg1), fd); - fclose (fd); - res = 1; - } else { - fprintf(stderr, "Error opening file %s for writing\n", filename); - res = 0; - } - CAMLreturn (Val_bool(res)); -} - -value ml_gtk_math_view_get_top (value arg1) -{ - CAMLparam1(arg1); - CAMLlocal1 (result); - int x, y; - gtk_math_view_get_top(GtkMathView_val (arg1), &x, &y); - result = alloc(2, 0); - Store_field(result, 0, Val_int(x)); - Store_field(result, 0, Val_int(y)); - CAMLreturn (result); -} - - -value ml_gtk_math_view_mDOMNode_of_bodex_option (value arg1) -{ - CAMLparam1(arg1); - - mDOMNodeRef nr; - CAMLlocal1 (tmp); - CAMLlocal1 (optval); - CAMLlocal1 (res); - - if (arg1==Val_int(0)) { - assert(0); - } else { - tmp = Field(arg1, 0); - nr = (mDOMNodeRef) Field(tmp, 1); - } - optval = Val_mDOMNodeRef(nr); - if (optval==Val_int(0)) { - assert(0); - } else { - res = Field(optval, 0); - } - - CAMLreturn(res); -} - -value ml_gtk_math_view_mDOMNode_option_of_bodex_option (value arg1) -{ - CAMLparam1(arg1); - - mDOMNodeRef nr; - CAMLlocal1 (tmp); - - if (arg1==Val_int(0)) { - nr=NULL; - } else { - tmp = Field(arg1, 0); - nr = (mDOMNodeRef) Field(tmp, 1); - } - - CAMLreturn(Val_mDOMNodeRef(nr)); -} diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/test/.cvsignore b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/test/.cvsignore deleted file mode 100644 index 1968614b7..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/test/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -*.cmo *.cmi *.cmx t1lib.log test test.opt test.ps test.o diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/test/Makefile b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/test/Makefile deleted file mode 100644 index 1d5f5e1f3..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/test/Makefile +++ /dev/null @@ -1,43 +0,0 @@ -LABLGTK_DIR = /usr/lib/ocaml/lablgtk -LABLGTK_MATHVIEW_DIR = .. -MINIDOM_DIR = ../minidom -OCAMLC = ocamlc -I $(LABLGTK_DIR) -I $(LABLGTK_MATHVIEW_DIR) \ - -I $(MINIDOM_DIR) -I mlmathview -OCAMLOPT = ocamlopt -I $(LABLGTK_DIR) -I $(LABLGTK_MATHVIEW_DIR) \ - -I $(MINIDOM_DIR) -I mlmathview - -all: test -opt: test.opt - -test: test.cmo - $(OCAMLC) -custom -o test lablgtk.cma gtkInit.cmo \ - $(LABLGTK_MATHVIEW_DIR)/lablgtkmathview.cma \ - $(MINIDOM_DIR)/minidom.cmo \ - -cclib "$(MINIDOM_DIR)/ml_minidom.o" \ - test.cmo \ - -cclib "-lstr -L/usr/lib -L/usr/X11R6/lib -lgtk -lgdk \ - -rdynamic -lgmodule -lglib -ldl -lXi -lXext -lX11 -lm \ - -L/usr/local/lib/gtkmathview -lgtkmathview \ - $(LABLGTK_MATHVIEW_DIR)/ml_gtk_mathview.o" - -test.opt: test.cmx - $(OCAMLOPT) -o test.opt lablgtk.cmxa gtkInit.cmx \ - $(LABLGTK_MATHVIEW_DIR)/lablgtkmathview.cmxa \ - $(MINIDOM_DIR)/minidom.cmx \ - -cclib "$(MINIDOM_DIR)/ml_minidom.o" \ - test.cmx \ - -cclib "-lstr -L/usr/lib -L/usr/X11R6/lib -lgtk -lgdk \ - -rdynamic -lgmodule -lglib -ldl -lXi -lXext -lX11 -lm \ - -L/usr/local/lib/gtkmathview -lgtkmathview \ - $(LABLGTK_MATHVIEW_DIR)/ml_gtk_mathview.o" - -.SUFFIXES: .ml .mli .cmo .cmi .cmx -.ml.cmo: - $(OCAMLC) -c $< -.mli.cmi: - $(OCAMLC) -c $< -.ml.cmx: - $(OCAMLOPT) -c $< - -clean: - rm -f *.cm[iox] *.o test test.opt t1lib.log diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/test/t1.config b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/test/t1.config deleted file mode 100644 index afb669e95..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/test/t1.config +++ /dev/null @@ -1,3 +0,0 @@ -ENCODING=. -AFM=/usr/share/texmf/fonts/afm/ -TYPE1=/usr/share/texmf/fonts/type1/bluesky/cm/:/usr/X11R6/lib/X11/fonts/Type1/:. diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/test/test.ml b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/test/test.ml deleted file mode 100644 index af65d7485..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/test/test.ml +++ /dev/null @@ -1,278 +0,0 @@ -(******************************************************************************) -(* Claudio Sacerdoti Coen *) -(* 25/09/2000 *) -(* *) -(* This is a simple test for the OCaml (LablGtk indeed) binding of the *) -(* MathView widget *) -(******************************************************************************) - -(* Callbacks *) -let jump node = - let module M = Minidom in - print_string ("jump: " ^ - (match - M.node_get_attribute node - (M.mDOMString_of_string "href") - with - None -> "DOES NOT WORKS (if you have clicked on the hyperlink)!!!!!" - | Some s -> M.string_of_mDOMString s - ) ^ "\n"); - flush stdout -;; - -let selection_changed node = - let module M = Minidom in - print_string ("selection_changed: " ^ - (match node with - None -> "selection_changed on nothing" - | Some node -> - match M.node_get_name node with - None -> "selection_changed on a node without name" - | Some s -> "selection changed on " ^ M.string_of_mDOMString s - ) ^ "\n"); - flush stdout -;; - - -let clicked node = - let module M = Minidom in - print_string ("clicked: " ^ - (match M.node_get_name node with - None -> "Nothing clicked (???)" - | Some s -> M.string_of_mDOMString s ^ " clicked" - ) ^ "\n"); - flush stdout -;; - - -let activate_t1 mathview sw () = - sw#remove !mathview#coerce ; - mathview := - (GMathView.math_view ~packing:sw#add ~width:50 ~height:50 - ~use_t1_lib:true ()) ; - ignore(!mathview#connect#jump jump) ; - ignore(!mathview#connect#clicked clicked) ; - ignore(!mathview#connect#selection_changed selection_changed) ; - print_string "WIDGET RECREATED WITH T1 FONTS ACTIVATED\n" ; -;; - -let load mathview () = - !mathview#load "test.xml" ; - print_string "load: SEEMS TO WORK\n" ; - flush stdout -;; - -let get_selection mathview () = - let selection = - match !mathview#get_selection with - None -> "NO SELECTION" - | Some node -> - match Minidom.node_get_name node with - None -> "selection is on nothing" - | Some s -> "selection is on " ^ Minidom.string_of_mDOMString s - in - print_string ("get_selection: " ^ selection ^ "\n") ; - flush stdout -;; - -let set_selection mathview () = - begin - try - match !mathview#get_selection with - None -> raise Not_found - | Some node -> - match Minidom.node_get_parent node with - None -> raise Not_found - | Some node -> - !mathview#set_selection (Some node) ; - print_string "set_selection: SEEMS TO WORK\n" - with - Not_found -> - print_string "set_selection: YOU MUST PREVIOUSLY SELECT A NON-ROOT NODE" - end ; - flush stdout -;; - -let unload mathview () = - !mathview#unload ; - print_string "unload: SEEMS TO WORK\n" ; - flush stdout -;; - -let get_width mathview () = - print_string ("get_width: " ^ string_of_int (!mathview#get_width) ^ "\n") ; - flush stdout -;; - -let get_height mathview () = - print_string ("get_height: " ^ string_of_int (!mathview#get_height) ^ "\n") ; - flush stdout -;; - -let get_top mathview () = - let (x,y) = !mathview#get_top in - print_string ("get_top: ("^ string_of_int x ^ "," ^ string_of_int y ^ ")\n") ; - flush stdout -;; - -let set_top mathview () = - !mathview#set_top 0 0; - print_string "set_top: SEEM TO WORK\n" ; - flush stdout -;; - -let set_adjustments mathview () = - let adj1 = GData.adjustment () in - let adj2 = GData.adjustment () in - !mathview#set_adjustments adj1 adj2 ; - adj1#set_value ((adj1#lower +. adj1#upper) /. 2.0) ; - adj2#set_value ((adj2#lower +. adj2#upper) /. 2.0) ; - print_string "set_adjustments: SEEM TO WORK\n" ; - flush stdout -;; - -let get_hadjustment mathview () = - let adj = !mathview#get_hadjustment in - adj#set_value ((adj#lower +. adj#upper) /. 2.0) ; - print_string "get_hadjustment: SEEM TO WORK\n" ; - flush stdout -;; - -let get_vadjustment mathview () = - let adj = !mathview#get_vadjustment in - adj#set_value ((adj#lower +. adj#upper) /. 2.0) ; - print_string "get_vadjustment: SEEM TO WORK\n" ; - flush stdout -;; - -let get_buffer mathview () = - let buffer = !mathview#get_buffer in - Gdk.Draw.rectangle buffer (Gdk.GC.create buffer) ~x:0 ~y:0 - ~width:50 ~height:50 ~filled:true () ; - print_string "get_buffer: SEEMS TO WORK (hint: force the widget redrawing)\n"; - flush stdout -;; - -let get_frame mathview () = - let frame = !mathview#get_frame in - frame#set_shadow_type `NONE ; - print_string "get_frame: SEEMS TO WORK\n" ; - flush stdout -;; - -let set_font_size mathview () = - !mathview#set_font_size 24 ; - print_string "set_font_size: FONT IS NOW 24\n" ; - flush stdout -;; - -let get_font_size mathview () = - print_string ("get_font_size: " ^ string_of_int (!mathview#get_font_size) ^ "\n") ; - flush stdout -;; - -let set_anti_aliasing mathview () = - !mathview#set_anti_aliasing true ; - print_string "set_anti_aliasing: ON\n" ; - flush stdout -;; - -let get_anti_aliasing mathview () = - print_string ("get_anti_aliasing: " ^ - (match !mathview#get_anti_aliasing with true -> "ON" | false -> "OFF") ^ - "\n") ; - flush stdout -;; - -let set_kerning mathview () = - !mathview#set_kerning true ; - print_string "set_kerning: ON\n" ; - flush stdout -;; - -let get_kerning mathview () = - print_string ("get_kerning: " ^ - (match !mathview#get_kerning with true -> "ON" | false -> "OFF") ^ - "\n") ; - flush stdout -;; - -let set_log_verbosity mathview () = - !mathview#set_log_verbosity 3 ; - print_string "set_log_verbosity: NOW IS 3\n" ; - flush stdout -;; - -let get_log_verbosity mathview () = - print_string ("get_log_verbosity: " ^ - string_of_int !mathview#get_log_verbosity ^ - "\n") ; - flush stdout -;; - -let export_to_postscript mathview () = - !mathview#export_to_postscript "test.ps" ; - print_string "expor_to_postscript: SEEMS TO WORK (hint: look at test.ps)\n"; - flush stdout -;; - -(* Widget creation *) -let main_window = GWindow.window ~title:"GtkMathView test" () in -let vbox = GPack.vbox ~packing:main_window#add () in -let sw = GBin.scrolled_window ~width:50 ~height:50 ~packing:vbox#pack () in -let mathview= ref (GMathView.math_view ~packing:sw#add ~width:50 ~height:50 ()) in -let table = GPack.table ~rows:5 ~columns:5 ~packing:vbox#pack () in -let button_t1=GButton.button ~label:"activate t1 fonts" ~packing:(table#attach ~left:0 ~top:0) () in -let button_load = GButton.button ~label:"load" ~packing:(table#attach ~left:1 ~top:0) () in -let button_unload = GButton.button ~label:"unload" ~packing:(table#attach ~left:2 ~top:0) () in -let button_get_selection = GButton.button ~label:"get_selection" ~packing:(table#attach ~left:3 ~top:0) () in -let button_set_selection = GButton.button ~label:"set_selection" ~packing:(table#attach ~left:4 ~top:0) () in -let button_get_width = GButton.button ~label:"get_width" ~packing:(table#attach ~left:0 ~top:1) () in -let button_get_height = GButton.button ~label:"get_height" ~packing:(table#attach ~left:1 ~top:1) () in -let button_get_top = GButton.button ~label:"get_top" ~packing:(table#attach ~left:2 ~top:1) () in -let button_set_top = GButton.button ~label:"set_top" ~packing:(table#attach ~left:3 ~top:1) () in -let button_set_adjustments = GButton.button ~label:"set_adjustments" ~packing:(table#attach ~left:4 ~top:1) () in -let button_get_hadjustment = GButton.button ~label:"get_hadjustment" ~packing:(table#attach ~left:0 ~top:2) () in -let button_get_vadjustment = GButton.button ~label:"get_vadjustment" ~packing:(table#attach ~left:1 ~top:2) () in -let button_get_buffer = GButton.button ~label:"get_buffer" ~packing:(table#attach ~left:2 ~top:2) () in -let button_get_frame = GButton.button ~label:"get_frame" ~packing:(table#attach ~left:3 ~top:2) () in -let button_set_font_size = GButton.button ~label:"set_font_size" ~packing:(table#attach ~left:4 ~top:2) () in -let button_get_font_size = GButton.button ~label:"get_font_size" ~packing:(table#attach ~left:0 ~top:3) () in -let button_set_anti_aliasing = GButton.button ~label:"set_anti_aliasing" ~packing:(table#attach ~left:1 ~top:3) () in -let button_get_anti_aliasing = GButton.button ~label:"get_anti_aliasing" ~packing:(table#attach ~left:2 ~top:3) () in -let button_set_kerning = GButton.button ~label:"set_kerning" ~packing:(table#attach ~left:3 ~top:3) () in -let button_get_kerning = GButton.button ~label:"get_kerning" ~packing:(table#attach ~left:4 ~top:3) () in -let button_set_log_verbosity = GButton.button ~label:"set_log_verbosity" ~packing:(table#attach ~left:0 ~top:4) () in -let button_get_log_verbosity = GButton.button ~label:"get_log_verbosity" ~packing:(table#attach ~left:1 ~top:4) () in -let button_export_to_postscript = GButton.button ~label:"export_to_postscript" ~packing:(table#attach ~left:2 ~top:4) () in -(* Signals connection *) -ignore(button_t1#connect#clicked (activate_t1 mathview sw)) ; -ignore(button_load#connect#clicked (load mathview)) ; -ignore(button_unload#connect#clicked (unload mathview)) ; -ignore(button_get_selection#connect#clicked (get_selection mathview)) ; -ignore(button_set_selection#connect#clicked (set_selection mathview)) ; -ignore(button_get_width#connect#clicked (get_width mathview)) ; -ignore(button_get_height#connect#clicked (get_height mathview)) ; -ignore(button_get_top#connect#clicked (get_top mathview)) ; -ignore(button_set_top#connect#clicked (set_top mathview)) ; -ignore(button_set_adjustments#connect#clicked (set_adjustments mathview)) ; -ignore(button_get_hadjustment#connect#clicked (get_hadjustment mathview)) ; -ignore(button_get_vadjustment#connect#clicked (get_vadjustment mathview)) ; -ignore(button_get_buffer#connect#clicked (get_buffer mathview)) ; -ignore(button_get_frame#connect#clicked (get_frame mathview)) ; -ignore(button_set_font_size#connect#clicked (set_font_size mathview)) ; -ignore(button_get_font_size#connect#clicked (get_font_size mathview)) ; -ignore(button_set_anti_aliasing#connect#clicked (set_anti_aliasing mathview)) ; -ignore(button_get_anti_aliasing#connect#clicked (get_anti_aliasing mathview)) ; -ignore(button_set_kerning#connect#clicked (set_kerning mathview)) ; -ignore(button_get_kerning#connect#clicked (get_kerning mathview)) ; -ignore(button_set_log_verbosity#connect#clicked (set_log_verbosity mathview)) ; -ignore(button_get_log_verbosity#connect#clicked (get_log_verbosity mathview)) ; -ignore(button_export_to_postscript#connect#clicked (export_to_postscript mathview)) ; -ignore(!mathview#connect#jump jump) ; -ignore(!mathview#connect#clicked clicked) ; -ignore(!mathview#connect#selection_changed selection_changed) ; -(* Main Loop *) -main_window#show () ; -GMain.Main.main () -;; diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/test/test.xml b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/test/test.xml deleted file mode 100644 index b0f8c1563..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.0/test/test.xml +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - a - - x - - + - b - - - - x - 2 - - + - - p - - x - - + - q - - - - d - x - = - - - a2 - - - ln - - - ( - - x2 - + - - p - - x - - + - q - - ) - - - - + - - - - - 2 - - b - - - - - a - - p - - - - - - 4 - - q - - - - - p - 2 - - - - - - - arctg - - - - - 2 - - x - - + - p - - - - - 4 - - q - - - - - p - 2 - - - - - - - + - c - - diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1-1.spec b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1-1.spec deleted file mode 100644 index f6381e9e1..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1-1.spec +++ /dev/null @@ -1,25 +0,0 @@ -Summary: GtkMathView : the binding for lablgtk of the GtkMathView widget -Name: lablgtk-20000829_gtkmathview -Version: 0.2.1 -Release: 1 -Copyright: LGPL -Group: Development/Libraries -Requires: lablgtk_20000829 gtkmathview -Source: www.cs.unibo.it:/~lpadovan/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1.tar.gz -%description -GtkMathView is the binding for lablgtk of the GtkMathView widget. - -%prep -%setup - -%build -make -make opt - -%install -make install - -%files -%doc COPYING - -/usr/lib/ocaml/lablgtk/mathview diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/.cvsignore b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/.cvsignore deleted file mode 100644 index cd9e25037..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -*.cmi *.cmo *.cmx *.cma *.cmxa config.make diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/.depend b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/.depend deleted file mode 100644 index 600449bb8..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/.depend +++ /dev/null @@ -1,4 +0,0 @@ -gMathView.cmo: gtkMathView.cmo gtk_mathview.cmo -gMathView.cmx: gtkMathView.cmx gtk_mathview.cmx -gtkMathView.cmo: gtk_mathview.cmo -gtkMathView.cmx: gtk_mathview.cmx diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/COPYING b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/COPYING deleted file mode 100644 index 20b480a10..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/COPYING +++ /dev/null @@ -1,11 +0,0 @@ -This library is made available under the LGPL. -You should have got a copy of the LGPL with Objective Caml. -The LGPL applies to all the files in this directory, but not in -subdirectories. - -For the test subdirectory, there is no specific licensing policy, -but you may freely take inspiration from the code, and copy parts of -it in your application. - -Author: - Claudio Sacerdoti Coen diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/Makefile b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/Makefile deleted file mode 100644 index b8adbb47b..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/Makefile +++ /dev/null @@ -1,109 +0,0 @@ -# Makefile for lablgtk_mathview. - -LABLGTKDIR = /usr/lib/ocaml/lablgtk -MINIDOMDIR = ./minidom -TESTDIR = ./test -MLFLAGS += -I $(LABLGTKDIR) -I $(MINIDOMDIR) - -TARGETS = ml_gtk_mathview.o lablgtkmathview.cma - -all: Minidom $(TARGETS) - -opt: Minidom.opt lablgtkmathviewopt - -Minidom: - cd $(MINIDOMDIR); make - -Minidom.opt: - cd $(MINIDOMDIR); make opt - -configure: - @rm -f config.make - @$(MAKE) --no-print-directory -f configure.mk - -depend: - @rm -f .depend - @$(MAKE) --no-print-directory -f configure.mk .depend - -.depend config.make: - @$(MAKE) --no-print-directory -f configure.mk - -COMPILER = $(CAMLC) $(MLFLAGS) -w s -labels -c -LINKER = $(CAMLC) $(MLFLAGS) -COMPOPT = $(CAMLOPT) $(MLFLAGS) -w s -labels -c -LINKOPT = $(CAMLOPT) $(MLFLAGS) - -include config.make - -INSTALLDIR = $(LIBDIR)/lablgtk/mathview - -MLLIBS = lablgtkmathview.cma -CLIBS = -MLLINK = unix.cma str.cma - -ifdef DEBUG -CFLAGS = -g $(GTKCFLAGS) -MLLINK += -cclib -lcamlrund -MLFLAGS += -g -else -CFLAGS = -O -DGTK_NO_CHECK_CASTS -DGTK_DISABLE_COMPAT_H $(GTKCFLAGS) -endif -CFLAGS += $(MINIDOMCFLAGS) $(GTKMATHVIEWCFLAGS) - -THFLAGS = -thread -THLINK = unix.cma threads.cma - -ifdef USE_CC -CCOMPILER = $(CC) -c -I$(LIBDIR) $(CFLAGS) -else -CCOMPILER = ocamlc -c -ccopt "$(CFLAGS)" -endif - -# Rules -.SUFFIXES: .ml .mli .cmo .cmi .cmx .c .o .var .h .opt .def -.c.o: - $(CCOMPILER) $< -.ml.cmo: - $(COMPILER) $< -.mli.cmi: - $(COMPILER) $< -.ml.cmx: - $(COMPOPT) $< -.var.h: - ./var2def < $< > $@ -.var.c: - ./var2conv < $< > $@ - -# Targets -COBJS = ml_gtk_mathview.o -MLOBJS = gtk_mathview.cmo gtkMathView.cmo gMathView.cmo -ALLOBJS = $(MLOBJS) - -lablgtkmathviewopt: $(CLIBS) $(MLLIBS:.cma=.cmxa) - -install: - if test -d $(INSTALLDIR); then : ; else mkdir -p $(INSTALLDIR); fi - cp $(ALLOBJS:.cmo=.cmi) $(INSTALLDIR) - if test -f *.mli ; then cp *.mli $(INSTALLDIR) ; fi - cp $(ALLOBJS:.cmo=.ml) $(INSTALLDIR) - cp $(MLLIBS) $(INSTALLDIR) - cp $(COBJS) $(INSTALLDIR) - if test ! -z "$(CLIBS)" ; then cp $(CLIBS) $(INSTALLDIR) ; fi - if test -f lablgtkmathview.cmxa; then \ - cp $(MLLIBS:.cma=.cmxa) $(MLLIBS:.cma=.a) \ - $(INSTALLDIR); fi - -lablgtkmathview.cma: $(MLOBJS) - $(LINKER) -a -custom -o $@ $(MLOBJS) $(GTKLIBS) -cclib "$(GTKMATHVIEWLIBS)" -cclib "$(MINIDOMLIBS)" -lablgtkmathview.cmxa: $(MLOBJS:.cmo=.cmx) - $(LINKOPT) -a -o $@ $(MLOBJS:.cmo=.cmx) $(GTKLIBS) -cclib "$(GTKMATHVIEWLIBS)" -cclib "$(MINIDOMLIBS)" - -ml_gtk.o: $(LABLGTKDIR)/gtk_tags.c $(LABLGTKDIR)/gtk_tags.h \ - $(LABLGTKDIR)/ml_gtk.h $(LABLGTKDIR)/ml_gdk.h $(LABLGTKDIR)/wrappers.h - -clean: - rm -f *.cm* *.o *.a *_tags.[ch] $(TARGETS) - cd $(MINIDOMDIR); make clean - cd $(TESTDIR); make clean - -include .depend diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/configure.mk b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/configure.mk deleted file mode 100644 index 8982371ee..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/configure.mk +++ /dev/null @@ -1,59 +0,0 @@ -# makefile for configuring lablGTK_mathview - -# Default compilers -CAMLC = ocamlc -CAMLOPT = ocamlopt - -# Default installation directories -BINDIR = `$(GETBINDIR)` -INSTALLDIR = $(LIBDIR)/lablgtk/mathview - -# Autoconf -GETLIBDIR = ocamlc -v | grep "^Standard" | sed 's/^.*: *//' -LIBDIR = `$(GETLIBDIR)` -GETBINDIR = $(GETLIBDIR) | sed -e 's|/lib/[^/]*$$|/bin|' -e 's|/lib$$|/bin|' -GETRANLIB = which ranlib 2>/dev/null | sed -e 's|.*/ranlib$$|!|' -e 's/^[^!]*$$/:/' -e 's/!/ranlib/' - -ifdef USE_GNOME -GTKGETCFLAGS = gtk-config --cflags`" -I"`gnome-config --includedir -GNOMELIBS = `gnome-config --libs gtkxmhtml` -else -GTKGETCFLAGS = gtk-config --cflags -endif - -GTKGETLIBS = gtk-config --libs - -configure: .depend config.make - -.depend: - ocamldep *.ml *.mli > .depend - -config.make: - @echo CAMLC=$(CAMLC) > config.make - @echo CAMLOPT=$(CAMLOPT) >> config.make - @echo USE_GL=$(USE_GL) >> config.make - @echo USE_GNOME=$(USE_GNOME) >> config.make - @echo USE_CC=$(USE_CC) >> config.make - @echo DEBUG=$(DEBUG) >> config.make - @echo CC=$(CC) >> config.make - @echo RANLIB=`$(GETRANLIB)` >> config.make - @echo LIBDIR=$(LIBDIR) >> config.make - @echo BINDIR=`$(GETBINDIR)` >> config.make - @echo INSTALLDIR=$(INSTALLDIR) >> config.make -# Luca: was -# @echo GTKCFLAGS=`$(GTKGETCFLAGS)` -I/usr/lib/ocaml/lablgtk >> config.make -# Luca: now - @echo GTKCFLAGS=`$(GTKGETCFLAGS)` -I$(LIBDIR)/lablgtk >> config.make - @echo GTKLIBS=`$(GTKGETLIBS)` | \ - sed -e 's/-l/-cclib &/g' -e 's/-[LRWr][^ ]*/-ccopt &/g' \ - >> config.make -# Luca: GtkMathView configuration - @echo GTKMATHVIEWCFLAGS=`gtkmathview-config --cflags` >> config.make - @echo MINIDOMCFLAGS=`minidom-config --cflags` >> config.make - @echo GTKMATHVIEWLIBS=`gtkmathview-config --libs` >> config.make - @echo MINIDOMLIBS=`minidom-config --libs` >> config.make -# Luca: end of GtkMathView configuration - @echo GNOMELIBS=$(GNOMELIBS) | \ - sed -e 's/-l/-cclib &/g' -e 's/-[LRWr][^ ]*/-ccopt &/g' \ - >> config.make - cat config.make diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/gMathView.ml b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/gMathView.ml deleted file mode 100644 index 951b8d46c..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/gMathView.ml +++ /dev/null @@ -1,79 +0,0 @@ -open Gaux -open Gtk -open Gtk_mathview -open GtkBase -open GtkMathView -open GObj - -exception ErrorLoadingFile of string;; -exception ErrorWritingFile of string;; -exception NoSelection;; - -class math_view_signals obj = object - inherit GContainer.container_signals obj - method clicked = GtkSignal.connect ~sgn:MathView.Signals.clicked obj ~after - method jump = GtkSignal.connect ~sgn:MathView.Signals.jump obj ~after - method selection_changed = - GtkSignal.connect ~sgn:MathView.Signals.selection_changed obj ~after -end - -class math_view obj = object - inherit GContainer.container (obj : Gtk_mathview.math_view obj) - method connect = new math_view_signals obj - method load ~filename = - if not (MathView.load obj ~filename) then raise (ErrorLoadingFile filename) - method unload = MathView.unload obj - method get_selection = MathView.get_selection obj - method set_selection (node : Ominidom.o_mDOMNode option) = MathView.set_selection obj node - method get_width = MathView.get_width obj - method get_height = MathView.get_height obj - method get_top = MathView.get_top obj - method set_top = MathView.set_top obj - method set_adjustments = - fun adj1 adj2 -> - MathView.set_adjustments obj (GData.as_adjustment adj1) - (GData.as_adjustment adj2) - method get_hadjustment = new GData.adjustment (MathView.get_hadjustment obj) - method get_vadjustment = new GData.adjustment (MathView.get_vadjustment obj) - method get_buffer = MathView.get_buffer obj - method get_frame = new GBin.frame (MathView.get_frame obj) - method set_font_size = MathView.set_font_size obj - method get_font_size = MathView.get_font_size obj - method set_anti_aliasing = MathView.set_anti_aliasing obj - method get_anti_aliasing = MathView.get_anti_aliasing obj - method set_kerning = MathView.set_kerning obj - method get_kerning = MathView.get_kerning obj - method set_log_verbosity = MathView.set_log_verbosity obj - method get_log_verbosity = MathView.get_log_verbosity obj - method export_to_postscript - ?(width = 595) ?(height = 822) ?(x_margin = 72) ?(y_margin = 72) - ?(disable_colors = false) ~filename () = - let result = MathView.export_to_postscript obj - ~width ~height ~x_margin ~y_margin ~disable_colors ~filename - in - if not result then raise (ErrorWritingFile filename) - method get_font_manager_type = MathView.get_font_manager_type obj - method set_font_manager_type ~fm_type = MathView.set_font_manager_type obj ~fm_type -end - -let math_view ?adjustmenth ?adjustmentv ?font_size ?font_manager ?border_width - ?width ?height ?packing ?show () = - let w = - MathView.create - ?adjustmenth:(may_map ~f:GData.as_adjustment adjustmenth) - ?adjustmentv:(may_map ~f:GData.as_adjustment adjustmentv) - () - in - Container.set w ?border_width ?width ?height; - let mathview = pack_return (new math_view w) ~packing ~show in - begin - match font_size with - | Some size -> mathview#set_font_size size - | None -> () - end; - begin - match font_manager with - | Some manager -> mathview#set_font_manager_type ~fm_type:manager - | None -> () - end; -;; diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/gtkMathView.ml b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/gtkMathView.ml deleted file mode 100644 index 4c893fab4..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/gtkMathView.ml +++ /dev/null @@ -1,118 +0,0 @@ -open Gtk -open Gtk_mathview -open Tags -open GtkBase -open Gpointer - -external mDOMNode_of_boxed_option : - Gpointer.boxed option -> Minidom.mDOMNode = - "ml_gtk_math_view_mDOMNode_of_bodex_option" - -external mDOMNode_option_of_boxed_option : - Gpointer.boxed option -> Minidom.mDOMNode option = - "ml_gtk_math_view_mDOMNode_option_of_bodex_option" - -let o_mDOMNode_of_mDOMNode node = new Ominidom.o_mDOMNode node - -let o_mDOMNode_option_of_mDOMNode_option = - function - | Some x -> Some (o_mDOMNode_of_mDOMNode x) - | None -> None - -let mDOMNode_option_of_o_mDOMNode_option = - function - | Some x -> Some (x#get_dom_node) - | None -> None - -module MathView = struct - exception NoSelection - - let cast w : math_view obj = Object.try_cast w "GtkMathView" - external create : Gtk.adjustment optobj -> Gtk.adjustment optobj -> - math_view obj = "ml_gtk_math_view_new" - let create ~adjustmenth ~adjustmentv () = - create (optboxed adjustmenth) (optboxed adjustmentv) - external load : [>`math_view] obj -> filename:string -> bool = - "ml_gtk_math_view_load" - external unload : [>`math_view] obj -> unit = - "ml_gtk_math_view_unload" - external raw_get_selection : [>`math_view] obj -> Minidom.mDOMNode option = - "ml_gtk_math_view_get_selection" - let get_selection obj = - o_mDOMNode_option_of_mDOMNode_option (raw_get_selection obj) - external raw_set_selection : [>`math_view] obj -> Minidom.mDOMNode option -> unit= - "ml_gtk_math_view_set_selection" - let set_selection obj node = - raw_set_selection obj (mDOMNode_option_of_o_mDOMNode_option node) - external get_width : [>`math_view] obj -> int = - "ml_gtk_math_view_get_width" - external get_height : [>`math_view] obj -> int = - "ml_gtk_math_view_get_height" - external get_top : [>`math_view] obj -> (int * int) = - "ml_gtk_math_view_get_top" - external set_top : [>`math_view] obj -> int -> int -> unit = - "ml_gtk_math_view_set_top" - external set_adjustments : [>`math_view] obj -> Gtk.adjustment obj -> Gtk.adjustment obj -> unit = - "ml_gtk_math_view_set_adjustments" - external get_hadjustment : [>`math_view] obj -> Gtk.adjustment obj = - "ml_gtk_math_view_get_hadjustment" - external get_vadjustment : [>`math_view] obj -> Gtk.adjustment obj = - "ml_gtk_math_view_get_vadjustment" - external get_buffer : [>`math_view] obj -> Gdk.pixmap = - "ml_gtk_math_view_get_buffer" - external get_frame : [>`math_view] obj -> [`frame] obj = - "ml_gtk_math_view_get_frame" - external set_font_size : [>`math_view] obj -> int -> unit = - "ml_gtk_math_view_set_font_size" - external get_font_size : [>`math_view] obj -> int = - "ml_gtk_math_view_get_font_size" - external set_anti_aliasing : [>`math_view] obj -> bool -> unit = - "ml_gtk_math_view_set_anti_aliasing" - external get_anti_aliasing : [>`math_view] obj -> bool = - "ml_gtk_math_view_get_anti_aliasing" - external set_kerning : [>`math_view] obj -> bool -> unit = - "ml_gtk_math_view_set_kerning" - external get_kerning : [>`math_view] obj -> bool = - "ml_gtk_math_view_get_kerning" - external set_log_verbosity : [>`math_view] obj -> int -> unit = - "ml_gtk_math_view_set_log_verbosity" - external get_log_verbosity : [>`math_view] obj -> int = - "ml_gtk_math_view_get_log_verbosity" - external export_to_postscript : - [>`math_view] obj -> width:int -> height:int -> x_margin:int -> y_margin:int -> disable_colors:bool -> filename:string -> bool = - "ml_gtk_math_view_export_to_postscript_bytecode" "ml_gtk_math_view_export_to_postscript_native" - external get_font_manager_type : [>`math_view] obj -> - [`font_manager_gtk | `font_manager_t1] = - "ml_gtk_math_view_get_font_manager_type" - external set_font_manager_type : [>`math_view] obj -> - fm_type:[`font_manager_gtk | `font_manager_t1] -> unit = - "ml_gtk_math_view_set_font_manager_type" - - module Signals = struct - open GtkSignal - - let clicked : ([>`math_view],_) t = - let marshal_clicked f _ = - function - [GtkArgv.POINTER node] -> f (o_mDOMNode_of_mDOMNode (mDOMNode_of_boxed_option node)) - | _ -> invalid_arg "GtkMathView.MathView.Signals.marshal_clicked" - in - { name = "clicked"; marshaller = marshal_clicked } - - let jump : ([>`math_view],_) t = - let marshal_jump f _ = - function - [GtkArgv.POINTER node] -> f (o_mDOMNode_of_mDOMNode (mDOMNode_of_boxed_option node)) - | _ -> invalid_arg "GtkMathView.MathView.Signals.marshal_jump" - in - { name = "jump"; marshaller = marshal_jump } - - let selection_changed : ([>`math_view],_) t = - let marshal_selection_changed f _ = - function - [GtkArgv.POINTER node] -> f (o_mDOMNode_option_of_mDOMNode_option (mDOMNode_option_of_boxed_option node)) - | _ -> invalid_arg "GtkMathView.MathView.Signals.marshal_selection_changed" - in - { name = "selection_changed"; marshaller = marshal_selection_changed } - end -end diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/gtk_mathview.ml b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/gtk_mathview.ml deleted file mode 100644 index 745a1ba82..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/gtk_mathview.ml +++ /dev/null @@ -1 +0,0 @@ -type math_view = [`widget|`container|`bin|`eventbox|`math_view] diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/minidom/.cvsignore b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/minidom/.cvsignore deleted file mode 100644 index 84bdd8eff..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/minidom/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -*.cmi *.cmo *.cmx test test.opt diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/minidom/Makefile b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/minidom/Makefile deleted file mode 100644 index 6fe73af6a..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/minidom/Makefile +++ /dev/null @@ -1,51 +0,0 @@ -LIBDIR = /usr/lib/ocaml -INSTALLDIR = $(LIBDIR)/minidom -OBJECTS = minidom.cmi minidom.cmo ml_minidom.o ominidom.cmi ominidom.cmo -OBJECTS_OPT = minidom.cmx ominidom.cmx -INST = minidom.o ominidom.o ml_minidom.h minidom.mli - -all: $(OBJECTS) test - -opt: $(OBJECTS_OPT) test.opt - -ml_minidom.o: ml_minidom.c - gcc -c -I/usr/lib/ocaml/caml/ `glib-config --cflags` `minidom-config --cflags` $< - -minidom.cmi: minidom.mli - ocamlc -c $< - -minidom.cmo: minidom.ml minidom.cmi - ocamlc -c $< - -minidom.cmx: minidom.ml minidom.cmi - ocamlopt -c $< - -ominidom.cmi: ominidom.mli - ocamlc -c $< - -ominidom.cmo: ominidom.ml - ocamlc -c $< - -ominidom.cmx: ominidom.ml - ocamlopt -c $< - -test.cmo: test.ml minidom.cmo - ocamlc -c test.ml - -test.cmx: test.ml minidom.cmx - ocamlopt -c test.ml - -test: test.cmo minidom.cmo ml_minidom.o - ocamlc -custom -o test minidom.cmo test.cmo ml_minidom.o \ - -cclib "`glib-config --libs` `minidom-config --libs`" - -test.opt: test.cmx minidom.cmx ml_minidom.o - ocamlopt -o test.opt minidom.cmx test.cmx ml_minidom.o \ - -cclib "`glib-config --libs` `minidom-config --libs`" - -install: - if test -d $(INSTALLDIR); then : ; else mkdir -p $(INSTALLDIR); fi - cp $(OBJECTS) $(OBJECTS_OPT) $(INST) $(INSTALLDIR) - -clean: - rm -f *.o *.cm? test test.opt diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/minidom/minidom.ml b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/minidom/minidom.ml deleted file mode 100644 index 31e677b3f..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/minidom/minidom.ml +++ /dev/null @@ -1,61 +0,0 @@ - -type mDOMString -type mDOMDoc -type mDOMNode -type mDOMAttr -type mDOMEntity - -external string_of_mDOMString : mDOMString -> string = "ml_string_of_mDOMString" -external mDOMString_of_string : string -> mDOMString = "ml_mDOMString_of_string" -external mDOMString_eq : string -> string -> bool = "ml_mDOMString_eq" - -external doc_load : string -> mDOMDoc = "ml_doc_load" -external doc_unload : mDOMDoc -> unit = "ml_doc_unload" - -external doc_new : mDOMString -> mDOMDoc = "ml_doc_new" -external doc_get_root_node : mDOMDoc -> mDOMNode = "ml_doc_get_root_node" - -external doc_add_entity : mDOMDoc -> mDOMString -> mDOMString -> mDOMEntity = "ml_doc_add_entity" -external doc_get_entity : mDOMDoc -> mDOMString -> mDOMEntity option = "ml_doc_get_entity" -external doc_get_predefined_entity : mDOMDoc -> mDOMString -> mDOMEntity option = "ml_doc_get_predefined_entity" -external entity_get_content : mDOMEntity -> mDOMString = "ml_entity_get_content" - -external node_is_text : mDOMNode -> bool = "ml_node_is_text" -external node_is_element : mDOMNode -> bool = "ml_node_is_element" -external node_is_blank : mDOMNode -> bool = "ml_node_is_blank" -external node_is_entity_ref : mDOMNode -> bool = "ml_node_is_entity_ref" -external node_get_type : mDOMNode -> int = "ml_node_get_type" -external node_get_name : mDOMNode -> mDOMString option = "ml_node_get_name" -external node_get_ns_uri : mDOMNode -> mDOMString option = "ml_node_get_ns_uri" -external node_get_attribute : mDOMNode -> mDOMString -> mDOMString option = "ml_node_get_attribute" -external node_get_attribute_ns : mDOMNode -> mDOMString -> mDOMString -> mDOMString option = "ml_node_get_attribute_ns" -external node_get_content : mDOMNode -> mDOMString option = "ml_node_get_content" -external node_get_parent : mDOMNode -> mDOMNode option = "ml_node_get_parent" -external node_get_prev_sibling : mDOMNode -> mDOMNode option = "ml_node_get_prev_sibling" -external node_get_next_sibling : mDOMNode -> mDOMNode option = "ml_node_get_next_sibling" -external node_get_first_child : mDOMNode -> mDOMNode option = "ml_node_get_first_child" -external node_get_first_attribute : mDOMNode -> mDOMAttr option = "ml_node_get_first_attribute" -external node_is_first : mDOMNode -> bool = "ml_node_is_first" -external node_is_last : mDOMNode -> bool = "ml_node_is_last" - -external attr_get_name : mDOMAttr -> mDOMString option = "ml_attr_get_name" -external attr_get_ns_uri : mDOMAttr -> mDOMString option = "ml_attr_get_ns_uri" -external attr_get_value : mDOMAttr -> mDOMString option = "ml_attr_get_value" -external attr_get_prev_sibling : mDOMAttr -> mDOMAttr option = "ml_attr_get_prev_sibling" -external attr_get_next_sibling : mDOMAttr -> mDOMAttr option = "ml_attr_get_next_sibling" -external attr_get_parent : mDOMAttr -> mDOMNode option = "ml_attr_get_parent" - -let rec node_list_of_node_first = - function None -> [] - | Some node -> node :: (node_list_of_node_first (node_get_next_sibling node)) - -let rec attr_list_of_attr_first = - function None -> [] - | Some attr -> attr :: (attr_list_of_attr_first (attr_get_next_sibling attr)) - -let node_get_children node = - (node_list_of_node_first (node_get_first_child node)) - -let node_get_attributes node = - (attr_list_of_attr_first (node_get_first_attribute node)) - diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/minidom/minidom.mli b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/minidom/minidom.mli deleted file mode 100644 index 0b655955b..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/minidom/minidom.mli +++ /dev/null @@ -1,50 +0,0 @@ - -type mDOMString -type mDOMDoc -type mDOMNode -type mDOMAttr -type mDOMEntity - -external string_of_mDOMString : mDOMString -> string = "ml_string_of_mDOMString" -external mDOMString_of_string : string -> mDOMString = "ml_mDOMString_of_string" -external mDOMString_eq : string -> string -> bool = "ml_mDOMString_eq" - -external doc_load : string -> mDOMDoc = "ml_doc_load" -external doc_unload : mDOMDoc -> unit = "ml_doc_unload" - -external doc_new : mDOMString -> mDOMDoc = "ml_doc_new" -external doc_get_root_node : mDOMDoc -> mDOMNode = "ml_doc_get_root_node" - -external doc_add_entity : doc:mDOMDoc -> name:mDOMString -> content:mDOMString -> mDOMEntity = "ml_doc_add_entity" -external doc_get_entity : doc:mDOMDoc -> name:mDOMString -> mDOMEntity option = "ml_doc_get_entity" -external doc_get_predefined_entity : doc:mDOMDoc -> name:mDOMString -> mDOMEntity option = "ml_doc_get_predefined_entity" -external entity_get_content : mDOMEntity -> mDOMString = "ml_entity_get_content" - -external node_is_text : mDOMNode -> bool = "ml_node_is_text" -external node_is_element : mDOMNode -> bool = "ml_node_is_element" -external node_is_blank : mDOMNode -> bool = "ml_node_is_blank" -external node_is_entity_ref : mDOMNode -> bool = "ml_node_is_entity_ref" -external node_get_type : mDOMNode -> int = "ml_node_get_type" -external node_get_name : mDOMNode -> mDOMString option = "ml_node_get_name" -external node_get_ns_uri : mDOMNode -> mDOMString option = "ml_node_get_ns_uri" -external node_get_attribute : node:mDOMNode -> name:mDOMString -> mDOMString option = "ml_node_get_attribute" -external node_get_attribute_ns : node:mDOMNode -> name:mDOMString -> ns_uri:mDOMString -> mDOMString option = "ml_node_get_attribute_ns" -external node_get_content : mDOMNode -> mDOMString option = "ml_node_get_content" -external node_get_parent : mDOMNode -> mDOMNode option = "ml_node_get_parent" -external node_get_prev_sibling : mDOMNode -> mDOMNode option = "ml_node_get_prev_sibling" -external node_get_next_sibling : mDOMNode -> mDOMNode option = "ml_node_get_next_sibling" -external node_get_first_child : mDOMNode -> mDOMNode option = "ml_node_get_first_child" -external node_get_first_attribute : mDOMNode -> mDOMAttr option = "ml_node_get_first_attribute" -external node_is_first : mDOMNode -> bool = "ml_node_is_first" -external node_is_last : mDOMNode -> bool = "ml_node_is_last" - -external attr_get_name : mDOMAttr -> mDOMString option = "ml_attr_get_name" -external attr_get_ns_uri : mDOMAttr -> mDOMString option = "ml_attr_get_ns_uri" -external attr_get_value : mDOMAttr -> mDOMString option = "ml_attr_get_value" -external attr_get_prev_sibling : mDOMAttr -> mDOMAttr option = "ml_attr_get_prev_sibling" -external attr_get_next_sibling : mDOMAttr -> mDOMAttr option = "ml_attr_get_next_sibling" -external attr_get_parent : mDOMAttr -> mDOMNode option = "ml_attr_get_parent" - -val node_get_children : mDOMNode -> mDOMNode list -val node_get_attributes : mDOMNode -> mDOMAttr list - diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/minidom/ml_minidom.c b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/minidom/ml_minidom.c deleted file mode 100644 index 10626143c..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/minidom/ml_minidom.c +++ /dev/null @@ -1,288 +0,0 @@ - -#include -#include -#include - -#include "minidom.h" - -#define Val_ptr(p) ((value) (p)) -#define Val_option(p,f) ((p != NULL) ? ml_some(f(p)) : Val_unit) -#define Val_mDOMString(s) (copy_string((char*) (s))) -#define mDOMString_val(v) ((mDOMStringRef) String_val(v)) - -static value -ml_some(value v) -{ - CAMLparam1(v); - value ret = alloc_small(1,0); - Field(ret,0) = v; - CAMLreturn(ret); -} - -value -ml_string_of_mDOMString(value s) -{ - CAMLparam1(s); - CAMLreturn(s); -} - -value -ml_mDOMString_of_string(value s) -{ - CAMLparam1(s); - CAMLreturn(s); -} - -value -ml_doc_load(value file_name) -{ - mDOMDocRef doc_ref; - - CAMLparam1(file_name); - - doc_ref = mdom_load(String_val(file_name), FALSE, NULL); - if (doc_ref == NULL) failwith("minidom: could not load document"); - - CAMLreturn((value) doc_ref); -} - -value -ml_doc_unload(value doc) -{ - CAMLparam1(doc); - - mdom_unload((mDOMDocRef) doc); - - CAMLreturn(Val_unit); -} - -value -ml_doc_new(value s) -{ - mDOMDocRef doc_ref; - - CAMLparam1(s); - - doc_ref = mdom_doc_new(mDOMString_val(s)); - if (doc_ref == NULL) failwith("minidom: could not create new document"); - - CAMLreturn((value) doc_ref); -} - - -value -ml_doc_get_root_node(value doc) -{ - mDOMNodeRef root; - - CAMLparam1(doc); - root = mdom_doc_get_root_node((mDOMDocRef) doc); - if (root == NULL) failwith("minidom: document has no root node!"); - - CAMLreturn((value) root); -} - -value -ml_doc_add_entity(value doc, value name, value content) -{ - mDOMEntityRef ent; - - CAMLparam3(doc, name, content); - ent = mdom_doc_add_entity((mDOMDocRef) doc, mDOMString_val(name), mDOMString_val(content)); - if (ent == NULL) failwith("minidom: could not add entity"); - - CAMLreturn((value) ent); -} - -value -ml_doc_get_entity(value doc, value name) -{ - mDOMEntityRef ent; - - CAMLparam2(doc, name); - ent = mdom_doc_get_entity((mDOMDocRef) doc, mDOMString_val(name)); - - CAMLreturn(Val_option(ent, Val_ptr)); -} - -value -ml_doc_get_predefined_entity(value name) -{ - mDOMEntityRef ent; - - CAMLparam1(name); - ent = mdom_get_predefined_entity(mDOMString_val(name)); - - CAMLreturn(Val_option(ent, Val_ptr)); -} - -value -ml_entity_get_content(value ent) -{ - CAMLparam1(ent); - CAMLreturn(Val_mDOMString(mdom_entity_get_content((mDOMEntityRef) ent))); -} - -value -ml_node_is_text(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_bool(mdom_node_is_text((mDOMNodeRef) node))); -} - -value -ml_node_is_element(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_bool(mdom_node_is_element((mDOMNodeRef) node))); -} - -value -ml_node_is_blank(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_bool(mdom_node_is_blank((mDOMNodeRef) node))); -} - -value -ml_node_is_entity_ref(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_bool(mdom_node_is_entity_ref((mDOMNodeRef) node))); -} - -value -ml_node_get_type(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_int(mdom_node_get_type((mDOMNodeRef) node))); -} - -value -ml_node_get_name(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_option(mdom_node_get_name((mDOMNodeRef) node), Val_mDOMString)); -} - -value -ml_node_get_content(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_option(mdom_node_get_content((mDOMNodeRef) node), Val_mDOMString)); -} - -value -ml_node_get_ns_uri(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_option(mdom_node_get_ns_uri((mDOMNodeRef) node), Val_mDOMString)); -} - -value -ml_node_get_attribute(value node, value name) -{ - CAMLparam2(node,name); - CAMLreturn(Val_option(mdom_node_get_attribute((mDOMNodeRef) node, String_val(name)), Val_mDOMString)); -} - -value -ml_node_get_attribute_ns(value node, value name, value ns_uri) -{ - CAMLparam2(node,name); - CAMLreturn(Val_option(mdom_node_get_attribute_ns((mDOMNodeRef) node, - String_val(name), - String_val(ns_uri)), Val_mDOMString)); -} - -value -ml_node_get_parent(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_option(mdom_node_get_parent((mDOMNodeRef) node), Val_ptr)); -} - -value -ml_node_get_prev_sibling(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_option(mdom_node_get_prev_sibling((mDOMNodeRef) node), Val_ptr)); -} - -value -ml_node_get_next_sibling(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_option(mdom_node_get_next_sibling((mDOMNodeRef) node), Val_ptr)); -} - -value -ml_node_get_first_child(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_option(mdom_node_get_first_child((mDOMNodeRef) node), Val_ptr)); -} - -value -ml_node_get_first_attribute(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_option(mdom_node_get_first_attribute((mDOMNodeRef) node), Val_ptr)); -} - -value -ml_node_is_first(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_bool(mdom_node_is_first((mDOMNodeRef) node))); -} - -value -ml_node_is_last(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_bool(mdom_node_is_last((mDOMNodeRef) node))); -} - -value -ml_attr_get_name(value attr) -{ - CAMLparam1(attr); - CAMLreturn(Val_option(mdom_attr_get_name((mDOMAttrRef) attr), Val_mDOMString)); -} - -value -ml_attr_get_ns_uri(value attr) -{ - CAMLparam1(attr); - CAMLreturn(Val_option(mdom_attr_get_ns_uri((mDOMAttrRef) attr), Val_mDOMString)); -} - -value -ml_attr_get_value(value attr) -{ - CAMLparam1(attr); - CAMLreturn(Val_option(mdom_attr_get_value((mDOMAttrRef) attr), Val_mDOMString)); -} - -value -ml_attr_get_prev_sibling(value attr) -{ - CAMLparam1(attr); - CAMLreturn(Val_option(mdom_attr_get_prev_sibling((mDOMAttrRef) attr), Val_ptr)); -} - -value -ml_attr_get_next_sibling(value attr) -{ - CAMLparam1(attr); - CAMLreturn(Val_option(mdom_attr_get_next_sibling((mDOMAttrRef) attr), Val_ptr)); -} - -value -ml_attr_get_parent(value attr) -{ - CAMLparam1(attr); - CAMLreturn(Val_option(mdom_attr_get_parent((mDOMAttrRef) attr), Val_ptr)); -} - diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/minidom/ml_minidom.h b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/minidom/ml_minidom.h deleted file mode 100644 index d22479964..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/minidom/ml_minidom.h +++ /dev/null @@ -1,18 +0,0 @@ - -#ifndef ml_minidom_h -#define ml_minidom_h - -#define Val_ptr(p) ((value) (p)) -#ifndef Val_option -#define Val_option(p,f) ((p != NULL) ? ml_some(f(p)) : Val_unit) -#endif /* Val_option */ -#define Val_mDOMString(s) (copy_string((char*) (s))) -#define mDOMString_val(v) ((mDOMStringRef) String_val(v)) -#define mDOMNode_val(v) ((mDOMNodeRef) v) - -#define mDOMNode_option_mDOMNodeRef(p) (((p) != NULL) ? ml_some((value) (p)) : Val_unit) -#define mDOMNodeRef_mDOMNode_option(v) ((v == Val_unit) ? NULL : (mDOMNodeRef)Field((v),0)) -#define Val_mDOMNodeRef(p) (mDOMNode_option_mDOMNodeRef(p)) -#define mDOMNodeRef_val(v) (mDOMNodeRef_mDOMNode_option(v)) - -#endif /* ml_minidom_h */ diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/minidom/ominidom.ml b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/minidom/ominidom.ml deleted file mode 100644 index 85ad2e4ed..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/minidom/ominidom.ml +++ /dev/null @@ -1,156 +0,0 @@ - -exception Node_has_no_parent;; -exception Node_has_no_sibling of string;; -exception Node_has_no_children;; -exception Node_has_no_attributes;; -exception Attribute_has_no_sibling of string;; -exception Attribute_has_no_parent;; -exception Undefined_entity;; - -let option_to_exception v e = - match v with - Some x -> x - | None -> raise e -;; - -class o_mDOMString (str: Minidom.mDOMString) = - object - method get_dom_string = str - method get_string = Minidom.string_of_mDOMString str - end;; - -let o_mDOMString_of_string str = - new o_mDOMString (Minidom.mDOMString_of_string str) - -class o_mDOMEntity (ent : Minidom.mDOMEntity) = - object - method get_dom_entity = ent - method get_content = - new o_mDOMString (Minidom.entity_get_content ent) - end -;; - -class o_mDOMDoc (doc : Minidom.mDOMDoc) = - object - method get_dom_doc = doc - - method get_root_node = - new o_mDOMNode (Minidom.doc_get_root_node doc) - method add_entity (name : o_mDOMString) (value : o_mDOMString) = - new o_mDOMEntity - (Minidom.doc_add_entity doc - (name#get_dom_string) (value#get_dom_string) - ) - method get_entity (name : o_mDOMString) = - match Minidom.doc_get_entity doc (name#get_dom_string) with - | Some x -> new o_mDOMEntity x - | None -> raise Undefined_entity - method get_predefined_entity (name : o_mDOMString) = - match Minidom.doc_get_predefined_entity doc (name#get_dom_string) with - | Some x -> new o_mDOMEntity x - | None -> raise Undefined_entity - end -and o_mDOMNode (node : Minidom.mDOMNode) = - object - method get_dom_node = node - - method is_text = Minidom.node_is_text node - method is_element = Minidom.node_is_element node - method is_blank = Minidom.node_is_blank node - method is_entity_ref = Minidom.node_is_entity_ref node - - method get_type = Minidom.node_get_type node - method get_name = - match Minidom.node_get_name node with - | Some x -> Some (new o_mDOMString x) - | None -> None - method get_ns_uri = - match Minidom.node_get_ns_uri node with - | Some x -> Some (new o_mDOMString x) - | None -> None - method get_attribute (name : o_mDOMString) = - match Minidom.node_get_attribute node (name#get_dom_string) with - | Some x -> Some (new o_mDOMString x) - | None -> None - method get_attribute_ns (name : o_mDOMString) (uri : o_mDOMString) = - match - Minidom.node_get_attribute_ns node - (name#get_dom_string) (uri#get_dom_string) - with - | Some x -> Some (new o_mDOMString x) - | None -> None - method get_content = - match Minidom.node_get_content node with - | Some x -> Some (new o_mDOMString x) - | None -> None - method get_parent = - new o_mDOMNode - (option_to_exception (Minidom.node_get_parent node) Node_has_no_parent) - method get_prev_sibling = - new o_mDOMNode - (option_to_exception - (Minidom.node_get_prev_sibling node) - (Node_has_no_sibling "left") - ) - method get_next_sibling = - new o_mDOMNode - (option_to_exception - (Minidom.node_get_next_sibling node) - (Node_has_no_sibling "right") - ) - method get_first_child = - new o_mDOMNode - (option_to_exception - (Minidom.node_get_first_child node) - (Node_has_no_children) - ) - method get_first_attribute = - new o_mDOMAttr - (option_to_exception - (Minidom.node_get_first_attribute node) - (Node_has_no_attributes) - ) - method is_first = Minidom.node_is_first node - method is_last = Minidom.node_is_last node - - method get_children = - List.map (function x -> new o_mDOMNode x) (Minidom.node_get_children node) - method get_attributes = List.map - (function x -> new o_mDOMAttr x) (Minidom.node_get_attributes node) - end -and o_mDOMAttr (attr : Minidom.mDOMAttr) = - object - method get_dom_attr = attr - - method get_name = - match Minidom.attr_get_name attr with - | Some x -> Some (new o_mDOMString x) - | None -> None - method get_ns_uri = - match Minidom.attr_get_ns_uri attr with - | Some x -> Some (new o_mDOMString x) - | None -> None - method get_value = - match Minidom.attr_get_value attr with - | Some x -> Some (new o_mDOMString x) - | None -> None - method get_prev_sibling = - new o_mDOMAttr - (option_to_exception - (Minidom.attr_get_prev_sibling attr) - (Attribute_has_no_sibling "left") - ) - method get_next_sibling = - new o_mDOMAttr - (option_to_exception - (Minidom.attr_get_next_sibling attr) - (Attribute_has_no_sibling "right") - ) - method get_parent = - new o_mDOMNode - (option_to_exception - (Minidom.attr_get_parent attr) Attribute_has_no_parent - ) - end -;; - diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/minidom/test.ml b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/minidom/test.ml deleted file mode 100644 index 3c7a092e9..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/minidom/test.ml +++ /dev/null @@ -1,84 +0,0 @@ - -let doc = Minidom.doc_load "test.xml" - -let root = Minidom.doc_get_root_node doc - -let check_attribute_ns attr = - Printf.printf "\n\n"; - let ns_uri = Minidom.attr_get_ns_uri attr - and attr_name = Minidom.attr_get_name attr - and attr_value = Minidom.attr_get_value attr - and parent = Minidom.attr_get_parent attr - in - match parent,ns_uri,attr_name,attr_value with - Some parent_node,Some uri,Some attribute_name,Some attribute_value -> - let attr_value = Minidom.node_get_attribute_ns parent_node attribute_name uri - in begin - match attr_value with - Some attr1 -> - Printf.printf "found the attribute with ns %s (was %s)\n" - (Minidom.string_of_mDOMString attr1) (Minidom.string_of_mDOMString attribute_value) - | None -> - Printf.printf "attribute not found (uri was %s)!!!!\n" (Minidom.string_of_mDOMString uri) - end - | _ -> - Printf.printf "parent_node == NULL || uri == NULL || attribute_name == NULL || attribute_value == NULL\n" -;; - -let print_attribute attr = - check_attribute_ns attr; - let ns_uri = Minidom.attr_get_ns_uri attr - in - begin - match ns_uri with - Some uri -> Printf.printf " %s:" (Minidom.string_of_mDOMString uri); - | None -> () - end; - match ((Minidom.attr_get_name attr), (Minidom.attr_get_value attr)) with - (Some attr_name, Some attr_value) -> - Printf.printf " %s=\"%s\"" (Minidom.string_of_mDOMString attr_name) (Minidom.string_of_mDOMString attr_value) - | (Some attr_name, _) -> - Printf.printf " ??? attribute %s has no value !!!" (Minidom.string_of_mDOMString attr_name) - | (_,_) -> - Printf.printf " ??? very strange attribute !!!" -;; - -let rec print_node n node = - if Minidom.node_is_blank node then () - else if Minidom.node_is_element node then begin - match Minidom.node_get_name node with - Some node_name -> - begin - let children = Minidom.node_get_children node - and attributes = Minidom.node_get_attributes node - and ns_uri = Minidom.node_get_ns_uri node - and is_first,is_last = (Minidom.node_is_first node), (Minidom.node_is_last node) - in - for i = 1 to n do print_char ' ' done; - Printf.printf "<"; - begin - match ns_uri with - Some uri -> Printf.printf "%s:" (Minidom.string_of_mDOMString uri) - | None -> () - end; - Printf.printf "%s" (Minidom.string_of_mDOMString node_name); - List.iter print_attribute attributes; - Printf.printf ">\n"; - List.iter (print_node (n + 2)) children; - for i = 1 to n do print_char ' ' done; - Printf.printf "\n" (Minidom.string_of_mDOMString node_name) - end - | None -> Printf.printf "??? this node has no name !!!\n" - end else if Minidom.node_is_text node then begin - match Minidom.node_get_content node with - Some node_content -> - for i = 1 to n do print_char ' ' done; - Printf.printf "%s\n" (Minidom.string_of_mDOMString node_content) - | None -> Printf.printf "??? this node has no content !!!\n" - end else begin - Printf.printf "don't know how to manage a node with type %d\n" (Minidom.node_get_type node) - end -;; - -print_node 0 root;; - diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/minidom/test.xml b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/minidom/test.xml deleted file mode 100644 index 83d2eef68..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/minidom/test.xml +++ /dev/null @@ -1,505 +0,0 @@ - - - - - - - - DEFINITION and_ind() OF TYPE - - - - - - - - __ - - - - - - - - ( - - - - - Π - A - : - - Prop - - - - - - - . - - - - - Π - B - : - - Prop - - - - - - - . - - - - - Π - P - : - - Prop - - - - - - - . - - - - - Π - f - : - - ( - A - - - ( - B - - P - ) - - ) - - - - - - - . - - Π - a - : - - ( - and - - _ - - A - - _ - - B - ) - - . - P - - - - - - - - - - - - - - - - - - - - - - - - - - - - :> - - Prop - - - - - - - - ) - - - - - - - - cast - - prod - - A - - - Prop - - - - - prod - - B - - - Prop - - - - - prod - - P - - - Prop - - - - - prod - - f - - - arrow - A - - arrow - B - P - - - - - - prod - - a - - - app - and - A - B - - - - P - - - - - - - Prop - - - - - - - - - - - AS - - - - - - - - __ - - - - - - - λ - A - : - - Prop - - - - - - - . - - - - - λ - B - : - - Prop - - - - - - - . - - - - - λ - P - : - - Prop - - - - - - - . - - - - - λ - f - : - - ( - A - - - ( - B - - P - ) - - ) - - - - - - - . - - - - - λ - a - : - - ( - and - - _ - - A - - _ - - B - ) - - - - - - - . - - < - P - > - CASES - - _ - - a - - _ - - OF - - ( - conj - - _ - - $1 - - _ - - $2 - ) - - - - ( - f - - _ - - $1 - - _ - - $2 - ) - - - _ - - END - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - A - - - Prop - - - - - - B - - - Prop - - - - - - P - - - Prop - - - - - - f - - - arrow - A - - arrow - B - P - - - - - - - a - - - app - and - A - B - - - - - mutcase - P - a - - app - conj - $1 - $2 - - - app - f - $1 - $2 - - - - - - - - - - - - - - diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/ml_gtk_mathview.c b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/ml_gtk_mathview.c deleted file mode 100644 index 3c86f0057..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/ml_gtk_mathview.c +++ /dev/null @@ -1,159 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include -#include -#include -#include -#include - -#include -#include "minidom/ml_minidom.h" - -/* : Next row should be put in a .h of lablgtk. */ -#define GtkAdjustment_val(val) check_cast(GTK_ADJUSTMENT,val) - -#define GtkMathView_val(val) check_cast(GTK_MATH_VIEW,val) - -#define FontManagerId_val(val) Int_val(val) -#define Val_FontManagerId(val) Val_int(val) - -FontManagerId -font_manager_id_of_value(value v) -{ - if (v == hash_variant("font_manager_gtk")) return FONT_MANAGER_GTK; - else if (v == hash_variant("font_manager_t1")) return FONT_MANAGER_T1; - else assert(0); -} - -value -value_of_font_manager_id(FontManagerId id) -{ - switch (id) { - case FONT_MANAGER_GTK: - return hash_variant("font_manager_gtk"); - case FONT_MANAGER_T1: - return hash_variant("font_manager_t1"); - default: - assert(0); - break; - } -} - -ML_2 (gtk_math_view_new,GtkAdjustment_val, GtkAdjustment_val, Val_GtkWidget_sink) -ML_2 (gtk_math_view_load, GtkMathView_val, String_val, Val_bool) -ML_1 (gtk_math_view_unload, GtkMathView_val, Unit) -/*ML_1 (gtk_math_view_dump, GtkMathView_val, Unit)*/ -ML_1 (gtk_math_view_get_selection, GtkMathView_val, Val_mDOMNodeRef) -ML_2 (gtk_math_view_set_selection, GtkMathView_val, mDOMNodeRef_val, Unit) -ML_1 (gtk_math_view_get_width, GtkMathView_val, Val_int) -ML_1 (gtk_math_view_get_height, GtkMathView_val, Val_int) -ML_3 (gtk_math_view_set_top, GtkMathView_val, Int_val, Int_val, Unit) -ML_3 (gtk_math_view_set_adjustments, GtkMathView_val, GtkAdjustment_val, GtkAdjustment_val, Unit) -ML_1 (gtk_math_view_get_hadjustment, GtkMathView_val, Val_GtkWidget) -ML_1 (gtk_math_view_get_vadjustment, GtkMathView_val, Val_GtkWidget) -ML_1 (gtk_math_view_get_buffer, GtkMathView_val, Val_GdkPixmap) -ML_1 (gtk_math_view_get_frame, GtkMathView_val, Val_GtkWidget) -ML_2 (gtk_math_view_set_font_size, GtkMathView_val, Int_val, Unit) -ML_1 (gtk_math_view_get_font_size, GtkMathView_val, Val_int) -ML_2 (gtk_math_view_set_anti_aliasing, GtkMathView_val, Bool_val, Unit) -ML_1 (gtk_math_view_get_anti_aliasing, GtkMathView_val, Val_bool) -ML_2 (gtk_math_view_set_kerning, GtkMathView_val, Bool_val, Unit) -ML_1 (gtk_math_view_get_kerning, GtkMathView_val, Val_bool) -ML_2 (gtk_math_view_set_log_verbosity, GtkMathView_val, Int_val, Unit) -ML_1 (gtk_math_view_get_log_verbosity, GtkMathView_val, Val_int) -ML_2 (gtk_math_view_set_font_manager_type, GtkMathView_val, font_manager_id_of_value, Unit) -ML_1 (gtk_math_view_get_font_manager_type, GtkMathView_val, value_of_font_manager_id) - -value -ml_gtk_math_view_export_to_postscript_native(value arg1, - value w, value h, value x0, value y0, value disable_colors, value arg2) -{ - CAMLparam5(arg1,w,h,x0,y0); - CAMLxparam2(disable_colors, arg2); - - char *filename; - FILE *fd; - int res; - filename = String_val (arg2); - if ((fd = fopen(filename, "w"))) { - gtk_math_view_export_to_postscript(GtkMathView_val (arg1), - Int_val(w), Int_val(h), Int_val(x0), Int_val(y0), Bool_val(disable_colors), fd); - fclose (fd); - res = 1; - } else { - fprintf(stderr, "Error opening file %s for writing\n", filename); - res = 0; - } - CAMLreturn (Val_bool(res)); -} - -value ml_gtk_math_view_export_to_postscript_bytecode (value* arg, int argn) -{ - return ml_gtk_math_view_export_to_postscript_native(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], arg[6]); -} - -value ml_gtk_math_view_get_top (value arg1) -{ - CAMLparam1(arg1); - CAMLlocal1 (result); - int x, y; - gtk_math_view_get_top(GtkMathView_val (arg1), &x, &y); - result = alloc(2, 0); - Store_field(result, 0, Val_int(x)); - Store_field(result, 0, Val_int(y)); - CAMLreturn (result); -} - - -value ml_gtk_math_view_mDOMNode_of_bodex_option (value arg1) -{ - CAMLparam1(arg1); - - mDOMNodeRef nr; - CAMLlocal1 (tmp); - CAMLlocal1 (optval); - CAMLlocal1 (res); - - if (arg1==Val_int(0)) { - assert(0); - } else { - tmp = Field(arg1, 0); - nr = (mDOMNodeRef) Field(tmp, 1); - } - optval = Val_mDOMNodeRef(nr); - if (optval==Val_int(0)) { - assert(0); - } else { - res = Field(optval, 0); - } - - CAMLreturn(res); -} - -value ml_gtk_math_view_mDOMNode_option_of_bodex_option (value arg1) -{ - CAMLparam1(arg1); - - mDOMNodeRef nr; - CAMLlocal1 (tmp); - - if (arg1==Val_int(0)) { - nr=NULL; - } else { - tmp = Field(arg1, 0); - nr = (mDOMNodeRef) Field(tmp, 1); - } - - CAMLreturn(Val_mDOMNodeRef(nr)); -} diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/test/.cvsignore b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/test/.cvsignore deleted file mode 100644 index 1968614b7..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/test/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -*.cmo *.cmi *.cmx t1lib.log test test.opt test.ps test.o diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/test/Makefile b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/test/Makefile deleted file mode 100644 index d631d239f..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/test/Makefile +++ /dev/null @@ -1,45 +0,0 @@ -LABLGTK_DIR = /usr/lib/ocaml/lablgtk -LABLGTK_MATHVIEW_DIR = .. -MINIDOM_DIR = ../minidom -OCAMLC = ocamlc -I $(LABLGTK_DIR) -I $(LABLGTK_MATHVIEW_DIR) \ - -I $(MINIDOM_DIR) -I mlmathview -OCAMLOPT = ocamlopt -I $(LABLGTK_DIR) -I $(LABLGTK_MATHVIEW_DIR) \ - -I $(MINIDOM_DIR) -I mlmathview - -all: test -opt: test.opt - -test: test.cmo - $(OCAMLC) -custom -o test lablgtk.cma gtkInit.cmo \ - $(MINIDOM_DIR)/minidom.cmo \ - $(MINIDOM_DIR)/ominidom.cmo \ - $(LABLGTK_MATHVIEW_DIR)/lablgtkmathview.cma \ - -cclib "$(MINIDOM_DIR)/ml_minidom.o" \ - test.cmo \ - -cclib "-lstr -L/usr/lib -L/usr/X11R6/lib -lgtk -lgdk \ - -rdynamic -lgmodule -lglib -ldl -lXi -lXext -lX11 -lm \ - -L/usr/local/lib/gtkmathview -lgtkmathview \ - $(LABLGTK_MATHVIEW_DIR)/ml_gtk_mathview.o" - -test.opt: test.cmx - $(OCAMLOPT) -o test.opt lablgtk.cmxa gtkInit.cmx \ - $(MINIDOM_DIR)/minidom.cmx \ - $(MINIDOM_DIR)/ominidom.cmx \ - $(LABLGTK_MATHVIEW_DIR)/lablgtkmathview.cmxa \ - -cclib "$(MINIDOM_DIR)/ml_minidom.o" \ - test.cmx \ - -cclib "-lstr -L/usr/lib -L/usr/X11R6/lib -lgtk -lgdk \ - -rdynamic -lgmodule -lglib -ldl -lXi -lXext -lX11 -lm \ - -L/usr/local/lib/gtkmathview -lgtkmathview \ - $(LABLGTK_MATHVIEW_DIR)/ml_gtk_mathview.o" - -.SUFFIXES: .ml .mli .cmo .cmi .cmx -.ml.cmo: - $(OCAMLC) -c $< -.mli.cmi: - $(OCAMLC) -c $< -.ml.cmx: - $(OCAMLOPT) -c $< - -clean: - rm -f *.cm[iox] *.o test test.opt t1lib.log test.ps diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/test/t1.config b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/test/t1.config deleted file mode 100644 index afb669e95..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/test/t1.config +++ /dev/null @@ -1,3 +0,0 @@ -ENCODING=. -AFM=/usr/share/texmf/fonts/afm/ -TYPE1=/usr/share/texmf/fonts/type1/bluesky/cm/:/usr/X11R6/lib/X11/fonts/Type1/:. diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/test/test.ml b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/test/test.ml deleted file mode 100644 index dd66d3885..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/test/test.ml +++ /dev/null @@ -1,297 +0,0 @@ -(******************************************************************************) -(* Claudio Sacerdoti Coen *) -(* 25/09/2000 *) -(* *) -(* This is a simple test for the OCaml (LablGtk indeed) binding of the *) -(* MathView widget *) -(******************************************************************************) - -(* Callbacks *) -let jump (node : Ominidom.o_mDOMNode) = - let module O = Ominidom in - print_string ("jump: " ^ - (match node#get_attribute (O.o_mDOMString_of_string "href") with - | Some x -> x#get_string - | None -> "NO HREF FOR THIS NODE" - ) ^ "\n"); - flush stdout -;; - -let selection_changed mathview (node : Ominidom.o_mDOMNode option) = - let module O = Ominidom in - print_string ("selection_changed: " ^ - (match node with - None -> "selection_changed on nothing" - | Some node -> - match node#get_name with - | Some x -> x#get_string - | None -> "on element without name" - ) ^ "\n"); - mathview#set_selection node; - flush stdout -;; - - -let clicked (node : Ominidom.o_mDOMNode) = - let module O = Ominidom in - print_string ("clicked: " ^ - (match node#get_name with - | Some x -> x#get_string - | None -> "no name" - ) ^ "\n"); - flush stdout -;; - - -let activate_t1 mathview () = - mathview#set_font_manager_type `font_manager_t1; - print_string "WIDGET SET WITH T1 FONTS\n" ; - flush stdout -;; - -let activate_gtk mathview () = - mathview#set_font_manager_type `font_manager_gtk; - print_string "WIDGET SET WITH GTK FONTS\n" ; - flush stdout -;; - -let get_font_manager_type mathview () = - print_string "CURRENT FONT MANAGER TYPE: "; - begin - match mathview#get_font_manager_type with - | `font_manager_t1 -> print_string "T1" - | `font_manager_gtk -> print_string "GTK" - end; - print_newline(); - flush stdout -;; - -let load mathview () = - mathview#load "test.xml" ; - print_string "load: SEEMS TO WORK\n" ; - flush stdout -;; - -let get_selection mathview () = - let module O = Ominidom in - let selection = - match mathview#get_selection with - | Some node -> - begin - match node#get_name with - | Some name -> name#get_string - | None -> "element with no name!" - end - | None -> "no selection!" - in - print_string ("get_selection: " ^ selection ^ "\n") ; - flush stdout -;; - -let set_selection mathview () = - let module O = Ominidom in - begin - match mathview#get_selection with - | Some node -> - begin - try - let parent_node = node#get_parent in - mathview#set_selection (Some parent_node); - print_string "set selection: SEEMS TO WORK\n" - with - _ -> print_string "EXCEPTION: no parent\n" - end - | None -> - mathview#set_selection None; - print_string "no selection\n" - end ; - flush stdout -;; - -let unload mathview () = - mathview#unload ; - print_string "unload: SEEMS TO WORK\n" ; - flush stdout -;; - -let get_width mathview () = - print_string ("get_width: " ^ string_of_int (mathview#get_width) ^ "\n") ; - flush stdout -;; - -let get_height mathview () = - print_string ("get_height: " ^ string_of_int (mathview#get_height) ^ "\n") ; - flush stdout -;; - -let get_top mathview () = - let (x,y) = mathview#get_top in - print_string ("get_top: ("^ string_of_int x ^ "," ^ string_of_int y ^ ")\n") ; - flush stdout -;; - -let set_top mathview () = - mathview#set_top 0 0; - print_string "set_top: SEEM TO WORK\n" ; - flush stdout -;; - -let set_adjustments mathview () = - let adj1 = GData.adjustment () in - let adj2 = GData.adjustment () in - mathview#set_adjustments adj1 adj2 ; - adj1#set_value ((adj1#lower +. adj1#upper) /. 2.0) ; - adj2#set_value ((adj2#lower +. adj2#upper) /. 2.0) ; - print_string "set_adjustments: SEEM TO WORK\n" ; - flush stdout -;; - -let get_hadjustment mathview () = - let adj = mathview#get_hadjustment in - adj#set_value ((adj#lower +. adj#upper) /. 2.0) ; - print_string "get_hadjustment: SEEM TO WORK\n" ; - flush stdout -;; - -let get_vadjustment mathview () = - let adj = mathview#get_vadjustment in - adj#set_value ((adj#lower +. adj#upper) /. 2.0) ; - print_string "get_vadjustment: SEEM TO WORK\n" ; - flush stdout -;; - -let get_buffer mathview () = - let buffer = mathview#get_buffer in - Gdk.Draw.rectangle buffer (Gdk.GC.create buffer) ~x:0 ~y:0 - ~width:50 ~height:50 ~filled:true () ; - print_string "get_buffer: SEEMS TO WORK (hint: force the widget redrawing)\n"; - flush stdout -;; - -let get_frame mathview () = - let frame = mathview#get_frame in - frame#set_shadow_type `NONE ; - print_string "get_frame: SEEMS TO WORK\n" ; - flush stdout -;; - -let set_font_size mathview () = - mathview#set_font_size 24 ; - print_string "set_font_size: FONT IS NOW 24\n" ; - flush stdout -;; - -let get_font_size mathview () = - print_string ("get_font_size: " ^ string_of_int (mathview#get_font_size) ^ "\n") ; - flush stdout -;; - -let set_anti_aliasing mathview () = - mathview#set_anti_aliasing true ; - print_string "set_anti_aliasing: ON\n" ; - flush stdout -;; - -let get_anti_aliasing mathview () = - print_string ("get_anti_aliasing: " ^ - (match mathview#get_anti_aliasing with true -> "ON" | false -> "OFF") ^ - "\n") ; - flush stdout -;; - -let set_kerning mathview () = - mathview#set_kerning true ; - print_string "set_kerning: ON\n" ; - flush stdout -;; - -let get_kerning mathview () = - print_string ("get_kerning: " ^ - (match mathview#get_kerning with true -> "ON" | false -> "OFF") ^ - "\n") ; - flush stdout -;; - -let set_log_verbosity mathview () = - mathview#set_log_verbosity 3 ; - print_string "set_log_verbosity: NOW IS 3\n" ; - flush stdout -;; - -let get_log_verbosity mathview () = - print_string ("get_log_verbosity: " ^ - string_of_int mathview#get_log_verbosity ^ - "\n") ; - flush stdout -;; - -let export_to_postscript (mathview : GMathView.math_view) () = - mathview#export_to_postscript ~filename:"test.ps" (); - print_string "expor_to_postscript: SEEMS TO WORK (hint: look at test.ps)\n"; - flush stdout -;; - -(* Widget creation *) -let main_window = GWindow.window ~title:"GtkMathView test" () in -let vbox = GPack.vbox ~packing:main_window#add () in -let sw = GBin.scrolled_window ~width:50 ~height:50 ~packing:vbox#pack () in -let mathview= GMathView.math_view ~packing:sw#add ~width:50 ~height:50 () in -let table = GPack.table ~rows:6 ~columns:5 ~packing:vbox#pack () in -let button_gtk=GButton.button ~label:"activate Gtk fonts" ~packing:(table#attach ~left:0 ~top:0) () in -let button_load = GButton.button ~label:"load" ~packing:(table#attach ~left:1 ~top:0) () in -let button_unload = GButton.button ~label:"unload" ~packing:(table#attach ~left:2 ~top:0) () in -let button_get_selection = GButton.button ~label:"get_selection" ~packing:(table#attach ~left:3 ~top:0) () in -let button_set_selection = GButton.button ~label:"set_selection" ~packing:(table#attach ~left:4 ~top:0) () in -let button_get_width = GButton.button ~label:"get_width" ~packing:(table#attach ~left:0 ~top:1) () in -let button_get_height = GButton.button ~label:"get_height" ~packing:(table#attach ~left:1 ~top:1) () in -let button_get_top = GButton.button ~label:"get_top" ~packing:(table#attach ~left:2 ~top:1) () in -let button_set_top = GButton.button ~label:"set_top" ~packing:(table#attach ~left:3 ~top:1) () in -let button_set_adjustments = GButton.button ~label:"set_adjustments" ~packing:(table#attach ~left:4 ~top:1) () in -let button_get_hadjustment = GButton.button ~label:"get_hadjustment" ~packing:(table#attach ~left:0 ~top:2) () in -let button_get_vadjustment = GButton.button ~label:"get_vadjustment" ~packing:(table#attach ~left:1 ~top:2) () in -let button_get_buffer = GButton.button ~label:"get_buffer" ~packing:(table#attach ~left:2 ~top:2) () in -let button_get_frame = GButton.button ~label:"get_frame" ~packing:(table#attach ~left:3 ~top:2) () in -let button_set_font_size = GButton.button ~label:"set_font_size" ~packing:(table#attach ~left:4 ~top:2) () in -let button_get_font_size = GButton.button ~label:"get_font_size" ~packing:(table#attach ~left:0 ~top:3) () in -let button_set_anti_aliasing = GButton.button ~label:"set_anti_aliasing" ~packing:(table#attach ~left:1 ~top:3) () in -let button_get_anti_aliasing = GButton.button ~label:"get_anti_aliasing" ~packing:(table#attach ~left:2 ~top:3) () in -let button_set_kerning = GButton.button ~label:"set_kerning" ~packing:(table#attach ~left:3 ~top:3) () in -let button_get_kerning = GButton.button ~label:"get_kerning" ~packing:(table#attach ~left:4 ~top:3) () in -let button_set_log_verbosity = GButton.button ~label:"set_log_verbosity" ~packing:(table#attach ~left:0 ~top:4) () in -let button_get_log_verbosity = GButton.button ~label:"get_log_verbosity" ~packing:(table#attach ~left:1 ~top:4) () in -let button_export_to_postscript = GButton.button ~label:"export_to_postscript" ~packing:(table#attach ~left:2 ~top:4) () in -let button_t1 = GButton.button ~label:"activate T1 fonts" ~packing:(table#attach ~left:3 ~top:4) () in -let button_get_font_manager_type = GButton.button ~label:"get_font_manager" ~packing:(table#attach ~left:4 ~top:4) () in -(* Signals connection *) -ignore(button_gtk#connect#clicked (activate_gtk mathview)) ; -ignore(button_load#connect#clicked (load mathview)) ; -ignore(button_unload#connect#clicked (unload mathview)) ; -ignore(button_get_selection#connect#clicked (get_selection mathview)) ; -ignore(button_set_selection#connect#clicked (set_selection mathview)) ; -ignore(button_get_width#connect#clicked (get_width mathview)) ; -ignore(button_get_height#connect#clicked (get_height mathview)) ; -ignore(button_get_top#connect#clicked (get_top mathview)) ; -ignore(button_set_top#connect#clicked (set_top mathview)) ; -ignore(button_set_adjustments#connect#clicked (set_adjustments mathview)) ; -ignore(button_get_hadjustment#connect#clicked (get_hadjustment mathview)) ; -ignore(button_get_vadjustment#connect#clicked (get_vadjustment mathview)) ; -ignore(button_get_buffer#connect#clicked (get_buffer mathview)) ; -ignore(button_get_frame#connect#clicked (get_frame mathview)) ; -ignore(button_set_font_size#connect#clicked (set_font_size mathview)) ; -ignore(button_get_font_size#connect#clicked (get_font_size mathview)) ; -ignore(button_set_anti_aliasing#connect#clicked (set_anti_aliasing mathview)) ; -ignore(button_get_anti_aliasing#connect#clicked (get_anti_aliasing mathview)) ; -ignore(button_set_kerning#connect#clicked (set_kerning mathview)) ; -ignore(button_get_kerning#connect#clicked (get_kerning mathview)) ; -ignore(button_set_log_verbosity#connect#clicked (set_log_verbosity mathview)) ; -ignore(button_get_log_verbosity#connect#clicked (get_log_verbosity mathview)) ; -ignore(button_export_to_postscript#connect#clicked (export_to_postscript mathview)) ; -ignore(button_t1#connect#clicked (activate_t1 mathview)) ; -ignore(button_get_font_manager_type#connect#clicked (get_font_manager_type mathview)) ; -ignore(mathview#connect#jump jump) ; -ignore(mathview#connect#clicked clicked) ; -ignore(mathview#connect#selection_changed (selection_changed mathview)) ; -(* Main Loop *) -main_window#show () ; -GMain.Main.main () -;; diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/test/test.xml b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/test/test.xml deleted file mode 100644 index b0f8c1563..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20000829_gtkmathview-0.2.1/test/test.xml +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - a - - x - - + - b - - - - x - 2 - - + - - p - - x - - + - q - - - - d - x - = - - - a2 - - - ln - - - ( - - x2 - + - - p - - x - - + - q - - ) - - - - + - - - - - 2 - - b - - - - - a - - p - - - - - - 4 - - q - - - - - p - 2 - - - - - - - arctg - - - - - 2 - - x - - + - p - - - - - 4 - - q - - - - - p - 2 - - - - - - - + - c - - diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1-1.spec b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1-1.spec deleted file mode 100644 index ed7e49232..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1-1.spec +++ /dev/null @@ -1,25 +0,0 @@ -Summary: GtkMathView : the binding for lablgtk of the GtkMathView widget -Name: lablgtk-20001129_gtkmathview -Version: 0.2.1 -Release: 1 -Copyright: LGPL -Group: Development/Libraries -Requires: lablgtk_20001129 gtkmathview -Source: www.cs.unibo.it:/~lpadovan/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1.tar.gz -%description -GtkMathView is the binding for lablgtk of the GtkMathView widget. - -%prep -%setup - -%build -make -make opt - -%install -make install - -%files -%doc COPYING - -/usr/lib/ocaml/lablgtk/mathview diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/.cvsignore b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/.cvsignore deleted file mode 100644 index cd9e25037..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -*.cmi *.cmo *.cmx *.cma *.cmxa config.make diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/.depend b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/.depend deleted file mode 100644 index 600449bb8..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/.depend +++ /dev/null @@ -1,4 +0,0 @@ -gMathView.cmo: gtkMathView.cmo gtk_mathview.cmo -gMathView.cmx: gtkMathView.cmx gtk_mathview.cmx -gtkMathView.cmo: gtk_mathview.cmo -gtkMathView.cmx: gtk_mathview.cmx diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/COPYING b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/COPYING deleted file mode 100644 index 20b480a10..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/COPYING +++ /dev/null @@ -1,11 +0,0 @@ -This library is made available under the LGPL. -You should have got a copy of the LGPL with Objective Caml. -The LGPL applies to all the files in this directory, but not in -subdirectories. - -For the test subdirectory, there is no specific licensing policy, -but you may freely take inspiration from the code, and copy parts of -it in your application. - -Author: - Claudio Sacerdoti Coen diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/Makefile b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/Makefile deleted file mode 100644 index 0bdfed0af..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/Makefile +++ /dev/null @@ -1,108 +0,0 @@ -# Makefile for lablgtk_mathview. - -MINIDOMDIR = ./minidom -TESTDIR = ./test -MLFLAGS += -I $(LABLGTKDIR) -I $(MINIDOMDIR) - -TARGETS = ml_gtk_mathview.o lablgtkmathview.cma - -all: Minidom $(TARGETS) - -opt: Minidom.opt lablgtkmathviewopt - -Minidom: - cd $(MINIDOMDIR); make - -Minidom.opt: - cd $(MINIDOMDIR); make opt - -configure: - @rm -f config.make - @$(MAKE) --no-print-directory -f configure.mk - -depend: - @rm -f .depend - @$(MAKE) --no-print-directory -f configure.mk .depend - -.depend config.make: - @$(MAKE) --no-print-directory -f configure.mk - -COMPILER = $(CAMLC) $(MLFLAGS) -w s -labels -c -LINKER = $(CAMLC) $(MLFLAGS) -COMPOPT = $(CAMLOPT) $(MLFLAGS) -w s -labels -c -LINKOPT = $(CAMLOPT) $(MLFLAGS) - -include config.make - -INSTALLDIR = $(LIBDIR)/lablgtk/mathview - -MLLIBS = lablgtkmathview.cma -CLIBS = -MLLINK = unix.cma str.cma - -ifdef DEBUG -CFLAGS = -g $(GTKCFLAGS) -MLLINK += -cclib -lcamlrund -MLFLAGS += -g -else -CFLAGS = -O -DGTK_NO_CHECK_CASTS -DGTK_DISABLE_COMPAT_H $(GTKCFLAGS) -endif -CFLAGS += $(MINIDOMCFLAGS) $(GTKMATHVIEWCFLAGS) - -THFLAGS = -thread -THLINK = unix.cma threads.cma - -ifdef USE_CC -CCOMPILER = $(CC) -c -I$(LIBDIR) $(CFLAGS) -else -CCOMPILER = ocamlc -c -ccopt "$(CFLAGS)" -endif - -# Rules -.SUFFIXES: .ml .mli .cmo .cmi .cmx .c .o .var .h .opt .def -.c.o: - $(CCOMPILER) $< -.ml.cmo: - $(COMPILER) $< -.mli.cmi: - $(COMPILER) $< -.ml.cmx: - $(COMPOPT) $< -.var.h: - ./var2def < $< > $@ -.var.c: - ./var2conv < $< > $@ - -# Targets -COBJS = ml_gtk_mathview.o -MLOBJS = gtk_mathview.cmo gtkMathView.cmo gMathView.cmo -ALLOBJS = $(MLOBJS) - -lablgtkmathviewopt: $(CLIBS) $(MLLIBS:.cma=.cmxa) - -install: - if test -d $(INSTALLDIR); then : ; else mkdir -p $(INSTALLDIR); fi - cp $(ALLOBJS:.cmo=.cmi) $(INSTALLDIR) - if test -f *.mli ; then cp *.mli $(INSTALLDIR) ; fi - cp $(ALLOBJS:.cmo=.ml) $(INSTALLDIR) - cp $(MLLIBS) $(INSTALLDIR) - cp $(COBJS) $(INSTALLDIR) - if test ! -z "$(CLIBS)" ; then cp $(CLIBS) $(INSTALLDIR) ; fi - if test -f lablgtkmathview.cmxa; then \ - cp $(MLLIBS:.cma=.cmxa) $(MLLIBS:.cma=.a) \ - $(INSTALLDIR); fi - -lablgtkmathview.cma: $(MLOBJS) - $(LINKER) -a -custom -o $@ $(MLOBJS) $(GTKLIBS) -cclib "$(GTKMATHVIEWLIBS)" -cclib "$(MINIDOMLIBS)" -lablgtkmathview.cmxa: $(MLOBJS:.cmo=.cmx) - $(LINKOPT) -a -o $@ $(MLOBJS:.cmo=.cmx) $(GTKLIBS) -cclib "$(GTKMATHVIEWLIBS)" -cclib "$(MINIDOMLIBS)" - -ml_gtk.o: $(LABLGTKDIR)/gtk_tags.c $(LABLGTKDIR)/gtk_tags.h \ - $(LABLGTKDIR)/ml_gtk.h $(LABLGTKDIR)/ml_gdk.h $(LABLGTKDIR)/wrappers.h - -clean: - rm -f *.cm* *.o *.a *_tags.[ch] $(TARGETS) - cd $(MINIDOMDIR); make clean - cd $(TESTDIR); make clean - -include .depend diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/configure.mk b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/configure.mk deleted file mode 100644 index 15e2c3735..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/configure.mk +++ /dev/null @@ -1,62 +0,0 @@ -# makefile for configuring lablGTK_mathview - -# Default compilers -CAMLC = ocamlc -CAMLOPT = ocamlopt - -# Default installation directories -BINDIR = `$(GETBINDIR)` -INSTALLDIR = $(LIBDIR)/lablgtk/mathview - -# Autoconf -GETLIBDIR = ocamlc -v | grep "^Standard" | sed 's/^.*: *//' -LIBDIR = `$(GETLIBDIR)` -GETBINDIR = $(GETLIBDIR) | sed -e 's|/lib/[^/]*$$|/bin|' -e 's|/lib$$|/bin|' -GETRANLIB = which ranlib 2>/dev/null | sed -e 's|.*/ranlib$$|!|' -e 's/^[^!]*$$/:/' -e 's/!/ranlib/' - -LABLGTKDIR = $(LIBDIR)/lablgtk - -ifdef USE_GNOME -GTKGETCFLAGS = gtk-config --cflags`" -I"`gnome-config --includedir -GNOMELIBS = `gnome-config --libs gtkxmhtml` -else -GTKGETCFLAGS = gtk-config --cflags -endif - -GTKGETLIBS = gtk-config --libs - -configure: .depend config.make - -.depend: - ocamldep *.ml *.mli > .depend - -config.make: - @echo CAMLC=$(CAMLC) > config.make - @echo CAMLOPT=$(CAMLOPT) >> config.make - @echo USE_GL=$(USE_GL) >> config.make - @echo USE_GNOME=$(USE_GNOME) >> config.make - @echo USE_CC=$(USE_CC) >> config.make - @echo DEBUG=$(DEBUG) >> config.make - @echo CC=$(CC) >> config.make - @echo RANLIB=`$(GETRANLIB)` >> config.make - @echo LIBDIR=$(LIBDIR) >> config.make - @echo BINDIR=`$(GETBINDIR)` >> config.make - @echo INSTALLDIR=$(INSTALLDIR) >> config.make - @echo LABLGTKDIR=$(LABLGTKDIR) >> config.make -# Luca: was -# @echo GTKCFLAGS=`$(GTKGETCFLAGS)` -I/usr/lib/ocaml/lablgtk >> config.make -# Luca: now - @echo GTKCFLAGS=`$(GTKGETCFLAGS)` -I$(LIBDIR)/lablgtk >> config.make - @echo GTKLIBS=`$(GTKGETLIBS)` | \ - sed -e 's/-l/-cclib &/g' -e 's/-[LRWr][^ ]*/-ccopt &/g' \ - >> config.make -# Luca: GtkMathView configuration - @echo GTKMATHVIEWCFLAGS=`gtkmathview-config --cflags` >> config.make - @echo MINIDOMCFLAGS=`minidom-config --cflags` >> config.make - @echo GTKMATHVIEWLIBS=`gtkmathview-config --libs` >> config.make - @echo MINIDOMLIBS=`minidom-config --libs` >> config.make -# Luca: end of GtkMathView configuration - @echo GNOMELIBS=$(GNOMELIBS) | \ - sed -e 's/-l/-cclib &/g' -e 's/-[LRWr][^ ]*/-ccopt &/g' \ - >> config.make - cat config.make diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/gMathView.ml b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/gMathView.ml deleted file mode 100644 index e897ccfdb..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/gMathView.ml +++ /dev/null @@ -1,80 +0,0 @@ -open Gaux -open Gtk -open Gtk_mathview -open GtkBase -open GtkMathView -open GObj - -exception ErrorLoadingFile of string;; -exception ErrorWritingFile of string;; -exception NoSelection;; - -class math_view_signals obj = object - inherit GContainer.container_signals obj - method clicked = GtkSignal.connect ~sgn:MathView.Signals.clicked obj ~after - method jump = GtkSignal.connect ~sgn:MathView.Signals.jump obj ~after - method selection_changed = - GtkSignal.connect ~sgn:MathView.Signals.selection_changed obj ~after -end - -class math_view obj = object - inherit GContainer.container (obj : Gtk_mathview.math_view obj) - method connect = new math_view_signals obj - method load ~filename = - if not (MathView.load obj ~filename) then raise (ErrorLoadingFile filename) - method unload = MathView.unload obj - method get_selection = MathView.get_selection obj - method set_selection (node : Ominidom.o_mDOMNode option) = MathView.set_selection obj node - method get_width = MathView.get_width obj - method get_height = MathView.get_height obj - method get_top = MathView.get_top obj - method set_top = MathView.set_top obj - method set_adjustments = - fun adj1 adj2 -> - MathView.set_adjustments obj (GData.as_adjustment adj1) - (GData.as_adjustment adj2) - method get_hadjustment = new GData.adjustment (MathView.get_hadjustment obj) - method get_vadjustment = new GData.adjustment (MathView.get_vadjustment obj) - method get_buffer = MathView.get_buffer obj - method get_frame = new GBin.frame (MathView.get_frame obj) - method set_font_size = MathView.set_font_size obj - method get_font_size = MathView.get_font_size obj - method set_anti_aliasing = MathView.set_anti_aliasing obj - method get_anti_aliasing = MathView.get_anti_aliasing obj - method set_kerning = MathView.set_kerning obj - method get_kerning = MathView.get_kerning obj - method set_log_verbosity = MathView.set_log_verbosity obj - method get_log_verbosity = MathView.get_log_verbosity obj - method export_to_postscript - ?(width = 595) ?(height = 822) ?(x_margin = 72) ?(y_margin = 72) - ?(disable_colors = false) ~filename () = - let result = MathView.export_to_postscript obj - ~width ~height ~x_margin ~y_margin ~disable_colors ~filename - in - if not result then raise (ErrorWritingFile filename) - method get_font_manager_type = MathView.get_font_manager_type obj - method set_font_manager_type ~fm_type = MathView.set_font_manager_type obj ~fm_type -end - -let math_view ?adjustmenth ?adjustmentv ?font_size ?font_manager ?border_width - ?width ?height ?packing ?show () = - let w = - MathView.create - ?adjustmenth:(may_map ~f:GData.as_adjustment adjustmenth) - ?adjustmentv:(may_map ~f:GData.as_adjustment adjustmentv) - () - in - Container.set w ?border_width ?width ?height; - let mathview = pack_return (new math_view w) ~packing ~show in - begin - match font_size with - | Some size -> mathview#set_font_size size - | None -> () - end; - begin - match font_manager with - | Some manager -> mathview#set_font_manager_type ~fm_type:manager - | None -> () - end; - mathview -;; diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/gtkMathView.ml b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/gtkMathView.ml deleted file mode 100644 index 4c893fab4..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/gtkMathView.ml +++ /dev/null @@ -1,118 +0,0 @@ -open Gtk -open Gtk_mathview -open Tags -open GtkBase -open Gpointer - -external mDOMNode_of_boxed_option : - Gpointer.boxed option -> Minidom.mDOMNode = - "ml_gtk_math_view_mDOMNode_of_bodex_option" - -external mDOMNode_option_of_boxed_option : - Gpointer.boxed option -> Minidom.mDOMNode option = - "ml_gtk_math_view_mDOMNode_option_of_bodex_option" - -let o_mDOMNode_of_mDOMNode node = new Ominidom.o_mDOMNode node - -let o_mDOMNode_option_of_mDOMNode_option = - function - | Some x -> Some (o_mDOMNode_of_mDOMNode x) - | None -> None - -let mDOMNode_option_of_o_mDOMNode_option = - function - | Some x -> Some (x#get_dom_node) - | None -> None - -module MathView = struct - exception NoSelection - - let cast w : math_view obj = Object.try_cast w "GtkMathView" - external create : Gtk.adjustment optobj -> Gtk.adjustment optobj -> - math_view obj = "ml_gtk_math_view_new" - let create ~adjustmenth ~adjustmentv () = - create (optboxed adjustmenth) (optboxed adjustmentv) - external load : [>`math_view] obj -> filename:string -> bool = - "ml_gtk_math_view_load" - external unload : [>`math_view] obj -> unit = - "ml_gtk_math_view_unload" - external raw_get_selection : [>`math_view] obj -> Minidom.mDOMNode option = - "ml_gtk_math_view_get_selection" - let get_selection obj = - o_mDOMNode_option_of_mDOMNode_option (raw_get_selection obj) - external raw_set_selection : [>`math_view] obj -> Minidom.mDOMNode option -> unit= - "ml_gtk_math_view_set_selection" - let set_selection obj node = - raw_set_selection obj (mDOMNode_option_of_o_mDOMNode_option node) - external get_width : [>`math_view] obj -> int = - "ml_gtk_math_view_get_width" - external get_height : [>`math_view] obj -> int = - "ml_gtk_math_view_get_height" - external get_top : [>`math_view] obj -> (int * int) = - "ml_gtk_math_view_get_top" - external set_top : [>`math_view] obj -> int -> int -> unit = - "ml_gtk_math_view_set_top" - external set_adjustments : [>`math_view] obj -> Gtk.adjustment obj -> Gtk.adjustment obj -> unit = - "ml_gtk_math_view_set_adjustments" - external get_hadjustment : [>`math_view] obj -> Gtk.adjustment obj = - "ml_gtk_math_view_get_hadjustment" - external get_vadjustment : [>`math_view] obj -> Gtk.adjustment obj = - "ml_gtk_math_view_get_vadjustment" - external get_buffer : [>`math_view] obj -> Gdk.pixmap = - "ml_gtk_math_view_get_buffer" - external get_frame : [>`math_view] obj -> [`frame] obj = - "ml_gtk_math_view_get_frame" - external set_font_size : [>`math_view] obj -> int -> unit = - "ml_gtk_math_view_set_font_size" - external get_font_size : [>`math_view] obj -> int = - "ml_gtk_math_view_get_font_size" - external set_anti_aliasing : [>`math_view] obj -> bool -> unit = - "ml_gtk_math_view_set_anti_aliasing" - external get_anti_aliasing : [>`math_view] obj -> bool = - "ml_gtk_math_view_get_anti_aliasing" - external set_kerning : [>`math_view] obj -> bool -> unit = - "ml_gtk_math_view_set_kerning" - external get_kerning : [>`math_view] obj -> bool = - "ml_gtk_math_view_get_kerning" - external set_log_verbosity : [>`math_view] obj -> int -> unit = - "ml_gtk_math_view_set_log_verbosity" - external get_log_verbosity : [>`math_view] obj -> int = - "ml_gtk_math_view_get_log_verbosity" - external export_to_postscript : - [>`math_view] obj -> width:int -> height:int -> x_margin:int -> y_margin:int -> disable_colors:bool -> filename:string -> bool = - "ml_gtk_math_view_export_to_postscript_bytecode" "ml_gtk_math_view_export_to_postscript_native" - external get_font_manager_type : [>`math_view] obj -> - [`font_manager_gtk | `font_manager_t1] = - "ml_gtk_math_view_get_font_manager_type" - external set_font_manager_type : [>`math_view] obj -> - fm_type:[`font_manager_gtk | `font_manager_t1] -> unit = - "ml_gtk_math_view_set_font_manager_type" - - module Signals = struct - open GtkSignal - - let clicked : ([>`math_view],_) t = - let marshal_clicked f _ = - function - [GtkArgv.POINTER node] -> f (o_mDOMNode_of_mDOMNode (mDOMNode_of_boxed_option node)) - | _ -> invalid_arg "GtkMathView.MathView.Signals.marshal_clicked" - in - { name = "clicked"; marshaller = marshal_clicked } - - let jump : ([>`math_view],_) t = - let marshal_jump f _ = - function - [GtkArgv.POINTER node] -> f (o_mDOMNode_of_mDOMNode (mDOMNode_of_boxed_option node)) - | _ -> invalid_arg "GtkMathView.MathView.Signals.marshal_jump" - in - { name = "jump"; marshaller = marshal_jump } - - let selection_changed : ([>`math_view],_) t = - let marshal_selection_changed f _ = - function - [GtkArgv.POINTER node] -> f (o_mDOMNode_option_of_mDOMNode_option (mDOMNode_option_of_boxed_option node)) - | _ -> invalid_arg "GtkMathView.MathView.Signals.marshal_selection_changed" - in - { name = "selection_changed"; marshaller = marshal_selection_changed } - end -end diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/gtk_mathview.ml b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/gtk_mathview.ml deleted file mode 100644 index 745a1ba82..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/gtk_mathview.ml +++ /dev/null @@ -1 +0,0 @@ -type math_view = [`widget|`container|`bin|`eventbox|`math_view] diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/minidom/.cvsignore b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/minidom/.cvsignore deleted file mode 100644 index 84bdd8eff..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/minidom/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -*.cmi *.cmo *.cmx test test.opt diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/minidom/Makefile b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/minidom/Makefile deleted file mode 100644 index cacfccacb..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/minidom/Makefile +++ /dev/null @@ -1,52 +0,0 @@ -GETLIBDIR = ocamlc -v | grep "^Standard" | sed 's/^.*: *//' -LIBDIR = `$(GETLIBDIR)` -INSTALLDIR = $(LIBDIR)/minidom -OBJECTS = minidom.cmi minidom.cmo ml_minidom.o ominidom.cmi ominidom.cmo -OBJECTS_OPT = minidom.cmx ominidom.cmx -INST = minidom.o ominidom.o ml_minidom.h minidom.mli - -all: $(OBJECTS) test - -opt: $(OBJECTS_OPT) test.opt - -ml_minidom.o: ml_minidom.c - gcc -c -I$(LIBDIR)/caml/ `glib-config --cflags` `minidom-config --cflags` $< - -minidom.cmi: minidom.mli - ocamlc -c $< - -minidom.cmo: minidom.ml minidom.cmi - ocamlc -c $< - -minidom.cmx: minidom.ml minidom.cmi - ocamlopt -c $< - -ominidom.cmi: ominidom.mli - ocamlc -c $< - -ominidom.cmo: ominidom.ml - ocamlc -c $< - -ominidom.cmx: ominidom.ml - ocamlopt -c $< - -test.cmo: test.ml minidom.cmo - ocamlc -c test.ml - -test.cmx: test.ml minidom.cmx - ocamlopt -c test.ml - -test: test.cmo minidom.cmo ml_minidom.o - ocamlc -custom -o test minidom.cmo test.cmo ml_minidom.o \ - -cclib "`glib-config --libs` `minidom-config --libs`" - -test.opt: test.cmx minidom.cmx ml_minidom.o - ocamlopt -o test.opt minidom.cmx test.cmx ml_minidom.o \ - -cclib "`glib-config --libs` `minidom-config --libs`" - -install: - if test -d $(INSTALLDIR); then : ; else mkdir -p $(INSTALLDIR); fi - cp $(OBJECTS) $(OBJECTS_OPT) $(INST) $(INSTALLDIR) - -clean: - rm -f *.o *.cm? test test.opt diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/minidom/minidom.ml b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/minidom/minidom.ml deleted file mode 100644 index 31e677b3f..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/minidom/minidom.ml +++ /dev/null @@ -1,61 +0,0 @@ - -type mDOMString -type mDOMDoc -type mDOMNode -type mDOMAttr -type mDOMEntity - -external string_of_mDOMString : mDOMString -> string = "ml_string_of_mDOMString" -external mDOMString_of_string : string -> mDOMString = "ml_mDOMString_of_string" -external mDOMString_eq : string -> string -> bool = "ml_mDOMString_eq" - -external doc_load : string -> mDOMDoc = "ml_doc_load" -external doc_unload : mDOMDoc -> unit = "ml_doc_unload" - -external doc_new : mDOMString -> mDOMDoc = "ml_doc_new" -external doc_get_root_node : mDOMDoc -> mDOMNode = "ml_doc_get_root_node" - -external doc_add_entity : mDOMDoc -> mDOMString -> mDOMString -> mDOMEntity = "ml_doc_add_entity" -external doc_get_entity : mDOMDoc -> mDOMString -> mDOMEntity option = "ml_doc_get_entity" -external doc_get_predefined_entity : mDOMDoc -> mDOMString -> mDOMEntity option = "ml_doc_get_predefined_entity" -external entity_get_content : mDOMEntity -> mDOMString = "ml_entity_get_content" - -external node_is_text : mDOMNode -> bool = "ml_node_is_text" -external node_is_element : mDOMNode -> bool = "ml_node_is_element" -external node_is_blank : mDOMNode -> bool = "ml_node_is_blank" -external node_is_entity_ref : mDOMNode -> bool = "ml_node_is_entity_ref" -external node_get_type : mDOMNode -> int = "ml_node_get_type" -external node_get_name : mDOMNode -> mDOMString option = "ml_node_get_name" -external node_get_ns_uri : mDOMNode -> mDOMString option = "ml_node_get_ns_uri" -external node_get_attribute : mDOMNode -> mDOMString -> mDOMString option = "ml_node_get_attribute" -external node_get_attribute_ns : mDOMNode -> mDOMString -> mDOMString -> mDOMString option = "ml_node_get_attribute_ns" -external node_get_content : mDOMNode -> mDOMString option = "ml_node_get_content" -external node_get_parent : mDOMNode -> mDOMNode option = "ml_node_get_parent" -external node_get_prev_sibling : mDOMNode -> mDOMNode option = "ml_node_get_prev_sibling" -external node_get_next_sibling : mDOMNode -> mDOMNode option = "ml_node_get_next_sibling" -external node_get_first_child : mDOMNode -> mDOMNode option = "ml_node_get_first_child" -external node_get_first_attribute : mDOMNode -> mDOMAttr option = "ml_node_get_first_attribute" -external node_is_first : mDOMNode -> bool = "ml_node_is_first" -external node_is_last : mDOMNode -> bool = "ml_node_is_last" - -external attr_get_name : mDOMAttr -> mDOMString option = "ml_attr_get_name" -external attr_get_ns_uri : mDOMAttr -> mDOMString option = "ml_attr_get_ns_uri" -external attr_get_value : mDOMAttr -> mDOMString option = "ml_attr_get_value" -external attr_get_prev_sibling : mDOMAttr -> mDOMAttr option = "ml_attr_get_prev_sibling" -external attr_get_next_sibling : mDOMAttr -> mDOMAttr option = "ml_attr_get_next_sibling" -external attr_get_parent : mDOMAttr -> mDOMNode option = "ml_attr_get_parent" - -let rec node_list_of_node_first = - function None -> [] - | Some node -> node :: (node_list_of_node_first (node_get_next_sibling node)) - -let rec attr_list_of_attr_first = - function None -> [] - | Some attr -> attr :: (attr_list_of_attr_first (attr_get_next_sibling attr)) - -let node_get_children node = - (node_list_of_node_first (node_get_first_child node)) - -let node_get_attributes node = - (attr_list_of_attr_first (node_get_first_attribute node)) - diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/minidom/minidom.mli b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/minidom/minidom.mli deleted file mode 100644 index 0b655955b..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/minidom/minidom.mli +++ /dev/null @@ -1,50 +0,0 @@ - -type mDOMString -type mDOMDoc -type mDOMNode -type mDOMAttr -type mDOMEntity - -external string_of_mDOMString : mDOMString -> string = "ml_string_of_mDOMString" -external mDOMString_of_string : string -> mDOMString = "ml_mDOMString_of_string" -external mDOMString_eq : string -> string -> bool = "ml_mDOMString_eq" - -external doc_load : string -> mDOMDoc = "ml_doc_load" -external doc_unload : mDOMDoc -> unit = "ml_doc_unload" - -external doc_new : mDOMString -> mDOMDoc = "ml_doc_new" -external doc_get_root_node : mDOMDoc -> mDOMNode = "ml_doc_get_root_node" - -external doc_add_entity : doc:mDOMDoc -> name:mDOMString -> content:mDOMString -> mDOMEntity = "ml_doc_add_entity" -external doc_get_entity : doc:mDOMDoc -> name:mDOMString -> mDOMEntity option = "ml_doc_get_entity" -external doc_get_predefined_entity : doc:mDOMDoc -> name:mDOMString -> mDOMEntity option = "ml_doc_get_predefined_entity" -external entity_get_content : mDOMEntity -> mDOMString = "ml_entity_get_content" - -external node_is_text : mDOMNode -> bool = "ml_node_is_text" -external node_is_element : mDOMNode -> bool = "ml_node_is_element" -external node_is_blank : mDOMNode -> bool = "ml_node_is_blank" -external node_is_entity_ref : mDOMNode -> bool = "ml_node_is_entity_ref" -external node_get_type : mDOMNode -> int = "ml_node_get_type" -external node_get_name : mDOMNode -> mDOMString option = "ml_node_get_name" -external node_get_ns_uri : mDOMNode -> mDOMString option = "ml_node_get_ns_uri" -external node_get_attribute : node:mDOMNode -> name:mDOMString -> mDOMString option = "ml_node_get_attribute" -external node_get_attribute_ns : node:mDOMNode -> name:mDOMString -> ns_uri:mDOMString -> mDOMString option = "ml_node_get_attribute_ns" -external node_get_content : mDOMNode -> mDOMString option = "ml_node_get_content" -external node_get_parent : mDOMNode -> mDOMNode option = "ml_node_get_parent" -external node_get_prev_sibling : mDOMNode -> mDOMNode option = "ml_node_get_prev_sibling" -external node_get_next_sibling : mDOMNode -> mDOMNode option = "ml_node_get_next_sibling" -external node_get_first_child : mDOMNode -> mDOMNode option = "ml_node_get_first_child" -external node_get_first_attribute : mDOMNode -> mDOMAttr option = "ml_node_get_first_attribute" -external node_is_first : mDOMNode -> bool = "ml_node_is_first" -external node_is_last : mDOMNode -> bool = "ml_node_is_last" - -external attr_get_name : mDOMAttr -> mDOMString option = "ml_attr_get_name" -external attr_get_ns_uri : mDOMAttr -> mDOMString option = "ml_attr_get_ns_uri" -external attr_get_value : mDOMAttr -> mDOMString option = "ml_attr_get_value" -external attr_get_prev_sibling : mDOMAttr -> mDOMAttr option = "ml_attr_get_prev_sibling" -external attr_get_next_sibling : mDOMAttr -> mDOMAttr option = "ml_attr_get_next_sibling" -external attr_get_parent : mDOMAttr -> mDOMNode option = "ml_attr_get_parent" - -val node_get_children : mDOMNode -> mDOMNode list -val node_get_attributes : mDOMNode -> mDOMAttr list - diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/minidom/ml_minidom.c b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/minidom/ml_minidom.c deleted file mode 100644 index 10626143c..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/minidom/ml_minidom.c +++ /dev/null @@ -1,288 +0,0 @@ - -#include -#include -#include - -#include "minidom.h" - -#define Val_ptr(p) ((value) (p)) -#define Val_option(p,f) ((p != NULL) ? ml_some(f(p)) : Val_unit) -#define Val_mDOMString(s) (copy_string((char*) (s))) -#define mDOMString_val(v) ((mDOMStringRef) String_val(v)) - -static value -ml_some(value v) -{ - CAMLparam1(v); - value ret = alloc_small(1,0); - Field(ret,0) = v; - CAMLreturn(ret); -} - -value -ml_string_of_mDOMString(value s) -{ - CAMLparam1(s); - CAMLreturn(s); -} - -value -ml_mDOMString_of_string(value s) -{ - CAMLparam1(s); - CAMLreturn(s); -} - -value -ml_doc_load(value file_name) -{ - mDOMDocRef doc_ref; - - CAMLparam1(file_name); - - doc_ref = mdom_load(String_val(file_name), FALSE, NULL); - if (doc_ref == NULL) failwith("minidom: could not load document"); - - CAMLreturn((value) doc_ref); -} - -value -ml_doc_unload(value doc) -{ - CAMLparam1(doc); - - mdom_unload((mDOMDocRef) doc); - - CAMLreturn(Val_unit); -} - -value -ml_doc_new(value s) -{ - mDOMDocRef doc_ref; - - CAMLparam1(s); - - doc_ref = mdom_doc_new(mDOMString_val(s)); - if (doc_ref == NULL) failwith("minidom: could not create new document"); - - CAMLreturn((value) doc_ref); -} - - -value -ml_doc_get_root_node(value doc) -{ - mDOMNodeRef root; - - CAMLparam1(doc); - root = mdom_doc_get_root_node((mDOMDocRef) doc); - if (root == NULL) failwith("minidom: document has no root node!"); - - CAMLreturn((value) root); -} - -value -ml_doc_add_entity(value doc, value name, value content) -{ - mDOMEntityRef ent; - - CAMLparam3(doc, name, content); - ent = mdom_doc_add_entity((mDOMDocRef) doc, mDOMString_val(name), mDOMString_val(content)); - if (ent == NULL) failwith("minidom: could not add entity"); - - CAMLreturn((value) ent); -} - -value -ml_doc_get_entity(value doc, value name) -{ - mDOMEntityRef ent; - - CAMLparam2(doc, name); - ent = mdom_doc_get_entity((mDOMDocRef) doc, mDOMString_val(name)); - - CAMLreturn(Val_option(ent, Val_ptr)); -} - -value -ml_doc_get_predefined_entity(value name) -{ - mDOMEntityRef ent; - - CAMLparam1(name); - ent = mdom_get_predefined_entity(mDOMString_val(name)); - - CAMLreturn(Val_option(ent, Val_ptr)); -} - -value -ml_entity_get_content(value ent) -{ - CAMLparam1(ent); - CAMLreturn(Val_mDOMString(mdom_entity_get_content((mDOMEntityRef) ent))); -} - -value -ml_node_is_text(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_bool(mdom_node_is_text((mDOMNodeRef) node))); -} - -value -ml_node_is_element(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_bool(mdom_node_is_element((mDOMNodeRef) node))); -} - -value -ml_node_is_blank(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_bool(mdom_node_is_blank((mDOMNodeRef) node))); -} - -value -ml_node_is_entity_ref(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_bool(mdom_node_is_entity_ref((mDOMNodeRef) node))); -} - -value -ml_node_get_type(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_int(mdom_node_get_type((mDOMNodeRef) node))); -} - -value -ml_node_get_name(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_option(mdom_node_get_name((mDOMNodeRef) node), Val_mDOMString)); -} - -value -ml_node_get_content(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_option(mdom_node_get_content((mDOMNodeRef) node), Val_mDOMString)); -} - -value -ml_node_get_ns_uri(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_option(mdom_node_get_ns_uri((mDOMNodeRef) node), Val_mDOMString)); -} - -value -ml_node_get_attribute(value node, value name) -{ - CAMLparam2(node,name); - CAMLreturn(Val_option(mdom_node_get_attribute((mDOMNodeRef) node, String_val(name)), Val_mDOMString)); -} - -value -ml_node_get_attribute_ns(value node, value name, value ns_uri) -{ - CAMLparam2(node,name); - CAMLreturn(Val_option(mdom_node_get_attribute_ns((mDOMNodeRef) node, - String_val(name), - String_val(ns_uri)), Val_mDOMString)); -} - -value -ml_node_get_parent(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_option(mdom_node_get_parent((mDOMNodeRef) node), Val_ptr)); -} - -value -ml_node_get_prev_sibling(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_option(mdom_node_get_prev_sibling((mDOMNodeRef) node), Val_ptr)); -} - -value -ml_node_get_next_sibling(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_option(mdom_node_get_next_sibling((mDOMNodeRef) node), Val_ptr)); -} - -value -ml_node_get_first_child(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_option(mdom_node_get_first_child((mDOMNodeRef) node), Val_ptr)); -} - -value -ml_node_get_first_attribute(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_option(mdom_node_get_first_attribute((mDOMNodeRef) node), Val_ptr)); -} - -value -ml_node_is_first(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_bool(mdom_node_is_first((mDOMNodeRef) node))); -} - -value -ml_node_is_last(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_bool(mdom_node_is_last((mDOMNodeRef) node))); -} - -value -ml_attr_get_name(value attr) -{ - CAMLparam1(attr); - CAMLreturn(Val_option(mdom_attr_get_name((mDOMAttrRef) attr), Val_mDOMString)); -} - -value -ml_attr_get_ns_uri(value attr) -{ - CAMLparam1(attr); - CAMLreturn(Val_option(mdom_attr_get_ns_uri((mDOMAttrRef) attr), Val_mDOMString)); -} - -value -ml_attr_get_value(value attr) -{ - CAMLparam1(attr); - CAMLreturn(Val_option(mdom_attr_get_value((mDOMAttrRef) attr), Val_mDOMString)); -} - -value -ml_attr_get_prev_sibling(value attr) -{ - CAMLparam1(attr); - CAMLreturn(Val_option(mdom_attr_get_prev_sibling((mDOMAttrRef) attr), Val_ptr)); -} - -value -ml_attr_get_next_sibling(value attr) -{ - CAMLparam1(attr); - CAMLreturn(Val_option(mdom_attr_get_next_sibling((mDOMAttrRef) attr), Val_ptr)); -} - -value -ml_attr_get_parent(value attr) -{ - CAMLparam1(attr); - CAMLreturn(Val_option(mdom_attr_get_parent((mDOMAttrRef) attr), Val_ptr)); -} - diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/minidom/ml_minidom.h b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/minidom/ml_minidom.h deleted file mode 100644 index d22479964..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/minidom/ml_minidom.h +++ /dev/null @@ -1,18 +0,0 @@ - -#ifndef ml_minidom_h -#define ml_minidom_h - -#define Val_ptr(p) ((value) (p)) -#ifndef Val_option -#define Val_option(p,f) ((p != NULL) ? ml_some(f(p)) : Val_unit) -#endif /* Val_option */ -#define Val_mDOMString(s) (copy_string((char*) (s))) -#define mDOMString_val(v) ((mDOMStringRef) String_val(v)) -#define mDOMNode_val(v) ((mDOMNodeRef) v) - -#define mDOMNode_option_mDOMNodeRef(p) (((p) != NULL) ? ml_some((value) (p)) : Val_unit) -#define mDOMNodeRef_mDOMNode_option(v) ((v == Val_unit) ? NULL : (mDOMNodeRef)Field((v),0)) -#define Val_mDOMNodeRef(p) (mDOMNode_option_mDOMNodeRef(p)) -#define mDOMNodeRef_val(v) (mDOMNodeRef_mDOMNode_option(v)) - -#endif /* ml_minidom_h */ diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/minidom/ominidom.ml b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/minidom/ominidom.ml deleted file mode 100644 index 85ad2e4ed..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/minidom/ominidom.ml +++ /dev/null @@ -1,156 +0,0 @@ - -exception Node_has_no_parent;; -exception Node_has_no_sibling of string;; -exception Node_has_no_children;; -exception Node_has_no_attributes;; -exception Attribute_has_no_sibling of string;; -exception Attribute_has_no_parent;; -exception Undefined_entity;; - -let option_to_exception v e = - match v with - Some x -> x - | None -> raise e -;; - -class o_mDOMString (str: Minidom.mDOMString) = - object - method get_dom_string = str - method get_string = Minidom.string_of_mDOMString str - end;; - -let o_mDOMString_of_string str = - new o_mDOMString (Minidom.mDOMString_of_string str) - -class o_mDOMEntity (ent : Minidom.mDOMEntity) = - object - method get_dom_entity = ent - method get_content = - new o_mDOMString (Minidom.entity_get_content ent) - end -;; - -class o_mDOMDoc (doc : Minidom.mDOMDoc) = - object - method get_dom_doc = doc - - method get_root_node = - new o_mDOMNode (Minidom.doc_get_root_node doc) - method add_entity (name : o_mDOMString) (value : o_mDOMString) = - new o_mDOMEntity - (Minidom.doc_add_entity doc - (name#get_dom_string) (value#get_dom_string) - ) - method get_entity (name : o_mDOMString) = - match Minidom.doc_get_entity doc (name#get_dom_string) with - | Some x -> new o_mDOMEntity x - | None -> raise Undefined_entity - method get_predefined_entity (name : o_mDOMString) = - match Minidom.doc_get_predefined_entity doc (name#get_dom_string) with - | Some x -> new o_mDOMEntity x - | None -> raise Undefined_entity - end -and o_mDOMNode (node : Minidom.mDOMNode) = - object - method get_dom_node = node - - method is_text = Minidom.node_is_text node - method is_element = Minidom.node_is_element node - method is_blank = Minidom.node_is_blank node - method is_entity_ref = Minidom.node_is_entity_ref node - - method get_type = Minidom.node_get_type node - method get_name = - match Minidom.node_get_name node with - | Some x -> Some (new o_mDOMString x) - | None -> None - method get_ns_uri = - match Minidom.node_get_ns_uri node with - | Some x -> Some (new o_mDOMString x) - | None -> None - method get_attribute (name : o_mDOMString) = - match Minidom.node_get_attribute node (name#get_dom_string) with - | Some x -> Some (new o_mDOMString x) - | None -> None - method get_attribute_ns (name : o_mDOMString) (uri : o_mDOMString) = - match - Minidom.node_get_attribute_ns node - (name#get_dom_string) (uri#get_dom_string) - with - | Some x -> Some (new o_mDOMString x) - | None -> None - method get_content = - match Minidom.node_get_content node with - | Some x -> Some (new o_mDOMString x) - | None -> None - method get_parent = - new o_mDOMNode - (option_to_exception (Minidom.node_get_parent node) Node_has_no_parent) - method get_prev_sibling = - new o_mDOMNode - (option_to_exception - (Minidom.node_get_prev_sibling node) - (Node_has_no_sibling "left") - ) - method get_next_sibling = - new o_mDOMNode - (option_to_exception - (Minidom.node_get_next_sibling node) - (Node_has_no_sibling "right") - ) - method get_first_child = - new o_mDOMNode - (option_to_exception - (Minidom.node_get_first_child node) - (Node_has_no_children) - ) - method get_first_attribute = - new o_mDOMAttr - (option_to_exception - (Minidom.node_get_first_attribute node) - (Node_has_no_attributes) - ) - method is_first = Minidom.node_is_first node - method is_last = Minidom.node_is_last node - - method get_children = - List.map (function x -> new o_mDOMNode x) (Minidom.node_get_children node) - method get_attributes = List.map - (function x -> new o_mDOMAttr x) (Minidom.node_get_attributes node) - end -and o_mDOMAttr (attr : Minidom.mDOMAttr) = - object - method get_dom_attr = attr - - method get_name = - match Minidom.attr_get_name attr with - | Some x -> Some (new o_mDOMString x) - | None -> None - method get_ns_uri = - match Minidom.attr_get_ns_uri attr with - | Some x -> Some (new o_mDOMString x) - | None -> None - method get_value = - match Minidom.attr_get_value attr with - | Some x -> Some (new o_mDOMString x) - | None -> None - method get_prev_sibling = - new o_mDOMAttr - (option_to_exception - (Minidom.attr_get_prev_sibling attr) - (Attribute_has_no_sibling "left") - ) - method get_next_sibling = - new o_mDOMAttr - (option_to_exception - (Minidom.attr_get_next_sibling attr) - (Attribute_has_no_sibling "right") - ) - method get_parent = - new o_mDOMNode - (option_to_exception - (Minidom.attr_get_parent attr) Attribute_has_no_parent - ) - end -;; - diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/minidom/ominidom.mli b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/minidom/ominidom.mli deleted file mode 100644 index 24329544d..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/minidom/ominidom.mli +++ /dev/null @@ -1,64 +0,0 @@ -exception Node_has_no_parent -exception Node_has_no_sibling of string -exception Node_has_no_children -exception Node_has_no_attributes -exception Attribute_has_no_sibling of string -exception Attribute_has_no_parent -exception Undefined_entity - -class o_mDOMString : Minidom.mDOMString -> - object - method get_dom_string : Minidom.mDOMString - method get_string : string - end - -val o_mDOMString_of_string : string -> o_mDOMString - -class o_mDOMEntity : Minidom.mDOMEntity -> - object - method get_content : o_mDOMString - method get_dom_entity : Minidom.mDOMEntity - end - -class o_mDOMDoc : Minidom.mDOMDoc -> - object - method add_entity : o_mDOMString -> o_mDOMString -> o_mDOMEntity - method get_dom_doc : Minidom.mDOMDoc - method get_entity : o_mDOMString -> o_mDOMEntity - method get_predefined_entity : o_mDOMString -> o_mDOMEntity - method get_root_node : o_mDOMNode - end -and o_mDOMNode : Minidom.mDOMNode -> - object - method get_attribute : o_mDOMString -> o_mDOMString option - method get_attribute_ns : - o_mDOMString -> o_mDOMString -> o_mDOMString option - method get_attributes : o_mDOMAttr list - method get_children : o_mDOMNode list - method get_content : o_mDOMString option - method get_dom_node : Minidom.mDOMNode - method get_first_attribute : o_mDOMAttr - method get_first_child : o_mDOMNode - method get_name : o_mDOMString option - method get_next_sibling : o_mDOMNode - method get_ns_uri : o_mDOMString option - method get_parent : o_mDOMNode - method get_prev_sibling : o_mDOMNode - method get_type : int - method is_blank : bool - method is_element : bool - method is_entity_ref : bool - method is_first : bool - method is_last : bool - method is_text : bool - end -and o_mDOMAttr : Minidom.mDOMAttr -> - object - method get_dom_attr : Minidom.mDOMAttr - method get_name : o_mDOMString option - method get_next_sibling : o_mDOMAttr - method get_ns_uri : o_mDOMString option - method get_parent : o_mDOMNode - method get_prev_sibling : o_mDOMAttr - method get_value : o_mDOMString option - end diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/minidom/test.ml b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/minidom/test.ml deleted file mode 100644 index 3c7a092e9..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/minidom/test.ml +++ /dev/null @@ -1,84 +0,0 @@ - -let doc = Minidom.doc_load "test.xml" - -let root = Minidom.doc_get_root_node doc - -let check_attribute_ns attr = - Printf.printf "\n\n"; - let ns_uri = Minidom.attr_get_ns_uri attr - and attr_name = Minidom.attr_get_name attr - and attr_value = Minidom.attr_get_value attr - and parent = Minidom.attr_get_parent attr - in - match parent,ns_uri,attr_name,attr_value with - Some parent_node,Some uri,Some attribute_name,Some attribute_value -> - let attr_value = Minidom.node_get_attribute_ns parent_node attribute_name uri - in begin - match attr_value with - Some attr1 -> - Printf.printf "found the attribute with ns %s (was %s)\n" - (Minidom.string_of_mDOMString attr1) (Minidom.string_of_mDOMString attribute_value) - | None -> - Printf.printf "attribute not found (uri was %s)!!!!\n" (Minidom.string_of_mDOMString uri) - end - | _ -> - Printf.printf "parent_node == NULL || uri == NULL || attribute_name == NULL || attribute_value == NULL\n" -;; - -let print_attribute attr = - check_attribute_ns attr; - let ns_uri = Minidom.attr_get_ns_uri attr - in - begin - match ns_uri with - Some uri -> Printf.printf " %s:" (Minidom.string_of_mDOMString uri); - | None -> () - end; - match ((Minidom.attr_get_name attr), (Minidom.attr_get_value attr)) with - (Some attr_name, Some attr_value) -> - Printf.printf " %s=\"%s\"" (Minidom.string_of_mDOMString attr_name) (Minidom.string_of_mDOMString attr_value) - | (Some attr_name, _) -> - Printf.printf " ??? attribute %s has no value !!!" (Minidom.string_of_mDOMString attr_name) - | (_,_) -> - Printf.printf " ??? very strange attribute !!!" -;; - -let rec print_node n node = - if Minidom.node_is_blank node then () - else if Minidom.node_is_element node then begin - match Minidom.node_get_name node with - Some node_name -> - begin - let children = Minidom.node_get_children node - and attributes = Minidom.node_get_attributes node - and ns_uri = Minidom.node_get_ns_uri node - and is_first,is_last = (Minidom.node_is_first node), (Minidom.node_is_last node) - in - for i = 1 to n do print_char ' ' done; - Printf.printf "<"; - begin - match ns_uri with - Some uri -> Printf.printf "%s:" (Minidom.string_of_mDOMString uri) - | None -> () - end; - Printf.printf "%s" (Minidom.string_of_mDOMString node_name); - List.iter print_attribute attributes; - Printf.printf ">\n"; - List.iter (print_node (n + 2)) children; - for i = 1 to n do print_char ' ' done; - Printf.printf "\n" (Minidom.string_of_mDOMString node_name) - end - | None -> Printf.printf "??? this node has no name !!!\n" - end else if Minidom.node_is_text node then begin - match Minidom.node_get_content node with - Some node_content -> - for i = 1 to n do print_char ' ' done; - Printf.printf "%s\n" (Minidom.string_of_mDOMString node_content) - | None -> Printf.printf "??? this node has no content !!!\n" - end else begin - Printf.printf "don't know how to manage a node with type %d\n" (Minidom.node_get_type node) - end -;; - -print_node 0 root;; - diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/minidom/test.xml b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/minidom/test.xml deleted file mode 100644 index 83d2eef68..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/minidom/test.xml +++ /dev/null @@ -1,505 +0,0 @@ - - - - - - - - DEFINITION and_ind() OF TYPE - - - - - - - - __ - - - - - - - - ( - - - - - Π - A - : - - Prop - - - - - - - . - - - - - Π - B - : - - Prop - - - - - - - . - - - - - Π - P - : - - Prop - - - - - - - . - - - - - Π - f - : - - ( - A - - - ( - B - - P - ) - - ) - - - - - - - . - - Π - a - : - - ( - and - - _ - - A - - _ - - B - ) - - . - P - - - - - - - - - - - - - - - - - - - - - - - - - - - - :> - - Prop - - - - - - - - ) - - - - - - - - cast - - prod - - A - - - Prop - - - - - prod - - B - - - Prop - - - - - prod - - P - - - Prop - - - - - prod - - f - - - arrow - A - - arrow - B - P - - - - - - prod - - a - - - app - and - A - B - - - - P - - - - - - - Prop - - - - - - - - - - - AS - - - - - - - - __ - - - - - - - λ - A - : - - Prop - - - - - - - . - - - - - λ - B - : - - Prop - - - - - - - . - - - - - λ - P - : - - Prop - - - - - - - . - - - - - λ - f - : - - ( - A - - - ( - B - - P - ) - - ) - - - - - - - . - - - - - λ - a - : - - ( - and - - _ - - A - - _ - - B - ) - - - - - - - . - - < - P - > - CASES - - _ - - a - - _ - - OF - - ( - conj - - _ - - $1 - - _ - - $2 - ) - - - - ( - f - - _ - - $1 - - _ - - $2 - ) - - - _ - - END - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - A - - - Prop - - - - - - B - - - Prop - - - - - - P - - - Prop - - - - - - f - - - arrow - A - - arrow - B - P - - - - - - - a - - - app - and - A - B - - - - - mutcase - P - a - - app - conj - $1 - $2 - - - app - f - $1 - $2 - - - - - - - - - - - - - - diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/ml_gtk_mathview.c b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/ml_gtk_mathview.c deleted file mode 100644 index 185d9f04f..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/ml_gtk_mathview.c +++ /dev/null @@ -1,159 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include -#include -#include -#include -#include - -#include -#include "minidom/ml_minidom.h" - -/* : Next row should be put in a .h of lablgtk. */ -#define GtkAdjustment_val(val) check_cast(GTK_ADJUSTMENT,val) - -#define GtkMathView_val(val) check_cast(GTK_MATH_VIEW,val) - -#define FontManagerId_val(val) Int_val(val) -#define Val_FontManagerId(val) Val_int(val) - -FontManagerId -font_manager_id_of_value(value v) -{ - if (v == hash_variant("font_manager_gtk")) return FONT_MANAGER_GTK; - else if (v == hash_variant("font_manager_t1")) return FONT_MANAGER_T1; - else assert(0); -} - -value -value_of_font_manager_id(FontManagerId id) -{ - switch (id) { - case FONT_MANAGER_GTK: - return hash_variant("font_manager_gtk"); - case FONT_MANAGER_T1: - return hash_variant("font_manager_t1"); - default: - assert(0); - break; - } -} - -ML_2 (gtk_math_view_new,GtkAdjustment_val, GtkAdjustment_val, Val_GtkWidget_sink) -ML_2 (gtk_math_view_load, GtkMathView_val, String_val, Val_bool) -ML_1 (gtk_math_view_unload, GtkMathView_val, Unit) -/*ML_1 (gtk_math_view_dump, GtkMathView_val, Unit)*/ -ML_1 (gtk_math_view_get_selection, GtkMathView_val, Val_mDOMNodeRef) -ML_2 (gtk_math_view_set_selection, GtkMathView_val, mDOMNodeRef_val, Unit) -ML_1 (gtk_math_view_get_width, GtkMathView_val, Val_int) -ML_1 (gtk_math_view_get_height, GtkMathView_val, Val_int) -ML_3 (gtk_math_view_set_top, GtkMathView_val, Int_val, Int_val, Unit) -ML_3 (gtk_math_view_set_adjustments, GtkMathView_val, GtkAdjustment_val, GtkAdjustment_val, Unit) -ML_1 (gtk_math_view_get_hadjustment, GtkMathView_val, Val_GtkWidget) -ML_1 (gtk_math_view_get_vadjustment, GtkMathView_val, Val_GtkWidget) -ML_1 (gtk_math_view_get_buffer, GtkMathView_val, Val_GdkPixmap) -ML_1 (gtk_math_view_get_frame, GtkMathView_val, Val_GtkWidget) -ML_2 (gtk_math_view_set_font_size, GtkMathView_val, Int_val, Unit) -ML_1 (gtk_math_view_get_font_size, GtkMathView_val, Val_int) -ML_2 (gtk_math_view_set_anti_aliasing, GtkMathView_val, Bool_val, Unit) -ML_1 (gtk_math_view_get_anti_aliasing, GtkMathView_val, Val_bool) -ML_2 (gtk_math_view_set_kerning, GtkMathView_val, Bool_val, Unit) -ML_1 (gtk_math_view_get_kerning, GtkMathView_val, Val_bool) -ML_2 (gtk_math_view_set_log_verbosity, GtkMathView_val, Int_val, Unit) -ML_1 (gtk_math_view_get_log_verbosity, GtkMathView_val, Val_int) -ML_2 (gtk_math_view_set_font_manager_type, GtkMathView_val, font_manager_id_of_value, Unit) -ML_1 (gtk_math_view_get_font_manager_type, GtkMathView_val, value_of_font_manager_id) - -value -ml_gtk_math_view_export_to_postscript_native(value arg1, - value w, value h, value x0, value y0, value disable_colors, value arg2) -{ - CAMLparam5(arg1,w,h,x0,y0); - CAMLxparam2(disable_colors, arg2); - - char *filename; - FILE *fd; - int res; - filename = String_val (arg2); - if ((fd = fopen(filename, "w"))) { - gtk_math_view_export_to_postscript(GtkMathView_val (arg1), - Int_val(w), Int_val(h), Int_val(x0), Int_val(y0), Bool_val(disable_colors), fd); - fclose (fd); - res = 1; - } else { - fprintf(stderr, "Error opening file %s for writing\n", filename); - res = 0; - } - CAMLreturn (Val_bool(res)); -} - -value ml_gtk_math_view_export_to_postscript_bytecode (value* arg, int argn) -{ - return ml_gtk_math_view_export_to_postscript_native(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], arg[6]); -} - -value ml_gtk_math_view_get_top (value arg1) -{ - CAMLparam1(arg1); - CAMLlocal1 (result); - int x, y; - gtk_math_view_get_top(GtkMathView_val (arg1), &x, &y); - result = alloc(2, 0); - Store_field(result, 0, Val_int(x)); - Store_field(result, 0, Val_int(y)); - CAMLreturn (result); -} - - -value ml_gtk_math_view_mDOMNode_of_bodex_option (value arg1) -{ - CAMLparam1(arg1); - - mDOMNodeRef nr; - CAMLlocal1 (tmp); - CAMLlocal1 (optval); - CAMLlocal1 (res); - - if (arg1==Val_int(0)) { - assert(0); - } else { - tmp = Field(arg1, 0); - nr = (mDOMNodeRef) Field(tmp, 1); - } - optval = Val_mDOMNodeRef(nr); - if (optval==Val_int(0)) { - assert(0); - } else { - res = Field(optval, 0); - } - - CAMLreturn(res); -} - -value ml_gtk_math_view_mDOMNode_option_of_bodex_option (value arg1) -{ - CAMLparam1(arg1); - - mDOMNodeRef nr; - CAMLlocal1 (tmp); - - if (arg1==Val_int(0)) { - nr=NULL; - } else { - tmp = Field(arg1, 0); - nr = (mDOMNodeRef) Field(tmp, 1); - } - - CAMLreturn(Val_mDOMNodeRef(nr)); -} diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/test/.cvsignore b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/test/.cvsignore deleted file mode 100644 index 1968614b7..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/test/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -*.cmo *.cmi *.cmx t1lib.log test test.opt test.ps test.o diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/test/Makefile b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/test/Makefile deleted file mode 100644 index d631d239f..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/test/Makefile +++ /dev/null @@ -1,45 +0,0 @@ -LABLGTK_DIR = /usr/lib/ocaml/lablgtk -LABLGTK_MATHVIEW_DIR = .. -MINIDOM_DIR = ../minidom -OCAMLC = ocamlc -I $(LABLGTK_DIR) -I $(LABLGTK_MATHVIEW_DIR) \ - -I $(MINIDOM_DIR) -I mlmathview -OCAMLOPT = ocamlopt -I $(LABLGTK_DIR) -I $(LABLGTK_MATHVIEW_DIR) \ - -I $(MINIDOM_DIR) -I mlmathview - -all: test -opt: test.opt - -test: test.cmo - $(OCAMLC) -custom -o test lablgtk.cma gtkInit.cmo \ - $(MINIDOM_DIR)/minidom.cmo \ - $(MINIDOM_DIR)/ominidom.cmo \ - $(LABLGTK_MATHVIEW_DIR)/lablgtkmathview.cma \ - -cclib "$(MINIDOM_DIR)/ml_minidom.o" \ - test.cmo \ - -cclib "-lstr -L/usr/lib -L/usr/X11R6/lib -lgtk -lgdk \ - -rdynamic -lgmodule -lglib -ldl -lXi -lXext -lX11 -lm \ - -L/usr/local/lib/gtkmathview -lgtkmathview \ - $(LABLGTK_MATHVIEW_DIR)/ml_gtk_mathview.o" - -test.opt: test.cmx - $(OCAMLOPT) -o test.opt lablgtk.cmxa gtkInit.cmx \ - $(MINIDOM_DIR)/minidom.cmx \ - $(MINIDOM_DIR)/ominidom.cmx \ - $(LABLGTK_MATHVIEW_DIR)/lablgtkmathview.cmxa \ - -cclib "$(MINIDOM_DIR)/ml_minidom.o" \ - test.cmx \ - -cclib "-lstr -L/usr/lib -L/usr/X11R6/lib -lgtk -lgdk \ - -rdynamic -lgmodule -lglib -ldl -lXi -lXext -lX11 -lm \ - -L/usr/local/lib/gtkmathview -lgtkmathview \ - $(LABLGTK_MATHVIEW_DIR)/ml_gtk_mathview.o" - -.SUFFIXES: .ml .mli .cmo .cmi .cmx -.ml.cmo: - $(OCAMLC) -c $< -.mli.cmi: - $(OCAMLC) -c $< -.ml.cmx: - $(OCAMLOPT) -c $< - -clean: - rm -f *.cm[iox] *.o test test.opt t1lib.log test.ps diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/test/t1.config b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/test/t1.config deleted file mode 100644 index afb669e95..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/test/t1.config +++ /dev/null @@ -1,3 +0,0 @@ -ENCODING=. -AFM=/usr/share/texmf/fonts/afm/ -TYPE1=/usr/share/texmf/fonts/type1/bluesky/cm/:/usr/X11R6/lib/X11/fonts/Type1/:. diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/test/test.ml b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/test/test.ml deleted file mode 100644 index dd66d3885..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/test/test.ml +++ /dev/null @@ -1,297 +0,0 @@ -(******************************************************************************) -(* Claudio Sacerdoti Coen *) -(* 25/09/2000 *) -(* *) -(* This is a simple test for the OCaml (LablGtk indeed) binding of the *) -(* MathView widget *) -(******************************************************************************) - -(* Callbacks *) -let jump (node : Ominidom.o_mDOMNode) = - let module O = Ominidom in - print_string ("jump: " ^ - (match node#get_attribute (O.o_mDOMString_of_string "href") with - | Some x -> x#get_string - | None -> "NO HREF FOR THIS NODE" - ) ^ "\n"); - flush stdout -;; - -let selection_changed mathview (node : Ominidom.o_mDOMNode option) = - let module O = Ominidom in - print_string ("selection_changed: " ^ - (match node with - None -> "selection_changed on nothing" - | Some node -> - match node#get_name with - | Some x -> x#get_string - | None -> "on element without name" - ) ^ "\n"); - mathview#set_selection node; - flush stdout -;; - - -let clicked (node : Ominidom.o_mDOMNode) = - let module O = Ominidom in - print_string ("clicked: " ^ - (match node#get_name with - | Some x -> x#get_string - | None -> "no name" - ) ^ "\n"); - flush stdout -;; - - -let activate_t1 mathview () = - mathview#set_font_manager_type `font_manager_t1; - print_string "WIDGET SET WITH T1 FONTS\n" ; - flush stdout -;; - -let activate_gtk mathview () = - mathview#set_font_manager_type `font_manager_gtk; - print_string "WIDGET SET WITH GTK FONTS\n" ; - flush stdout -;; - -let get_font_manager_type mathview () = - print_string "CURRENT FONT MANAGER TYPE: "; - begin - match mathview#get_font_manager_type with - | `font_manager_t1 -> print_string "T1" - | `font_manager_gtk -> print_string "GTK" - end; - print_newline(); - flush stdout -;; - -let load mathview () = - mathview#load "test.xml" ; - print_string "load: SEEMS TO WORK\n" ; - flush stdout -;; - -let get_selection mathview () = - let module O = Ominidom in - let selection = - match mathview#get_selection with - | Some node -> - begin - match node#get_name with - | Some name -> name#get_string - | None -> "element with no name!" - end - | None -> "no selection!" - in - print_string ("get_selection: " ^ selection ^ "\n") ; - flush stdout -;; - -let set_selection mathview () = - let module O = Ominidom in - begin - match mathview#get_selection with - | Some node -> - begin - try - let parent_node = node#get_parent in - mathview#set_selection (Some parent_node); - print_string "set selection: SEEMS TO WORK\n" - with - _ -> print_string "EXCEPTION: no parent\n" - end - | None -> - mathview#set_selection None; - print_string "no selection\n" - end ; - flush stdout -;; - -let unload mathview () = - mathview#unload ; - print_string "unload: SEEMS TO WORK\n" ; - flush stdout -;; - -let get_width mathview () = - print_string ("get_width: " ^ string_of_int (mathview#get_width) ^ "\n") ; - flush stdout -;; - -let get_height mathview () = - print_string ("get_height: " ^ string_of_int (mathview#get_height) ^ "\n") ; - flush stdout -;; - -let get_top mathview () = - let (x,y) = mathview#get_top in - print_string ("get_top: ("^ string_of_int x ^ "," ^ string_of_int y ^ ")\n") ; - flush stdout -;; - -let set_top mathview () = - mathview#set_top 0 0; - print_string "set_top: SEEM TO WORK\n" ; - flush stdout -;; - -let set_adjustments mathview () = - let adj1 = GData.adjustment () in - let adj2 = GData.adjustment () in - mathview#set_adjustments adj1 adj2 ; - adj1#set_value ((adj1#lower +. adj1#upper) /. 2.0) ; - adj2#set_value ((adj2#lower +. adj2#upper) /. 2.0) ; - print_string "set_adjustments: SEEM TO WORK\n" ; - flush stdout -;; - -let get_hadjustment mathview () = - let adj = mathview#get_hadjustment in - adj#set_value ((adj#lower +. adj#upper) /. 2.0) ; - print_string "get_hadjustment: SEEM TO WORK\n" ; - flush stdout -;; - -let get_vadjustment mathview () = - let adj = mathview#get_vadjustment in - adj#set_value ((adj#lower +. adj#upper) /. 2.0) ; - print_string "get_vadjustment: SEEM TO WORK\n" ; - flush stdout -;; - -let get_buffer mathview () = - let buffer = mathview#get_buffer in - Gdk.Draw.rectangle buffer (Gdk.GC.create buffer) ~x:0 ~y:0 - ~width:50 ~height:50 ~filled:true () ; - print_string "get_buffer: SEEMS TO WORK (hint: force the widget redrawing)\n"; - flush stdout -;; - -let get_frame mathview () = - let frame = mathview#get_frame in - frame#set_shadow_type `NONE ; - print_string "get_frame: SEEMS TO WORK\n" ; - flush stdout -;; - -let set_font_size mathview () = - mathview#set_font_size 24 ; - print_string "set_font_size: FONT IS NOW 24\n" ; - flush stdout -;; - -let get_font_size mathview () = - print_string ("get_font_size: " ^ string_of_int (mathview#get_font_size) ^ "\n") ; - flush stdout -;; - -let set_anti_aliasing mathview () = - mathview#set_anti_aliasing true ; - print_string "set_anti_aliasing: ON\n" ; - flush stdout -;; - -let get_anti_aliasing mathview () = - print_string ("get_anti_aliasing: " ^ - (match mathview#get_anti_aliasing with true -> "ON" | false -> "OFF") ^ - "\n") ; - flush stdout -;; - -let set_kerning mathview () = - mathview#set_kerning true ; - print_string "set_kerning: ON\n" ; - flush stdout -;; - -let get_kerning mathview () = - print_string ("get_kerning: " ^ - (match mathview#get_kerning with true -> "ON" | false -> "OFF") ^ - "\n") ; - flush stdout -;; - -let set_log_verbosity mathview () = - mathview#set_log_verbosity 3 ; - print_string "set_log_verbosity: NOW IS 3\n" ; - flush stdout -;; - -let get_log_verbosity mathview () = - print_string ("get_log_verbosity: " ^ - string_of_int mathview#get_log_verbosity ^ - "\n") ; - flush stdout -;; - -let export_to_postscript (mathview : GMathView.math_view) () = - mathview#export_to_postscript ~filename:"test.ps" (); - print_string "expor_to_postscript: SEEMS TO WORK (hint: look at test.ps)\n"; - flush stdout -;; - -(* Widget creation *) -let main_window = GWindow.window ~title:"GtkMathView test" () in -let vbox = GPack.vbox ~packing:main_window#add () in -let sw = GBin.scrolled_window ~width:50 ~height:50 ~packing:vbox#pack () in -let mathview= GMathView.math_view ~packing:sw#add ~width:50 ~height:50 () in -let table = GPack.table ~rows:6 ~columns:5 ~packing:vbox#pack () in -let button_gtk=GButton.button ~label:"activate Gtk fonts" ~packing:(table#attach ~left:0 ~top:0) () in -let button_load = GButton.button ~label:"load" ~packing:(table#attach ~left:1 ~top:0) () in -let button_unload = GButton.button ~label:"unload" ~packing:(table#attach ~left:2 ~top:0) () in -let button_get_selection = GButton.button ~label:"get_selection" ~packing:(table#attach ~left:3 ~top:0) () in -let button_set_selection = GButton.button ~label:"set_selection" ~packing:(table#attach ~left:4 ~top:0) () in -let button_get_width = GButton.button ~label:"get_width" ~packing:(table#attach ~left:0 ~top:1) () in -let button_get_height = GButton.button ~label:"get_height" ~packing:(table#attach ~left:1 ~top:1) () in -let button_get_top = GButton.button ~label:"get_top" ~packing:(table#attach ~left:2 ~top:1) () in -let button_set_top = GButton.button ~label:"set_top" ~packing:(table#attach ~left:3 ~top:1) () in -let button_set_adjustments = GButton.button ~label:"set_adjustments" ~packing:(table#attach ~left:4 ~top:1) () in -let button_get_hadjustment = GButton.button ~label:"get_hadjustment" ~packing:(table#attach ~left:0 ~top:2) () in -let button_get_vadjustment = GButton.button ~label:"get_vadjustment" ~packing:(table#attach ~left:1 ~top:2) () in -let button_get_buffer = GButton.button ~label:"get_buffer" ~packing:(table#attach ~left:2 ~top:2) () in -let button_get_frame = GButton.button ~label:"get_frame" ~packing:(table#attach ~left:3 ~top:2) () in -let button_set_font_size = GButton.button ~label:"set_font_size" ~packing:(table#attach ~left:4 ~top:2) () in -let button_get_font_size = GButton.button ~label:"get_font_size" ~packing:(table#attach ~left:0 ~top:3) () in -let button_set_anti_aliasing = GButton.button ~label:"set_anti_aliasing" ~packing:(table#attach ~left:1 ~top:3) () in -let button_get_anti_aliasing = GButton.button ~label:"get_anti_aliasing" ~packing:(table#attach ~left:2 ~top:3) () in -let button_set_kerning = GButton.button ~label:"set_kerning" ~packing:(table#attach ~left:3 ~top:3) () in -let button_get_kerning = GButton.button ~label:"get_kerning" ~packing:(table#attach ~left:4 ~top:3) () in -let button_set_log_verbosity = GButton.button ~label:"set_log_verbosity" ~packing:(table#attach ~left:0 ~top:4) () in -let button_get_log_verbosity = GButton.button ~label:"get_log_verbosity" ~packing:(table#attach ~left:1 ~top:4) () in -let button_export_to_postscript = GButton.button ~label:"export_to_postscript" ~packing:(table#attach ~left:2 ~top:4) () in -let button_t1 = GButton.button ~label:"activate T1 fonts" ~packing:(table#attach ~left:3 ~top:4) () in -let button_get_font_manager_type = GButton.button ~label:"get_font_manager" ~packing:(table#attach ~left:4 ~top:4) () in -(* Signals connection *) -ignore(button_gtk#connect#clicked (activate_gtk mathview)) ; -ignore(button_load#connect#clicked (load mathview)) ; -ignore(button_unload#connect#clicked (unload mathview)) ; -ignore(button_get_selection#connect#clicked (get_selection mathview)) ; -ignore(button_set_selection#connect#clicked (set_selection mathview)) ; -ignore(button_get_width#connect#clicked (get_width mathview)) ; -ignore(button_get_height#connect#clicked (get_height mathview)) ; -ignore(button_get_top#connect#clicked (get_top mathview)) ; -ignore(button_set_top#connect#clicked (set_top mathview)) ; -ignore(button_set_adjustments#connect#clicked (set_adjustments mathview)) ; -ignore(button_get_hadjustment#connect#clicked (get_hadjustment mathview)) ; -ignore(button_get_vadjustment#connect#clicked (get_vadjustment mathview)) ; -ignore(button_get_buffer#connect#clicked (get_buffer mathview)) ; -ignore(button_get_frame#connect#clicked (get_frame mathview)) ; -ignore(button_set_font_size#connect#clicked (set_font_size mathview)) ; -ignore(button_get_font_size#connect#clicked (get_font_size mathview)) ; -ignore(button_set_anti_aliasing#connect#clicked (set_anti_aliasing mathview)) ; -ignore(button_get_anti_aliasing#connect#clicked (get_anti_aliasing mathview)) ; -ignore(button_set_kerning#connect#clicked (set_kerning mathview)) ; -ignore(button_get_kerning#connect#clicked (get_kerning mathview)) ; -ignore(button_set_log_verbosity#connect#clicked (set_log_verbosity mathview)) ; -ignore(button_get_log_verbosity#connect#clicked (get_log_verbosity mathview)) ; -ignore(button_export_to_postscript#connect#clicked (export_to_postscript mathview)) ; -ignore(button_t1#connect#clicked (activate_t1 mathview)) ; -ignore(button_get_font_manager_type#connect#clicked (get_font_manager_type mathview)) ; -ignore(mathview#connect#jump jump) ; -ignore(mathview#connect#clicked clicked) ; -ignore(mathview#connect#selection_changed (selection_changed mathview)) ; -(* Main Loop *) -main_window#show () ; -GMain.Main.main () -;; diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/test/test.xml b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/test/test.xml deleted file mode 100644 index b0f8c1563..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.1/test/test.xml +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - a - - x - - + - b - - - - x - 2 - - + - - p - - x - - + - q - - - - d - x - = - - - a2 - - - ln - - - ( - - x2 - + - - p - - x - - + - q - - ) - - - - + - - - - - 2 - - b - - - - - a - - p - - - - - - 4 - - q - - - - - p - 2 - - - - - - - arctg - - - - - 2 - - x - - + - p - - - - - 4 - - q - - - - - p - 2 - - - - - - - + - c - - diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2-1.spec b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2-1.spec deleted file mode 100644 index cad3d0626..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2-1.spec +++ /dev/null @@ -1,26 +0,0 @@ -Summary: GtkMathView : the binding for lablgtk of the GtkMathView widget -Name: lablgtk-20001129_gtkmathview -Version: 0.2.2 -Release: 1 -Copyright: LGPL -Group: Development/Libraries -Requires: lablgtk_20001129 gtkmathview -Source: www.cs.unibo.it:/~lpadovan/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2.tar.gz -%description -GtkMathView is the binding for lablgtk of the GtkMathView widget. - -%prep -%setup - -%build -make -make opt - -%install -make install - -%files -%doc COPYING - -/usr/lib/ocaml/lablgtk/mathview -/usr/lib/ocaml/minidom diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2.tar.gz b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2.tar.gz deleted file mode 100644 index 96d86308f2e956315b4ea584400b93ddf6b4d544..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15150 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 F{{Xo9PI3SM diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/.cvsignore b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/.cvsignore deleted file mode 100644 index cd9e25037..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -*.cmi *.cmo *.cmx *.cma *.cmxa config.make diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/.depend b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/.depend deleted file mode 100644 index 600449bb8..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/.depend +++ /dev/null @@ -1,4 +0,0 @@ -gMathView.cmo: gtkMathView.cmo gtk_mathview.cmo -gMathView.cmx: gtkMathView.cmx gtk_mathview.cmx -gtkMathView.cmo: gtk_mathview.cmo -gtkMathView.cmx: gtk_mathview.cmx diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/COPYING b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/COPYING deleted file mode 100644 index 20b480a10..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/COPYING +++ /dev/null @@ -1,11 +0,0 @@ -This library is made available under the LGPL. -You should have got a copy of the LGPL with Objective Caml. -The LGPL applies to all the files in this directory, but not in -subdirectories. - -For the test subdirectory, there is no specific licensing policy, -but you may freely take inspiration from the code, and copy parts of -it in your application. - -Author: - Claudio Sacerdoti Coen diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/Makefile b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/Makefile deleted file mode 100644 index b8adbb47b..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/Makefile +++ /dev/null @@ -1,109 +0,0 @@ -# Makefile for lablgtk_mathview. - -LABLGTKDIR = /usr/lib/ocaml/lablgtk -MINIDOMDIR = ./minidom -TESTDIR = ./test -MLFLAGS += -I $(LABLGTKDIR) -I $(MINIDOMDIR) - -TARGETS = ml_gtk_mathview.o lablgtkmathview.cma - -all: Minidom $(TARGETS) - -opt: Minidom.opt lablgtkmathviewopt - -Minidom: - cd $(MINIDOMDIR); make - -Minidom.opt: - cd $(MINIDOMDIR); make opt - -configure: - @rm -f config.make - @$(MAKE) --no-print-directory -f configure.mk - -depend: - @rm -f .depend - @$(MAKE) --no-print-directory -f configure.mk .depend - -.depend config.make: - @$(MAKE) --no-print-directory -f configure.mk - -COMPILER = $(CAMLC) $(MLFLAGS) -w s -labels -c -LINKER = $(CAMLC) $(MLFLAGS) -COMPOPT = $(CAMLOPT) $(MLFLAGS) -w s -labels -c -LINKOPT = $(CAMLOPT) $(MLFLAGS) - -include config.make - -INSTALLDIR = $(LIBDIR)/lablgtk/mathview - -MLLIBS = lablgtkmathview.cma -CLIBS = -MLLINK = unix.cma str.cma - -ifdef DEBUG -CFLAGS = -g $(GTKCFLAGS) -MLLINK += -cclib -lcamlrund -MLFLAGS += -g -else -CFLAGS = -O -DGTK_NO_CHECK_CASTS -DGTK_DISABLE_COMPAT_H $(GTKCFLAGS) -endif -CFLAGS += $(MINIDOMCFLAGS) $(GTKMATHVIEWCFLAGS) - -THFLAGS = -thread -THLINK = unix.cma threads.cma - -ifdef USE_CC -CCOMPILER = $(CC) -c -I$(LIBDIR) $(CFLAGS) -else -CCOMPILER = ocamlc -c -ccopt "$(CFLAGS)" -endif - -# Rules -.SUFFIXES: .ml .mli .cmo .cmi .cmx .c .o .var .h .opt .def -.c.o: - $(CCOMPILER) $< -.ml.cmo: - $(COMPILER) $< -.mli.cmi: - $(COMPILER) $< -.ml.cmx: - $(COMPOPT) $< -.var.h: - ./var2def < $< > $@ -.var.c: - ./var2conv < $< > $@ - -# Targets -COBJS = ml_gtk_mathview.o -MLOBJS = gtk_mathview.cmo gtkMathView.cmo gMathView.cmo -ALLOBJS = $(MLOBJS) - -lablgtkmathviewopt: $(CLIBS) $(MLLIBS:.cma=.cmxa) - -install: - if test -d $(INSTALLDIR); then : ; else mkdir -p $(INSTALLDIR); fi - cp $(ALLOBJS:.cmo=.cmi) $(INSTALLDIR) - if test -f *.mli ; then cp *.mli $(INSTALLDIR) ; fi - cp $(ALLOBJS:.cmo=.ml) $(INSTALLDIR) - cp $(MLLIBS) $(INSTALLDIR) - cp $(COBJS) $(INSTALLDIR) - if test ! -z "$(CLIBS)" ; then cp $(CLIBS) $(INSTALLDIR) ; fi - if test -f lablgtkmathview.cmxa; then \ - cp $(MLLIBS:.cma=.cmxa) $(MLLIBS:.cma=.a) \ - $(INSTALLDIR); fi - -lablgtkmathview.cma: $(MLOBJS) - $(LINKER) -a -custom -o $@ $(MLOBJS) $(GTKLIBS) -cclib "$(GTKMATHVIEWLIBS)" -cclib "$(MINIDOMLIBS)" -lablgtkmathview.cmxa: $(MLOBJS:.cmo=.cmx) - $(LINKOPT) -a -o $@ $(MLOBJS:.cmo=.cmx) $(GTKLIBS) -cclib "$(GTKMATHVIEWLIBS)" -cclib "$(MINIDOMLIBS)" - -ml_gtk.o: $(LABLGTKDIR)/gtk_tags.c $(LABLGTKDIR)/gtk_tags.h \ - $(LABLGTKDIR)/ml_gtk.h $(LABLGTKDIR)/ml_gdk.h $(LABLGTKDIR)/wrappers.h - -clean: - rm -f *.cm* *.o *.a *_tags.[ch] $(TARGETS) - cd $(MINIDOMDIR); make clean - cd $(TESTDIR); make clean - -include .depend diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/configure.mk b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/configure.mk deleted file mode 100644 index 8982371ee..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/configure.mk +++ /dev/null @@ -1,59 +0,0 @@ -# makefile for configuring lablGTK_mathview - -# Default compilers -CAMLC = ocamlc -CAMLOPT = ocamlopt - -# Default installation directories -BINDIR = `$(GETBINDIR)` -INSTALLDIR = $(LIBDIR)/lablgtk/mathview - -# Autoconf -GETLIBDIR = ocamlc -v | grep "^Standard" | sed 's/^.*: *//' -LIBDIR = `$(GETLIBDIR)` -GETBINDIR = $(GETLIBDIR) | sed -e 's|/lib/[^/]*$$|/bin|' -e 's|/lib$$|/bin|' -GETRANLIB = which ranlib 2>/dev/null | sed -e 's|.*/ranlib$$|!|' -e 's/^[^!]*$$/:/' -e 's/!/ranlib/' - -ifdef USE_GNOME -GTKGETCFLAGS = gtk-config --cflags`" -I"`gnome-config --includedir -GNOMELIBS = `gnome-config --libs gtkxmhtml` -else -GTKGETCFLAGS = gtk-config --cflags -endif - -GTKGETLIBS = gtk-config --libs - -configure: .depend config.make - -.depend: - ocamldep *.ml *.mli > .depend - -config.make: - @echo CAMLC=$(CAMLC) > config.make - @echo CAMLOPT=$(CAMLOPT) >> config.make - @echo USE_GL=$(USE_GL) >> config.make - @echo USE_GNOME=$(USE_GNOME) >> config.make - @echo USE_CC=$(USE_CC) >> config.make - @echo DEBUG=$(DEBUG) >> config.make - @echo CC=$(CC) >> config.make - @echo RANLIB=`$(GETRANLIB)` >> config.make - @echo LIBDIR=$(LIBDIR) >> config.make - @echo BINDIR=`$(GETBINDIR)` >> config.make - @echo INSTALLDIR=$(INSTALLDIR) >> config.make -# Luca: was -# @echo GTKCFLAGS=`$(GTKGETCFLAGS)` -I/usr/lib/ocaml/lablgtk >> config.make -# Luca: now - @echo GTKCFLAGS=`$(GTKGETCFLAGS)` -I$(LIBDIR)/lablgtk >> config.make - @echo GTKLIBS=`$(GTKGETLIBS)` | \ - sed -e 's/-l/-cclib &/g' -e 's/-[LRWr][^ ]*/-ccopt &/g' \ - >> config.make -# Luca: GtkMathView configuration - @echo GTKMATHVIEWCFLAGS=`gtkmathview-config --cflags` >> config.make - @echo MINIDOMCFLAGS=`minidom-config --cflags` >> config.make - @echo GTKMATHVIEWLIBS=`gtkmathview-config --libs` >> config.make - @echo MINIDOMLIBS=`minidom-config --libs` >> config.make -# Luca: end of GtkMathView configuration - @echo GNOMELIBS=$(GNOMELIBS) | \ - sed -e 's/-l/-cclib &/g' -e 's/-[LRWr][^ ]*/-ccopt &/g' \ - >> config.make - cat config.make diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/gMathView.ml b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/gMathView.ml deleted file mode 100644 index e897ccfdb..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/gMathView.ml +++ /dev/null @@ -1,80 +0,0 @@ -open Gaux -open Gtk -open Gtk_mathview -open GtkBase -open GtkMathView -open GObj - -exception ErrorLoadingFile of string;; -exception ErrorWritingFile of string;; -exception NoSelection;; - -class math_view_signals obj = object - inherit GContainer.container_signals obj - method clicked = GtkSignal.connect ~sgn:MathView.Signals.clicked obj ~after - method jump = GtkSignal.connect ~sgn:MathView.Signals.jump obj ~after - method selection_changed = - GtkSignal.connect ~sgn:MathView.Signals.selection_changed obj ~after -end - -class math_view obj = object - inherit GContainer.container (obj : Gtk_mathview.math_view obj) - method connect = new math_view_signals obj - method load ~filename = - if not (MathView.load obj ~filename) then raise (ErrorLoadingFile filename) - method unload = MathView.unload obj - method get_selection = MathView.get_selection obj - method set_selection (node : Ominidom.o_mDOMNode option) = MathView.set_selection obj node - method get_width = MathView.get_width obj - method get_height = MathView.get_height obj - method get_top = MathView.get_top obj - method set_top = MathView.set_top obj - method set_adjustments = - fun adj1 adj2 -> - MathView.set_adjustments obj (GData.as_adjustment adj1) - (GData.as_adjustment adj2) - method get_hadjustment = new GData.adjustment (MathView.get_hadjustment obj) - method get_vadjustment = new GData.adjustment (MathView.get_vadjustment obj) - method get_buffer = MathView.get_buffer obj - method get_frame = new GBin.frame (MathView.get_frame obj) - method set_font_size = MathView.set_font_size obj - method get_font_size = MathView.get_font_size obj - method set_anti_aliasing = MathView.set_anti_aliasing obj - method get_anti_aliasing = MathView.get_anti_aliasing obj - method set_kerning = MathView.set_kerning obj - method get_kerning = MathView.get_kerning obj - method set_log_verbosity = MathView.set_log_verbosity obj - method get_log_verbosity = MathView.get_log_verbosity obj - method export_to_postscript - ?(width = 595) ?(height = 822) ?(x_margin = 72) ?(y_margin = 72) - ?(disable_colors = false) ~filename () = - let result = MathView.export_to_postscript obj - ~width ~height ~x_margin ~y_margin ~disable_colors ~filename - in - if not result then raise (ErrorWritingFile filename) - method get_font_manager_type = MathView.get_font_manager_type obj - method set_font_manager_type ~fm_type = MathView.set_font_manager_type obj ~fm_type -end - -let math_view ?adjustmenth ?adjustmentv ?font_size ?font_manager ?border_width - ?width ?height ?packing ?show () = - let w = - MathView.create - ?adjustmenth:(may_map ~f:GData.as_adjustment adjustmenth) - ?adjustmentv:(may_map ~f:GData.as_adjustment adjustmentv) - () - in - Container.set w ?border_width ?width ?height; - let mathview = pack_return (new math_view w) ~packing ~show in - begin - match font_size with - | Some size -> mathview#set_font_size size - | None -> () - end; - begin - match font_manager with - | Some manager -> mathview#set_font_manager_type ~fm_type:manager - | None -> () - end; - mathview -;; diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/gtkMathView.ml b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/gtkMathView.ml deleted file mode 100644 index 4c893fab4..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/gtkMathView.ml +++ /dev/null @@ -1,118 +0,0 @@ -open Gtk -open Gtk_mathview -open Tags -open GtkBase -open Gpointer - -external mDOMNode_of_boxed_option : - Gpointer.boxed option -> Minidom.mDOMNode = - "ml_gtk_math_view_mDOMNode_of_bodex_option" - -external mDOMNode_option_of_boxed_option : - Gpointer.boxed option -> Minidom.mDOMNode option = - "ml_gtk_math_view_mDOMNode_option_of_bodex_option" - -let o_mDOMNode_of_mDOMNode node = new Ominidom.o_mDOMNode node - -let o_mDOMNode_option_of_mDOMNode_option = - function - | Some x -> Some (o_mDOMNode_of_mDOMNode x) - | None -> None - -let mDOMNode_option_of_o_mDOMNode_option = - function - | Some x -> Some (x#get_dom_node) - | None -> None - -module MathView = struct - exception NoSelection - - let cast w : math_view obj = Object.try_cast w "GtkMathView" - external create : Gtk.adjustment optobj -> Gtk.adjustment optobj -> - math_view obj = "ml_gtk_math_view_new" - let create ~adjustmenth ~adjustmentv () = - create (optboxed adjustmenth) (optboxed adjustmentv) - external load : [>`math_view] obj -> filename:string -> bool = - "ml_gtk_math_view_load" - external unload : [>`math_view] obj -> unit = - "ml_gtk_math_view_unload" - external raw_get_selection : [>`math_view] obj -> Minidom.mDOMNode option = - "ml_gtk_math_view_get_selection" - let get_selection obj = - o_mDOMNode_option_of_mDOMNode_option (raw_get_selection obj) - external raw_set_selection : [>`math_view] obj -> Minidom.mDOMNode option -> unit= - "ml_gtk_math_view_set_selection" - let set_selection obj node = - raw_set_selection obj (mDOMNode_option_of_o_mDOMNode_option node) - external get_width : [>`math_view] obj -> int = - "ml_gtk_math_view_get_width" - external get_height : [>`math_view] obj -> int = - "ml_gtk_math_view_get_height" - external get_top : [>`math_view] obj -> (int * int) = - "ml_gtk_math_view_get_top" - external set_top : [>`math_view] obj -> int -> int -> unit = - "ml_gtk_math_view_set_top" - external set_adjustments : [>`math_view] obj -> Gtk.adjustment obj -> Gtk.adjustment obj -> unit = - "ml_gtk_math_view_set_adjustments" - external get_hadjustment : [>`math_view] obj -> Gtk.adjustment obj = - "ml_gtk_math_view_get_hadjustment" - external get_vadjustment : [>`math_view] obj -> Gtk.adjustment obj = - "ml_gtk_math_view_get_vadjustment" - external get_buffer : [>`math_view] obj -> Gdk.pixmap = - "ml_gtk_math_view_get_buffer" - external get_frame : [>`math_view] obj -> [`frame] obj = - "ml_gtk_math_view_get_frame" - external set_font_size : [>`math_view] obj -> int -> unit = - "ml_gtk_math_view_set_font_size" - external get_font_size : [>`math_view] obj -> int = - "ml_gtk_math_view_get_font_size" - external set_anti_aliasing : [>`math_view] obj -> bool -> unit = - "ml_gtk_math_view_set_anti_aliasing" - external get_anti_aliasing : [>`math_view] obj -> bool = - "ml_gtk_math_view_get_anti_aliasing" - external set_kerning : [>`math_view] obj -> bool -> unit = - "ml_gtk_math_view_set_kerning" - external get_kerning : [>`math_view] obj -> bool = - "ml_gtk_math_view_get_kerning" - external set_log_verbosity : [>`math_view] obj -> int -> unit = - "ml_gtk_math_view_set_log_verbosity" - external get_log_verbosity : [>`math_view] obj -> int = - "ml_gtk_math_view_get_log_verbosity" - external export_to_postscript : - [>`math_view] obj -> width:int -> height:int -> x_margin:int -> y_margin:int -> disable_colors:bool -> filename:string -> bool = - "ml_gtk_math_view_export_to_postscript_bytecode" "ml_gtk_math_view_export_to_postscript_native" - external get_font_manager_type : [>`math_view] obj -> - [`font_manager_gtk | `font_manager_t1] = - "ml_gtk_math_view_get_font_manager_type" - external set_font_manager_type : [>`math_view] obj -> - fm_type:[`font_manager_gtk | `font_manager_t1] -> unit = - "ml_gtk_math_view_set_font_manager_type" - - module Signals = struct - open GtkSignal - - let clicked : ([>`math_view],_) t = - let marshal_clicked f _ = - function - [GtkArgv.POINTER node] -> f (o_mDOMNode_of_mDOMNode (mDOMNode_of_boxed_option node)) - | _ -> invalid_arg "GtkMathView.MathView.Signals.marshal_clicked" - in - { name = "clicked"; marshaller = marshal_clicked } - - let jump : ([>`math_view],_) t = - let marshal_jump f _ = - function - [GtkArgv.POINTER node] -> f (o_mDOMNode_of_mDOMNode (mDOMNode_of_boxed_option node)) - | _ -> invalid_arg "GtkMathView.MathView.Signals.marshal_jump" - in - { name = "jump"; marshaller = marshal_jump } - - let selection_changed : ([>`math_view],_) t = - let marshal_selection_changed f _ = - function - [GtkArgv.POINTER node] -> f (o_mDOMNode_option_of_mDOMNode_option (mDOMNode_option_of_boxed_option node)) - | _ -> invalid_arg "GtkMathView.MathView.Signals.marshal_selection_changed" - in - { name = "selection_changed"; marshaller = marshal_selection_changed } - end -end diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/gtk_mathview.ml b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/gtk_mathview.ml deleted file mode 100644 index 745a1ba82..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/gtk_mathview.ml +++ /dev/null @@ -1 +0,0 @@ -type math_view = [`widget|`container|`bin|`eventbox|`math_view] diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/minidom/.cvsignore b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/minidom/.cvsignore deleted file mode 100644 index 84bdd8eff..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/minidom/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -*.cmi *.cmo *.cmx test test.opt diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/minidom/Makefile b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/minidom/Makefile deleted file mode 100644 index 6fe73af6a..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/minidom/Makefile +++ /dev/null @@ -1,51 +0,0 @@ -LIBDIR = /usr/lib/ocaml -INSTALLDIR = $(LIBDIR)/minidom -OBJECTS = minidom.cmi minidom.cmo ml_minidom.o ominidom.cmi ominidom.cmo -OBJECTS_OPT = minidom.cmx ominidom.cmx -INST = minidom.o ominidom.o ml_minidom.h minidom.mli - -all: $(OBJECTS) test - -opt: $(OBJECTS_OPT) test.opt - -ml_minidom.o: ml_minidom.c - gcc -c -I/usr/lib/ocaml/caml/ `glib-config --cflags` `minidom-config --cflags` $< - -minidom.cmi: minidom.mli - ocamlc -c $< - -minidom.cmo: minidom.ml minidom.cmi - ocamlc -c $< - -minidom.cmx: minidom.ml minidom.cmi - ocamlopt -c $< - -ominidom.cmi: ominidom.mli - ocamlc -c $< - -ominidom.cmo: ominidom.ml - ocamlc -c $< - -ominidom.cmx: ominidom.ml - ocamlopt -c $< - -test.cmo: test.ml minidom.cmo - ocamlc -c test.ml - -test.cmx: test.ml minidom.cmx - ocamlopt -c test.ml - -test: test.cmo minidom.cmo ml_minidom.o - ocamlc -custom -o test minidom.cmo test.cmo ml_minidom.o \ - -cclib "`glib-config --libs` `minidom-config --libs`" - -test.opt: test.cmx minidom.cmx ml_minidom.o - ocamlopt -o test.opt minidom.cmx test.cmx ml_minidom.o \ - -cclib "`glib-config --libs` `minidom-config --libs`" - -install: - if test -d $(INSTALLDIR); then : ; else mkdir -p $(INSTALLDIR); fi - cp $(OBJECTS) $(OBJECTS_OPT) $(INST) $(INSTALLDIR) - -clean: - rm -f *.o *.cm? test test.opt diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/minidom/minidom.ml b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/minidom/minidom.ml deleted file mode 100644 index 31e677b3f..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/minidom/minidom.ml +++ /dev/null @@ -1,61 +0,0 @@ - -type mDOMString -type mDOMDoc -type mDOMNode -type mDOMAttr -type mDOMEntity - -external string_of_mDOMString : mDOMString -> string = "ml_string_of_mDOMString" -external mDOMString_of_string : string -> mDOMString = "ml_mDOMString_of_string" -external mDOMString_eq : string -> string -> bool = "ml_mDOMString_eq" - -external doc_load : string -> mDOMDoc = "ml_doc_load" -external doc_unload : mDOMDoc -> unit = "ml_doc_unload" - -external doc_new : mDOMString -> mDOMDoc = "ml_doc_new" -external doc_get_root_node : mDOMDoc -> mDOMNode = "ml_doc_get_root_node" - -external doc_add_entity : mDOMDoc -> mDOMString -> mDOMString -> mDOMEntity = "ml_doc_add_entity" -external doc_get_entity : mDOMDoc -> mDOMString -> mDOMEntity option = "ml_doc_get_entity" -external doc_get_predefined_entity : mDOMDoc -> mDOMString -> mDOMEntity option = "ml_doc_get_predefined_entity" -external entity_get_content : mDOMEntity -> mDOMString = "ml_entity_get_content" - -external node_is_text : mDOMNode -> bool = "ml_node_is_text" -external node_is_element : mDOMNode -> bool = "ml_node_is_element" -external node_is_blank : mDOMNode -> bool = "ml_node_is_blank" -external node_is_entity_ref : mDOMNode -> bool = "ml_node_is_entity_ref" -external node_get_type : mDOMNode -> int = "ml_node_get_type" -external node_get_name : mDOMNode -> mDOMString option = "ml_node_get_name" -external node_get_ns_uri : mDOMNode -> mDOMString option = "ml_node_get_ns_uri" -external node_get_attribute : mDOMNode -> mDOMString -> mDOMString option = "ml_node_get_attribute" -external node_get_attribute_ns : mDOMNode -> mDOMString -> mDOMString -> mDOMString option = "ml_node_get_attribute_ns" -external node_get_content : mDOMNode -> mDOMString option = "ml_node_get_content" -external node_get_parent : mDOMNode -> mDOMNode option = "ml_node_get_parent" -external node_get_prev_sibling : mDOMNode -> mDOMNode option = "ml_node_get_prev_sibling" -external node_get_next_sibling : mDOMNode -> mDOMNode option = "ml_node_get_next_sibling" -external node_get_first_child : mDOMNode -> mDOMNode option = "ml_node_get_first_child" -external node_get_first_attribute : mDOMNode -> mDOMAttr option = "ml_node_get_first_attribute" -external node_is_first : mDOMNode -> bool = "ml_node_is_first" -external node_is_last : mDOMNode -> bool = "ml_node_is_last" - -external attr_get_name : mDOMAttr -> mDOMString option = "ml_attr_get_name" -external attr_get_ns_uri : mDOMAttr -> mDOMString option = "ml_attr_get_ns_uri" -external attr_get_value : mDOMAttr -> mDOMString option = "ml_attr_get_value" -external attr_get_prev_sibling : mDOMAttr -> mDOMAttr option = "ml_attr_get_prev_sibling" -external attr_get_next_sibling : mDOMAttr -> mDOMAttr option = "ml_attr_get_next_sibling" -external attr_get_parent : mDOMAttr -> mDOMNode option = "ml_attr_get_parent" - -let rec node_list_of_node_first = - function None -> [] - | Some node -> node :: (node_list_of_node_first (node_get_next_sibling node)) - -let rec attr_list_of_attr_first = - function None -> [] - | Some attr -> attr :: (attr_list_of_attr_first (attr_get_next_sibling attr)) - -let node_get_children node = - (node_list_of_node_first (node_get_first_child node)) - -let node_get_attributes node = - (attr_list_of_attr_first (node_get_first_attribute node)) - diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/minidom/minidom.mli b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/minidom/minidom.mli deleted file mode 100644 index 0b655955b..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/minidom/minidom.mli +++ /dev/null @@ -1,50 +0,0 @@ - -type mDOMString -type mDOMDoc -type mDOMNode -type mDOMAttr -type mDOMEntity - -external string_of_mDOMString : mDOMString -> string = "ml_string_of_mDOMString" -external mDOMString_of_string : string -> mDOMString = "ml_mDOMString_of_string" -external mDOMString_eq : string -> string -> bool = "ml_mDOMString_eq" - -external doc_load : string -> mDOMDoc = "ml_doc_load" -external doc_unload : mDOMDoc -> unit = "ml_doc_unload" - -external doc_new : mDOMString -> mDOMDoc = "ml_doc_new" -external doc_get_root_node : mDOMDoc -> mDOMNode = "ml_doc_get_root_node" - -external doc_add_entity : doc:mDOMDoc -> name:mDOMString -> content:mDOMString -> mDOMEntity = "ml_doc_add_entity" -external doc_get_entity : doc:mDOMDoc -> name:mDOMString -> mDOMEntity option = "ml_doc_get_entity" -external doc_get_predefined_entity : doc:mDOMDoc -> name:mDOMString -> mDOMEntity option = "ml_doc_get_predefined_entity" -external entity_get_content : mDOMEntity -> mDOMString = "ml_entity_get_content" - -external node_is_text : mDOMNode -> bool = "ml_node_is_text" -external node_is_element : mDOMNode -> bool = "ml_node_is_element" -external node_is_blank : mDOMNode -> bool = "ml_node_is_blank" -external node_is_entity_ref : mDOMNode -> bool = "ml_node_is_entity_ref" -external node_get_type : mDOMNode -> int = "ml_node_get_type" -external node_get_name : mDOMNode -> mDOMString option = "ml_node_get_name" -external node_get_ns_uri : mDOMNode -> mDOMString option = "ml_node_get_ns_uri" -external node_get_attribute : node:mDOMNode -> name:mDOMString -> mDOMString option = "ml_node_get_attribute" -external node_get_attribute_ns : node:mDOMNode -> name:mDOMString -> ns_uri:mDOMString -> mDOMString option = "ml_node_get_attribute_ns" -external node_get_content : mDOMNode -> mDOMString option = "ml_node_get_content" -external node_get_parent : mDOMNode -> mDOMNode option = "ml_node_get_parent" -external node_get_prev_sibling : mDOMNode -> mDOMNode option = "ml_node_get_prev_sibling" -external node_get_next_sibling : mDOMNode -> mDOMNode option = "ml_node_get_next_sibling" -external node_get_first_child : mDOMNode -> mDOMNode option = "ml_node_get_first_child" -external node_get_first_attribute : mDOMNode -> mDOMAttr option = "ml_node_get_first_attribute" -external node_is_first : mDOMNode -> bool = "ml_node_is_first" -external node_is_last : mDOMNode -> bool = "ml_node_is_last" - -external attr_get_name : mDOMAttr -> mDOMString option = "ml_attr_get_name" -external attr_get_ns_uri : mDOMAttr -> mDOMString option = "ml_attr_get_ns_uri" -external attr_get_value : mDOMAttr -> mDOMString option = "ml_attr_get_value" -external attr_get_prev_sibling : mDOMAttr -> mDOMAttr option = "ml_attr_get_prev_sibling" -external attr_get_next_sibling : mDOMAttr -> mDOMAttr option = "ml_attr_get_next_sibling" -external attr_get_parent : mDOMAttr -> mDOMNode option = "ml_attr_get_parent" - -val node_get_children : mDOMNode -> mDOMNode list -val node_get_attributes : mDOMNode -> mDOMAttr list - diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/minidom/ml_minidom.c b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/minidom/ml_minidom.c deleted file mode 100644 index 10626143c..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/minidom/ml_minidom.c +++ /dev/null @@ -1,288 +0,0 @@ - -#include -#include -#include - -#include "minidom.h" - -#define Val_ptr(p) ((value) (p)) -#define Val_option(p,f) ((p != NULL) ? ml_some(f(p)) : Val_unit) -#define Val_mDOMString(s) (copy_string((char*) (s))) -#define mDOMString_val(v) ((mDOMStringRef) String_val(v)) - -static value -ml_some(value v) -{ - CAMLparam1(v); - value ret = alloc_small(1,0); - Field(ret,0) = v; - CAMLreturn(ret); -} - -value -ml_string_of_mDOMString(value s) -{ - CAMLparam1(s); - CAMLreturn(s); -} - -value -ml_mDOMString_of_string(value s) -{ - CAMLparam1(s); - CAMLreturn(s); -} - -value -ml_doc_load(value file_name) -{ - mDOMDocRef doc_ref; - - CAMLparam1(file_name); - - doc_ref = mdom_load(String_val(file_name), FALSE, NULL); - if (doc_ref == NULL) failwith("minidom: could not load document"); - - CAMLreturn((value) doc_ref); -} - -value -ml_doc_unload(value doc) -{ - CAMLparam1(doc); - - mdom_unload((mDOMDocRef) doc); - - CAMLreturn(Val_unit); -} - -value -ml_doc_new(value s) -{ - mDOMDocRef doc_ref; - - CAMLparam1(s); - - doc_ref = mdom_doc_new(mDOMString_val(s)); - if (doc_ref == NULL) failwith("minidom: could not create new document"); - - CAMLreturn((value) doc_ref); -} - - -value -ml_doc_get_root_node(value doc) -{ - mDOMNodeRef root; - - CAMLparam1(doc); - root = mdom_doc_get_root_node((mDOMDocRef) doc); - if (root == NULL) failwith("minidom: document has no root node!"); - - CAMLreturn((value) root); -} - -value -ml_doc_add_entity(value doc, value name, value content) -{ - mDOMEntityRef ent; - - CAMLparam3(doc, name, content); - ent = mdom_doc_add_entity((mDOMDocRef) doc, mDOMString_val(name), mDOMString_val(content)); - if (ent == NULL) failwith("minidom: could not add entity"); - - CAMLreturn((value) ent); -} - -value -ml_doc_get_entity(value doc, value name) -{ - mDOMEntityRef ent; - - CAMLparam2(doc, name); - ent = mdom_doc_get_entity((mDOMDocRef) doc, mDOMString_val(name)); - - CAMLreturn(Val_option(ent, Val_ptr)); -} - -value -ml_doc_get_predefined_entity(value name) -{ - mDOMEntityRef ent; - - CAMLparam1(name); - ent = mdom_get_predefined_entity(mDOMString_val(name)); - - CAMLreturn(Val_option(ent, Val_ptr)); -} - -value -ml_entity_get_content(value ent) -{ - CAMLparam1(ent); - CAMLreturn(Val_mDOMString(mdom_entity_get_content((mDOMEntityRef) ent))); -} - -value -ml_node_is_text(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_bool(mdom_node_is_text((mDOMNodeRef) node))); -} - -value -ml_node_is_element(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_bool(mdom_node_is_element((mDOMNodeRef) node))); -} - -value -ml_node_is_blank(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_bool(mdom_node_is_blank((mDOMNodeRef) node))); -} - -value -ml_node_is_entity_ref(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_bool(mdom_node_is_entity_ref((mDOMNodeRef) node))); -} - -value -ml_node_get_type(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_int(mdom_node_get_type((mDOMNodeRef) node))); -} - -value -ml_node_get_name(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_option(mdom_node_get_name((mDOMNodeRef) node), Val_mDOMString)); -} - -value -ml_node_get_content(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_option(mdom_node_get_content((mDOMNodeRef) node), Val_mDOMString)); -} - -value -ml_node_get_ns_uri(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_option(mdom_node_get_ns_uri((mDOMNodeRef) node), Val_mDOMString)); -} - -value -ml_node_get_attribute(value node, value name) -{ - CAMLparam2(node,name); - CAMLreturn(Val_option(mdom_node_get_attribute((mDOMNodeRef) node, String_val(name)), Val_mDOMString)); -} - -value -ml_node_get_attribute_ns(value node, value name, value ns_uri) -{ - CAMLparam2(node,name); - CAMLreturn(Val_option(mdom_node_get_attribute_ns((mDOMNodeRef) node, - String_val(name), - String_val(ns_uri)), Val_mDOMString)); -} - -value -ml_node_get_parent(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_option(mdom_node_get_parent((mDOMNodeRef) node), Val_ptr)); -} - -value -ml_node_get_prev_sibling(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_option(mdom_node_get_prev_sibling((mDOMNodeRef) node), Val_ptr)); -} - -value -ml_node_get_next_sibling(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_option(mdom_node_get_next_sibling((mDOMNodeRef) node), Val_ptr)); -} - -value -ml_node_get_first_child(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_option(mdom_node_get_first_child((mDOMNodeRef) node), Val_ptr)); -} - -value -ml_node_get_first_attribute(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_option(mdom_node_get_first_attribute((mDOMNodeRef) node), Val_ptr)); -} - -value -ml_node_is_first(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_bool(mdom_node_is_first((mDOMNodeRef) node))); -} - -value -ml_node_is_last(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_bool(mdom_node_is_last((mDOMNodeRef) node))); -} - -value -ml_attr_get_name(value attr) -{ - CAMLparam1(attr); - CAMLreturn(Val_option(mdom_attr_get_name((mDOMAttrRef) attr), Val_mDOMString)); -} - -value -ml_attr_get_ns_uri(value attr) -{ - CAMLparam1(attr); - CAMLreturn(Val_option(mdom_attr_get_ns_uri((mDOMAttrRef) attr), Val_mDOMString)); -} - -value -ml_attr_get_value(value attr) -{ - CAMLparam1(attr); - CAMLreturn(Val_option(mdom_attr_get_value((mDOMAttrRef) attr), Val_mDOMString)); -} - -value -ml_attr_get_prev_sibling(value attr) -{ - CAMLparam1(attr); - CAMLreturn(Val_option(mdom_attr_get_prev_sibling((mDOMAttrRef) attr), Val_ptr)); -} - -value -ml_attr_get_next_sibling(value attr) -{ - CAMLparam1(attr); - CAMLreturn(Val_option(mdom_attr_get_next_sibling((mDOMAttrRef) attr), Val_ptr)); -} - -value -ml_attr_get_parent(value attr) -{ - CAMLparam1(attr); - CAMLreturn(Val_option(mdom_attr_get_parent((mDOMAttrRef) attr), Val_ptr)); -} - diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/minidom/ml_minidom.h b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/minidom/ml_minidom.h deleted file mode 100644 index d22479964..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/minidom/ml_minidom.h +++ /dev/null @@ -1,18 +0,0 @@ - -#ifndef ml_minidom_h -#define ml_minidom_h - -#define Val_ptr(p) ((value) (p)) -#ifndef Val_option -#define Val_option(p,f) ((p != NULL) ? ml_some(f(p)) : Val_unit) -#endif /* Val_option */ -#define Val_mDOMString(s) (copy_string((char*) (s))) -#define mDOMString_val(v) ((mDOMStringRef) String_val(v)) -#define mDOMNode_val(v) ((mDOMNodeRef) v) - -#define mDOMNode_option_mDOMNodeRef(p) (((p) != NULL) ? ml_some((value) (p)) : Val_unit) -#define mDOMNodeRef_mDOMNode_option(v) ((v == Val_unit) ? NULL : (mDOMNodeRef)Field((v),0)) -#define Val_mDOMNodeRef(p) (mDOMNode_option_mDOMNodeRef(p)) -#define mDOMNodeRef_val(v) (mDOMNodeRef_mDOMNode_option(v)) - -#endif /* ml_minidom_h */ diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/minidom/ominidom.ml b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/minidom/ominidom.ml deleted file mode 100644 index 85ad2e4ed..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/minidom/ominidom.ml +++ /dev/null @@ -1,156 +0,0 @@ - -exception Node_has_no_parent;; -exception Node_has_no_sibling of string;; -exception Node_has_no_children;; -exception Node_has_no_attributes;; -exception Attribute_has_no_sibling of string;; -exception Attribute_has_no_parent;; -exception Undefined_entity;; - -let option_to_exception v e = - match v with - Some x -> x - | None -> raise e -;; - -class o_mDOMString (str: Minidom.mDOMString) = - object - method get_dom_string = str - method get_string = Minidom.string_of_mDOMString str - end;; - -let o_mDOMString_of_string str = - new o_mDOMString (Minidom.mDOMString_of_string str) - -class o_mDOMEntity (ent : Minidom.mDOMEntity) = - object - method get_dom_entity = ent - method get_content = - new o_mDOMString (Minidom.entity_get_content ent) - end -;; - -class o_mDOMDoc (doc : Minidom.mDOMDoc) = - object - method get_dom_doc = doc - - method get_root_node = - new o_mDOMNode (Minidom.doc_get_root_node doc) - method add_entity (name : o_mDOMString) (value : o_mDOMString) = - new o_mDOMEntity - (Minidom.doc_add_entity doc - (name#get_dom_string) (value#get_dom_string) - ) - method get_entity (name : o_mDOMString) = - match Minidom.doc_get_entity doc (name#get_dom_string) with - | Some x -> new o_mDOMEntity x - | None -> raise Undefined_entity - method get_predefined_entity (name : o_mDOMString) = - match Minidom.doc_get_predefined_entity doc (name#get_dom_string) with - | Some x -> new o_mDOMEntity x - | None -> raise Undefined_entity - end -and o_mDOMNode (node : Minidom.mDOMNode) = - object - method get_dom_node = node - - method is_text = Minidom.node_is_text node - method is_element = Minidom.node_is_element node - method is_blank = Minidom.node_is_blank node - method is_entity_ref = Minidom.node_is_entity_ref node - - method get_type = Minidom.node_get_type node - method get_name = - match Minidom.node_get_name node with - | Some x -> Some (new o_mDOMString x) - | None -> None - method get_ns_uri = - match Minidom.node_get_ns_uri node with - | Some x -> Some (new o_mDOMString x) - | None -> None - method get_attribute (name : o_mDOMString) = - match Minidom.node_get_attribute node (name#get_dom_string) with - | Some x -> Some (new o_mDOMString x) - | None -> None - method get_attribute_ns (name : o_mDOMString) (uri : o_mDOMString) = - match - Minidom.node_get_attribute_ns node - (name#get_dom_string) (uri#get_dom_string) - with - | Some x -> Some (new o_mDOMString x) - | None -> None - method get_content = - match Minidom.node_get_content node with - | Some x -> Some (new o_mDOMString x) - | None -> None - method get_parent = - new o_mDOMNode - (option_to_exception (Minidom.node_get_parent node) Node_has_no_parent) - method get_prev_sibling = - new o_mDOMNode - (option_to_exception - (Minidom.node_get_prev_sibling node) - (Node_has_no_sibling "left") - ) - method get_next_sibling = - new o_mDOMNode - (option_to_exception - (Minidom.node_get_next_sibling node) - (Node_has_no_sibling "right") - ) - method get_first_child = - new o_mDOMNode - (option_to_exception - (Minidom.node_get_first_child node) - (Node_has_no_children) - ) - method get_first_attribute = - new o_mDOMAttr - (option_to_exception - (Minidom.node_get_first_attribute node) - (Node_has_no_attributes) - ) - method is_first = Minidom.node_is_first node - method is_last = Minidom.node_is_last node - - method get_children = - List.map (function x -> new o_mDOMNode x) (Minidom.node_get_children node) - method get_attributes = List.map - (function x -> new o_mDOMAttr x) (Minidom.node_get_attributes node) - end -and o_mDOMAttr (attr : Minidom.mDOMAttr) = - object - method get_dom_attr = attr - - method get_name = - match Minidom.attr_get_name attr with - | Some x -> Some (new o_mDOMString x) - | None -> None - method get_ns_uri = - match Minidom.attr_get_ns_uri attr with - | Some x -> Some (new o_mDOMString x) - | None -> None - method get_value = - match Minidom.attr_get_value attr with - | Some x -> Some (new o_mDOMString x) - | None -> None - method get_prev_sibling = - new o_mDOMAttr - (option_to_exception - (Minidom.attr_get_prev_sibling attr) - (Attribute_has_no_sibling "left") - ) - method get_next_sibling = - new o_mDOMAttr - (option_to_exception - (Minidom.attr_get_next_sibling attr) - (Attribute_has_no_sibling "right") - ) - method get_parent = - new o_mDOMNode - (option_to_exception - (Minidom.attr_get_parent attr) Attribute_has_no_parent - ) - end -;; - diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/minidom/ominidom.mli b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/minidom/ominidom.mli deleted file mode 100644 index 24329544d..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/minidom/ominidom.mli +++ /dev/null @@ -1,64 +0,0 @@ -exception Node_has_no_parent -exception Node_has_no_sibling of string -exception Node_has_no_children -exception Node_has_no_attributes -exception Attribute_has_no_sibling of string -exception Attribute_has_no_parent -exception Undefined_entity - -class o_mDOMString : Minidom.mDOMString -> - object - method get_dom_string : Minidom.mDOMString - method get_string : string - end - -val o_mDOMString_of_string : string -> o_mDOMString - -class o_mDOMEntity : Minidom.mDOMEntity -> - object - method get_content : o_mDOMString - method get_dom_entity : Minidom.mDOMEntity - end - -class o_mDOMDoc : Minidom.mDOMDoc -> - object - method add_entity : o_mDOMString -> o_mDOMString -> o_mDOMEntity - method get_dom_doc : Minidom.mDOMDoc - method get_entity : o_mDOMString -> o_mDOMEntity - method get_predefined_entity : o_mDOMString -> o_mDOMEntity - method get_root_node : o_mDOMNode - end -and o_mDOMNode : Minidom.mDOMNode -> - object - method get_attribute : o_mDOMString -> o_mDOMString option - method get_attribute_ns : - o_mDOMString -> o_mDOMString -> o_mDOMString option - method get_attributes : o_mDOMAttr list - method get_children : o_mDOMNode list - method get_content : o_mDOMString option - method get_dom_node : Minidom.mDOMNode - method get_first_attribute : o_mDOMAttr - method get_first_child : o_mDOMNode - method get_name : o_mDOMString option - method get_next_sibling : o_mDOMNode - method get_ns_uri : o_mDOMString option - method get_parent : o_mDOMNode - method get_prev_sibling : o_mDOMNode - method get_type : int - method is_blank : bool - method is_element : bool - method is_entity_ref : bool - method is_first : bool - method is_last : bool - method is_text : bool - end -and o_mDOMAttr : Minidom.mDOMAttr -> - object - method get_dom_attr : Minidom.mDOMAttr - method get_name : o_mDOMString option - method get_next_sibling : o_mDOMAttr - method get_ns_uri : o_mDOMString option - method get_parent : o_mDOMNode - method get_prev_sibling : o_mDOMAttr - method get_value : o_mDOMString option - end diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/minidom/test.ml b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/minidom/test.ml deleted file mode 100644 index 3c7a092e9..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/minidom/test.ml +++ /dev/null @@ -1,84 +0,0 @@ - -let doc = Minidom.doc_load "test.xml" - -let root = Minidom.doc_get_root_node doc - -let check_attribute_ns attr = - Printf.printf "\n\n"; - let ns_uri = Minidom.attr_get_ns_uri attr - and attr_name = Minidom.attr_get_name attr - and attr_value = Minidom.attr_get_value attr - and parent = Minidom.attr_get_parent attr - in - match parent,ns_uri,attr_name,attr_value with - Some parent_node,Some uri,Some attribute_name,Some attribute_value -> - let attr_value = Minidom.node_get_attribute_ns parent_node attribute_name uri - in begin - match attr_value with - Some attr1 -> - Printf.printf "found the attribute with ns %s (was %s)\n" - (Minidom.string_of_mDOMString attr1) (Minidom.string_of_mDOMString attribute_value) - | None -> - Printf.printf "attribute not found (uri was %s)!!!!\n" (Minidom.string_of_mDOMString uri) - end - | _ -> - Printf.printf "parent_node == NULL || uri == NULL || attribute_name == NULL || attribute_value == NULL\n" -;; - -let print_attribute attr = - check_attribute_ns attr; - let ns_uri = Minidom.attr_get_ns_uri attr - in - begin - match ns_uri with - Some uri -> Printf.printf " %s:" (Minidom.string_of_mDOMString uri); - | None -> () - end; - match ((Minidom.attr_get_name attr), (Minidom.attr_get_value attr)) with - (Some attr_name, Some attr_value) -> - Printf.printf " %s=\"%s\"" (Minidom.string_of_mDOMString attr_name) (Minidom.string_of_mDOMString attr_value) - | (Some attr_name, _) -> - Printf.printf " ??? attribute %s has no value !!!" (Minidom.string_of_mDOMString attr_name) - | (_,_) -> - Printf.printf " ??? very strange attribute !!!" -;; - -let rec print_node n node = - if Minidom.node_is_blank node then () - else if Minidom.node_is_element node then begin - match Minidom.node_get_name node with - Some node_name -> - begin - let children = Minidom.node_get_children node - and attributes = Minidom.node_get_attributes node - and ns_uri = Minidom.node_get_ns_uri node - and is_first,is_last = (Minidom.node_is_first node), (Minidom.node_is_last node) - in - for i = 1 to n do print_char ' ' done; - Printf.printf "<"; - begin - match ns_uri with - Some uri -> Printf.printf "%s:" (Minidom.string_of_mDOMString uri) - | None -> () - end; - Printf.printf "%s" (Minidom.string_of_mDOMString node_name); - List.iter print_attribute attributes; - Printf.printf ">\n"; - List.iter (print_node (n + 2)) children; - for i = 1 to n do print_char ' ' done; - Printf.printf "\n" (Minidom.string_of_mDOMString node_name) - end - | None -> Printf.printf "??? this node has no name !!!\n" - end else if Minidom.node_is_text node then begin - match Minidom.node_get_content node with - Some node_content -> - for i = 1 to n do print_char ' ' done; - Printf.printf "%s\n" (Minidom.string_of_mDOMString node_content) - | None -> Printf.printf "??? this node has no content !!!\n" - end else begin - Printf.printf "don't know how to manage a node with type %d\n" (Minidom.node_get_type node) - end -;; - -print_node 0 root;; - diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/minidom/test.xml b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/minidom/test.xml deleted file mode 100644 index 83d2eef68..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/minidom/test.xml +++ /dev/null @@ -1,505 +0,0 @@ - - - - - - - - DEFINITION and_ind() OF TYPE - - - - - - - - __ - - - - - - - - ( - - - - - Π - A - : - - Prop - - - - - - - . - - - - - Π - B - : - - Prop - - - - - - - . - - - - - Π - P - : - - Prop - - - - - - - . - - - - - Π - f - : - - ( - A - - - ( - B - - P - ) - - ) - - - - - - - . - - Π - a - : - - ( - and - - _ - - A - - _ - - B - ) - - . - P - - - - - - - - - - - - - - - - - - - - - - - - - - - - :> - - Prop - - - - - - - - ) - - - - - - - - cast - - prod - - A - - - Prop - - - - - prod - - B - - - Prop - - - - - prod - - P - - - Prop - - - - - prod - - f - - - arrow - A - - arrow - B - P - - - - - - prod - - a - - - app - and - A - B - - - - P - - - - - - - Prop - - - - - - - - - - - AS - - - - - - - - __ - - - - - - - λ - A - : - - Prop - - - - - - - . - - - - - λ - B - : - - Prop - - - - - - - . - - - - - λ - P - : - - Prop - - - - - - - . - - - - - λ - f - : - - ( - A - - - ( - B - - P - ) - - ) - - - - - - - . - - - - - λ - a - : - - ( - and - - _ - - A - - _ - - B - ) - - - - - - - . - - < - P - > - CASES - - _ - - a - - _ - - OF - - ( - conj - - _ - - $1 - - _ - - $2 - ) - - - - ( - f - - _ - - $1 - - _ - - $2 - ) - - - _ - - END - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - A - - - Prop - - - - - - B - - - Prop - - - - - - P - - - Prop - - - - - - f - - - arrow - A - - arrow - B - P - - - - - - - a - - - app - and - A - B - - - - - mutcase - P - a - - app - conj - $1 - $2 - - - app - f - $1 - $2 - - - - - - - - - - - - - - diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/ml_gtk_mathview.c b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/ml_gtk_mathview.c deleted file mode 100644 index 3c86f0057..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/ml_gtk_mathview.c +++ /dev/null @@ -1,159 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include -#include -#include -#include -#include - -#include -#include "minidom/ml_minidom.h" - -/* : Next row should be put in a .h of lablgtk. */ -#define GtkAdjustment_val(val) check_cast(GTK_ADJUSTMENT,val) - -#define GtkMathView_val(val) check_cast(GTK_MATH_VIEW,val) - -#define FontManagerId_val(val) Int_val(val) -#define Val_FontManagerId(val) Val_int(val) - -FontManagerId -font_manager_id_of_value(value v) -{ - if (v == hash_variant("font_manager_gtk")) return FONT_MANAGER_GTK; - else if (v == hash_variant("font_manager_t1")) return FONT_MANAGER_T1; - else assert(0); -} - -value -value_of_font_manager_id(FontManagerId id) -{ - switch (id) { - case FONT_MANAGER_GTK: - return hash_variant("font_manager_gtk"); - case FONT_MANAGER_T1: - return hash_variant("font_manager_t1"); - default: - assert(0); - break; - } -} - -ML_2 (gtk_math_view_new,GtkAdjustment_val, GtkAdjustment_val, Val_GtkWidget_sink) -ML_2 (gtk_math_view_load, GtkMathView_val, String_val, Val_bool) -ML_1 (gtk_math_view_unload, GtkMathView_val, Unit) -/*ML_1 (gtk_math_view_dump, GtkMathView_val, Unit)*/ -ML_1 (gtk_math_view_get_selection, GtkMathView_val, Val_mDOMNodeRef) -ML_2 (gtk_math_view_set_selection, GtkMathView_val, mDOMNodeRef_val, Unit) -ML_1 (gtk_math_view_get_width, GtkMathView_val, Val_int) -ML_1 (gtk_math_view_get_height, GtkMathView_val, Val_int) -ML_3 (gtk_math_view_set_top, GtkMathView_val, Int_val, Int_val, Unit) -ML_3 (gtk_math_view_set_adjustments, GtkMathView_val, GtkAdjustment_val, GtkAdjustment_val, Unit) -ML_1 (gtk_math_view_get_hadjustment, GtkMathView_val, Val_GtkWidget) -ML_1 (gtk_math_view_get_vadjustment, GtkMathView_val, Val_GtkWidget) -ML_1 (gtk_math_view_get_buffer, GtkMathView_val, Val_GdkPixmap) -ML_1 (gtk_math_view_get_frame, GtkMathView_val, Val_GtkWidget) -ML_2 (gtk_math_view_set_font_size, GtkMathView_val, Int_val, Unit) -ML_1 (gtk_math_view_get_font_size, GtkMathView_val, Val_int) -ML_2 (gtk_math_view_set_anti_aliasing, GtkMathView_val, Bool_val, Unit) -ML_1 (gtk_math_view_get_anti_aliasing, GtkMathView_val, Val_bool) -ML_2 (gtk_math_view_set_kerning, GtkMathView_val, Bool_val, Unit) -ML_1 (gtk_math_view_get_kerning, GtkMathView_val, Val_bool) -ML_2 (gtk_math_view_set_log_verbosity, GtkMathView_val, Int_val, Unit) -ML_1 (gtk_math_view_get_log_verbosity, GtkMathView_val, Val_int) -ML_2 (gtk_math_view_set_font_manager_type, GtkMathView_val, font_manager_id_of_value, Unit) -ML_1 (gtk_math_view_get_font_manager_type, GtkMathView_val, value_of_font_manager_id) - -value -ml_gtk_math_view_export_to_postscript_native(value arg1, - value w, value h, value x0, value y0, value disable_colors, value arg2) -{ - CAMLparam5(arg1,w,h,x0,y0); - CAMLxparam2(disable_colors, arg2); - - char *filename; - FILE *fd; - int res; - filename = String_val (arg2); - if ((fd = fopen(filename, "w"))) { - gtk_math_view_export_to_postscript(GtkMathView_val (arg1), - Int_val(w), Int_val(h), Int_val(x0), Int_val(y0), Bool_val(disable_colors), fd); - fclose (fd); - res = 1; - } else { - fprintf(stderr, "Error opening file %s for writing\n", filename); - res = 0; - } - CAMLreturn (Val_bool(res)); -} - -value ml_gtk_math_view_export_to_postscript_bytecode (value* arg, int argn) -{ - return ml_gtk_math_view_export_to_postscript_native(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], arg[6]); -} - -value ml_gtk_math_view_get_top (value arg1) -{ - CAMLparam1(arg1); - CAMLlocal1 (result); - int x, y; - gtk_math_view_get_top(GtkMathView_val (arg1), &x, &y); - result = alloc(2, 0); - Store_field(result, 0, Val_int(x)); - Store_field(result, 0, Val_int(y)); - CAMLreturn (result); -} - - -value ml_gtk_math_view_mDOMNode_of_bodex_option (value arg1) -{ - CAMLparam1(arg1); - - mDOMNodeRef nr; - CAMLlocal1 (tmp); - CAMLlocal1 (optval); - CAMLlocal1 (res); - - if (arg1==Val_int(0)) { - assert(0); - } else { - tmp = Field(arg1, 0); - nr = (mDOMNodeRef) Field(tmp, 1); - } - optval = Val_mDOMNodeRef(nr); - if (optval==Val_int(0)) { - assert(0); - } else { - res = Field(optval, 0); - } - - CAMLreturn(res); -} - -value ml_gtk_math_view_mDOMNode_option_of_bodex_option (value arg1) -{ - CAMLparam1(arg1); - - mDOMNodeRef nr; - CAMLlocal1 (tmp); - - if (arg1==Val_int(0)) { - nr=NULL; - } else { - tmp = Field(arg1, 0); - nr = (mDOMNodeRef) Field(tmp, 1); - } - - CAMLreturn(Val_mDOMNodeRef(nr)); -} diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/test/.cvsignore b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/test/.cvsignore deleted file mode 100644 index 1968614b7..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/test/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -*.cmo *.cmi *.cmx t1lib.log test test.opt test.ps test.o diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/test/Makefile b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/test/Makefile deleted file mode 100644 index d631d239f..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/test/Makefile +++ /dev/null @@ -1,45 +0,0 @@ -LABLGTK_DIR = /usr/lib/ocaml/lablgtk -LABLGTK_MATHVIEW_DIR = .. -MINIDOM_DIR = ../minidom -OCAMLC = ocamlc -I $(LABLGTK_DIR) -I $(LABLGTK_MATHVIEW_DIR) \ - -I $(MINIDOM_DIR) -I mlmathview -OCAMLOPT = ocamlopt -I $(LABLGTK_DIR) -I $(LABLGTK_MATHVIEW_DIR) \ - -I $(MINIDOM_DIR) -I mlmathview - -all: test -opt: test.opt - -test: test.cmo - $(OCAMLC) -custom -o test lablgtk.cma gtkInit.cmo \ - $(MINIDOM_DIR)/minidom.cmo \ - $(MINIDOM_DIR)/ominidom.cmo \ - $(LABLGTK_MATHVIEW_DIR)/lablgtkmathview.cma \ - -cclib "$(MINIDOM_DIR)/ml_minidom.o" \ - test.cmo \ - -cclib "-lstr -L/usr/lib -L/usr/X11R6/lib -lgtk -lgdk \ - -rdynamic -lgmodule -lglib -ldl -lXi -lXext -lX11 -lm \ - -L/usr/local/lib/gtkmathview -lgtkmathview \ - $(LABLGTK_MATHVIEW_DIR)/ml_gtk_mathview.o" - -test.opt: test.cmx - $(OCAMLOPT) -o test.opt lablgtk.cmxa gtkInit.cmx \ - $(MINIDOM_DIR)/minidom.cmx \ - $(MINIDOM_DIR)/ominidom.cmx \ - $(LABLGTK_MATHVIEW_DIR)/lablgtkmathview.cmxa \ - -cclib "$(MINIDOM_DIR)/ml_minidom.o" \ - test.cmx \ - -cclib "-lstr -L/usr/lib -L/usr/X11R6/lib -lgtk -lgdk \ - -rdynamic -lgmodule -lglib -ldl -lXi -lXext -lX11 -lm \ - -L/usr/local/lib/gtkmathview -lgtkmathview \ - $(LABLGTK_MATHVIEW_DIR)/ml_gtk_mathview.o" - -.SUFFIXES: .ml .mli .cmo .cmi .cmx -.ml.cmo: - $(OCAMLC) -c $< -.mli.cmi: - $(OCAMLC) -c $< -.ml.cmx: - $(OCAMLOPT) -c $< - -clean: - rm -f *.cm[iox] *.o test test.opt t1lib.log test.ps diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/test/t1.config b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/test/t1.config deleted file mode 100644 index afb669e95..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/test/t1.config +++ /dev/null @@ -1,3 +0,0 @@ -ENCODING=. -AFM=/usr/share/texmf/fonts/afm/ -TYPE1=/usr/share/texmf/fonts/type1/bluesky/cm/:/usr/X11R6/lib/X11/fonts/Type1/:. diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/test/test.ml b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/test/test.ml deleted file mode 100644 index dd66d3885..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/test/test.ml +++ /dev/null @@ -1,297 +0,0 @@ -(******************************************************************************) -(* Claudio Sacerdoti Coen *) -(* 25/09/2000 *) -(* *) -(* This is a simple test for the OCaml (LablGtk indeed) binding of the *) -(* MathView widget *) -(******************************************************************************) - -(* Callbacks *) -let jump (node : Ominidom.o_mDOMNode) = - let module O = Ominidom in - print_string ("jump: " ^ - (match node#get_attribute (O.o_mDOMString_of_string "href") with - | Some x -> x#get_string - | None -> "NO HREF FOR THIS NODE" - ) ^ "\n"); - flush stdout -;; - -let selection_changed mathview (node : Ominidom.o_mDOMNode option) = - let module O = Ominidom in - print_string ("selection_changed: " ^ - (match node with - None -> "selection_changed on nothing" - | Some node -> - match node#get_name with - | Some x -> x#get_string - | None -> "on element without name" - ) ^ "\n"); - mathview#set_selection node; - flush stdout -;; - - -let clicked (node : Ominidom.o_mDOMNode) = - let module O = Ominidom in - print_string ("clicked: " ^ - (match node#get_name with - | Some x -> x#get_string - | None -> "no name" - ) ^ "\n"); - flush stdout -;; - - -let activate_t1 mathview () = - mathview#set_font_manager_type `font_manager_t1; - print_string "WIDGET SET WITH T1 FONTS\n" ; - flush stdout -;; - -let activate_gtk mathview () = - mathview#set_font_manager_type `font_manager_gtk; - print_string "WIDGET SET WITH GTK FONTS\n" ; - flush stdout -;; - -let get_font_manager_type mathview () = - print_string "CURRENT FONT MANAGER TYPE: "; - begin - match mathview#get_font_manager_type with - | `font_manager_t1 -> print_string "T1" - | `font_manager_gtk -> print_string "GTK" - end; - print_newline(); - flush stdout -;; - -let load mathview () = - mathview#load "test.xml" ; - print_string "load: SEEMS TO WORK\n" ; - flush stdout -;; - -let get_selection mathview () = - let module O = Ominidom in - let selection = - match mathview#get_selection with - | Some node -> - begin - match node#get_name with - | Some name -> name#get_string - | None -> "element with no name!" - end - | None -> "no selection!" - in - print_string ("get_selection: " ^ selection ^ "\n") ; - flush stdout -;; - -let set_selection mathview () = - let module O = Ominidom in - begin - match mathview#get_selection with - | Some node -> - begin - try - let parent_node = node#get_parent in - mathview#set_selection (Some parent_node); - print_string "set selection: SEEMS TO WORK\n" - with - _ -> print_string "EXCEPTION: no parent\n" - end - | None -> - mathview#set_selection None; - print_string "no selection\n" - end ; - flush stdout -;; - -let unload mathview () = - mathview#unload ; - print_string "unload: SEEMS TO WORK\n" ; - flush stdout -;; - -let get_width mathview () = - print_string ("get_width: " ^ string_of_int (mathview#get_width) ^ "\n") ; - flush stdout -;; - -let get_height mathview () = - print_string ("get_height: " ^ string_of_int (mathview#get_height) ^ "\n") ; - flush stdout -;; - -let get_top mathview () = - let (x,y) = mathview#get_top in - print_string ("get_top: ("^ string_of_int x ^ "," ^ string_of_int y ^ ")\n") ; - flush stdout -;; - -let set_top mathview () = - mathview#set_top 0 0; - print_string "set_top: SEEM TO WORK\n" ; - flush stdout -;; - -let set_adjustments mathview () = - let adj1 = GData.adjustment () in - let adj2 = GData.adjustment () in - mathview#set_adjustments adj1 adj2 ; - adj1#set_value ((adj1#lower +. adj1#upper) /. 2.0) ; - adj2#set_value ((adj2#lower +. adj2#upper) /. 2.0) ; - print_string "set_adjustments: SEEM TO WORK\n" ; - flush stdout -;; - -let get_hadjustment mathview () = - let adj = mathview#get_hadjustment in - adj#set_value ((adj#lower +. adj#upper) /. 2.0) ; - print_string "get_hadjustment: SEEM TO WORK\n" ; - flush stdout -;; - -let get_vadjustment mathview () = - let adj = mathview#get_vadjustment in - adj#set_value ((adj#lower +. adj#upper) /. 2.0) ; - print_string "get_vadjustment: SEEM TO WORK\n" ; - flush stdout -;; - -let get_buffer mathview () = - let buffer = mathview#get_buffer in - Gdk.Draw.rectangle buffer (Gdk.GC.create buffer) ~x:0 ~y:0 - ~width:50 ~height:50 ~filled:true () ; - print_string "get_buffer: SEEMS TO WORK (hint: force the widget redrawing)\n"; - flush stdout -;; - -let get_frame mathview () = - let frame = mathview#get_frame in - frame#set_shadow_type `NONE ; - print_string "get_frame: SEEMS TO WORK\n" ; - flush stdout -;; - -let set_font_size mathview () = - mathview#set_font_size 24 ; - print_string "set_font_size: FONT IS NOW 24\n" ; - flush stdout -;; - -let get_font_size mathview () = - print_string ("get_font_size: " ^ string_of_int (mathview#get_font_size) ^ "\n") ; - flush stdout -;; - -let set_anti_aliasing mathview () = - mathview#set_anti_aliasing true ; - print_string "set_anti_aliasing: ON\n" ; - flush stdout -;; - -let get_anti_aliasing mathview () = - print_string ("get_anti_aliasing: " ^ - (match mathview#get_anti_aliasing with true -> "ON" | false -> "OFF") ^ - "\n") ; - flush stdout -;; - -let set_kerning mathview () = - mathview#set_kerning true ; - print_string "set_kerning: ON\n" ; - flush stdout -;; - -let get_kerning mathview () = - print_string ("get_kerning: " ^ - (match mathview#get_kerning with true -> "ON" | false -> "OFF") ^ - "\n") ; - flush stdout -;; - -let set_log_verbosity mathview () = - mathview#set_log_verbosity 3 ; - print_string "set_log_verbosity: NOW IS 3\n" ; - flush stdout -;; - -let get_log_verbosity mathview () = - print_string ("get_log_verbosity: " ^ - string_of_int mathview#get_log_verbosity ^ - "\n") ; - flush stdout -;; - -let export_to_postscript (mathview : GMathView.math_view) () = - mathview#export_to_postscript ~filename:"test.ps" (); - print_string "expor_to_postscript: SEEMS TO WORK (hint: look at test.ps)\n"; - flush stdout -;; - -(* Widget creation *) -let main_window = GWindow.window ~title:"GtkMathView test" () in -let vbox = GPack.vbox ~packing:main_window#add () in -let sw = GBin.scrolled_window ~width:50 ~height:50 ~packing:vbox#pack () in -let mathview= GMathView.math_view ~packing:sw#add ~width:50 ~height:50 () in -let table = GPack.table ~rows:6 ~columns:5 ~packing:vbox#pack () in -let button_gtk=GButton.button ~label:"activate Gtk fonts" ~packing:(table#attach ~left:0 ~top:0) () in -let button_load = GButton.button ~label:"load" ~packing:(table#attach ~left:1 ~top:0) () in -let button_unload = GButton.button ~label:"unload" ~packing:(table#attach ~left:2 ~top:0) () in -let button_get_selection = GButton.button ~label:"get_selection" ~packing:(table#attach ~left:3 ~top:0) () in -let button_set_selection = GButton.button ~label:"set_selection" ~packing:(table#attach ~left:4 ~top:0) () in -let button_get_width = GButton.button ~label:"get_width" ~packing:(table#attach ~left:0 ~top:1) () in -let button_get_height = GButton.button ~label:"get_height" ~packing:(table#attach ~left:1 ~top:1) () in -let button_get_top = GButton.button ~label:"get_top" ~packing:(table#attach ~left:2 ~top:1) () in -let button_set_top = GButton.button ~label:"set_top" ~packing:(table#attach ~left:3 ~top:1) () in -let button_set_adjustments = GButton.button ~label:"set_adjustments" ~packing:(table#attach ~left:4 ~top:1) () in -let button_get_hadjustment = GButton.button ~label:"get_hadjustment" ~packing:(table#attach ~left:0 ~top:2) () in -let button_get_vadjustment = GButton.button ~label:"get_vadjustment" ~packing:(table#attach ~left:1 ~top:2) () in -let button_get_buffer = GButton.button ~label:"get_buffer" ~packing:(table#attach ~left:2 ~top:2) () in -let button_get_frame = GButton.button ~label:"get_frame" ~packing:(table#attach ~left:3 ~top:2) () in -let button_set_font_size = GButton.button ~label:"set_font_size" ~packing:(table#attach ~left:4 ~top:2) () in -let button_get_font_size = GButton.button ~label:"get_font_size" ~packing:(table#attach ~left:0 ~top:3) () in -let button_set_anti_aliasing = GButton.button ~label:"set_anti_aliasing" ~packing:(table#attach ~left:1 ~top:3) () in -let button_get_anti_aliasing = GButton.button ~label:"get_anti_aliasing" ~packing:(table#attach ~left:2 ~top:3) () in -let button_set_kerning = GButton.button ~label:"set_kerning" ~packing:(table#attach ~left:3 ~top:3) () in -let button_get_kerning = GButton.button ~label:"get_kerning" ~packing:(table#attach ~left:4 ~top:3) () in -let button_set_log_verbosity = GButton.button ~label:"set_log_verbosity" ~packing:(table#attach ~left:0 ~top:4) () in -let button_get_log_verbosity = GButton.button ~label:"get_log_verbosity" ~packing:(table#attach ~left:1 ~top:4) () in -let button_export_to_postscript = GButton.button ~label:"export_to_postscript" ~packing:(table#attach ~left:2 ~top:4) () in -let button_t1 = GButton.button ~label:"activate T1 fonts" ~packing:(table#attach ~left:3 ~top:4) () in -let button_get_font_manager_type = GButton.button ~label:"get_font_manager" ~packing:(table#attach ~left:4 ~top:4) () in -(* Signals connection *) -ignore(button_gtk#connect#clicked (activate_gtk mathview)) ; -ignore(button_load#connect#clicked (load mathview)) ; -ignore(button_unload#connect#clicked (unload mathview)) ; -ignore(button_get_selection#connect#clicked (get_selection mathview)) ; -ignore(button_set_selection#connect#clicked (set_selection mathview)) ; -ignore(button_get_width#connect#clicked (get_width mathview)) ; -ignore(button_get_height#connect#clicked (get_height mathview)) ; -ignore(button_get_top#connect#clicked (get_top mathview)) ; -ignore(button_set_top#connect#clicked (set_top mathview)) ; -ignore(button_set_adjustments#connect#clicked (set_adjustments mathview)) ; -ignore(button_get_hadjustment#connect#clicked (get_hadjustment mathview)) ; -ignore(button_get_vadjustment#connect#clicked (get_vadjustment mathview)) ; -ignore(button_get_buffer#connect#clicked (get_buffer mathview)) ; -ignore(button_get_frame#connect#clicked (get_frame mathview)) ; -ignore(button_set_font_size#connect#clicked (set_font_size mathview)) ; -ignore(button_get_font_size#connect#clicked (get_font_size mathview)) ; -ignore(button_set_anti_aliasing#connect#clicked (set_anti_aliasing mathview)) ; -ignore(button_get_anti_aliasing#connect#clicked (get_anti_aliasing mathview)) ; -ignore(button_set_kerning#connect#clicked (set_kerning mathview)) ; -ignore(button_get_kerning#connect#clicked (get_kerning mathview)) ; -ignore(button_set_log_verbosity#connect#clicked (set_log_verbosity mathview)) ; -ignore(button_get_log_verbosity#connect#clicked (get_log_verbosity mathview)) ; -ignore(button_export_to_postscript#connect#clicked (export_to_postscript mathview)) ; -ignore(button_t1#connect#clicked (activate_t1 mathview)) ; -ignore(button_get_font_manager_type#connect#clicked (get_font_manager_type mathview)) ; -ignore(mathview#connect#jump jump) ; -ignore(mathview#connect#clicked clicked) ; -ignore(mathview#connect#selection_changed (selection_changed mathview)) ; -(* Main Loop *) -main_window#show () ; -GMain.Main.main () -;; diff --git a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/test/test.xml b/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/test/test.xml deleted file mode 100644 index b0f8c1563..000000000 --- a/helm/DEVEL/lablgtk_gtkmathview/lablgtk-20001129_gtkmathview-0.2.2/test/test.xml +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - a - - x - - + - b - - - - x - 2 - - + - - p - - x - - + - q - - - - d - x - = - - - a2 - - - ln - - - ( - - x2 - + - - p - - x - - + - q - - ) - - - - + - - - - - 2 - - b - - - - - a - - p - - - - - - 4 - - q - - - - - p - 2 - - - - - - - arctg - - - - - 2 - - x - - + - p - - - - - 4 - - q - - - - - p - 2 - - - - - - - + - c - - diff --git a/helm/DEVEL/lablgtkmathview/.cvsignore b/helm/DEVEL/lablgtkmathview/.cvsignore deleted file mode 100644 index b684a8ba4..000000000 --- a/helm/DEVEL/lablgtkmathview/.cvsignore +++ /dev/null @@ -1,5 +0,0 @@ -*.cmi *.cmo *.cmx *.cma *.cmxa config.make config.cache config.log configure -Makefile -config.status -META -lablgtkmathview.spec diff --git a/helm/DEVEL/lablgtkmathview/.depend b/helm/DEVEL/lablgtkmathview/.depend deleted file mode 100644 index 9d1c6ed82..000000000 --- a/helm/DEVEL/lablgtkmathview/.depend +++ /dev/null @@ -1,10 +0,0 @@ -gMathView.cmo: gtkMathView.cmo gtk_mathview.cmo gMathView.cmi -gMathView.cmx: gtkMathView.cmx gtk_mathview.cmx gMathView.cmi -gMathViewAux.cmo: gMathView.cmi gtkMathView.cmo gtk_mathview.cmo \ - gMathViewAux.cmi -gMathViewAux.cmx: gMathView.cmx gtkMathView.cmx gtk_mathview.cmx \ - gMathViewAux.cmi -gtkMathView.cmo: gtk_mathview.cmo -gtkMathView.cmx: gtk_mathview.cmx -gMathView.cmi: gtk_mathview.cmo -gMathViewAux.cmi: gMathView.cmi diff --git a/helm/DEVEL/lablgtkmathview/AUTHORS b/helm/DEVEL/lablgtkmathview/AUTHORS deleted file mode 100644 index 3598094a9..000000000 --- a/helm/DEVEL/lablgtkmathview/AUTHORS +++ /dev/null @@ -1,2 +0,0 @@ -Luca Padovani -Claudio Sacerdoti Coen diff --git a/helm/DEVEL/lablgtkmathview/COPYING b/helm/DEVEL/lablgtkmathview/COPYING deleted file mode 100644 index d60c31a97..000000000 --- a/helm/DEVEL/lablgtkmathview/COPYING +++ /dev/null @@ -1,340 +0,0 @@ - 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/helm/DEVEL/lablgtkmathview/ChangeLog b/helm/DEVEL/lablgtkmathview/ChangeLog deleted file mode 100644 index 19ce76012..000000000 --- a/helm/DEVEL/lablgtkmathview/ChangeLog +++ /dev/null @@ -1,6 +0,0 @@ -* 0.4.1 - - Upgraded to GtkMathView 0.4.[0,1] - -* 0.3.0 - - Upgraded to GtkMathView 0.3.0 - - Now based on the gmetadom (alias gdome2) binding to GDOMe Level 2 diff --git a/helm/DEVEL/lablgtkmathview/LICENSE b/helm/DEVEL/lablgtkmathview/LICENSE deleted file mode 100644 index 691e4e01c..000000000 --- a/helm/DEVEL/lablgtkmathview/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -(* Copyright (C) 2000-2003, Luca Padovani , - * Claudio Sacerdoti Coen . - * - * This file is part of lablgtkmathview, the Ocaml binding - * for the GtkMathView widget. - * - * lablgtkmathview 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. - * - * lablgtkmathview 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 lablgtkmathview; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * For details, send a mail to the author. - *) diff --git a/helm/DEVEL/lablgtkmathview/META.in b/helm/DEVEL/lablgtkmathview/META.in deleted file mode 100644 index 84d671aee..000000000 --- a/helm/DEVEL/lablgtkmathview/META.in +++ /dev/null @@ -1,5 +0,0 @@ -requires="gdome2 lablgtk" -version="@VERSION@" -archive(byte)="lablgtkmathview.cma" -archive(native)="lablgtkmathview.cmxa" -linkopts="" diff --git a/helm/DEVEL/lablgtkmathview/Makefile.in b/helm/DEVEL/lablgtkmathview/Makefile.in deleted file mode 100644 index 8607be867..000000000 --- a/helm/DEVEL/lablgtkmathview/Makefile.in +++ /dev/null @@ -1,116 +0,0 @@ -PACKAGE = @PACKAGE@ -VERSION = @VERSION@ -INCLUDEDIR = @OCAML_INCLUDE_DIR@ -PREFIX = -OBJECTS_C = ml_gtk_mathview.o -OBJECTS = gtk_mathview.cmo gtkMathView.cmo gMathView.cmo gMathViewAux.cmo -OBJECTS_OPT = gtkMathView.cmx gtk_mathview.cmx gMathView.cmx gMathViewAux.cmx -INST = \ - META gMathView.mli gMathView.cmi gtkMathView.cmi gtk_mathview.cmi \ - gMathViewAux.cmi gMathViewAux.mli -DIST_FILES = \ - Makefile.in configure.in gMathView.ml gMathView.mli \ - gMathViewAux.ml gMathViewAux.mli gtkMathView.ml \ - gtk_mathview.ml ml_gtk_mathview.c META.in .depend debian/ test/ \ - configure lablgtkmathview.spec lablgtkmathview.spec.in -DIST_DIR = $(PACKAGE)-$(VERSION) -DOC_FILES = AUTHORS COPYING ChangeLog NEWS README LICENSE -REQUIRES = gdome2 lablgtk -PREDICATES = -SHARED_LIBS = @GDOME_LIBS@ @GTKMATHVIEW_LIBS@ -lmlgdome - -OCAMLFIND = ocamlfind -OCAMLC = $(OCAMLFIND) ocamlc -OCAMLOPT = $(OCAMLFIND) ocamlopt -OCAMLDEP = ocamldep -OCAMLMKLIB = ocamlmklib -OCAML_STUB_DIR = @OCAML_STUB_DIR@ - -ARCHIVE = $(PACKAGE) -DLL = dll$(ARCHIVE).so - -TESTDIR = ./test -TMPDIR = .test -TMPPKGDIR = $(TMPDIR)/$(PACKAGE) - -all: $(ARCHIVE).cma -opt: $(ARCHIVE).cmxa -test: $(TESTDIR)/test -test.opt: $(TESTDIR)/test.opt -world: all opt - -dist: - rm -rf $(DIST_DIR)/ - mkdir $(DIST_DIR)/ - cp -a $(DIST_FILES) $(DOC_FILES) $(DIST_DIR)/ - -find $(DIST_DIR) -name CVS -type d -exec rm -rf {} \; - -find $(DIST_DIR) -name .cvsignore -type f -exec rm {} \; - tar cvfz $(DIST_DIR).tar.gz $(DIST_DIR)/ - rm -rf $(DIST_DIR)/ - -deb: dist - if [ -d $(DIST_DIR)/ ]; then rm -rf $(DIST_DIR); else true; fi - tar xvzf $(DIST_DIR).tar.gz - (cd $(DIST_DIR)/ && debuild) - rm -rf $(DIST_DIR) - -ml_gtk_mathview.o: ml_gtk_mathview.c - gcc -c -I$(INCLUDEDIR) -fPIC `ocamlfind query -i-format lablgtk` @GTKMATHVIEW_CFLAGS@ @GDOME_CFLAGS@ `ocamlfind query -i-format gdome2` $< - -.SUFFIXES: .cmo .cmi .cmx .ml .mli - -.ml.cmo: - $(OCAMLC) -package "$(REQUIRES)" -predicates "$(PREDICATES)" -c $< -.mli.cmi: - $(OCAMLC) -package "$(REQUIRES)" -predicates "$(PREDICATES)" -c $< -.ml.cmx: - $(OCAMLOPT) -package "$(REQUIRES)" -predicates "$(PREDICATES)" -c $< - -depend: *.ml *.mli - $(OCAMLDEP) *.ml *.mli >.depend -include .depend - -$(ARCHIVE).cma $(DLL): $(OBJECTS) $(OBJECTS_C) - $(OCAMLMKLIB) -o $(ARCHIVE) -L$(OCAML_STUB_DIR) $^ $(SHARED_LIBS) -$(ARCHIVE).cmxa $(ARCHIVE).a: $(OBJECTS_OPT) - $(OCAMLMKLIB) -o $(ARCHIVE) -L$(OCAML_STUB_DIR) $^ $(OBJECTS_C) $(SHARED_LIBS) - -$(TESTDIR)/test: $(OBJECTS_C) $(ARCHIVE).cma $(TESTDIR)/test.ml - mkdir -p $(TMPPKGDIR) - cp $(OBJECTS_C) $(DLL) $(ARCHIVE).cma $(INST) $(TMPPKGDIR) - cd $(TESTDIR) ; export OCAMLPATH=../$(TMPDIR):$$OCAMLPATH ; make - rm -r $(TMPDIR) - -$(TESTDIR)/test.opt: $(OBJECTS_C) $(ARCHIVE).a $(ARCHIVE).cmxa $(TESTDIR)/test.ml - mkdir -p $(TMPPKGDIR) - cp $(OBJECTS_C) $(ARCHIVE).a $(ARCHIVE).cmxa $(INST) $(TMPPKGDIR) - cd $(TESTDIR) ; export OCAMLPATH=../$(TMPDIR):$$OCAMLPATH ; make opt - rm -r $(TMPDIR) - -install: - test ! -f $(ARCHIVE).cmxa || extra="$(ARCHIVE).a $(ARCHIVE).cmxa" ; \ - if [ "$(PREFIX)" = "" ]; then \ - $(OCAMLFIND) install \ - $(PACKAGE) $(OBJECTS_C) $(ARCHIVE).cma $(DLL) $(INST) $$extra; \ - ln -fs $(DLL) $(shell $(OCAMLFIND) printconf destdir)/stublibs/lib$(ARCHIVE).so; \ - else \ - $(OCAMLFIND) install -destdir $(PREFIX) \ - $(PACKAGE) $(OBJECTS_C) $(ARCHIVE).cma $(DLL) $(INST) $$extra; \ - ln -fs $(DLL) $(PREFIX)/stublibs/lib$(ARCHIVE).so; \ - fi - -uninstall: - if [ "$(PREFIX)" = "" ]; then \ - ocamlfind remove $(PACKAGE); \ - else \ - ocamlfind remove -destdir $(PREFIX) $(PACKAGE); \ - fi - -clean: - rm -f *.[ao] *.cm[iaxo] *.cmxa *.so - cd $(TESTDIR) ; make clean - rm -rf $(TMPDIR) - -distclean: clean - rm -f config.log config.cache config.status Makefile META lablgtkmathview.spec - cd $(TESTDIR) ; make distclean diff --git a/helm/DEVEL/lablgtkmathview/NEWS b/helm/DEVEL/lablgtkmathview/NEWS deleted file mode 100644 index e69de29bb..000000000 diff --git a/helm/DEVEL/lablgtkmathview/README b/helm/DEVEL/lablgtkmathview/README deleted file mode 100644 index 61c34d46e..000000000 --- a/helm/DEVEL/lablgtkmathview/README +++ /dev/null @@ -1,9 +0,0 @@ -This is the Ocaml binding for the GtkMathView widget. - -To compile and install: - - ./configure - make - make opt - make install - diff --git a/helm/DEVEL/lablgtkmathview/configure.in b/helm/DEVEL/lablgtkmathview/configure.in deleted file mode 100644 index dd11f14e1..000000000 --- a/helm/DEVEL/lablgtkmathview/configure.in +++ /dev/null @@ -1,58 +0,0 @@ -AC_INIT(gMathView.ml) - -PACKAGE=lablgtkmathview - -LABLGTKMATHVIEW_MAJOR_VERSION=0 -LABLGTKMATHVIEW_MINOR_VERSION=4 -LABLGTKMATHVIEW_MICRO_VERSION=3 -LABLGTKMATHVIEW_VERSION=$LABLGTKMATHVIEW_MAJOR_VERSION.$LABLGTKMATHVIEW_MINOR_VERSION.$LABLGTKMATHVIEW_MICRO_VERSION -VERSION=$LABLGTKMATHVIEW_VERSION - -PKG_CHECK_MODULES(GDOME, gdome2 >= 0.7.0,, AC_MSG_ERROR(could not find Gdome2)) -AC_SUBST(GDOME_CFLAGS) -AC_SUBST(GDOME_LIBS) - -PKG_CHECK_MODULES(GTKMATHVIEW, gtkmathview,, AC_MSG_ERROR(could not find gtkmathview)) -AC_SUBST(GTKMATHVIEW_CFLAGS) -AC_SUBST(GTKMATHVIEW_LIBS) - -AC_CHECK_PROG(HAVE_OCAMLC, ocamlc, yes, no) -if test $HAVE_OCAMLC = "no"; then - AC_MSG_ERROR(could not find ocamlc in PATH, please make sure ocaml is installed) -fi - -AC_CHECK_PROG(HAVE_OCAMLFIND, ocamlfind, yes, no) -if test $HAVE_OCAMLFIND = "no"; then - AC_MSG_ERROR(could not find ocamlfind in PATH, please make sure findlib is installed) -fi - -AC_MSG_CHECKING("for gdome2") -ocamlfind query gdome2 || - AC_MSG_ERROR(gdome2 not installed (according to findlib)) - -AC_MSG_CHECKING("for lablgtk") -ocamlfind query lablgtk || - AC_MSG_ERROR(lablgtk not installed (according to findlib)) - -AC_MSG_CHECKING("for the ocaml library dir") -OCAML_LIB_DIR=`ocamlc -where` -OCAML_STUB_DIR="$OCAML_LIB_DIR/stublibs" -AC_MSG_RESULT($OCAML_LIB_DIR) - -AC_CHECK_FILE(/usr/include/caml/mlvalues.h, - OCAML_INCLUDE_DIR=/usr/include/caml, - OCAML_INCLUDE_DIR=$OCAML_LIB_DIR/caml -) - -AC_SUBST(PACKAGE) -AC_SUBST(VERSION) -AC_SUBST(OCAML_INCLUDE_DIR) -AC_SUBST(OCAML_LIB_DIR) -AC_SUBST(OCAML_STUB_DIR) - -AC_OUTPUT([ - test/Makefile - Makefile - lablgtkmathview.spec - META -]) diff --git a/helm/DEVEL/lablgtkmathview/debian/changelog b/helm/DEVEL/lablgtkmathview/debian/changelog deleted file mode 100644 index 1212d634b..000000000 --- a/helm/DEVEL/lablgtkmathview/debian/changelog +++ /dev/null @@ -1,199 +0,0 @@ -lablgtkmathview (0.4.3-3) unstable; urgency=low - - * rebuilt against gmetadom 0.1.10-3 - * debian/control - - strictly depends on gmetadom >= 0.1.10-3 (older version are buggy - on mips) - - -- Stefano Zacchiroli Sat, 12 Jul 2003 14:14:31 +0200 - -lablgtkmathview (0.4.3-2) unstable; urgency=low - - * upstream changes - - fixed Makefile.in that still looked for gtkmathview-config - - selection flickering got rid of (by means of freeze/thaw) - - structural selection is no longer activated just before - semantic selection for single_selection_math_view - * debian/control - - bumped gmetadom dependencies to >= 0.1.10-2 (to ensure that .pc - file is available) - - -- Stefano Zacchiroli Tue, 1 Jul 2003 11:25:48 +0200 - -lablgtkmathview (0.4.3-1) unstable; urgency=low - - * Rebuild against gtkmathview 0.4.3 - * debian/control - - bumped standards version to 3.5.10 - - bumped dependencies on gtkmathview to 0.4.3 - - bumped dependencies on gmetadom to 0.1.9 - - added ${misc:Depends} - - changed section of -dev package to "libdevel" - - better short description - - added built-dep to pkg-config - * debian/rules - - removed DH_COMPAT in favour of debian/compat - - comsetic changes - - removed useless binary-indep target - - removed dh_movefiles in favour of dh_install - - -- Stefano Zacchiroli Thu, 19 Jun 2003 14:52:54 +0200 - -lablgtkmathview (0.4.1-1) unstable; urgency=low - - * Bugfix in some OCaml value allocations - * Binding for gtkmathview 0.4.1 - * Bumped dependencies to gtkmathview 0.4.1 - * Dropped << dependencies for ocaml libraries - * Bumped gmetadom dependencies to >= 0.1.6 - * Bumped gdome2 dependencies to >= 0.7.4 - - -- Stefano Zacchiroli Tue, 11 Mar 2003 21:18:29 +0100 - -lablgtkmathview (0.3.99-2) unstable; urgency=low - - * Bugfix: added dep on t1lib-dev from liblablgtkmathview-ocaml-dev - * Bugfix: added dep on libgtkmathview-dev (>= 0.4.0) from - liblablgtkmathview-ocaml-dev - - -- Stefano Zacchiroli Sat, 25 Jan 2003 10:24:53 +0100 - -lablgtkmathview (0.3.99-1) unstable; urgency=low - - * Binding to gtkmathview 0.4.0 (pre-release) - * Added module GMathViewAux which contains backward compatible - "single_selection_math_view" class - * Reverted to >=/<< dependencies for ocaml libraries - * Bumped dependencies on gmetadom to 0.1.5 - * Bumped dependencies on gtkmathview to 0.4.0 - * Added missing dependencies from liblablgtkmathview-ocaml-dev to - libgdome2-ocaml-dev - * Versioned dependencies on liblablgtk-ocaml-dev - - -- Stefano Zacchiroli Wed, 22 Jan 2003 14:23:30 +0100 - -lablgtkmathview (0.3.1-1) unstable; urgency=low - - * Binding to gtkmathview 0.3.1 - * debian/control - - bumped Standards Version to 3.5.8 - - deps and build deps to ocaml{,-base}-3.06-1 - * Moved lib stuff to /usr/lib/ocaml/3.06 - - -- Stefano Zacchiroli Tue, 7 Jan 2003 12:57:47 +0100 - -lablgtkmathview (0.3.0-10) unstable; urgency=low - - * Added dep on liblablgtk-ocaml{,-dev} respectively in - liblablgtkmathview-ocaml{,-dev} - - -- Stefano Zacchiroli Tue, 17 Sep 2002 11:58:14 +0200 - -lablgtkmathview (0.3.0-9) unstable; urgency=low - - * Removed useless dh_ocamlld invocation - * Fixed native code compilation shared object path (now looks for .so - in /usr/lib/ocaml/stublibs instead of - /usr/lib/ocaml/lablgtkmathview) - - -- Stefano Zacchiroli Thu, 29 Aug 2002 15:02:21 +0200 - -lablgtkmathview (0.3.0-8) unstable; urgency=low - - * Switched to debhelper 4 - * Added build dep on findlib (>= 0.7.1) - * Rebuilt against ocaml 3.06 (Closes: Bug#158256, Bug#158266) - * Changed deps and build-deps to ocaml-3.06 and ocaml-base-3.06 as - mandated by the new ocaml packaging policy - * Removed mention of lablgtkmathview from debian/control - * Added dep on ocaml-findlib - * Moved shared objects to /usr/lib/ocaml/stublibs - - -- Stefano Zacchiroli Sun, 7 Jul 2002 13:50:52 +0200 - -lablgtkmathview (0.3.0-7) unstable; urgency=low - - * Added -fPIC when compiling some .o in order to build on HPPA - (Closes: #142462) - - -- Stefano Zacchiroli Fri, 12 Apr 2002 14:31:47 +0200 - -lablgtkmathview (0.3.0-6) unstable; urgency=low - - * Added Build-Depends on t1lib-dev (Closes: Bug#140835). - - -- Stefano Zacchiroli Tue, 2 Apr 2002 10:11:25 +0200 - -lablgtkmathview (0.3.0-5) unstable; urgency=low - - * Added Build-Depends on libgdome2-cpp-smart-dev (Closes: Bug#140720). - - -- Stefano Zacchiroli Mon, 1 Apr 2002 09:00:03 +0200 - -lablgtkmathview (0.3.0-4) unstable; urgency=low - - * Added some .mli and .ml files that document the library interface. - * Added Depends: on libgdome2-ocaml, we haven't yet estabilished how to - interact with shlibs system for ocaml shared library that are installed in - /usr/lib/ocaml - - -- Stefano Zacchiroli Mon, 1 Apr 2002 00:17:41 +0200 - -lablgtkmathview (0.3.0-3) unstable; urgency=low - - * Rebuilt against gmetadom 0.3.0-4 and gtkmathview 0.3.0-2. - - -- Stefano Zacchiroli Tue, 26 Mar 2002 19:17:56 +0100 - -lablgtkmathview (0.3.0-2) unstable; urgency=low - - * Added build dep on libgdome2-dev - * Removed CVS stuff from source tarball - - -- Stefano Zacchiroli Fri, 15 Mar 2002 13:23:53 +0100 - -lablgtkmathview (0.3.0-1) unstable; urgency=low - - * New upstream release - * Renamed resulting package to liblablgtkmathview-ocaml-dev - * Changed build-depends to adhere to the new ocaml packages naming schema - (e.g. lablgtk -> liblablgtk-ocaml-dev) (Closes: Bug#138116) - * Split away shared library in liblablgtkmathview-ocaml package - - -- Stefano Zacchiroli Wed, 13 Mar 2002 18:53:50 +0100 - -lablgtkmathview (0.2.8-1) unstable; urgency=low - - * New upstream release - * Built with ocaml 3.04 and lablgtk 1.2.3 - * Removed useless build depends - - -- Stefano Zacchiroli Mon, 25 Feb 2002 18:18:25 +0100 - -lablgtkmathview (0.2.4-4) unstable; urgency=low - - * Rebuilt with libgtkmathview 0.2.7 - - -- Stefano Zacchiroli Tue, 4 Sep 2001 22:16:35 +0200 - -lablgtkmathview (0.2.4-3) unstable; urgency=low - - * Rebuilt with ocaml 3.02 and lablgtk 1.2.1 - - -- Stefano Zacchiroli Tue, 21 Aug 2001 15:20:05 +0200 - -lablgtkmathview (0.2.4-2) unstable; urgency=low - - * Added build-dep on libxml2-dev (closes: Bug#102715). - - -- Stefano Zacchiroli Fri, 29 Jun 2001 12:39:57 +0200 - -lablgtkmathview (0.2.4-1) unstable; urgency=low - - * Initial Release (closes: Bug#93105). - - -- Stefano Zacchiroli Wed, 4 Apr 2001 23:27:07 +0200 - -Local variables: -mode: debian-changelog -End: diff --git a/helm/DEVEL/lablgtkmathview/debian/compat b/helm/DEVEL/lablgtkmathview/debian/compat deleted file mode 100644 index b8626c4cf..000000000 --- a/helm/DEVEL/lablgtkmathview/debian/compat +++ /dev/null @@ -1 +0,0 @@ -4 diff --git a/helm/DEVEL/lablgtkmathview/debian/control b/helm/DEVEL/lablgtkmathview/debian/control deleted file mode 100644 index d67f6dd86..000000000 --- a/helm/DEVEL/lablgtkmathview/debian/control +++ /dev/null @@ -1,27 +0,0 @@ -Source: lablgtkmathview -Section: devel -Priority: optional -Maintainer: Stefano Zacchiroli -Build-Depends: debhelper (>> 4.0.0), ocaml-3.06-1, ocaml-findlib, liblablgtk-ocaml-dev (>= 1.2.5), libgdome2-ocaml-dev (>= 0.1.10-3), libgtkmathview-dev (>= 0.4.3), libxml2-dev, libgdome2-dev (>= 0.7.4), libgdome2-cpp-smart-dev (>= 0.1.10-3), t1lib-dev (>= 1.3), pkg-config -Standards-Version: 3.5.10 - -Package: liblablgtkmathview-ocaml -Architecture: any -Section: libs -Depends: ocaml-base-3.06-1, liblablgtk-ocaml (>= 1.2.5), libgdome2-ocaml (>= 0.1.10-3), ${shlibs:Depends}, ${misc:Depends} -Description: OCaml bindings for libgtkmathview, a GTK widget to render MathML - This is the Ocaml binding for the GtkMathView widget, that is - currently available in the libgtkmathview0 package. - . - This package contains only the shared runtime stub libraries. - -Package: liblablgtkmathview-ocaml-dev -Architecture: any -Section: libdevel -Depends: ocaml-3.06-1, liblablgtk-ocaml-dev (>= 1.2.5), libgtkmathview0 (>= 0.4.3), liblablgtkmathview-ocaml (= ${Source-Version}), ocaml-findlib, libgdome2-ocaml-dev (>= 0.1.10-3), t1lib-dev, libgtkmathview-dev (>= 0.4.3), ${misc:Depends} -Description: OCaml bindings for libgtkmathview, a GTK widget to render MathML - These are the Ocaml bindings for the GtkMathView widget, that is - currently available in the libgtkmathview0 package. - . - This package contains the development part of the lablgtkmathview package. - diff --git a/helm/DEVEL/lablgtkmathview/debian/copyright b/helm/DEVEL/lablgtkmathview/debian/copyright deleted file mode 100644 index 7ac39e1a9..000000000 --- a/helm/DEVEL/lablgtkmathview/debian/copyright +++ /dev/null @@ -1,21 +0,0 @@ -This package was debianized by Stefano Zacchiroli on -Wed, 4 Apr 2001 23:27:07 +0200. - -It was packed from source obtained via cvs, with this CVSROOT: - :pserver:anonymous@phd.cs.unibo.it:/home/lpadovan/PHELM/ - -Authors: - Luca Padovani - Claudio Sacerdoti Coen - -Copyright: - - Copyright (C) 2000, Luca Padovani . - - This file is part of lablgtkmathview, the Ocaml binding - for the GtkMathView widget. - - lablgtkmathview is free software, you can redistribute it and/or modify - it under the terms of the GNU General Public License. You can find a - copy of the license in /usr/share/common-licenses/GPL. - diff --git a/helm/DEVEL/lablgtkmathview/debian/docs b/helm/DEVEL/lablgtkmathview/debian/docs deleted file mode 100644 index e845566c0..000000000 --- a/helm/DEVEL/lablgtkmathview/debian/docs +++ /dev/null @@ -1 +0,0 @@ -README diff --git a/helm/DEVEL/lablgtkmathview/debian/liblablgtkmathview-ocaml-dev.dirs b/helm/DEVEL/lablgtkmathview/debian/liblablgtkmathview-ocaml-dev.dirs deleted file mode 100644 index dd368536a..000000000 --- a/helm/DEVEL/lablgtkmathview/debian/liblablgtkmathview-ocaml-dev.dirs +++ /dev/null @@ -1,2 +0,0 @@ -usr/lib/ocaml/3.06 -usr/lib/ocaml/3.06/stublibs diff --git a/helm/DEVEL/lablgtkmathview/debian/liblablgtkmathview-ocaml.dirs b/helm/DEVEL/lablgtkmathview/debian/liblablgtkmathview-ocaml.dirs deleted file mode 100644 index 8fd999513..000000000 --- a/helm/DEVEL/lablgtkmathview/debian/liblablgtkmathview-ocaml.dirs +++ /dev/null @@ -1 +0,0 @@ -usr/lib/ocaml/3.06 diff --git a/helm/DEVEL/lablgtkmathview/debian/liblablgtkmathview-ocaml.install b/helm/DEVEL/lablgtkmathview/debian/liblablgtkmathview-ocaml.install deleted file mode 100644 index cd2f92f95..000000000 --- a/helm/DEVEL/lablgtkmathview/debian/liblablgtkmathview-ocaml.install +++ /dev/null @@ -1,2 +0,0 @@ -usr/lib/ocaml/3.06/lablgtkmathview/*.so -usr/lib/ocaml/3.06/stublibs/* diff --git a/helm/DEVEL/lablgtkmathview/debian/rules b/helm/DEVEL/lablgtkmathview/debian/rules deleted file mode 100755 index 3057fad83..000000000 --- a/helm/DEVEL/lablgtkmathview/debian/rules +++ /dev/null @@ -1,65 +0,0 @@ -#!/usr/bin/make -f -# Sample debian/rules that uses debhelper. -# GNU copyright 1997 to 1999 by Joey Hess. - -# Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 - -TARGETDIR = debian/liblablgtkmathview-ocaml-dev - -configure: configure-stamp -configure-stamp: - dh_testdir - ./configure - - touch configure-stamp - -build: configure-stamp build-stamp -build-stamp: - dh_testdir - - $(MAKE) - if [ -x /usr/bin/ocamlopt ]; then $(MAKE) opt; else true; fi - - touch build-stamp - -clean: - dh_testdir - dh_testroot - rm -f build-stamp configure-stamp - - -$(MAKE) distclean - - dh_clean - -install: build - dh_testdir - dh_testroot - dh_clean -k - dh_installdirs -s - - $(MAKE) install PREFIX=$(TARGETDIR)/usr/lib/ocaml/3.06 - -movefiles: install - dh_install -p liblablgtkmathview-ocaml --sourcedir=$(TARGETDIR) - -binary-arch: build install - dh_testdir - dh_testroot - dh_installdocs -s - dh_installexamples -s - dh_installmanpages -s - dh_installinfo -s - dh_installchangelogs -s ChangeLog - dh_link -s - dh_strip -s - dh_compress -s - dh_fixperms -s - dh_installdeb -s - dh_shlibdeps -s - dh_gencontrol -s - dh_md5sums -s - dh_builddeb -s - -binary: binary-arch -.PHONY: build clean binary-arch binary install configure diff --git a/helm/DEVEL/lablgtkmathview/gMathView.ml b/helm/DEVEL/lablgtkmathview/gMathView.ml deleted file mode 100644 index 3687c043b..000000000 --- a/helm/DEVEL/lablgtkmathview/gMathView.ml +++ /dev/null @@ -1,183 +0,0 @@ -(* Copyright (C) 2000-2003, Luca Padovani , - * Claudio Sacerdoti Coen . - * - * This file is part of lablgtkmathview, the Ocaml binding - * for the GtkMathView widget. - * - * lablgtkmathview 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. - * - * lablgtkmathview 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 lablgtkmathview; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * For details, send a mail to the author. - *) - -open Gaux -open Gtk -open Gtk_mathview -open GtkBase -open GtkMathView -open GObj - -exception ErrorLoadingFile of string;; -exception ErrorWritingFile of string;; -exception ErrorLoadingDOM;; -exception NoSelection;; - -let option_element_of_option = - function - None -> None - | Some v -> Some (new Gdome.element v) - -class math_view_signals obj = object - inherit GContainer.container_signals obj - method click = - let module S = GtkSignal in - let new_click = - let new_marshaller f x y = - MathView.Signals.click.S.marshaller - (fun e s -> f (option_element_of_option e) s) x y - in - { S.name = "click"; S.classe = `math_view; - S.marshaller = new_marshaller } - in - GtkSignal.connect ~sgn:new_click obj ~after - method select_begin = - let module S = GtkSignal in - let new_select_begin = - let new_marshaller f x y = - MathView.Signals.select_begin.S.marshaller - (fun e s -> f (option_element_of_option e) s) x y - in - { S.name = "select_begin"; S.classe = `math_view; - S.marshaller = new_marshaller } - in - GtkSignal.connect ~sgn:new_select_begin obj ~after - method select_over = - let module S = GtkSignal in - let new_select_over = - let new_marshaller f x y = - MathView.Signals.select_over.S.marshaller - (fun e s -> f (option_element_of_option e) s) x y - in - { S.name = "select_over"; S.classe = `math_view; - S.marshaller = new_marshaller } - in - GtkSignal.connect ~sgn:new_select_over obj ~after - method select_end = - let module S = GtkSignal in - let new_select_end = - let new_marshaller f x y = - MathView.Signals.select_end.S.marshaller - (fun e s -> f (option_element_of_option e) s) x y - in - { S.name = "select_end"; S.classe = `math_view; - S.marshaller = new_marshaller } - in - GtkSignal.connect ~sgn:new_select_end obj ~after - method select_abort = - let module S = GtkSignal in - let new_select_abort = - let new_marshaller f x y = - MathView.Signals.select_abort.S.marshaller - (fun () -> f ()) x y - in - { S.name = "select_abort"; S.classe = `math_view; - S.marshaller = new_marshaller } - in - GtkSignal.connect ~sgn:new_select_abort obj ~after - method element_over = - let module S = GtkSignal in - let new_element_over = - let new_marshaller f x y = - MathView.Signals.element_over.S.marshaller - (fun e s -> f (option_element_of_option e) s) x y - in - { S.name = "element_over"; S.classe = `math_view; - S.marshaller = new_marshaller } - in - GtkSignal.connect ~sgn:new_element_over obj ~after -end - -class math_view_skel obj = object - inherit GContainer.container (obj : Gtk_mathview.math_view obj) - method freeze = MathView.freeze obj - method thaw = MathView.thaw obj - method load_uri ~filename = - if not (MathView.load_uri obj ~filename) then raise (ErrorLoadingFile filename) - method load_doc ~dom = - if not (MathView.load_doc obj ~dom:((dom : Gdome.document)#as_Document)) then - raise ErrorLoadingDOM - method unload = MathView.unload obj - method select element = MathView.select obj ((element : Gdome.element)#as_Element) - method unselect element = MathView.unselect obj ((element : Gdome.element)#as_Element) - method is_selected element = MathView.is_selected obj ((element : Gdome.element)#as_Element) - method get_element_at x y = option_element_of_option (MathView.get_element_at obj x y) - method get_width = MathView.get_width obj - method get_height = MathView.get_height obj - method get_top = MathView.get_top obj - method set_top = MathView.set_top obj - method set_adjustments = - fun adj1 adj2 -> - MathView.set_adjustments obj (GData.as_adjustment adj1) - (GData.as_adjustment adj2) - method get_hadjustment = new GData.adjustment (MathView.get_hadjustment obj) - method get_vadjustment = new GData.adjustment (MathView.get_vadjustment obj) - method get_buffer = MathView.get_buffer obj - method get_frame = new GBin.frame (MathView.get_frame obj) - method get_drawing_area = new GMisc.drawing_area (MathView.get_drawing_area obj) - method set_font_size = MathView.set_font_size obj - method get_font_size = MathView.get_font_size obj - method set_anti_aliasing = MathView.set_anti_aliasing obj - method get_anti_aliasing = MathView.get_anti_aliasing obj - method set_transparency = MathView.set_transparency obj - method get_transparency = MathView.get_transparency obj - method set_log_verbosity = MathView.set_log_verbosity obj - method get_log_verbosity = MathView.get_log_verbosity obj - method export_to_postscript - ?(width = 595) ?(height = 822) ?(x_margin = 72) ?(y_margin = 72) - ?(disable_colors = false) ~filename () = - let result = MathView.export_to_postscript obj - ~width ~height ~x_margin ~y_margin ~disable_colors ~filename - in - if not result then raise (ErrorWritingFile filename) - method get_font_manager_type = MathView.get_font_manager_type obj - method set_font_manager_type ~fm_type = MathView.set_font_manager_type obj ~fm_type -end - -class math_view obj = object - inherit math_view_skel (obj : Gtk_mathview.math_view obj) - method connect = new math_view_signals obj -end - -let math_view ?adjustmenth ?adjustmentv ?font_size ?font_manager ?border_width - ?width ?height ?packing ?show () = - let w = - MathView.create - ?adjustmenth:(may_map ~f:GData.as_adjustment adjustmenth) - ?adjustmentv:(may_map ~f:GData.as_adjustment adjustmentv) - () - in - Container.set w ?border_width ?width ?height; - let mathview = pack_return (new math_view w) ~packing ~show in - begin - match font_size with - | Some size -> mathview#set_font_size size - | None -> () - end; - begin - match font_manager with - | Some manager -> mathview#set_font_manager_type ~fm_type:manager - | None -> () - end; - mathview -;; diff --git a/helm/DEVEL/lablgtkmathview/gMathView.mli b/helm/DEVEL/lablgtkmathview/gMathView.mli deleted file mode 100644 index 5ffffa4be..000000000 --- a/helm/DEVEL/lablgtkmathview/gMathView.mli +++ /dev/null @@ -1,106 +0,0 @@ -(* Copyright (C) 2000-2003, Luca Padovani , - * Claudio Sacerdoti Coen . - * - * This file is part of lablgtkmathview, the Ocaml binding - * for the GtkMathView widget. - * - * lablgtkmathview 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. - * - * lablgtkmathview 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 lablgtkmathview; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * For details, send a mail to the author. - *) - -exception ErrorLoadingFile of string -exception ErrorWritingFile of string -exception ErrorLoadingDOM -exception NoSelection - -class math_view_signals : - ([> `container | `widget | `base | `math_view] as 'b) Gtk.obj -> - object ('a) - inherit GContainer.container_signals - val obj: 'b Gtk.obj - method click : - callback:(Gdome.element option -> int -> unit) -> GtkSignal.id - method element_over : - callback:(Gdome.element option -> int -> unit) -> GtkSignal.id - method select_begin : - callback:(Gdome.element option -> int -> unit) -> GtkSignal.id - method select_over : - callback:(Gdome.element option -> int -> unit) -> GtkSignal.id - method select_end : - callback:(Gdome.element option -> int -> unit) -> GtkSignal.id - method select_abort : - callback:(unit -> unit) -> GtkSignal.id - end - -class math_view_skel : - (Gtk_mathview.math_view Gtk.obj as 'a)-> - object - inherit GContainer.container - method freeze : unit - method thaw : unit - method export_to_postscript : - ?width:int -> - ?height:int -> - ?x_margin:int -> - ?y_margin:int -> - ?disable_colors:bool -> filename:string -> unit -> unit - method get_anti_aliasing : bool - method get_buffer : Gdk.pixmap - method get_font_manager_type : [ `font_manager_gtk | `font_manager_t1] - method get_font_size : int - method get_frame : GBin.frame - method get_drawing_area : GMisc.drawing_area - method get_hadjustment : GData.adjustment - method get_height : int - method get_log_verbosity : int - method get_top : int * int - method get_transparency : bool - method get_vadjustment : GData.adjustment - method get_width : int - method load_uri : filename:string -> unit - method load_doc : dom:Gdome.document -> unit - method set_adjustments : GData.adjustment -> GData.adjustment -> unit - method set_anti_aliasing : bool -> unit - method set_font_manager_type : - fm_type:[ `font_manager_gtk | `font_manager_t1] -> unit - method set_font_size : int -> unit - method set_log_verbosity : int -> unit - method select : Gdome.element -> unit - method unselect : Gdome.element -> unit - method get_element_at : int -> int -> Gdome.element option - method is_selected : Gdome.element -> bool - method set_top : int -> int -> unit - method set_transparency : bool -> unit - method unload : unit - val obj : 'a - end - -class math_view : - Gtk_mathview.math_view Gtk.obj -> - object - inherit math_view_skel - method connect : math_view_signals - end - -val math_view : - ?adjustmenth:GData.adjustment -> - ?adjustmentv:GData.adjustment -> - ?font_size:int -> - ?font_manager:[ `font_manager_gtk | `font_manager_t1] -> - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(GObj.widget -> unit) -> ?show:bool -> unit -> math_view diff --git a/helm/DEVEL/lablgtkmathview/gMathViewAux.ml b/helm/DEVEL/lablgtkmathview/gMathViewAux.ml deleted file mode 100644 index 928e21965..000000000 --- a/helm/DEVEL/lablgtkmathview/gMathViewAux.ml +++ /dev/null @@ -1,329 +0,0 @@ -(* Copyright (C) 2000-2003, Luca Padovani , - * Claudio Sacerdoti Coen . - * - * This file is part of lablgtkmathview, the Ocaml binding - * for the GtkMathView widget. - * - * lablgtkmathview 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. - * - * lablgtkmathview 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 lablgtkmathview; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * For details, send a mail to the author. - *) - -(* finds the common node ancestor of two nodes *) -let common_ancestor (first : Gdome.node) (last : Gdome.node) = - let rec path n = - match n#get_parentNode with - None -> [n] - | Some p -> n::(path p) - in - let rec last_common = - function - _, hd1::tl1, hd2::tl2 when hd1#isSameNode hd2 -> (last_common ((Some hd1),tl1,tl2)) - | Some e, _, _ -> e - | _,_,_ -> assert false - in - (last_common (None,(List.rev (path first)),(List.rev (path last)))) - -let same_element (e1 : Gdome.element option) (e2 : Gdome.element option) = - match e1, e2 with - None, None -> true - | Some e1, Some e2 when (e1 :> Gdome.node)#isSameNode (e2 :> Gdome.node) -> true - | _ -> false - -(* true if n1 is n2 or one of n2's descendants *) -let rec descendant_of (n1 : Gdome.node) (n2 : Gdome.node) = - if n1#isSameNode n2 then true - else - match n1#get_parentNode with - None -> false - | Some n1' -> descendant_of n1' n2 - -let remove_descendants_of (el : Gdome.element) = - let rec aux = - function - [] -> [] - | hd::tl when descendant_of (hd :> Gdome.node) (el :> Gdome.node) -> aux tl - | hd::tl -> hd::(aux tl) - in - aux - -(* mem el l = true if the node n is stored in the list l *) -let mem (el : Gdome.element) = - let rec mem_aux = - function - hd::_ when (hd :> Gdome.node)#isSameNode (el :> Gdome.node) -> true - | _::tl -> mem_aux tl - | _ -> false - in - mem_aux - -(* remove el l = l' where l' has the same nodes as l except that all - * the occurrences of n have been removed *) -let remove (el : Gdome.element) = - let rec remove_aux = - function - hd::tl when (hd :> Gdome.node)#isSameNode (el :> Gdome.node) -> - remove_aux tl - | hd::tl -> hd::(remove_aux tl) - | [] -> [] - in - remove_aux - -class single_selection_math_view_signals obj (set_selection_changed : (Gdome.element option -> unit) -> unit) = - object - inherit GMathView.math_view_signals obj - method selection_changed = set_selection_changed - end -;; - -class single_selection_math_view obj = - object(self) - inherit GMathView.math_view_skel obj - val mutable first_selected = None - val mutable root_selected = None - val mutable selection_changed = (fun _ -> ()) - - method set_selection elem = - self#freeze ; - begin - match root_selected with - None -> () - | Some e -> self#unselect e - end; - root_selected <- elem ; - begin - match elem with - None -> () - | Some e -> self#select e - end ; - self#thaw - - method get_selection = root_selected - - method connect = - new - single_selection_math_view_signals obj - (function f -> selection_changed <- f) - - method action_toggle (elem : Gdome.element) = - match elem#get_namespaceURI, elem#get_localName with - Some ns, Some ln - when ns#to_string = "http://www.w3.org/1998/Math/MathML" && - ln#to_string = "maction" - -> - begin - let selection_attr = Gdome.domString "selection" in - let selection = - if elem#hasAttribute ~name:selection_attr then - int_of_string (elem#getAttribute ~name:selection_attr)#to_string - else - 1 - in - self#freeze ; - (* the widget will cast the index back into a valid range *) - elem#setAttribute ~name:selection_attr - ~value:(Gdome.domString (string_of_int (selection + 1))) ; - self#thaw ; - true - end - | _ -> - begin - match elem#get_parentNode with - Some p -> - begin - try - self#action_toggle (new Gdome.element_of_node p) - with - GdomeInit.DOMCastException _ -> false - end - | None -> assert false (* every element has a parent *) - end - - initializer - selection_changed <- self#set_selection ; - - ignore - (self#connect#select_begin - (fun (elem : Gdome.element option) _ -> - if not (same_element root_selected elem) then selection_changed elem ; - first_selected <- elem)) ; - - ignore - (self#connect#select_over - (fun (elem : Gdome.element option) _ -> - let new_selected = - match first_selected, elem with - Some first', Some last' -> - (Some - (new Gdome.element_of_node - (common_ancestor (first' :> Gdome.node) (last' :> Gdome.node)))) - | _ -> None - in - if not (same_element root_selected new_selected) then - selection_changed new_selected)) ; - - ignore - (self#connect#select_end - (fun (elem : Gdome.element option) _ -> first_selected <- None)) ; - - ignore - (self#connect#select_abort - (fun () -> - first_selected <- None ; - selection_changed None)) ; - - ignore (self#connect#click (fun _ _ -> self#set_selection None)) - end -;; - -let single_selection_math_view ?adjustmenth ?adjustmentv ?font_size ?font_manager ?border_width - ?width ?height ?packing ?show () = - let w = - GtkMathView.MathView.create - ?adjustmenth:(Gaux.may_map ~f:GData.as_adjustment adjustmenth) - ?adjustmentv:(Gaux.may_map ~f:GData.as_adjustment adjustmentv) - () - in - GtkBase.Container.set w ?border_width ?width ?height; - let mathview = - GObj.pack_return (new single_selection_math_view w) ~packing ~show - in - begin - match font_size with - | Some size -> mathview#set_font_size size - | None -> () - end; - begin - match font_manager with - | Some manager -> mathview#set_font_manager_type ~fm_type:manager - | None -> () - end; - mathview -;; - -class multi_selection_math_view_signals obj - (set_selection_changed : (Gdome.element option -> unit) -> unit) -= - object - inherit GMathView.math_view_signals obj - method selection_changed = set_selection_changed - end -;; - -class multi_selection_math_view obj = - object(self) - inherit single_selection_math_view obj - val mutable selected : Gdome.element list = [] - - method remove_selection (elem : Gdome.element) = - if mem elem selected then - selected <- remove elem selected ; - self#unselect elem - - method remove_selections = - self#freeze ; - List.iter (fun e -> self#unselect e) selected ; - selected <- [] ; - begin - match self#get_selection with - None -> () - | Some e -> self#select e - end ; - self#thaw - - method add_selection (elem : Gdome.element) = - selected <- elem::(remove_descendants_of elem selected) ; - self#select elem - - method get_selections = selected - - method set_selection elem = - self#freeze ; - begin - match root_selected with - None -> () - | Some e -> self#unselect e ; List.iter (fun e -> self#select e) selected - end; - root_selected <- elem; - begin - match elem with - None -> () - | Some e -> self#select e - end ; - self#thaw - - initializer - ignore - (self#connect#select_begin - (fun _ state -> - if not (List.mem `CONTROL (Gdk.Convert.modifier state)) then - self#remove_selections)) ; - - ignore - (self#connect#select_over - (fun _ state -> - Printf.printf "stable selections: %d\n" (List.length selected) ; - Printf.printf "select_over with state: " ; - let c = - function - `SHIFT -> "shift " - | `LOCK -> "lock " - | `CONTROL -> "control " - | `MOD1 -> "mod1 " - | _ -> "" - in - List.iter (fun x -> print_string (c x)) (Gdk.Convert.modifier state) ; - print_char '\n' ; - flush stdout)) ; - - ignore - (self#connect#select_end - (fun _ state -> - Printf.printf "select_end\n" ; flush stdout ; - if not (List.mem `CONTROL (Gdk.Convert.modifier state)) then - self#remove_selections ; - match root_selected with - None -> () - | Some e -> self#set_selection None ; self#add_selection e)) ; - - ignore - (self#connect#click - (fun _ _ -> self#remove_selections)) - end - ;; - -let multi_selection_math_view ?adjustmenth ?adjustmentv ?font_size ?font_manager ?border_width - ?width ?height ?packing ?show () = - let w = - GtkMathView.MathView.create - ?adjustmenth:(Gaux.may_map ~f:GData.as_adjustment adjustmenth) - ?adjustmentv:(Gaux.may_map ~f:GData.as_adjustment adjustmentv) - () - in - GtkBase.Container.set w ?border_width ?width ?height; - let mathview = GObj.pack_return (new multi_selection_math_view w) ~packing ~show in - begin - match font_size with - | Some size -> mathview#set_font_size size - | None -> () - end; - begin - match font_manager with - | Some manager -> mathview#set_font_manager_type ~fm_type:manager - | None -> () - end; - mathview -;; - diff --git a/helm/DEVEL/lablgtkmathview/gMathViewAux.mli b/helm/DEVEL/lablgtkmathview/gMathViewAux.mli deleted file mode 100644 index edcf15635..000000000 --- a/helm/DEVEL/lablgtkmathview/gMathViewAux.mli +++ /dev/null @@ -1,78 +0,0 @@ -(* Copyright (C) 2000-2003, Luca Padovani , - * Claudio Sacerdoti Coen . - * - * This file is part of lablgtkmathview, the Ocaml binding - * for the GtkMathView widget. - * - * lablgtkmathview 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. - * - * lablgtkmathview 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 lablgtkmathview; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * For details, send a mail to the author. - *) - -class single_selection_math_view_signals : - ([> `container | `widget | `base | `math_view] as 'b) Gtk.obj -> - ((Gdome.element option -> unit) -> unit) -> - object - inherit GMathView.math_view_signals - method selection_changed : (Gdome.element_of_node option -> unit) -> unit - end - -class single_selection_math_view : - Gtk_mathview.math_view Gtk.obj -> - object - inherit GMathView.math_view_skel - method connect : single_selection_math_view_signals - method get_selection : Gdome.element option - method set_selection : Gdome.element option -> unit - method action_toggle : Gdome.element -> bool - end - -val single_selection_math_view : - ?adjustmenth:GData.adjustment -> - ?adjustmentv:GData.adjustment -> - ?font_size:int -> - ?font_manager:[ `font_manager_gtk | `font_manager_t1] -> - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(GObj.widget -> unit) -> - ?show:bool -> - unit -> single_selection_math_view - - (** EXPERIMENTAL STUFF from now on: use with care and at your own risk! *) - -class multi_selection_math_view : - Gtk_mathview.math_view Gtk.obj -> - object - inherit single_selection_math_view - method remove_selection : Gdome.element -> unit - method remove_selections : unit - method add_selection : Gdome.element -> unit - method get_selections : Gdome.element list - end - -val multi_selection_math_view : - ?adjustmenth:GData.adjustment -> - ?adjustmentv:GData.adjustment -> - ?font_size:int -> - ?font_manager:[ `font_manager_gtk | `font_manager_t1] -> - ?border_width:int -> - ?width:int -> - ?height:int -> - ?packing:(GObj.widget -> unit) -> - ?show:bool -> - unit -> multi_selection_math_view - - diff --git a/helm/DEVEL/lablgtkmathview/gtkMathView.ml b/helm/DEVEL/lablgtkmathview/gtkMathView.ml deleted file mode 100644 index 2420c94c1..000000000 --- a/helm/DEVEL/lablgtkmathview/gtkMathView.ml +++ /dev/null @@ -1,175 +0,0 @@ -(* Copyright (C) 2000-2003, Luca Padovani , - * Claudio Sacerdoti Coen . - * - * This file is part of lablgtkmathview, the Ocaml binding - * for the GtkMathView widget. - * - * lablgtkmathview 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. - * - * lablgtkmathview 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 lablgtkmathview; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * For details, send a mail to the author. - *) - -open Gtk -open Gtk_mathview -open Tags -open GtkBase -open Gpointer - -external gdome_element_of_boxed_option : - Gpointer.boxed option -> TElement.t = - "ml_gtk_math_view_gdome_element_of_boxed_option" - -external gdome_element_option_of_boxed_option : - Gpointer.boxed option -> TElement.t option = - "ml_gtk_math_view_gdome_element_option_of_boxed_option" - -module MathView = struct - exception NoSelection - - let cast w : math_view obj = Object.try_cast w "GtkMathView" - external create : Gtk.adjustment optobj -> Gtk.adjustment optobj -> - math_view obj = "ml_gtk_math_view_new" - let create ~adjustmenth ~adjustmentv () = - create (optboxed adjustmenth) (optboxed adjustmentv) - external freeze : [>`math_view] obj -> unit = - "ml_gtk_math_view_freeze" - external thaw : [>`math_view] obj -> unit = - "ml_gtk_math_view_thaw" - external load_uri : [>`math_view] obj -> filename:string -> bool = - "ml_gtk_math_view_load_uri" - external load_doc : [>`math_view] obj -> dom:[> `Document] GdomeT.t -> bool = - "ml_gtk_math_view_load_doc" - external unload : [>`math_view] obj -> unit = - "ml_gtk_math_view_unload" - external select : - [>`math_view] obj -> [> `Element] GdomeT.t -> unit = - "ml_gtk_math_view_select" - external unselect : - [>`math_view] obj -> [> `Element] GdomeT.t -> unit = - "ml_gtk_math_view_unselect" - external is_selected : - [>`math_view] obj -> [> `Element] GdomeT.t -> bool = - "ml_gtk_math_view_is_selected" - external get_element_at : - [> `math_view] obj -> int -> int -> TElement.t option = - "ml_gtk_math_view_get_element_at" - external get_width : [>`math_view] obj -> int = - "ml_gtk_math_view_get_width" - external get_height : [>`math_view] obj -> int = - "ml_gtk_math_view_get_height" - external get_top : [>`math_view] obj -> (int * int) = - "ml_gtk_math_view_get_top" - external set_top : [>`math_view] obj -> int -> int -> unit = - "ml_gtk_math_view_set_top" - external set_adjustments : [>`math_view] obj -> Gtk.adjustment obj -> Gtk.adjustment obj -> unit = - "ml_gtk_math_view_set_adjustments" - external get_hadjustment : [>`math_view] obj -> Gtk.adjustment obj = - "ml_gtk_math_view_get_hadjustment" - external get_vadjustment : [>`math_view] obj -> Gtk.adjustment obj = - "ml_gtk_math_view_get_vadjustment" - external get_buffer : [>`math_view] obj -> Gdk.pixmap = - "ml_gtk_math_view_get_buffer" - external get_frame : [>`math_view] obj -> Gtk.frame obj = - "ml_gtk_math_view_get_frame" - external get_drawing_area : [>`math_view] obj -> Gtk.drawing_area obj = - "ml_gtk_math_view_get_drawing_area" - external set_font_size : [>`math_view] obj -> int -> unit = - "ml_gtk_math_view_set_font_size" - external get_font_size : [>`math_view] obj -> int = - "ml_gtk_math_view_get_font_size" - external set_anti_aliasing : [>`math_view] obj -> bool -> unit = - "ml_gtk_math_view_set_anti_aliasing" - external get_anti_aliasing : [>`math_view] obj -> bool = - "ml_gtk_math_view_get_anti_aliasing" - external set_transparency : [>`math_view] obj -> bool -> unit = - "ml_gtk_math_view_set_transparency" - external get_transparency : [>`math_view] obj -> bool = - "ml_gtk_math_view_get_transparency" - external set_log_verbosity : [>`math_view] obj -> int -> unit = - "ml_gtk_math_view_set_log_verbosity" - external get_log_verbosity : [>`math_view] obj -> int = - "ml_gtk_math_view_get_log_verbosity" - external export_to_postscript : - [>`math_view] obj -> width:int -> height:int -> x_margin:int -> y_margin:int -> disable_colors:bool -> filename:string -> bool = - "ml_gtk_math_view_export_to_postscript_bytecode" "ml_gtk_math_view_export_to_postscript_native" - external get_font_manager_type : [>`math_view] obj -> - [`font_manager_gtk | `font_manager_t1] = - "ml_gtk_math_view_get_font_manager_type" - external set_font_manager_type : [>`math_view] obj -> - fm_type:[`font_manager_gtk | `font_manager_t1] -> unit = - "ml_gtk_math_view_set_font_manager_type" - - module Signals = struct - open GtkSignal - - let click : ([>`math_view],_) t = - let marshal_click f _ = - function - [GtkArgv.POINTER element; GtkArgv.INT state] -> - f (gdome_element_option_of_boxed_option element) state - | _ -> invalid_arg "GtkMathView.MathView.Signals.marshal_click" - in - { name = "click"; classe = `math_view; marshaller = marshal_click } - - let element_over : ([>`math_view],_) t = - let marshal_element_over f _ = - function - [GtkArgv.POINTER element; GtkArgv.INT state] -> - f (gdome_element_option_of_boxed_option element) state - | _ -> invalid_arg "GtkMathView.MathView.Signals.marshal_element_over" - in - { name = "element_over"; classe = `math_view; - marshaller = marshal_element_over } - - let select_begin : ([>`math_view],_) t = - let marshal_select_begin f _ = - function - [GtkArgv.POINTER element; GtkArgv.INT state] -> - f (gdome_element_option_of_boxed_option element) state - | _ -> invalid_arg "GtkMathView.MathView.Signals.marshal_select_begin" - in - { name = "select_begin"; classe = `math_view; - marshaller = marshal_select_begin } - - let select_over : ([>`math_view],_) t = - let marshal_select_over f _ = - function - [GtkArgv.POINTER element; GtkArgv.INT state] -> - f (gdome_element_option_of_boxed_option element) state - | _ -> invalid_arg "GtkMathView.MathView.Signals.marshal_select_over" - in - { name = "select_over"; classe = `math_view; - marshaller = marshal_select_over } - - let select_end : ([>`math_view],_) t = - let marshal_select_end f _ = - function - [GtkArgv.POINTER element; GtkArgv.INT state] -> - f (gdome_element_option_of_boxed_option element) state - | _ -> invalid_arg "GtkMathView.MathView.Signals.marshal_select_end" - in - { name = "select_end"; classe = `math_view; - marshaller = marshal_select_end } - - let select_abort : ([>`math_view],_) t = - let marshal_select_abort f _ = - function - [] -> f () - | _ -> invalid_arg "GtkMathView.MathView.Signals.marshal_select_abort" - in - { name = "select_abort"; classe = `math_view; - marshaller = marshal_select_abort } - end -end diff --git a/helm/DEVEL/lablgtkmathview/gtk_mathview.ml b/helm/DEVEL/lablgtkmathview/gtk_mathview.ml deleted file mode 100644 index 5472acbe5..000000000 --- a/helm/DEVEL/lablgtkmathview/gtk_mathview.ml +++ /dev/null @@ -1,24 +0,0 @@ -(* Copyright (C) 2000-2003, Luca Padovani , - * Claudio Sacerdoti Coen . - * - * This file is part of lablgtkmathview, the Ocaml binding - * for the GtkMathView widget. - * - * lablgtkmathview 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. - * - * lablgtkmathview 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 lablgtkmathview; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * For details, send a mail to the author. - *) - -type math_view = [`widget|`container|`bin|`eventbox|`math_view|`base] diff --git a/helm/DEVEL/lablgtkmathview/lablgtk/META.lablgtk b/helm/DEVEL/lablgtkmathview/lablgtk/META.lablgtk deleted file mode 100644 index f70c5bec6..000000000 --- a/helm/DEVEL/lablgtkmathview/lablgtk/META.lablgtk +++ /dev/null @@ -1,6 +0,0 @@ -requires="" -version="1.2.0" -archive(byte)="lablgtk.cma lablgnome.cma gtkInit.cmo" -archive(native)="lablgtk.cmxa lablgnome.cmxa gtkInit.cmx" -linkopts="" -directory="+lablgtk" diff --git a/helm/DEVEL/lablgtkmathview/lablgtkmathview.spec.in b/helm/DEVEL/lablgtkmathview/lablgtkmathview.spec.in deleted file mode 100644 index 8e7e6fd7b..000000000 --- a/helm/DEVEL/lablgtkmathview/lablgtkmathview.spec.in +++ /dev/null @@ -1,28 +0,0 @@ -Summary: The LablGTK binding for the GtkMathView widget -Name: @PACKAGE@ -Version: @VERSION@ -Release: 1 -Copyright: GPL -URL: http://www.cs.unibo.it/helm -Packager: Luca Padovani -Requires: gtkmathview >= 0.2.2 ocaml >= 3.00 lablgtk -Group: Applications/Publishing -Source: www.cs.unibo.it:/~lpadovan/mml-widget/@PACKAGE@-@VERSION@.tar.gz -%description -The LablGTK binding for the GtkMathView widget - -%prep -%setup - -%build -./configure -make configure - -%install -make -make opt -make install - -%files -%doc AUTHORS COPYING ChangeLog NEWS README -/usr/lib/ocaml/lablgtkmathview diff --git a/helm/DEVEL/lablgtkmathview/ml_gtk_mathview.c b/helm/DEVEL/lablgtkmathview/ml_gtk_mathview.c deleted file mode 100644 index 9a7f98fcf..000000000 --- a/helm/DEVEL/lablgtkmathview/ml_gtk_mathview.c +++ /dev/null @@ -1,219 +0,0 @@ -/* Copyright (C) 2000-2003, Luca Padovani , - * Claudio Sacerdoti Coen . - * - * This file is part of lablgtkmathview, the Ocaml binding - * for the GtkMathView widget. - * - * lablgtkmathview 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. - * - * lablgtkmathview 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 lablgtkmathview; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * For details, send a mail to the author. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include -#include -#include -#include -#include - -#include - -#define GtkMathView_val(val) check_cast(GTK_MATH_VIEW,val) - -#define FontManagerId_val(val) Int_val(val) -#define Val_FontManagerId(val) Val_int(val) - -/* As ML_1, but the result is optional */ -#define OML_1(cname, conv1, conv) \ -value ml_##cname (value arg1) { return Val_option_ptr((cname (conv1 (arg1))),conv); } -/* As ML_3, but the result is optional */ -#define OML_3(cname, conv1, conv2, conv3, conv) \ -value ml_##cname (value arg1, value arg2, value arg3) { return Val_option_ptr((cname (conv1 (arg1), conv2 (arg2), conv3 (arg3))),conv); } -/* As ML_2, but the second argument is optional */ -#define ML_2O(cname, conv1, conv2, conv) \ -value ml_##cname (value arg1, value arg2) \ -{ return conv (cname (conv1(arg1), ptr_val_option(arg2,conv2))); } - -FontManagerId -font_manager_id_of_value(value v) -{ - if (v == hash_variant("font_manager_gtk")) return FONT_MANAGER_GTK; - else if (v == hash_variant("font_manager_t1")) return FONT_MANAGER_T1; - else assert(0); -} - -value -value_of_font_manager_id(FontManagerId id) -{ - switch (id) { - case FONT_MANAGER_GTK: - return hash_variant("font_manager_gtk"); - case FONT_MANAGER_T1: - return hash_variant("font_manager_t1"); - default: - assert(0); - break; - } -} - -value Val_Element_ref(GdomeElement* elem) -{ - if (elem != NULL) - { - GdomeException exc = 0; - gdome_el_ref(elem, &exc); - g_assert(exc == 0); - } - return Val_Element(elem); -} - -ML_2 (gtk_math_view_new,GtkAdjustment_val, GtkAdjustment_val, Val_GtkWidget_sink) -ML_1 (gtk_math_view_freeze, GtkMathView_val, Unit) -ML_1 (gtk_math_view_thaw, GtkMathView_val, Unit) -ML_2 (gtk_math_view_load_uri, GtkMathView_val, String_val, Val_bool) -ML_2 (gtk_math_view_load_doc, GtkMathView_val, Document_val, Val_bool) -ML_1 (gtk_math_view_unload, GtkMathView_val, Unit) -ML_2 (gtk_math_view_select, GtkMathView_val, Element_val, Unit) -ML_2 (gtk_math_view_unselect, GtkMathView_val, Element_val, Unit) -ML_2 (gtk_math_view_is_selected, GtkMathView_val, Element_val, Val_bool) -OML_3 (gtk_math_view_get_element_at, GtkMathView_val, Int_val, Int_val, Val_Element) -ML_1 (gtk_math_view_get_width, GtkMathView_val, Val_int) -ML_1 (gtk_math_view_get_height, GtkMathView_val, Val_int) -ML_3 (gtk_math_view_set_top, GtkMathView_val, Int_val, Int_val, Unit) -ML_3 (gtk_math_view_set_adjustments, GtkMathView_val, GtkAdjustment_val, GtkAdjustment_val, Unit) -ML_1 (gtk_math_view_get_hadjustment, GtkMathView_val, Val_GtkWidget) -ML_1 (gtk_math_view_get_vadjustment, GtkMathView_val, Val_GtkWidget) -ML_1 (gtk_math_view_get_buffer, GtkMathView_val, Val_GdkPixmap) -ML_1 (gtk_math_view_get_frame, GtkMathView_val, Val_GtkWidget) -ML_1 (gtk_math_view_get_drawing_area, GtkMathView_val, Val_GtkWidget) -ML_2 (gtk_math_view_set_font_size, GtkMathView_val, Int_val, Unit) -ML_1 (gtk_math_view_get_font_size, GtkMathView_val, Val_int) -ML_2 (gtk_math_view_set_anti_aliasing, GtkMathView_val, Bool_val, Unit) -ML_1 (gtk_math_view_get_anti_aliasing, GtkMathView_val, Val_bool) -ML_2 (gtk_math_view_set_transparency, GtkMathView_val, Bool_val, Unit) -ML_1 (gtk_math_view_get_transparency, GtkMathView_val, Val_bool) -ML_2 (gtk_math_view_set_log_verbosity, GtkMathView_val, Int_val, Unit) -ML_1 (gtk_math_view_get_log_verbosity, GtkMathView_val, Val_int) -ML_2 (gtk_math_view_set_font_manager_type, GtkMathView_val, font_manager_id_of_value, Unit) -ML_1 (gtk_math_view_get_font_manager_type, GtkMathView_val, value_of_font_manager_id) - -value -ml_gtk_math_view_export_to_postscript_native(value arg1, - value w, value h, value x0, value y0, value disable_colors, value arg2) -{ - CAMLparam5(arg1,w,h,x0,y0); - CAMLxparam2(disable_colors, arg2); - - char *filename; - FILE *fd; - int res; - filename = String_val (arg2); - if ((fd = fopen(filename, "w"))) { - gtk_math_view_export_to_postscript(GtkMathView_val (arg1), - Int_val(w), Int_val(h), Int_val(x0), Int_val(y0), Bool_val(disable_colors), fd); - fclose (fd); - res = 1; - } else { - fprintf(stderr, "Error opening file %s for writing\n", filename); - res = 0; - } - CAMLreturn (Val_bool(res)); -} - -value ml_gtk_math_view_export_to_postscript_bytecode (value* arg, int argn) -{ - return ml_gtk_math_view_export_to_postscript_native(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], arg[6]); -} - -value ml_gtk_math_view_get_top (value arg1) -{ - CAMLparam1(arg1); - CAMLlocal1 (result); - int x, y; - gtk_math_view_get_top(GtkMathView_val (arg1), &x, &y); - result = alloc(2, 0); - Store_field(result, 0, Val_int(x)); - Store_field(result, 1, Val_int(y)); - CAMLreturn (result); -} - -/* -value ml_gtk_math_view_get_element_coords (value arg1, value arg2) -{ - CAMLparam2(arg1, arg2); - CAMLlocal1 (result); - int x, y; - gtk_math_view_get_element_coords(GtkMathView_val (arg1), Element_val(arg2), &x, &y); - result = alloc(2, 0); - Store_field(result, 0, Val_int(x)); - Store_field(result, 1, Val_int(y)); - CAMLreturn (result); -} -*/ - -value ml_gtk_math_view_gdome_element_of_boxed_option (value arg1) -{ - CAMLparam1(arg1); - - GdomeException exc = 0; - GdomeElement* nr = NULL; - CAMLlocal1 (res); - - if (arg1==Val_int(0)) { - assert(0); - } else { - nr = (GdomeElement*) Field(Field(arg1,0),1); - } - - res = Val_Element_ref(nr); - if (res==Val_int(0)) { - assert(0); - } - - CAMLreturn(res); -} - -value ml_gtk_math_view_gdome_element_option_of_boxed_option (value arg1) -{ - CAMLparam1(arg1); - - GdomeElement* nr; - CAMLlocal1 (valnr); - CAMLlocal1 (res); - - if (arg1==Val_int(0)) { - res=Val_unit; - } else { - GdomeException exc = 0; - GdomeElement* elem = (GdomeElement*) Field(Field(arg1,0),1); - assert(elem != NULL); - res = Val_option_ptr(elem, Val_Element_ref); - } - - CAMLreturn(res); -} - diff --git a/helm/DEVEL/lablgtkmathview/test/.cvsignore b/helm/DEVEL/lablgtkmathview/test/.cvsignore deleted file mode 100644 index b95eb22fb..000000000 --- a/helm/DEVEL/lablgtkmathview/test/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -*.cmo *.cmi *.cmx t1lib.log test test.opt test.ps test.o Makefile diff --git a/helm/DEVEL/lablgtkmathview/test/Makefile.in b/helm/DEVEL/lablgtkmathview/test/Makefile.in deleted file mode 100644 index 29ab71ffc..000000000 --- a/helm/DEVEL/lablgtkmathview/test/Makefile.in +++ /dev/null @@ -1,20 +0,0 @@ -PACKAGE = @PACKAGE@ -MLFLAGS = -predicates "init" -OCAMLC = ocamlfind ocamlc $(MLFLAGS) -OCAMLOPT = ocamlfind ocamlopt $(MLFLAGS) -TMPDIR = .test - -all: test -opt: test.opt - -test: test.ml - $(OCAMLC) -package "$(PACKAGE)" -linkpkg -predicates "" -o $@ test.ml - -test.opt: test.ml - $(OCAMLOPT) -package "$(PACKAGE)" -linkpkg -predicates "" -o $@ test.ml - -clean: - rm -f *.cm[iox] *.o test test.opt t1lib.log test.ps - -distclean: - rm Makefile diff --git a/helm/DEVEL/lablgtkmathview/test/t1.config b/helm/DEVEL/lablgtkmathview/test/t1.config deleted file mode 100644 index afb669e95..000000000 --- a/helm/DEVEL/lablgtkmathview/test/t1.config +++ /dev/null @@ -1,3 +0,0 @@ -ENCODING=. -AFM=/usr/share/texmf/fonts/afm/ -TYPE1=/usr/share/texmf/fonts/type1/bluesky/cm/:/usr/X11R6/lib/X11/fonts/Type1/:. diff --git a/helm/DEVEL/lablgtkmathview/test/test.ml b/helm/DEVEL/lablgtkmathview/test/test.ml deleted file mode 100644 index 936f962b5..000000000 --- a/helm/DEVEL/lablgtkmathview/test/test.ml +++ /dev/null @@ -1,479 +0,0 @@ -(* Copyright (C) 2000-2003, Luca Padovani , - * Claudio Sacerdoti Coen . - * - * This file is part of lablgtkmathview, the Ocaml binding - * for the GtkMathView widget. - * - * lablgtkmathview 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. - * - * lablgtkmathview 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 lablgtkmathview; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * For details, send a mail to the author. - *) - -(******************************************************************************) -(* Claudio Sacerdoti Coen *) -(* 25/09/2000 *) -(* *) -(* This is a simple test for the OCaml (LablGtk indeed) binding of the *) -(* MathView widget *) -(******************************************************************************) - -let helmns = Gdome.domString "http://www.cs.unibo.it/helm";; - -(* -let choose_selection mmlwidget (element : Gdome.element option) = - let module G = Gdome in - let rec aux element = - if element#hasAttributeNS - ~namespaceURI:Misc.helmns - ~localName:(G.domString "xref") - then - mmlwidget#set_selection (Some element) - else - try - match element#get_parentNode with - None -> assert false - (*CSC: OCAML DIVERGES! - | Some p -> aux (new G.element_of_node p) - *) - | Some p -> aux (new Gdome.element_of_node p) - with - GdomeInit.DOMCastException _ -> - prerr_endline - "******* trying to select above the document root ********" - in - match element with - Some x -> aux x - | None -> mmlwidget#set_selection None -;; -*) - -(* Callbacks *) -let selection_changed mathview (element : Gdome.element option) = - let rec aux element = - if element#hasAttributeNS - ~namespaceURI:helmns - ~localName:(Gdome.domString "xref") - then - mathview#set_selection (Some element) - else - try - match element#get_parentNode with - None -> mathview#set_selection None - | Some p -> aux (new Gdome.element_of_node p) - with - GdomeInit.DOMCastException _ -> - prerr_endline "******* trying to select above the document root ********" - in - print_endline ("selection_changed: " ^ - (match element with - None -> "selection_changed on nothing" - | Some element -> element#get_tagName#to_string - ) - ) ; - match element with - None -> () - | Some el -> aux el; - flush stdout -;; - -let element_over mathview (element : Gdome.element option) _ = - print_endline ("element_over: " ^ - (match element with - None -> "element_over on nothing" - | Some element -> element#get_tagName#to_string - ) - ) ; - flush stdout -;; - -let rec jump (element : Gdome.element) = - let module G = Gdome in - let attr = (element#getAttribute ~name:(G.domString "href"))#to_string in - if attr = "" then - match element#get_parentNode with - Some p -> - begin - try - jump (new Gdome.element_of_node p) - with - GdomeInit.DOMCastException _ -> - print_string "jump: NO HREF FOR THIS NODE\n" ; - flush stdout ; - false - end - | None -> assert false (* every element has a parent *) - else - begin - print_endline ("jump: " ^ attr) ; - flush stdout ; - true - end -;; - -let rec action mathview (element : Gdome.element) = - let module G = Gdome in - if element#get_tagName#to_string = "m:maction" then - let selection = - if element#hasAttribute ~name:(G.domString "selection") then - int_of_string (element#getAttribute ~name:(G.domString "selection"))#to_string - else - 1 - in - mathview#freeze ; - (* the widget will cast the index back into a reasonable range *) - element#setAttribute ~name:(G.domString "selection") ~value:(G.domString (string_of_int (selection + 1))) ; - mathview#thaw ; - true - else - match element#get_parentNode with - Some p -> - begin - try - action mathview (new Gdome.element_of_node p) - with - GdomeInit.DOMCastException _ -> - print_string "action: NO MACTION FOUND\n" ; - flush stdout ; - false - end - | None -> assert false (* every element has a parent *) - -let click mathview (element : Gdome.element option) _ = - let module G = Gdome in - match element with - None -> print_string "CLICKED ON NOTHING\n" ; flush stdout - | Some element -> - if not (jump element) then - if not (mathview#action_toggle element) then - () -;; - - -let activate_t1 mathview () = - mathview#set_font_manager_type ~fm_type:`font_manager_t1; - print_string "WIDGET SET WITH T1 FONTS\n" ; - flush stdout -;; - -let activate_gtk mathview () = - mathview#set_font_manager_type ~fm_type:`font_manager_gtk ; - print_string "WIDGET SET WITH GTK FONTS\n" ; - flush stdout -;; - -let get_font_manager_type mathview () = - print_string "CURRENT FONT MANAGER TYPE: "; - begin - match mathview#get_font_manager_type with - | `font_manager_t1 -> print_string "T1" - | `font_manager_gtk -> print_string "GTK" - end; - print_newline(); - flush stdout -;; - -let get_transparency mathview () = - print_string ("CURRENT TRANSPARENCY: " ^ - (if mathview#get_transparency then "ON" else "OFF") ^ "\n") ; - flush stdout -;; - -let set_transparency mathview () = - mathview#set_transparency (not mathview#get_transparency) ; - print_string "TRANSPARENCY CHANGED\n" ; - flush stdout -;; - - -let load_uri mathview () = - mathview#load_uri ~filename:"test.xml" ; - print_string "load: SEEMS TO WORK\n" ; - flush stdout -;; - -let load_doc mathview () = - mathview#load_doc ~dom:((Gdome.domImplementation ())#createDocumentFromURI ~uri:"test.xml" ()) ; - print_string "load from DOM: SEEMS TO WORK\n" ; - flush stdout -;; - -let test_get_selection mathview () = - let selection = - match mathview#get_selection with - Some element -> element#get_tagName#to_string - | None -> "no selection!" - in - print_string ("get_selection: " ^ selection ^ "\n") ; - flush stdout -;; - -let test_set_selection mathview () = - begin - match mathview#get_selection with - Some element -> - begin - match element#get_parentNode with - Some p -> - begin - try - mathview#set_selection (Some (new Gdome.element_of_node p)); - print_string "set selection: SEEMS TO WORK\n" - with - GdomeInit.DOMCastException _ -> - print_string "EXCEPTION: no parent\n" - end - | None -> assert false (* every element has a parent *) - end - | None -> - mathview#set_selection None; - print_string "no selection\n" - end ; - flush stdout -;; - -let test_add_selection (mathview : GMathViewAux.multi_selection_math_view) () = - match mathview#get_selection with - Some e -> mathview#add_selection e - | None -> - begin - print_string "no selection to add\n" ; - flush stdout - end -;; - -let test_reset_selections (mathview : GMathViewAux.multi_selection_math_view) () = - mathview#set_selection None ; - mathview#remove_selections - -let unload mathview () = - mathview#unload ; - print_string "unload: SEEMS TO WORK\n" ; - flush stdout -;; - -let get_width mathview () = - print_string ("get_width: " ^ string_of_int (mathview#get_width) ^ "\n") ; - flush stdout -;; - -let get_height mathview () = - print_string ("get_height: " ^ string_of_int (mathview#get_height) ^ "\n") ; - flush stdout -;; - -let get_top mathview () = - let (x,y) = mathview#get_top in - print_string ("get_top: ("^ string_of_int x ^ "," ^ string_of_int y ^ ")\n") ; - flush stdout -;; - -let set_top mathview () = - mathview#set_top 0 0; - print_string "set_top: SEEM TO WORK\n" ; - flush stdout -;; - -let set_adjustments mathview () = - let adj1 = GData.adjustment () in - let adj2 = GData.adjustment () in - mathview#set_adjustments adj1 adj2 ; - adj1#set_value ((adj1#lower +. adj1#upper) /. 2.0) ; - adj2#set_value ((adj2#lower +. adj2#upper) /. 2.0) ; - print_string "set_adjustments: SEEM TO WORK\n" ; - flush stdout -;; - -let get_hadjustment mathview () = - let adj = mathview#get_hadjustment in - adj#set_value ((adj#lower +. adj#upper) /. 2.0) ; - print_string "get_hadjustment: SEEM TO WORK\n" ; - flush stdout -;; - -let get_vadjustment mathview () = - let adj = mathview#get_vadjustment in - adj#set_value ((adj#lower +. adj#upper) /. 2.0) ; - print_string "get_vadjustment: SEEM TO WORK\n" ; - flush stdout -;; - -let get_buffer mathview () = - let buffer = mathview#get_buffer in - Gdk.Draw.rectangle buffer (Gdk.GC.create buffer) ~x:0 ~y:0 - ~width:50 ~height:50 ~filled:true () ; - print_string "get_buffer: SEEMS TO WORK (hint: force the widget redrawing)\n"; - flush stdout -;; - -let get_frame mathview () = - let frame = mathview#get_frame in - frame#set_shadow_type `NONE ; - print_string "get_frame: SEEMS TO WORK\n" ; - flush stdout -;; - -let set_font_size mathview () = - mathview#set_font_size 24 ; - print_string "set_font_size: FONT IS NOW 24\n" ; - flush stdout -;; - -let get_font_size mathview () = - print_string ("get_font_size: " ^ string_of_int (mathview#get_font_size) ^ "\n") ; - flush stdout -;; - -let set_anti_aliasing mathview () = - mathview#set_anti_aliasing true ; - print_string "set_anti_aliasing: ON\n" ; - flush stdout -;; - -let get_anti_aliasing mathview () = - print_string ("get_anti_aliasing: " ^ - (match mathview#get_anti_aliasing with true -> "ON" | false -> "OFF") ^ - "\n") ; - flush stdout -;; - - (* -let set_kerning mathview () = - mathview#set_kerning true ; - print_string "set_kerning: ON\n" ; - flush stdout -;; - -let get_kerning mathview () = - print_string ("get_kerning: " ^ - (match mathview#get_kerning with true -> "ON" | false -> "OFF") ^ - "\n") ; - flush stdout -;; -*) - -let set_log_verbosity mathview () = - mathview#set_log_verbosity 3 ; - print_string "set_log_verbosity: NOW IS 3\n" ; - flush stdout -;; - -let get_log_verbosity mathview () = - print_string ("get_log_verbosity: " ^ - string_of_int mathview#get_log_verbosity ^ - "\n") ; - flush stdout -;; - -let export_to_postscript (mathview : GMathViewAux.multi_selection_math_view) () = - mathview#export_to_postscript ~filename:"test.ps" (); - print_string "expor_to_postscript: SEEMS TO WORK (hint: look at test.ps)\n"; - flush stdout -;; - -let x_coord = ref 0 -;; - -let get_element_at mathview () = - begin - match mathview#get_element_at !x_coord 10 with - None -> print_string ("there is no element at " ^ (string_of_int !x_coord) ^ " 10\n") - | Some e -> print_string ("at " ^ (string_of_int !x_coord) ^ " 10 found element " ^ (e#get_nodeName#to_string) ^ "\n") - end ; - x_coord := !x_coord + 10 ; - flush stdout -;; - -let get_drawing_area mathview () = - begin - let da = mathview#get_drawing_area in - print_string ("don't know what to do with the drawing area\n") - end ; - flush stdout -;; - -(* Widget creation *) -let main_window = GWindow.window ~title:"GtkMathView test" () in -let vbox = GPack.vbox ~packing:main_window#add () in -let sw = GBin.scrolled_window ~width:50 ~height:50 ~packing:vbox#pack () in -let mathview= GMathViewAux.multi_selection_math_view ~packing:sw#add ~width:50 ~height:50 () in -let table = GPack.table ~rows:6 ~columns:5 ~packing:vbox#pack () in -let button_gtk=GButton.button ~label:"activate Gtk fonts" ~packing:(table#attach ~left:0 ~top:0) () in -let button_load = GButton.button ~label:"load" ~packing:(table#attach ~left:1 ~top:0) () in -let button_unload = GButton.button ~label:"unload" ~packing:(table#attach ~left:2 ~top:0) () in -let button_get_selection = GButton.button ~label:"get_selection" ~packing:(table#attach ~left:3 ~top:0) () in -let button_set_selection = GButton.button ~label:"set_selection" ~packing:(table#attach ~left:4 ~top:0) () in -let button_add_selection = GButton.button ~label:"add_selection" ~packing:(table#attach ~left:3 ~top:3) () in -let button_reset_selections = GButton.button ~label:"reset_selections" ~packing:(table#attach ~left:4 ~top:3) () in -let button_get_width = GButton.button ~label:"get_width" ~packing:(table#attach ~left:0 ~top:1) () in -let button_get_height = GButton.button ~label:"get_height" ~packing:(table#attach ~left:1 ~top:1) () in -let button_get_top = GButton.button ~label:"get_top" ~packing:(table#attach ~left:2 ~top:1) () in -let button_set_top = GButton.button ~label:"set_top" ~packing:(table#attach ~left:3 ~top:1) () in -let button_set_adjustments = GButton.button ~label:"set_adjustments" ~packing:(table#attach ~left:4 ~top:1) () in -let button_get_hadjustment = GButton.button ~label:"get_hadjustment" ~packing:(table#attach ~left:0 ~top:2) () in -let button_get_vadjustment = GButton.button ~label:"get_vadjustment" ~packing:(table#attach ~left:1 ~top:2) () in -let button_get_buffer = GButton.button ~label:"get_buffer" ~packing:(table#attach ~left:2 ~top:2) () in -let button_get_frame = GButton.button ~label:"get_frame" ~packing:(table#attach ~left:3 ~top:2) () in -let button_set_font_size = GButton.button ~label:"set_font_size" ~packing:(table#attach ~left:4 ~top:2) () in -let button_get_font_size = GButton.button ~label:"get_font_size" ~packing:(table#attach ~left:0 ~top:3) () in -let button_set_anti_aliasing = GButton.button ~label:"set_anti_aliasing" ~packing:(table#attach ~left:1 ~top:3) () in -let button_get_anti_aliasing = GButton.button ~label:"get_anti_aliasing" ~packing:(table#attach ~left:2 ~top:3) () in -let button_set_log_verbosity = GButton.button ~label:"set_log_verbosity" ~packing:(table#attach ~left:0 ~top:4) () in -let button_get_log_verbosity = GButton.button ~label:"get_log_verbosity" ~packing:(table#attach ~left:1 ~top:4) () in -let button_export_to_postscript = GButton.button ~label:"export_to_postscript" ~packing:(table#attach ~left:2 ~top:4) () in -let button_t1 = GButton.button ~label:"activate T1 fonts" ~packing:(table#attach ~left:3 ~top:4) () in -let button_get_font_manager_type = GButton.button ~label:"get_font_manager" ~packing:(table#attach ~left:4 ~top:4) () in -let button_get_transparency = GButton.button ~label:"get_transparency" ~packing:(table#attach ~left:0 ~top:5) () in -let button_set_transparency = GButton.button ~label:"set_transparency" ~packing:(table#attach ~left:1 ~top:5) () in -let button_load_dom = GButton.button ~label:"load from DOM" ~packing:(table#attach ~left:2 ~top:5) () in -let button_get_element_at = GButton.button ~label:"get_element_at" ~packing:(table#attach ~left:3 ~top:5) () in -let button_get_drawing_area = GButton.button ~label:"get_drawing_area" ~packing:(table#attach ~left:4 ~top:5) () in -(* Signals connection *) -ignore(button_gtk#connect#clicked (activate_gtk mathview)) ; -ignore(button_load#connect#clicked (load_uri mathview)) ; -ignore(button_unload#connect#clicked (unload mathview)) ; -ignore(button_get_selection#connect#clicked (test_get_selection mathview)) ; -ignore(button_set_selection#connect#clicked (test_set_selection mathview)) ; -ignore(button_add_selection#connect#clicked (test_add_selection mathview)) ; -ignore(button_reset_selections#connect#clicked (test_reset_selections mathview)) ; -ignore(button_get_width#connect#clicked (get_width mathview)) ; -ignore(button_get_height#connect#clicked (get_height mathview)) ; -ignore(button_get_top#connect#clicked (get_top mathview)) ; -ignore(button_set_top#connect#clicked (set_top mathview)) ; -ignore(button_set_adjustments#connect#clicked (set_adjustments mathview)) ; -ignore(button_get_hadjustment#connect#clicked (get_hadjustment mathview)) ; -ignore(button_get_vadjustment#connect#clicked (get_vadjustment mathview)) ; -ignore(button_get_buffer#connect#clicked (get_buffer mathview)) ; -ignore(button_get_frame#connect#clicked (get_frame mathview)) ; -ignore(button_set_font_size#connect#clicked (set_font_size mathview)) ; -ignore(button_get_font_size#connect#clicked (get_font_size mathview)) ; -ignore(button_set_anti_aliasing#connect#clicked (set_anti_aliasing mathview)) ; -ignore(button_get_anti_aliasing#connect#clicked (get_anti_aliasing mathview)) ; -ignore(button_set_log_verbosity#connect#clicked (set_log_verbosity mathview)) ; -ignore(button_get_log_verbosity#connect#clicked (get_log_verbosity mathview)) ; -ignore(button_export_to_postscript#connect#clicked (export_to_postscript mathview)) ; -ignore(button_t1#connect#clicked (activate_t1 mathview)) ; -ignore(button_get_font_manager_type#connect#clicked (get_font_manager_type mathview)) ; -ignore(button_get_transparency#connect#clicked (get_transparency mathview)) ; -ignore(button_set_transparency#connect#clicked (set_transparency mathview)) ; -ignore(mathview#connect#click (click mathview)) ; -ignore(mathview#connect#selection_changed (selection_changed mathview)); -ignore(mathview#connect#element_over (element_over mathview)) ; -ignore(button_load_dom#connect#clicked (load_doc mathview)) ; -ignore(button_get_element_at#connect#clicked (get_element_at mathview)) ; -ignore(button_get_drawing_area#connect#clicked (get_drawing_area mathview)) ; -(* Main Loop *) -main_window#show () ; -GMain.Main.main () -;; diff --git a/helm/DEVEL/lablgtkmathview/test/test.xml b/helm/DEVEL/lablgtkmathview/test/test.xml deleted file mode 100644 index a29bcdac0..000000000 --- a/helm/DEVEL/lablgtkmathview/test/test.xml +++ /dev/null @@ -1,134 +0,0 @@ - - - - - -]> - - - - - - - - It's a secret! - - - a - - x - - + - b - - - - - x - 2 - - + - - p - - x - - + - q - - - - d - x - = - - - a2 - - - ln - - - ( - - x2 - + - - p - - x - - + - q - - ) - - - - + - - - - - 2 - - b - - - - - a - - p - - - - - - 4 - - q - - - - - p - 2 - - - - - - - arctg - - - - - 2 - - x - - + - p - - - - - 4 - - q - - - - - p - 2 - - - - - - - + - c - - diff --git a/helm/DEVEL/mathml_editor/.cvsignore b/helm/DEVEL/mathml_editor/.cvsignore deleted file mode 100644 index aa01254b1..000000000 --- a/helm/DEVEL/mathml_editor/.cvsignore +++ /dev/null @@ -1,16 +0,0 @@ -Makefile -Makefile.in -aclocal.m4 -autom4te.cache -config.h -config.h.in -config.log -config.status -configure -editex-config -libtool -result.xml -stamp-h -stamp-h.in -t1lib.log -editex.pc diff --git a/helm/DEVEL/mathml_editor/.log b/helm/DEVEL/mathml_editor/.log deleted file mode 100644 index 3971d5a78..000000000 --- a/helm/DEVEL/mathml_editor/.log +++ /dev/null @@ -1,21 +0,0 @@ -This is TeX, Version 3.14159 (Web2C 7.3.7) (format=tex 2002.8.9) 23 NOV 2002 18:34 -**$$\root 3 \of x+1$$ -(/usr/share/texmf/tex/latex/tools/.tex File ignored) -! Missing $ inserted. - - $ - - \mathchoice -\mathpalette #1#2->\mathchoice - {#1\displaystyle {#2}}{#1\textstyle {#2}}{#1\... -<*> $$\root 3 \of x - +1$$ -? - -* -! Emergency stop. -<*> $$\root 3 \of x+1$$ - -End of file on the terminal! - -No pages of output. diff --git a/helm/DEVEL/mathml_editor/AUTHORS b/helm/DEVEL/mathml_editor/AUTHORS deleted file mode 100644 index 7cec8397e..000000000 --- a/helm/DEVEL/mathml_editor/AUTHORS +++ /dev/null @@ -1,2 +0,0 @@ -Luca Padovani -Paolo Marinelli diff --git a/helm/DEVEL/mathml_editor/BROWSE b/helm/DEVEL/mathml_editor/BROWSE deleted file mode 100644 index c14c1d2f5..000000000 --- a/helm/DEVEL/mathml_editor/BROWSE +++ /dev/null @@ -1,503 +0,0 @@ -[ebrowse-hs "ebrowse 5.0" " -x" () ()][ebrowse-ts [ebrowse-cs "APushParser" () 0"src/APushParser.hh" "class APushParser -{" 75"src/APushParser.hh" ] -([ebrowse-ts [ebrowse-cs "TPushParser" () 0"src/TPushParser.hh" "class TPushParser :" 226"src/TPushParser.hh" ] -()([ebrowse-ms "buffer" () 0 () " std::list buffer;" 1306 2 () () 0] -[ebrowse-ms "cursor" () 0 () " TNode cursor;" 1363 2 () () 0] -[ebrowse-ms "doc" () 0 () " TDocument doc;" 1343 2 () () 0] -[ebrowse-ms "frames" () 0 () " std::stack frames;" 1278 2 () () 0] -[ebrowse-ms "nextId" () 0 () " unsigned nextId;" 1326 2 () () 0] -) -([ebrowse-ms "PRIME" () 4 () " std::string PRIME(void" 490 2 "src/TPushParser.cc" "TPushParser::PRIME()" 279] -[ebrowse-ms "TPushParser" () 0 () () 0 0 "src/TPushParser.cc" "TPushParser::TPushParser(const TDictionary& d) :" 58] -[ebrowse-ms "TPushParser" () 0 () " TPushParser(const class TDictionary&);" 275 0 () () 0] -[ebrowse-ms "advance" () 0 () " void advance(const" 1065 2 "src/TPushParser.cc" "TPushParser::advance(const" 13192] -[ebrowse-ms "do_active" () 0 () " void do_active(const" 916 2 "src/TPushParser.cc" "TPushParser::do_active(const" 5602] -[ebrowse-ms "do_align" () 0 () " void do_align(void" 624 2 "src/TPushParser.cc" "TPushParser::do_align()" 1530] -[ebrowse-ms "do_apostrophe" () 0 () " void do_apostrophe(void" 1042 2 "src/TPushParser.cc" "TPushParser::do_apostrophe()" 4611] -[ebrowse-ms "do_begin" () 0 () " void do_begin(void" 557 2 "src/TPushParser.cc" "TPushParser::do_begin()" 461] -[ebrowse-ms "do_comment" () 0 () " void do_comment(void" 954 2 "src/TPushParser.cc" "TPushParser::do_comment()" 5668] -[ebrowse-ms "do_control" () 0 () " void do_control(const" 980 2 "src/TPushParser.cc" "TPushParser::do_control(const" 6337] -[ebrowse-ms "do_cr" () 0 () " void do_cr(void" 1014 2 "src/TPushParser.cc" "TPushParser::do_cr()" 5708] -[ebrowse-ms "do_digit" () 0 () " void do_digit(const" 841 2 "src/TPushParser.cc" "TPushParser::do_digit(const" 4072] -[ebrowse-ms "do_end" () 0 () " void do_end(void" 578 2 "src/TPushParser.cc" "TPushParser::do_end()" 910] -[ebrowse-ms "do_eol" () 0 () " void do_eol(void" 645 2 "src/TPushParser.cc" "TPushParser::do_eol()" 2464] -[ebrowse-ms "do_letter" () 0 () " void do_letter(const" 804 2 "src/TPushParser.cc" "TPushParser::do_letter(const" 3902] -[ebrowse-ms "do_other" () 0 () " void do_other(const" 878 2 "src/TPushParser.cc" "TPushParser::do_other(const" 5303] -[ebrowse-ms "do_parameter" () 0 () " void do_parameter(const" 673 2 "src/TPushParser.cc" "TPushParser::do_parameter(const" 2546] -[ebrowse-ms "do_shift" () 0 () " void do_shift(void" 601 2 "src/TPushParser.cc" "TPushParser::do_shift()" 1487] -[ebrowse-ms "do_space" () 0 () " void do_space(const" 766 2 "src/TPushParser.cc" "TPushParser::do_space(const" 3794] -[ebrowse-ms "do_subscript" () 0 () " void do_subscript(void" 742 2 "src/TPushParser.cc" "TPushParser::do_subscript()" 2609] -[ebrowse-ms "do_superscript" () 0 () " void do_superscript(void" 715 2 "src/TPushParser.cc" "TPushParser::do_superscript()" 3204] -[ebrowse-ms "document" () 4 () " TDocument document(void" 432 0 () " TDocument document(void" 432] -[ebrowse-ms "isPrimes" () 4 () " bool isPrimes(const" 520 2 "src/TPushParser.cc" "TPushParser::isPrimes(const" 4445] -[ebrowse-ms "process" () 0 () " void process(const" 1096 2 "src/TPushParser.cc" "TPushParser::process(const" 8538] -[ebrowse-ms "push" () 1 () " virtual void push(const" 349 0 "src/TPushParser.cc" "TPushParser::push(const" 9379] -[ebrowse-ms "setCursor" () 1 () " virtual void setCursor(const" 390 0 "src/TPushParser.cc" "TPushParser::setCursor(const" 13865] -[ebrowse-ms "~TPushParser" () 1 () " virtual ~TPushParser()" 321 0 "src/TPushParser.cc" "TPushParser::~TPushParser()" 241] -) -() -() -() -() -()() -][ebrowse-ts [ebrowse-cs "TTokenizer" () 0"src/TTokenizer.hh" "class TTokenizer :" 173"src/TTokenizer.hh" ] -()([ebrowse-ms "tokens" () 0 () " std::list tokens;" 405 2 () () 0] -) -([ebrowse-ms "TTokenizer" () 0 () " TTokenizer(void) {" 221 0 () " TTokenizer(void) {" 221] -[ebrowse-ms "push" () 1 () " virtual void push(const" 316 2 "src/TTokenizer.cc" "TTokenizer::push(const" 471] -[ebrowse-ms "setCursor" () 1 () " virtual void setCursor(const" 357 2 () " virtual void setCursor(const" 357] -[ebrowse-ms "tokenize" () 0 () " std::vector tokenize(const" 265 0 "src/TTokenizer.cc" "TTokenizer::tokenize(const" 120] -) -() -() -() -() -()() -])() -([ebrowse-ms "APushParser" () 0 () " APushParser(void) {" 102 0 () " APushParser(void) {" 102] -[ebrowse-ms "push" () 9 () " virtual void push(const" 164 0 () () 0] -[ebrowse-ms "setCursor" () 9 () " virtual void setCursor(const" 209 0 () () 0] -[ebrowse-ms "~APushParser" () 1 () " virtual ~APushParser()" 133 0 () " virtual ~APushParser()" 133] -) -() -() -() -() -()() -][ebrowse-ts [ebrowse-cs "EmptyBuffer" "TLexerPush" 0"src/TLexerPush.hh" " class EmptyBuffer {" 271() ] -()() -() -() -() -() -() -()() -][ebrowse-ts [ebrowse-cs "unary_function" "std" 32() () 0() ] -([ebrowse-ts [ebrowse-cs "StringHash" "TDictionary" 0"src/TDictionary.hh" " struct StringHash :" 1160"src/TDictionary.hh" ] -()() -([ebrowse-ms "operator ()" () 4 () " { size_t operator()(const" 1238 0 () " { size_t operator()(const" 1238] -) -() -() -() -() -()() -])() -() -() -() -() -() -()() -][ebrowse-ts [ebrowse-cs "TObject" () 0"src/TObject.hh" "class TObject -{" 63"src/TObject.hh" ] -()() -([ebrowse-ms "TObject" () 0 () " TObject(void) {" 89 1 () " TObject(void) {" 89] -[ebrowse-ms "ref" () 4 () " void ref(coid" 162 0 () " void ref(coid" 162] -[ebrowse-ms "unref" () 4 () " void unref(void" 206 0 () " void unref(void" 206] -[ebrowse-ms "~TObject" () 1 () " virtual ~TObject()" 132 1 () " virtual ~TObject()" 132] -) -() -() -() -() -()() -][ebrowse-ts [ebrowse-cs "std" () 0() () 0() ] -()() -() -() -() -() -() -()() -][ebrowse-ts [ebrowse-cs "TLexerPush" () 0"src/TLexerPush.hh" "class TLexerPush -{" 59"src/TLexerPush.hh" ] -()([ebrowse-ms "state" () 0 () " State state;" 388 2 () () 0] -[ebrowse-ms "tokens" () 0 () " std::deque tokens;" 417 2 () () 0] -) -([ebrowse-ms "TLexerPush" () 0 () " TLexerPush(void);" 85 0 "src/TLexerPush.cc" "TLexerPush::TLexerPush() -{" 51] -[ebrowse-ms "ambiguous" () 4 () " bool ambiguous(void" 182 0 "src/TLexerPush.cc" "TLexerPush::ambiguous()" 576] -[ebrowse-ms "empty" () 4 () " bool empty(void" 240 0 "src/TLexerPush.cc" "TLexerPush::empty()" 447] -[ebrowse-ms "front" () 4 () " TToken front(void" 150 0 "src/TLexerPush.cc" "TLexerPush::front()" 338] -[ebrowse-ms "pending" () 4 () " bool pending(void" 212 0 "src/TLexerPush.cc" "TLexerPush::pending()" 510] -[ebrowse-ms "pop" () 0 () " TToken pop(void" 128 0 "src/TLexerPush.cc" "TLexerPush::pop()" 99] -[ebrowse-ms "push" () 0 () " void push(TChar" 108 0 "src/TLexerPush.cc" "TLexerPush::push(TChar" 664] -) -() -() -() -([ebrowse-ms "State" () 0 () " {" 303 2 () " {" 303] -) -()() -][ebrowse-ts [ebrowse-cs "TLexerPull" () 0() () 0"src/TLexerPull.cc" ] -()() -([ebrowse-ms "pop" () 0 () () 0 0 () "TLexerPull::pop(TCharStream" 94] -) -() -() -() -() -()() -][ebrowse-ts [ebrowse-cs "TDictionary" () 0"src/TDictionary.hh" "class TDictionary -{" 154"src/TDictionary.hh" ] -()([ebrowse-ms "entries" () 0 () " Dictionary entries;" 1560 2 () () 0] -) -([ebrowse-ms "TDictionary" () 0 () " TDictionary(void) {" 181 0 () " TDictionary(void) {" 181] -[ebrowse-ms "find" () 4 () " const Entry& find(const" 1107 0 "src/TDictionary.cc" "TDictionary::find(const" 3723] -[ebrowse-ms "load" () 0 () " void load(const" 1069 0 "src/TDictionary.cc" "TDictionary::load(const" 162] -[ebrowse-ms "~TDictionary" () 0 () " ~TDictionary()" 204 0 () " ~TDictionary()" 204] -) -() -() -() -([ebrowse-ms "Dictionary" () 0 () "ap< std::string, Entry, StringHash > Dictionary;" 1538 2 () () 0] -[ebrowse-ms "EntryClass" () 0 () " {" 301 0 () " {" 301] -[ebrowse-ms "Form" () 0 () " {" 228 0 () " {" 228] -) -()() -][ebrowse-ts [ebrowse-cs "DOM" () 0() () 0() ] -()() -() -() -() -() -() -()() -][ebrowse-ts [ebrowse-cs "APushLexer" () 0"src/APushLexer.hh" "class APushLexer -{" 72"src/APushLexer.hh" ] -([ebrowse-ts [ebrowse-cs "TPushLexer" () 0"src/TPushLexer.hh" "class TPushLexer :" 117"src/TPushLexer.hh" ] -()([ebrowse-ms "buffer" () 0 () " std::string buffer;" 483 2 () () 0] -[ebrowse-ms "state" () 0 () " State state;" 461 2 () () 0] -) -([ebrowse-ms "TPushLexer" () 0 () () 0 0 "src/TPushLexer.cc" "TPushLexer::TPushLexer(APushParser& p) :" 108] -[ebrowse-ms "TPushLexer" () 0 () " TPushLexer(class APushParser&);" 164 0 () () 0] -[ebrowse-ms "error" () 5 () " virtual bool error(void" 290 0 "src/TPushLexer.cc" "TPushLexer::error()" 2463] -[ebrowse-ms "push" () 1 () " virtual void push(char" 234 0 "src/TPushLexer.cc" "TPushLexer::push(char" 1180] -[ebrowse-ms "reset" () 1 () " virtual void reset(void" 262 0 "src/TPushLexer.cc" "TPushLexer::reset()" 176] -[ebrowse-ms "transaction" () 0 () " void transaction(char" 436 2 "src/TPushLexer.cc" "TPushLexer::transaction(char" 251] -[ebrowse-ms "~TPushLexer" () 1 () " virtual ~TPushLexer()" 203 0 () " virtual ~TPushLexer()" 203] -) -() -() -() -([ebrowse-ms "State" () 0 () " {" 327 2 () " {" 327] -) -()() -])() -([ebrowse-ms "APushLexer" () 0 () " APushLexer(class APushParser& p) :" 99 0 () " APushLexer(class APushParser& p) :" 99] -[ebrowse-ms "error" () 13 () " virtual bool error(void" 251 0 () () 0] -[ebrowse-ms "push" () 9 () " virtual void push(char" 187 0 () () 0] -[ebrowse-ms "reset" () 9 () " virtual void reset(void" 219 0 () () 0] -[ebrowse-ms "~APushLexer" () 1 () " virtual ~APushLexer()" 156 0 () " virtual ~APushLexer()" 156] -) -() -() -() -() -()() -][ebrowse-ts [ebrowse-cs "Ptr" () 32"src/Ptr.hh" "class Ptr -{" 1067"src/Ptr.hh" ] -()([ebrowse-ms "ptr" () 0 () " P* ptr;" 1797 2 () () 0] -) -([ebrowse-ms "P" () 4 () " operator P*()" 1487 0 () " operator P*()" 1487] -[ebrowse-ms "Ptr" () 0 () " Ptr(const Ptr& p) :" 1142 0 () " Ptr(const Ptr& p) :" 1142] -[ebrowse-ms "Ptr" () 0 () " Ptr(P* p = 0) :" 1083 0 () " Ptr(P* p = 0) :" 1083] -[ebrowse-ms "Q" () 36 () " template operator Ptr()" 1747 0 () " template operator Ptr()" 1747] -[ebrowse-ms "operator ->" () 4 () " P* operator->()" 1253 0 () " P* operator->()" 1253] -[ebrowse-ms "operator =" () 0 () " Ptr& operator=(const" 1316 0 () " Ptr& operator=(const" 1316] -[ebrowse-ms "~Ptr" () 0 () " ~Ptr()" 1202 0 () " ~Ptr()" 1202] -) -() -() -([ebrowse-ms "is_a" () 32 () " template friend bool is_a(const" 1659 0 () " template friend bool is_a(const" 1659] -[ebrowse-ms "smart_cast" () 32 () "emplate friend Ptr smart_cast(const" 1561 0 () "emplate friend Ptr smart_cast(const" 1561] -) -() -()() -][ebrowse-ts [ebrowse-cs "TToken" () 0"src/TToken.hh" "struct TToken -{" 80"src/TToken.hh" ] -()([ebrowse-ms "category" () 0 () " TCat category;" 627 0 () () 0] -[ebrowse-ms "value" () 0 () " std::string value;" 648 0 () () 0] -) -([ebrowse-ms "TToken" () 0 () " TToken(TCat c, const std::string& v) :" 438 0 () " TToken(TCat c, const std::string& v) :" 438] -[ebrowse-ms "TToken" () 0 () " TToken(TCat c, char ch) :" 366 0 () " TToken(TCat c, char ch) :" 366] -[ebrowse-ms "TToken" () 0 () " TToken(TCat c) :" 330 0 () " TToken(TCat c) :" 330] -[ebrowse-ms "operator ==" () 4 () " bool operator==(const" 517 0 () " bool operator==(const" 517] -) -() -() -() -([ebrowse-ms "TCat" () 0 () " {" 98 0 () " {" 98] -) -()() -][ebrowse-ts [ebrowse-cs "binary_function" "std" 32() () 0() ] -([ebrowse-ts [ebrowse-cs "StringEq" "TDictionary" 0"src/TDictionary.hh" " struct StringEq :" 1327() ] -()() -([ebrowse-ms "operator ()" () 4 () " { bool operator()(const" 1415 0 () () 0] -) -() -() -() -() -()() -])() -() -() -() -() -() -()() -][ebrowse-ts [ebrowse-cs "TNode" () 0"src/TNode.hh" "class TNode -{" 124"src/TNode.hh" ] -()([ebrowse-ms "node" () 0 () " DOM::Element node;" 2444 2 () () 0] -) -([ebrowse-ms "TNode" () 0 () " TNode(const TNode& n) :" 270 0 () " TNode(const TNode& n) :" 270] -[ebrowse-ms "TNode" () 0 () " TNode(void) :" 145 0 () " TNode(void) :" 145] -[ebrowse-ms "append" () 4 () " void append(const" 1667 0 "src/TNode.cc" "TNode::append(const" 2450] -[ebrowse-ms "append" () 4 () " void append(const" 1631 0 "src/TNode.cc" "TNode::append(const" 2348] -[ebrowse-ms "child" () 4 () " TNode child(unsigned" 592 0 "src/TNode.cc" "TNode::child(unsigned" 2874] -[ebrowse-ms "core" () 4 () " TNode core(void" 425 0 "src/TNode.cc" "TNode::core()" 1413] -[ebrowse-ms "empty" () 4 () " bool empty(void" 648 0 () " bool empty(void" 648] -[ebrowse-ms "first" () 4 () " TNode first(void" 480 0 "src/TNode.cc" "TNode::first()" 1075] -[ebrowse-ms "firstL" () 4 () " TNode firstL(void" 508 0 "src/TNode.cc" "TNode::firstL()" 1259] -[ebrowse-ms "get" () 4 () " std::string get(const" 1758 0 "src/TNode.cc" "TNode::get(const" 3007] -[ebrowse-ms "hasId" () 4 () " bool hasId(void" 1994 0 () " bool hasId(void" 1994] -[ebrowse-ms "insert" () 4 () " void insert(const" 1595 0 "src/TNode.cc" "TNode::insert(const" 2193] -[ebrowse-ms "is" () 4 () " bool is(const" 2055 0 () " bool is(const" 2055] -[ebrowse-ms "isC" () 4 () " bool isC(const" 2303 0 () " bool isC(const" 2303] -[ebrowse-ms "isC" () 4 () " bool isC(void" 2258 0 () " bool isC(void" 2258] -[ebrowse-ms "isG" () 4 () " bool isG(void" 2119 0 () " bool isG(void" 2119] -[ebrowse-ms "isSb" () 4 () " bool isSb(void" 2165 0 () " bool isSb(void" 2165] -[ebrowse-ms "isSp" () 4 () " bool isSp(void" 2212 0 () " bool isSp(void" 2212] -[ebrowse-ms "last" () 4 () " TNode last(void" 534 0 "src/TNode.cc" "TNode::last()" 736] -[ebrowse-ms "lastL" () 4 () " TNode lastL(void" 561 0 "src/TNode.cc" "TNode::lastL()" 922] -[ebrowse-ms "name" () 4 () " std::string name(void" 1863 0 () " std::string name(void" 1863] -[ebrowse-ms "nameC" () 4 () " std::string nameC(void" 1929 0 () " std::string nameC(void" 1929] -[ebrowse-ms "next" () 4 () " TNode next(void" 319 0 "src/TNode.cc" "TNode::next()" 63] -[ebrowse-ms "nextL" () 4 () " TNode nextL(void" 346 0 "src/TNode.cc" "TNode::nextL()" 247] -[ebrowse-ms "operator !=" () 4 () " bool operator!=(const" 1295 0 () " bool operator!=(const" 1295] -[ebrowse-ms "operator ==" () 4 () " bool operator==(const" 1227 0 () " bool operator==(const" 1227] -[ebrowse-ms "operator []" () 4 () " ProxyAttr operator[](const" 1422 0 () " ProxyAttr operator[](const" 1422] -[ebrowse-ms "operator []" () 4 () " TNode operator[](int" 1362 0 () " TNode operator[](int" 1362] -[ebrowse-ms "parent" () 4 () " TNode parent(void" 453 0 "src/TNode.cc" "TNode::parent()" 1587] -[ebrowse-ms "prepend" () 4 () " void prepend(const" 1718 0 "src/TNode.cc" "TNode::prepend(const" 2683] -[ebrowse-ms "prev" () 4 () " TNode prev(void" 372 0 "src/TNode.cc" "TNode::prev()" 396] -[ebrowse-ms "prevL" () 4 () " TNode prevL(void" 399 0 "src/TNode.cc" "TNode::prevL()" 588] -[ebrowse-ms "remove" () 4 () " void remove(void" 1529 0 "src/TNode.cc" "TNode::remove()" 1913] -[ebrowse-ms "replace" () 4 () " void replace(const" 1559 0 "src/TNode.cc" "TNode::replace(const" 2038] -[ebrowse-ms "set" () 4 () " void set(const" 1797 0 "src/TNode.cc" "TNode::set(const" 3109] -[ebrowse-ms "size" () 4 () " unsigned size(void" 621 0 "src/TNode.cc" "TNode::size()" 1749] -[ebrowse-ms "value" () 4 () " std::string value(void" 707 0 () " std::string value(void" 707] -) -() -() -() -() -()() -][ebrowse-ts [ebrowse-cs "Entry" "TDictionary" 0"src/TDictionary.hh" " struct Entry - {" 405"src/TDictionary.hh" ] -()([ebrowse-ms "cls" () 0 () " EntryClass cls;" 806 0 () () 0] -[ebrowse-ms "delimiter" () 0 () " unsigned delimiter : 1;" 909 0 () () 0] -[ebrowse-ms "embellishment" () 0 () " unsigned embellishment : 1;" 966 0 () () 0] -[ebrowse-ms "infix" () 0 () " unsigned infix : 8;" 830 0 () () 0] -[ebrowse-ms "leftOpen" () 0 () " unsigned leftOpen : 1;" 993 0 () () 0] -[ebrowse-ms "limits" () 0 () " unsigned limits : 1;" 934 0 () () 0] -[ebrowse-ms "pattern" () 0 () " std::vector pattern;" 597 0 () () 0] -[ebrowse-ms "postfix" () 0 () " unsigned postfix : 8;" 881 0 () () 0] -[ebrowse-ms "prefix" () 0 () " unsigned prefix : 8;" 855 0 () () 0] -[ebrowse-ms "rightOpen" () 0 () " unsigned rightOpen : 1;" 1021 0 () () 0] -[ebrowse-ms "table" () 0 () " unsigned table : 1;" 1045 0 () () 0] -[ebrowse-ms "value" () 0 () " std::string value;" 620 0 () () 0] -) -([ebrowse-ms "Entry" () 0 () " {" 420 0 () " {" 420] -[ebrowse-ms "defined" () 4 () " bool defined(void" 643 0 () " bool defined(void" 643] -[ebrowse-ms "hasArguments" () 4 () " bool hasArguments(void" 707 0 () " bool hasArguments(void" 707] -[ebrowse-ms "paramDelimited" () 4 () " bool paramDelimited(unsigned" 777 0 "src/TDictionary.cc" "TDictionary::Entry::paramDelimited(unsigned" 4012] -) -() -() -() -() -()() -][ebrowse-ts [ebrowse-cs "Frame" "TPushParser" 0"src/TPushParser.hh" " struct Frame - {" 1126"src/TPushParser.hh" ] -()([ebrowse-ms "entry" () 0 () " const TDictionary::Entry& entry;" 1226 0 () () 0] -[ebrowse-ms "pos" () 0 () " unsigned pos;" 1244 0 () () 0] -) -([ebrowse-ms "Frame" () 0 () " Frame(const TDictionary::Entry& e) :" 1142 0 () " Frame(const TDictionary::Entry& e) :" 1142] -) -() -() -() -() -()() -][ebrowse-ts [ebrowse-cs "TCharStream" () 0"src/TCharStream.hh" "class TCharStream -{" 94"src/TCharStream.hh" ] -([ebrowse-ts [ebrowse-cs "TCharStreamString" () 0"src/TCharStreamString.hh" "class TCharStreamString :" 120"src/TCharStreamString.hh" ] -()([ebrowse-ms "buffer" () 0 () " TString buffer;" 555 2 () () 0] -[ebrowse-ms "idx" () 0 () " unsigned long idx;" 536 2 () () 0] -) -([ebrowse-ms "TCharStreamString" () 0 () " TCharStreamString(const TString& s) :" 175 0 () " TCharStreamString(const TString& s) :" 175] -[ebrowse-ms "look" () 5 () " virtual TChar look(void" 343 0 () " virtual TChar look(void" 343] -[ebrowse-ms "more" () 5 () " virtual bool more(void" 275 0 () " virtual bool more(void" 275] -[ebrowse-ms "next" () 1 () " virtual TChar next(void" 439 0 () " virtual TChar next(void" 439] -[ebrowse-ms "~TCharStreamString" () 1 () " virtual ~TCharStreamString()" 243 0 () " virtual ~TCharStreamString()" 243] -) -() -() -() -() -()() -])() -([ebrowse-ms "TCharStream" () 0 () " TCharStream(void) {" 121 0 () " TCharStream(void) {" 121] -[ebrowse-ms "look" () 13 () " virtual TChar look(void" 222 0 () () 0] -[ebrowse-ms "more" () 13 () " virtual bool more(void" 184 0 () () 0] -[ebrowse-ms "next" () 9 () " virtual TChar next(void" 260 0 () () 0] -[ebrowse-ms "~TCharStream" () 1 () " virtual ~TCharStream()" 152 0 () " virtual ~TCharStream()" 152] -) -() -() -() -() -()() -][ebrowse-ts [ebrowse-cs "EmptyStream" "TCharStream" 0"src/TCharStream.hh" " class EmptyStream {" 289() ] -()() -() -() -() -() -() -()() -][ebrowse-ts [ebrowse-cs "*Globals*" () 0() () 0"src/APushLexer.hh" ] -()() -([ebrowse-ms "dispatch" () 0 "src/special.cc" "dispatch(const" 1012 0 "src/special.cc" "dispatch(const" 1012] -[ebrowse-ms "do_apostrophe" () 0 "src/special.cc" "do_apostrophe(const" 669 0 "src/special.cc" "do_apostrophe(const" 669] -[ebrowse-ms "do_bgroup" () 0 "src/special.cc" "do_bgroup(const" 149 0 "src/special.cc" "do_bgroup(const" 149] -[ebrowse-ms "do_control" () 0 "src/special.cc" "do_control(const" 711 0 "src/special.cc" "do_control(const" 711] -[ebrowse-ms "do_other" () 0 "src/special.cc" "do_other(const" 776 0 "src/special.cc" "do_other(const" 776] -[ebrowse-ms "finishG" () 0 "src/special.cc" "void finishG(const" 118 0 () () 0] -[ebrowse-ms "getCore" () 0 "src/domnav.cc" "getCore(const" 629 0 "src/domnav.cc" "getCore(const" 629] -[ebrowse-ms "getRightmostChild" () 0 "src/domnav.cc" "getRightmostChild(const" 37 0 "src/domnav.cc" "getRightmostChild(const" 37] -[ebrowse-ms "isDelimiter" () 0 "src/domnav.cc" "isDelimiter(const" 1716 0 "src/domnav.cc" "isDelimiter(const" 1716] -[ebrowse-ms "isFunction" () 0 "src/domnav.cc" "isFunction(const" 1879 0 "src/domnav.cc" "isFunction(const" 1879] -[ebrowse-ms "isGroup" () 0 "src/domnav.cc" "isGroup(const" 1214 0 "src/domnav.cc" "isGroup(const" 1214] -[ebrowse-ms "isInferred" () 0 "src/domnav.cc" "isInferred(const" 985 0 "src/domnav.cc" "isInferred(const" 985] -[ebrowse-ms "isMacro" () 0 "src/domnav.cc" "isMacro(const" 1085 0 "src/domnav.cc" "isMacro(const" 1085] -[ebrowse-ms "isOperator" () 0 "src/domnav.cc" "isOperator(const" 1553 0 "src/domnav.cc" "isOperator(const" 1553] -[ebrowse-ms "isPrimes" () 0 "src/domnav.cc" "isPrimes(const" 1451 0 "src/domnav.cc" "isPrimes(const" 1451] -[ebrowse-ms "isSb" () 0 "src/domnav.cc" "isSb(const" 1291 0 "src/domnav.cc" "isSb(const" 1291] -[ebrowse-ms "isSp" () 0 "src/domnav.cc" "isSp(const" 1369 0 "src/domnav.cc" "isSp(const" 1369] -[ebrowse-ms "isUnicodeAlpha" () 2 "src/dom.hh" "inline bool isUnicodeAlpha(TChar" 303 0 "src/dom.hh" "inline bool isUnicodeAlpha(TChar" 303] -[ebrowse-ms "isUnicodeDigit" () 2 "src/dom.hh" "inline bool isUnicodeDigit(TChar" 408 0 "src/dom.hh" "inline bool isUnicodeDigit(TChar" 408] -[ebrowse-ms "isUnicodeSpace" () 2 "src/dom.hh" "inline bool isUnicodeSpace(TChar" 198 0 "src/dom.hh" "inline bool isUnicodeSpace(TChar" 198] -[ebrowse-ms "main" () 0 "src/texlexer.cc" "main()" 51 0 "src/texlexer.cc" "main()" 51] -[ebrowse-ms "prevLinearSibling" () 0 "src/domnav.cc" "prevLinearSibling(const" 324 0 "src/domnav.cc" "prevLinearSibling(const" 324] -[ebrowse-ms "replace" () 0 "src/domnav.cc" "replace(const" 834 0 "src/domnav.cc" "replace(const" 834] -[ebrowse-ms "tokenize" () 0 "src/tokenizer.hh" "std::vector tokenize(const" 123 0 () () 0] -) -([ebrowse-ms "undefinedEntry" () 0 () () 0 0 "src/TDictionary.cc" "static TDictionary::Entry undefinedEntry;" 132] -) -() -([ebrowse-ms "Ptr_hh" () 512 () () 0 0 "src/Ptr.hh" "#define Ptr_hh -" 1036] -[ebrowse-ms "TML_NS_URI" () 512 () () 0 0 "src/globals.hh" "#define TML_NS_URI " 67] -[ebrowse-ms "XMLNS_NS_URI" () 512 () () 0 0 "src/globals.hh" "#define XMLNS_NS_URI " 123] -[ebrowse-ms "__APushLexer_hh__" () 512 () () 0 0 () "#define __APushLexer_hh__ -" 53] -[ebrowse-ms "__APushParser_hh__" () 512 () () 0 0 "src/APushParser.hh" "#define __APushParser_hh__ -" 55] -[ebrowse-ms "__TCharStreamString_hh__" () 512 () () 0 0 "src/TCharStreamString.hh" "#define __TCharStreamString_hh__ -" 67] -[ebrowse-ms "__TCharStream_hh__" () 512 () () 0 0 "src/TCharStream.hh" "#define __TCharStream_hh__ -" 55] -[ebrowse-ms "__TDictionary_hh__" () 512 () () 0 0 "src/TDictionary.hh" "#define __TDictionary_hh__ -" 55] -[ebrowse-ms "__TDocument_hh__" () 512 () () 0 0 "src/TDocument.hh" "#define __TDocument_hh__ -" 51] -[ebrowse-ms "__TNode_hh__" () 512 () () 0 0 "src/TNode.hh" "#define __TNode_hh__ -" 43] -[ebrowse-ms "__TObject_hh__" () 512 () () 0 0 "src/TObject.hh" "#define __TObject_hh__ -" 47] -[ebrowse-ms "__TPushLexer_hh__" () 512 () () 0 0 "src/TPushLexer.hh" "#define __TPushLexer_hh__ -" 53] -[ebrowse-ms "__TPushParser_hh__" () 512 () () 0 0 "src/TPushParser.hh" "#define __TPushParser_hh__ -" 55] -[ebrowse-ms "__TToken_hh__" () 512 () () 0 0 "src/TToken.hh" "#define __TToken_hh__ -" 45] -[ebrowse-ms "__TTokenizer_hh__" () 512 () () 0 0 "src/TTokenizer.hh" "#define __TTokenizer_hh__ -" 53] -[ebrowse-ms "__dom_hh__" () 512 () () 0 0 "src/dom.hh" "#define __dom_hh__ -" 39] -[ebrowse-ms "__globals_hh__" () 512 () () 0 0 "src/globals.hh" "#define __globals_hh__ -" 47] -[ebrowse-ms "__tokenzier_hh__" () 512 () () 0 0 "src/tokenizer.hh" "#define __tokenzier_hh__ -" 51] -) -([ebrowse-ms "TChar" () 0 () () 0 0 "src/dom.hh" "typedef DOM::Char32 TChar;" 131] -[ebrowse-ms "TString" () 0 () () 0 0 "src/dom.hh" "typedef DOM::UCS4String TString;" 164] -) -()() -][ebrowse-ts [ebrowse-cs "ProxyAttr" "TNode" 0"src/TNode.hh" " class ProxyAttr - {" 765"src/TNode.hh" ] -()([ebrowse-ms "name" () 0 () " std::string name;" 1155 2 () () 0] -[ebrowse-ms "node" () 0 () " DOM::Element node;" 1132 2 () () 0] -) -([ebrowse-ms "ProxyAttr" () 0 () "r(const DOM::Element& n, const std::string& s) :" 795 0 () "r(const DOM::Element& n, const std::string& s) :" 795] -[ebrowse-ms "operator =" () 0 () " ProxyAttr& operator=(const" 959 0 () " ProxyAttr& operator=(const" 959] -[ebrowse-ms "operator ==" () 0 () " bool operator==(const" 1040 0 () " bool operator==(const" 1040] -[ebrowse-ms "string" () 4 () " operator std::string()" 885 0 () " operator std::string()" 885] -) -() -() -() -() -()() -][ebrowse-ts [ebrowse-cs "EventListener" "DOM" 0() () 0() ] -([ebrowse-ts [ebrowse-cs "DOMSubtreeModifiedListener" "TDocument" 0"src/TDocument.hh" " class DOMSubtreeModifiedListener :" 1015"src/TDocument.hh" ] -()([ebrowse-ms "doc" () 0 () " TDocument doc;" 1247 2 () () 0] -) -([ebrowse-ms "DOMSubtreeModifiedListener" () 0 () "DOMSubtreeModifiedListener(const TDocument& d) :" 1092 0 () "DOMSubtreeModifiedListener(const TDocument& d) :" 1092] -[ebrowse-ms "handleEvent" () 1 () " virtual void handleEvent(const" 1202 0 () () 0] -[ebrowse-ms "~DOMSubtreeModifiedListener" () 1 () " virtual ~DOMSubtreeModifiedListener()" 1162 0 () " virtual ~DOMSubtreeModifiedListener()" 1162] -) -() -() -() -() -()() -][ebrowse-ts [ebrowse-cs "TDocument" () 0"src/TDocument.hh" "class TDocument :" 108"src/TDocument.hh" ] -()([ebrowse-ms "dirty" () 0 () " DOM::Element dirty;" 971 2 () () 0] -[ebrowse-ms "doc" () 0 () " DOM::Document doc;" 949 2 () () 0] -) -([ebrowse-ms "TDocument" () 0 () " TDocument(void);" 162 0 "src/TDocument.cc" "TDocument::TDocument() -{" 108] -[ebrowse-ms "create" () 4 () " TNode create(const" 202 0 "src/TDocument.cc" "TDocument::create(const" 789] -[ebrowse-ms "createC" () 4 () " TNode createC(const" 327 0 "src/TDocument.cc" "TDocument::createC(const" 1062] -[ebrowse-ms "createG" () 4 () " TNode createG(unsigned" 262 0 () " TNode createG(unsigned" 262] -[ebrowse-ms "createI" () 4 () " TNode createI(const" 461 0 () " TNode createI(const" 461] -[ebrowse-ms "createN" () 4 () " TNode createN(const" 561 0 () " TNode createN(const" 561] -[ebrowse-ms "createO" () 4 () " TNode createO(const" 661 0 () " TNode createO(const" 661] -[ebrowse-ms "createT" () 4 () " TNode createT(const" 384 0 "src/TDocument.cc" "TDocument::createT(const" 1197] -[ebrowse-ms "dirtyIdNode" () 4 () " TNode dirtyIdNode(void" 872 0 "src/TDocument.cc" "TDocument::dirtyIdNode()" 2081] -[ebrowse-ms "dirtyNode" () 4 () " TNode dirtyNode(void" 821 0 () " TNode dirtyNode(void" 821] -[ebrowse-ms "handleEvent" () 1 () " virtual void handleEvent(const" 1293 2 "src/TDocument.cc" "TDocument::handleEvent(const" 2348] -[ebrowse-ms "root" () 0 () " TNode root(void" 758 0 () " TNode root(void" 758] -[ebrowse-ms "serialize" () 4 () " void serialize(const" 904 0 "src/TDocument.cc" "TDocument::serialize(const" 637] -[ebrowse-ms "~TDocument" () 0 () " ~TDocument()" 179 0 "src/TDocument.cc" "TDocument::~TDocument()" 460] -) -() -([ebrowse-ms "findCommonAncestor" () 0 () " static DOM::Node findCommonAncestor(const" 1398 2 "src/TDocument.cc" "TDocument::findCommonAncestor(const" 1560] -[ebrowse-ms "nodeDepth" () 0 () " static unsigned nodeDepth(const" 1341 2 "src/TDocument.cc" "TDocument::nodeDepth(const" 1362] -) -() -() -()() -])() -() -() -() -() -() -()() -] \ No newline at end of file diff --git a/helm/DEVEL/mathml_editor/BUGS b/helm/DEVEL/mathml_editor/BUGS deleted file mode 100644 index e69de29bb..000000000 diff --git a/helm/DEVEL/mathml_editor/BUGS-GDOME2 b/helm/DEVEL/mathml_editor/BUGS-GDOME2 deleted file mode 100644 index 5f756359f..000000000 --- a/helm/DEVEL/mathml_editor/BUGS-GDOME2 +++ /dev/null @@ -1,4 +0,0 @@ - -* /usr/lib is given by gdome-config -* should optimize event propagation, remember only those nodes with - listeners diff --git a/helm/DEVEL/mathml_editor/ChangeLog b/helm/DEVEL/mathml_editor/ChangeLog deleted file mode 100644 index e69de29bb..000000000 diff --git a/helm/DEVEL/mathml_editor/LICENSE b/helm/DEVEL/mathml_editor/LICENSE deleted file mode 100644 index 567f3dc4c..000000000 --- a/helm/DEVEL/mathml_editor/LICENSE +++ /dev/null @@ -1,25 +0,0 @@ -/* This file is part of EdiTeX, an editor of mathematical - * expressions based on TeX syntax. - * - * Copyright (C) 2002-2003 Luca Padovani , - * 2003 Paolo Marinelli . - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please visit the project's home page - * http://helm.cs.unibo.it/editex/ - * or send an email to - */ - diff --git a/helm/DEVEL/mathml_editor/MODES b/helm/DEVEL/mathml_editor/MODES deleted file mode 100644 index 39032e3eb..000000000 --- a/helm/DEVEL/mathml_editor/MODES +++ /dev/null @@ -1,25 +0,0 @@ - -there are two basic syntactic modes: - -TeX mode: - -* any letter is an identifier by itself - -Program mode: - -* sequences of letters (and possibly other characters) - are collapsed into a single token. Id tokens are separated - by any other character not included in one of the collapsing - categories. - -The mode is a property of the parser. - -there are two basic semantic modes: - -math mode: - -* implicit operator is multiplication - -program mode: - -* implicit operator is function application diff --git a/helm/DEVEL/mathml_editor/Makefile.am b/helm/DEVEL/mathml_editor/Makefile.am deleted file mode 100644 index 01765d571..000000000 --- a/helm/DEVEL/mathml_editor/Makefile.am +++ /dev/null @@ -1,31 +0,0 @@ -DISTDIR = @PACKAGE@-@VERSION@ - -EXTRA_DIST = BUGS LICENSE BUGS-GDOME2 MODES PATTERNS aclocal.m4 debian/ editex.pc.in -SUBDIRS = src test ocaml textomml xsl dict -CLEANFILES = core - -pkgconfigdir = $(libdir)/pkgconfig -pkgconfig_DATA = editex.pc - -backup: - cd ..; tar cvfz @PACKAGE@-@VERSION@-`date|tr ' ' '_'|tr ':' '_'`.tar.gz @PACKAGE@ - -cleanbak: - -rm -f `find . -name "*~"` - -lc: - @( \ - CFILES=`find . -name "*.c"`; \ - HFILES=`find . -name "*.h"`; \ - CCFILES=`find . -name "*.cc"`; \ - HHFILES=`find . -name "*.hh"`; \ - ICCFILES=`find . -name "*.icc"`; \ - wc -l $$CFILES $$HFILES $$CCFILES $$HHFILES $$ICCFILES | tail -n 1 \ - ) - -deb: dist - if [ -d $(DISTDIR)/ ]; then rm -rf $(DISTDIR); else true; fi - tar xvzf $(DISTDIR).tar.gz - (cd $(DISTDIR)/ && debuild) - rm -rf $(DISTDIR) - diff --git a/helm/DEVEL/mathml_editor/Makefile.in b/helm/DEVEL/mathml_editor/Makefile.in deleted file mode 100644 index b66feab8e..000000000 --- a/helm/DEVEL/mathml_editor/Makefile.in +++ /dev/null @@ -1,438 +0,0 @@ -# Makefile.in generated automatically by automake 1.4-p4 from Makefile.am - -# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - - -SHELL = @SHELL@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -infodir = @infodir@ -mandir = @mandir@ -includedir = @includedir@ -oldincludedir = /usr/include - -DESTDIR = - -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ - -top_builddir = . - -ACLOCAL = @ACLOCAL@ -AUTOCONF = @AUTOCONF@ -AUTOMAKE = @AUTOMAKE@ -AUTOHEADER = @AUTOHEADER@ - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -transform = @program_transform_name@ - -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -host_alias = @host_alias@ -host_triplet = @host@ -AS = @AS@ -CC = @CC@ -CFLAGS = @CFLAGS@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ -EDITEX_VERSION_INFO = @EDITEX_VERSION_INFO@ -EXEEXT = @EXEEXT@ -GDOMEXSLT_CFLAGS = @GDOMEXSLT_CFLAGS@ -GDOMEXSLT_LIBS = @GDOMEXSLT_LIBS@ -GMETADOM_CFLAGS = @GMETADOM_CFLAGS@ -GMETADOM_LIBS = @GMETADOM_LIBS@ -GTKMATHVIEW_CFLAGS = @GTKMATHVIEW_CFLAGS@ -GTKMATHVIEW_LIBS = @GTKMATHVIEW_LIBS@ -HAVE_OCAMLC = @HAVE_OCAMLC@ -HAVE_OCAMLDEP = @HAVE_OCAMLDEP@ -HAVE_OCAMLFIND = @HAVE_OCAMLFIND@ -HAVE_OCAMLMKLIB = @HAVE_OCAMLMKLIB@ -HAVE_OCAMLOPT = @HAVE_OCAMLOPT@ -LDFLAGS = @LDFLAGS@ -LIBTOOL = @LIBTOOL@ -LN_S = @LN_S@ -MAKEINFO = @MAKEINFO@ -MLGDOME_CFLAGS = @MLGDOME_CFLAGS@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OCAMLC = @OCAMLC@ -OCAMLDEP = @OCAMLDEP@ -OCAMLFIND = @OCAMLFIND@ -OCAMLMKLIB = @OCAMLMKLIB@ -OCAMLOPT = @OCAMLOPT@ -OCAMLSTDLIBDIR = @OCAMLSTDLIBDIR@ -OCAMLSTUBDIR = @OCAMLSTUBDIR@ -OCAML_INCLUDE_DIR = @OCAML_INCLUDE_DIR@ -PACKAGE = @PACKAGE@ -RANLIB = @RANLIB@ -STRIP = @STRIP@ -VERSION = @VERSION@ - -EXTRA_DIST = BUGS LICENSE aclocal.m4 -SUBDIRS = src test ocaml textomml -CLEANFILES = core - -pkgconfigdir = $(libdir)/pkgconfig -pkgconfig_DATA = editex.pc -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_HEADER = config.h -CONFIG_CLEAN_FILES = editex.pc -DATA = $(pkgconfig_DATA) - -DIST_COMMON = README ./stamp-h.in AUTHORS COPYING ChangeLog INSTALL \ -Makefile.am Makefile.in NEWS TODO aclocal.m4 config.guess config.h.in \ -config.sub configure configure.ac editex.pc.in install-sh ltmain.sh \ -missing mkinstalldirs - - -DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) - -TAR = tar -GZIP_ENV = --best -all: all-redirect -.SUFFIXES: -$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) - cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile - -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES) - cd $(top_builddir) \ - && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status - -$(ACLOCAL_M4): configure.ac - cd $(srcdir) && $(ACLOCAL) - -config.status: $(srcdir)/configure.ac $(CONFIG_STATUS_DEPENDENCIES) - $(SHELL) ./config.status --recheck -$(srcdir)/configure: $(srcdir)/configure.ac $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) - cd $(srcdir) && $(AUTOCONF) - -config.h: stamp-h - @if test ! -f $@; then \ - rm -f stamp-h; \ - $(MAKE) stamp-h; \ - else :; fi -stamp-h: $(srcdir)/config.h.in $(top_builddir)/config.status - cd $(top_builddir) \ - && CONFIG_FILES= CONFIG_HEADERS=config.h \ - $(SHELL) ./config.status - @echo timestamp > stamp-h 2> /dev/null -$(srcdir)/config.h.in: $(srcdir)/stamp-h.in - @if test ! -f $@; then \ - rm -f $(srcdir)/stamp-h.in; \ - $(MAKE) $(srcdir)/stamp-h.in; \ - else :; fi -$(srcdir)/stamp-h.in: $(top_srcdir)/configure.ac $(ACLOCAL_M4) - cd $(top_srcdir) && $(AUTOHEADER) - @echo timestamp > $(srcdir)/stamp-h.in 2> /dev/null - -mostlyclean-hdr: - -clean-hdr: - -distclean-hdr: - -rm -f config.h - -maintainer-clean-hdr: -editex.pc: $(top_builddir)/config.status editex.pc.in - cd $(top_builddir) && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status - -install-pkgconfigDATA: $(pkgconfig_DATA) - @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(pkgconfigdir) - @list='$(pkgconfig_DATA)'; for p in $$list; do \ - if test -f $(srcdir)/$$p; then \ - echo " $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(pkgconfigdir)/$$p"; \ - $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(pkgconfigdir)/$$p; \ - else if test -f $$p; then \ - echo " $(INSTALL_DATA) $$p $(DESTDIR)$(pkgconfigdir)/$$p"; \ - $(INSTALL_DATA) $$p $(DESTDIR)$(pkgconfigdir)/$$p; \ - fi; fi; \ - done - -uninstall-pkgconfigDATA: - @$(NORMAL_UNINSTALL) - list='$(pkgconfig_DATA)'; for p in $$list; do \ - rm -f $(DESTDIR)$(pkgconfigdir)/$$p; \ - done - -# This directory's subdirectories are mostly independent; you can cd -# into them and run `make' without going through this Makefile. -# To change the values of `make' variables: instead of editing Makefiles, -# (1) if the variable is set in `config.status', edit `config.status' -# (which will cause the Makefiles to be regenerated when you run `make'); -# (2) otherwise, pass the desired values on the `make' command line. - -@SET_MAKE@ - -all-recursive install-data-recursive install-exec-recursive \ -installdirs-recursive install-recursive uninstall-recursive \ -check-recursive installcheck-recursive info-recursive dvi-recursive: - @set fnord $(MAKEFLAGS); amf=$$2; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - dot_seen=yes; \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -mostlyclean-recursive clean-recursive distclean-recursive \ -maintainer-clean-recursive: - @set fnord $(MAKEFLAGS); amf=$$2; \ - dot_seen=no; \ - rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \ - rev="$$subdir $$rev"; \ - test "$$subdir" = "." && dot_seen=yes; \ - done; \ - test "$$dot_seen" = "no" && rev=". $$rev"; \ - target=`echo $@ | sed s/-recursive//`; \ - for subdir in $$rev; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ - done && test -z "$$fail" -tags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done - -tags: TAGS - -ID: $(HEADERS) $(SOURCES) $(LISP) - list='$(SOURCES) $(HEADERS)'; \ - unique=`for i in $$list; do echo $$i; done | \ - awk ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - here=`pwd` && cd $(srcdir) \ - && mkid -f$$here/ID $$unique $(LISP) - -TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ - fi; \ - done; \ - list='$(SOURCES) $(HEADERS)'; \ - unique=`for i in $$list; do echo $$i; done | \ - awk ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)config.h.in$$unique$(LISP)$$tags" \ - || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags config.h.in $$unique $(LISP) -o $$here/TAGS) - -mostlyclean-tags: - -clean-tags: - -distclean-tags: - -rm -f TAGS ID - -maintainer-clean-tags: - -distdir = $(PACKAGE)-$(VERSION) -top_distdir = $(distdir) - -# This target untars the dist file and tries a VPATH configuration. Then -# it guarantees that the distribution is self-contained by making another -# tarfile. -distcheck: dist - -rm -rf $(distdir) - GZIP=$(GZIP_ENV) $(TAR) zxf $(distdir).tar.gz - mkdir $(distdir)/=build - mkdir $(distdir)/=inst - dc_install_base=`cd $(distdir)/=inst && pwd`; \ - cd $(distdir)/=build \ - && ../configure --srcdir=.. --prefix=$$dc_install_base \ - && $(MAKE) $(AM_MAKEFLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) dvi \ - && $(MAKE) $(AM_MAKEFLAGS) check \ - && $(MAKE) $(AM_MAKEFLAGS) install \ - && $(MAKE) $(AM_MAKEFLAGS) installcheck \ - && $(MAKE) $(AM_MAKEFLAGS) dist - -rm -rf $(distdir) - @banner="$(distdir).tar.gz is ready for distribution"; \ - dashes=`echo "$$banner" | sed s/./=/g`; \ - echo "$$dashes"; \ - echo "$$banner"; \ - echo "$$dashes" -dist: distdir - -chmod -R a+r $(distdir) - GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) - -rm -rf $(distdir) -dist-all: distdir - -chmod -R a+r $(distdir) - GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) - -rm -rf $(distdir) -distdir: $(DISTFILES) - -rm -rf $(distdir) - mkdir $(distdir) - -chmod 777 $(distdir) - here=`cd $(top_builddir) && pwd`; \ - top_distdir=`cd $(distdir) && pwd`; \ - distdir=`cd $(distdir) && pwd`; \ - cd $(top_srcdir) \ - && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu Makefile - @for file in $(DISTFILES); do \ - d=$(srcdir); \ - if test -d $$d/$$file; then \ - cp -pr $$d/$$file $(distdir)/$$file; \ - else \ - test -f $(distdir)/$$file \ - || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ - || cp -p $$d/$$file $(distdir)/$$file || :; \ - fi; \ - done - for subdir in $(SUBDIRS); do \ - if test "$$subdir" = .; then :; else \ - test -d $(distdir)/$$subdir \ - || mkdir $(distdir)/$$subdir \ - || exit 1; \ - chmod 777 $(distdir)/$$subdir; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir=../$(distdir) distdir=../$(distdir)/$$subdir distdir) \ - || exit 1; \ - fi; \ - done -info-am: -info: info-recursive -dvi-am: -dvi: dvi-recursive -check-am: all-am -check: check-recursive -installcheck-am: -installcheck: installcheck-recursive -all-recursive-am: config.h - $(MAKE) $(AM_MAKEFLAGS) all-recursive - -install-exec-am: -install-exec: install-exec-recursive - -install-data-am: install-pkgconfigDATA -install-data: install-data-recursive - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am -install: install-recursive -uninstall-am: uninstall-pkgconfigDATA -uninstall: uninstall-recursive -all-am: Makefile $(DATA) config.h -all-redirect: all-recursive-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install -installdirs: installdirs-recursive -installdirs-am: - $(mkinstalldirs) $(DESTDIR)$(pkgconfigdir) - - -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* - -maintainer-clean-generic: -mostlyclean-am: mostlyclean-hdr mostlyclean-tags mostlyclean-generic - -mostlyclean: mostlyclean-recursive - -clean-am: clean-hdr clean-tags clean-generic mostlyclean-am - -clean: clean-recursive - -distclean-am: distclean-hdr distclean-tags distclean-generic clean-am - -rm -f libtool - -distclean: distclean-recursive - -rm -f config.status - -maintainer-clean-am: maintainer-clean-hdr maintainer-clean-tags \ - maintainer-clean-generic distclean-am - @echo "This command is intended for maintainers to use;" - @echo "it deletes files that may require special tools to rebuild." - -maintainer-clean: maintainer-clean-recursive - -rm -f config.status - -.PHONY: mostlyclean-hdr distclean-hdr clean-hdr maintainer-clean-hdr \ -uninstall-pkgconfigDATA install-pkgconfigDATA install-data-recursive \ -uninstall-data-recursive install-exec-recursive \ -uninstall-exec-recursive installdirs-recursive uninstalldirs-recursive \ -all-recursive check-recursive installcheck-recursive info-recursive \ -dvi-recursive mostlyclean-recursive distclean-recursive clean-recursive \ -maintainer-clean-recursive tags tags-recursive mostlyclean-tags \ -distclean-tags clean-tags maintainer-clean-tags distdir info-am info \ -dvi-am dvi check check-am installcheck-am installcheck all-recursive-am \ -install-exec-am install-exec install-data-am install-data install-am \ -install uninstall-am uninstall all-redirect all-am all installdirs-am \ -installdirs mostlyclean-generic distclean-generic clean-generic \ -maintainer-clean-generic clean mostlyclean distclean maintainer-clean - - -backup: - cd ..; tar cvfz @PACKAGE@-@VERSION@-`date|tr ' ' '_'|tr ':' '_'`.tar.gz @PACKAGE@ - -cleanbak: - -rm -f `find . -name "*~"` - -lc: - @( \ - CFILES=`find . -name "*.c"`; \ - HFILES=`find . -name "*.h"`; \ - CCFILES=`find . -name "*.cc"`; \ - HHFILES=`find . -name "*.hh"`; \ - ICCFILES=`find . -name "*.icc"`; \ - wc -l $$CFILES $$HFILES $$CCFILES $$HHFILES $$ICCFILES | tail -n 1 \ - ) - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/helm/DEVEL/mathml_editor/NEWS b/helm/DEVEL/mathml_editor/NEWS deleted file mode 100644 index e69de29bb..000000000 diff --git a/helm/DEVEL/mathml_editor/PATTERNS b/helm/DEVEL/mathml_editor/PATTERNS deleted file mode 100644 index 0e5814d82..000000000 --- a/helm/DEVEL/mathml_editor/PATTERNS +++ /dev/null @@ -1,196 +0,0 @@ - -identifier # - - insert(#) - -number # - - insert(#) - -\sqrt - - replace($, $) - -\root - - replace($, $) - -\of - - when (isa($.parent, "mrow") && isa($.parent.parent, "mroot")) - let mroot = $.parent.parent - if ($.prev and !$.prev.prev and !$.next) replace($.parent, $.prev) - replace(mroot.child[0], $) - -\underline - - insert([$, _]) - -\overline - - insert([$, ]) - -\cases - - replace($, {$) - -\matrix - - replace($, $) - -\over - - if isa($.parent, "mrow") - replace($.parent, [$.parent, $]) - - -_ if isa($.parent, "mrow") - if eq($.prev, null) - replace($, new(mmultiscripts, [ new mrow, $, new none ])) - elseif (isa($.prev, msub)) - let base = $.prev.children[0] - let script = $.prev.children[1] - replace($.rev, new(mmultiscripts, [ base, script, new none, $, new none ])) - elseif (isa($.prev, msup)) - let base = $.prev.children[0] - let script = $.prev.children[1] - replace($.prev, new(msubsup, [ base, $, script ])) - elseif (isa($.prev, msubsup)) - let base = $.prev.children[0] - let subscript = $.prev.children[1] - let superscript = $.prev.children[2] - replace($.prev, new(mmultiscripts, [ base, subscript, superscript, $, new none ])) - elseif isa($.prev, mmultiscripts) - if ($.prev.children[$.prev.children.size - 2] = null) - replace($.prev.children[$.prev.children.size - 2], $) - else - $.prev.children.append([$, new none]) - else - replace($.prev, new(msub, [ $.prev, $ ])) - else if isa($.parent, msub) and $.parent.children[1] = $ - let base = $.parent.children[0] - replace($.parent, new(munder, [ base, $ ])) - - -_, \sb (subscript) - - if parent.isa(mrow) - if cursor is first child then - sub = new mmultiscripts - parent.replace(cursor, sub); - sub.set_base(new mrow); - sub.set_subscript(cursor); - else - elem = element prior to cursor in parent - if elem.isa(msub) || elem.isa(msup) || elem.isa(mmultiscripts) then - append script to multiscript and/or replace single script with - multiscript - else if elem.isa(munder) || elem.isa(mover) || elem.isa(munderover) then - creates another munder - else - parent.replace(elem, sub); - sub.set_base(elem); - sub.set_subscript(cursor); - else if (parent.isa(msub) and cursor is subscript) or - change msub into a munder - cursor in same position - else - replace cursor with msub with empty base - -^, \sp (superscript) - - symmetric to subscript - -', \prime (prime) - - similar to superscript, but multiple prime superscripts should go - together in the same operator - -{ (group open) - - replace cursor with mrow, put cursor inside mrow - if cursor is inside a table, create a new table row and a new table cell - and put the cursor inside the cell - -} (group close) - - remove cursor from mrow - mrow.parent.advance(cursor, mrow) - if cursor inside a table cell then close table - -\over,\atop,\above (fraction) - - if cursor.parent.isa(mrow) then - frac = new mfrac - cursor.parent.parent.replace(mrow, frac) - numerator is current content of cursor.parent except for the cursor - itself. - set denominator to cursor - else - -\choose - - similar to fractions, but with stretchable parentheses around - -\sqrt - - parent.replace(cursor, new msqrt) - set new msqrt.base to cursor - -\root - - parent.replace(cursor, new mroot) - set empty base element - set root index to cursor - -\of - - check if cursor.parent is mroot (or mrow inside mroot index) - or and cursor is in index position. move the cursor to the base element - -\underline - - create munder element with stretchable horizontal line as underscript - substitute cursor with munder - move the cursor in the base element - -\overline - - symmetric - -accents (\hat) - - create an mover with accent=true and the operator has stretchy=false - -wide accents (\widehat) - - as accents, but mover has accent=false and the operator has stretchy=true - -\scriptstyle, ... - - create an appropriate mstyle, the cursor moves in. However, when the - subformula ends one has to skip the mstyle - -\cases - - create mrow with stretchable brace and emtpy table, put cursor inside - table - -\matrix - - create empty table, cursor inside table - -& - - check that cursor is inside a table cell - create a new cell next to it - -\cr - - check that cursor is inside a table cell inside a table row - create a new row - -\phantom - - create a mphantom element, cursor inside - diff --git a/helm/DEVEL/mathml_editor/README b/helm/DEVEL/mathml_editor/README deleted file mode 100644 index e69de29bb..000000000 diff --git a/helm/DEVEL/mathml_editor/TML.dtd b/helm/DEVEL/mathml_editor/TML.dtd deleted file mode 100644 index 74760bb45..000000000 --- a/helm/DEVEL/mathml_editor/TML.dtd +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/helm/DEVEL/mathml_editor/TODO b/helm/DEVEL/mathml_editor/TODO deleted file mode 100644 index 701ec4673..000000000 --- a/helm/DEVEL/mathml_editor/TODO +++ /dev/null @@ -1,13 +0,0 @@ - -* add param node in the TML with the name of the parameter -* add space node? active node? -* add alt boolean to all deleting methods -* implement a mechanism that allows the definition of new macros -* add open-group close-group attributes in the dictionary and handle them -* implement macro completion - -BUGS -* $1\over{2}$ does not work - -* compare pure_subst/pure_diff/subst_diff performances - diff --git a/helm/DEVEL/mathml_editor/configure.ac b/helm/DEVEL/mathml_editor/configure.ac deleted file mode 100644 index 49662e3c3..000000000 --- a/helm/DEVEL/mathml_editor/configure.ac +++ /dev/null @@ -1,181 +0,0 @@ -dnl Process this file with autoconf to produce a configure script. -AC_INIT(editex, [0.0.3]) -AC_CONFIG_SRCDIR(src/TToken.hh) -AM_INIT_AUTOMAKE($AC_PACKAGE_NAME, $AC_PACKAGE_VERSION) - -PACKAGE=$PACKAGE_NAME -VERSION=$PACKAGE_VERSION -AC_SUBST(PACKAGE) -AC_SUBST(VERSION) - -EDITEX_VERSION_INFO=`echo $VERSION | awk -F. '{ printf "%d:%d:%d", $1+$2, $3, $2 }'` -AC_SUBST(EDITEX_VERSION_INFO) - -AC_ARG_ENABLE( - profile, - [ --enable-profile[=ARG] include profiling information [default=no]], - profile=$enableval, - profile=no -) - -AC_ARG_ENABLE( - debug, - [ --enable-debug[=ARG] include debugging debug [default=yes]], - enable_debug=$enableval, - enable_debug=yes -) - -if test "x$enable_debug" = "xyes"; then - AC_DEFINE(ENABLE_DEBUG,,[Define to 1 if you want to enable validity checks while running]) -fi - -GMETADOM_PREFIX="" -AC_ARG_WITH(gmetadom-prefix, - [ --with-gmetadom-prefix=[PFX] Specify location of gmetadom], - GMETADOM_PREFIX=$withval -) - -dnl AC_CONFIG_HEADERS([config.h]) -AM_CONFIG_HEADER(config.h) - -AH_TOP([ -/* This file is part of EdiTeX, an editor of mathematical - * expressions based on TeX syntax. - * - * Copyright (C) 2002-2003 Luca Padovani , - * 2003 Paolo Marinelli . - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please visit the project's home page - * http://helm.cs.unibo.it/editex/ - * or send an email to - */ - -#ifndef config_h -#define config_h -]) - -AH_BOTTOM([ -#endif /* config_h */ -]) - -AC_PROG_CC -AC_PROG_CXX -AC_PROG_INSTALL -AC_HEADER_STDC([]) - -AC_LANG_PUSH(C++) -AC_CHECK_HEADERS(hash_map) -AC_CHECK_HEADERS(ext/hash_map) -AC_LANG_POP(C++) - -AC_SUBST(CFLAGS) -AC_SUBST(CPPFLAGS) -AC_SUBST(LDFLAGS) - -AM_PROG_LIBTOOL - -dnl PKG_CHECK_MODULES(GLIB2, glib-2.0) -dnl AC_SUBST(GLIB2_CFLAGS) -dnl AC_SUBST(GLIB2_LIBS) - -PKG_CHECK_MODULES(GMETADOM,gdome2-cpp-smart,,AC_MSG_ERROR(can not find gmetadom)) -AC_SUBST(GMETADOM_CFLAGS) -AC_SUBST(GMETADOM_LIBS) - -PKG_CHECK_MODULES(GDOMEXSLT,gdome2-xslt-cpp-smart,,AC_MSG_ERROR(can not find gdome2-xslt)) -AC_SUBST(GDOMEXSLT_CFLAGS) -AC_SUBST(GDOMEXSLT_LIBS) - -PKG_CHECK_MODULES(GTKMATHVIEW,gtkmathview,,AC_MSG_ERROR(can not find gtkmathview)) -AC_SUBST(GTKMATHVIEW_CFLAGS) -AC_SUBST(GTKMATHVIEW_LIBS) - -AC_CHECK_PROG(HAVE_OCAMLC, ocamlc, yes, no) -if test $HAVE_OCAMLC = "no"; then - AC_MSG_ERROR([could not find ocamlc in PATH, please make sure ocaml is installed]) -else - OCAMLC=ocamlc - OCAMLSTDLIBDIR="`ocamlc -where`" - OCAMLSTUBDIR="`ocamlc -where`/stublibs" - AC_SUBST(OCAMLC) - AC_SUBST(OCAMLSTDLIBDIR) - AC_SUBST(OCAMLSTUBDIR) -fi - -AC_CHECK_PROG(HAVE_OCAMLOPT, ocamlopt, yes, no) -if test $HAVE_OCAMLOPT = "no"; then - AC_MSG_WARN([ocaml native libraries won't be compiled since ocamlopt was not found]) -else - OCAMLOPT=ocamlopt - AC_SUBST(OCAMLOPT) -fi -AM_CONDITIONAL(HAVE_OCAMLOPT_COND, test x$HAVE_OCAMLOPT = xyes) - -AC_CHECK_PROG(HAVE_OCAMLFIND, ocamlfind, yes, no) -if test $HAVE_OCAMLFIND = "no"; then - AC_MSG_ERROR([could not find ocamlfind in PATH, please make sure findlib is installed]) -else - OCAMLFIND=ocamlfind - AC_SUBST(OCAMLFIND) -fi - -AC_CHECK_PROG(HAVE_OCAMLDEP, ocamldep, yes, no) -if test $HAVE_OCAMLDEP = "yes"; then - OCAMLDEP=ocamldep - AC_SUBST(OCAMLDEP) -fi - -AC_CHECK_PROG(HAVE_OCAMLMKLIB, ocamlmklib, yes, no) -if test $HAVE_OCAMLMKLIB = "no"; then - AC_MSG_ERROR([could not find ocamlmklib in PATH, please make sure ocamlmklib is installed]) -else - OCAMLMKLIB=ocamlmklib - AC_SUBST(OCAMLMKLIB) -fi -AM_CONDITIONAL(HAVE_SHAREDLIBS_COND, test x$enable_shared = xyes) - -AC_MSG_CHECKING(for gdome2 ocaml binding) -ocamlfind query gdome2 || - AC_MSG_ERROR(gdome2 not installed (according to findlib)) -MLGDOME_CFLAGS="`$OCAMLFIND query -i-format gdome2`" -AC_SUBST(MLGDOME_CFLAGS) - -AC_MSG_CHECKING(for the ocaml library dir) -OCAML_LIB_DIR=`ocamlc -where` -AC_MSG_RESULT($OCAML_LIB_DIR) - -AC_CHECK_FILE(/usr/include/caml/mlvalues.h, - OCAML_INCLUDE_DIR=/usr/include/caml, - OCAML_INCLUDE_DIR=$OCAML_LIB_DIR/caml -) - -AC_SUBST(OCAML_INCLUDE_DIR) - -AC_CONFIG_FILES([ - Makefile - src/Makefile - src/config.dirs - test/Makefile - textomml/Makefile - textomml/config.dirs - ocaml/Makefile - ocaml/META - editex.pc - xsl/Makefile - dict/Makefile -]) -AC_OUTPUT diff --git a/helm/DEVEL/mathml_editor/debian/changelog b/helm/DEVEL/mathml_editor/debian/changelog deleted file mode 100644 index be3c32d01..000000000 --- a/helm/DEVEL/mathml_editor/debian/changelog +++ /dev/null @@ -1,33 +0,0 @@ -editex (0.0.3-2) unstable; urgency=low - - * Signed by me - * debian/control - - added ${misc:Depends} - - bumped standards-version to 3.5.10 - - bumped dependencies on gmetadom to 0.1.9 - - changed section of -dev package to libdevel - - -- Stefano Zacchiroli Wed, 25 Jun 2003 18:26:11 +0200 - -editex (0.0.3-1) unstable; urgency=low - - * New upstream release. - * Bug fix: tml-litex.xsl was not installed - * Bug fix: Makefile.ac did not use pkg-config to look for the existence - of the required packages (that, in the meantime, started using pkg-config) - As a result, the required packages were no longer detected by ./configure - - -- Claudio Sacerdoti Coen Thu, 19 Jun 2003 12:58:21 +0200 - -editex (0.0.2-1) unstable; urgency=low - - * New upstream release. - - -- Claudio Sacerdoti Coen Thu, 19 Jun 2003 12:58:21 +0200 - -editex (0.0.1-1) unstable; urgency=low - - * Initial Release. - - -- Stefano Zacchiroli Wed, 02 Apr 2003 15:53:25 +0200 - diff --git a/helm/DEVEL/mathml_editor/debian/control b/helm/DEVEL/mathml_editor/debian/control deleted file mode 100644 index 27c78ab0f..000000000 --- a/helm/DEVEL/mathml_editor/debian/control +++ /dev/null @@ -1,46 +0,0 @@ -Source: editex -Priority: optional -Maintainer: Stefano Zacchiroli -Build-Depends: debhelper (>> 4.0.0), ocaml-3.06-1, libgdome2-cpp-smart-dev (>= 0.1.9), libgdome2-ocaml-dev (>= 0.1.9), libgdome2-xslt-dev (>= 0.0.4), libgdome2-xslt-ocaml-dev (>= 0.0.4), ocaml-findlib, libgtkmathview-dev (>= 0.4.1), libgtk1.2-dev, t1lib-dev -Standards-Version: 3.5.10 - -Package: libeditex0 -Section: libs -Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends} -Description: MathML editor based on TeX syntax - EdiTeX is a C library implementing a MathML editor based on TeX syntax. - . - This package includes the shared runtime objects. - -Package: libeditex-dev -Section: libdevel -Architecture: any -Depends: libeditex0 (= ${Source-Version}), libgdome2-cpp-smart-dev (>= 0.1.6), libgdome2-xslt-dev (>= 0.0.4), libgtk1.2-dev, t1lib-dev, ${misc:Depends} -Description: MathML editor based on TeX syntax - EdiTeX is a C library implementing a MathML editor based on TeX syntax. - . - This package includes the development files. - -Package: libeditex-ocaml -Section: libs -Architecture: any -Depends: ocaml-base-3.06-1, libgdome2-ocaml (>= 0.1.6), libgdome2-xslt-ocaml (>= 0.0.4), liblablgtk-ocaml (>= 1.2.5), ${shlibs:Depends}, ${misc:Depends} -Description: OCaml bindings to EdiTeX, a MathML editor based on TeX syntax - EdiTeX is a C library implementing a MathML editor based on TeX syntax. - . - This are the Objective CAML bindings to EdiTeX. - . - This package includes the OCaml shared runtime objects. - -Package: libeditex-ocaml-dev -Section: libdevel -Architecture: any -Depends: libeditex-ocaml (= ${Source-Version}), libgdome2-ocaml-dev (>= 0.1.6), libgdome2-xslt-ocaml-dev (>= 0.0.4), liblablgtk-ocaml-dev (>= 1.2.5), ${misc:Depends} -Description: OCaml bindings to EdiTeX, a MathML editor based on TeX syntax - EdiTeX is a C library implementing a MathML editor based on TeX syntax. - . - This are the Objective CAML bindings to EdiTeX. - . - This package includes the OCaml development files. - diff --git a/helm/DEVEL/mathml_editor/debian/copyright b/helm/DEVEL/mathml_editor/debian/copyright deleted file mode 100644 index 310cde409..000000000 --- a/helm/DEVEL/mathml_editor/debian/copyright +++ /dev/null @@ -1,23 +0,0 @@ -This package was debianized by Stefano Zacchiroli on -Thu, 20 Mar 2003 18:09:22 +0100. - -It was downloaded from: - - http://www.cs.unibo.it/cgi-bin/cvsweb/helm/DEVEL/mathml_editor/ - -Upstream Authors: - Luca Padovani - Paolo Marinelli - -Copyright: - - This library is distributed under the term of the GNU Lesser General - Public License (LGPL). - - This library 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. - - On a Debian GNU/Linux system, the LGPL can be found as - /usr/share/common-licenses/LGPL-2.1. diff --git a/helm/DEVEL/mathml_editor/debian/docs b/helm/DEVEL/mathml_editor/debian/docs deleted file mode 100644 index 4a84a8c2c..000000000 --- a/helm/DEVEL/mathml_editor/debian/docs +++ /dev/null @@ -1,7 +0,0 @@ -BUGS -BUGS-GDOME2 -MODES -NEWS -PATTERNS -README -TODO diff --git a/helm/DEVEL/mathml_editor/debian/libeditex-dev.files b/helm/DEVEL/mathml_editor/debian/libeditex-dev.files deleted file mode 100644 index 1d5afcf6e..000000000 --- a/helm/DEVEL/mathml_editor/debian/libeditex-dev.files +++ /dev/null @@ -1,5 +0,0 @@ -usr/lib/pkgconfig -usr/include -usr/lib/*.a -usr/lib/*.la -usr/lib/*.so diff --git a/helm/DEVEL/mathml_editor/debian/libeditex-ocaml-dev.files b/helm/DEVEL/mathml_editor/debian/libeditex-ocaml-dev.files deleted file mode 100644 index c0bf9c746..000000000 --- a/helm/DEVEL/mathml_editor/debian/libeditex-ocaml-dev.files +++ /dev/null @@ -1,3 +0,0 @@ -usr/lib/ocaml/3.06/mathml-editor -usr/lib/ocaml/3.06/stublibs/lib*.so -usr/lib/ocaml/3.06/stublibs/dll*.so.owner diff --git a/helm/DEVEL/mathml_editor/debian/libeditex-ocaml.files b/helm/DEVEL/mathml_editor/debian/libeditex-ocaml.files deleted file mode 100644 index 2dd4e59d9..000000000 --- a/helm/DEVEL/mathml_editor/debian/libeditex-ocaml.files +++ /dev/null @@ -1 +0,0 @@ -usr/lib/ocaml/3.06/stublibs/dll*.so diff --git a/helm/DEVEL/mathml_editor/debian/libeditex0.files b/helm/DEVEL/mathml_editor/debian/libeditex0.files deleted file mode 100644 index 213e11b2f..000000000 --- a/helm/DEVEL/mathml_editor/debian/libeditex0.files +++ /dev/null @@ -1,2 +0,0 @@ -usr/lib/*.so.* -usr/share diff --git a/helm/DEVEL/mathml_editor/debian/rules b/helm/DEVEL/mathml_editor/debian/rules deleted file mode 100755 index 5a76802cc..000000000 --- a/helm/DEVEL/mathml_editor/debian/rules +++ /dev/null @@ -1,76 +0,0 @@ -#!/usr/bin/make -f - -# Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 - -export DH_COMPAT=4 - -# These are used for cross-compiling and for saving the configure script -# from having to guess our platform (since we know it already) -DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) -DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) - -ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) - CFLAGS += -O0 -else - CFLAGS += -O2 -endif -ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS))) - INSTALL_PROGRAM += -s -endif - -config.status: configure - dh_testdir - ./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) --prefix=/usr --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info - -build: build-stamp -build-stamp: config.status - dh_testdir - - $(MAKE) - - touch build-stamp - -clean: - dh_testdir - dh_testroot - rm -f build-stamp - - -$(MAKE) distclean -# ifneq "$(wildcard /usr/share/misc/config.sub)" "" -# cp -f /usr/share/misc/config.sub config.sub -# endif -# ifneq "$(wildcard /usr/share/misc/config.guess)" "" -# cp -f /usr/share/misc/config.guess config.guess -# endif - - dh_clean - -install: build - dh_testdir - dh_testroot - dh_clean -k - dh_installdirs - $(MAKE) install DESTDIR=$(CURDIR)/debian/tmp - dh_movefiles - -binary-arch: build install - dh_testdir -s - dh_testroot -s - dh_installchangelogs -s ChangeLog - dh_installdocs -s -# dh_installexamples -s -# dh_installinfo -s - dh_link -s - dh_strip -s - dh_compress -s - dh_fixperms -s - dh_makeshlibs -p libeditex0 - dh_installdeb -s - dh_shlibdeps -s - dh_gencontrol -s - dh_md5sums -s - dh_builddeb -s - -binary: binary-arch -.PHONY: build clean binary-arch binary install diff --git a/helm/DEVEL/mathml_editor/dict/.cvsignore b/helm/DEVEL/mathml_editor/dict/.cvsignore deleted file mode 100644 index 282522db0..000000000 --- a/helm/DEVEL/mathml_editor/dict/.cvsignore +++ /dev/null @@ -1,2 +0,0 @@ -Makefile -Makefile.in diff --git a/helm/DEVEL/mathml_editor/dict/Makefile.am b/helm/DEVEL/mathml_editor/dict/Makefile.am deleted file mode 100644 index f4246e40c..000000000 --- a/helm/DEVEL/mathml_editor/dict/Makefile.am +++ /dev/null @@ -1,2 +0,0 @@ -pkgdata_DATA = dictionary-basic.xml dictionary-test.xml dictionary-tex.xml dictionary.dtd -EXTRA_DIST = dictionary-basic.xml dictionary-test.xml dictionary-tex.xml dictionary.dtd diff --git a/helm/DEVEL/mathml_editor/dict/dictionary-basic.xml b/helm/DEVEL/mathml_editor/dict/dictionary-basic.xml deleted file mode 100644 index ed2e26461..000000000 --- a/helm/DEVEL/mathml_editor/dict/dictionary-basic.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/helm/DEVEL/mathml_editor/dict/dictionary-test.xml b/helm/DEVEL/mathml_editor/dict/dictionary-test.xml deleted file mode 100644 index 3fcc05694..000000000 --- a/helm/DEVEL/mathml_editor/dict/dictionary-test.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/helm/DEVEL/mathml_editor/dict/dictionary-tex.xml b/helm/DEVEL/mathml_editor/dict/dictionary-tex.xml deleted file mode 100644 index 47995454f..000000000 --- a/helm/DEVEL/mathml_editor/dict/dictionary-tex.xml +++ /dev/null @@ -1,378 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/helm/DEVEL/mathml_editor/dict/dictionary.dtd b/helm/DEVEL/mathml_editor/dict/dictionary.dtd deleted file mode 100644 index 3fefc71fe..000000000 --- a/helm/DEVEL/mathml_editor/dict/dictionary.dtd +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - diff --git a/helm/DEVEL/mathml_editor/doc/.cvsignore b/helm/DEVEL/mathml_editor/doc/.cvsignore deleted file mode 100644 index 44d749510..000000000 --- a/helm/DEVEL/mathml_editor/doc/.cvsignore +++ /dev/null @@ -1,5 +0,0 @@ -spec.aux -spec.dvi -spec.log -spec.ps -*~ diff --git a/helm/DEVEL/mathml_editor/doc/spec.tex b/helm/DEVEL/mathml_editor/doc/spec.tex deleted file mode 100644 index a9ccdc263..000000000 --- a/helm/DEVEL/mathml_editor/doc/spec.tex +++ /dev/null @@ -1,973 +0,0 @@ -\documentclass[10pt]{article} - -\usepackage{a4wide} -\usepackage{palatino} -\usepackage{euler} -\usepackage{amssymb} -\usepackage{stmaryrd} -\usepackage{wasysym} - -\title{\EdiTeX: a MathML Editor Based on \TeX{} Syntax\\\small Description and Formal Specification} -\author{Paolo Marinelli\\Luca Padovani\\\small\{{\tt pmarinel},{\tt lpadovan}\}{\tt @cs.unibo.it}\\\small Department of Computer Science\\\small University of Bologna} -\date{} - -\newcommand{\EdiTeX}{Edi\TeX} - -\newcommand{\tmap}[1]{\llbracket#1\rrbracket} -\newcommand{\tadvance}{\vartriangle} -\newcommand{\tnext}{\rhd} -\newcommand{\G}{\texttt{g}} -\newcommand{\PNODE}{\texttt{p}} -\newcommand{\SNODE}{\texttt{s}} -\newcommand{\INODE}{\texttt{i}} -\newcommand{\NNODE}{\texttt{n}} -\newcommand{\ONODE}{\texttt{o}} -\newcommand{\CNODE}{\texttt{c}} -\newcommand{\TABLE}{\texttt{table}} -\newcommand{\SP}{\texttt{sp}} -\newcommand{\SB}{\texttt{sb}} -\newcommand{\CELL}{\texttt{cell}} -\newcommand{\ROW}{\texttt{row}} -\newcommand{\SLDROP}{\blacktriangleleft} -\newcommand{\NLDROP}{\vartriangleleft} -\newcommand{\RDROP}{\vartriangleright} - -\begin{document} - -\maketitle - -\section{Introduction} - -MathML~\cite{MathML1,MathML2,MathML2E} is an XML application for the -representation of mathematical expressions. As most XML applications, -MathML is unsuitable to be hand-written, except for the simplest -cases, because of its verbosity. In fact, the MathML specification -explicitly states that -\begin{quote} -``While MathML is human-readable, it is anticipated that, in all but -the simplest cases, authors will use equation editors, conversion -programs, and other specialized software tools to generate MathML'' -\end{quote} - -The statement about human readability of MathML is already too strong, -as the large number of mathematical symbols, operators, and -diacritical marks that are used in mathematical notation cause MathML -documents to make extensive use of Unicode characters that typically -are not in the ``visible'' range of common text editors. Such -characters may appear as entity references, whose name indicates -somehow the kind of symbol used, or character references or they are -directly encoded in the document encoding scheme (for instance, -UTF-8). - -It is thus obvious that authoring MathML documents assumes the -assistance of dedicated tools. As of today, such tools can be -classified into two main categories: -\begin{enumerate} - \item WYSIWYG (What You See Is What You Get) editors that allow the - author to see the formatted document on the screen as it is - composed; - \item conversion tools that generate MathML markup from different - sources, typically other markup languages for scientific - documents, such as \TeX. -\end{enumerate} - -While the former tools are certainly more appealing, especially to the -unexperienced user, as they give a direct visual feedback, the -existance of tools in the second category takes into account the large -availability of existing documents in \TeX{} format, and also the fact -that experienced or ``lazy'' users may continue to prefer the use of a -markup language other than MathML for editing, and generate MathML -only as a final step of the authoring process. The ``laziness'' is not -really intended as a way of being reluctant towards a new technology, -but rather as a justified convincement that WYSIWYG editors are ``nice -to look at'' but after all they may slow down the authoring process. -WYSIWYG editors often involve the use of menus, palettes of symbols, -and, in general, an extensive use of the pointing device (the mouse) -for completing most operations. The use of shortcuts is of little -help, as it implies very soon a challenging exercise for the fingers -and the mind. Moreover, authors \emph{cannot improve} their authoring -speed with time. On the other side, the gap between the syntax of any -markup language for mathematics and mathematical notation may be -relevant, especially for large, non-trivial formulas and authoring is -a re-iterated process in which the author repeadtedly types the markup -in the editor, compiles, and looks at the result inside a pre-viewer. - -\EdiTeX{} tries to synthesize the ``best of both worlds'' in a single -tool. The basic idea is that of creating a WYSIWYG editor in which -editing is achieved by typing \TeX{} markup as the author would do in -a text editor. The \TeX{} markup is tokenized and parsed on-the-fly -and a corresponding MathML representation is created and -displayed. This way, the author can see the rendered document as it -changes. The advantages of this approach can be summarized as follows: -\begin{itemize} - \item the document is rendered concurrently with the editing, the - user has an immediate feedback hence it is easier to spot errors; - \item the author types in a concrete (and likely familiar) syntax - improving the editing speed; - \item the usual WYSIWYG mechanisms are still available. In - particular, it is possible to select \emph{visually} a fragment of - the document that needs re-editing, or that was left behind for - subsequent editing. -\end{itemize} - -\paragraph{The Name of the Game:} there is no reference to MathML in -the name ``\EdiTeX.'' In fact, the architecture of the editor is not -tied to MathML markup. Although we focus on MathML editing, by -changing a completely modularized component of the editor it is -virtually possible to generate any other markup language. - -\paragraph{Acknowledgments.} Stephen M. Watt and Igor Rodionov for -their work on the \TeX{} to MathML conversion tool; Stan Devitt for an -illuminating discussion about the architecture of \TeX{} to XML -conversion tools; Claudio Sacerdoti Coen for the valuable feedback and -uncountable bug reports. - -\section{Architecture} - -\section{Customization} - -\subsection{Short and Long Identifiers} - -\subsection{The Dictionary} - -\subsection{Stylesheets and Trasformations} - -\subsection{Rendering} - -\section{XML Representation of \TeX{} Markup} - -\section{Tokens} - -The following tokens are defined: - -\begin{tabular}{lllp{0.5\textwidth}} - \textbf{\TeX{}} & \textbf{Notation} & \textbf{Node} & \textbf{Description} \\ -\hline - \verb+{+ & $\mathrm{begin}$ & \texttt{g} & Beginning of a group \\ - \verb+}+ & $\mathrm{end}$ & & End of a group \\ - \verb+$+ & $\$$ & \texttt{math} & Math shift \\ %$ \\ - & & & End-of-line \\ - \verb+#+$i$ & $p(i)$ & \texttt{p} & Parameter \\ - \verb+^+ & $\uparrow$ & \texttt{sp} & Superscript \\ - \verb+_+ & $\downarrow$ & \texttt{sb} & Subscript \\ - & $\square$ & & Space-like character that can be ignored \\ - & $s$ & \texttt{s} & Space-like character that may be significant \\ - letter & $i(v)$ & \texttt{i} & Identifier $v$ \\ - digit & $n(v)$ & \texttt{n} & Number $v$ \\ - other & $o(v)$ & \texttt{o} & Other character or operator $v$ \\ - \verb+~+ & $\sim$ & & Active character \\ - \verb+%+ & $\%$ & & Comment \\ - control & $c(v)\langle\alpha_1,\dots,\alpha_n\rangle$ & \texttt{c} & - Control sequence $v$ that expects the $\alpha_1,\dots,\alpha_n$ sequence of tokens. \\ - backspace & $\vartriangleleft$ & & \\ - backspace & $\blacktriangleleft$ & & \\ -\end{tabular} - -%% Some tokens are mapped directly into nodes of the TML tree. The following functions shows -%% the mapping: - -\begin{tabular}{r@{\quad$=$\quad}l} - $\tmap{\{}$ & \verb+g+ \\ - $\tmap{p(i)}$ & \verb+p[@index=+$i$\verb+]+ \\ - $\tmap{p_l(i)}$ & \verb+p[@index=+$i$\verb+][@left-open='1']+ \\ - $\tmap{p_r(i)}$ & \verb+p[@index=+$i$\verb+][@right-open='1']+ \\ - $\tmap{s}$ & \verb+s+ \\ - $\tmap{\uparrow}$ & \verb+sp+ \\ - $\tmap{\downarrow}$ & \verb+sb+ \\ - $\tmap{i(v)}$ & \verb+i[@value=+$v$\verb+]+ \\ - $\tmap{n(v)}$ & \verb+n[@value=+$v$\verb+]+ \\ - $\tmap{o(v)}$ & \verb+o[@value=+$v$\verb+]+ \\ - $\tmap{c(v)\langle\alpha_1,\dots,\alpha_n\rangle}$ & \verb+c[@name=+$v$\verb+][^+$\tmap{\alpha_1}\cdots\tmap{\alpha_n}$\verb+$]+\\ -\end{tabular} -%$ - -\section{Description and Semantics of the Pattern Language} - -%% \begin{eqnarray*} -%% \mathit{NodeTest} & ::= & \mathtt{*} \\ -%% & | & \mathit{ElementType} \\ -%% & | & \mathtt{<}~\mathit{ElementTypePattern}~\mathtt{>} \\[1ex] -%% \mathit{ElementTypePattern} & ::= & \mathtt{*} \\ -%% & | & \mathit{ElementType}~(\mathtt{|}~\mathit{ElementType})^* \\ -%% & | & \mathtt{!}\mathit{ElementType}~(\mathtt{|}~\mathit{ElementType})^*\\[1ex] -%% \mathit{NodePattern} & ::= & \mathit{NodeTest}~\mathit{AttributeQualifier}^*\\[1ex] -%% \mathit{AttributeQualifier} & ::= & \mathtt{[@}\mathit{AttributeTest}\mathtt{]}\\ -%% & | & \mathtt{[!@}\mathit{AttributeTest}\mathtt{]}\\[1ex] -%% \mathit{AttributeTest} & ::= & \mathit{AttributeName} \\ -%% & | & \mathit{AttributeName}\mathtt{='}\mathit{Text}\mathtt{'} -%% \end{eqnarray*} - -\begin{table} -\[ -\begin{array}{rcl@{\hspace{3em}}rcl@{\hspace{3em}}rcl} - C &::=& . & Q &::=& \langle*\rangle & P &::=& P'\#P' \\ - &|& .. & &|& \langle!*\rangle & &|& \cent P'\#P'\\ - &|& / & &|& \langle n_1\mid\cdots\mid n_k\rangle & &|& P'\#P'\$\\%$ - &|& Q & &|& \langle!n_1\mid\cdots\mid n_k\rangle & &|& \cent P'\#P'\$\\%$ - &|& (C) & &|& Q[@n] & & &\\ - &|& \{C:\Gamma\} & &|& Q[!@n] & P' &::=& \\ - &|& C\&C & &|& Q[@n=v] & &|& C\;P'\\ - &|& C\mid C & &|& Q[!@n=v] & & &\\ - &|& C+ & &|& Q[P] & & &\\ - &|& C? & &|& Q[!P] & & &\\ - &|& C* & & & & & &\\ - &|& C\;C & & & & & &\\ - &|& !C & & & & & &\\ -\end{array} -\] -\caption{Syntax of the regular context language. $n$, $n_i$ denote -names, $v$ denotes a string enclosed in single or double quotes} -\end{table} - - -\section{Insert Rules} - -\paragraph{Begin Group:} $\{$ - -\begin{description} - \item{\verb+table/cursor+}\\ - create a \texttt{row} node, create a \texttt{cell} node, create a \texttt{g} node, - append the cursor to the \texttt{g} node, append the \texttt{g} node to the \texttt{cell} node, - append the \texttt{cell} node to the \texttt{row} node, append the \texttt{row} node to the - \texttt{c} node - \item{\verb+cursor+} \\ create a \texttt{g} node, replace the cursor with the new \texttt{g} node, - append the cursor to the new \texttt{g} node -\end{description} - -% CASE: c/g[!@id]/cursor - -% CASE: c/cursor - -% ELSE: - -% do_begin: -% CASE: c[@table='1']/cursor -% ELSE: -% create a g node with id, replace the cursor with the fresh g and append -% the cursor as only child of it - -\paragraph{End Group:} $\}$ - -\begin{description} - \item{\verb+g[@id]/cursor+}\\ - remove the cursor, put $\tadvance$ after the \texttt{g} node - \item{\verb+row/cell/g/cursor+}\\ - remove the cursor, put $\tadvance$ after the \texttt{row} node - \item{\verb+math/g[!@id]/cursor+}\\ - ? - \item{\verb+cursor+}\\ - error ? -\end{description} - -\paragraph{Math Shift:} $\$$ - -\begin{description} - \item{\verb+tex/cursor+}\\ - create a \texttt{math} node, create a \texttt{g} node, append the \texttt{g} node - as child of the \texttt{math} node, append the cursor as child of the \texttt{g} node - \item{\verb+math[@display='1']/g[!@id][*#]/cursor+}\\ - append the cursor as last child of the \texttt{math} node - \item{\verb+math/g[!@id][*#]/cursor+}\\ - remove the cursor - \item{\verb+math[!display='1']/g[!@id]/cursor+}\\ - set \verb+display='1'+ in the \texttt{math} node - \item{\verb+math/g[!@id]+}\\ - append the cursor after the \texttt{math} node - \item{\verb+math/cursor+}\\ - remove the cursor - \item{\verb+cursor+} \\ - error ? -\end{description} - -% do_shift: -% CASE: tex/cursor -% create a math node. create a g node. append g as child of math. -% append the cursor as child of g -% CASE: math[@display='1']/g[!@id][*#]/cursor -% append the cursor as last child of math -% CASE: math/g[!@id][*#]/cursor -% remove the cursor. Editing is done -% CASE: math[!display='1']/g[!@id]/cursor -% set the display attribute to '1' -% CASE: math/g[!@id] -% append the cursor after math (?) -% CASE: math/cursor -% remove the cursor. Editing is done -% ELSE: -% error - -\paragraph{Align:} $\&$ - -\begin{description} - \item{\verb+g[@id]/cursor+}\\ - create a \texttt{row} node, create a \texttt{cell} node, create a \texttt{g} node, - append the cursor to the new \texttt{g} node, append the \texttt{cell} node to the - the \texttt{row} node ? - \item{\verb+row/cell/g/cursor+}\\ - create the \texttt{g} node, create the \texttt{cell} node, append the cursor - as child of the new \texttt{g} node, append the new \texttt{g} node to the new - \texttt{cell} node after the old \texttt{cell} node - \item{\verb+cursor+}\\ - error -\end{description} - -% do_align: -% CASE: g[@id]/cursor -% create a row node. create a cell node. create a g node. append the -% cursor to g, append the g to cell, append the cell to row, ??? -% CASE: row/cell/g/cursor -% create a g node. create a cell node. appent the cursor to g, -% append the g to cell, insert the new cell after the existing cell -% ELSE: -% error - -\paragraph{End-of-line:} - -% do_eol: -% ignored - -\paragraph{Parameter:} $p(i)$ -% do_parameter: -% ignored - -\paragraph{Superscript:} $\uparrow$ - -\begin{description} - \item{\verb+[^#]/cursor+}\\ - create a \SP{} node, create a \G{} node, replace the cursor with the \SP{} node, - append the \G{} node as first child of the \SP{} node, append the cursor as last - child of the \SP{} node - \item{\verb+[*#]/cursor+}\\ - create a \SP{} node, replace \texttt{*} with the \SP{} node, append \texttt{*} to - the \SP{} node, append cursor to the \SP{} node - \item{\verb+sp[^*#$][!@over='1']/cursor+}\\ %$ - set \verb+over='1'+ in the \SP{} node - \item{\verb+sp[^*#$][@over='1']/cursor+}\\ %$ - error - \item{\verb+cursor+}\\ - error ? -\end{description} -% do_superscript: -% CASE: g[^#]/cursor -% create sp node. create g node, replace cursor with sp, append g to sp, append cursor to sp -% CASE: g[*#]/cursor -% create sp node, replace * with sp, append * to sp, append cursor to sp -% CASE: sp[^*#$][!@over='1']/cursor -% set over='1' in sp node -% CASE: sp[^*#$][@over='1']/cursor -% error -% ELSE: -% error ? - -\paragraph{Subscript:} $\downarrow$ - -\begin{description} - \item{\verb+[^#]/cursor+}\\ - create a \SB{} node, create a \G{} node, replace the cursor with the \SB{} node, - append the \G{} node as first child of the \SB{} node, append the cursor as last - child of the \SB{} node - \item{\verb+[*#]/cursor+}\\ - create a \SB{} node, replace \texttt{*} with the \SB{} node, append \texttt{*} to - the \SB{} node, append cursor to the \SB{} node - \item{\verb+sb[^*#$][!@under='1']/cursor+}\\ %$ - set \verb+under='1'+ in the \SB{} node - \item{\verb+sb[^*#$][@under='1']/cursor+}\\ %$ - error - \item{\verb+cursor+}\\ - error ? -\end{description} -% do_subscript: -% CASE: g[^#]/cursor -% create sb node. create g node, replace cursor with sb, append g to sb, append cursor to sb -% CASE: g[*#]/cursor -% create sb node, replace * with sb, append * to sb, append cursor to sb -% CASE: sb[^*#$][!@under='1']/cursor -% set over='1' in sb node -% CASE: sb[^*#$][@under='1']/cursor -% error -% ELSE: -% error ? - -\paragraph{Ignorable space:} $\square$ - -% do_ignorable_space: -% do nothing? - -\paragraph{Space:} $s$ - -\begin{description} - \item{\verb+cursor+}\\ - create \SNODE{} node, replace cursor with the \SNODE{} node, append - $\tadvance$ after \SNODE{} node -\end{description} - -% do_space -% create s node, replace cursor with s, append \advance after s - -\paragraph{Identifier:} $i(v)$ - -\begin{description} - \item{\verb+cursor+}\\ - create an \INODE{}, set \verb+value=+$v$ in the \INODE{}, replace - cursor with \INODE{}, append $\tadvance$ after the \INODE{} node -\end{description} - -% do_identifier -% create i node, replace cursor with i, append \advance after i - -\paragraph{Number:} $n(v)$ - -\begin{description} - \item{\verb+cursor+}\\ - create an \NNODE{}, set \verb+value=+$v$ in the \NNODE{}, replace - cursor with \NNODE{}, append $\tadvance$ after the \NNODE{} node -\end{description} - -% do_number -% create n node, replace cursor with n, append \advance after n - -\paragraph{Apostrophe:} $o({}')$ - -\begin{description} - \item{\verb+[(sp[*#$]/g[o[@name='prime']$])#]/cursor+}\\ - create a \ONODE{} node, set \verb+name='prime'+ in the \ONODE{}, - append the \ONODE{} to the innermost \G{} node - \item{\verb+[(sb[^sp[^*#$]/g[o[@name='prime']]$])#]/cursor+}\\ - create a \ONODE{} node, set \verb+name='prime'+ in the \ONODE{}, - append the \ONODE{} to the innermost \G{} node - \item{\verb+[*#]/cursor+}\\ - create a \ONODE{} node, set \verb+name='prime'+ in the \ONODE{}, - create a \SP{} node, create a \G{} node, replace \texttt{*} with \SP{} node, - append the new \G{} node to the \SP{} node, append the \ONODE{} - node to the new \G{} node - \item{\verb+[^#]/cursor+}\\ - error? - \item{\verb+cursor+}\\ - cursor is not in a group, error? -\end{description} - -% do_apostrophe -% CASE: g[(sp[^*#$]/g[o[@name='prime']$])#]/cursor -% append a new o[@name='prime'] node to the inner g node -% CASE: g[(sb[^sp[^*#$]/g[o[@name='prime']]$])#]/cursor -% append a new o[@name='prime'] node to the inner g node -% CASE: g[*#]/cursor -% create sp node, create g node, replace * with sp, append * to sp, append g to sp, -% append a new o[@name='prime'[ node to the new g node -% CASE: g[^#]/cursor -% error? -% ELSE: -% cursor is not in a group, error? - -\paragraph{Other:} $o(v)$ - -create an \ONODE{}, set \verb+value=+$v$ in the \ONODE{}, replace -cursor with \ONODE{}, append $\tadvance$ after the \ONODE{} node - -% do_other -% create o node, replace cursor with o, append \advance after o - -\paragraph{Active:} $\sim$ - -% do_active: -% ignored ??? - -\paragraph{Comment:} $\%$ - -% do_comment: -% ignored ??? - -\paragraph{Begin Environment:} $c(\mathtt{begin})\langle\alpha_1,\dots,\alpha_n\rangle$ - -\paragraph{End Environment:} $c(\mathtt{end})\langle\rangle$ - -\paragraph{Left Delimiter:} $c(\mathtt{left})\langle\alpha\rangle$ - -\paragraph{Right Delimiter:} $c(\mathtt{right})\langle\alpha\rangle$ - -\paragraph{Carriage-Return:} $c(\mathtt{cr})\langle\rangle$ - -\begin{description} - \item{\verb+row/cell/g/cursor+}\\ - create a \ROW{} node, create a \CELL{} node, create a \G{} - node, append the cursor to the new \G{} node, append the new \G{} - node to the new \CELL{} node, append the new \CELL{} node to the - new \ROW{} node, insert the new \ROW{} node after the old \ROW{} node - \item{\verb+cursor+}\\ - ignored? -\end{description} - -% do_cr: -% CASE: row/cell/g/cursor -% create row node, create cell node, create g node, -% append cursor to g, append g to cell, append cell to row, -% insert new row after old row -% ELSE: -% ignored ??? - -\paragraph{Macro:} $c(v)\langle\alpha_1,\dots,\alpha_n\rangle$ - -\begin{description} - \item{\verb+/cursor+}\\ - create a \CNODE{} node with the children corresponding to the pattern - $\tmap{\alpha_1}$,\dots,$\tmap{\alpha_n}$, replace the cursor with - the new \CNODE{} node. put $\tnext$ as the first child of the new - \CNODE{} node - - \item{\verb+*/cursor+}\\ - create a \CNODE{} node with the children corresponding to the pattern - $\tmap{\alpha_1}$,\dots,$\tmap{\alpha_n}$, replace the cursor with - the new \CNODE{} node, put $\tnext$ as the first child of the new - \CNODE{} node. If $n\ne0$ emit a warning (the macro has arguments but - but the context wouldn't normally allow them to be entered) -\end{description} - -% do_macro: -% CASE: g/cursor -% create a c node with children corresponding to the pattern of the macro -% append \nextparam as first child of the macro - -\section{Left Drop Rules} - -\paragraph{Normal Left Drop:} $\NLDROP$ - -\begin{description} - - \item{\verb+cursor+}\\ - replace the cursor with the $\NLDROP$. - -\end{description} - -\paragraph{Special Left Drop:} $\SLDROP$ - -\begin{description} - - \item{\verb+cursor+}\\ - replace the cursor with the $\SLDROP$. - -\end{description} - -\section{Right Drop Rules} - -\begin{description} - - \item{\verb+cursor+}\\ - replace the cursor with the $\RDROP$. - -\end{description} - -\section{$\varepsilon$-rules} - -\paragraph{Nromal Left Drop} - -\begin{description} - - \item{\verb+math/g[^#]/+$\NLDROP$}\\ - repalce the $\NLDROP$ with the cursor. - - %************************************************************************************** - %****************************** epsilon-rules with \NLDROP **************************** - %************************************************************************************** - - %************** \NLDROP has neither preceding nor following nodes ******************** - - \item{\verb+math[^#$]/+$\NLDROP$}\\ - replace the $\NLDROP$ with the cursor. - - \item{\verb+g[^#$]/+$\NLDROP$}\\ - replace the \G{} node with the $\NLDROP$. - - % this rule is overridden by the two ones below - \item{\verb+c/p[^#$]/+$\NLDROP$}\\ - remove the $\NLDROP$ and insert it before the \PNODE{} node. - - \item{\verb+c[p[@left-open='1'][*]#$]/p[@right-open='1'][^#$]/+$\NLDROP$}\\ - replace the \CNODE{} node with the content of the first \PNODE{} node and insert the $\NLDROP$ after this content - - \item{\verb+c[p[@left-open='1'][!*]#$]/p[@right-open='1'][^#$]/+$\NLDROP$}\\ - replace the \CNODE{} node with the $\NLDROP$. - - \item{\verb+c[^#][!p(*)]/+$\NLDROP$}\\ - replace the \CNODE{} node with the $\NLDROP$. - - \item{\verb+cell[^#$]/+$\NLDROP$}\\ - replace the cell with the $\NLDROP_n$. - - \item{\verb+table[^#$]/+$\NLDROP$}\\ - replace the \TABLE{} node with the $\NLDROP$. - - %************************* \NLDROP has at least one preceding node ********************* - - % general rules - - % this rule should also handles the case where the \NLDROP is the third (and last) child of a script. - \item{\verb+*[*#]/+$\NLDROP$}\\ - remove the $\NLDROP$ and append it as the last child of its ex preceding brother. - - % this rule overrides the one above - \item{\verb+*[(i|n|o|s|c[!*])#]/+$\NLDROP$}\\ - remove the $\NLDROP$ and replace the token with the $\NLDROP_n$. - - % special rules - - \item{\verb+[^*#$]+/$\NLDROP$}\\ - replace the script node with its first child and insert the $\NLDROP$ after it. - - % this rule overrides the one above. - \item{\verb+[^g[!@id][!*]#$]/+$\NLDROP$}\\ - replace the script with the cursor. - - % this rule overrides the one above - \item{\verb+*[sp[!@id][^*g[!@id][^o[@name='prime']++\verb+o[@name='prime']$]]#]/+$\NLDROP$}\\ - remove the last \ONODE{} node and replace the $\NLDROP$ with the cursor.%$\NLDROP_n$. - - \item{\verb+*[sp[!@id][^*g[!@id][^o[@name='prime']$]]#]/+$\NLDROP$}\\ - replace the script with its first child and replace the $\NLDROP$ with the cursor.%$\NLDROP_n$. - - \item{\verb+c[(i|n|o|s|c[!*])#]/+$\NLDROP$}\\ - move the $\NLDROP$ before the delimiter. - - % this rule is true for both right-open and parameterized macros. - \item{\verb+c[p#]/+$\NLDROP$}\\ - move the $\NLDROP$ into the \PNODE{} node. - - %**************** \NLDROP has no preceding nodes, but has following nodes ************** - - % general rule - \item{\verb+*[^#*]/+$\NLDROP$}\\ - remove the $\NLDROP$ and insert it before its parent. - - % special rules - - % this rule is applicable to all macros. - \item{\verb+c[^#][p[*]]/+$\NLDROP$}\\ - remove the $\NLDROP$ and insert it before the \CNODE{} node. - -\end{description} - -\paragraph{Special Left Drop} - -\begin{description} - - %******************************************************************************************************** - %************************************ epsilon-rules with \SLDROP **************************************** - %******************************************************************************************************** - - \item{\verb+math/+$\SLDROP$}\\ - replace the $\SLDROP$ with the cursor. - - \item{\verb+math/g[^#]/+$\NLDROP$}\\ - replace the $\NLDROP$ with the cursor. - - %************************ \SLDROP has neither preceding nor following nodes ***************************** - - \item{\verb+g[^#$]/+$\SLDROP$}\\ - replace the \G{} node with the cursor. - - \item{\verb+c[p[@left-open='1'][*]#$]/p[@right-open='1'][^#$]/+$\SLDROP$}\\ - replace the \CNODE{} node with the content of the first \PNODE{} node and insert the cursor after this content - - \item{\verb+c[p[@left-open='1'][!*]#$]/p[@right-open='1'][^#$]/+$\SLDROP$}\\ - replace the \CNODE{} node with the cursor. - - \item{\verb+c/p[^#$]/+$\SLDROP$}\\ - remove the $\SLDROP$ and insert it before the \PNODE{} node. - - \item{\verb+c[^#][!p(*)]/+$\SLDROP$}\\ - replace the \CNODE{} node with the cursor. - - \item{\verb+cell[^#$]/+$\SLDROP$}\\ - replace the cell with the $\NLDROP_n$. - - \item{\verb+table[^#$]/+$\SLDROP$}\\ - replace the \TABLE{} node with the cursor. - - %*********************** \SLDROP has at least one preceding node *********************************** - - \item{\verb+*[sp[!@id][^*g[!@id][^o[@name='prime']++\verb+o[@name='prime']$]]#]/+$\SLDROP$}\\ - remove the last \ONODE{} node and replace the $\SLDROP$ with the cursor. - - \item{\verb+*[sp[!@id][^*g[!@id][^o[@name='prime']$]]#]/+$\SLDROP$}\\ - replace the script with its first child and replace the $\SLDROP$ with the cursor.%$\NLDROP_n$. - - \item{\verb+[^g[!@id][!*]#$]/+$\SLDROP$}\\ - replace the script with the cursor. - - % this rule is overridden by the three rules above. - \item{\verb+[^*#$]+/$\SLDROP$}\\ - replace the script node with its first child and insert the cursor after it. - - \item{\verb+c[(i|n|o|s|c[!*])#]/+$\SLDROP$}\\ - remove the $\SLDROP$ and insert the cursor before the delimiter. - - \item{\verb+c[p#(i|n|o|s|c[!*])]/+$\SLDROP$}\\ - remove the $\SLDROP$ and insert the cursor into the \PNODE{} node. - - \item{\verb+c[p[@right-open='1']#]+}\\ - remove the $\SLDROP$ and append the curor as last child of the \PNODE{} node. - - % this rule is overridden by the two ones above. - \item{\verb+c[p#]/+$\SLDROP$}\\ - move the $\SLDROP$ into the \PNODE{} node. - - \item{\verb+*[(i|n|o|s|c[!*])#]/+$\SLDROP$}\\ - remove the $\SLDROP$ and replace the token with the cursor. - - \item{\verb+*[table#]/+$\SLDROP$}\\ - remove the $\SLDROP$ and append the $\NLDROP_n$ as the last child of the \TABLE{} node. - - \item{\verb+*[c#]/+$\SLDROP$}\\ - move the $\SLDROP$ into the \CNODE{} node. - - \item{\verb+*[g#]/+$\SLDROP$}\\ - remove the $\SLDROP$ and append the cursor as the last child of the \G{} node. - - %********** \SLDROP has no preceding node, but has following ones ************** - - \item{\verb+c[^#p][p(*)]/+$\SLDROP$}\\ - remove the $\SLDROP$ and insert the cursor before the \CNODE{} node. - - % general rule - \item{\verb+*[^#*]/+$\SLDROP$}\\ - remove the $\SLDROP$ and insert the cursor before its parent. - -\end{description} - -\paragraph{Normalize Left Drop} - -\begin{description} - - %**************************************************************************************** - %***************************** epsilon-rules with \NLDROP_n ***************************** - %**************************************************************************************** - - \item{\verb+*[*#]/+$\NLDROP_n$}\\ - replace the $\NLDROP_n$ with the cursor. - - \item{\verb+row[cell#]/+$\NLDROP_n$}\\ - remove the $\NLDROP_n$ and append the cursor as the last child of the \CELL{} node. - - \item{\verb+row[^#$]/+$\NLDROP_n$}\\ - replace the \ROW{} node with the $\NLDROP_n$ - - \item{\verb+table[row#]/+$\NLDROP_n$}\\ - remove the $\NLDROP_n$ and append it as last child of the \ROW{} node. - - \item{\verb+table[^#$]/+$\NLDROP_n$}\\ - replace the \TABLE{} with the cursor.%$\NLDROP_n$. - - \item{\verb+g[@id][^#$]/+$\NLDROP_n$}\\ - replace the \G{} node with the $\NLDROP_n$. - - \item{$\NLDROP_n$}\\ - replace the $\NLDROP_n$ with the cursor. - -\end{description} - -\paragraph{Right Drop} - -\begin{description} - - %************************* \RDROP has at least a following node **************************************** - - \item{\verb+c[#(i|n|o|s|c[!*])]/+$\RDROP$}\\ - remove the $\RDROP$ and append it after the delimiter - - \item{\verb+*[#(i|n|o|s|c[!*])]/+$\RDROP$}\\ - remove the token and replace the $\RDROP$ with the cursor $\RDROP_n$. - - % this rule is overridden by those ones above. - \item{\verb+*[#*]/+$\RDROP$}\\ - remove the $\RDROP$ and append it as the first child of the following node. - - %************************** \RDROP has neither following nor preceding nodes ****************************** - - \item{\verb+c[#$][!p[*]]/+$\RDROP$}\\ - replace the \CNODE{} with the $\RDROP$. - - \item{\verb+p[^#$]/+$\RDROP$}\\ - move the $\RDROP$ after the \PNODE{} node. - - \item{\verb+g[^#$]/+$\RDROP$}\\ - replace the \G{} node with the $\RDROP$. - -\end{description} - -\paragraph{Normalize Right Drop} - -\begin{description} - - % at the moment it's the only rule, defined for this symbol. - \item{\verb+g[@id][^#$]/+$\RDROP_n$}\\ - replace the \G{} node with the $\RDROP_n$. - - \item{$\RDROP_n$}\\ - replace the $\RDROP$ with the cursor. - -\end{description} - -\paragraph{Advance} - -\begin{description} - \item{\verb+g/+$\tadvance$}\\ - replace $\tadvance$ with the cursor - - \item{\verb+p[#$]/+$\tadvance$}\\ %$ - put $\tadvance$ after the \PNODE{} node - - \item{\verb+c[#p]/+$\tadvance$} \\ - remove $\tadvance$, put the cursor as first child of the \PNODE{} node - - \item{\verb+c[#*]/+$\tadvance$} \\ %$ - replace $\tadvance$ with the cursor - - \item{\verb+c[#$]/+$\tadvance$} \\ %$ - move $\tadvance$ after the \CNODE{} node -\end{description} - -\paragraph{Next Parameter} - -\paragraph{Next Token} - -%% \begin{description} -%% \item{\verb+c[#p]/+$\tnext$} \\ -%% \end{description} - -% g[@id]/(c[#$][@right-open]/g[!@id][#$]/)+cursor } let p = cursor.parent() in remove; advance(p) - -% c/g[!@id]/cursor -% c/cursor -% */cursor { let g = new group in replace - -% g[@id][^#$]/cursor <= cursor.parent().replace(cursor) -% g[@id][^#$]/cursor <- cursor -% (!g[@id][^#$])[A#B]/(g[@id][^#$]/)+cursor <- (!g[@id][^#$])[A#B]/cursor - -\clearpage -\appendix -\section{Semantics of the Regular Context Language} - -\newcommand{\CSEM}[2]{\mathcal{C}\llbracket#1\rrbracket#2} -\newcommand{\QSEM}[2]{\mathcal{Q}\llbracket#1\rrbracket#2} -\newcommand{\TSEMUP}[2]{\mathcal{T}^\uparrow\llbracket#1\rrbracket#2} -\newcommand{\TSEMDOWN}[2]{\mathcal{T}_\downarrow\llbracket#1\rrbracket#2} -\newcommand{\NSEM}[2]{\mathcal{N}\llbracket#1\rrbracket#2} -\newcommand{\PSEM}[1]{\mathcal{P}\llbracket#1\rrbracket} -\newcommand{\LSEM}[2]{\mathcal{L}\llbracket#1\rrbracket#2} -\newcommand{\RSEM}[2]{\mathcal{R}\llbracket#1\rrbracket#2} -\newcommand{\FSEM}[2]{\mathcal{F}\llbracket#1\rrbracket(#2)} -\newcommand{\PARENT}[1]{\mathit{parent}(#1)} -\newcommand{\CHILDREN}[1]{\mathit{children}(#1)} -\newcommand{\CHILD}[1]{\mathit{child}(#1)} -\newcommand{\ANCESTORS}[1]{\mathit{ancestors}(#1)} -\newcommand{\DESCENDANTS}[1]{\mathit{descendants}(#1)} -\newcommand{\HASATTRIBUTE}[2]{\mathit{hasAttribute}(#1,#2)} -\newcommand{\HASNOATTRIBUTE}[2]{\mathit{hasNoAttribute}(#1,#2)} -\newcommand{\ATTRIBUTE}[2]{\mathit{attribute}(#1,#2)} -\newcommand{\ISELEMENT}[1]{\mathit{isElement}(#1)} -\newcommand{\NAME}[1]{\mathit{name}(#1)} -\newcommand{\PREV}[1]{\mathit{prev}(#1)} -\newcommand{\NEXT}[1]{\mathit{next}(#1)} -\newcommand{\PREDICATE}[1]{\mathit{predicate}(#1)} -\newcommand{\IFV}[3]{\begin{array}[t]{@{}l}\mathbf{if}~#1~\mathbf{then}\\\quad#2\\\mathbf{else}\\\quad#3\end{array}} -\newcommand{\IFH}[3]{\mathbf{if}~#1~\mathbf{then}~#2~\mathbf{else}~#3} -\newcommand{\TRUE}{\mathbf{true}} -\newcommand{\FALSE}{\mathbf{false}} -\newcommand{\FUN}[2]{\lambda#1.#2} -\newcommand{\LET}[3]{\mathbf{let}~#1=#2~\mathbf{in}~#3} -\newcommand{\REC}[2]{\mathbf{rec}~#1=#2} -\newcommand{\APPLY}[2]{(#1\;#2)} -\newcommand{\APPLYX}[3]{(#1\;#2\;#3)} -\newcommand{\AND}{\wedge} -\newcommand{\OR}{\vee} -\newcommand{\AAND}{\,\vec{\AND}\,} -\newcommand{\AOR}{\,\vec{\OR}\,} -\newcommand{\MATCH}[4]{\begin{array}[t]{@{}c@{~\to~}l@{}l@{}}\multicolumn{2}{@{}l@{}}{\mathbf{match}~#1~\mathbf{with}}\\\phantom{|}\quad\{#2\}\\|\quad\emptyset\end{array}} - -\[ -\begin{array}{rcl} - \CSEM{q}{x} &=& \{x_1\mid x_1\in\{x\} \wedge \QSEM{q}{x_1}\}\\ - \CSEM{..}{x} &=& \PARENT{x}\\ - \CSEM{/}{x} &=& \CHILDREN{x}\\ - \CSEM{c_1\;c_2}{x} &=& \CSEM{c_2}{\CSEM{c_1}{x}}\\ - \CSEM{(c)}{x} &=& \CSEM{c}{x}\\ - \CSEM{\{c:\alpha\}}{x} &=& \alpha(x,\CSEM{c}{x})\\ - \CSEM{c_1\&c_2}{x} &=& \CSEM{c_1}{x} \cap \CSEM{c_2}{x}\\ - \CSEM{c_1\mid c_2}{x} &=& \CSEM{c_1}{x} \cup \CSEM{c_2}{x}\\ - \CSEM{c+}{x} &=& \CSEM{c}{x} \cup \CSEM{c+}{\CSEM{c}{x}}\\ - \CSEM{c?}{x} &=& \{x\}\cup\CSEM{c}{x}\\ - \CSEM{c*}{x} &=& \CSEM{{c+}?}{x}\\[3ex] - \QSEM{c}{x} &=& \CSEM{c}{x}\ne\emptyset\\ - \QSEM{!c}{x} &=& \CSEM{c}{x}=\emptyset\\ - \QSEM{\langle*\rangle}{x} &=& \TRUE\\ - \QSEM{\langle n\rangle}{x} &=& \NAME{x}=n\\ - \QSEM{@n}{x} &=& \HASATTRIBUTE{x}{n}\\ - \QSEM{@n=v}{x} &=& \ATTRIBUTE{x}{n}=v\\ - \QSEM{[p_1\#p_2]}{x} &=& \LSEM{p_1}{\PREV{x}}\wedge\RSEM{p_2}{\NEXT{x}}\\[3ex] - \LSEM{}{\alpha} &=& \TRUE\\ - \LSEM{\cent}{\alpha} &=& \alpha=\emptyset\\ - \LSEM{p\;q}{\emptyset} &=& \FALSE\\ - \LSEM{p\;q}{\{x\}} &=& \QSEM{q}{x}\wedge\LSEM{p}{\PREV{x}}\\[3ex] - \RSEM{}{\alpha} &=& \TRUE\\ - \RSEM{\$}{\alpha} &=& \alpha=\emptyset\\ - \RSEM{q\;p}{\emptyset} &=& \FALSE\\ - \RSEM{q\;p}{\{x\}} &=& \QSEM{q}{x}\wedge\RSEM{p}{\NEXT{x}}\\[3ex] - \PREDICATE{q} &=& \TRUE\\ - \PREDICATE{..} &=& \FALSE\\ - \PREDICATE{/} &=& \FALSE\\ - \PREDICATE{c_1\;c_2} &=& \PREDICATE{c_1}\wedge\PREDICATE{c_2}\\ - \PREDICATE{(c)} &=& \PREDICATE{c}\\ - \PREDICATE{c_1\&c_2} &=& \PREDICATE{c_1}\wedge\PREDICATE{c_2}\\ - \PREDICATE{c_1\mid c_2} &=& \PREDICATE{c_1}\wedge\PREDICATE{c_2}\\ - \PREDICATE{c+} &=& \PREDICATE{c}\\ - \PREDICATE{c?} &=& \PREDICATE{c}\\ - \PREDICATE{c*} &=& \PREDICATE{c} -\end{array} -\] - -\[ -\begin{array}{rcl} - \PSEM{q} &=& \FUN{x}{\APPLY{\QSEM{q}{}}{x}} \\ - \PSEM{..} &=& \FUN{x}{\neg\APPLY{\mathit{null}}{\PARENT{x}}}\\ - \PSEM{/} &=& \FUN{x}{\neg\APPLY{\mathit{null}}{\CHILD{x}}}\\ - \PSEM{(c)} &=& \PSEM{c}\\ - \PSEM{\{c:\alpha\}} &=& \FUN{x}{\APPLY{\PSEM{c}}{x}\AAND\APPLY{\alpha}{x}}\\ - \PSEM{c_1\;c_2} &=& \IFV{\PREDICATE{c_1}}{\FUN{x}{(\PSEM{c_1}\;x)\wedge(\PSEM{c_2}\;x)}}{\FSEM{c_1}{\PSEM{c_2},\FUN{\_}{\FALSE}}}\\ - \PSEM{c_1\&c_2} &=& \IFV{\PREDICATE{c_1}\wedge\PREDICATE{c_2}}{\FUN{x}{(\PSEM{c_1}\;x)\wedge(\PSEM{c_2}\;x)}}{\FSEM{c_1\&c_2}{\FUN{\_}{\TRUE},\FUN{\_}{\FALSE}}}\\ - \PSEM{c_1\mid c_2} &=& \FUN{x}{(\PSEM{c_1}\;x)\vee(\PSEM{c_2}\;x)}\\ - \PSEM{c+} &=& \PSEM{c}\\ - \PSEM{c?} &=& \FUN{\_}{\TRUE}\\ - \PSEM{c*} &=& \FUN{\_}{\TRUE}\\[3ex] - \FSEM{q}{t,f} &=& \FUN{x}{(\APPLY{\PSEM{q}}{x}\AAND\APPLY{t}{x})\AOR\APPLY{f}{x}}\\ - \FSEM{..}{t,f} &=& \FUN{x}{\MATCH{\PARENT{x}}{y}{\APPLY{t}{y}}{\APPLY{f}{x}}}\\ -% \FSEM{/}{t,f} &=& \FUN{x}{(\vee_{y\in\CHILDREN{x}} \APPLY{t}{y})\AOR\APPLY{f}{x}}\\ - \FSEM{/}{t,f} &=& \FUN{x}{\APPLYX{\mathit{exists}}{t}{\CHILD{x}}\AOR\APPLY{f}{x}}\\ - \FSEM{(c)}{t,f} &=& \FSEM{c}{t,f}\\ - \FSEM{\{c:\alpha\}}{t,f} &=& \FSEM{c}{\FUN{x}{\PSEM{c}\AAND\APPLY{\alpha}{x}\AAND\APPLY{t}{x},f}}\\ - \FSEM{c_1\;c_2}{t,f} &=& \FUN{x}{\APPLY{\FSEM{c_1}{\FSEM{c_2}{t,\FUN{\_}{\APPLY{f}{x}}},f}}{x}}\\ - \FSEM{c_1\&c_2}{t,f} &=& \FUN{x}{\APPLY{\FSEM{c_1}{\FUN{y}{\APPLY{\FSEM{c_2}{\FUN{z}{(y=z)\AAND\APPLY{t}{z}},\FUN{\_}{\APPLY{f}{x}}}}{x}},f}}{x}}\\ - \FSEM{c_1\mid c_2}{t,f} &=& \FSEM{c_1}{t,\FSEM{c_2}{t,f}}\\ - \FSEM{c+}{t,f} &=& \FSEM{c}{\FSEM{c+}{t,t},f}\\ - \FSEM{c?}{t,f} &=& \FSEM{c}{t,t}\\ - \FSEM{c*}{t,f} &=& \FSEM{{c+}?}{t,f}\\[3ex] - \QSEM{c}{} &=& \PSEM{c}\\ - \QSEM{!c}{} &=& \FUN{x}{\neg\APPLY{\PSEM{c}}{x}}\\ - \QSEM{\langle*\rangle}{} &=& \FUN{\_}{\TRUE}\\ - \QSEM{\langle n\rangle}{} &=& \FUN{x}{\NAME{x}=n}\\ - \QSEM{@n}{} &=& \FUN{x}{\HASATTRIBUTE{x}{n}}\\ - \QSEM{@n=v}{} &=& \FUN{x}{\ATTRIBUTE{x}{n}=v}\\ - \QSEM{[p_1\#p_2]}{} &=& \FUN{x}{\APPLY{\LSEM{p_1}{}}{\PREV{x}}\wedge\APPLY{\RSEM{p_2}{}}{\NEXT{x}}}\\[3ex] - \LSEM{}{} &=& \FUN{\_}{\TRUE}\\ - \LSEM{\cent}{} &=& \mathit{null}\\ - \LSEM{p\;q}{} &=& \FUN{x}{\MATCH{x}{y}{\QSEM{q}{y}\AAND\APPLY{\LSEM{p}}{\PREV{y}}}{\FALSE}}\\ - \RSEM{}{} &=& \FUN{\_}{\TRUE}\\ - \RSEM{\$}{} &=& \mathit{null}\\ - \RSEM{p\;q}{} &=& \FUN{x}{\MATCH{x}{y}{\QSEM{q}{y}\AAND\APPLY{\RSEM{p}}{\NEXT{y}}}{\FALSE}}\\ - \mathit{null} &=& \FUN{x}{\MATCH{x}{\_}{\FALSE}{\TRUE}}\\ - \mathit{exists} &=& \FUN{t}{\REC{a}{\FUN{x}{\MATCH{x}{y}{\APPLY{t}{y}\AOR\APPLY{a}{\NEXT{x}}}{\FALSE}}}} -\end{array} -\] - - - -\end{document} diff --git a/helm/DEVEL/mathml_editor/editex.pc.in b/helm/DEVEL/mathml_editor/editex.pc.in deleted file mode 100644 index 9e2c91bf4..000000000 --- a/helm/DEVEL/mathml_editor/editex.pc.in +++ /dev/null @@ -1,19 +0,0 @@ -# This is a comment -prefix=@prefix@ -exec_prefix=@exec_prefix@ -libdir=@libdir@ -includedir=@includedir@ -datadir=@datadir@ - -pkgdatadir=${datadir}/editex -default_dictionary=${pkgdatadir}/dictionary-tex.xml -default_mathml_xsl=${pkgdatadir}/tml-mmlp.xsl -default_tex_xsl=${pkgdatadir}/tml-tex.xsl - -Name: EdiTeX -Description: An XML/MathML editor based on TeX/LaTeX syntax -Version: @VERSION@ -Requires: glib -Libs: -L${libdir} -leditex -Cflags: -I${includedir}/editex - diff --git a/helm/DEVEL/mathml_editor/examples/.cvsignore b/helm/DEVEL/mathml_editor/examples/.cvsignore deleted file mode 100644 index 282522db0..000000000 --- a/helm/DEVEL/mathml_editor/examples/.cvsignore +++ /dev/null @@ -1,2 +0,0 @@ -Makefile -Makefile.in diff --git a/helm/DEVEL/mathml_editor/examples/Makefile.am b/helm/DEVEL/mathml_editor/examples/Makefile.am deleted file mode 100644 index 8de82fb70..000000000 --- a/helm/DEVEL/mathml_editor/examples/Makefile.am +++ /dev/null @@ -1 +0,0 @@ -EXTRA_DIST = abs.tex big.tex diff --git a/helm/DEVEL/mathml_editor/examples/abs.tex b/helm/DEVEL/mathml_editor/examples/abs.tex deleted file mode 100644 index 6cd86a144..000000000 --- a/helm/DEVEL/mathml_editor/examples/abs.tex +++ /dev/null @@ -1 +0,0 @@ -$|x|=\matrix{1&0\cr0&1}$ diff --git a/helm/DEVEL/mathml_editor/examples/big.tex b/helm/DEVEL/mathml_editor/examples/big.tex deleted file mode 100644 index 913a1a13c..000000000 --- a/helm/DEVEL/mathml_editor/examples/big.tex +++ /dev/null @@ -1 +0,0 @@ -$1+x+x^2+x^3+\cdots+x^n\over{\sqrt 1+y^{-1}+y^{-2}+y^{-3}+\cdots+y^{-m}}$ diff --git a/helm/DEVEL/mathml_editor/ocaml/.cvsignore b/helm/DEVEL/mathml_editor/ocaml/.cvsignore deleted file mode 100644 index cf4c41a0a..000000000 --- a/helm/DEVEL/mathml_editor/ocaml/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -META Makefile Makefile.in *.cm[ioax] *.cmxa *.lo *.la .deps .libs diff --git a/helm/DEVEL/mathml_editor/ocaml/.depend b/helm/DEVEL/mathml_editor/ocaml/.depend deleted file mode 100644 index ceb7476a9..000000000 --- a/helm/DEVEL/mathml_editor/ocaml/.depend +++ /dev/null @@ -1,3 +0,0 @@ -mathml_editor.cmo: i_mathml_editor.cmo mathml_editor.cmi -mathml_editor.cmx: i_mathml_editor.cmx mathml_editor.cmi -mathml_editor.cmi: i_mathml_editor.cmo diff --git a/helm/DEVEL/mathml_editor/ocaml/META.in b/helm/DEVEL/mathml_editor/ocaml/META.in deleted file mode 100644 index f3fe7899a..000000000 --- a/helm/DEVEL/mathml_editor/ocaml/META.in +++ /dev/null @@ -1,6 +0,0 @@ -requires="gdome2,gdome2-xslt" -version="@VERSION@" -archive(byte)="mlmathml-editor.cma" -archive(native)="mlmathml-editor.cmxa" -archive(byte,premethods)="i_mathml_editor.cmo mlmathml-editor.cma" -archive(native,premethods)="i_mathml_editor.cmx mlmathml-editor.cmxa" diff --git a/helm/DEVEL/mathml_editor/ocaml/Makefile.am b/helm/DEVEL/mathml_editor/ocaml/Makefile.am deleted file mode 100644 index cd0b51fa2..000000000 --- a/helm/DEVEL/mathml_editor/ocaml/Makefile.am +++ /dev/null @@ -1,97 +0,0 @@ -PKGNAME = mathml-editor -ARCHIVE = mlmathml-editor -REQUIRES = gdome2 gdome2-xslt -OCAMLFIND = @OCAMLFIND@ -OCAMLFLAGS = -I $(top_srcdir)/ocaml -OCAMLC = $(OCAMLFIND) @OCAMLC@ $(OCAMLFLAGS) -package "$(REQUIRES)" -OCAMLOPT = $(OCAMLFIND) @OCAMLOPT@ $(OCAMLFLAGS) -package "$(REQUIRES)" -OCAMLDEP = $(OCAMLFIND) @OCAMLDEP@ $(OCAMLFLAGS) -package "$(REQUIRES)" -if HAVE_SHAREDLIBS_COND -OCAMLMKLIBFLAGS = -else -OCAMLMKLIBFLAGS = -custom -endif -OCAMLMKLIB = @OCAMLMKLIB@ $(OCAMLMKLIBFLAGS) -DLL = dll$(ARCHIVE).so -OCAMLSTDLIBDIR = $(DESTDIR)/@OCAMLSTDLIBDIR@ -OCAMLSTUBDIR = $(DESTDIR)/@OCAMLSTUBDIR@ -OCAMLINSTALLDIR = $(OCAMLSTDLIBDIR)/$(PKGNAME) -MODULES = i_mathml_editor mathml_editor -INIT = -CMI_S = $(MODULES:%=%.cmi) -CMO_S = $(MODULES:%=%.cmo) -CMX_S = $(MODULES:%=%.cmx) -O_S = ml_mathml_editor.o c_mathml_editor.o -LO_S = $(O_S:%.o=%.lo) -SHARED_LIBS = $(GMETADOM_LIBS) $(GDOMEXSLT_LIBS) -lmlgdome2-xslt -lmlgdome -lstdc++ -L$(top_builddir)/src/.libs/ -leditex -BYTE_STUFF = i_mathml_editor.cmi mathml_editor.cmi $(ARCHIVE).cma $(DLL) lib$(ARCHIVE).a -NATIVE_STUFF = $(ARCHIVE).cmxa $(ARCHIVE).a -BYTE_INSTALL_STUFF = $(BYTE_STUFF) META mathml_editor.mli -NATIVE_INSTALL_STUFF = $(NATIVE_STUFF) - -EXTRA_DIST = \ - META.in mathml_editor.ml mathml_editor.mli i_mathml_editor.ml \ - c_mathml_editor.h .depend - -if HAVE_OCAMLOPT_COND -noinst_DATA = $(BYTE_STUFF) $(NATIVE_STUFF) -else -noinst_DATA = $(BYTE_STUFF) -endif - -noinst_LTLIBRARIES = libmlmathml-editor.la -libmlmathml_editor_la_SOURCES = \ - c_mathml_editor.cc \ - ml_mathml_editor.c - -if HAVE_OCAMLOPT_COND -install-data-local: $(BYTE_INSTALL_STUFF) $(NATIVE_INSTALL_STUFF) -else -install-data-local: $(BYTE_INSTALL_STUFF) -endif - $(mkinstalldirs) $(OCAMLSTDLIBDIR) $(OCAMLSTUBDIR) - chmod -x $(DLL) - $(OCAMLFIND) install -destdir $(OCAMLSTDLIBDIR) $(PKGNAME) $^ - ln -fs $(DLL) $(OCAMLSTUBDIR)/lib$(ARCHIVE).so - -CLEANFILES = \ - $(ARCHIVE).{cma,cmxa,a} $(CMI_S) $(CMO_S) $(CMX_S) ml_mathml_editor.o \ - $(DLL) $(INIT).cm[iox] libmlmathml-editor.a - -INCLUDES = \ - $(GDOME_CFLAGS) $(MLGDOME_CFLAGS) \ - $(GMETADOM_CFLAGS) $(GDOMEXSLT_CFLAGS) \ - -I$(top_srcdir)/src - -$(ARCHIVE).cma: $(CMO_S) - $(OCAMLMKLIB) -o $(ARCHIVE) -L@OCAMLSTUBDIR@ $(CMO_S) $(SHARED_LIBS) - -$(ARCHIVE).cmxa: $(CMX_S) - $(OCAMLMKLIB) -o $(ARCHIVE) -L@OCAMLSTUBDIR@ $(CMX_S) $(SHARED_LIBS) - -# use .lo for ocamlmklib -$(DLL) $(ARCHIVE).a: $(LO_S) - for f in $(LO_S); do \ - cp $$f $$f.o; \ - done - $(OCAMLMKLIB) -o $(ARCHIVE) -L@OCAMLSTUBDIR@ $(SHARED_LIBS) $(LO_S:%=%.o) - for f in $(LO_S:%=%.o); do \ - rm $$f; \ - done - -%.cmi: %.mli - $(OCAMLC) -c $< -%.cmo %.cmi: %.ml - $(OCAMLC) -c $< -%.cmx: %.ml %.cmi - $(OCAMLOPT) -c $< - -i_mathml_editor.cmo: i_mathml_editor.ml - $(OCAMLC) -c $< -i_mathml_editor.cmx: i_mathml_editor.ml - $(OCAMLOPT) -c $< - -depend: *.ml - $(OCAMLDEP) *.ml *.mli >.depend -include .depend - diff --git a/helm/DEVEL/mathml_editor/ocaml/c_mathml_editor.cc b/helm/DEVEL/mathml_editor/ocaml/c_mathml_editor.cc deleted file mode 100644 index 25759823b..000000000 --- a/helm/DEVEL/mathml_editor/ocaml/c_mathml_editor.cc +++ /dev/null @@ -1,224 +0,0 @@ -/* This file is part of EdiTeX, an editor of mathematical - * expressions based on TeX syntax. - * - * Copyright (C) 2002-2003 Luca Padovani , - * 2003 Paolo Marinelli . - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please visit the project's home page - * http://helm.cs.unibo.it/editex/ - * or send an email to - */ - -#include -#include - -#include "ALogger.hh" -#include "TDictionary.hh" -#include "CMathMLFactoryXSLT.hh" -#include "TPushLexer.hh" -#include "LPushLexer.hh" -#include "TPushParser.hh" - -class CCallbackLogger : public ALogger -{ -public: - CCallbackLogger(void (*)(int, const char*, void*), void*); - virtual ~CCallbackLogger() { }; - -protected: - virtual void message(Level, const std::string&); - -private: - void (*callback)(int, const char*, void*); - void* user_data; -}; - -CCallbackLogger::CCallbackLogger(void (*cb)(int, const char*, void*), void* data) : callback(cb), user_data(data) -{ - assert(callback); -} - -void -CCallbackLogger::message(Level l, const std::string& s) -{ - assert(callback); - callback(l, s.c_str(), user_data); -} - -struct Editor -{ - Editor(const char*, const char*, const char*, void (*)(int, const char*, void*), void*, bool); - ~Editor(); - - ALogger* logger; - TDictionary* dictionary; - DOMX::XSLTStylesheet* tml_mml; - DOMX::XSLTStylesheet* tml_tex; - AMathMLFactory* factory; - TPushParser* parser; - APushLexer* lexer; -}; - -Editor::Editor(const char* dict_uri, const char* mml_uri, const char* tex_uri, - void (*cb)(int, const char*, void*), void* data, bool alt) -{ - assert(dict_uri); - assert(mml_uri); - assert(tex_uri); - assert(cb); - logger = new CCallbackLogger(cb, data); - dictionary = new TDictionary(*logger); - dictionary->load(dict_uri); - DOM::DOMImplementation di; - DOM::Document mml = di.createDocumentFromURI(mml_uri); - DOM::Document tex = di.createDocumentFromURI(tex_uri); - tml_mml = new DOMX::XSLTStylesheet(mml); - tml_tex = new DOMX::XSLTStylesheet(tex); - factory = new CMathMLFactoryXSLT(*logger, *tml_mml); - parser = new TPushParser(*logger, *factory, *dictionary); - if (alt) lexer = new LPushLexer(*logger, *parser); - else lexer = new TPushLexer(*logger, *parser); -} - -Editor::~Editor() -{ - delete lexer; - delete parser; - delete factory; - delete tml_tex; - delete tml_mml; - delete dictionary; - delete logger; -} - -extern "C" const char* -c_mathml_editor_get_default_dictionary_path() -{ - return TDictionary::getDefaultDictionaryPath().c_str(); -} - -extern "C" const char* -c_mathml_editor_get_default_mathml_stylesheet_path() -{ - return AMathMLFactory::getDefaultMathMLStylesheetPath().c_str(); -} - -extern "C" const char* -c_mathml_editor_get_default_tex_stylesheet_path() -{ - return AMathMLFactory::getDefaultTeXStylesheetPath().c_str(); -} - -extern "C" Editor* -c_mathml_editor_new(bool alt, - const char* dictionary_uri, - const char* tml_mml_uri, - const char* tml_tex_uri, - void (*log_message_cb)(int, const char*, void*), - void* user_data) -{ - return new Editor(dictionary_uri, tml_mml_uri, tml_tex_uri, log_message_cb, user_data, alt); -} - -extern "C" void -c_mathml_editor_destroy(Editor* editor) -{ - assert(editor); - delete editor; -} - -extern "C" int -c_mathml_editor_freeze(Editor* editor) -{ - assert(editor); - return editor->parser->freeze(); -} - -extern "C" int -c_mathml_editor_thaw(Editor* editor) -{ - assert(editor); - return editor->parser->thaw(); -} - -extern "C" void -c_mathml_editor_push(Editor* editor, char ch) -{ - assert(editor); - editor->lexer->push(ch); -} - -extern "C" void -c_mathml_editor_drop(Editor* editor, int alt) -{ - assert(editor); - editor->lexer->drop(alt != 0); -} - -extern "C" int -c_mathml_editor_cursor_hide(Editor* editor) -{ - assert(editor); - return editor->parser->hideCursor(); -} - -extern "C" int -c_mathml_editor_cursor_show(Editor* editor) -{ - assert(editor); - return editor->parser->showCursor(); -} - -extern "C" char* -c_mathml_editor_get_tex(const Editor* editor) -{ - assert(editor); - DOM::Document res = editor->tml_tex->apply(editor->parser->document()); - assert(res); - res.normalize(); - assert(res.get_firstChild() && res.get_firstChild().get_nodeName() == "#text"); - return strdup(std::string(res.get_firstChild().get_nodeValue()).c_str()); -} - -extern "C" void -c_mathml_editor_reset(Editor* editor) -{ - assert(editor); - editor->lexer->reset(); - editor->parser->reset(); -} - -extern "C" GdomeDocument* -c_mathml_editor_get_tml(const Editor* editor) -{ - assert(editor); - GdomeNode* n = editor->parser->document().cloneNode(true).gdome_object(); - GdomeDocument* doc = gdome_cast_doc(n); - assert(n && doc); - return doc; -} - -extern "C" GdomeDocument* -c_mathml_editor_get_mml(const Editor* editor) -{ - assert(editor); - GdomeNode* n = editor->factory->document().gdome_object(); - GdomeDocument* doc = gdome_cast_doc(n); - assert(n && doc); - return doc; -} - diff --git a/helm/DEVEL/mathml_editor/ocaml/c_mathml_editor.h b/helm/DEVEL/mathml_editor/ocaml/c_mathml_editor.h deleted file mode 100644 index cb01155ad..000000000 --- a/helm/DEVEL/mathml_editor/ocaml/c_mathml_editor.h +++ /dev/null @@ -1,49 +0,0 @@ -/* This file is part of EdiTeX, an editor of mathematical - * expressions based on TeX syntax. - * - * Copyright (C) 2002-2003 Luca Padovani , - * 2003 Paolo Marinelli . - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please visit the project's home page - * http://helm.cs.unibo.it/editex/ - * or send an email to - */ - -#ifndef __c_mathml_editor_h__ -#define __c_mathml_editor_h__ - -#include - -typedef struct Editor Editor; - -const char* c_mathml_editor_get_default_dictionary_path(void); -const char* c_mathml_editor_get_default_mathml_stylesheet_path(void); -const char* c_mathml_editor_get_default_tex_stylesheet_path(void); -Editor* c_mathml_editor_new(int, const char*, const char*, const char*, void (*)(int, const char*, void*), void*); -void c_mathml_editor_destroy(Editor*); -int c_mathml_editor_freeze(Editor*); -int c_mathml_editor_thaw(Editor*); -void c_mathml_editor_reset(Editor*); -void c_mathml_editor_push(Editor*, char); -void c_mathml_editor_drop(Editor*, int); -int c_mathml_editor_cursor_hide(Editor*); -int c_mathml_editor_cursor_show(Editor*); -char* c_mathml_editor_get_tex(const Editor*); -GdomeDocument* c_mathml_editor_get_tml(const Editor*); -GdomeDocument* c_mathml_editor_get_mml(const Editor*); - -#endif /* __c_mathml_editor_h__ */ diff --git a/helm/DEVEL/mathml_editor/ocaml/i_mathml_editor.ml b/helm/DEVEL/mathml_editor/ocaml/i_mathml_editor.ml deleted file mode 100644 index d865898d6..000000000 --- a/helm/DEVEL/mathml_editor/ocaml/i_mathml_editor.ml +++ /dev/null @@ -1,76 +0,0 @@ -(* This file is part of EdiTeX, an editor of mathematical - * expressions based on TeX syntax. - * - * Copyright (C) 2002-2003 Luca Padovani , - * 2003 Paolo Marinelli . - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please visit the project's home page - * http://helm.cs.unibo.it/editex/ - * or send an email to - *) - -type t - -external get_default_dictionary_path : unit -> string - = "ml_mathml_editor_get_default_dictionary_path" - -external get_default_mathml_stylesheet_path : unit -> string - = "ml_mathml_editor_get_default_mathml_stylesheet_path" - -external get_default_tex_stylesheet_path : unit -> string - = "ml_mathml_editor_get_default_tex_stylesheet_path" - -external raw_create : - alt_lexer:bool -> - dictionary_uri: string -> - mml_uri: string -> - tml_uri: string -> - log:(int -> string -> unit) -> - t - = "ml_mathml_editor_new" -let create ?(alt_lexer=false) = raw_create ~alt_lexer - -external freeze : editor:t -> bool - = "ml_mathml_editor_freeze" - -external thaw : editor:t -> bool - = "ml_mathml_editor_thaw" - -external reset : editor:t -> unit - = "ml_mathml_editor_reset" - -external push : editor:t -> ch:char -> unit - = "ml_mathml_editor_push" - -external drop : editor:t -> alt:bool -> unit - = "ml_mathml_editor_drop" - -external cursor_hide : editor:t -> unit - = "ml_mathml_editor_cursor_hide" - -external cursor_show : editor:t -> unit - = "ml_mathml_editor_cursor_show" - -external get_tex : editor:t -> string - = "ml_mathml_editor_get_tex" - -external get_tml : editor:t -> TDocument.t - = "ml_mathml_editor_get_tml" - -external get_mml : editor:t -> TDocument.t - = "ml_mathml_editor_get_mml" - diff --git a/helm/DEVEL/mathml_editor/ocaml/mathml_editor.ml b/helm/DEVEL/mathml_editor/ocaml/mathml_editor.ml deleted file mode 100644 index a49ea436e..000000000 --- a/helm/DEVEL/mathml_editor/ocaml/mathml_editor.ml +++ /dev/null @@ -1,70 +0,0 @@ -(* This file is part of EdiTeX, an editor of mathematical - * expressions based on TeX syntax. - * - * Copyright (C) 2002-2003 Luca Padovani , - * 2003 Paolo Marinelli . - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please visit the project's home page - * http://helm.cs.unibo.it/editex/ - * or send an email to - *) - -let default_dictionary_path = I_mathml_editor.get_default_dictionary_path () -;; - -let default_mathml_stylesheet_path = I_mathml_editor.get_default_mathml_stylesheet_path () -;; - -let default_tex_stylesheet_path = I_mathml_editor.get_default_tex_stylesheet_path () -;; - -let create ?(alt_lexer=false) ~dictionary_uri ~mml_uri ~tml_uri ~log = - I_mathml_editor.create ~alt_lexer ~dictionary_uri ~mml_uri ~tml_uri ~log -;; - -let freeze = I_mathml_editor.freeze -;; - -let thaw = I_mathml_editor.thaw -;; - -let reset = I_mathml_editor.reset -;; - -let push = I_mathml_editor.push -;; - -let drop = I_mathml_editor.drop -;; - -let cursor_hide = I_mathml_editor.cursor_hide -;; - -let cursor_show = I_mathml_editor.cursor_show -;; - -let get_tex = I_mathml_editor.get_tex -;; - -let get_tml ~editor = - new Gdome.document (I_mathml_editor.get_tml ~editor) -;; - -let get_mml ~editor = - new Gdome.document (I_mathml_editor.get_mml ~editor) -;; - diff --git a/helm/DEVEL/mathml_editor/ocaml/mathml_editor.mli b/helm/DEVEL/mathml_editor/ocaml/mathml_editor.mli deleted file mode 100644 index aa0278522..000000000 --- a/helm/DEVEL/mathml_editor/ocaml/mathml_editor.mli +++ /dev/null @@ -1,50 +0,0 @@ -(* This file is part of EdiTeX, an editor of mathematical - * expressions based on TeX syntax. - * - * Copyright (C) 2002-2003 Luca Padovani , - * 2003 Paolo Marinelli . - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please visit the project's home page - * http://helm.cs.unibo.it/editex/ - * or send an email to - *) - -val default_dictionary_path : string -val default_mathml_stylesheet_path : string -val default_tex_stylesheet_path : string - -val create : - ?alt_lexer:bool -> - dictionary_uri: string -> - mml_uri: string -> - tml_uri: string -> - log:(int -> string -> unit) -> I_mathml_editor.t - -val freeze : editor:I_mathml_editor.t -> bool -val thaw : editor:I_mathml_editor.t -> bool - -val reset : editor:I_mathml_editor.t -> unit -val push : editor:I_mathml_editor.t -> ch:char -> unit -val drop : editor:I_mathml_editor.t -> alt:bool -> unit - -val cursor_hide : editor:I_mathml_editor.t -> unit -val cursor_show : editor:I_mathml_editor.t -> unit - -val get_tex : editor:I_mathml_editor.t -> string -val get_tml : editor:I_mathml_editor.t -> Gdome.document -val get_mml : editor:I_mathml_editor.t -> Gdome.document - diff --git a/helm/DEVEL/mathml_editor/ocaml/ml_mathml_editor.c b/helm/DEVEL/mathml_editor/ocaml/ml_mathml_editor.c deleted file mode 100644 index c74dfd01c..000000000 --- a/helm/DEVEL/mathml_editor/ocaml/ml_mathml_editor.c +++ /dev/null @@ -1,210 +0,0 @@ -/* This file is part of EdiTeX, an editor of mathematical - * expressions based on TeX syntax. - * - * Copyright (C) 2002-2003 Luca Padovani , - * 2003 Paolo Marinelli . - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please visit the project's home page - * http://helm.cs.unibo.it/editex/ - * or send an email to - */ - -#include - -#include -#include -#include - -#include "mlgdomevalue.h" - -#include "c_mathml_editor.h" - -typedef struct -{ - Editor* c_editor; - value callback; -} ml_Editor; - -ml_Editor* -Editor_val(value v) -{ - ml_Editor* editor = *((ml_Editor**) Data_custom_val(v)); - assert(editor != NULL); - return editor; -} - -static void -ml_mathml_editor_finalize(value v) -{ - ml_Editor* editor = Editor_val(v); - assert(editor); - - remove_global_root(&editor->callback); - c_mathml_editor_destroy(editor->c_editor); - free(editor); -} - -static void -ml_mathml_editor_log_callback(int level, const char* msg, void* user_data) -{ - ml_Editor* ml_editor = (ml_Editor*) user_data; - assert(ml_editor); - callback2(ml_editor->callback, Val_int(level), copy_string(msg)); -} - -value -ml_mathml_editor_get_default_dictionary_path(value unit) -{ - CAMLparam1(unit); - CAMLreturn(copy_string(c_mathml_editor_get_default_dictionary_path())); -} - -value -ml_mathml_editor_get_default_mathml_stylesheet_path(value unit) -{ - CAMLparam1(unit); - CAMLreturn(copy_string(c_mathml_editor_get_default_mathml_stylesheet_path())); -} - -value -ml_mathml_editor_get_default_tex_stylesheet_path(value unit) -{ - CAMLparam1(unit); - CAMLreturn(copy_string(c_mathml_editor_get_default_tex_stylesheet_path())); -} - -value -ml_mathml_editor_new(value alt, - value dictionary_uri, - value tml_mml_uri, - value tml_tex_uri, - value log_message_cb) -{ - static struct custom_operations ops = - { - "HELM/MathML Editor", - ml_mathml_editor_finalize, - custom_compare_default, - custom_hash_default, - custom_serialize_default, - custom_deserialize_default - }; - - value v = alloc_custom(&ops, sizeof(ml_Editor*), 0, 1); - ml_Editor** ml_editor_ref = (ml_Editor**) Data_custom_val(v); - ml_Editor* ml_editor = *ml_editor_ref = malloc(sizeof(ml_Editor)); - ml_editor->c_editor = c_mathml_editor_new(Bool_val(alt), - String_val(dictionary_uri), - String_val(tml_mml_uri), - String_val(tml_tex_uri), - ml_mathml_editor_log_callback, - (void*) ml_editor); - ml_editor->callback = log_message_cb; - register_global_root(&ml_editor->callback); - - return v; -} - -value -ml_mathml_editor_freeze(value v) -{ - CAMLparam1(v); - ml_Editor* editor = Editor_val(v); - CAMLreturn(Val_bool(c_mathml_editor_freeze(editor->c_editor))); -} - -value -ml_mathml_editor_thaw(value v) -{ - CAMLparam1(v); - ml_Editor* editor = Editor_val(v); - CAMLreturn(Val_bool(c_mathml_editor_thaw(editor->c_editor))); -} - -value -ml_mathml_editor_push(value v, value ch) -{ - CAMLparam2(v, ch); - ml_Editor* editor = Editor_val(v); - c_mathml_editor_push(editor->c_editor, Int_val(ch)); - CAMLreturn(Val_unit); -} - -value -ml_mathml_editor_drop(value v, value alt) -{ - CAMLparam2(v, alt); - ml_Editor* editor = Editor_val(v); - c_mathml_editor_drop(editor->c_editor, Bool_val(alt)); - CAMLreturn(Val_unit); -} - -value -ml_mathml_editor_cursor_hide(value v) -{ - CAMLparam1(v); - ml_Editor* editor = Editor_val(v); - CAMLreturn(Val_bool(c_mathml_editor_cursor_hide(editor->c_editor))); -} - -value -ml_mathml_editor_cursor_show(value v) -{ - CAMLparam1(v); - ml_Editor* editor = Editor_val(v); - CAMLreturn(Val_bool(c_mathml_editor_cursor_show(editor->c_editor))); -} - -value -ml_mathml_editor_get_tex(value v) -{ - CAMLparam1(v); - ml_Editor* editor = Editor_val(v); - char* res = c_mathml_editor_get_tex(editor->c_editor); - CAMLlocal1(ml_res); - ml_res = copy_string(res); - free(res); - CAMLreturn(ml_res); -} - -value -ml_mathml_editor_reset(value v, value s) -{ - CAMLparam1(v); - ml_Editor* editor = Editor_val(v); - c_mathml_editor_reset(editor->c_editor); - CAMLreturn(Val_unit); -} - -value -ml_mathml_editor_get_tml(value v) -{ - CAMLparam1(v); - ml_Editor* editor = Editor_val(v); - GdomeDocument* doc = c_mathml_editor_get_tml(editor->c_editor); - CAMLreturn(Val_Document(doc)); -} - -value -ml_mathml_editor_get_mml(value v) -{ - CAMLparam1(v); - ml_Editor* editor = Editor_val(v); - GdomeDocument* doc = c_mathml_editor_get_mml(editor->c_editor); - CAMLreturn(Val_Document(doc)); -} - diff --git a/helm/DEVEL/mathml_editor/src/.cvsignore b/helm/DEVEL/mathml_editor/src/.cvsignore deleted file mode 100644 index 332956c5c..000000000 --- a/helm/DEVEL/mathml_editor/src/.cvsignore +++ /dev/null @@ -1,9 +0,0 @@ -*~ -*.lo -*.o -*.la -.deps -.libs -Makefile -Makefile.in -config.dirs diff --git a/helm/DEVEL/mathml_editor/src/ALogger.hh b/helm/DEVEL/mathml_editor/src/ALogger.hh deleted file mode 100644 index 7843dbc88..000000000 --- a/helm/DEVEL/mathml_editor/src/ALogger.hh +++ /dev/null @@ -1,53 +0,0 @@ -/* This file is part of EdiTeX, an editor of mathematical - * expressions based on TeX syntax. - * - * Copyright (C) 2002-2003 Luca Padovani , - * 2003 Paolo Marinelli . - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please visit the project's home page - * http://helm.cs.unibo.it/editex/ - * or send an email to - */ - -#ifndef __ALogger_hh__ -#define __ALogger_hh__ - -#include - -class ALogger -{ -public: - enum Level { Error, Warning, Info, Debug }; - - ALogger(void) { level = Error; } - virtual ~ALogger() { } - void debug(const std::string& msg) { if (level >= Debug) message(Debug, msg); } - void info(const std::string& msg) { if (level >= Info) message(Info, msg); } - void warning(const std::string& msg) { if (level >= Warning) message(Warning, msg); } - void error(const std::string& msg) { if (level >= Error) message(Error, msg); } - - Level verbosity(void) const { return level; } - void verbosity(Level lvl) { level = lvl; } - -protected: - virtual void message(Level, const std::string&) = 0; - -private: - Level level; -}; - -#endif // __ALogger_hh__ diff --git a/helm/DEVEL/mathml_editor/src/AMathMLConsumer.hh b/helm/DEVEL/mathml_editor/src/AMathMLConsumer.hh deleted file mode 100644 index ee5e12690..000000000 --- a/helm/DEVEL/mathml_editor/src/AMathMLConsumer.hh +++ /dev/null @@ -1,38 +0,0 @@ - -/* This file is part of EdiTeX, an editor of mathematical - * expressions based on TeX syntax. - * - * Copyright (C) 2002-2003 Luca Padovani , - * 2003 Paolo Marinelli . - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please visit the project's home page - * http://helm.cs.unibo.it/editex/ - * or send an email to - */ - -#ifndef __AMathMLConsumer_hh__ -#define __AMathMLConsumer_hh__ - -class AMathMLConsumer -{ -public: - AMathMLConsumer(void) { }; - virtual ~AMathMLConsumer() { }; - virtual void documentModified(const DOM::Document&) = 0; -}; - -#endif // __AMathMLConsumer_hh__ diff --git a/helm/DEVEL/mathml_editor/src/AMathMLFactory.cc b/helm/DEVEL/mathml_editor/src/AMathMLFactory.cc deleted file mode 100644 index b9826352b..000000000 --- a/helm/DEVEL/mathml_editor/src/AMathMLFactory.cc +++ /dev/null @@ -1,42 +0,0 @@ -/* This file is part of EdiTeX, an editor of mathematical - * expressions based on TeX syntax. - * - * Copyright (C) 2002-2003 Luca Padovani , - * 2003 Paolo Marinelli . - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please visit the project's home page - * http://helm.cs.unibo.it/editex/ - * or send an email to - */ - -#include - -#include "config.dirs" -#include "AMathMLFactory.hh" - -std::string -AMathMLFactory::getDefaultMathMLStylesheetPath() -{ - return PKGDATADIR"/tml-mmlp.xsl"; -} - -std::string -AMathMLFactory::getDefaultTeXStylesheetPath() -{ - return PKGDATADIR"/tml-tex.xsl"; -} - diff --git a/helm/DEVEL/mathml_editor/src/AMathMLFactory.hh b/helm/DEVEL/mathml_editor/src/AMathMLFactory.hh deleted file mode 100644 index f53b56408..000000000 --- a/helm/DEVEL/mathml_editor/src/AMathMLFactory.hh +++ /dev/null @@ -1,47 +0,0 @@ -/* This file is part of EdiTeX, an editor of mathematical - * expressions based on TeX syntax. - * - * Copyright (C) 2002-2003 Luca Padovani , - * 2003 Paolo Marinelli . - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please visit the project's home page - * http://helm.cs.unibo.it/editex/ - * or send an email to - */ - -#ifndef __AMathMLFactory_hh__ -#define __AMathMLFactory_hh__ - -#include "dom.hh" - -class AMathMLFactory -{ -public: - AMathMLFactory(class ALogger& l) : logger(l) { }; - virtual ~AMathMLFactory() { }; - - static std::string getDefaultMathMLStylesheetPath(void); - static std::string getDefaultTeXStylesheetPath(void); - - virtual void documentModified(class TDocument&) = 0; - virtual DOM::Document document(void) const = 0; - -protected: - class ALogger& logger; -}; - -#endif // __AMathMLFactory_hh__ diff --git a/helm/DEVEL/mathml_editor/src/APushLexer.hh b/helm/DEVEL/mathml_editor/src/APushLexer.hh deleted file mode 100644 index 4a2940b4c..000000000 --- a/helm/DEVEL/mathml_editor/src/APushLexer.hh +++ /dev/null @@ -1,46 +0,0 @@ -/* This file is part of EdiTeX, an editor of mathematical - * expressions based on TeX syntax. - * - * Copyright (C) 2002-2003 Luca Padovani , - * 2003 Paolo Marinelli . - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please visit the project's home page - * http://helm.cs.unibo.it/editex/ - * or send an email to - */ - -#ifndef __APushLexer_hh__ -#define __APushLexer_hh__ - -class APushLexer -{ -public: - APushLexer(class ALogger& l, class APushParser& p) : logger(l), parser(p) { }; - virtual ~APushLexer() { }; - - virtual void push(char) = 0; - virtual void drop(bool) = 0; - virtual bool complete(void) = 0; - virtual void reset(void) = 0; - virtual bool error(void) const = 0; - -protected: - class ALogger& logger; - class APushParser& parser; -}; - -#endif // __APushLexer_hh__ diff --git a/helm/DEVEL/mathml_editor/src/APushParser.cc b/helm/DEVEL/mathml_editor/src/APushParser.cc deleted file mode 100644 index 6f843d508..000000000 --- a/helm/DEVEL/mathml_editor/src/APushParser.cc +++ /dev/null @@ -1,42 +0,0 @@ -/* This file is part of EdiTeX, an editor of mathematical - * expressions based on TeX syntax. - * - * Copyright (C) 2002-2003 Luca Padovani , - * 2003 Paolo Marinelli . - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please visit the project's home page - * http://helm.cs.unibo.it/editex/ - * or send an email to - */ - -#include "APushParser.hh" -#include "AMathMLFactory.hh" - -bool -APushParser::freeze() -{ - return freeze_level++ == 0; -} - -bool -APushParser::thaw() -{ - if (freeze_level > 0) - return --freeze_level == 0; - else - return true; -} diff --git a/helm/DEVEL/mathml_editor/src/APushParser.hh b/helm/DEVEL/mathml_editor/src/APushParser.hh deleted file mode 100644 index 74cb18e3b..000000000 --- a/helm/DEVEL/mathml_editor/src/APushParser.hh +++ /dev/null @@ -1,57 +0,0 @@ -/* This file is part of EdiTeX, an editor of mathematical - * expressions based on TeX syntax. - * - * Copyright (C) 2002-2003 Luca Padovani , - * 2003 Paolo Marinelli . - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please visit the project's home page - * http://helm.cs.unibo.it/editex/ - * or send an email to - */ - -#ifndef __APushParser_hh__ -#define __APushParser_hh__ - -#include - -class APushParser -{ -public: - APushParser(class ALogger& l) : logger(l), factory(0), freeze_level(0) { }; - APushParser(class ALogger& l, class AMathMLFactory& f) : logger(l), factory(&f), freeze_level(0) { }; - virtual ~APushParser() { }; - - virtual void reset(void) = 0; - virtual void push(const class TToken&) = 0; - virtual std::string drop(bool) = 0; - virtual void setCursorHint(const std::string&) = 0; - virtual bool hideCursor(void) = 0; - virtual bool showCursor(void) = 0; - - virtual bool freeze(void); - virtual bool thaw(void); - bool frozen(void) const { return freeze_level > 0; }; - -protected: - class ALogger& logger; - class AMathMLFactory* factory; - -private: - unsigned freeze_level; -}; - -#endif // __APushParser_hh__ diff --git a/helm/DEVEL/mathml_editor/src/BROWSE b/helm/DEVEL/mathml_editor/src/BROWSE deleted file mode 100644 index ddd9c4428..000000000 --- a/helm/DEVEL/mathml_editor/src/BROWSE +++ /dev/null @@ -1,503 +0,0 @@ -[ebrowse-hs "ebrowse 5.0" " -x" () ()][ebrowse-ts [ebrowse-cs "APushParser" () 0"APushParser.hh" "class APushParser -{" 75"APushParser.hh" ] -([ebrowse-ts [ebrowse-cs "TPushParser" () 0"TPushParser.hh" "class TPushParser :" 226"TPushParser.hh" ] -()([ebrowse-ms "buffer" () 0 () " std::list buffer;" 1306 2 () () 0] -[ebrowse-ms "cursor" () 0 () " TNode cursor;" 1363 2 () () 0] -[ebrowse-ms "doc" () 0 () " TDocument doc;" 1343 2 () () 0] -[ebrowse-ms "frames" () 0 () " std::stack frames;" 1278 2 () () 0] -[ebrowse-ms "nextId" () 0 () " unsigned nextId;" 1326 2 () () 0] -) -([ebrowse-ms "PRIME" () 4 () " std::string PRIME(void" 490 2 "TPushParser.cc" "TPushParser::PRIME()" 279] -[ebrowse-ms "TPushParser" () 0 () () 0 0 "TPushParser.cc" "TPushParser::TPushParser(const TDictionary& d) :" 58] -[ebrowse-ms "TPushParser" () 0 () " TPushParser(const class TDictionary&);" 275 0 () () 0] -[ebrowse-ms "advance" () 0 () " void advance(const" 1065 2 "TPushParser.cc" "TPushParser::advance(const" 13192] -[ebrowse-ms "do_active" () 0 () " void do_active(const" 916 2 "TPushParser.cc" "TPushParser::do_active(const" 5602] -[ebrowse-ms "do_align" () 0 () " void do_align(void" 624 2 "TPushParser.cc" "TPushParser::do_align()" 1530] -[ebrowse-ms "do_apostrophe" () 0 () " void do_apostrophe(void" 1042 2 "TPushParser.cc" "TPushParser::do_apostrophe()" 4611] -[ebrowse-ms "do_begin" () 0 () " void do_begin(void" 557 2 "TPushParser.cc" "TPushParser::do_begin()" 461] -[ebrowse-ms "do_comment" () 0 () " void do_comment(void" 954 2 "TPushParser.cc" "TPushParser::do_comment()" 5668] -[ebrowse-ms "do_control" () 0 () " void do_control(const" 980 2 "TPushParser.cc" "TPushParser::do_control(const" 6337] -[ebrowse-ms "do_cr" () 0 () " void do_cr(void" 1014 2 "TPushParser.cc" "TPushParser::do_cr()" 5708] -[ebrowse-ms "do_digit" () 0 () " void do_digit(const" 841 2 "TPushParser.cc" "TPushParser::do_digit(const" 4072] -[ebrowse-ms "do_end" () 0 () " void do_end(void" 578 2 "TPushParser.cc" "TPushParser::do_end()" 910] -[ebrowse-ms "do_eol" () 0 () " void do_eol(void" 645 2 "TPushParser.cc" "TPushParser::do_eol()" 2464] -[ebrowse-ms "do_letter" () 0 () " void do_letter(const" 804 2 "TPushParser.cc" "TPushParser::do_letter(const" 3902] -[ebrowse-ms "do_other" () 0 () " void do_other(const" 878 2 "TPushParser.cc" "TPushParser::do_other(const" 5303] -[ebrowse-ms "do_parameter" () 0 () " void do_parameter(const" 673 2 "TPushParser.cc" "TPushParser::do_parameter(const" 2546] -[ebrowse-ms "do_shift" () 0 () " void do_shift(void" 601 2 "TPushParser.cc" "TPushParser::do_shift()" 1487] -[ebrowse-ms "do_space" () 0 () " void do_space(const" 766 2 "TPushParser.cc" "TPushParser::do_space(const" 3794] -[ebrowse-ms "do_subscript" () 0 () " void do_subscript(void" 742 2 "TPushParser.cc" "TPushParser::do_subscript()" 2609] -[ebrowse-ms "do_superscript" () 0 () " void do_superscript(void" 715 2 "TPushParser.cc" "TPushParser::do_superscript()" 3204] -[ebrowse-ms "document" () 4 () " TDocument document(void" 432 0 () " TDocument document(void" 432] -[ebrowse-ms "isPrimes" () 4 () " bool isPrimes(const" 520 2 "TPushParser.cc" "TPushParser::isPrimes(const" 4445] -[ebrowse-ms "process" () 0 () " void process(const" 1096 2 "TPushParser.cc" "TPushParser::process(const" 8538] -[ebrowse-ms "push" () 1 () " virtual void push(const" 349 0 "TPushParser.cc" "TPushParser::push(const" 9379] -[ebrowse-ms "setCursor" () 1 () " virtual void setCursor(const" 390 0 "TPushParser.cc" "TPushParser::setCursor(const" 13865] -[ebrowse-ms "~TPushParser" () 1 () " virtual ~TPushParser()" 321 0 "TPushParser.cc" "TPushParser::~TPushParser()" 241] -) -() -() -() -() -()() -][ebrowse-ts [ebrowse-cs "TTokenizer" () 0"TTokenizer.hh" "class TTokenizer :" 173"TTokenizer.hh" ] -()([ebrowse-ms "tokens" () 0 () " std::list tokens;" 405 2 () () 0] -) -([ebrowse-ms "TTokenizer" () 0 () " TTokenizer(void) {" 221 0 () " TTokenizer(void) {" 221] -[ebrowse-ms "push" () 1 () " virtual void push(const" 316 2 "TTokenizer.cc" "TTokenizer::push(const" 471] -[ebrowse-ms "setCursor" () 1 () " virtual void setCursor(const" 357 2 () " virtual void setCursor(const" 357] -[ebrowse-ms "tokenize" () 0 () " std::vector tokenize(const" 265 0 "TTokenizer.cc" "TTokenizer::tokenize(const" 120] -) -() -() -() -() -()() -])() -([ebrowse-ms "APushParser" () 0 () " APushParser(void) {" 102 0 () " APushParser(void) {" 102] -[ebrowse-ms "push" () 9 () " virtual void push(const" 164 0 () () 0] -[ebrowse-ms "setCursor" () 9 () " virtual void setCursor(const" 209 0 () () 0] -[ebrowse-ms "~APushParser" () 1 () " virtual ~APushParser()" 133 0 () " virtual ~APushParser()" 133] -) -() -() -() -() -()() -][ebrowse-ts [ebrowse-cs "EmptyBuffer" "TLexerPush" 0"TLexerPush.hh" " class EmptyBuffer {" 271() ] -()() -() -() -() -() -() -()() -][ebrowse-ts [ebrowse-cs "unary_function" "std" 32() () 0() ] -([ebrowse-ts [ebrowse-cs "StringHash" "TDictionary" 0"TDictionary.hh" " struct StringHash :" 1160"TDictionary.hh" ] -()() -([ebrowse-ms "operator ()" () 4 () " { size_t operator()(const" 1238 0 () " { size_t operator()(const" 1238] -) -() -() -() -() -()() -])() -() -() -() -() -() -()() -][ebrowse-ts [ebrowse-cs "TObject" () 0"TObject.hh" "class TObject -{" 63"TObject.hh" ] -()() -([ebrowse-ms "TObject" () 0 () " TObject(void) {" 89 1 () " TObject(void) {" 89] -[ebrowse-ms "ref" () 4 () " void ref(coid" 162 0 () " void ref(coid" 162] -[ebrowse-ms "unref" () 4 () " void unref(void" 206 0 () " void unref(void" 206] -[ebrowse-ms "~TObject" () 1 () " virtual ~TObject()" 132 1 () " virtual ~TObject()" 132] -) -() -() -() -() -()() -][ebrowse-ts [ebrowse-cs "std" () 0() () 0() ] -()() -() -() -() -() -() -()() -][ebrowse-ts [ebrowse-cs "TLexerPush" () 0"TLexerPush.hh" "class TLexerPush -{" 59"TLexerPush.hh" ] -()([ebrowse-ms "state" () 0 () " State state;" 388 2 () () 0] -[ebrowse-ms "tokens" () 0 () " std::deque tokens;" 417 2 () () 0] -) -([ebrowse-ms "TLexerPush" () 0 () " TLexerPush(void);" 85 0 "TLexerPush.cc" "TLexerPush::TLexerPush() -{" 51] -[ebrowse-ms "ambiguous" () 4 () " bool ambiguous(void" 182 0 "TLexerPush.cc" "TLexerPush::ambiguous()" 576] -[ebrowse-ms "empty" () 4 () " bool empty(void" 240 0 "TLexerPush.cc" "TLexerPush::empty()" 447] -[ebrowse-ms "front" () 4 () " TToken front(void" 150 0 "TLexerPush.cc" "TLexerPush::front()" 338] -[ebrowse-ms "pending" () 4 () " bool pending(void" 212 0 "TLexerPush.cc" "TLexerPush::pending()" 510] -[ebrowse-ms "pop" () 0 () " TToken pop(void" 128 0 "TLexerPush.cc" "TLexerPush::pop()" 99] -[ebrowse-ms "push" () 0 () " void push(TChar" 108 0 "TLexerPush.cc" "TLexerPush::push(TChar" 664] -) -() -() -() -([ebrowse-ms "State" () 0 () " {" 303 2 () " {" 303] -) -()() -][ebrowse-ts [ebrowse-cs "TLexerPull" () 0() () 0"TLexerPull.cc" ] -()() -([ebrowse-ms "pop" () 0 () () 0 0 () "TLexerPull::pop(TCharStream" 94] -) -() -() -() -() -()() -][ebrowse-ts [ebrowse-cs "TDictionary" () 0"TDictionary.hh" "class TDictionary -{" 154"TDictionary.hh" ] -()([ebrowse-ms "entries" () 0 () " Dictionary entries;" 1560 2 () () 0] -) -([ebrowse-ms "TDictionary" () 0 () " TDictionary(void) {" 181 0 () " TDictionary(void) {" 181] -[ebrowse-ms "find" () 4 () " const Entry& find(const" 1107 0 "TDictionary.cc" "TDictionary::find(const" 3723] -[ebrowse-ms "load" () 0 () " void load(const" 1069 0 "TDictionary.cc" "TDictionary::load(const" 162] -[ebrowse-ms "~TDictionary" () 0 () " ~TDictionary()" 204 0 () " ~TDictionary()" 204] -) -() -() -() -([ebrowse-ms "Dictionary" () 0 () "ap< std::string, Entry, StringHash > Dictionary;" 1538 2 () () 0] -[ebrowse-ms "EntryClass" () 0 () " {" 301 0 () " {" 301] -[ebrowse-ms "Form" () 0 () " {" 228 0 () " {" 228] -) -()() -][ebrowse-ts [ebrowse-cs "DOM" () 0() () 0() ] -()() -() -() -() -() -() -()() -][ebrowse-ts [ebrowse-cs "APushLexer" () 0"APushLexer.hh" "class APushLexer -{" 72"APushLexer.hh" ] -([ebrowse-ts [ebrowse-cs "TPushLexer" () 0"TPushLexer.hh" "class TPushLexer :" 117"TPushLexer.hh" ] -()([ebrowse-ms "buffer" () 0 () " std::string buffer;" 483 2 () () 0] -[ebrowse-ms "state" () 0 () " State state;" 461 2 () () 0] -) -([ebrowse-ms "TPushLexer" () 0 () () 0 0 "TPushLexer.cc" "TPushLexer::TPushLexer(APushParser& p) :" 108] -[ebrowse-ms "TPushLexer" () 0 () " TPushLexer(class APushParser&);" 164 0 () () 0] -[ebrowse-ms "error" () 5 () " virtual bool error(void" 290 0 "TPushLexer.cc" "TPushLexer::error()" 2463] -[ebrowse-ms "push" () 1 () " virtual void push(char" 234 0 "TPushLexer.cc" "TPushLexer::push(char" 1180] -[ebrowse-ms "reset" () 1 () " virtual void reset(void" 262 0 "TPushLexer.cc" "TPushLexer::reset()" 176] -[ebrowse-ms "transaction" () 0 () " void transaction(char" 436 2 "TPushLexer.cc" "TPushLexer::transaction(char" 251] -[ebrowse-ms "~TPushLexer" () 1 () " virtual ~TPushLexer()" 203 0 () " virtual ~TPushLexer()" 203] -) -() -() -() -([ebrowse-ms "State" () 0 () " {" 327 2 () " {" 327] -) -()() -])() -([ebrowse-ms "APushLexer" () 0 () " APushLexer(class APushParser& p) :" 99 0 () " APushLexer(class APushParser& p) :" 99] -[ebrowse-ms "error" () 13 () " virtual bool error(void" 251 0 () () 0] -[ebrowse-ms "push" () 9 () " virtual void push(char" 187 0 () () 0] -[ebrowse-ms "reset" () 9 () " virtual void reset(void" 219 0 () () 0] -[ebrowse-ms "~APushLexer" () 1 () " virtual ~APushLexer()" 156 0 () " virtual ~APushLexer()" 156] -) -() -() -() -() -()() -][ebrowse-ts [ebrowse-cs "Ptr" () 32"Ptr.hh" "class Ptr -{" 1067"Ptr.hh" ] -()([ebrowse-ms "ptr" () 0 () " P* ptr;" 1797 2 () () 0] -) -([ebrowse-ms "P" () 4 () " operator P*()" 1487 0 () " operator P*()" 1487] -[ebrowse-ms "Ptr" () 0 () " Ptr(const Ptr& p) :" 1142 0 () " Ptr(const Ptr& p) :" 1142] -[ebrowse-ms "Ptr" () 0 () " Ptr(P* p = 0) :" 1083 0 () " Ptr(P* p = 0) :" 1083] -[ebrowse-ms "Q" () 36 () " template operator Ptr()" 1747 0 () " template operator Ptr()" 1747] -[ebrowse-ms "operator ->" () 4 () " P* operator->()" 1253 0 () " P* operator->()" 1253] -[ebrowse-ms "operator =" () 0 () " Ptr& operator=(const" 1316 0 () " Ptr& operator=(const" 1316] -[ebrowse-ms "~Ptr" () 0 () " ~Ptr()" 1202 0 () " ~Ptr()" 1202] -) -() -() -([ebrowse-ms "is_a" () 32 () " template friend bool is_a(const" 1659 0 () " template friend bool is_a(const" 1659] -[ebrowse-ms "smart_cast" () 32 () "emplate friend Ptr smart_cast(const" 1561 0 () "emplate friend Ptr smart_cast(const" 1561] -) -() -()() -][ebrowse-ts [ebrowse-cs "TToken" () 0"TToken.hh" "struct TToken -{" 80"TToken.hh" ] -()([ebrowse-ms "category" () 0 () " TCat category;" 627 0 () () 0] -[ebrowse-ms "value" () 0 () " std::string value;" 648 0 () () 0] -) -([ebrowse-ms "TToken" () 0 () " TToken(TCat c, const std::string& v) :" 438 0 () " TToken(TCat c, const std::string& v) :" 438] -[ebrowse-ms "TToken" () 0 () " TToken(TCat c, char ch) :" 366 0 () " TToken(TCat c, char ch) :" 366] -[ebrowse-ms "TToken" () 0 () " TToken(TCat c) :" 330 0 () " TToken(TCat c) :" 330] -[ebrowse-ms "operator ==" () 4 () " bool operator==(const" 517 0 () " bool operator==(const" 517] -) -() -() -() -([ebrowse-ms "TCat" () 0 () " {" 98 0 () " {" 98] -) -()() -][ebrowse-ts [ebrowse-cs "binary_function" "std" 32() () 0() ] -([ebrowse-ts [ebrowse-cs "StringEq" "TDictionary" 0"TDictionary.hh" " struct StringEq :" 1327() ] -()() -([ebrowse-ms "operator ()" () 4 () " { bool operator()(const" 1415 0 () () 0] -) -() -() -() -() -()() -])() -() -() -() -() -() -()() -][ebrowse-ts [ebrowse-cs "TNode" () 0"TNode.hh" "class TNode -{" 124"TNode.hh" ] -()([ebrowse-ms "node" () 0 () " DOM::Element node;" 2444 2 () () 0] -) -([ebrowse-ms "TNode" () 0 () " TNode(const TNode& n) :" 270 0 () " TNode(const TNode& n) :" 270] -[ebrowse-ms "TNode" () 0 () " TNode(void) :" 145 0 () " TNode(void) :" 145] -[ebrowse-ms "append" () 4 () " void append(const" 1667 0 "TNode.cc" "TNode::append(const" 2450] -[ebrowse-ms "append" () 4 () " void append(const" 1631 0 "TNode.cc" "TNode::append(const" 2348] -[ebrowse-ms "child" () 4 () " TNode child(unsigned" 592 0 "TNode.cc" "TNode::child(unsigned" 2874] -[ebrowse-ms "core" () 4 () " TNode core(void" 425 0 "TNode.cc" "TNode::core()" 1413] -[ebrowse-ms "empty" () 4 () " bool empty(void" 648 0 () " bool empty(void" 648] -[ebrowse-ms "first" () 4 () " TNode first(void" 480 0 "TNode.cc" "TNode::first()" 1075] -[ebrowse-ms "firstL" () 4 () " TNode firstL(void" 508 0 "TNode.cc" "TNode::firstL()" 1259] -[ebrowse-ms "get" () 4 () " std::string get(const" 1758 0 "TNode.cc" "TNode::get(const" 3007] -[ebrowse-ms "hasId" () 4 () " bool hasId(void" 1994 0 () " bool hasId(void" 1994] -[ebrowse-ms "insert" () 4 () " void insert(const" 1595 0 "TNode.cc" "TNode::insert(const" 2193] -[ebrowse-ms "is" () 4 () " bool is(const" 2055 0 () " bool is(const" 2055] -[ebrowse-ms "isC" () 4 () " bool isC(const" 2303 0 () " bool isC(const" 2303] -[ebrowse-ms "isC" () 4 () " bool isC(void" 2258 0 () " bool isC(void" 2258] -[ebrowse-ms "isG" () 4 () " bool isG(void" 2119 0 () " bool isG(void" 2119] -[ebrowse-ms "isSb" () 4 () " bool isSb(void" 2165 0 () " bool isSb(void" 2165] -[ebrowse-ms "isSp" () 4 () " bool isSp(void" 2212 0 () " bool isSp(void" 2212] -[ebrowse-ms "last" () 4 () " TNode last(void" 534 0 "TNode.cc" "TNode::last()" 736] -[ebrowse-ms "lastL" () 4 () " TNode lastL(void" 561 0 "TNode.cc" "TNode::lastL()" 922] -[ebrowse-ms "name" () 4 () " std::string name(void" 1863 0 () " std::string name(void" 1863] -[ebrowse-ms "nameC" () 4 () " std::string nameC(void" 1929 0 () " std::string nameC(void" 1929] -[ebrowse-ms "next" () 4 () " TNode next(void" 319 0 "TNode.cc" "TNode::next()" 63] -[ebrowse-ms "nextL" () 4 () " TNode nextL(void" 346 0 "TNode.cc" "TNode::nextL()" 247] -[ebrowse-ms "operator !=" () 4 () " bool operator!=(const" 1295 0 () " bool operator!=(const" 1295] -[ebrowse-ms "operator ==" () 4 () " bool operator==(const" 1227 0 () " bool operator==(const" 1227] -[ebrowse-ms "operator []" () 4 () " ProxyAttr operator[](const" 1422 0 () " ProxyAttr operator[](const" 1422] -[ebrowse-ms "operator []" () 4 () " TNode operator[](int" 1362 0 () " TNode operator[](int" 1362] -[ebrowse-ms "parent" () 4 () " TNode parent(void" 453 0 "TNode.cc" "TNode::parent()" 1587] -[ebrowse-ms "prepend" () 4 () " void prepend(const" 1718 0 "TNode.cc" "TNode::prepend(const" 2683] -[ebrowse-ms "prev" () 4 () " TNode prev(void" 372 0 "TNode.cc" "TNode::prev()" 396] -[ebrowse-ms "prevL" () 4 () " TNode prevL(void" 399 0 "TNode.cc" "TNode::prevL()" 588] -[ebrowse-ms "remove" () 4 () " void remove(void" 1529 0 "TNode.cc" "TNode::remove()" 1913] -[ebrowse-ms "replace" () 4 () " void replace(const" 1559 0 "TNode.cc" "TNode::replace(const" 2038] -[ebrowse-ms "set" () 4 () " void set(const" 1797 0 "TNode.cc" "TNode::set(const" 3109] -[ebrowse-ms "size" () 4 () " unsigned size(void" 621 0 "TNode.cc" "TNode::size()" 1749] -[ebrowse-ms "value" () 4 () " std::string value(void" 707 0 () " std::string value(void" 707] -) -() -() -() -() -()() -][ebrowse-ts [ebrowse-cs "Entry" "TDictionary" 0"TDictionary.hh" " struct Entry - {" 405"TDictionary.hh" ] -()([ebrowse-ms "cls" () 0 () " EntryClass cls;" 806 0 () () 0] -[ebrowse-ms "delimiter" () 0 () " unsigned delimiter : 1;" 909 0 () () 0] -[ebrowse-ms "embellishment" () 0 () " unsigned embellishment : 1;" 966 0 () () 0] -[ebrowse-ms "infix" () 0 () " unsigned infix : 8;" 830 0 () () 0] -[ebrowse-ms "leftOpen" () 0 () " unsigned leftOpen : 1;" 993 0 () () 0] -[ebrowse-ms "limits" () 0 () " unsigned limits : 1;" 934 0 () () 0] -[ebrowse-ms "pattern" () 0 () " std::vector pattern;" 597 0 () () 0] -[ebrowse-ms "postfix" () 0 () " unsigned postfix : 8;" 881 0 () () 0] -[ebrowse-ms "prefix" () 0 () " unsigned prefix : 8;" 855 0 () () 0] -[ebrowse-ms "rightOpen" () 0 () " unsigned rightOpen : 1;" 1021 0 () () 0] -[ebrowse-ms "table" () 0 () " unsigned table : 1;" 1045 0 () () 0] -[ebrowse-ms "value" () 0 () " std::string value;" 620 0 () () 0] -) -([ebrowse-ms "Entry" () 0 () " {" 420 0 () " {" 420] -[ebrowse-ms "defined" () 4 () " bool defined(void" 643 0 () " bool defined(void" 643] -[ebrowse-ms "hasArguments" () 4 () " bool hasArguments(void" 707 0 () " bool hasArguments(void" 707] -[ebrowse-ms "paramDelimited" () 4 () " bool paramDelimited(unsigned" 777 0 "TDictionary.cc" "TDictionary::Entry::paramDelimited(unsigned" 4012] -) -() -() -() -() -()() -][ebrowse-ts [ebrowse-cs "Frame" "TPushParser" 0"TPushParser.hh" " struct Frame - {" 1126"TPushParser.hh" ] -()([ebrowse-ms "entry" () 0 () " const TDictionary::Entry& entry;" 1226 0 () () 0] -[ebrowse-ms "pos" () 0 () " unsigned pos;" 1244 0 () () 0] -) -([ebrowse-ms "Frame" () 0 () " Frame(const TDictionary::Entry& e) :" 1142 0 () " Frame(const TDictionary::Entry& e) :" 1142] -) -() -() -() -() -()() -][ebrowse-ts [ebrowse-cs "TCharStream" () 0"TCharStream.hh" "class TCharStream -{" 94"TCharStream.hh" ] -([ebrowse-ts [ebrowse-cs "TCharStreamString" () 0"TCharStreamString.hh" "class TCharStreamString :" 120"TCharStreamString.hh" ] -()([ebrowse-ms "buffer" () 0 () " TString buffer;" 555 2 () () 0] -[ebrowse-ms "idx" () 0 () " unsigned long idx;" 536 2 () () 0] -) -([ebrowse-ms "TCharStreamString" () 0 () " TCharStreamString(const TString& s) :" 175 0 () " TCharStreamString(const TString& s) :" 175] -[ebrowse-ms "look" () 5 () " virtual TChar look(void" 343 0 () " virtual TChar look(void" 343] -[ebrowse-ms "more" () 5 () " virtual bool more(void" 275 0 () " virtual bool more(void" 275] -[ebrowse-ms "next" () 1 () " virtual TChar next(void" 439 0 () " virtual TChar next(void" 439] -[ebrowse-ms "~TCharStreamString" () 1 () " virtual ~TCharStreamString()" 243 0 () " virtual ~TCharStreamString()" 243] -) -() -() -() -() -()() -])() -([ebrowse-ms "TCharStream" () 0 () " TCharStream(void) {" 121 0 () " TCharStream(void) {" 121] -[ebrowse-ms "look" () 13 () " virtual TChar look(void" 222 0 () () 0] -[ebrowse-ms "more" () 13 () " virtual bool more(void" 184 0 () () 0] -[ebrowse-ms "next" () 9 () " virtual TChar next(void" 260 0 () () 0] -[ebrowse-ms "~TCharStream" () 1 () " virtual ~TCharStream()" 152 0 () " virtual ~TCharStream()" 152] -) -() -() -() -() -()() -][ebrowse-ts [ebrowse-cs "EmptyStream" "TCharStream" 0"TCharStream.hh" " class EmptyStream {" 289() ] -()() -() -() -() -() -() -()() -][ebrowse-ts [ebrowse-cs "*Globals*" () 0() () 0"APushLexer.hh" ] -()() -([ebrowse-ms "dispatch" () 0 "special.cc" "dispatch(const" 1012 0 "special.cc" "dispatch(const" 1012] -[ebrowse-ms "do_apostrophe" () 0 "special.cc" "do_apostrophe(const" 669 0 "special.cc" "do_apostrophe(const" 669] -[ebrowse-ms "do_bgroup" () 0 "special.cc" "do_bgroup(const" 149 0 "special.cc" "do_bgroup(const" 149] -[ebrowse-ms "do_control" () 0 "special.cc" "do_control(const" 711 0 "special.cc" "do_control(const" 711] -[ebrowse-ms "do_other" () 0 "special.cc" "do_other(const" 776 0 "special.cc" "do_other(const" 776] -[ebrowse-ms "finishG" () 0 "special.cc" "void finishG(const" 118 0 () () 0] -[ebrowse-ms "getCore" () 0 "domnav.cc" "getCore(const" 629 0 "domnav.cc" "getCore(const" 629] -[ebrowse-ms "getRightmostChild" () 0 "domnav.cc" "getRightmostChild(const" 37 0 "domnav.cc" "getRightmostChild(const" 37] -[ebrowse-ms "isDelimiter" () 0 "domnav.cc" "isDelimiter(const" 1716 0 "domnav.cc" "isDelimiter(const" 1716] -[ebrowse-ms "isFunction" () 0 "domnav.cc" "isFunction(const" 1879 0 "domnav.cc" "isFunction(const" 1879] -[ebrowse-ms "isGroup" () 0 "domnav.cc" "isGroup(const" 1214 0 "domnav.cc" "isGroup(const" 1214] -[ebrowse-ms "isInferred" () 0 "domnav.cc" "isInferred(const" 985 0 "domnav.cc" "isInferred(const" 985] -[ebrowse-ms "isMacro" () 0 "domnav.cc" "isMacro(const" 1085 0 "domnav.cc" "isMacro(const" 1085] -[ebrowse-ms "isOperator" () 0 "domnav.cc" "isOperator(const" 1553 0 "domnav.cc" "isOperator(const" 1553] -[ebrowse-ms "isPrimes" () 0 "domnav.cc" "isPrimes(const" 1451 0 "domnav.cc" "isPrimes(const" 1451] -[ebrowse-ms "isSb" () 0 "domnav.cc" "isSb(const" 1291 0 "domnav.cc" "isSb(const" 1291] -[ebrowse-ms "isSp" () 0 "domnav.cc" "isSp(const" 1369 0 "domnav.cc" "isSp(const" 1369] -[ebrowse-ms "isUnicodeAlpha" () 2 "dom.hh" "inline bool isUnicodeAlpha(TChar" 303 0 "dom.hh" "inline bool isUnicodeAlpha(TChar" 303] -[ebrowse-ms "isUnicodeDigit" () 2 "dom.hh" "inline bool isUnicodeDigit(TChar" 408 0 "dom.hh" "inline bool isUnicodeDigit(TChar" 408] -[ebrowse-ms "isUnicodeSpace" () 2 "dom.hh" "inline bool isUnicodeSpace(TChar" 198 0 "dom.hh" "inline bool isUnicodeSpace(TChar" 198] -[ebrowse-ms "main" () 0 "texlexer.cc" "main()" 51 0 "texlexer.cc" "main()" 51] -[ebrowse-ms "prevLinearSibling" () 0 "domnav.cc" "prevLinearSibling(const" 324 0 "domnav.cc" "prevLinearSibling(const" 324] -[ebrowse-ms "replace" () 0 "domnav.cc" "replace(const" 834 0 "domnav.cc" "replace(const" 834] -[ebrowse-ms "tokenize" () 0 "tokenizer.hh" "std::vector tokenize(const" 123 0 () () 0] -) -([ebrowse-ms "undefinedEntry" () 0 () () 0 0 "TDictionary.cc" "static TDictionary::Entry undefinedEntry;" 132] -) -() -([ebrowse-ms "Ptr_hh" () 512 () () 0 0 "Ptr.hh" "#define Ptr_hh -" 1036] -[ebrowse-ms "TML_NS_URI" () 512 () () 0 0 "globals.hh" "#define TML_NS_URI " 67] -[ebrowse-ms "XMLNS_NS_URI" () 512 () () 0 0 "globals.hh" "#define XMLNS_NS_URI " 123] -[ebrowse-ms "__APushLexer_hh__" () 512 () () 0 0 () "#define __APushLexer_hh__ -" 53] -[ebrowse-ms "__APushParser_hh__" () 512 () () 0 0 "APushParser.hh" "#define __APushParser_hh__ -" 55] -[ebrowse-ms "__TCharStreamString_hh__" () 512 () () 0 0 "TCharStreamString.hh" "#define __TCharStreamString_hh__ -" 67] -[ebrowse-ms "__TCharStream_hh__" () 512 () () 0 0 "TCharStream.hh" "#define __TCharStream_hh__ -" 55] -[ebrowse-ms "__TDictionary_hh__" () 512 () () 0 0 "TDictionary.hh" "#define __TDictionary_hh__ -" 55] -[ebrowse-ms "__TDocument_hh__" () 512 () () 0 0 "TDocument.hh" "#define __TDocument_hh__ -" 51] -[ebrowse-ms "__TNode_hh__" () 512 () () 0 0 "TNode.hh" "#define __TNode_hh__ -" 43] -[ebrowse-ms "__TObject_hh__" () 512 () () 0 0 "TObject.hh" "#define __TObject_hh__ -" 47] -[ebrowse-ms "__TPushLexer_hh__" () 512 () () 0 0 "TPushLexer.hh" "#define __TPushLexer_hh__ -" 53] -[ebrowse-ms "__TPushParser_hh__" () 512 () () 0 0 "TPushParser.hh" "#define __TPushParser_hh__ -" 55] -[ebrowse-ms "__TToken_hh__" () 512 () () 0 0 "TToken.hh" "#define __TToken_hh__ -" 45] -[ebrowse-ms "__TTokenizer_hh__" () 512 () () 0 0 "TTokenizer.hh" "#define __TTokenizer_hh__ -" 53] -[ebrowse-ms "__dom_hh__" () 512 () () 0 0 "dom.hh" "#define __dom_hh__ -" 39] -[ebrowse-ms "__globals_hh__" () 512 () () 0 0 "globals.hh" "#define __globals_hh__ -" 47] -[ebrowse-ms "__tokenzier_hh__" () 512 () () 0 0 "tokenizer.hh" "#define __tokenzier_hh__ -" 51] -) -([ebrowse-ms "TChar" () 0 () () 0 0 "dom.hh" "typedef DOM::Char32 TChar;" 131] -[ebrowse-ms "TString" () 0 () () 0 0 "dom.hh" "typedef DOM::UCS4String TString;" 164] -) -()() -][ebrowse-ts [ebrowse-cs "ProxyAttr" "TNode" 0"TNode.hh" " class ProxyAttr - {" 765"TNode.hh" ] -()([ebrowse-ms "name" () 0 () " std::string name;" 1155 2 () () 0] -[ebrowse-ms "node" () 0 () " DOM::Element node;" 1132 2 () () 0] -) -([ebrowse-ms "ProxyAttr" () 0 () "r(const DOM::Element& n, const std::string& s) :" 795 0 () "r(const DOM::Element& n, const std::string& s) :" 795] -[ebrowse-ms "operator =" () 0 () " ProxyAttr& operator=(const" 959 0 () " ProxyAttr& operator=(const" 959] -[ebrowse-ms "operator ==" () 0 () " bool operator==(const" 1040 0 () " bool operator==(const" 1040] -[ebrowse-ms "string" () 4 () " operator std::string()" 885 0 () " operator std::string()" 885] -) -() -() -() -() -()() -][ebrowse-ts [ebrowse-cs "EventListener" "DOM" 0() () 0() ] -([ebrowse-ts [ebrowse-cs "DOMSubtreeModifiedListener" "TDocument" 0"TDocument.hh" " class DOMSubtreeModifiedListener :" 1015"TDocument.hh" ] -()([ebrowse-ms "doc" () 0 () " TDocument doc;" 1247 2 () () 0] -) -([ebrowse-ms "DOMSubtreeModifiedListener" () 0 () "DOMSubtreeModifiedListener(const TDocument& d) :" 1092 0 () "DOMSubtreeModifiedListener(const TDocument& d) :" 1092] -[ebrowse-ms "handleEvent" () 1 () " virtual void handleEvent(const" 1202 0 () () 0] -[ebrowse-ms "~DOMSubtreeModifiedListener" () 1 () " virtual ~DOMSubtreeModifiedListener()" 1162 0 () " virtual ~DOMSubtreeModifiedListener()" 1162] -) -() -() -() -() -()() -][ebrowse-ts [ebrowse-cs "TDocument" () 0"TDocument.hh" "class TDocument :" 108"TDocument.hh" ] -()([ebrowse-ms "dirty" () 0 () " DOM::Element dirty;" 971 2 () () 0] -[ebrowse-ms "doc" () 0 () " DOM::Document doc;" 949 2 () () 0] -) -([ebrowse-ms "TDocument" () 0 () " TDocument(void);" 162 0 "TDocument.cc" "TDocument::TDocument() -{" 108] -[ebrowse-ms "create" () 4 () " TNode create(const" 202 0 "TDocument.cc" "TDocument::create(const" 789] -[ebrowse-ms "createC" () 4 () " TNode createC(const" 327 0 "TDocument.cc" "TDocument::createC(const" 1062] -[ebrowse-ms "createG" () 4 () " TNode createG(unsigned" 262 0 () " TNode createG(unsigned" 262] -[ebrowse-ms "createI" () 4 () " TNode createI(const" 461 0 () " TNode createI(const" 461] -[ebrowse-ms "createN" () 4 () " TNode createN(const" 561 0 () " TNode createN(const" 561] -[ebrowse-ms "createO" () 4 () " TNode createO(const" 661 0 () " TNode createO(const" 661] -[ebrowse-ms "createT" () 4 () " TNode createT(const" 384 0 "TDocument.cc" "TDocument::createT(const" 1197] -[ebrowse-ms "dirtyIdNode" () 4 () " TNode dirtyIdNode(void" 872 0 "TDocument.cc" "TDocument::dirtyIdNode()" 2081] -[ebrowse-ms "dirtyNode" () 4 () " TNode dirtyNode(void" 821 0 () " TNode dirtyNode(void" 821] -[ebrowse-ms "handleEvent" () 1 () " virtual void handleEvent(const" 1293 2 "TDocument.cc" "TDocument::handleEvent(const" 2348] -[ebrowse-ms "root" () 0 () " TNode root(void" 758 0 () " TNode root(void" 758] -[ebrowse-ms "serialize" () 4 () " void serialize(const" 904 0 "TDocument.cc" "TDocument::serialize(const" 637] -[ebrowse-ms "~TDocument" () 0 () " ~TDocument()" 179 0 "TDocument.cc" "TDocument::~TDocument()" 460] -) -() -([ebrowse-ms "findCommonAncestor" () 0 () " static DOM::Node findCommonAncestor(const" 1398 2 "TDocument.cc" "TDocument::findCommonAncestor(const" 1560] -[ebrowse-ms "nodeDepth" () 0 () " static unsigned nodeDepth(const" 1341 2 "TDocument.cc" "TDocument::nodeDepth(const" 1362] -) -() -() -()() -])() -() -() -() -() -() -()() -] \ No newline at end of file diff --git a/helm/DEVEL/mathml_editor/src/CLoggerConsole.cc b/helm/DEVEL/mathml_editor/src/CLoggerConsole.cc deleted file mode 100644 index 0265f389d..000000000 --- a/helm/DEVEL/mathml_editor/src/CLoggerConsole.cc +++ /dev/null @@ -1,35 +0,0 @@ -/* This file is part of EdiTeX, an editor of mathematical - * expressions based on TeX syntax. - * - * Copyright (C) 2002-2003 Luca Padovani , - * 2003 Paolo Marinelli . - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please visit the project's home page - * http://helm.cs.unibo.it/editex/ - * or send an email to - */ - -#include - -#include "CLoggerConsole.hh" - -void -CLoggerConsole::message(Level l, const std::string& msg) -{ - const char* ls[] = { "Error", "Warning", "Info", "Debug" }; - std::cerr << "*** " << ls[l] << ": " << msg << std::endl; -} diff --git a/helm/DEVEL/mathml_editor/src/CLoggerConsole.hh b/helm/DEVEL/mathml_editor/src/CLoggerConsole.hh deleted file mode 100644 index 630f7cf32..000000000 --- a/helm/DEVEL/mathml_editor/src/CLoggerConsole.hh +++ /dev/null @@ -1,40 +0,0 @@ -/* This file is part of EdiTeX, an editor of mathematical - * expressions based on TeX syntax. - * - * Copyright (C) 2002-2003 Luca Padovani , - * 2003 Paolo Marinelli . - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please visit the project's home page - * http://helm.cs.unibo.it/editex/ - * or send an email to - */ - -#ifndef __CLoggerConsole_hh__ -#define __CLoggerConsole_hh__ - -#include "ALogger.hh" - -class CLoggerConsole : public ALogger -{ -public: - CLoggerConsole(void) { }; - -protected: - virtual void message(Level, const std::string&); -}; - -#endif // __CLoggerConsole_hh__ diff --git a/helm/DEVEL/mathml_editor/src/CMathMLFactoryXSLT.cc b/helm/DEVEL/mathml_editor/src/CMathMLFactoryXSLT.cc deleted file mode 100644 index fddb24a58..000000000 --- a/helm/DEVEL/mathml_editor/src/CMathMLFactoryXSLT.cc +++ /dev/null @@ -1,106 +0,0 @@ -/* This file is part of EdiTeX, an editor of mathematical - * expressions based on TeX syntax. - * - * Copyright (C) 2002-2003 Luca Padovani , - * 2003 Paolo Marinelli . - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please visit the project's home page - * http://helm.cs.unibo.it/editex/ - * or send an email to - */ - -#include "dom.hh" -#include "TNode.hh" -#include "ALogger.hh" -#include "TDocument.hh" -#include "CMathMLFactoryXSLT.hh" -#include "AMathMLConsumer.hh" -#include - -CMathMLFactoryXSLT::CMathMLFactoryXSLT(ALogger& l, const DOMX::XSLTStylesheet& s) - : AMathMLFactory(l), style(s) -{ - DOM::DOMImplementation di; - DOM::DocumentType dt; - result = di.createDocument(MATHML_NS_URI, "m:math", dt); -} - -void -CMathMLFactoryXSLT::documentModified(TDocument& doc) -{ - std::vector< std::pair > dirtyId; - if (TNode dirty = doc.dirtyNode()) - if (result.get_documentElement().hasAttribute("xref")) - dirtyId.push_back(std::make_pair(DOM::GdomeString("id"), - DOM::GdomeString("'" + std::string(dirty["id"]) + "'"))); - DOM::Document res = style.apply(doc.document(), dirtyId); - assert(res); - style.save(doc.document(), stdout); - - if (DOM::Element root = res.get_documentElement()) - { - if (result.get_documentElement().hasAttribute("xref")) - { - bool ok = subst(result.get_documentElement(), root.getAttribute("xref"), result.importNode(root, true)); - assert(ok); - doc.clearDirty(); - } - else - result.replaceChild(result.importNode(root, true), result.get_documentElement()); - } - else - { - // Something wrong happened while applying the stylesheet. - DOM::Element root = result.get_documentElement(); - DOM::Node p = root.get_firstChild(); - while (p) { - DOM::Node next = p.get_nextSibling(); - root.removeChild(p); - p = next; - } - logger.error("The stylesheet produced an empty document"); - } - - style.save(result, stdout); -} - -bool -CMathMLFactoryXSLT::subst(const DOM::Element& e1, const DOM::GdomeString& id, const DOM::Element& e2) -{ - assert(e1); - assert(e2); - if (e1.getAttribute("xref") == id) - { - DOM::Node parent = e1.get_parentNode(); - assert(parent); - parent.replaceChild(e2, e1); - return true; - } - else - { - DOM::Node p = e1.get_firstChild(); - while (p) - { - while (p && p.get_nodeType() != DOM::Node::ELEMENT_NODE) p = p.get_nextSibling(); - if (p) - if (subst(p, id, e2)) return true; - else p = p.get_nextSibling(); - } - return false; - } -} - diff --git a/helm/DEVEL/mathml_editor/src/CMathMLFactoryXSLT.hh b/helm/DEVEL/mathml_editor/src/CMathMLFactoryXSLT.hh deleted file mode 100644 index 34d8fa984..000000000 --- a/helm/DEVEL/mathml_editor/src/CMathMLFactoryXSLT.hh +++ /dev/null @@ -1,47 +0,0 @@ -/* This file is part of EdiTeX, an editor of mathematical - * expressions based on TeX syntax. - * - * Copyright (C) 2002-2003 Luca Padovani , - * 2003 Paolo Marinelli . - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please visit the project's home page - * http://helm.cs.unibo.it/editex/ - * or send an email to - */ - -#ifndef __CMathMLFactoryXSLT_hh__ -#define __CMathMLFactoryXSLT_hh__ - -#include -#include "AMathMLFactory.hh" - -class CMathMLFactoryXSLT : public AMathMLFactory -{ -public: - CMathMLFactoryXSLT(class ALogger&, const class GdomeSmartDOMExt::XSLTStylesheet&); - - virtual void documentModified(class TDocument&); - virtual GdomeSmartDOM::Document document(void) const { return result; }; - -private: - static bool subst(const GdomeSmartDOM::Element&, const GdomeSmartDOM::GdomeString&, const GdomeSmartDOM::Element&); - - const class GdomeSmartDOMExt::XSLTStylesheet& style; - GdomeSmartDOM::Document result; -}; - -#endif // __CMathMLFactoryXSLT_hh__ diff --git a/helm/DEVEL/mathml_editor/src/CMathMLFactoryXSLTDiff.cc b/helm/DEVEL/mathml_editor/src/CMathMLFactoryXSLTDiff.cc deleted file mode 100644 index 7893fcb46..000000000 --- a/helm/DEVEL/mathml_editor/src/CMathMLFactoryXSLTDiff.cc +++ /dev/null @@ -1,93 +0,0 @@ -/* This file is part of EdiTeX, an editor of mathematical - * expressions based on TeX syntax. - * - * Copyright (C) 2002-2003 Luca Padovani , - * 2003 Paolo Marinelli . - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please visit the project's home page - * http://helm.cs.unibo.it/editex/ - * or send an email to - */ - -#include "dom.hh" -#include "Diff.hh" -#include "TNode.hh" -#include "TDocument.hh" -#include "CMathMLFactoryXSLTDiff.hh" -#include "AMathMLConsumer.hh" -#include - -CMathMLFactoryXSLTDiff::CMathMLFactoryXSLTDiff(ALogger& l, const DOMX::XSLTStylesheet& s) - : AMathMLFactory(l), style(s) -{ - DOM::DOMImplementation di; - DOM::DocumentType dt; - result = di.createDocument(MATHML_NS_URI, "m:math", dt); -} - -void -CMathMLFactoryXSLTDiff::documentModified(TDocument& doc) -{ -#if 0 - std::vector< std::pair > dirtyId; - if (TNode dirty = doc.dirtyNode()) - if (false && result.get_documentElement().hasAttribute("xref")) - dirtyId.push_back(std::make_pair(DOM::GdomeString("id"), - DOM::GdomeString("'" + std::string(dirty["id"]) + "'"))); -#endif - DOM::Document res = style.apply(doc.document()); - assert(res); - //cout << "*** THE TEX DOCUMENT" << endl; - //style.save(doc.document(), stdout); - std::cout << "*** THE CURRENT DOCUMENT:" << std::endl; - if (result) style.save(result, stdout); - std::cout << "*** THE NEW DOCUMENT:" << std::endl; - style.save(res, stdout); - std::cout << "*** THE DIFF:" << std::endl; - DOMX::Diff diff = DOMX::Diff::diff(result, res); - style.save(diff.document(), stdout); - diff.patch(); - - doc.clearDirty(); -} - -bool -CMathMLFactoryXSLTDiff::subst(const DOM::Element& e1, const DOM::GdomeString& id, const DOM::Element& e2) -{ - assert(e1); - assert(e2); - if (e1.getAttribute("xref") == id) - { - DOMX::Diff diff = DOMX::Diff::diff(e1, e2); - style.save(diff.document(), stdout); - diff.patch(); - return true; - } - else - { - DOM::Node p = e1.get_firstChild(); - while (p) - { - while (p && p.get_nodeType() != DOM::Node::ELEMENT_NODE) p = p.get_nextSibling(); - if (p) - if (subst(p, id, e2)) return true; - else p = p.get_nextSibling(); - } - return false; - } -} - diff --git a/helm/DEVEL/mathml_editor/src/CMathMLFactoryXSLTDiff.hh b/helm/DEVEL/mathml_editor/src/CMathMLFactoryXSLTDiff.hh deleted file mode 100644 index 75ebfc260..000000000 --- a/helm/DEVEL/mathml_editor/src/CMathMLFactoryXSLTDiff.hh +++ /dev/null @@ -1,46 +0,0 @@ -/* This file is part of EdiTeX, an editor of mathematical - * expressions based on TeX syntax. - * - * Copyright (C) 2002-2003 Luca Padovani , - * 2003 Paolo Marinelli . - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please visit the project's home page - * http://helm.cs.unibo.it/editex/ - * or send an email to - */ - -#ifndef __CMathMLFactoryXSLTDiff_hh__ -#define __CMathMLFactoryXSLTDiff_hh__ - -#include "AMathMLFactory.hh" - -class CMathMLFactoryXSLTDiff : public AMathMLFactory -{ -public: - CMathMLFactoryXSLTDiff(class ALogger&, const DOMX::XSLTStylesheet&); - - virtual void documentModified(class TDocument&); - virtual DOM::Document document(void) const { return result; }; - -private: - bool subst(const DOM::Element& e1, const DOM::GdomeString& id, const DOM::Element& e2); - - const DOMX::XSLTStylesheet& style; - DOM::Document result; -}; - -#endif // __CMathMLFactoryXSLT_hh__ diff --git a/helm/DEVEL/mathml_editor/src/Diff.cc b/helm/DEVEL/mathml_editor/src/Diff.cc deleted file mode 100644 index d8df81201..000000000 --- a/helm/DEVEL/mathml_editor/src/Diff.cc +++ /dev/null @@ -1,393 +0,0 @@ -/* This file is part of EdiTeX, an editor of mathematical - * expressions based on TeX syntax. - * - * Copyright (C) 2002-2003 Luca Padovani , - * 2003 Paolo Marinelli . - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please visit the project's home page - * http://helm.cs.unibo.it/editex/ - * or send an email to - */ - -#include -#include -#include -#include -#include - -#include "Diff.hh" - -namespace GdomeSmartDOMExt -{ - - Diff - Diff::diff(const Document& dest, const Document& source, flatNodeEq flatEq) - { - assert(dest); - assert(source); - assert(flatEq); - - return diff(dest.get_documentElement(), source.get_documentElement(), flatEq); - } - - Diff - Diff::diff(const Element& dest, const Element& source, flatNodeEq flatEq) - { - assert(dest); - assert(source); - assert(flatEq); - - DOMImplementation di; - Document doc = di.createDocument(DDIFF_NS_URI, "diff:doc", DocumentType()); - Element root = doc.get_documentElement(); - root.setAttributeNS(XMLNS_NS_URI, "xmlns:diff", DDIFF_NS_URI); - - Diff diff(dest, doc, flatEq); - if (Node d = diff.diffNodes(dest, source)) root.appendChild(d); - else root.appendChild(doc.createElementNS(DDIFF_NS_URI, "diff:same")); - - return diff; - } - - struct NodeEqPredicate : std::binary_function - { - NodeEqPredicate(Diff::flatNodeEq e) : eq(e) { }; - bool operator()(const Node& n1, const Node& n2) const { return eq(n1, n2); }; - - private: - Diff::flatNodeEq eq; - }; - - std::vector - collectProperAttributes(const Node& n) - { - assert(n); - NamedNodeMap map = n.get_attributes(); - unsigned len = map.get_length(); - - std::vector res; - res.reserve(len); - for (unsigned i = 0; i < len; i++) - { - Node attr = map.item(i); - assert(attr); - if (attr.get_nodeName() != "xmlns" && attr.get_prefix() != "xmlns") res.push_back(attr); - } - - return res; - } - - bool - Diff::defaultFlatNodeEq(const Node& n1, const Node& n2) - { - assert(n1); - assert(n2); - - unsigned nodeType = n1.get_nodeType(); - if (nodeType != n2.get_nodeType()) return false; - - GdomeString ns1 = n1.get_namespaceURI(); - GdomeString ns2 = n2.get_namespaceURI(); - if (ns1 != ns2) return false; - - switch (nodeType) - { - case Node::ATTRIBUTE_NODE: - if (!ns1.null()) - { - assert(!ns2.null()); - if (n1.get_localName() != n2.get_localName()) return false; - } - else - { - assert(ns2.null()); - if (n1.get_nodeName() != n2.get_nodeName()) return false; - } - // WARNING: fallback for checking node value - case Node::TEXT_NODE: - case Node::CDATA_SECTION_NODE: - if (n1.get_nodeValue() != n2.get_nodeValue()) return false; - return true; - case Node::ELEMENT_NODE: - { - //cout << "comparing: " << n1.get_nodeName() << " ? " << n2.get_nodeName() << endl; - if (!ns1.null()) - { - assert(!ns2.null()); - if (n1.get_localName() != n2.get_localName()) return false; - } - else - { - assert(ns2.null()); - if (n1.get_nodeName() != n2.get_nodeName()) return false; - } -#if 1 - std::vector m1 = collectProperAttributes(n1); - std::vector m2 = collectProperAttributes(n2); - if (m1.size() != m2.size()) return false; - - for (unsigned i = 0; i < m1.size(); i++) - { - std::vector::iterator p2 = std::find_if(m2.begin(), m2.end(), std::bind2nd(NodeEqPredicate(defaultFlatNodeEq), m1[i])); - if (p2 == m2.end()) return false; - } -#endif - } - return true; - default: - return true; - } - - } - - void - Diff::sameChunk(const Node& res, unsigned long n) const - { - assert(n > 0); - Element s = doc.createElementNS(DDIFF_NS_URI, "diff:same"); - if (n != 1) - { - std::ostringstream os; - os << n; - s.setAttribute("count", os.str()); - } - res.appendChild(s); - } - - Node - Diff::diffNodes(const Node& p1, const Node& p2) const - { - if (eq(p1, p2)) - { - Element m = doc.createElementNS(DDIFF_NS_URI, "diff:merge"); - if (diffChildren(p1, p2, m)) return m; - else return Node(); - } - else - { - Element r = doc.createElementNS(DDIFF_NS_URI, "diff:replace"); - r.appendChild(doc.importNode(p2, true)); - return r; - } - } - - bool - Diff::diffChildren(const Node& n1, const Node& n2, const Node& res) const - { - assert(n1); - assert(n2); - assert(res); - - Node p1 = n1.get_firstChild(); - Node p2 = n2.get_firstChild(); - bool same = true; - unsigned nSame = 0; - while (p1 && p2) - { - if (Node d = diffNodes(p1, p2)) - { - same = false; - if (nSame > 0) - { - sameChunk(res, nSame); - nSame = 0; - } - res.appendChild(d); - } - else - nSame++; - - p1 = p1.get_nextSibling(); - p2 = p2.get_nextSibling(); - } - - if (p1) - { - same = false; - if (nSame > 0) - { - sameChunk(res, nSame); - nSame = 0; - } - - unsigned nRemoved = 0; - while (p1) - { - nRemoved++; - p1 = p1.get_nextSibling(); - } - - if (nRemoved > 0) - { - Element r = doc.createElementNS(DDIFF_NS_URI, "diff:remove"); - if (nRemoved > 1) - { - std::ostringstream os; - os << nRemoved; - r.setAttribute("count", os.str()); - } - res.appendChild(r); - } - } - - if (p2) - { - same = false; - if (nSame > 0) - { - sameChunk(res, nSame); - nSame = 0; - } - - Element i = doc.createElementNS(DDIFF_NS_URI, "diff:insert"); - while (p2) - { - i.appendChild(doc.importNode(p2, true)); - p2 = p2.get_nextSibling(); - } - res.appendChild(i); - } - - return !same; - } - - static Node - getFirstElement(const Node& n) - { - Node p = n.get_firstChild(); - while (p && p.get_nodeType() != Node::ELEMENT_NODE) - p = p.get_nextSibling(); - return p; - } - - static Node - getNextElement(const Node& n) - { - Node p = n.get_nextSibling(); - while (p && p.get_nodeType() != Node::ELEMENT_NODE) - p = p.get_nextSibling(); - return p; - } - - void - Diff::patchRootNode(const Node& node, const Element& elem) const - { - GdomeString name = elem.get_localName(); - if (name == "same") - { - if (elem.hasAttribute("count")) - { - unsigned count; - std::istringstream is(elem.getAttribute("count")); - is >> count; - assert(count == 1); - } - } - else if (name == "replace") - { - Document d1 = node.get_ownerDocument(); - Node parent = node.get_parentNode(); - assert(parent); -#if 0 - /* the following patch is because of gdome2 bug that prevents from - * replacing the root element of a document. - */ - assert(!node.get_previousSibling()); - assert(!node.get_nextSibling()); - parent.removeChild(node); - parent.appendChild(d1.importNode(getFirstElement(elem), true)); -#endif - parent.replaceChild(d1.importNode(getFirstElement(elem), true), node); - } - else if (name == "merge") - patchChildren(node, elem); - else - assert(0); - } - - void - Diff::patchChildren(const Node& n1, const Element& e2) const - { - Node p1 = n1.get_firstChild(); - Element p2 = getFirstElement(e2); - while (p2) - { - GdomeString name = p2.get_localName(); - if (name == "same") - { - unsigned count = 1; - if (p2.hasAttribute("count")) - { - std::istringstream is(p2.getAttribute("count")); - is >> count; - } - while (count-- > 0) - { - if (!p1) throw BADDiff("too few nodes in original document (same)"); - p1 = p1.get_nextSibling(); - } - } - else if (name == "replace") - { - Document d1 = n1.get_ownerDocument(); - if (!p1) throw BADDiff("no node to replace in original document"); - Node next = p1.get_nextSibling(); - n1.replaceChild(d1.importNode(p2.get_firstChild(), true), p1); - p1 = next; - } - else if (name == "insert") - { - Document d1 = n1.get_ownerDocument(); - for (Node i = p2.get_firstChild(); i; i = i.get_nextSibling()) - n1.insertBefore(d1.importNode(i, true), p1); - } - else if (name == "merge") - { - if (!p1) throw BADDiff("no node to merge in original document"); - patchChildren(p1, p2); - p1 = p1.get_nextSibling(); - } - else if (name == "remove") - { - unsigned count = 1; - if (p2.hasAttribute("count")) - { - std::istringstream is(p2.getAttribute("count")); - is >> count; - } - while (count-- > 0) - { - if (!p1) throw BADDiff("too few nodes in original document (remove)"); - Node next = p1.get_nextSibling(); - n1.removeChild(p1); - p1 = next; - } - } - else - assert(0); - - p2 = getNextElement(p2); - } - } - - void - Diff::patch() const - { - patchRootNode(dest, getFirstElement(doc.get_documentElement())); - } - -} diff --git a/helm/DEVEL/mathml_editor/src/Diff.hh b/helm/DEVEL/mathml_editor/src/Diff.hh deleted file mode 100644 index a047d6baa..000000000 --- a/helm/DEVEL/mathml_editor/src/Diff.hh +++ /dev/null @@ -1,77 +0,0 @@ -/* This file is part of EdiTeX, an editor of mathematical - * expressions based on TeX syntax. - * - * Copyright (C) 2002-2003 Luca Padovani , - * 2003 Paolo Marinelli . - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please visit the project's home page - * http://helm.cs.unibo.it/editex/ - * or send an email to - */ - -#ifndef __Diff_hh__ -#define __Diff_hh__ - -#include - -#define XMLNS_NS_URI "http://www.w3.org/2000/xmlns/" -#define DDIFF_NS_URI "http://helm.cs.unibo.it/2002/DDIFF" - -namespace GdomeSmartDOMExt -{ - - using namespace GdomeSmartDOM; - - class Diff - { - public: - typedef bool (*flatNodeEq)(const Node&, const Node&); - static bool defaultFlatNodeEq(const Node&, const Node&); - - private: - Diff(const Node& n, const Document& d, flatNodeEq e) : dest(n), doc(d), eq(e) { }; - - public: - static Diff diff(const Document&, const Document&, flatNodeEq = defaultFlatNodeEq); - static Diff diff(const Element&, const Element&, flatNodeEq = defaultFlatNodeEq); - - Document document(void) const { return doc; }; - Node node(void) const { return dest; }; - - void patch(void) const; - - struct BADDiff - { - BADDiff(const std::string& s) : msg(s) { }; - const std::string msg; - }; - - private: - Node diffNodes(const Node&, const Node&) const; - bool diffChildren(const Node&, const Node&, const Node&) const; - void sameChunk(const Node&, unsigned long) const; - void patchRootNode(const Node&, const Element&) const; - void patchChildren(const Node&, const Element&) const; - - Document doc; - Node dest; - flatNodeEq eq; - }; - -} - -#endif // __ddiff_hh__ diff --git a/helm/DEVEL/mathml_editor/src/ILPushLexer.cc b/helm/DEVEL/mathml_editor/src/ILPushLexer.cc deleted file mode 100644 index b82b52e5c..000000000 --- a/helm/DEVEL/mathml_editor/src/ILPushLexer.cc +++ /dev/null @@ -1,51 +0,0 @@ - -#include -#include - -#include "ALogger.hh" -#include "TToken.hh" -#include "ILPushLexer.hh" -#include "APushParser.hh" -#include "TDictionary.hh" - -ILPushLexer::ILPushLexer(ALogger& l, APushParser& p, TDictionary& d) : LPushLexer(l, p), dictionary(d) -{ - state = ACCEPT; -} - -bool -ILPushLexer::complete() -{ - if (state == MACRO) - { - std::list complete_list; - std::string new_buffer = dictionary.complete(buffer, complete_list); - - if (!complete_list.size()) - { - // no matching macro - logger.warning("no known macro with `" + buffer + "' prefix"); - } - else if (complete_list.size() == 1) - { - // good! we have found the macro - buffer = new_buffer; - } - else - { - // we have more than one matching macro - logger.warning("ambiguous prefix `" + buffer + "'"); - for (std::list::const_iterator p = complete_list.begin(); - p != complete_list.end(); - p++) - { - logger.info("Candidate: " + *p); - } - buffer = new_buffer; - } - - displayCursor(); - return true; - } - else return false; -} diff --git a/helm/DEVEL/mathml_editor/src/ILPushLexer.hh b/helm/DEVEL/mathml_editor/src/ILPushLexer.hh deleted file mode 100644 index 1af6f93ea..000000000 --- a/helm/DEVEL/mathml_editor/src/ILPushLexer.hh +++ /dev/null @@ -1,21 +0,0 @@ - -#ifndef __ILPushLexer_hh__ -#define __ILPushLexer_hh__ - -#include - -#include "LPushLexer.hh" - -class ILPushLexer : public LPushLexer -{ -public: - ILPushLexer(class ALogger&, class APushParser&, class TDictionary&); - ~ILPushLexer(void) { }; - - virtual bool complete(void); - -protected: - class TDictionary& dictionary; -}; - -#endif diff --git a/helm/DEVEL/mathml_editor/src/ITPushLexer.cc b/helm/DEVEL/mathml_editor/src/ITPushLexer.cc deleted file mode 100644 index b4d1b6c12..000000000 --- a/helm/DEVEL/mathml_editor/src/ITPushLexer.cc +++ /dev/null @@ -1,44 +0,0 @@ -#include -#include - -#include "ALogger.hh" -#include "TToken.hh" -#include "ITPushLexer.hh" -#include "APushParser.hh" -#include "TDictionary.hh" - -ITPushLexer::ITPushLexer(ALogger& l, APushParser& p, TDictionary& d) : TPushLexer(l, p), dictionary(d) -{ - state = ACCEPT; -} - -bool -ITPushLexer::complete() -{ - if (state == MACRO) - { - std::list complete_list; - std::string new_buffer = dictionary.complete(buffer, complete_list); - - if (!complete_list.size()) - { - // no matching macro - logger.warning("wrong prefix: nothing to complete"); - } - else if (complete_list.size() == 1) - { - // good! we have found the macro - buffer = new_buffer; - } - else - { - // we have more than one matching macro - logger.warning("prefix not sufficient"); - buffer = new_buffer; - } - - displayCursor(); - return true; - } - else return false; -} diff --git a/helm/DEVEL/mathml_editor/src/ITPushLexer.hh b/helm/DEVEL/mathml_editor/src/ITPushLexer.hh deleted file mode 100644 index 5b5ace351..000000000 --- a/helm/DEVEL/mathml_editor/src/ITPushLexer.hh +++ /dev/null @@ -1,20 +0,0 @@ - -#ifndef __ITPushLexer_hh__ -#define __ITPushLexer_hh__ - -#include - -#include "TPushLexer.hh" - -class ITPushLexer : public TPushLexer -{ -public: - ITPushLexer(class ALogger&, class APushParser&, class TDictionary&); - ~ITPushLexer(void) { }; - - virtual bool complete(void); -private: - class TDictionary& dictionary; -}; - -#endif diff --git a/helm/DEVEL/mathml_editor/src/LPushLexer.cc b/helm/DEVEL/mathml_editor/src/LPushLexer.cc deleted file mode 100644 index a16801bf0..000000000 --- a/helm/DEVEL/mathml_editor/src/LPushLexer.cc +++ /dev/null @@ -1,382 +0,0 @@ -/* This file is part of EdiTeX, an editor of mathematical - * expressions based on TeX syntax. - * - * Copyright (C) 2002-2003 Luca Padovani , - * 2003 Paolo Marinelli . - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please visit the project's home page - * http://helm.cs.unibo.it/editex/ - * or send an email to - */ - -#include -#include -#include - -#include "ALogger.hh" -#include "TToken.hh" -#include "LPushLexer.hh" -#include "APushParser.hh" - -LPushLexer::LPushLexer(ALogger& l, APushParser& p) : APushLexer(l, p) -{ - state = ACCEPT; -} - -void -LPushLexer::reset() -{ - buffer.erase(); - state = ACCEPT; - - displayCursor(); -} - -void -LPushLexer::flush() -{ - push(-1); -} - -void -LPushLexer::transaction(char ch, State newState) -{ - switch (ch) - { - case '{': parser.push(TToken(TToken::BEGIN)); break; - case '}': parser.push(TToken(TToken::END)); break; - case '$': parser.push(TToken(TToken::SHIFT)); break; - case '&': parser.push(TToken(TToken::ALIGN)); break; - case '\n': - case '\r': parser.push(TToken(TToken::EOL, ch)); break; - case '^': parser.push(TToken(TToken::SUPERSCRIPT)); break; - case '_': parser.push(TToken(TToken::SUBSCRIPT)); break; - case '\t': parser.push(TToken(TToken::IGNORABLE_SPACE, ch)); break; - case ' ': parser.push(TToken(TToken::SPACE, ch)); break; - case '~': parser.push(TToken(TToken::ACTIVE, ch)); break; - case '%': parser.push(TToken(TToken::COMMENT)); break; - default: parser.push(TToken(TToken::OTHER, ch)); break; - } - state = newState; -} - -void -LPushLexer::push(char ch) -{ - switch (state) - { - case ACCEPT: - if (ch == '\\') state = ESCAPE; - else if (ch == '#') state = PARAMETER; - else if (ch == -1) ; - else if (isalpha(ch)) - { - buffer.push_back(ch); - state = IDENTIFIER; - } - else if (isdigit(ch)) - { - buffer.push_back(ch); - state = NUMBER; - } - else transaction(ch, ACCEPT); - break; - case ESCAPE: - if (isalpha(ch)) - { - buffer.push_back(ch); - state = MACRO; - } - else if (ch == -1) error(); - else if (isdigit(ch)) - { - // in this case, the previous '\' is ignored - buffer.push_back(ch); - state = NUMBER; - } - else - { - parser.push(TToken(TToken::CONTROL, ch)); - state = ACCEPT; - } - break; - case MACRO: - if (ch == '\\') - { - parser.push(TToken(TToken::CONTROL, buffer)); - buffer.erase(); - state = ESCAPE; - } - else if (ch == '#') - { - parser.push(TToken(TToken::CONTROL, buffer)); - buffer.erase(); - state = PARAMETER; - } - else if (isalpha(ch)) - buffer.push_back(ch); - else if (ch == -1) - { - parser.push(TToken(TToken::CONTROL, buffer)); - buffer.erase(); - state = ACCEPT; - } - else if (isspace(ch)) - { - // we don't call transaction, because a white space is useful to exit from the macro, - // without "side effect". It's the TeX syntax. - parser.push(TToken(TToken::CONTROL, buffer)); - buffer.erase(); - state = ACCEPT; - } - else if (isdigit(ch)) - { - parser.push(TToken(TToken::CONTROL, buffer)); - buffer.erase(); - buffer.push_back(ch); - state = NUMBER; - } - else - { - parser.push(TToken(TToken::CONTROL, buffer)); - buffer.erase(); - transaction(ch, ACCEPT); - } - break; - case PARAMETER: - if (ch == -1) error(); - else - { - parser.push(TToken(TToken::PARAMETER, ch)); - state = ACCEPT; - } - break; - case IDENTIFIER: - if (ch == -1) - { - parser.push(TToken(TToken::LETTER, buffer)); - buffer.erase(); - state = ACCEPT; - } - else if (isalpha(ch) || isdigit(ch)) - { - buffer.push_back(ch); - } - else if (ch == '\\') state = ESCAPED_CHARACTER; - else if (ch == '#') - { - parser.push(TToken(TToken::LETTER, buffer)); - buffer.erase(); - state = PARAMETER; - } - else - { - parser.push(TToken(TToken::LETTER, buffer)); - buffer.erase(); - transaction(ch, ACCEPT); - } - break; - case ESCAPED_CHARACTER: - if ((ch == '-') || (ch == '_') || (ch == '/')) - { - buffer.push_back(ch); - state = IDENTIFIER; - } - else if (isalpha(ch)) - { - parser.push(TToken(TToken::LETTER, buffer)); - buffer.erase(); - buffer.push_back(ch); - state = MACRO; - } - else if (ch == -1) error(); - else if (isdigit(ch)) - { - parser.push(TToken(TToken::LETTER, buffer)); - buffer.erase(); - buffer.push_back(ch); - state = NUMBER; - } - else - { - parser.push(TToken(TToken::LETTER, buffer)); - buffer.erase(); - parser.push(TToken(TToken::CONTROL, ch)); - state = ACCEPT; - } - break; - case NUMBER: - if (isdigit(ch)) buffer.push_back(ch); - else if (isalpha(ch)) - { - parser.push(TToken(TToken::DIGIT, buffer)); - buffer.erase(); - buffer.push_back(ch); - state = IDENTIFIER; - } - else if (ch == -1) - { - parser.push(TToken(TToken::DIGIT, buffer)); - buffer.erase(); - state = ACCEPT; - } - else if (ch == '\\') - { - parser.push(TToken(TToken::DIGIT, buffer)); - buffer.erase(); - state = ESCAPE; - } - else if (ch == '#') - { - parser.push(TToken(TToken::DIGIT, buffer)); - buffer.erase(); - state = PARAMETER; - } - else - { - parser.push(TToken(TToken::DIGIT, buffer)); - buffer.erase(); - transaction(ch, ACCEPT); - } - break; - default: - assert(0); - break; - } - - displayCursor(); - -} - -void -LPushLexer::drop(bool alt) -{ - std::string restore = ""; - - switch (state) - { - case ACCEPT: - { - restore = parser.drop(alt); - long bs_pos = restore.find('\\'); - if ((restore.length() > 0) && (bs_pos != std::string::npos)) - { - // in this case we have to control the blackslash's position - if (bs_pos == 0) - { - //logger.debug(restore); - buffer = std::string(restore, 1, restore.length() - 1); - state = (buffer.length() > 0) ? MACRO : ESCAPE; - } - else - { - assert(bs_pos == restore.length() - 1); - buffer = std::string(restore, 0, bs_pos); - state = ESCAPED_CHARACTER; - } - } - else if (restore.length() > 0 && isdigit(restore[0])) - { - buffer = restore; - state = NUMBER; - } - else if (restore.length() > 0 && isalpha(restore[0])) - { - buffer = restore; - state = IDENTIFIER; - } - } - break; -/* if (restore.length() > 0 && restore[0] == '\\') - { - logger.debug(restore); - buffer = std::string(restore, 1, restore.length() - 1); - state = (buffer.length() > 0) ? MACRO : ESCAPE; - } - else if (restore.length() > 0 && isdigit(restore[0])) - { - buffer = restore; - state = NUMBER; - } - else if (restore.length() > 0 && isalpha(restore[0])) - { - buffer = restore; - state = IDENTIFIER; - } - break;*/ - case ESCAPED_CHARACTER: - state = IDENTIFIER; - break; - case ESCAPE: - state = ACCEPT; - break; - case MACRO: - if (alt) buffer.erase(); - else buffer.erase(buffer.length() - 1, 1); - if (buffer.length() == 0) state = ESCAPE; - break; - case IDENTIFIER: - switch (buffer[buffer.length() - 1]) - { - case '-': - case '_': - buffer.erase(buffer.length() - 1, 1); - if (alt) state = ESCAPED_CHARACTER; - break; - default: - if (alt) buffer.erase(); - else buffer.erase(buffer.length() - 1, 1); - if (buffer.length() == 0) state = ACCEPT; - break; - } - break; - case NUMBER: - if (alt) buffer.erase(); - else buffer.erase(buffer.length() - 1, 1); - if (buffer.length() == 0) state = ACCEPT; - break; - case PARAMETER: - default: - //assert(0); - error(); - break; - } - - displayCursor(); - -} - -void -LPushLexer::displayCursor() -{ - switch (state) - { - case ESCAPE: parser.setCursorHint("\\"); break; - case ESCAPED_CHARACTER: parser.setCursorHint(buffer + "\\"); break; - case MACRO: parser.setCursorHint("\\" + buffer); break; - case PARAMETER: parser.setCursorHint("#"); break; - case IDENTIFIER: parser.setCursorHint(buffer); break; - case NUMBER: parser.setCursorHint(buffer); break; - default: parser.setCursorHint(""); break; - } -} - -bool -LPushLexer::error() const -{ - return false; -} diff --git a/helm/DEVEL/mathml_editor/src/LPushLexer.hh b/helm/DEVEL/mathml_editor/src/LPushLexer.hh deleted file mode 100644 index a9f95e200..000000000 --- a/helm/DEVEL/mathml_editor/src/LPushLexer.hh +++ /dev/null @@ -1,65 +0,0 @@ -/* This file is part of EdiTeX, an editor of mathematical - * expressions based on TeX syntax. - * - * Copyright (C) 2002-2003 Luca Padovani , - * 2003 Paolo Marinelli . - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please visit the project's home page - * http://helm.cs.unibo.it/editex/ - * or send an email to - */ - -#ifndef __LPushLexer_hh__ -#define __LPushLexer_hh__ - -#include - -#include "APushLexer.hh" - -class LPushLexer : public APushLexer -{ -public: - LPushLexer(class ALogger&, class APushParser&); - virtual ~LPushLexer() { }; - - virtual void push(char); - virtual void drop(bool); - virtual bool complete(void) {}; - virtual void reset(void); - virtual void flush(void); - virtual bool error(void) const; - -protected: - enum State - { - ACCEPT, - ESCAPE, - MACRO, - PARAMETER, - IDENTIFIER, - ESCAPED_CHARACTER, - NUMBER - }; - - void transaction(char, State); - void displayCursor(void); - - State state; - std::string buffer; -}; - -#endif // __LPushLexer_hh__ diff --git a/helm/DEVEL/mathml_editor/src/Makefile.am b/helm/DEVEL/mathml_editor/src/Makefile.am deleted file mode 100644 index fd3ef5411..000000000 --- a/helm/DEVEL/mathml_editor/src/Makefile.am +++ /dev/null @@ -1,55 +0,0 @@ - -lib_LTLIBRARIES = libeditex.la - -libeditex_la_LDFLAGS = -version-info @EDITEX_VERSION_INFO@ - -libeditex_la_LIBADD = \ - $(GMETADOM_LIBS) \ - $(GDOMEXSLT_LIBS) \ - -lstdc++ - -libeditex_la_SOURCES = \ - Diff.cc \ - CLoggerConsole.cc \ - ITPushLexer.cc \ - ILPushLexer.cc \ - TPushLexer.cc \ - LPushLexer.cc \ - APushParser.cc \ - TPushParser.cc \ - AMathMLFactory.cc \ - CMathMLFactoryXSLT.cc \ - CMathMLFactoryXSLTDiff.cc \ - TDictionary.cc \ - TDocument.cc \ - TNode.cc \ - TTokenizer.cc - -pkginclude_HEADERS = \ - Diff.hh \ - ALogger.hh \ - CLoggerConsole.hh \ - APushLexer.hh \ - APushParser.hh \ - AMathMLFactory.hh \ - AMathMLConsumer.hh \ - CMathMLFactoryXSLT.hh \ - CMathMLFactoryXSLTDiff.hh \ - TPushLexer.hh \ - LPushLexer.hh \ - ITPushLexer.hh \ - ILPushLexer.hh \ - TPushParser.hh \ - TTokenizer.hh \ - TDictionary.hh \ - TDocument.hh \ - TNode.hh \ - TListener.hh \ - TToken.hh \ - globals.hh \ - dom.hh - -INCLUDES = \ - $(GMETADOM_CFLAGS) \ - $(GDOMEXSLT_CFLAGS) - diff --git a/helm/DEVEL/mathml_editor/src/Makefile.in b/helm/DEVEL/mathml_editor/src/Makefile.in deleted file mode 100644 index 0863b0101..000000000 --- a/helm/DEVEL/mathml_editor/src/Makefile.in +++ /dev/null @@ -1,431 +0,0 @@ -# Makefile.in generated automatically by automake 1.4-p4 from Makefile.am - -# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - - -SHELL = @SHELL@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -infodir = @infodir@ -mandir = @mandir@ -includedir = @includedir@ -oldincludedir = /usr/include - -DESTDIR = - -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ - -top_builddir = .. - -ACLOCAL = @ACLOCAL@ -AUTOCONF = @AUTOCONF@ -AUTOMAKE = @AUTOMAKE@ -AUTOHEADER = @AUTOHEADER@ - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -transform = @program_transform_name@ - -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -host_alias = @host_alias@ -host_triplet = @host@ -AS = @AS@ -CC = @CC@ -CFLAGS = @CFLAGS@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ -EDITEX_VERSION_INFO = @EDITEX_VERSION_INFO@ -EXEEXT = @EXEEXT@ -GDOMEXSLT_CFLAGS = @GDOMEXSLT_CFLAGS@ -GDOMEXSLT_LIBS = @GDOMEXSLT_LIBS@ -GMETADOM_CFLAGS = @GMETADOM_CFLAGS@ -GMETADOM_LIBS = @GMETADOM_LIBS@ -GTKMATHVIEW_CFLAGS = @GTKMATHVIEW_CFLAGS@ -GTKMATHVIEW_LIBS = @GTKMATHVIEW_LIBS@ -HAVE_OCAMLC = @HAVE_OCAMLC@ -HAVE_OCAMLDEP = @HAVE_OCAMLDEP@ -HAVE_OCAMLFIND = @HAVE_OCAMLFIND@ -HAVE_OCAMLMKLIB = @HAVE_OCAMLMKLIB@ -HAVE_OCAMLOPT = @HAVE_OCAMLOPT@ -LDFLAGS = @LDFLAGS@ -LIBTOOL = @LIBTOOL@ -LN_S = @LN_S@ -MAKEINFO = @MAKEINFO@ -MLGDOME_CFLAGS = @MLGDOME_CFLAGS@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OCAMLC = @OCAMLC@ -OCAMLDEP = @OCAMLDEP@ -OCAMLFIND = @OCAMLFIND@ -OCAMLMKLIB = @OCAMLMKLIB@ -OCAMLOPT = @OCAMLOPT@ -OCAMLSTDLIBDIR = @OCAMLSTDLIBDIR@ -OCAMLSTUBDIR = @OCAMLSTUBDIR@ -OCAML_INCLUDE_DIR = @OCAML_INCLUDE_DIR@ -PACKAGE = @PACKAGE@ -RANLIB = @RANLIB@ -STRIP = @STRIP@ -VERSION = @VERSION@ - -lib_LTLIBRARIES = libeditex.la - -libeditex_la_LDFLAGS = -version-info @EDITEX_VERSION_INFO@ - -libeditex_la_LDADDS = $(GMETADOM_LIBS) $(GDOMEXSLT_LIBS) - - -libeditex_la_SOURCES = Diff.cc CLoggerConsole.cc ITPushLexer.cc ILPushLexer.cc TPushLexer.cc LPushLexer.cc APushParser.cc TPushParser.cc CMathMLFactoryXSLT.cc CMathMLFactoryXSLTDiff.cc TDictionary.cc TDocument.cc TNode.cc TTokenizer.cc - - -pkginclude_HEADERS = Diff.hh ALogger.hh CLoggerConsole.hh APushLexer.hh APushParser.hh AMathMLFactory.hh AMathMLConsumer.hh CMathMLFactoryXSLT.hh CMathMLFactoryXSLTDiff.hh TPushLexer.hh LPushLexer.hh ITPushLexer.hh ILPushLexer.hh TPushParser.hh TTokenizer.hh TDictionary.hh TDocument.hh TNode.hh TListener.hh TToken.hh globals.hh dom.hh - - -INCLUDES = $(GMETADOM_CFLAGS) $(GDOMEXSLT_CFLAGS) - -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_HEADER = ../config.h -CONFIG_CLEAN_FILES = -LTLIBRARIES = $(lib_LTLIBRARIES) - - -DEFS = @DEFS@ -I. -I$(srcdir) -I.. -LIBS = @LIBS@ -libeditex_la_LIBADD = -libeditex_la_OBJECTS = Diff.lo CLoggerConsole.lo ITPushLexer.lo \ -ILPushLexer.lo TPushLexer.lo LPushLexer.lo APushParser.lo \ -TPushParser.lo CMathMLFactoryXSLT.lo CMathMLFactoryXSLTDiff.lo \ -TDictionary.lo TDocument.lo TNode.lo TTokenizer.lo -CXXFLAGS = @CXXFLAGS@ -CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(LDFLAGS) -o $@ -HEADERS = $(pkginclude_HEADERS) - -DIST_COMMON = Makefile.am Makefile.in - - -DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) - -TAR = tar -GZIP_ENV = --best -DEP_FILES = .deps/APushParser.P .deps/CLoggerConsole.P \ -.deps/CMathMLFactoryXSLT.P .deps/CMathMLFactoryXSLTDiff.P .deps/Diff.P \ -.deps/ILPushLexer.P .deps/ITPushLexer.P .deps/LPushLexer.P \ -.deps/TDictionary.P .deps/TDocument.P .deps/TNode.P .deps/TPushLexer.P \ -.deps/TPushParser.P .deps/TTokenizer.P -SOURCES = $(libeditex_la_SOURCES) -OBJECTS = $(libeditex_la_OBJECTS) - -all: all-redirect -.SUFFIXES: -.SUFFIXES: .S .c .cc .lo .o .obj .s -$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) - cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile - -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES) - cd $(top_builddir) \ - && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status - - -mostlyclean-libLTLIBRARIES: - -clean-libLTLIBRARIES: - -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) - -distclean-libLTLIBRARIES: - -maintainer-clean-libLTLIBRARIES: - -install-libLTLIBRARIES: $(lib_LTLIBRARIES) - @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(libdir) - @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ - if test -f $$p; then \ - echo "$(LIBTOOL) --mode=install $(INSTALL) $$p $(DESTDIR)$(libdir)/$$p"; \ - $(LIBTOOL) --mode=install $(INSTALL) $$p $(DESTDIR)$(libdir)/$$p; \ - else :; fi; \ - done - -uninstall-libLTLIBRARIES: - @$(NORMAL_UNINSTALL) - list='$(lib_LTLIBRARIES)'; for p in $$list; do \ - $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p; \ - done - -# FIXME: We should only use cygpath when building on Windows, -# and only if it is available. -.c.obj: - $(COMPILE) -c `cygpath -w $<` - -.s.o: - $(COMPILE) -c $< - -.S.o: - $(COMPILE) -c $< - -mostlyclean-compile: - -rm -f *.o core *.core - -rm -f *.$(OBJEXT) - -clean-compile: - -distclean-compile: - -rm -f *.tab.c - -maintainer-clean-compile: - -.s.lo: - $(LIBTOOL) --mode=compile $(COMPILE) -c $< - -.S.lo: - $(LIBTOOL) --mode=compile $(COMPILE) -c $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -distclean-libtool: - -maintainer-clean-libtool: - -libeditex.la: $(libeditex_la_OBJECTS) $(libeditex_la_DEPENDENCIES) - $(CXXLINK) -rpath $(libdir) $(libeditex_la_LDFLAGS) $(libeditex_la_OBJECTS) $(libeditex_la_LIBADD) $(LIBS) -.cc.o: - $(CXXCOMPILE) -c $< -.cc.obj: - $(CXXCOMPILE) -c `cygpath -w $<` -.cc.lo: - $(LTCXXCOMPILE) -c $< - -install-pkgincludeHEADERS: $(pkginclude_HEADERS) - @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) - @list='$(pkginclude_HEADERS)'; for p in $$list; do \ - if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \ - echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p"; \ - $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p; \ - done - -uninstall-pkgincludeHEADERS: - @$(NORMAL_UNINSTALL) - list='$(pkginclude_HEADERS)'; for p in $$list; do \ - rm -f $(DESTDIR)$(pkgincludedir)/$$p; \ - done - -tags: TAGS - -ID: $(HEADERS) $(SOURCES) $(LISP) - list='$(SOURCES) $(HEADERS)'; \ - unique=`for i in $$list; do echo $$i; done | \ - awk ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - here=`pwd` && cd $(srcdir) \ - && mkid -f$$here/ID $$unique $(LISP) - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS)'; \ - unique=`for i in $$list; do echo $$i; done | \ - awk ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ - || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) - -mostlyclean-tags: - -clean-tags: - -distclean-tags: - -rm -f TAGS ID - -maintainer-clean-tags: - -distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) - -subdir = src - -distdir: $(DISTFILES) - here=`cd $(top_builddir) && pwd`; \ - top_distdir=`cd $(top_distdir) && pwd`; \ - distdir=`cd $(distdir) && pwd`; \ - cd $(top_srcdir) \ - && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu src/Makefile - @for file in $(DISTFILES); do \ - d=$(srcdir); \ - if test -d $$d/$$file; then \ - cp -pr $$d/$$file $(distdir)/$$file; \ - else \ - test -f $(distdir)/$$file \ - || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ - || cp -p $$d/$$file $(distdir)/$$file || :; \ - fi; \ - done - -DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :) - --include $(DEP_FILES) - -mostlyclean-depend: - -clean-depend: - -distclean-depend: - -rm -rf .deps - -maintainer-clean-depend: - -%.o: %.c - @echo '$(COMPILE) -c $<'; \ - $(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $< - @-cp .deps/$(*F).pp .deps/$(*F).P; \ - tr ' ' '\012' < .deps/$(*F).pp \ - | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \ - >> .deps/$(*F).P; \ - rm .deps/$(*F).pp - -%.lo: %.c - @echo '$(LTCOMPILE) -c $<'; \ - $(LTCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $< - @-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \ - < .deps/$(*F).pp > .deps/$(*F).P; \ - tr ' ' '\012' < .deps/$(*F).pp \ - | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \ - >> .deps/$(*F).P; \ - rm -f .deps/$(*F).pp - -%.o: %.cc - @echo '$(CXXCOMPILE) -c $<'; \ - $(CXXCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $< - @-cp .deps/$(*F).pp .deps/$(*F).P; \ - tr ' ' '\012' < .deps/$(*F).pp \ - | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \ - >> .deps/$(*F).P; \ - rm .deps/$(*F).pp - -%.lo: %.cc - @echo '$(LTCXXCOMPILE) -c $<'; \ - $(LTCXXCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $< - @-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \ - < .deps/$(*F).pp > .deps/$(*F).P; \ - tr ' ' '\012' < .deps/$(*F).pp \ - | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \ - >> .deps/$(*F).P; \ - rm -f .deps/$(*F).pp -info-am: -info: info-am -dvi-am: -dvi: dvi-am -check-am: all-am -check: check-am -installcheck-am: -installcheck: installcheck-am -install-exec-am: install-libLTLIBRARIES -install-exec: install-exec-am - -install-data-am: install-pkgincludeHEADERS -install-data: install-data-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am -install: install-am -uninstall-am: uninstall-libLTLIBRARIES uninstall-pkgincludeHEADERS -uninstall: uninstall-am -all-am: Makefile $(LTLIBRARIES) $(HEADERS) -all-redirect: all-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install -installdirs: - $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(pkgincludedir) - - -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* - -maintainer-clean-generic: -mostlyclean-am: mostlyclean-libLTLIBRARIES mostlyclean-compile \ - mostlyclean-libtool mostlyclean-tags mostlyclean-depend \ - mostlyclean-generic - -mostlyclean: mostlyclean-am - -clean-am: clean-libLTLIBRARIES clean-compile clean-libtool clean-tags \ - clean-depend clean-generic mostlyclean-am - -clean: clean-am - -distclean-am: distclean-libLTLIBRARIES distclean-compile \ - distclean-libtool distclean-tags distclean-depend \ - distclean-generic clean-am - -rm -f libtool - -distclean: distclean-am - -maintainer-clean-am: maintainer-clean-libLTLIBRARIES \ - maintainer-clean-compile maintainer-clean-libtool \ - maintainer-clean-tags maintainer-clean-depend \ - maintainer-clean-generic distclean-am - @echo "This command is intended for maintainers to use;" - @echo "it deletes files that may require special tools to rebuild." - -maintainer-clean: maintainer-clean-am - -.PHONY: mostlyclean-libLTLIBRARIES distclean-libLTLIBRARIES \ -clean-libLTLIBRARIES maintainer-clean-libLTLIBRARIES \ -uninstall-libLTLIBRARIES install-libLTLIBRARIES mostlyclean-compile \ -distclean-compile clean-compile maintainer-clean-compile \ -mostlyclean-libtool distclean-libtool clean-libtool \ -maintainer-clean-libtool uninstall-pkgincludeHEADERS \ -install-pkgincludeHEADERS tags mostlyclean-tags distclean-tags \ -clean-tags maintainer-clean-tags distdir mostlyclean-depend \ -distclean-depend clean-depend maintainer-clean-depend info-am info \ -dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ -install-exec install-data-am install-data install-am install \ -uninstall-am uninstall all-redirect all-am all installdirs \ -mostlyclean-generic distclean-generic clean-generic \ -maintainer-clean-generic clean mostlyclean distclean maintainer-clean - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/helm/DEVEL/mathml_editor/src/TDictionary.cc b/helm/DEVEL/mathml_editor/src/TDictionary.cc deleted file mode 100644 index 25f6c9674..000000000 --- a/helm/DEVEL/mathml_editor/src/TDictionary.cc +++ /dev/null @@ -1,316 +0,0 @@ -/* This file is part of EdiTeX, an editor of mathematical - * expressions based on TeX syntax. - * - * Copyright (C) 2002-2003 Luca Padovani , - * 2003 Paolo Marinelli . - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please visit the project's home page - * http://helm.cs.unibo.it/editex/ - * or send an email to - */ - -#include -#include - -#include "dom.hh" -#include "config.dirs" -#include "TDictionary.hh" -#include "TTokenizer.hh" -#include "CLoggerConsole.hh" - -static TDictionary::Entry undefinedEntry; - -static std::string -getURIBase(const std::string& uri) -{ - std::string::size_type slash = uri.rfind('/'); - if (slash != std::string::npos) return uri.substr(0, slash + 1); - else return ""; -} - -static std::string -getURIName(const std::string& uri) -{ - std::string::size_type slash = uri.rfind('/'); - if (slash != std::string::npos) return uri.substr(slash + 1, uri.size()); - else return uri; -} - -std::string -TDictionary::getDefaultDictionaryPath() -{ - return PKGDATADIR"/dictionary-tex.xml"; -} - -void -TDictionary::load(const std::string& uri) -{ - load(getURIName(uri), getURIBase(uri)); -} - -void -TDictionary::load(const std::string& name, const std::string& base) -{ - logger.debug("Dictionary: loading `" + base + name + "'"); - - DOM::DOMImplementation di; - DOM::Document doc = di.createDocumentFromURI((base + name).c_str()); - assert(doc); - load(doc, base); -} - -void -TDictionary::load(const DOM::Document& doc, const std::string& base) -{ - assert(doc); - - DOM::Element root = doc.get_documentElement(); - assert(root); - - CLoggerConsole logger; - TTokenizer tokenizer(logger); - - for (DOM::Node p = root.get_firstChild(); p; p = p.get_nextSibling()) - if (p.get_nodeType() == DOM::Node::ELEMENT_NODE && p.get_nodeName() == "include") - { - DOM::Element el = p; - assert(el); - if (el.hasAttribute("href")) - { - // WARNING: this may result into an infinite loop! - std::string href = el.getAttribute("href"); - std::string newBase = getURIBase(href); - std::string newName = getURIName(href); - if (newBase != "") load(newName, newBase); - else load(newName, base); - } - else - logger.warning("Dictionary: include statement with no href attribute (ignored)"); - } - else if (p.get_nodeType() == DOM::Node::ELEMENT_NODE && p.get_nodeName() == "entry") - { - DOM::Element el = p; - assert(el); - assert(el.hasAttribute("name")); - - std::string name = el.getAttribute("name"); - if (entries.find(name) != entries.end()) - logger.info("Dictionary: `" + name + "' is being redefined"); - - Entry entry; - - if (el.hasAttribute("class")) - { - std::string cls = el.getAttribute("class"); - if (cls == "o") entry.cls = OPERATOR; - else if (cls == "i") entry.cls = IDENTIFIER; - else if (cls == "n") entry.cls == NUMBER; - else entry.cls = MACRO; - } - else - entry.cls = MACRO; - - if (el.hasAttribute("val")) - { - entry.value = el.getAttribute("val"); - if (entry.cls == MACRO) - logger.warning("Dictionary: `" + name + "' has a specified value, but is classified as macro"); - } - - if (el.hasAttribute("pattern")) - { - if (entry.cls != MACRO) - logger.warning("Dictionary: `" + name + "' has a specified pattern, but is not classified as macro"); - - std::string pattern = el.getAttribute("pattern"); - if (pattern == "{}") - entry.leftOpen = entry.rightOpen = 1; - else if (pattern == "{") - entry.leftOpen = 1; - else if (pattern == "}") - entry.rightOpen = 1; - else - entry.pattern = tokenizer.tokenize(pattern); - } - -#if 0 - if (el.hasAttribute("infix")) - { - std::istringstream is(el.getAttribute("infix")); - unsigned infix; - is >> infix; - entry.infix = infix; - if (!el.hasAttribute("prefix")) entry.prefix = infix; - if (!el.hasAttribute("postfix")) entry.postfix = infix; - } - - if (el.hasAttribute("prefix")) - { - std::istringstream is(el.getAttribute("prefix")); - unsigned prefix; - is >> prefix; - entry.prefix = prefix; - if (!el.hasAttribute("infix")) - { - entry.infix = prefix; - if (!el.hasAttribute("postfix")) entry.postfix = prefix; - } - } - - if (el.hasAttribute("postfix")) - { - std::istringstream is(el.getAttribute("postfix")); - unsigned postfix; - is >> postfix; - entry.postfix = postfix; - if (!el.hasAttribute("infix")) - { - entry.infix = postfix; - if (!el.hasAttribute("prefix")) entry.prefix = postfix; - } - } -#endif - - if (el.hasAttribute("limits")) - { - std::istringstream is(el.getAttribute("limits")); - unsigned limits; - is >> limits; - entry.limits = limits; - } - - if (el.hasAttribute("embellishment")) - { - std::istringstream is(el.getAttribute("embellishment")); - unsigned embellishment; - is >> embellishment; - entry.embellishment = embellishment; - } - - if (el.hasAttribute("delimiter")) - { - if (entry.cls != OPERATOR && !entry.embellishment) - logger.warning("Dictionary: `" + name + "' delimiter ignored for non-operator"); - - std::istringstream is(el.getAttribute("delimiter")); - unsigned delimiter; - is >> delimiter; - entry.delimiter = delimiter; - } - - if (el.hasAttribute("table")) - { - if (entry.cls != MACRO) - logger.warning("Dictionary: `" + name + "' table ignored for non-macro"); - - std::istringstream is(el.getAttribute("table")); - unsigned table; - is >> table; - entry.table = table; - } - - entries[name] = entry; - } -} - -const TDictionary::Entry& -TDictionary::find(const std::string& name) const -{ - Dictionary::const_iterator p = entries.find(name); - if (p != entries.end()) return (*p).second; - else - { - logger.warning("unknown entry `" + name + "'"); - return undefinedEntry; - } -} - -std::string -TDictionary::complete(const std::string prefix, std::list& complete_list) const -{ - bool no_match = true; - std::string new_prefix = ""; - for (Dictionary::const_iterator i = entries.begin(); i != entries.end(); i++) - { - if ((*i).first.find(prefix) == 0) - { - complete_list.push_front((*i).first); - if (no_match) - { - // it's the first match - no_match = false; - new_prefix = (*i).first; - } - else - { - // in this case, new_prefix has been set yet. - std::string s1 = (*i).first.substr(prefix.length()); // s1 is the high part of the matching string - std::string s2 = new_prefix.substr(prefix.length()); // s2 is the high part of new_prefix -#if 0 - long j = 0; // it's the number of common characters - while (s1[j] == s2[j]) j++; -#endif - std::string::const_iterator i1 = s1.begin(); - std::string::const_iterator i2 = s2.begin(); - while (i1 != s1.end() && i2 != s2.end() && *i1 == *i2) i1++, i2++; - new_prefix = prefix + s1.substr(0, i1 - s1.begin()); - //new_prefix = (j) ? prefix + s1.substr(0, i1 - s1.begin()) : prefix; - } - } - } - - return new_prefix; -} - -bool -TDictionary::Entry::paramDelimited(unsigned i) const -{ - assert(i < pattern.size()); - assert(pattern[i].category == TToken::PARAMETER); - // a parameter is delimited if it is NOT the last one - // AND the next argument is not a parameter - return i + 1 < pattern.size() && pattern[i + 1].category != TToken::PARAMETER; -} - -bool -TDictionary::Entry::lastDelimiter(unsigned i) const -{ - assert(i < pattern.size()); - assert(pattern[i].category != TToken::PARAMETER); - // a token is the last delimiter if it is the last token - // of the pattern or if the next token is a parameter) - return i + 1 == pattern.size() || pattern[i + 1].category == TToken::PARAMETER; -} - -unsigned -TDictionary::Entry::previousParam(unsigned i) const -{ - // this method return the position in the pattern of the - // parameter placed in a position preceding i. - // If no preceding i parameter present, the method return - // pattern.size(). - // To know the position of the last parameter, call this - // method with i == pattern.size() - unsigned j = i - 1; - - while (pattern[j].category != TToken::PARAMETER) - { - if (j) j--; - else return pattern.size(); - } - return j; -} diff --git a/helm/DEVEL/mathml_editor/src/TDictionary.hh b/helm/DEVEL/mathml_editor/src/TDictionary.hh deleted file mode 100644 index 4864630f9..000000000 --- a/helm/DEVEL/mathml_editor/src/TDictionary.hh +++ /dev/null @@ -1,129 +0,0 @@ -/* This file is part of EdiTeX, an editor of mathematical - * expressions based on TeX syntax. - * - * Copyright (C) 2002-2003 Luca Padovani , - * 2003 Paolo Marinelli . - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please visit the project's home page - * http://helm.cs.unibo.it/editex/ - * or send an email to - */ - -#ifndef __TDictionary_hh__ -#define __TDictionary_hh__ - -#include - -#include -#include -#if defined(HAVE_EXT_HASH_MAP) -#include -#elif defined(HAVE_HASH_MAP) -#include -#else -#error "no hash_map could be found" -#endif -#include - -#include "dom.hh" -#include "TToken.hh" - -class TDictionary -{ -public: - TDictionary(class ALogger& l) : logger(l) { }; - ~TDictionary() { }; - - enum Form - { - INFIX, - PREFIX, - POSTFIX - }; - - enum EntryClass - { - UNDEFINED, - MACRO, - OPERATOR, - IDENTIFIER, - NUMBER - }; - - struct Entry - { - Entry(void) - { - cls = UNDEFINED; - table = delimiter = limits = embellishment = leftOpen = rightOpen = 0; - }; - - std::vector pattern; - std::string value; - - bool defined(void) const { return cls != UNDEFINED; }; - bool hasArguments(void) const { return !pattern.empty(); }; - bool paramDelimited(unsigned) const; - bool lastDelimiter(unsigned) const; - unsigned previousParam(unsigned) const; - - EntryClass cls; - unsigned delimiter : 1; - unsigned limits : 1; - unsigned embellishment : 1; - unsigned leftOpen : 1; - unsigned rightOpen : 1; - unsigned table : 1; - }; - - static std::string getDefaultDictionaryPath(void); - - void load(const std::string&); - void load(const std::string&, const std::string&); - void load(const DOM::Document&, const std::string& = ""); - const Entry& find(const std::string&) const; - std::string complete(const std::string, std::list&) const; - -private: -#if defined(HAVE_EXT_HASH_MAP) - struct StringHash : public std::unary_function< std::string, size_t > - { size_t operator()(const std::string& s) const { return __gnu_cxx::hash()(s.c_str()); } }; -#elif defined(HAVE_HASH_MAP) - struct StringHash : public std::unary_function< std::string, size_t > - { size_t operator()(const std::string& s) const { return hash()(s.c_str()); } }; -#else -#error "no hash_map could be found" -#endif - -#if 0 - struct StringEq : public std::binary_function< std::string, std::string, bool > - { bool operator()(const std::string&, const class String*) const; }; -#endif - - class ALogger& logger; -#if defined(HAVE_EXT_HASH_MAP) - typedef __gnu_cxx::hash_map< std::string, Entry, StringHash > Dictionary; -#elif defined(HAVE_HASH_MAP) - typedef std::hash_map< std::string, Entry, StringHash > Dictionary; -#else -#error "no hash_map could be found" -#endif - Dictionary entries; -}; - -#endif // __TDictionary_hh__ - diff --git a/helm/DEVEL/mathml_editor/src/TDocument.cc b/helm/DEVEL/mathml_editor/src/TDocument.cc deleted file mode 100644 index ca4878e6c..000000000 --- a/helm/DEVEL/mathml_editor/src/TDocument.cc +++ /dev/null @@ -1,213 +0,0 @@ -/* This file is part of EdiTeX, an editor of mathematical - * expressions based on TeX syntax. - * - * Copyright (C) 2002-2003 Luca Padovani , - * 2003 Paolo Marinelli . - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please visit the project's home page - * http://helm.cs.unibo.it/editex/ - * or send an email to - */ - -#include -#include - -#include "globals.hh" -#include "dom.hh" -#include "TDocument.hh" - -TDocument::TDocument() -{ - DOM::DOMImplementation di; - DOM::DocumentType dt; - doc = di.createDocument(TML_NS_URI, "tml:tex", dt); - DOM::Element root = doc.get_documentElement(); - assert(root); - root.setAttributeNS(XMLNS_NS_URI, "xmlns:tml", TML_NS_URI); - - DOM::EventTarget et(doc); - assert(et); - et.addEventListener("DOMSubtreeModified", *this, false); -} - -TDocument::~TDocument() -{ - //DOM::Element root = doc.get_documentElement(); - DOM::EventTarget et(doc); - assert(doc); - et.removeEventListener("DOMSubtreeModified", *this, false); -} - -void -TDocument::reset() -{ - DOM::Element root = doc.createElementNS(TML_NS_URI, "tml:tex"); - root.setAttributeNS(XMLNS_NS_URI, "xmlns:tml", TML_NS_URI); - doc.replaceChild(root, doc.get_documentElement()); - clearDirty(); -} - -void -TDocument::serialize(const char* filename) const -{ - DOM::DOMImplementation di; - di.saveDocumentToFile(doc, filename, GDOME_SAVE_LIBXML_INDENT); -} - -std::string -TDocument::makeId(unsigned id) -{ - std::ostringstream os; - os << "I" << id; - return os.str(); -} - -TNode -TDocument::create(const std::string& name, unsigned id) const -{ - DOM::Element elem = doc.createElementNS(TML_NS_URI, "tml:" + name); - if (id > 0) elem.setAttribute("id", makeId(id)); - return elem; -} - -TNode -TDocument::createC(const std::string& name, unsigned id) const -{ - TNode m = create("c", id); - m["name"] = name; - return m; -} - -TNode -TDocument::createT(const std::string& name, const std::string& text, unsigned id) const -{ - TNode t = create(name, id); - t["val"] = text; - return t; -} - -unsigned -TDocument::nodeDepth(const DOM::Node& node) -{ - DOM::Node n = node; - - unsigned depth = 0; - while (n) - { - depth++; - n = n.get_parentNode(); - } - return depth; -} - -DOM::Node -TDocument::findCommonAncestor(const DOM::Node& node1, const DOM::Node& node2) -{ - DOM::Node n1 = node1; - DOM::Node n2 = node2; - - unsigned d1 = nodeDepth(n1); - unsigned d2 = nodeDepth(n2); - - // cout << "finding common ancestor " << d1 << " " << d2 << endl; - - while (d1 < d2) - { - assert(n2); - n2 = n2.get_parentNode(); - d2--; - } - - while (d1 > d2) - { - assert(n1); - n1 = n1.get_parentNode(); - d1--; - } - - while (n1 != n2) - { - assert(n1); - assert(n2); - n1 = n1.get_parentNode(); - n2 = n2.get_parentNode(); - } - - return n1; -} - -DOM::Node -TDocument::findIdNode(const DOM::Node& node) -{ - DOM::Node n = node; - while (n) - { - if (n.get_nodeType() == DOM::Node::ELEMENT_NODE) - { - DOM::Element el = n; - if (el.hasAttribute("id")) return el; - } - n = n.get_parentNode(); - } - - return DOM::Node(0); -} - -TNode -TDocument::getNodeByIdAux(const TNode& node, const std::string& id) -{ - if (node.hasId(id)) return node; - else - for (TNode p = node.first(); p; p = p.next()) - if (TNode res = getNodeByIdAux(p, id)) return res; - return TNode(); -} - -TNode -TDocument::getNodeById(unsigned id) const -{ - DOM::Element root = doc.get_documentElement(); - assert(root); - return getNodeByIdAux(root, makeId(id)); -} - -void -TDocument::handleEvent(const DOM::Event& ev) -{ - DOM::MutationEvent me(ev); - assert(me); - -#if 0 - if (dirty) - cout << "TDocument::handleEvent DIRTY BEFORE = " << dirty.getAttribute("id") << endl; - else - cout << "TDocument::handleEvent DIRTY BEFORE = (nil)" << endl; -#endif - - if (DOM::Node node = me.get_target()) - if (dirty) - dirty = findIdNode(findCommonAncestor(dirty, node)); - else - dirty = findIdNode(node); - else - assert(0); - -#if 0 - cout << "TDocument::handleEvent target = " << DOM::Node(me.get_target()).get_nodeName() << " DIRTY AFTER = " - << dirty.getAttribute("id") << " ME = " << DOM::Node(me.get_target()).get_nodeName() << endl; -#endif -} diff --git a/helm/DEVEL/mathml_editor/src/TDocument.hh b/helm/DEVEL/mathml_editor/src/TDocument.hh deleted file mode 100644 index 02d1dc38d..000000000 --- a/helm/DEVEL/mathml_editor/src/TDocument.hh +++ /dev/null @@ -1,69 +0,0 @@ -/* This file is part of EdiTeX, an editor of mathematical - * expressions based on TeX syntax. - * - * Copyright (C) 2002-2003 Luca Padovani , - * 2003 Paolo Marinelli . - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please visit the project's home page - * http://helm.cs.unibo.it/editex/ - * or send an email to - */ - -#ifndef __TDocument_hh__ -#define __TDocument_hh__ - -#include "dom.hh" -#include "TNode.hh" - -class TDocument : private DOM::EventListener -{ -public: - TDocument(void); - ~TDocument(); - - void reset(void); - TNode create(const std::string&, unsigned = 0) const; - TNode createG(unsigned id = 0) const { return create("g", id); }; - TNode createC(const std::string&, unsigned = 0) const; - TNode createT(const std::string&, const std::string&, unsigned = 0) const; - TNode createI(const std::string& text, unsigned id = 0) const { return createT("i", text, id); }; - TNode createN(const std::string& text, unsigned id = 0) const { return createT("n", text, id); }; - TNode createO(const std::string& text, unsigned id = 0) const { return createT("o", text, id); }; - TNode createS(unsigned id = 0) const { return createT("s", "", id); }; - - DOM::Document document(void) const { return doc; }; - - TNode getNodeById(unsigned) const; - TNode root(void) { return doc.get_documentElement(); }; - TNode dirtyNode(void) const { return dirty; }; - void clearDirty(void) { dirty = DOM::Element(0); }; - - void serialize(const char*) const; - -private: - DOM::Document doc; - DOM::Element dirty; - - virtual void handleEvent(const DOM::Event&); - static std::string makeId(unsigned); - static TNode getNodeByIdAux(const TNode&, const std::string&); - static unsigned nodeDepth(const DOM::Node&); - static DOM::Node findCommonAncestor(const DOM::Node&, const DOM::Node&); - static DOM::Node findIdNode(const DOM::Node&); -}; - -#endif // __TDocument_hh__ diff --git a/helm/DEVEL/mathml_editor/src/TListener.hh b/helm/DEVEL/mathml_editor/src/TListener.hh deleted file mode 100644 index 16fea6d71..000000000 --- a/helm/DEVEL/mathml_editor/src/TListener.hh +++ /dev/null @@ -1,35 +0,0 @@ -/* This file is part of EdiTeX, an editor of mathematical - * expressions based on TeX syntax. - * - * Copyright (C) 2002-2003 Luca Padovani , - * 2003 Paolo Marinelli . - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please visit the project's home page - * http://helm.cs.unibo.it/editex/ - * or send an email to - */ - -#ifndef __TListener_hh__ -#define __TListener_hh__ - -class TListener -{ -public: - virtual void callback(TDocument&) = 0; -}; - -#endif // __TListener_hh__ diff --git a/helm/DEVEL/mathml_editor/src/TNode.cc b/helm/DEVEL/mathml_editor/src/TNode.cc deleted file mode 100644 index 3c67d9d60..000000000 --- a/helm/DEVEL/mathml_editor/src/TNode.cc +++ /dev/null @@ -1,236 +0,0 @@ -/* This file is part of EdiTeX, an editor of mathematical - * expressions based on TeX syntax. - * - * Copyright (C) 2002-2003 Luca Padovani , - * 2003 Paolo Marinelli . - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please visit the project's home page - * http://helm.cs.unibo.it/editex/ - * or send an email to - */ - -#include "globals.hh" -#include "TNode.hh" -#include - -TNode -TNode::next() const -{ - assert(node); - DOM::Node p = node.get_nextSibling(); - while (p && p.get_nodeType() != DOM::Node::ELEMENT_NODE) p = p.get_nextSibling(); - return p; -} - -TNode -TNode::nextL() const -{ - assert(node); - if (TNode n = next()) - if (n.isG()) return n.firstL(); - else return n; - else return TNode(); -} - -TNode -TNode::prev() const -{ - assert(node); - DOM::Node p = node.get_previousSibling(); - while (p && p.get_nodeType() != DOM::Node::ELEMENT_NODE) p = p.get_previousSibling(); - return p; -} - -TNode -TNode::prevL() const -{ - assert(node); - if (TNode n = prev()) - if (n.isG()) return n.lastL(); - else return n; - else return TNode(); -} - -TNode -TNode::last() const -{ - assert(node); - DOM::Node p = node.get_lastChild(); - while (p && p.get_nodeType() != DOM::Node::ELEMENT_NODE) p = p.get_previousSibling(); - return p; -} - -TNode -TNode::lastL() const -{ - assert(node); - if (TNode n = last()) - if (n.isG()) return n.lastL(); - else return n; - else - return TNode(); -} - -TNode -TNode::first() const -{ - assert(node); - DOM::Node p = node.get_firstChild(); - while (p && p.get_nodeType() != DOM::Node::ELEMENT_NODE) p = p.get_nextSibling(); - return p; -} - -TNode -TNode::firstL() const -{ - assert(node); - if (TNode n = first()) - if (n.isG()) return n.firstL(); - else return n; - else - return TNode(); -} - -TNode -TNode::core() const -{ - assert(node); - // check also if there is a macro embellishment (\not) - if (isSb() || isSp()) return first().core(); - else return *this; -} - -TNode -TNode::parent() const -{ - assert(node); - DOM::Node p = node.get_parentNode(); - assert(!p || p.get_nodeType() == DOM::Node::ELEMENT_NODE); - return p; -} - -unsigned -TNode::size() const -{ - assert(node); - unsigned size = 0; - TNode p = first(); - while (p) - { - p = p.next(); - size++; - } - - return size; -} - -void -TNode::remove() const -{ - assert(node); - DOM::Node parent = node.get_parentNode(); - parent.removeChild(node); -} - -void -TNode::replace(const TNode& newNode) const -{ - assert(node); - DOM::Node parent = node.get_parentNode(); - parent.replaceChild(newNode.node, node); -} - -void -TNode::replace(const TNode& first, const TNode& last) const -{ - assert(node); - assert(first); - - TNode p = first; - while (p != last) - { - TNode next = p.next(); - insert(p); - p = next; - } - remove(); -} - -void -TNode::insert(const TNode& newNode) const -{ - assert(node); - DOM::Node parent = node.get_parentNode(); - parent.insertBefore(newNode.node, node); -} - -void -TNode::append(const TNode& newNode) const -{ - assert(node); - node.appendChild(newNode.node); -} - -void -TNode::append(const TNode& first, const TNode& last) const -{ - assert(node); - assert(first); - assert(last); - - TNode p = first; - while (p != last) - { - TNode next = p.next(); - append(p); - p = next; - } -} - -void -TNode::prepend(const TNode& newNode) const -{ - assert(node); - DOM::Node parent = node.get_parentNode(); - parent.insertBefore(newNode.node, parent.get_firstChild()); -} - -#if 0 -#endif - -TNode -TNode::child(unsigned pos) const -{ - assert(node); - TNode p = first(); - while (p && pos-- > 0) p = p.next(); - return p; -} - -std::string -TNode::get(const std::string& name) const -{ - assert(node); - return node.getAttribute(name); -} - -void -TNode::set(const std::string& name, const std::string& value) const -{ - assert(node); - node.setAttribute(name, value); -} diff --git a/helm/DEVEL/mathml_editor/src/TNode.hh b/helm/DEVEL/mathml_editor/src/TNode.hh deleted file mode 100644 index adbfe69a6..000000000 --- a/helm/DEVEL/mathml_editor/src/TNode.hh +++ /dev/null @@ -1,107 +0,0 @@ -/* This file is part of EdiTeX, an editor of mathematical - * expressions based on TeX syntax. - * - * Copyright (C) 2002-2003 Luca Padovani , - * 2003 Paolo Marinelli . - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please visit the project's home page - * http://helm.cs.unibo.it/editex/ - * or send an email to - */ - -#ifndef __TNode_hh__ -#define __TNode_hh__ - -#include "dom.hh" -#include "globals.hh" -#include "TDictionary.hh" - -class TNode -{ -public: - TNode(void) : node(0) { }; - TNode(const DOM::Node& n) : node(n) { }; - TNode(const DOM::Element& elem) : node(elem) { }; - TNode(const TNode& n) : node(n.node) { }; - - TNode next(void) const; - TNode nextL(void) const; - TNode prev(void) const; - TNode prevL(void) const; - TNode core(void) const; - TNode parent(void) const; - TNode first(void) const; - TNode firstL(void) const; - TNode last(void) const; - TNode lastL(void) const; - TNode child(unsigned) const; - unsigned size(void) const; - bool empty(void) const { return !first().node; }; - std::string value(void) const { return (*this)["val"]; }; - - class ProxyAttr - { - public: - ProxyAttr(const DOM::Element& n, const std::string& s) : node(n), name(s) { }; - operator std::string() const { return node.getAttribute(name); }; - ProxyAttr& operator=(const std::string& v) { node.setAttribute(name, v); }; - bool operator==(const std::string& v) const { return node.getAttribute(name) == v; }; - bool operator!=(const std::string& v) const { return node.getAttribute(name) != v; }; - private: - DOM::Element node; - std::string name; - }; - - operator bool() const { return node; }; - DOM::Element element(void) const { return node; }; - bool operator==(const TNode& n) const { return node == n.node; }; - bool operator!=(const TNode& n) const { return node != n.node; }; - TNode operator[](int i) const { return child(i); }; - ProxyAttr operator[](const char* s) const { return ProxyAttr(node, s); }; - - //void advance(const TNode&) const; - void remove(void) const; - void replace(const TNode&) const; - void replace(const TNode&, const TNode&) const; - void insert(const TNode&) const; - void append(const TNode&) const; - void append(const TNode&, const TNode&) const; - void prepend(const TNode&) const; - - std::string get(const std::string&) const; - void set(const std::string&, const std::string&) const; - - std::string name(void) const { return node.get_localName(); }; - std::string nameC(void) const { return node.getAttribute("name"); }; - bool hasId(void) const { return node.hasAttribute("id"); }; - bool hasId(const std::string& id) const { return node.getAttribute("id") == id; }; - bool is(const std::string& s) const { return name() == s; }; - bool isG(void) const { return is("g"); }; - bool isSb(void) const { return is("sb"); }; - bool isSp(void) const { return is("sp"); }; - bool isC(void) const { return is("c"); } - bool isC(const std::string& name) const - { return isC() && node.getAttribute("name") == name; }; - bool isT(void) const { return (is("o") || is("i") || is("n") || is("s")); }; - - friend class TDocument; - -private: - DOM::Element node; -}; - -#endif // __TNode_hh__ diff --git a/helm/DEVEL/mathml_editor/src/TPushLexer.cc b/helm/DEVEL/mathml_editor/src/TPushLexer.cc deleted file mode 100644 index da15822c3..000000000 --- a/helm/DEVEL/mathml_editor/src/TPushLexer.cc +++ /dev/null @@ -1,207 +0,0 @@ -/* This file is part of EdiTeX, an editor of mathematical - * expressions based on TeX syntax. - * - * Copyright (C) 2002-2003 Luca Padovani , - * 2003 Paolo Marinelli . - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please visit the project's home page - * http://helm.cs.unibo.it/editex/ - * or send an email to - */ - -#include -#include -#include - -#include "TToken.hh" -#include "TPushLexer.hh" -#include "APushParser.hh" - -TPushLexer::TPushLexer(ALogger& l, APushParser& p) : APushLexer(l, p) -{ - state = ACCEPT; -} - -void -TPushLexer::reset() -{ - buffer.erase(); - state = ACCEPT; - - displayCursor(); -} - -void -TPushLexer::flush() -{ - push(-1); -} - -void -TPushLexer::transaction(char ch, State newState) -{ - switch (ch) - { - case '{': parser.push(TToken(TToken::BEGIN)); break; - case '}': parser.push(TToken(TToken::END)); break; - case '$': parser.push(TToken(TToken::SHIFT)); break; - case '&': parser.push(TToken(TToken::ALIGN)); break; - case '\n': - case '\r': parser.push(TToken(TToken::EOL, ch)); break; - case '^': parser.push(TToken(TToken::SUPERSCRIPT)); break; - case '_': parser.push(TToken(TToken::SUBSCRIPT)); break; - case '\t': - case ' ': parser.push(TToken(TToken::IGNORABLE_SPACE, ch)); break; - case '~': parser.push(TToken(TToken::ACTIVE, ch)); break; - case '%': parser.push(TToken(TToken::COMMENT)); break; - default: - if (isalpha(ch)) parser.push(TToken(TToken::LETTER, ch)); - else if (isdigit(ch)) parser.push(TToken(TToken::DIGIT, ch)); - else parser.push(TToken(TToken::OTHER, ch)); - break; - } - state = newState; -} - -void -TPushLexer::push(char ch) -{ - switch (state) - { - case ACCEPT: - if (ch == '\\') state = ESCAPE; - else if (ch == '#') state = PARAMETER; - else if (ch == -1) ; - else transaction(ch, ACCEPT); - break; - case ESCAPE: - if (isalpha(ch)) - { - buffer.push_back(ch); - state = MACRO; - } - else if (ch == -1) error(); - else - { - parser.push(TToken(TToken::CONTROL, ch)); - state = ACCEPT; - } - break; - case MACRO: - if (ch == '\\') - { - parser.push(TToken(TToken::CONTROL, buffer)); - buffer.erase(); - state = ESCAPE; - } - else if (ch == '#') - { - parser.push(TToken(TToken::CONTROL, buffer)); - buffer.erase(); - state = PARAMETER; - } - else if (isalpha(ch)) - buffer.push_back(ch); - else if (ch == -1) - { - parser.push(TToken(TToken::CONTROL, buffer)); - buffer.erase(); - state = ACCEPT; - } - else - { - parser.push(TToken(TToken::CONTROL, buffer)); - buffer.erase(); - if (isspace(ch)) state = IGNORE_SPACE; - else transaction(ch, ACCEPT); - } - break; - case IGNORE_SPACE: - if (ch == '\\') state = ESCAPE; - else if (ch == '#') state = PARAMETER; - else if (isspace(ch)) ; - else if (ch == -1) state = ACCEPT; - else transaction(ch, ACCEPT); - break; - case PARAMETER: - if (ch == -1) error(); - else - { - parser.push(TToken(TToken::PARAMETER, ch)); - state = ACCEPT; - } - break; - default: - assert(0); - break; - } - - displayCursor(); - -} - -void -TPushLexer::drop(bool alt) -{ - std::string restore = ""; - - switch (state) - { - case ACCEPT: - case IGNORE_SPACE: - restore = parser.drop(alt); - if (restore.length() > 0 && restore[0] == '\\') - { - buffer = std::string(restore, 1, restore.length() - 1); - state = (buffer.length() > 0) ? MACRO : ESCAPE; - } - break; - case ESCAPE: - state = ACCEPT; - break; - case MACRO: - if (alt) buffer.erase(); - else buffer.erase(buffer.length() - 1, 1); - if (buffer.length() == 0) state = ESCAPE; - break; - case PARAMETER: - default: - assert(0); - break; - } - - displayCursor(); - -} - -void -TPushLexer::displayCursor() -{ - switch (state) - { - case ESCAPE: parser.setCursorHint("\\"); break; - case MACRO: parser.setCursorHint("\\" + buffer); break; - case PARAMETER: parser.setCursorHint("#"); break; - default: parser.setCursorHint(""); break; - } -} - -bool -TPushLexer::error() const -{ - return false; -} diff --git a/helm/DEVEL/mathml_editor/src/TPushLexer.hh b/helm/DEVEL/mathml_editor/src/TPushLexer.hh deleted file mode 100644 index 2aafd6ec9..000000000 --- a/helm/DEVEL/mathml_editor/src/TPushLexer.hh +++ /dev/null @@ -1,64 +0,0 @@ -/* This file is part of EdiTeX, an editor of mathematical - * expressions based on TeX syntax. - * - * Copyright (C) 2002-2003 Luca Padovani , - * 2003 Paolo Marinelli . - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please visit the project's home page - * http://helm.cs.unibo.it/editex/ - * or send an email to - */ - -#ifndef __TPushLexer_hh__ -#define __TPushLexer_hh__ - -#include - -#include "APushLexer.hh" - -class TPushLexer : public APushLexer -{ -public: - TPushLexer(class ALogger&, class APushParser&); - virtual ~TPushLexer() { }; - - virtual void push(char); - virtual void drop(bool); - virtual bool complete(void) { }; - virtual void reset(void); - virtual void flush(void); - virtual bool error(void) const; - -protected: - enum State - { - ACCEPT, - ESCAPE, - MACRO, - IGNORE_SPACE, - PARAMETER - }; - - void transaction(char, State); - void displayCursor(void); - - State state; - std::string buffer; - -}; - -#endif // __TPushLexer_hh__ diff --git a/helm/DEVEL/mathml_editor/src/TPushParser.cc b/helm/DEVEL/mathml_editor/src/TPushParser.cc deleted file mode 100644 index 0c96fe439..000000000 --- a/helm/DEVEL/mathml_editor/src/TPushParser.cc +++ /dev/null @@ -1,1952 +0,0 @@ -/* This file is part of EdiTeX, an editor of mathematical - * expressions based on TeX syntax. - * - * Copyright (C) 2002-2003 Luca Padovani , - * 2003 Paolo Marinelli . - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please visit the project's home page - * http://helm.cs.unibo.it/editex/ - * or send an email to - */ - -#include - -#include "ALogger.hh" -#include "TPushParser.hh" -#include "AMathMLFactory.hh" - -TPushParser::TPushParser(ALogger& l, const TDictionary& d) : APushParser(l), dictionary(d) -{ - init(); -} - -TPushParser::TPushParser(ALogger& l, AMathMLFactory& f, const TDictionary& d) : APushParser(l, f), dictionary(d) -{ - init(); -} - -TPushParser::~TPushParser() -{ -} - -void -TPushParser::init() -{ - cursor = doc.create("cursor"); - cursor["visible"] = "1"; - hiddenCursor = 0; - reset(); -} - -void -TPushParser::reset() -{ - nextId = 1; - if (cursor.parent()) cursor.remove(); - cursor["val"] = ""; - doc.reset(); - doc.root().append(cursor); - if (factory && !frozen()) factory->documentModified(doc); -} - -TNode -TPushParser::PRIME() -{ - const TDictionary::Entry entry = dictionary.find("prime"); - if (entry.cls == TDictionary::OPERATOR) - { - TNode op = doc.createO(entry.value, nextId++); - op["name"] = "prime"; - return op; - } - else - { - TNode op = doc.createO("?", nextId++); - return op; - } -} - -bool -TPushParser::do_begin() -{ - TNode parent = cursor.parent(); - if (parent.isC() && dictionary.find(parent.nameC()).table) - { - TNode row = doc.create("row"); - TNode cell = doc.create("cell"); - TNode g = doc.createG(); - row.append(cell); - cell.append(g); - g.append(cursor); - parent.append(row); - } - else - { - TNode g = doc.createG(nextId++); - cursor.replace(g); - g.append(cursor); - } - return true; -} - -bool -TPushParser::correctBrace() -{ - // this method MUST be invoked when the cursor is child of a - // phantom group, which in turn is the last rightOpen MACRO's child. - // The only way to exit from a rightOpen MACRO is opening a group before - // inserting the MACRO and, once the MACRO is completely inserted, closing - // the group. - // This method return true if the condition above is true. False, otherwise. - assert(cursor.parent() && cursor.parent().isG() && !cursor.parent().hasId()); - TNode parent = cursor.parent(); - assert(parent.parent() && parent.parent().isC()); - assert(!frames.empty()); - Frame& frame = frames.top(); - assert(frame.entry.rightOpen); - assert(parent.parent().last() == parent); - - TNode c = parent.parent(); - bool stop = false; - bool ok = false; - TNode node = c.parent(); - do - { - if (node.isG() && node.hasId()) - { - // in this case, the rightOpen MACRO is a child of a group with id. - // So, the '}' is correct - ok = true; - stop = true; - } - else if (node.isG()) - { - // the MACRO is a phantom group's child. We have to control why we - // have this phantom group - TNode nodeParent = node.parent(); - if (nodeParent && nodeParent.isC()) - { - // we have to control the nature of this MACRO - const TDictionary::Entry& entry = dictionary.find(nodeParent.nameC()); - if (entry.rightOpen && node == nodeParent.last()) - { - // in this case we have to re-iterate the process - node = nodeParent.parent(); - } - else stop = true; - } - else stop = true; - } - else - { - // at the moment we assume that a MACRO cannot be child of an element other than a group - stop = true; - } - } - while (!stop); - - return ok; -} - -bool -TPushParser::do_end() -{ - TNode parent = cursor.parent(); - if (parent && parent.isG() && parent.hasId()) - { - // normal closing brace for an explicitly open group - cursor.remove(); - advance(parent); - return true; - } - else if (parent && parent.isG() && parent.parent() && parent.parent().is("cell")) - { - assert(!frames.empty()); - // closing brace for a structure in which & or \cr have been used - TNode row = parent.parent().parent(); - assert(row && row.is("row")); - assert(row.parent()); - advance(row); - return true; - } - else if (parent && parent.isG() && !parent.hasId() && parent.parent() && !parent.parent().is("math")) - { - // In this case, we have to control the cursor's grand parent. - TNode gparent = parent.parent(); - - if (gparent.isC() && gparent.last() == parent) - { - // a frame MUST be in the stack - assert(!frames.empty()); - - // we have to control the nature of this macro - if (frames.top().entry.rightOpen) - { - // in this case, the '}' character is the proper way to exit from the phantom group, and - // in particular, this character means that the user wants to exit from the MACRO. - // A rightOpen MACRO MUST be descendant of a group with Id. This '}' is the closing brace of this - // group. So, we have to control if this group exists. This groyp could exist, but this MACRO could - // be another MACRO's child, so we have to control this last MACRO recursively. This recurive control - // is done by the correctBrace method. - if (!correctBrace()) - { - // the '}' is not correct - logger.warning("nothing to close"); - return false; - } - else - { - cursor.remove(); - advance(parent); - return true; - } - } - else - { - logger.warning("ignored closing brace"); - return false; - } - } - else - { - // at the moment, a phantom group with the cursor inside can be a MACRO's child or a cell's child, and these cases - // are handled in other blocks of code. - logger.error("do_end: strange TML tree"); - return false; - } - } - else - { - // In this case, there is a redundant '}', so we can ignore it and - // emit an error - logger.warning("There is so no corresponding'{'"); - return false; - //assert(0); - } -} - -bool -TPushParser::do_shift() -{ - TNode parent = cursor.parent(); - assert(parent); - if (parent.is("tex")) - { - TNode math = doc.create("math", nextId++); - TNode g = doc.createG(); - cursor.replace(math); - math.append(g); - g.append(cursor); - return true; - } - else if (parent.isG() && !parent.hasId() && parent.parent() && parent.parent().is("math")) - { - if (cursor.prev()) - { - // there is something before the cursor, hence this is the - // closing math shift - if (parent.parent()["display"] != "1") - { - // one math shift is enough to close it - cursor.remove(); - return true; - } - else - { - // we need two closing math shifts - //cursor.remove(); ?? - parent.parent().append(cursor); - return true; // ??? - } - } - else if (parent.parent()["display"] != "1") - { - // there is nothing before the cursor, and the math is not - // in display mode, so this must be a double math shift - parent.parent()["display"] = "1"; - return true; - } - else - { - parent.parent().append(cursor); - return true; - } - } - else if (parent.is("math")) - { - cursor.remove(); - return true; - } - else - { - logger.warning("not allowed here"); - return false; - } -} - -bool -TPushParser::do_align() -{ - TNode parent = cursor.parent(); - if (parent && parent.isG() && parent.hasId()) - { - // alignment tab used for the first time inside a group - TNode row = doc.create("row"); - TNode cell = doc.create("cell"); - TNode g = doc.createG(); - row.append(cell); - cell.append(g); - g.append(parent.first(), cursor); - return true; - } - else if (parent && parent.isG() && parent.parent().is("cell")) - { - // alignment tab used within a cell - TNode oldCell = parent.parent(); - assert(oldCell && oldCell.is("cell")); - TNode row = oldCell.parent(); - assert(row && row.is("row")); - TNode cell = doc.create("cell"); - if (oldCell.next()) oldCell.next().insert(cell); - else row.append(cell); - TNode g = doc.createG(); - cell.append(g); - g.append(cursor); - return true; - } - else - { - logger.warning("alignment tab used outside matrix"); - return false; - } -} - -bool -TPushParser::do_eol() -{ - //if (cursor.parent()) cursor.remove(); - logger.warning("ignored token"); - return false; -} - -bool -TPushParser::do_parameter(const std::string& p) -{ - logger.warning("ignored token"); - return false; -} - -bool -TPushParser::do_subscript() -{ - TNode parent = cursor.parent(); - if (parent.isG()) - { - TNode prev = cursor.prev(); - if (!prev) - { - TNode elem = doc.create("sb", nextId++); - TNode g = doc.createG(); - cursor.replace(elem); - elem.append(g); - elem.append(cursor); - return true; - } - else - { - TNode elem = doc.create("sb", nextId++); - prev.replace(elem); - elem.append(prev); - elem.append(cursor); - return true; - } - } - else if (parent.isSb() && cursor == parent[1]) - { - if (parent["under"] == "1") - { - logger.warning("already under"); - return false; - } - else - { - parent["under"] = "1"; - return true; - } - } - else - { - logger.warning("ignored token"); - return false; - } -} - -bool -TPushParser::do_superscript() -{ - TNode parent = cursor.parent(); - if (parent.isG()) - { - TNode prev = cursor.prev(); - if (!prev) - { - TNode elem = doc.create("sp", nextId++); - TNode g = doc.createG(); - cursor.replace(elem); - elem.append(g); - elem.append(cursor); - return true; - } - else - { - TNode elem = doc.create("sp", nextId++); - prev.replace(elem); - elem.append(prev); - elem.append(cursor); - return true; - } - } - else if (parent.isSp() && cursor == parent[1]) - { - if (parent["over"] == "1") - { - logger.warning("already over"); - return false; - } - else - { - parent["over"] = "1"; - return true; - } - } - else - { - logger.warning("ignored token"); - return false; - } -} - -bool -TPushParser::do_ignorablespace(const std::string& s) -{ - // At the moment, do nothing -} - -bool -TPushParser::do_space(const std::string&) -{ - TNode elem = doc.createS(nextId++); - cursor.replace(elem); - advance(elem); - return true; -} - -bool -TPushParser::do_letter(const std::string& s) -{ - //TNode parent = cursor.parent(); - TNode elem = doc.createI(s, nextId++); - cursor.replace(elem); - advance(elem); - return true; -} - -bool -TPushParser::do_digit(const std::string& s) -{ - TNode elem = doc.createN(s, nextId++); - cursor.replace(elem); - advance(elem); - return true; -} - -bool -TPushParser::isPrimes(const TNode& node) const -{ - assert(node); - return node.isG() && node.last() && node.last().is("o") && node.last()["name"] == "prime"; -} - -bool -TPushParser::do_apostrophe() -{ - if (cursor.parent() && cursor.parent().isG()) - { - if (TNode prev = cursor.prev()) - { - if (prev.isSp() && prev[1] && isPrimes(prev[1])) - { - prev[1].append(PRIME()); - return true; - } - else if (prev.isSb() && prev[0] && - prev[0].isSp() && prev[0][1] && - isPrimes(prev[0][1])) - { - prev[0][1].append(PRIME()); - return true; - } - else - { - TNode elem = doc.create("sp"); - TNode g = doc.createG(); - prev.replace(elem); - elem.append(prev); - elem.append(g); - g.append(PRIME()); - return true; - } - } - else - { - // is it an error? - logger.warning("you have to insert an identifier before a ''"); - return false; - } - } - else - { - logger.warning("cursor has to be in a group"); - return false; - } -} - -bool -TPushParser::do_other(const std::string& s) -{ - switch (s[0]) - { - case '\'': - return do_apostrophe(); - break; - default: - /*cout << "TPushParser::do_other " << s << endl; - cout << "DOCUMENT: " << static_cast(cursor.element().get_ownerDocument()) << endl;*/ - TNode elem = doc.createT("o", s, nextId++); - cursor.replace(elem); - advance(elem); - return true; - break; - } -} - -bool -TPushParser::do_active(const std::string&) -{ - // ??? space? - logger.warning("ignored token"); - return false; -} - -bool -TPushParser::do_comment() -{ - // ??? - return false; -} - -bool -TPushParser::do_cr() -{ - TNode parent = cursor.parent(); - if (parent && parent.isG() && - parent.parent() && parent.parent().is("cell") && - parent.parent().parent() && parent.parent().parent().is("row")) - { - TNode oldRow = parent.parent().parent(); - assert(oldRow); - TNode table = oldRow.parent(); - assert(table); - TNode row = doc.create("row"); - TNode cell = doc.create("cell"); - TNode g = doc.createG(); - if (oldRow.next()) oldRow.next().insert(row); - else table.append(row); - row.append(cell); - cell.append(g); - g.append(cursor); - return true; - } - else - { - // at the moment, \cr can only be used inside a table - logger.warning("cr used outside a table"); - return false; - } -} - -bool -TPushParser::do_control(const std::string& name) -{ - if (name == "cr") return do_cr(); - else - { - TNode parent = cursor.parent(); - const TDictionary::Entry& entry = dictionary.find(name); - switch (entry.cls) - { - case TDictionary::IDENTIFIER: - { - TNode t = doc.createI(entry.value, nextId++); - t["name"] = name; - cursor.replace(t); - advance(t); - return true; - } - break; - case TDictionary::OPERATOR: - { - TNode t = doc.createO(entry.value, nextId++); - t["name"] = name; - cursor.replace(t); - advance(t); - return true; - } - break; - case TDictionary::NUMBER: - { - TNode t = doc.createN(entry.value, nextId++); - t["name"] = name; - cursor.replace(t); - advance(t); - return true; - } - break; - case TDictionary::MACRO: - { - if (parent.isG()) - { - TNode m = doc.createC(name, nextId++); - cursor.replace(m); - if (entry.leftOpen && entry.rightOpen) - { - assert(entry.pattern.empty()); - assert(parent.isG()); - TNode g1 = doc.createG(); - g1["left-open"] = "1"; - g1.append(parent.first(), m); - m.append(g1); - TNode g2 = doc.createG(); - g2.append(cursor); - m.append(g2); - frames.push(Frame(entry)); - } - else if (entry.leftOpen) - { - assert(parent.isG()); - TNode g = doc.createG(); - g["left-open"] = "1"; - g.append(parent.first(), m); - m.append(g); - advance(m); - } - else if (entry.rightOpen) - { - assert(entry.pattern.empty()); - assert(parent.isG()); - TNode g = doc.createG(); - g.append(cursor); - m.append(g); - frames.push(Frame(entry)); - } - else if (!entry.pattern.empty()) - { - frames.push(Frame(entry)); - if (entry.paramDelimited(0)) - { - TNode g = doc.createG(); - m.append(g); - g.append(cursor); - } - else - m.append(cursor); - } - else - { - // it's an empty macro - advance(m); - } - return true; - } - else if (!entry.pattern.size() && !entry.rightOpen && !entry.leftOpen) - { - // a macro with no arguments and no right open and no left open, can be child of anything - TNode m = doc.createC(name, nextId++); - cursor.replace(m); - advance(m); - return true; - } - else - { - // a macro with arguments or a rightOpen or leftOpen macro must be a group's child - logger.warning("ignored token: this macro should be in a group"); - return false; - } - } - break; - case TDictionary::UNDEFINED: - { - logger.warning("using undefined macro " + name); - TNode m = doc.createC(name, nextId++); - cursor.replace(m); - advance(m); - return true; - } - break; - default: - { - //assert(0); - logger.warning("ignored token"); - return false; - } - } - } -} - -std::string -TPushParser::drop_prev_token(bool special) -{ - assert(cursor.prev()); - assert(cursor.parent()); - TNode prev = cursor.prev(); - assert(prev.isT()); - - DOM::UCS4String ucs4val = prev.element().getAttribute("val"); - bool macro = prev.element().hasAttribute("name"); - std::string utf8name; - if (macro) utf8name = prev.element().getAttribute("name"); - - cursor.remove(); - prev.replace(cursor); - - if (cursor.parent().isC()) - { - // in this case we have removed an element of a MACRO. - // we can assert that this element was a non delimited argument - assert(!frames.empty()); - Frame& frame = frames.top(); - assert(frame.pos > 0); - frame.pos--; - } - - if ((ucs4val.length() > 1)) - { - if (!macro) - { - // in this case we can return the content of ucs4val, but we have - // to convert it in a utf8 - DOM::GdomeString gdsval(ucs4val); - std::string utf8val(gdsval); - switch (utf8val[utf8val.length() - 1]) - { - case '-': - case '_': - return (special) ? std::string(utf8val, 0, utf8val.length() - 1) + "\\" : std::string(utf8val, 0, utf8val.length() - 1); - default: return (special) ? "" : std::string(utf8val, 0, utf8val.length() - 1); - } - } - else - { - // in this case, the content of val could be in unicode, - // but we have the attribute name, which doesn't contain character not representable - // with a byte. - return (special) ? "\\" + utf8name : ""; - } - } - else if (macro && special) return "\\" + utf8name; - else return ""; -} - -std::string -TPushParser::drop_prev_script(bool special) -{ - // this method deletes an sp or an sb preceding the cursor - assert(cursor.prev()); - assert(cursor.parent()); - TNode prev = cursor.prev(); - assert(prev.is("sp") || prev.is("sb")); - cursor.remove(); - prev.append(cursor); - // we can invoke the drop_prev, because a sp (sb) MUST have two children - // but we cannot invoke do_drop_script because it assumes when called, the first - // child has been removed yet. - if (cursor.prev().isG() && !prev.hasId()) - { - // in this case, the user has inserted a sequence of '. - // Hence, we force a normal deletion, because the behavior must be the same - // for the two kind of deletion - return drop_prev(false); - } - else return drop_prev(special); -} - -std::string -TPushParser::drop_prev_group(bool special) -{ - assert(cursor.prev() && cursor.prev().isG()); - TNode parent = cursor.parent(); - TNode prev = cursor.prev(); - cursor.remove(); - prev.append(cursor); - - if (parent.isC() && prev.hasId()) - { - // this previous group is a macro's argument. Entering inside it means that - // this argument becomes incomplete. Hence, we have to decrement the member pos. - assert(!frames.empty()); - frames.top().pos--; - } - - if (special) return ""; - else - { - // a group could have no children, so the drop_prev is not appropriate - // so, this method is not equivalent to the one above - return do_drop(special); - } -} - -std::string -TPushParser::drop_prev_macro(bool special) -{ - assert(cursor.parent()); - assert(cursor.prev()); - TNode prev = cursor.prev(); - assert(prev.isC()); - - std::string macro_name = prev.nameC(); - - TNode parent = cursor.parent(); - - const TDictionary::Entry& entry = dictionary.find(prev["name"]); - - if (!entry.defined()) - { - // In this case, with a normal deletion, we completely remove the macro. - // With a special deletion, we remove the last character of the macro's name. - cursor.remove(); - prev.replace(cursor); - if (cursor.parent().isC()) - { - // we have removed a macro's child - assert(!frames.empty()); - frames.top().pos--; - } - if (special) return "\\" + macro_name.erase(macro_name.length() - 1, 1); // we remove the last char, because an undefined macro's name is visible - return ""; - } - else - { - // we start to remove a MACRO. Different actions must be taken, based on the nature - // of the MACRO. In some cases, we can't remove the MACRO immediately, in other - // cases it's correct. In the first set of cases, we have to update the stack, pushing - // a frame in it with a correct value of pos, in the - // second one, we must not push a frame in the stack - - if (entry.rightOpen) - { - // In this fragment of code we also handle the leftOpen && rightOpen MACRO. - // since the control element is rightOpen, the cursor should be placed after - // the last child of the control element's last child, and than, we try to remove something. - // A frame MUST be pushed in the stack, because we dont' know if the following actions - // will completely remove the MACRO. - frames.push(Frame(entry)); - - // Since the MACRO is rightOpen, the last child of the MACRO must be a phantom group - assert(prev.last().isG() && !prev.last().hasId()); - - cursor.remove(); - prev.last().append(cursor); - - if (special) return ""; - else - { - // the drop_prev is not appropriate, because the last child of the MACRO could have no children - return do_drop_phantom_group(special); - } - } - else if (entry.leftOpen) - { - // the leftOpen MACRO MUST have one and only one child, which MUST be a phantom group - // In this case, we do not have to push a frame in the stack, because we remove the - // MACRO immediately, substituting it with the content of the phantom group. - // We could remove the last child of the phantom group, but - // it's not clear if it's the correct behavior of the graphical deletion. - // At the moment, to give a standard behavior, we remove the last element. - // With a special deletion, we do not remove it. - assert(prev.first()); - assert(prev.first().isG()); - assert(prev.first() == prev.last()); - - TNode g = prev.first(); - if (g.size()) - { - // in this case, the phantom group has at least one child, so we can call the - // TNode::replace. - g.remove(); - prev.replace(g.first(), TNode()); - parent.append(cursor); - if (special) return "\\" + macro_name; - else return do_drop(special); - } - else - { - // otherwise, the phantom group has no children, so we remove it, also the MACRO. - cursor.remove(); - g.remove(); - prev.replace(cursor); - if (special) return "\\" + macro_name; - else - { - // Once removed this empty macro, we could try to remove something else. - // This would be justified by the fact that, generally, an empty macro gives no visual information - // about it. - return do_drop(special); // special is false - } - } - } - else if (!entry.pattern.empty()) - { - // we have to start to remove a MACRO which accepts arguments. - // If the MACRO accepts arguments, the MACRO has at least one child - assert(prev.size() >= 1); - - // Differnt actions must be taken, based on the nature of the last child - // of the MACRO. We have to distinguish the case in which it's a delimited argument, - // frome the one in which it's a not delimited argument. - if (prev.last().isG() && !prev.last().hasId()) - { - if (special) - { - // in this case, we have to start removing the last delimiter - frames.push(Frame(entry, entry.pattern.size() - 2)); - - cursor.remove(); - prev.last().append(cursor); - - std::string last_del = entry.pattern[entry.pattern.size() - 1].value; - - return "\\" + last_del; - } - else - { - // the last argument of the MACRO is a delimited argumet. We ideally remove - // the sequence of delimiters - cursor.remove(); - prev.last().append(cursor); - // we have to push a frame with a correct value of pos - assert(entry.previousParam(entry.pattern.size()) != entry.pattern.size()); - - unsigned sequence_length = entry.pattern.size() - entry.previousParam(entry.pattern.size()) - 1; - unsigned p = entry.pattern.size() - sequence_length - 1; - // now, p is the correct value of pos, and we can push the frame. - frames.push(Frame(entry, p)); - - // To give a standard behavior to the graphical deletion, we remove the last - // element of the macro. Since we are in a phantom group, we can invoke the - // do_drop_phantom_group(special). - return do_drop_phantom_group(special); - } - } - else - { - // in this case, the last child of the MACRO is not a delimited argument, so we try - // to remove it, but we have to take differnt actions if the MACRO is a table with rows or not. - cursor.remove(); - if (entry.table == 1 && prev.last().is("row")) - { - // in this case the cursor has to be appended to the group associated to - // the last cell of the last row of the table - assert(prev.last().last().is("cell") && prev.last().last().first().isG()); - prev.last().last().first().append(cursor); - - // we have to push a frame in the stack. Since tables has a pattern size = 1, we have to - // set pos at 0, because appending the cursor to the last cell means that this argument - // is not whole inserted. - // We don't call frames.push(Frame(entry)), because it incoditionaly set pos at 0. The - // following line is more general - frames.push(Frame(entry, entry.pattern.size() - 1)); - if (special) - { - // to type a table with rows and cells, the user had typed a - // "{", and to exit from it, the user had inserted a "}". - // Since we are in a special deletion, we just idealy remove the "}" - return ""; - } - else return do_drop_phantom_group(special); - } - else - { - // we push a frame in the stack with a correct value of member pos. - // This correct value is the size of the pattern - 1, because we have been started to delete - // a MACRO. It means that all of the MACRO's arguments have been inserted, but - frames.push(Frame(entry, entry.pattern.size())); - prev.append(cursor); - return drop_prev(special); - } - - } // end of the else of the if (prev.last().isG() && !prev.last().hasId()) - - } // end of if (!entry.pattern.empty()) - else - { - // if we are here, the MACRO preceding the cursor, is !(rightOpen || leftOpen), - // and has no pattern. It means that it has no children. - // We can replace it with the cursor - assert(prev.size() == 0); - cursor.remove(); - prev.replace(cursor); - if (cursor.parent().isC()) - { - // we have removed an empty macro, which was a non delimited argument of a macro. - // We have to decrement pos - assert(!frames.empty()); - frames.top().pos--; - } - - if (special) return "\\" + macro_name; - else return ""; - - // now we could start to remove something else. This behavior would be justified by the - // fact that, generally, an empty MACRO gives no visual information about it. - // To adopt this behavior, just remove the comment to the following instruction - // return do_drop(special); - } - } // end of defined MACRO - -} - -std::string -TPushParser::drop_prev(bool special) -{ - // if in this function, the prev of cursor does exist, also the parent and we want a graphical deletion. - - assert(cursor.prev()); - assert(cursor.parent()); - - TNode prev = cursor.prev(); - - if (prev.isT()) - { - return drop_prev_token(special); - } - else if (prev.isSp() || prev.isSb()) - { - return drop_prev_script(special); - } - else if (prev.isG()) - { - return drop_prev_group(special); - } - else if (prev.isC()) - { - // here, we also treat the case in which the MACRO is a table - return drop_prev_macro(special); - } - else - { - // not handled. Future cases... - return ""; - } - -} // end of method - -void -TPushParser::rgreplace_father() -{ - // this method MUST only be invoked, when the cursor - // is the only child of a group with id. This function - // replaces the group with the cursor. But if the new parent - // is a group with id and the cursor is the only child of the - // group, the new parent is replaced...and so on. - // r stands for recursive, g stands for graphical. - assert(cursor.parent()); - assert(cursor.parent().isG() && cursor.parent().hasId()); - - TNode parent = cursor.parent(); - - while (parent.isG() && parent.hasId() && (parent.first() == cursor)) - { - parent.replace(cursor); - parent = cursor.parent(); - } -} - -std::string -TPushParser::do_drop_script(bool special) -{ - // If we are here, the cursor is child of a script (sp or sb) and - // this means that a prev does exist and that there is one and only one - // element preceding the cursor. The sp's (or sb's) parent - // MUST NOT be a MACRO. - // The element preceding the cursor is the base of the script. - - assert(cursor.parent() && (cursor.parent().isSp() || cursor.parent().isSb())); - TNode parent = cursor.parent(); - - assert(parent.size() == 2); - assert(parent.parent() && !parent.parent().isC()); - - TNode prev = cursor.prev(); - cursor.remove(); - if (prev.isG() /*&& !prev.hasId()*/ && (prev.size() == 0)) - { - // in this case, the script's base is a group with no elements, so - // we have to remove the entire MACRO, replacing it with the cursor. - // This situation occurs when the user had typed something like this - // $....{}^ - // or this - // $^ - // or this - // $...{^ - // - if (special && prev.hasId()) - { - // in this case, the user has typed: ...{}^ - // hence we idealy remove the ^ - parent.replace(prev); - prev.parent().append(cursor); - return ""; - } - else if (!prev.hasId()) - { - // we idealy remove the ^, but the phantom group - // has to be removed, also - prev.remove(); - parent.replace(cursor); - return ""; - } - else - { - prev.remove(); - parent.replace(cursor); - - // since the script had no children, we can try to remove something else. - // Since we don't know who is cursor's parent, and who is cursor's preceding - // element, we invoke the do_drop() - return do_drop(special); - } - } - else - { - // in this case, the prev has to replace the script. - parent.replace(prev); - prev.parent().append(cursor); - // now prev have a preceding element - assert(cursor.parent().size() > 1); - - if (special) return ""; - else - { - // to give a standard behavior, we try to remove the element, which was - // the script's base. - return do_drop(special); - } - } - -} // end of method do_drop_script - -std::string -TPushParser::do_drop_macro(bool special) -{ - // If we are here, the cursor is a child of a MACRO and this means - // that there is an open frame for the control element - // and this element is closed at either side (no leftOpen no rightOpen) - // and the MACRO is waiting for a not delimited argument, so - // we can assert that frame.entry.pattern.size() >= 1 - assert(cursor.parent() && cursor.parent().isC()); - TNode parent = cursor.parent(); - - // this string is useful iff we have a special deletion. - std::string macro_name = parent.nameC(); - - assert(!frames.empty()); - Frame& frame = frames.top(); - assert(frame.entry.pattern.size() >= 1); - - // we have to take different actions, based on if a preceding element exists - // or not - TNode prev = cursor.prev(); - if (!prev) - { - // in this case, a prev does not exist, so the actions of deleting means - // that we have to remove the MACRO. So we have to pop the stack. - assert(frame.pos == 0); - - parent.replace(cursor); - frames.pop(); - - if (special) return "\\" + macro_name; - else - { - // Since the macro had no children and this is a graphical deletion, we try - // to remove something else - return do_drop(special); - } - } - else - { - // a prev does exist, we have to control if it's a delimited argument or not. - if (prev.isG() && !prev.hasId()) - { - // in this case, prev is a delimited argument, so we have - // to ideally remove the sequence of delimiters - Frame& frame = frames.top(); - assert(frame.pos > 1); - cursor.remove(); - prev.append(cursor); - assert(frame.entry.previousParam(frame.pos) != frame.entry.pattern.size()); - - if (special) - { - // in this case we have to start removing the last delimimeter. - // It means that we return in a situation where the user has not entirely - // inserted the delimited argument. So, we have to decrement frame.pos of - // two units: the delimiter and the actual argument - std::string last_del = frame.entry.pattern[frame.pos - 1].value; - frame.pos = frame.pos - 2; - return "\\" + last_del; - } - else - { - // these 3 lines of code update the member pos. - unsigned sequence_length = frame.pos - frame.entry.previousParam(frame.pos) - 1; - assert(sequence_length); - frame.pos = frame.pos - sequence_length - 1; - - // since it's a graphical deletion, we have to remove the current preceding element. - // We don't invoke the drop_prev(), because a do_drop_phantom_group is more general. - return do_drop_phantom_group(special); - } - } - else - { - // the prev is not a delimited argument, so we have to try to remove it. - // We "try", because the prev might be something that - // a simple deletion cannot remove completely - return drop_prev(special); - } - } - -} - -std::string -TPushParser::do_drop_groupId(bool special) -{ - // if we are here, the cursor's parent is a group with Id - assert(cursor.parent() && cursor.parent().isG() && cursor.parent().hasId()); - TNode parent = cursor.parent(); - - // we have to take different actions based on if the cursor has a preceding - // element or not - TNode prev = cursor.prev(); - if (prev) - { - // the cursor has a preceding element, so we try to remove it - if (special) return drop_prev(special); - else - { - std::string str = drop_prev(special); - - // We control if the group has to be removed, because the cursor - // might be the only element of the group. - // But we have to be careful, because drop_prev could change the TML tree - // more than we think...parent could no longer exist! - parent = cursor.parent(); - if ((parent.first() == cursor) && parent.isG() && parent.hasId()) - rgreplace_father(); - - return str; - } - } - else - { - // the cursor has no preceding elements, so we have to remove the - // group. - if (special) - { - parent.replace(cursor); - return ""; - } - else - { - rgreplace_father(); - // we have to re-start the process, because it' a graphical deletion - return do_drop(special); - } - } - -} // end of method do_drop_groupId() - -std::string -TPushParser::do_drop_phantom_group(bool special) -{ - // if we are here, the cursor MUST be a child of a - // phantom group. - assert(cursor.parent() && cursor.parent().isG() && !cursor.parent().hasId()); - - TNode parent = cursor.parent(); - - // now we have to control if the cursor has a preceding element or not - TNode prev = cursor.prev(); - if (prev) - { - if (parent.parent() && parent.parent().isC()) - { - // there is a frame in the stack - assert(!frames.empty()); - if (frames.top().entry.pattern.size()) - { - Frame& frame = frames.top(); - if (special) - { - // we are in a delimited argument. If the user has inserted a proper subset of the - // delimiters'sequence, we start to remove the previous delimiter. Start to remove - // a delimiter means that that delimiter must be removed from the count of inserted delimiters. - // It means that we have to decrement the member pos. - if (frame.entry.pattern[frame.pos].category != TToken::PARAMETER) - { - std::string del = frame.entry.pattern[frame.pos].value; - frame.pos--; - return "\\" + del; - } - } - else - { - // we are in a delimited argument. If the user has inserted a proper subset of the delimiters'sequence, - // we have to remove the portion the user has inserted. - while (frame.entry.pattern[frame.pos].category != TToken::PARAMETER) frame.pos--; - } - } - } - - // the cursor has a preceding element, so we try to remove it - std::string str = drop_prev(special); - - if (special) return str; - else - { - // now we have to control the parent, to handle the case of primes. But we have returned from a drop_prev(), which - // could change the TML tree. So not asssuming that cursor's parent is unchanged is convenient. - parent = cursor.parent(); - if (parent.isG() && !parent.hasId() && (parent.size() == 1) && parent.parent().isSp()) - { - // in this case the drop_prev has removed the only element preceding the cursor. - // Since the phantom group is an sp's child, the user has removed all \' in the - // phantom group. - // Now we have some possibilities: - // - we can replace the phantom group with the cursor, giving the user the chance to insert a new - // exponent - // - we can remove the phantom group and the sp element, recreating the state before the user inserted the first - // prime. - // At the moment we implement the second one. - assert(parent.parent().size() == 2); - TNode gparent = parent.parent(); - TNode base = gparent.first(); - cursor.remove(); - parent.remove(); - gparent.replace(base); - // now base's parent is no more gparent - base.parent().append(cursor); - - return str; - } - else if (parent.isG() && !parent.hasId() && parent.parent().isSp()) - { - // in this case we have to place the cursor after the sp element - cursor.remove(); - assert(parent.parent().parent()); - parent.parent().parent().append(cursor); - return str; - } - else return str; - } - } - else - { - // in this case the cursor is the only element of the phantom group, - // so we have to remove it. But, a phantom group has a special role, - // so we have to control the grand father of the cursor. - TNode gfather = parent.parent(); - if (!gfather) - { - // If here, the TML tree is in an inconsistent state - logger.error("TML tree in a inconsistent state"); - return ""; - } - else if (gfather.isC()) - { - // in this case the phantom group is child of a MACRO. - // We have to control the nature of this MACRO. - assert(!frames.empty()); - Frame& frame = frames.top(); - - // this variable is useful in a special deletion - std::string macro_name = gfather.nameC(); - - if (frame.entry.leftOpen && frame.entry.rightOpen) - { - // in this case, the cursor'parent is in the second and last child - // of the MACRO. We can assert that the grand father has two - // children, which are both phantom groups - assert(gfather.size() == 2); - assert((gfather.last() == parent) && (gfather.first().isG() && !gfather.first().hasId())); - assert(frame.pos == 0); - - TNode ggfather = gfather.parent(); - assert(ggfather); - cursor.remove(); - parent.remove(); - // we have to replace the gfather with the elements of its first child, but this group may have no - // children. - if (gfather.first().size()) - { - gfather.replace(gfather.first().first(), TNode()); - ggfather.append(cursor); - } - else - { - // in this case, the MACRO has to be replaced with the cursor - gfather.first().remove(); - gfather.replace(cursor); - } - // now we have the situation preceding the insertion of the leftOpen and rightOpen MACRO. - // this MACRO no longer exists. - frames.pop(); - - if (special) return "\\" + macro_name; - else - { - // to give a standard behavior to the graphical deletion, we call the do_drop. - return do_drop(special); - } - } - else if (frame.entry.rightOpen) - { - // the user has inserted a rightOpen MACRO, and now, this MACRO has no children (excluding the - // phantom group), so we remove the MACRO. - // We can assert that cursor's parent is the only child of the MACRO - assert(gfather.size() == 1); - assert(frame.pos == 0); - cursor.remove(); - parent.remove(); - gfather.replace(cursor); - - // now we have the situation preceding the rightOpen MACRO, so we have to pop the frame - frames.pop(); - - if (special) return "\\" + macro_name; - else - { - // to give a standard behavior to the graphical deletion, we call the do_drop. - return do_drop(special); - } - - } - else if (frame.entry.leftOpen) - { - // this situation will never occur. - logger.error("the parser has generated a wrong TML tree"); - return ""; - } - else if (!frame.entry.pattern.empty()) - { - // the MACRO accepts arguments, and the phantom group in which - // the cursor is, rappresents a delimited argument. - // We have to control if the cursor's parent has a preceding element, - // or not. - TNode uncle = parent.prev(); - if (!uncle) - { - // the parent is the only element of the MACRO. - // we can assert that frame.pos == 0. - // In this case we can replace the MACRO with the cursor - assert(frame.pos == 0); - cursor.remove(); - parent.remove(); - gfather.replace(cursor); - frames.pop(); - - if (special) return "\\" + macro_name; - else - { - // once we have replaced the empty macro with the cursor, we can remove - // something else - return do_drop(special); - } - } - else - { - // the parent has a preceding element. Now we have - // to control if the uncle is a delimited argument or not. - if (uncle.isG() && !uncle.hasId()) - { - // cursor's uncle is a delimited argument - cursor.remove(); - parent.remove(); - uncle.append(cursor); - if (special) - { - // we have to start removing the last delimiter of the delimited - // argument. - std::string last_del = frame.entry.pattern[frame.pos - 1].value; - frame.pos = frame.pos - 2; - return "\\" + last_del; - } - else - { - // the uncle is a delimited argument. So we have to ideally - // remove the sequence of delimiters. - assert(frame.pos > 1); - unsigned sequence_length = frame.pos - frame.entry.previousParam(frame.pos) - 1; - assert(frame.entry.previousParam(frame.pos) != frame.entry.pattern.size()); - assert(sequence_length); - // sequence_length is the length of the delimiters sequence which separates - // the current parameter and the previous parameter - frame.pos = frame.pos - sequence_length - 1; - - // once removed the sequnce of delimiters, we can start to remove the actual - // parameter. We can call the do_drop_phantom_group() because a delimited argument - // is always a phantom group's child - return do_drop_phantom_group(special); - } - } - else - { - // the uncle is a not delimited argument, so we try to remove it. - cursor.remove(); - parent.replace(cursor); - parent = cursor.parent(); // we update the parent (it should be the MACRO) - assert(parent.isC()); - - // now we try to remove the uncle (now it' the preceding element) - return drop_prev(special); - } - } // this is the else's end, that handles the case in which an uncle exists - } // end of if (!frame.entry.pattern.empty()) - else - { - // the entry has no arguments, is not rightOpen and is not leftOpen. - logger.error("TML tree in a strange state"); - return ""; - } - } // end of if (gfather.isC()) - else if (gfather.is("cell")) - { - // A table is a control sequence, so there is a frame in the stack - assert(!frames.empty()); - assert(frames.top().pos == 0); - assert(frames.top().entry.table == 1); - - // a cell MUST be a row's child, which in turn is a table's child - assert(gfather.parent() && gfather.parent().is("row") && gfather.parent().parent()); - - // this variable is useful to handle the special deletion - std::string table_name = gfather.parent().parent().nameC(); - - TNode row = gfather.parent(); - - // in this case the cell has no element, so the user wants to delete this cell. - TNode prev_cell = gfather.prev(); - cursor.remove(); - parent.remove(); - gfather.remove(); - // now the cell no longer exists - - if (!prev_cell) - { - // in this case, the cell was the only cell in the row. - // So, we assume that the user wants to delete the entire row. - TNode table = row.parent(); - TNode prev_row = row.prev(); - row.remove(); - - if (!prev_row) - { - if (special) - { - // Since there was a cell (and a row), the user has typed a "{" to - // We ideally remove this character. - table.append(cursor); - return ""; - } - else - { - // the row was the only child of the table. - // so we have to delete the entire table - assert(table.parent()); - TNode parent_table = table.parent(); - table.remove(); - frames.pop(); - parent_table.append(cursor); - return ""; - } - } - else - { - // there are other rows (one or more) - assert(prev_row.is("row")); - assert(prev_row.last()); - TNode last_cell = prev_row.last(); - assert(last_cell.is("cell")); - assert(last_cell.size() == 1); - assert(last_cell.first().isG() && !last_cell.first().hasId()); - last_cell.first().append(cursor); - // Since cells and rows are separated by spaces and CRs - // (and the user can see this spaces and CRs), a special deletion - // is equivalent to a normal deletion - return ""; - } - } // end of if (!prev_cell) - else - { - // being here means that there is a previous cell, - // so we append the cursor to group. - assert(prev_cell.size() == 1); - assert(prev_cell.first().isG() && !prev_cell.first().hasId()); - prev_cell.first().append(cursor); - return ""; - } - } // end of if (gfather.is("cell")) - else if (gfather.isSp()) - { - // we cannot be here because a phantom group can be a Sp child only - // in two cases. If the user has typed somethong like: - // $^ - // the cursor is not phantom group's child. - // If the user has typed somethong like - // ..'' - // In this case the sequence of ' is placed in a phantom group, - // which becomes the exponent of the script. But, the cursor is - // always outside the phantom group - logger.error("TML tree in a strange state"); - return ""; - } - else if (gfather.is("math")) - { - // in this case we ignore the user's will of deleting - // but we could also decide to remove the math mode. - logger.warning("nothing to delete"); - return ""; - } - else - { - // cursor's grand father is undefined - logger.error("TML tree is in an unknown state"); - return ""; - } - } // end of the else of the if (prev) - -} - - -std::string -TPushParser::do_drop(bool special) -{ - // we have to handle the case in wich the cursor has a parent or not - if (!cursor.parent()) - { - // it's not a good situation...at the moment we do not take actions - logger.error("TML tree not well structured"); - return ""; - } - else - { - // a parent exists. We have to take differnt actions, based on the nature of - // the parent - TNode parent = cursor.parent(); - if (parent.is("math")) - { - // we ca do two thing...we can remove the math mode (it implies controlling the display attribute), we can do nothing - // At the moment, the user's will of deleting is simply ignored - logger.warning("nothing to delete"); - return ""; - } - else if (parent.isG()) - { - // the cursor's parent is a group. We have to control if it's a phantom group or not - if (parent.hasId()) - { - return do_drop_groupId(special); - } - else - { - return do_drop_phantom_group(special); - } - } // end of parent is group - else if (parent.isC()) - { - return do_drop_macro(special); - } // end of parent is a MACRO - else if (parent.isSp() || parent.isSb()) - { - return do_drop_script(special); - } // end of parent is sp or sb - } // end of the else which consider the case in which parent exists - -} // end of method do_drop - -bool -TPushParser::process(const TToken& token) -{ - switch (token.category) - { - case TToken::BEGIN: return do_begin(); - case TToken::END: return do_end(); - case TToken::SHIFT: return do_shift(); - case TToken::ALIGN: return do_align(); - case TToken::EOL: return do_eol(); - case TToken::PARAMETER: return do_parameter(token.value); - case TToken::SUPERSCRIPT: return do_superscript(); - case TToken::SUBSCRIPT: return do_subscript(); - case TToken::IGNORABLE_SPACE: return do_ignorablespace(token.value); - case TToken::SPACE: return do_space(token.value); - case TToken::LETTER: return do_letter(token.value); - case TToken::DIGIT: return do_digit(token.value); - case TToken::OTHER: return do_other(token.value); - case TToken::ACTIVE: return do_active(token.value); - case TToken::COMMENT: return do_comment(); - case TToken::CONTROL: return do_control(token.value); - } -} - -void -TPushParser::push(const TToken& token) -{ - TNode parent = cursor.parent(); - // If the cursor has no parent then it is detached from the editing - // tree, which means this token will be ignored - - if (parent) - // If the parent is a phantom group and the grand-parent is a - // control sequence, there are two cases: - // a. we are parsing a delimited argument of a entry - // b. we are parsing a side of a right- or left-open entry - if (parent.isG() && !parent.hasId() && parent.parent().isC()) - { - // There must be an open frame, for the grand-parent is a control sequence - assert(!frames.empty()); - Frame& frame = frames.top(); - if (!frame.entry.pattern.empty()) - { - // The entry pattern is not empty. By our conventions this means - // the entry cannot be open at either end, hence we are parsing - // a delimited argument - assert(frame.pos + 1 < frame.entry.pattern.size()); - assert(frame.entry.pattern[frame.pos + 1].category != TToken::PARAMETER); - if (frame.entry.pattern[frame.pos + 1] == token) - { - // The token matches with a delimiter of the argument, - // hence we increment the frame.pos - frame.pos++; - - if (frame.entry.lastDelimiter(frame.pos)) - { - // this delimiter is the last one for the argumet, - // so the argument is completed - cursor.remove(); - advance(parent); - } - } - else - { - // Delimiter mismatch. - if (frame.entry.pattern[frame.pos].category != TToken::PARAMETER) - { - // in this case, there is a sequence of delimiters that delimitates - // the argument, and the user has correctly inserted a portion of this - // sequence, but now has inserted a wrong delimiter. - // Here, there are some possibilities: - // - ignore the token, and wait for the correct delimiter - // - ignore the token, wait for the correct delimiter and emit an error - // At the moment, we implement the second possibily - logger.warning("it's not the correct delimiter...you have to type '" + frame.entry.pattern[frame.pos + 1].value + "'"); - } - else - { - // in this case, the sequence of delimiters is composed of one - // delimiter. It means that we have to process the token - process(token); - } - } - } - else - { - // The entry pattern is empty, hence we are parsing a right-open - // entry. What happens if we actually are in the left side? - // This could happen only when re-editing an entered expression - // We'll see... - assert(frame.entry.rightOpen); - process(token); - } - } - else if (parent.isC()) - { - // We are parsing a non-delimited argument entry - // or a fixed token - Frame& frame = frames.top(); - assert(frame.pos < frame.entry.pattern.size()); - - if (frame.entry.pattern[frame.pos].category == TToken::PARAMETER) - { - // As by the TeX parsing rules of undelimited parameters, - // empty spaces are ignored - if ((token.category != TToken::SPACE) && (token.category != TToken::IGNORABLE_SPACE)) process(token); - } - else if (frame.entry.pattern[frame.pos] == token) - { - // The token has been accepted - frame.pos++; - if (frame.pos < frame.entry.pattern.size() && - frame.entry.paramDelimited(frame.pos)) - { - // If the next is a delimited argument we have to place - // the phantom group with the cursor inside - TNode g = doc.createG(); - cursor.replace(g); - g.append(cursor); - } - else - { - cursor.remove(); - advance(parent); - } - } - else - { - // There is a mismatch. Emit an error and ignore the token? - logger.warning("ignored token: " + token.value); - } - } - else - process(token); - else - { - logger.warning("ignored token"); - } - - if (factory && doc.dirtyNode() && !frozen()) factory->documentModified(doc); -} - -std::string -TPushParser::drop(bool special) -{ - std::string str = do_drop(special); - if (factory && doc.dirtyNode() && !frozen()) factory->documentModified(doc); - return str; -} - -void -TPushParser::advance(const TNode& node) -{ - assert(node); - - if (!node.parent()) - { - // this is an error - logger.error("wrong TML tree"); - } - else if (node.parent().isG()) - { - TNode next = node.next(); - if (next) next.insert(cursor); - else node.parent().append(cursor); - } - else if (node.parent().isC()) - { - assert(!frames.empty()); - if ((frames.top().pos + 1 == frames.top().entry.pattern.size()) || (frames.top().entry.pattern.empty())) - { - // we are here when we have a right open macro, or the inserted element is the last one - if (frames.top().entry.rightOpen) - { - // we have to remove the frame from the stack - frames.pop(); - advance(node.parent().parent()); - } - else - { - frames.pop(); - advance(node.parent()); - } - } - else if (frames.top().entry.paramDelimited(frames.top().pos + 1)) - { - // the next argument is delimited, so we have to create a phantom group - TNode g = doc.createG(); - g.append(cursor); - node.parent().append(g); - frames.top().pos++; - } - else - { - // the next argumet is not delimited, so we have to append the cursor - // to the MACRO - node.parent().append(cursor); - frames.top().pos++; - } - } - else advance(node.parent()); -} - -void -TPushParser::setCursorHint(const std::string& c) -{ - if (cursor["val"] != c) - { - cursor["val"] = c; - if (factory && doc.dirtyNode() && !frozen()) factory->documentModified(doc); - } -} - -bool -TPushParser::hideCursor() -{ - if (hiddenCursor++ == 0) - { - cursor["visible"] = "0"; - if (factory && doc.dirtyNode() && !frozen()) factory->documentModified(doc); - return true; - } - else - return false; -} - -bool -TPushParser::showCursor() -{ - if (hiddenCursor > 0 && --hiddenCursor == 0) - { - cursor["visible"] = "1"; - if (factory && doc.dirtyNode() && !frozen()) factory->documentModified(doc); - return true; - } - else - return false; -} - -bool -TPushParser::thaw() -{ - if (APushParser::thaw() && factory && doc.dirtyNode()) - { - factory->documentModified(doc); - return true; - } - else - return false; -} diff --git a/helm/DEVEL/mathml_editor/src/TPushParser.hh b/helm/DEVEL/mathml_editor/src/TPushParser.hh deleted file mode 100644 index a94402fbf..000000000 --- a/helm/DEVEL/mathml_editor/src/TPushParser.hh +++ /dev/null @@ -1,113 +0,0 @@ -/* This file is part of EdiTeX, an editor of mathematical - * expressions based on TeX syntax. - * - * Copyright (C) 2002-2003 Luca Padovani , - * 2003 Paolo Marinelli . - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please visit the project's home page - * http://helm.cs.unibo.it/editex/ - * or send an email to - */ - -#ifndef __TPushParser_hh__ -#define __TPushParser_hh__ - -#include -#include -#include "TToken.hh" -#include "APushParser.hh" -#include "TDictionary.hh" -#include "TDocument.hh" -#include "TNode.hh" - -class TPushParser : public APushParser -{ -public: - TPushParser(class ALogger&, const class TDictionary&); - TPushParser(class ALogger&, class AMathMLFactory&, const class TDictionary&); - virtual ~TPushParser(); - - virtual void reset(void); - virtual void push(const TToken&); - virtual std::string drop(bool); - virtual void setCursorHint(const std::string&); - virtual bool hideCursor(void); - virtual bool showCursor(void); - - virtual bool thaw(void); - - DOM::Document document(void) const { return doc.document().cloneNode(true); } - -private: - void init(void); - - TNode PRIME(void); - bool isPrimes(const TNode&) const; - - bool do_begin(void); - bool do_end(void); - bool do_shift(void); - bool do_align(void); - bool do_eol(void); - bool do_parameter(const std::string&); - bool do_superscript(void); - bool do_subscript(void); - bool do_ignorablespace(const std::string&); - bool do_space(const std::string&); - bool do_letter(const std::string&); - bool do_digit(const std::string&); - bool do_other(const std::string&); - bool do_active(const std::string&); - bool do_comment(void); - bool do_control(const std::string&); - - std::string drop_prev_token(bool); - std::string drop_prev_script(bool); - std::string drop_prev_group(bool); - std::string drop_prev_macro(bool); - std::string drop_prev(bool); - void rgreplace_father(void); - std::string do_drop_script(bool); - std::string do_drop_macro(bool); - std::string do_drop_groupId(bool); - std::string do_drop_phantom_group(bool); - std::string do_drop(bool); - - bool do_cr(void); - bool do_apostrophe(void); - void advance(const TNode&); - bool correctBrace(void); - - bool process(const TToken&); - - struct Frame - { - Frame(const TDictionary::Entry& e) : entry(e), pos(0) { }; - Frame(const TDictionary::Entry&e, unsigned p) : entry(e), pos(p) { }; - const TDictionary::Entry& entry; - unsigned pos; - }; - - std::stack frames; - unsigned nextId; - TDocument doc; - TNode cursor; - unsigned hiddenCursor; - const class TDictionary& dictionary; -}; - -#endif // __TPushParser_hh__ diff --git a/helm/DEVEL/mathml_editor/src/TToken.hh b/helm/DEVEL/mathml_editor/src/TToken.hh deleted file mode 100644 index 0ea74e551..000000000 --- a/helm/DEVEL/mathml_editor/src/TToken.hh +++ /dev/null @@ -1,63 +0,0 @@ -/* This file is part of EdiTeX, an editor of mathematical - * expressions based on TeX syntax. - * - * Copyright (C) 2002-2003 Luca Padovani , - * 2003 Paolo Marinelli . - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please visit the project's home page - * http://helm.cs.unibo.it/editex/ - * or send an email to - */ - -#ifndef __TToken_hh__ -#define __TToken_hh__ - -#include - -struct TToken -{ - enum TCat - { - BEGIN, - END, - SHIFT, - ALIGN, - EOL, - PARAMETER, - SUPERSCRIPT, - SUBSCRIPT, - IGNORABLE_SPACE, - SPACE, - LETTER, - DIGIT, - OTHER, - ACTIVE, - COMMENT, - CONTROL - }; - - TToken(TCat c) : category(c) { }; - TToken(TCat c, char ch) : category(c), value(std::string(1, ch)) { }; - TToken(TCat c, const std::string& v) : category(c), value(v) { }; - - bool operator==(const TToken& token) const { return category == token.category && value == token.value; }; - - TCat category; - std::string value; -}; - -#endif // __TToken_hh__ diff --git a/helm/DEVEL/mathml_editor/src/TTokenizer.cc b/helm/DEVEL/mathml_editor/src/TTokenizer.cc deleted file mode 100644 index 14eeaadb0..000000000 --- a/helm/DEVEL/mathml_editor/src/TTokenizer.cc +++ /dev/null @@ -1,69 +0,0 @@ -/* This file is part of EdiTeX, an editor of mathematical - * expressions based on TeX syntax. - * - * Copyright (C) 2002-2003 Luca Padovani , - * 2003 Paolo Marinelli . - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please visit the project's home page - * http://helm.cs.unibo.it/editex/ - * or send an email to - */ - -#include -#include - -#include "TTokenizer.hh" -#include "TPushLexer.hh" - -std::vector -TTokenizer::tokenize(const std::string& s) -{ - TPushLexer lexer(logger, *this); - - tokens.clear(); - for (std::string::const_iterator p = s.begin(); - p != s.end(); - p++) - lexer.push(*p); - - lexer.flush(); - - std::vector res; - res.reserve(tokens.size()); - copy(tokens.begin(), tokens.end(), back_inserter(res)); - - return res; -} - -void -TTokenizer::reset() -{ - assert(0); -} - -void -TTokenizer::push(const TToken& token) -{ - tokens.push_back(token); -} - -std::string -TTokenizer::drop(bool alt) -{ - assert(0); - return ""; -} diff --git a/helm/DEVEL/mathml_editor/src/TTokenizer.hh b/helm/DEVEL/mathml_editor/src/TTokenizer.hh deleted file mode 100644 index f78acafe4..000000000 --- a/helm/DEVEL/mathml_editor/src/TTokenizer.hh +++ /dev/null @@ -1,54 +0,0 @@ -/* This file is part of EdiTeX, an editor of mathematical - * expressions based on TeX syntax. - * - * Copyright (C) 2002-2003 Luca Padovani , - * 2003 Paolo Marinelli . - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please visit the project's home page - * http://helm.cs.unibo.it/editex/ - * or send an email to - */ - -#ifndef __TTokenizer_hh__ -#define __TTokenizer_hh__ - -#include -#include -#include - -#include "TToken.hh" -#include "APushParser.hh" - -class TTokenizer : private APushParser -{ -public: - TTokenizer(class ALogger& l) : APushParser(l) { }; - - std::vector tokenize(const std::string&); - -private: - virtual void reset(void); - virtual void push(const TToken&); - virtual std::string drop(bool = false); - virtual void setCursorHint(const std::string&) { }; - virtual bool hideCursor(void) { return false; }; - virtual bool showCursor(void) { return false; }; - - std::list tokens; -}; - -#endif // __TTokenizer_hh__ diff --git a/helm/DEVEL/mathml_editor/src/config.dirs.in b/helm/DEVEL/mathml_editor/src/config.dirs.in deleted file mode 100644 index 1ce2d0a5e..000000000 --- a/helm/DEVEL/mathml_editor/src/config.dirs.in +++ /dev/null @@ -1,3 +0,0 @@ - -#define PKGDATADIR "@prefix@/share/@PACKAGE@" - diff --git a/helm/DEVEL/mathml_editor/src/dom.hh b/helm/DEVEL/mathml_editor/src/dom.hh deleted file mode 100644 index d09505fd5..000000000 --- a/helm/DEVEL/mathml_editor/src/dom.hh +++ /dev/null @@ -1,53 +0,0 @@ -/* This file is part of EdiTeX, an editor of mathematical - * expressions based on TeX syntax. - * - * Copyright (C) 2002-2003 Luca Padovani , - * 2003 Paolo Marinelli . - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please visit the project's home page - * http://helm.cs.unibo.it/editex/ - * or send an email to - */ - -#ifndef __dom_hh__ -#define __dom_hh__ - -#include -#include - -namespace DOM = GdomeSmartDOM; -namespace DOMX = GdomeSmartDOMExt; - -typedef DOM::Char32 TChar; -typedef DOM::UCS4String TString; - -inline bool isUnicodeSpace(TChar ch) -{ - return ch == ' ' || ch == '\t' || ch == '\n' || ch == '\r';; -} - -inline bool isUnicodeAlpha(TChar ch) -{ - return (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'); -} - -inline bool isUnicodeDigit(TChar ch) -{ - return (ch >= '0' && ch <= '9'); -} - -#endif // __dom_hh__ diff --git a/helm/DEVEL/mathml_editor/src/globals.hh b/helm/DEVEL/mathml_editor/src/globals.hh deleted file mode 100644 index 3270a49ab..000000000 --- a/helm/DEVEL/mathml_editor/src/globals.hh +++ /dev/null @@ -1,33 +0,0 @@ -/* This file is part of EdiTeX, an editor of mathematical - * expressions based on TeX syntax. - * - * Copyright (C) 2002-2003 Luca Padovani , - * 2003 Paolo Marinelli . - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please visit the project's home page - * http://helm.cs.unibo.it/editex/ - * or send an email to - */ - -#ifndef __globals_hh__ -#define __globals_hh__ - -#define TML_NS_URI "http://helm.cs.unibo.it/2002/TML" -#define XMLNS_NS_URI "http://www.w3.org/2000/xmlns/" -#define MATHML_NS_URI "http://www.w3.org/1998/Math/MathML" - -#endif // __globals_hh__ diff --git a/helm/DEVEL/mathml_editor/test/.cvsignore b/helm/DEVEL/mathml_editor/test/.cvsignore deleted file mode 100644 index bdefc79b9..000000000 --- a/helm/DEVEL/mathml_editor/test/.cvsignore +++ /dev/null @@ -1,5 +0,0 @@ -.deps -.libs -Makefile -Makefile.in -editor diff --git a/helm/DEVEL/mathml_editor/test/Makefile.am b/helm/DEVEL/mathml_editor/test/Makefile.am deleted file mode 100644 index edf73ee18..000000000 --- a/helm/DEVEL/mathml_editor/test/Makefile.am +++ /dev/null @@ -1,21 +0,0 @@ - -noinst_PROGRAMS = editor - -editor_SOURCES = editor.cc guiGTK.c aux.cc - -noinst_HEADERS = guiGTK.h - -LDADDS = \ - $(GMETADOM_LIBS) \ - $(GDOMEXSLT_LIBS) \ - $(GTKMATHVIEW_LIBS) \ - $(top_builddir)/src/.libs/libeditex.a - -editor_LDADD = $(LDADDS) - -INCLUDES = \ - $(GMETADOM_CFLAGS) \ - $(GDOMEXSLT_CFLAGS) \ - $(GTKMATHVIEW_CFLAGS) \ - -I$(top_srcdir)/src - diff --git a/helm/DEVEL/mathml_editor/test/Makefile.in b/helm/DEVEL/mathml_editor/test/Makefile.in deleted file mode 100644 index df6bac536..000000000 --- a/helm/DEVEL/mathml_editor/test/Makefile.in +++ /dev/null @@ -1,396 +0,0 @@ -# Makefile.in generated automatically by automake 1.4-p4 from Makefile.am - -# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - - -SHELL = @SHELL@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -infodir = @infodir@ -mandir = @mandir@ -includedir = @includedir@ -oldincludedir = /usr/include - -DESTDIR = - -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ - -top_builddir = .. - -ACLOCAL = @ACLOCAL@ -AUTOCONF = @AUTOCONF@ -AUTOMAKE = @AUTOMAKE@ -AUTOHEADER = @AUTOHEADER@ - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -transform = @program_transform_name@ - -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -host_alias = @host_alias@ -host_triplet = @host@ -AS = @AS@ -CC = @CC@ -CFLAGS = @CFLAGS@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ -EDITEX_VERSION_INFO = @EDITEX_VERSION_INFO@ -EXEEXT = @EXEEXT@ -GDOMEXSLT_CFLAGS = @GDOMEXSLT_CFLAGS@ -GDOMEXSLT_LIBS = @GDOMEXSLT_LIBS@ -GMETADOM_CFLAGS = @GMETADOM_CFLAGS@ -GMETADOM_LIBS = @GMETADOM_LIBS@ -GTKMATHVIEW_CFLAGS = @GTKMATHVIEW_CFLAGS@ -GTKMATHVIEW_LIBS = @GTKMATHVIEW_LIBS@ -HAVE_OCAMLC = @HAVE_OCAMLC@ -HAVE_OCAMLDEP = @HAVE_OCAMLDEP@ -HAVE_OCAMLFIND = @HAVE_OCAMLFIND@ -HAVE_OCAMLMKLIB = @HAVE_OCAMLMKLIB@ -HAVE_OCAMLOPT = @HAVE_OCAMLOPT@ -LDFLAGS = @LDFLAGS@ -LIBTOOL = @LIBTOOL@ -LN_S = @LN_S@ -MAKEINFO = @MAKEINFO@ -MLGDOME_CFLAGS = @MLGDOME_CFLAGS@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OCAMLC = @OCAMLC@ -OCAMLDEP = @OCAMLDEP@ -OCAMLFIND = @OCAMLFIND@ -OCAMLMKLIB = @OCAMLMKLIB@ -OCAMLOPT = @OCAMLOPT@ -OCAMLSTDLIBDIR = @OCAMLSTDLIBDIR@ -OCAMLSTUBDIR = @OCAMLSTUBDIR@ -OCAML_INCLUDE_DIR = @OCAML_INCLUDE_DIR@ -PACKAGE = @PACKAGE@ -RANLIB = @RANLIB@ -STRIP = @STRIP@ -VERSION = @VERSION@ - -noinst_PROGRAMS = editor - -editor_SOURCES = editor.cc guiGTK.c aux.cc - -noinst_HEADERS = guiGTK.h - -LDADDS = $(GMETADOM_LIBS) $(GDOMEXSLT_LIBS) $(GTKMATHVIEW_LIBS) $(top_builddir)/src/.libs/libeditex.a - - -editor_LDADD = $(LDADDS) - -INCLUDES = $(GMETADOM_CFLAGS) $(GDOMEXSLT_CFLAGS) $(GTKMATHVIEW_CFLAGS) -I$(top_srcdir)/src - -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_HEADER = ../config.h -CONFIG_CLEAN_FILES = -noinst_PROGRAMS = editor$(EXEEXT) -PROGRAMS = $(noinst_PROGRAMS) - - -DEFS = @DEFS@ -I. -I$(srcdir) -I.. -LIBS = @LIBS@ -editor_OBJECTS = editor.$(OBJEXT) guiGTK.$(OBJEXT) aux.$(OBJEXT) -editor_DEPENDENCIES = $(top_builddir)/src/.libs/libeditex.a -editor_LDFLAGS = -CXXFLAGS = @CXXFLAGS@ -CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(LDFLAGS) -o $@ -COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ -HEADERS = $(noinst_HEADERS) - -DIST_COMMON = Makefile.am Makefile.in - - -DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) - -TAR = tar -GZIP_ENV = --best -DEP_FILES = .deps/aux.P .deps/editor.P .deps/guiGTK.P -SOURCES = $(editor_SOURCES) -OBJECTS = $(editor_OBJECTS) - -all: all-redirect -.SUFFIXES: -.SUFFIXES: .S .c .cc .lo .o .obj .s -$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) - cd $(top_srcdir) && $(AUTOMAKE) --gnu test/Makefile - -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES) - cd $(top_builddir) \ - && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status - - -mostlyclean-noinstPROGRAMS: - -clean-noinstPROGRAMS: - -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) - -distclean-noinstPROGRAMS: - -maintainer-clean-noinstPROGRAMS: - -# FIXME: We should only use cygpath when building on Windows, -# and only if it is available. -.c.obj: - $(COMPILE) -c `cygpath -w $<` - -.s.o: - $(COMPILE) -c $< - -.S.o: - $(COMPILE) -c $< - -mostlyclean-compile: - -rm -f *.o core *.core - -rm -f *.$(OBJEXT) - -clean-compile: - -distclean-compile: - -rm -f *.tab.c - -maintainer-clean-compile: - -.s.lo: - $(LIBTOOL) --mode=compile $(COMPILE) -c $< - -.S.lo: - $(LIBTOOL) --mode=compile $(COMPILE) -c $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -distclean-libtool: - -maintainer-clean-libtool: - -editor$(EXEEXT): $(editor_OBJECTS) $(editor_DEPENDENCIES) - @rm -f editor$(EXEEXT) - $(CXXLINK) $(editor_LDFLAGS) $(editor_OBJECTS) $(editor_LDADD) $(LIBS) -.cc.o: - $(CXXCOMPILE) -c $< -.cc.obj: - $(CXXCOMPILE) -c `cygpath -w $<` -.cc.lo: - $(LTCXXCOMPILE) -c $< - -tags: TAGS - -ID: $(HEADERS) $(SOURCES) $(LISP) - list='$(SOURCES) $(HEADERS)'; \ - unique=`for i in $$list; do echo $$i; done | \ - awk ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - here=`pwd` && cd $(srcdir) \ - && mkid -f$$here/ID $$unique $(LISP) - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS)'; \ - unique=`for i in $$list; do echo $$i; done | \ - awk ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ - || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) - -mostlyclean-tags: - -clean-tags: - -distclean-tags: - -rm -f TAGS ID - -maintainer-clean-tags: - -distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) - -subdir = test - -distdir: $(DISTFILES) - here=`cd $(top_builddir) && pwd`; \ - top_distdir=`cd $(top_distdir) && pwd`; \ - distdir=`cd $(distdir) && pwd`; \ - cd $(top_srcdir) \ - && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu test/Makefile - @for file in $(DISTFILES); do \ - d=$(srcdir); \ - if test -d $$d/$$file; then \ - cp -pr $$d/$$file $(distdir)/$$file; \ - else \ - test -f $(distdir)/$$file \ - || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ - || cp -p $$d/$$file $(distdir)/$$file || :; \ - fi; \ - done - -DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :) - --include $(DEP_FILES) - -mostlyclean-depend: - -clean-depend: - -distclean-depend: - -rm -rf .deps - -maintainer-clean-depend: - -%.o: %.c - @echo '$(COMPILE) -c $<'; \ - $(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $< - @-cp .deps/$(*F).pp .deps/$(*F).P; \ - tr ' ' '\012' < .deps/$(*F).pp \ - | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \ - >> .deps/$(*F).P; \ - rm .deps/$(*F).pp - -%.lo: %.c - @echo '$(LTCOMPILE) -c $<'; \ - $(LTCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $< - @-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \ - < .deps/$(*F).pp > .deps/$(*F).P; \ - tr ' ' '\012' < .deps/$(*F).pp \ - | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \ - >> .deps/$(*F).P; \ - rm -f .deps/$(*F).pp - -%.o: %.cc - @echo '$(CXXCOMPILE) -c $<'; \ - $(CXXCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $< - @-cp .deps/$(*F).pp .deps/$(*F).P; \ - tr ' ' '\012' < .deps/$(*F).pp \ - | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \ - >> .deps/$(*F).P; \ - rm .deps/$(*F).pp - -%.lo: %.cc - @echo '$(LTCXXCOMPILE) -c $<'; \ - $(LTCXXCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $< - @-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \ - < .deps/$(*F).pp > .deps/$(*F).P; \ - tr ' ' '\012' < .deps/$(*F).pp \ - | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \ - >> .deps/$(*F).P; \ - rm -f .deps/$(*F).pp -info-am: -info: info-am -dvi-am: -dvi: dvi-am -check-am: all-am -check: check-am -installcheck-am: -installcheck: installcheck-am -install-exec-am: -install-exec: install-exec-am - -install-data-am: -install-data: install-data-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am -install: install-am -uninstall-am: -uninstall: uninstall-am -all-am: Makefile $(PROGRAMS) $(HEADERS) -all-redirect: all-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install -installdirs: - - -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* - -maintainer-clean-generic: -mostlyclean-am: mostlyclean-noinstPROGRAMS mostlyclean-compile \ - mostlyclean-libtool mostlyclean-tags mostlyclean-depend \ - mostlyclean-generic - -mostlyclean: mostlyclean-am - -clean-am: clean-noinstPROGRAMS clean-compile clean-libtool clean-tags \ - clean-depend clean-generic mostlyclean-am - -clean: clean-am - -distclean-am: distclean-noinstPROGRAMS distclean-compile \ - distclean-libtool distclean-tags distclean-depend \ - distclean-generic clean-am - -rm -f libtool - -distclean: distclean-am - -maintainer-clean-am: maintainer-clean-noinstPROGRAMS \ - maintainer-clean-compile maintainer-clean-libtool \ - maintainer-clean-tags maintainer-clean-depend \ - maintainer-clean-generic distclean-am - @echo "This command is intended for maintainers to use;" - @echo "it deletes files that may require special tools to rebuild." - -maintainer-clean: maintainer-clean-am - -.PHONY: mostlyclean-noinstPROGRAMS distclean-noinstPROGRAMS \ -clean-noinstPROGRAMS maintainer-clean-noinstPROGRAMS \ -mostlyclean-compile distclean-compile clean-compile \ -maintainer-clean-compile mostlyclean-libtool distclean-libtool \ -clean-libtool maintainer-clean-libtool tags mostlyclean-tags \ -distclean-tags clean-tags maintainer-clean-tags distdir \ -mostlyclean-depend distclean-depend clean-depend \ -maintainer-clean-depend info-am info dvi-am dvi check check-am \ -installcheck-am installcheck install-exec-am install-exec \ -install-data-am install-data install-am install uninstall-am uninstall \ -all-redirect all-am all installdirs mostlyclean-generic \ -distclean-generic clean-generic maintainer-clean-generic clean \ -mostlyclean distclean maintainer-clean - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/helm/DEVEL/mathml_editor/test/aux.cc b/helm/DEVEL/mathml_editor/test/aux.cc deleted file mode 100644 index bb17013fb..000000000 --- a/helm/DEVEL/mathml_editor/test/aux.cc +++ /dev/null @@ -1,261 +0,0 @@ -/* This file is part of EdiTeX, an editor of mathematical - * expressions based on TeX syntax. - * - * Copyright (C) 2002-2003 Luca Padovani , - * 2003 Paolo Marinelli . - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please visit the project's home page - * http://helm.cs.unibo.it/editex/ - * or send an email to - */ - -#include -#include - -#include -#include -#include - -//#include "gmetadom.hh" - -namespace DOM = GdomeSmartDOM; - -static unsigned -getDepth(const DOM::Element& elem) -{ - unsigned length = 0; - DOM::Element p = elem; - - while (p) - { - p = p.get_parentNode(); - length++; - } - - return length; -} - -static DOM::Element -findCommonAncestor(const DOM::Element& first, const DOM::Element& last) -{ - assert(first); - assert(last); - - DOM::Element p(first); - DOM::Element q(last); - - if (p != q) - { - unsigned pDepth = getDepth(p); - unsigned qDepth = getDepth(q); - - while (p && pDepth > qDepth) - { - p = p.get_parentNode(); - pDepth--; - } - - while (q && qDepth > pDepth) - { - q = q.get_parentNode(); - qDepth--; - } - - assert(pDepth == qDepth); - - while (p && q && p != q) - { - p = p.get_parentNode(); - q = q.get_parentNode(); - } - } - - return p; -} - -static void -findCommonSiblings(const DOM::Element& first, const DOM::Element& last, - DOM::Element& firstS, DOM::Element& lastS) -{ - assert(first); - assert(last); - - DOM::Element p(first); - DOM::Element q(last); - - if (p != q) - { - unsigned pDepth = getDepth(p); - unsigned qDepth = getDepth(q); - - while (p && pDepth > qDepth) - { - p = p.get_parentNode(); - pDepth--; - } - - while (q && qDepth > pDepth) - { - q = q.get_parentNode(); - qDepth--; - } - - assert(pDepth == qDepth); - - while (p && q && p.get_parentNode() != q.get_parentNode()) - { - p = p.get_parentNode(); - q = q.get_parentNode(); - } - } - - firstS = p; - lastS = q; -} - -static DOM::Element -findElementWithRef(const DOM::Element& el) -{ - DOM::Element p = el; - while (p && !p.hasAttribute("xref")) p = p.get_parentNode(); - return p; -} - -static DOM::Node -leftmostChild(const DOM::Node& node) -{ - if (!node) return node; - - DOM::Node firstChild = node.get_firstChild(); - if (!firstChild) return node; - - return leftmostChild(firstChild); -} - -static DOM::Node -rightmostChild(const DOM::Node& node) -{ - if (!node) return node; - - DOM::Node lastChild = node.get_lastChild(); - if (!lastChild) return node; - - return rightmostChild(lastChild); -} - -static DOM::Node -leftSibling(const DOM::Node& node) -{ - DOM::Node p = node; - - if (!p) return p; - - while (p.get_parentNode() && p.get_parentNode().get_firstChild() == p) - p = p.get_parentNode(); - - if (!p.get_parentNode()) return DOM::Node(0); - - DOM::Node prevSibling = p.get_previousSibling(); - assert(prevSibling); - - return rightmostChild(prevSibling); -} - -static DOM::Node -rightSibling(const DOM::Node& node) -{ - DOM::Node p = node; - - if (!p) return p; - - DOM::Node firstChild = p.get_firstChild(); - if (firstChild) return firstChild; - - while (p.get_parentNode() && p.get_parentNode().get_lastChild() == p) - p = p.get_parentNode(); - - if (!p.get_parentNode()) return DOM::Node(0); - - DOM::Node nextSibling = p.get_nextSibling(); - assert(nextSibling); - - return leftmostChild(nextSibling); -} - -extern "C" GdomeElement* -find_common_ancestor(GdomeElement* first, GdomeElement* last) -{ - if (GdomeNode* n = findCommonAncestor(DOM::Element(first), DOM::Element(last)).gdome_object()) - { - GdomeElement* res = gdome_cast_el(n); - g_assert(res != NULL); - return res; - } - else - return NULL; -} - -extern "C" void -find_common_siblings(GdomeElement* first, GdomeElement* last, - GdomeElement** firstS, GdomeElement** lastS) -{ - DOM::Element fs(0); - DOM::Element ls(0); - - findCommonSiblings(DOM::Element(first), DOM::Element(last), fs, ls); - - if (firstS != NULL) *firstS = gdome_cast_el(fs.gdome_object()); - if (lastS != NULL) *lastS = gdome_cast_el(ls.gdome_object()); -} - -extern "C" GdomeElement* -find_element_with_ref(GdomeElement* elem) -{ - if (GdomeNode* n = findElementWithRef(DOM::Element(elem)).gdome_object()) - { - GdomeElement* res = gdome_cast_el(n); - g_assert(res != NULL); - return res; - } - else - return NULL; -} - -extern "C" GdomeElement* -find_common_ancestor_with_ref(GdomeElement* first, GdomeElement* last) -{ - if (GdomeNode* n = findElementWithRef(findCommonAncestor(DOM::Element(first), DOM::Element(last))).gdome_object()) - { - GdomeElement* res = gdome_cast_el(n); - g_assert(res != NULL); - return res; - } - else - return NULL; -} - -extern "C" void -delete_element(GdomeElement* elem) -{ - DOM::Element p(elem); - - DOM::Element parent = p.get_parentNode(); - assert(parent); - - parent.removeChild(p); -} - diff --git a/helm/DEVEL/mathml_editor/test/editor.cc b/helm/DEVEL/mathml_editor/test/editor.cc deleted file mode 100644 index 38c8bbbd0..000000000 --- a/helm/DEVEL/mathml_editor/test/editor.cc +++ /dev/null @@ -1,192 +0,0 @@ -/* This file is part of EdiTeX, an editor of mathematical - * expressions based on TeX syntax. - * - * Copyright (C) 2002-2003 Luca Padovani , - * 2003 Paolo Marinelli . - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please visit the project's home page - * http://helm.cs.unibo.it/editex/ - * or send an email to - */ - -#include - -#include "dom.hh" -#include "TPushParser.hh" - -#include "ILPushLexer.hh" -#include "TDictionary.hh" -#include "CLoggerConsole.hh" -#include "CMathMLFactoryXSLT.hh" -#include "CMathMLFactoryXSLTDiff.hh" -#include "AMathMLConsumer.hh" - -#include "guiGTK.h" - -extern void *parseMathMLFile(char *); - -struct Context -{ - /* - Context(const std::string& s, TPushLexer& l, TPushParser& p) : buffer(s), i(0), lexer(l), parser(p) { }; - */ - Context(const std::string& s, APushLexer& l, TPushParser& p, DOMX::XSLTStylesheet& ts) - : buffer(s), i(0), lexer(l), parser(p), texStyle(ts) { }; - - void send(void) - { - if (i < buffer.length()) lexer.push(buffer[i++]); - } - - std::string buffer; - unsigned i; - APushLexer& lexer; - TPushParser& parser; - DOMX::XSLTStylesheet& texStyle; -}; - -extern "C" void -edit_output_tex(Context* data) -{ - assert(data); - DOM::Document res = data->texStyle.apply(data->parser.document()); -#if 0 - res.normalize(); - DOM::Node c = res.get_firstChild(); - if (c) std::cout << "HEY, there is a child! " << c.get_nodeName() << " " << c.get_nodeValue() << std::endl; -#endif - data->texStyle.save(res, stdout); -} - -extern "C" int -edit_timeout(Context* data) -{ - assert(data); - GUI_freeze(); - data->send(); - GUI_thaw(); - return 1; -} - -extern "C" void -edit_push_char(Context* context, gchar ch) -{ - assert(context != NULL); - GUI_freeze(); - std::cout << "*** SENDING " << ch << std::endl; - context->lexer.push(ch); - GUI_thaw(); -} - -#include - -extern "C" void -edit_push_string(Context* context, const gchar* s) -{ - assert(context != NULL); - assert(s != NULL); -#if 0 -// GUI_freeze(); -// context->parser.freeze(); - for (unsigned i = 0; s[i]; i++) - { - GUI_freeze(); - context->lexer.push(s[i]); - GUI_thaw(); - usleep(100000); - usleep(100000); - } -// context->parser.thaw(); -// GUI_thaw(); -#endif - context->buffer = s; -} - -extern "C" void -edit_drop(Context* context, gboolean alt, gboolean control) -{ - // At the moment, the last parameter is not used, but it will - // be useful when we will handle the "fast" deletion - assert(context != NULL); - GUI_freeze(); - context->lexer.drop(alt); - GUI_thaw(); -} - -extern "C" void -edit_reset_tex(Context* context) -{ - assert(context != NULL); - GUI_freeze(); - context->lexer.reset(); - context->parser.reset(); - GUI_thaw(); -} - -extern "C" void -edit_complete(Context* context) -{ - assert(context != NULL); - GUI_freeze(); - if (!context->lexer.complete()) context->lexer.push('\t'); - GUI_thaw(); -} - -int -main(int argc, char* argv[]) -{ - CLoggerConsole logger; - logger.verbosity(ALogger::Debug); - - TDictionary dictionary(logger); - logger.info("loading the dictionary..."); - dictionary.load("/usr/share/editex/dictionary-tex.xml"); - - logger.info("loading the stylesheet..."); - DOM::DOMImplementation di; - DOM::Document mmlStyleDoc = di.createDocumentFromURI("./xsl/tml-mmlp.xsl"); - DOMX::XSLTStylesheet mmlStyle(mmlStyleDoc); - - DOM::Document texStyleDoc = di.createDocumentFromURI("./xsl/tml-texid.xsl"); - DOMX::XSLTStylesheet texStyle(texStyleDoc); - - CMathMLFactoryXSLTDiff factory(logger, mmlStyle); - TPushParser parser(logger, factory, dictionary); - ILPushLexer lexer(logger, parser, dictionary); - -#if 0 - lexer.push('$'); - lexer.push(' '); - assert(result); -#endif - -#if 0 - DOM::Document doc = parser.document().document(); - std::vector< std::pair > np; - result = style.apply(doc, np); - style.save(result, stdout); -#endif - - Context context("", lexer, parser, texStyle); - - GUI_init(&argc, &argv, "EditTeX", 500, 600, &context); - GUI_load_document(gdome_cast_doc(static_cast(factory.document()))); - GUI_run(); - GUI_uninit(); - GUI_unload_document(); - -} diff --git a/helm/DEVEL/mathml_editor/test/guiGTK.c b/helm/DEVEL/mathml_editor/test/guiGTK.c deleted file mode 100644 index 01994eaf1..000000000 --- a/helm/DEVEL/mathml_editor/test/guiGTK.c +++ /dev/null @@ -1,685 +0,0 @@ -/* This file is part of EdiTeX, an editor of mathematical - * expressions based on TeX syntax. - * - * Copyright (C) 2002-2003 Luca Padovani , - * 2003 Paolo Marinelli . - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please visit the project's home page - * http://helm.cs.unibo.it/editex/ - * or send an email to - */ - -#include -#include -#include -#include - -#include -#include "guiGTK.h" - -#define XLINK_NS_URI "http://www.w3.org/1999/xlink" - -static GtkWidget* window; -static GtkWidget* main_area; -static GtkWidget* scrolled_area; -static GtkMenuItem* anti_aliasing_item; -static GtkMenuItem* transparency_item; - -static gpointer context = NULL; -static gchar* doc_name = NULL; -static GdomeElement* first_selected = NULL; -static GdomeElement* root_selected = NULL; - -static void create_widget_set(gpointer); -static GtkWidget* get_main_menu(void); -static void file_open(GtkWidget*, gpointer); -static void file_re_open(GtkWidget*, gpointer); -static void file_close(GtkWidget*, gpointer); -static void file_output_tex(GtkWidget*, gpointer); -static void options_font_manager(GtkWidget*, FontManagerId); -static void options_set_font_size(GtkWidget*, gpointer); -static void options_change_font_size(GtkWidget*, gboolean); -static void options_verbosity(GtkWidget*, guint); -static void options_anti_aliasing(GtkWidget*, gpointer); -static void options_transparency(GtkWidget*, gpointer); -static void edit_delete_selection(GtkWidget*, gpointer); -static void edit_select_parent(GtkWidget*, gpointer); -static void edit_reset_selection(GtkWidget*, gpointer); -static void edit_reset(GtkWidget*, gpointer); -static void edit_insert(GtkWidget*, gpointer); -static void help_about(GtkWidget*, gpointer); - -static GtkItemFactoryEntry menu_items[] = { - { "/_File", NULL, NULL, 0, "" }, - { "/File/_Open...", "O", file_open, 0, NULL }, - { "/File/_Reopen", NULL, file_re_open, 0, NULL }, - { "/File/_Close", "W", file_close, 0, NULL }, - { "/File/Output _TeX", NULL, file_output_tex, 0, NULL }, - { "/File/sep1", NULL, NULL, 0, "" }, - { "/File/_Quit", "Q", gtk_main_quit, 0, NULL }, - - { "/_Edit", NULL, NULL, 0, "" }, - { "/Edit/Reset Selection", NULL, edit_reset_selection, 0, NULL }, - { "/Edit/Delete Selection", NULL, edit_delete_selection, 0, NULL }, - { "/Edit/Select Parent", NULL, edit_select_parent, 0, NULL }, - { "/Edit/sep1", NULL, NULL, 0, "" }, - { "/Edit/_Reset", NULL, edit_reset, 0, NULL }, - { "/Edit/Insert...", "I", edit_insert, 0, NULL }, - - { "/_Options", NULL, NULL, 0, "" }, - { "/Options/Default _Font Size", NULL, NULL, 0, "" }, - { "/Options/Default Font Size/Set...", NULL, options_set_font_size, 0, NULL }, - { "/Options/Default Font Size/sep1", NULL, NULL, 0, "" }, - { "/Options/Default Font Size/Larger", NULL, options_change_font_size, TRUE, NULL }, - { "/Options/Default Font Size/Smaller", NULL, options_change_font_size, FALSE, NULL }, - { "/Options/Font Manager", NULL, NULL, 0, "" }, - { "/Options/Font Manager/_GTK", NULL, options_font_manager, FONT_MANAGER_GTK, "" }, - { "/Options/Font Manager/_Type 1", NULL, options_font_manager, FONT_MANAGER_T1, "/Options/Font Manager/GTK" }, - { "/Options/Verbosity", NULL, NULL, 0, "" }, - { "/Options/Verbosity/_Errors", NULL, options_verbosity, 0, "" }, - { "/Options/Verbosity/_Warnings", NULL, options_verbosity, 1, "/Options/Verbosity/Errors" }, - { "/Options/Verbosity/_Info", NULL, options_verbosity, 2, "/Options/Verbosity/Errors" }, - { "/Options/Verbosity/_Debug", NULL, options_verbosity, 3, "/Options/Verbosity/Errors" }, - { "/Options/sep1", NULL, NULL, 0, "" }, - { "/Options/_Anti Aliasing", NULL, options_anti_aliasing, 0, "" }, - { "/Options/_Transparency", NULL, options_transparency, 0, "" }, - - { "/_Help" , NULL, NULL, 0, "" }, - { "/Help/About...", NULL, help_about, 0, NULL } -}; - -static void -quick_message(const char* msg) -{ - GtkWidget* dialog; - GtkWidget* label; - GtkWidget* okay_button; - - /* Create the widgets */ - - dialog = gtk_dialog_new(); - label = gtk_label_new (msg); - okay_button = gtk_button_new_with_label("OK"); - - gtk_widget_set_usize(dialog, 300, 100); - - /* Ensure that the dialog box is destroyed when the user clicks ok. */ - - gtk_signal_connect_object (GTK_OBJECT (okay_button), "clicked", - GTK_SIGNAL_FUNC (gtk_widget_destroy), dialog); - gtk_container_add (GTK_CONTAINER (GTK_DIALOG(dialog)->action_area), - okay_button); - - /* Add the label, and show everything we've added to the dialog. */ - - gtk_container_add (GTK_CONTAINER (GTK_DIALOG(dialog)->vbox), label); - gtk_widget_show_all (dialog); -} - -static void -load_error_msg(const char* name) -{ - char* msg = g_strdup_printf("Could not load\n`%s'", name); - quick_message(msg); - g_free(msg); -} - -static guint edit_timeout_id; -extern void edit_timeout(gpointer); - -void -GUI_init(int* argc, char*** argv, char* title, guint width, guint height, gpointer c) -{ - gtk_init(argc, argv); - - window = gtk_window_new(GTK_WINDOW_TOPLEVEL); - gtk_window_set_title(GTK_WINDOW(window), title); - gtk_window_set_default_size(GTK_WINDOW(window), width, height); - gtk_signal_connect(GTK_OBJECT(window), "delete_event", (GtkSignalFunc) gtk_main_quit, NULL); - create_widget_set(context); - - gtk_widget_show(window); - - context = c; - /*edit_timeout_id = gtk_timeout_add(50, edit_timeout, context);*/ -} - -void -GUI_uninit() -{ - GdomeException exc = 0; - - if (first_selected != NULL) - { - gdome_el_unref(first_selected, &exc); - g_assert(exc == 0); - first_selected = NULL; - } - - if (root_selected != NULL) - { - gdome_el_unref(root_selected, &exc); - g_assert(exc == 0); - root_selected = NULL; - } - - context = NULL; -} - -int -GUI_load_document(GdomeDocument* doc) -{ - GtkMathView* math_view; - - g_return_val_if_fail(doc != NULL, -1); - g_return_val_if_fail(main_area != NULL, -1); - g_return_val_if_fail(GTK_IS_MATH_VIEW(main_area), -1); - - math_view = GTK_MATH_VIEW(main_area); - - if (!gtk_math_view_load_doc(math_view, doc)) return -1; - - return 0; -} - -void -GUI_freeze() -{ - gtk_math_view_freeze(GTK_MATH_VIEW(main_area)); -} - -void -GUI_thaw() -{ - gtk_math_view_thaw(GTK_MATH_VIEW(main_area)); -} - -void -GUI_unload_document() -{ - GtkMathView* math_view; - - g_return_if_fail(main_area != NULL); - g_return_if_fail(GTK_IS_MATH_VIEW(main_area)); - - math_view = GTK_MATH_VIEW(main_area); - - gtk_math_view_unload(math_view); - - if (doc_name != NULL) g_free(doc_name); - doc_name = NULL; -} - -void -GUI_run() -{ - gtk_main(); -} - -void -GUI_set_font_manager(FontManagerId id) -{ - gboolean t1; - GtkMathView* math_view; - - g_return_if_fail(id != FONT_MANAGER_UNKNOWN); - g_return_if_fail(main_area != NULL); - g_return_if_fail(GTK_IS_MATH_VIEW(main_area)); - - t1 = id == FONT_MANAGER_T1; - - math_view = GTK_MATH_VIEW(main_area); - - gtk_math_view_freeze(math_view); - - if (id != gtk_math_view_get_font_manager_type(math_view)) - gtk_math_view_set_font_manager_type(math_view, id); - - gtk_widget_set_sensitive(anti_aliasing_item, t1); - gtk_widget_set_sensitive(transparency_item, t1); - - if (t1) - { - gtk_math_view_set_anti_aliasing(math_view, GTK_CHECK_MENU_ITEM(anti_aliasing_item)->active); - gtk_math_view_set_transparency(math_view, GTK_CHECK_MENU_ITEM(transparency_item)->active); - } - - gtk_math_view_thaw(math_view); -} - -static void -store_filename(GtkFileSelection* selector, GtkWidget* user_data) -{ - gchar* selected_filename = gtk_file_selection_get_filename (GTK_FILE_SELECTION(user_data)); - if (selected_filename != NULL) - GUI_load_document(selected_filename); -} - -static void -file_close(GtkWidget* widget, gpointer data) -{ - GUI_unload_document(); -} - -static void -file_re_open(GtkWidget* widget, gpointer data) -{ - if (doc_name != NULL) { - GUI_load_document(doc_name); - } -} - -static void -file_open(GtkWidget* widget, gpointer data) -{ - GtkWidget* fs = gtk_file_selection_new("Open File"); - - gtk_signal_connect (GTK_OBJECT (GTK_FILE_SELECTION(fs)->ok_button), - "clicked", GTK_SIGNAL_FUNC (store_filename), (gpointer) fs); - - /* Ensure that the dialog box is destroyed when the user clicks a button. */ - - gtk_signal_connect_object (GTK_OBJECT (GTK_FILE_SELECTION(fs)->ok_button), - "clicked", GTK_SIGNAL_FUNC (gtk_widget_destroy), - (gpointer) fs); - - gtk_signal_connect_object (GTK_OBJECT (GTK_FILE_SELECTION(fs)->cancel_button), - "clicked", GTK_SIGNAL_FUNC (gtk_widget_destroy), - (gpointer) fs); - - /* Display that dialog */ - - gtk_widget_show (fs); -} - -static void -file_output_tex(GtkWidget* widget, gpointer data) -{ - g_assert(context != NULL); - edit_output_tex(context); -} - -static void -options_font_manager(GtkWidget* widget, FontManagerId id) -{ - g_return_if_fail(id != FONT_MANAGER_UNKNOWN); - GUI_set_font_manager(id); -} - -static void -options_anti_aliasing(GtkWidget* widget, gpointer data) -{ - gboolean aa = gtk_math_view_get_anti_aliasing(GTK_MATH_VIEW(main_area)); - gtk_math_view_set_anti_aliasing(GTK_MATH_VIEW(main_area), !aa); -} - -static void -options_transparency(GtkWidget* widget, gpointer data) -{ - gboolean t = gtk_math_view_get_transparency(GTK_MATH_VIEW(main_area)); - gtk_math_view_set_transparency(GTK_MATH_VIEW(main_area), !t); -} - -static void -options_verbosity(GtkWidget* widget, guint level) -{ - gtk_math_view_set_log_verbosity(GTK_MATH_VIEW(main_area), level); -} - -static void -edit_delete_selection(GtkWidget* widget, gpointer data) -{ - if (root_selected != NULL) - { - GdomeException exc; - gtk_math_view_freeze(GTK_MATH_VIEW(main_area)); - printf("about to remove element %p\n", root_selected); - delete_element(root_selected); - gdome_el_unref(root_selected, &exc); - g_assert(exc == 0); - root_selected = NULL; - gtk_math_view_thaw(GTK_MATH_VIEW(main_area)); - } -} - -static void -edit_select_parent(GtkWidget* widget, gpointer data) -{ - if (root_selected != NULL) - { - GdomeException exc = 0; - GdomeElement* parent = gdome_n_parentNode(root_selected, &exc); - g_assert(exc == 0); - gdome_el_unref(root_selected, &exc); - g_assert(exc == 0); - root_selected = parent; - /* gtk_math_view_set_selection(GTK_MATH_VIEW(main_area), root_selected); */ - } -} - -static void -edit_reset_selection(GtkWidget* widget, gpointer data) -{ - if (root_selected != NULL) - { - GdomeException exc = 0; - /* gtk_math_view_reset_selection(GTK_MATH_VIEW(main_area), root_selected); */ - gdome_el_unref(root_selected, &exc); - g_assert(exc == 0); - root_selected = NULL; - } -} - -static void -edit_reset(GtkWidget* widget, gpointer data) -{ - g_assert(context != NULL); - edit_reset_tex(context); -} - -static void -insert_tex(GtkWidget* widget, GtkEntry* entry) -{ - gchar* text; - g_return_if_fail(entry != NULL); - - text = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1); - edit_push_string(context, text); - g_free(text); -} - -static void -edit_insert(GtkWidget* widget, gpointer data) -{ - GtkWidget* dialog; - GtkWidget* entry; - GtkWidget* ok; - GtkWidget* cancel; - - dialog = gtk_dialog_new(); - entry = gtk_entry_new(); - ok = gtk_button_new_with_label("OK"); - cancel = gtk_button_new_with_label("Cancel"); - - gtk_signal_connect (GTK_OBJECT (ok), "clicked", - GTK_SIGNAL_FUNC (insert_tex), (gpointer) entry); - - gtk_signal_connect_object (GTK_OBJECT (ok), "clicked", - GTK_SIGNAL_FUNC (gtk_widget_destroy), (gpointer) dialog); - - gtk_signal_connect_object (GTK_OBJECT (ok), "clicked", - GTK_SIGNAL_FUNC (gtk_widget_destroy), (gpointer) dialog); - - gtk_signal_connect_object (GTK_OBJECT (cancel), "clicked", - GTK_SIGNAL_FUNC (gtk_widget_destroy), (gpointer) dialog); - - gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG(dialog)->vbox), 5); - - gtk_container_add (GTK_CONTAINER (GTK_DIALOG(dialog)->vbox), entry); - gtk_container_add (GTK_CONTAINER (GTK_DIALOG(dialog)->action_area), ok); - gtk_container_add (GTK_CONTAINER (GTK_DIALOG(dialog)->action_area), cancel); - - gtk_widget_show_all (dialog); -} - -static void -help_about(GtkWidget* widget, gpointer data) -{ - GtkWidget* dialog; - GtkWidget* label; - GtkWidget* ok; - - dialog = gtk_dialog_new(); - label = gtk_label_new("\n MathML Editor \n Copyright (C) 2003 Luca Padovani \n"); - ok = gtk_button_new_with_label("Close"); - - gtk_signal_connect_object (GTK_OBJECT (ok), "clicked", - GTK_SIGNAL_FUNC (gtk_widget_destroy), (gpointer) dialog); - gtk_container_add (GTK_CONTAINER (GTK_DIALOG(dialog)->action_area), - ok); - - gtk_container_add (GTK_CONTAINER (GTK_DIALOG(dialog)->vbox), label); - - gtk_widget_show_all (dialog); -} - -static void -change_default_font_size(GtkWidget* widget, GtkSpinButton* spin) -{ - g_return_if_fail(spin != NULL); - gtk_math_view_set_font_size( GTK_MATH_VIEW(main_area), gtk_spin_button_get_value_as_int(spin)); -} - -static void -options_change_font_size(GtkWidget* widget, gboolean larger) -{ - gfloat size = gtk_math_view_get_font_size (GTK_MATH_VIEW(main_area)); - if (larger) size = size / 0.71; - else size = size * 0.71; - if (size < 1) size = 1; - gtk_math_view_set_font_size (GTK_MATH_VIEW(main_area), (gint) size + 0.5); -} - -static void -options_set_font_size(GtkWidget* widget, gpointer data) -{ - GtkWidget* dialog; - GtkWidget* label; - GtkWidget* ok; - GtkWidget* cancel; - GtkWidget* spin; - GtkObject* adj; - - dialog = gtk_dialog_new(); - label = gtk_label_new("Default font size:"); - ok = gtk_button_new_with_label("OK"); - cancel = gtk_button_new_with_label("Cancel"); - - adj = gtk_adjustment_new (gtk_math_view_get_font_size (GTK_MATH_VIEW(main_area)), 1, 200, 1, 1, 1); - spin = gtk_spin_button_new (GTK_ADJUSTMENT(adj), 1, 0); - gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spin), TRUE); - - gtk_signal_connect (GTK_OBJECT (ok), "clicked", - GTK_SIGNAL_FUNC (change_default_font_size), (gpointer) spin); - - gtk_signal_connect_object (GTK_OBJECT (ok), "clicked", - GTK_SIGNAL_FUNC (gtk_widget_destroy), (gpointer) dialog); - - gtk_signal_connect_object (GTK_OBJECT (ok), "clicked", - GTK_SIGNAL_FUNC (gtk_widget_destroy), (gpointer) dialog); - - gtk_signal_connect_object (GTK_OBJECT (cancel), "clicked", - GTK_SIGNAL_FUNC (gtk_widget_destroy), (gpointer) dialog); - - gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG(dialog)->vbox), 5); - - gtk_container_add (GTK_CONTAINER (GTK_DIALOG(dialog)->action_area), ok); - gtk_container_add (GTK_CONTAINER (GTK_DIALOG(dialog)->action_area), cancel); - gtk_container_add (GTK_CONTAINER (GTK_DIALOG(dialog)->vbox), label); - gtk_container_add (GTK_CONTAINER (GTK_DIALOG(dialog)->vbox), spin); - - gtk_widget_show_all (dialog); -} - -static void -select_begin(GtkMathView* math_view, GdomeElement* first, gint state) -{ - GdomeException exc = 0; - - g_return_if_fail(math_view != NULL); - g_return_if_fail(GTK_IS_MATH_VIEW(math_view)); - g_return_if_fail(first != NULL); - - gtk_math_view_freeze(math_view); - - if (root_selected != NULL) - { - gtk_math_view_unselect(math_view, root_selected); - gdome_el_unref(root_selected, &exc); - g_assert(exc == 0); - } - - root_selected = first_selected = find_element_with_ref(first); - - if (root_selected != NULL) - { - gtk_math_view_select(math_view, root_selected); - gdome_el_ref(root_selected, &exc); - g_assert(exc == 0); - } - - gtk_math_view_thaw(math_view); -} - -static void -select_over(GtkMathView* math_view, GdomeElement* elem, gint state) -{ - GdomeElement* new_selected = NULL; - GdomeException exc = 0; - - g_return_if_fail(math_view != NULL); - g_return_if_fail(GTK_IS_MATH_VIEW(math_view)); - g_return_if_fail(elem != NULL); - - if (first_selected == NULL || elem == NULL) - new_selected = NULL; - else - new_selected = find_common_ancestor_with_ref(first_selected, elem); - - if (new_selected != root_selected) - { - gtk_math_view_freeze(math_view); - if (root_selected != NULL) - { - gtk_math_view_unselect(math_view, root_selected); - gdome_el_unref(root_selected, &exc); - g_assert(exc == 0); - } - root_selected = new_selected; - if (root_selected != NULL) - gtk_math_view_select(math_view, root_selected); - gtk_math_view_thaw(math_view); - } - else if (new_selected != NULL) - { - gdome_el_unref(new_selected, &exc); - g_assert(exc == 0); - } - -} - -static gboolean -key_press_event(gpointer c, - GdkEventKey* event, - GtkWidget* widget) -{ - g_return_val_if_fail(widget != NULL, FALSE); - g_return_val_if_fail(event != NULL, FALSE); - g_return_val_if_fail(context != NULL, FALSE); - - if (event->type != GDK_KEY_PRESS) return FALSE; - - switch (event->keyval) - { - case GDK_BackSpace: - edit_drop(context, event->state & GDK_MOD1_MASK, event->state & GDK_CONTROL_MASK); - break; - case GDK_Tab: - edit_complete(context); - break; - default: - if ((event->state & (GDK_CONTROL_MASK | GDK_MOD1_MASK)) == 0 && event->keyval < 0x80) - edit_push_char(context, event->keyval); - return FALSE; - } - - return TRUE; -} - -static void -create_widget_set(gpointer context) -{ - GtkWidget* main_vbox; - GtkWidget* menu_bar; - - main_vbox = gtk_vbox_new(FALSE, 1); - gtk_container_border_width(GTK_CONTAINER(main_vbox), 1); - gtk_container_add(GTK_CONTAINER(window), main_vbox); - gtk_widget_show(main_vbox); - - menu_bar = get_main_menu(); - gtk_box_pack_start(GTK_BOX(main_vbox), menu_bar, FALSE, TRUE, 0); - gtk_widget_show(menu_bar); - - main_area = gtk_math_view_new(NULL, NULL); - gtk_widget_show(main_area); - - //gtk_math_view_set_log_verbosity(GTK_MATH_VIEW(main_area), 3); - - gtk_signal_connect_object (GTK_OBJECT (main_area), - "select_begin", GTK_SIGNAL_FUNC (select_begin), - (gpointer) main_area); - - gtk_signal_connect_object (GTK_OBJECT (main_area), - "select_over", GTK_SIGNAL_FUNC (select_over), - (gpointer) main_area); - - gtk_signal_connect_object (GTK_OBJECT(window), - "key_press_event", GTK_SIGNAL_FUNC(key_press_event), - context); - - gtk_widget_add_events(GTK_WIDGET(main_area), GDK_KEY_PRESS_MASK); - - scrolled_area = gtk_scrolled_window_new(NULL, NULL); - gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_area), - GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); - - gtk_widget_show(scrolled_area); - gtk_container_add(GTK_CONTAINER(scrolled_area), main_area); - gtk_box_pack_start(GTK_BOX(main_vbox), scrolled_area, TRUE, TRUE, 0); - - gtk_widget_show(main_vbox); - - if (gtk_math_view_get_anti_aliasing(GTK_MATH_VIEW(main_area))) - gtk_menu_item_activate(anti_aliasing_item); -} - -GtkWidget* -get_main_menu() -{ - GtkItemFactory* item_factory; - GtkAccelGroup* accel_group; - GtkWidget* menu_item; - - gint nmenu_items = sizeof(menu_items) / sizeof(menu_items[0]); - - accel_group = gtk_accel_group_new(); - - item_factory = gtk_item_factory_new(GTK_TYPE_MENU_BAR, "

    ", accel_group); - - gtk_item_factory_create_items(item_factory, nmenu_items, menu_items, NULL); - - gtk_window_add_accel_group(GTK_WINDOW(window), accel_group); - - menu_item = gtk_item_factory_get_widget(item_factory, "/Options/Anti Aliasing"); - anti_aliasing_item = GTK_MENU_ITEM(menu_item); - - menu_item = gtk_item_factory_get_widget(item_factory, "/Options/Transparency"); - transparency_item = GTK_MENU_ITEM(menu_item); - - return gtk_item_factory_get_widget(item_factory, "
    "); -} diff --git a/helm/DEVEL/mathml_editor/test/guiGTK.h b/helm/DEVEL/mathml_editor/test/guiGTK.h deleted file mode 100644 index 7e3e20735..000000000 --- a/helm/DEVEL/mathml_editor/test/guiGTK.h +++ /dev/null @@ -1,59 +0,0 @@ -/* This file is part of EdiTeX, an editor of mathematical - * expressions based on TeX syntax. - * - * Copyright (C) 2002-2003 Luca Padovani , - * 2003 Paolo Marinelli . - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please visit the project's home page - * http://helm.cs.unibo.it/editex/ - * or send an email to - */ - -#ifndef guiGTK_h -#define guiGTK_h - -#include -#include - -#include - -#ifdef __cplusplus -extern "C" { -#endif - - /* initGUI: some initialization stuff, creates the main window, sets it with a title */ - void GUI_init(int *, char ***, char *, guint, guint, gpointer); - void GUI_uninit(void); - - int GUI_load_document(GdomeDocument*); - int GUI_load_uri(const char*); - void GUI_unload_document(void); - void GUI_dump_entities(void); - - /* main: this is the main event loop, to be called when the program is ready to run */ - void GUI_run(void); - - void GUI_freeze(void); - void GUI_thaw(void); - - void GUI_set_font_manager(FontManagerId); - -#ifdef __cplusplus -} -#endif - -#endif /* guiGTK_h */ diff --git a/helm/DEVEL/mathml_editor/textomml/.cvsignore b/helm/DEVEL/mathml_editor/textomml/.cvsignore deleted file mode 100644 index c54770a84..000000000 --- a/helm/DEVEL/mathml_editor/textomml/.cvsignore +++ /dev/null @@ -1,6 +0,0 @@ -.deps -.libs -Makefile -Makefile.in -textomml -config.dirs diff --git a/helm/DEVEL/mathml_editor/textomml/Makefile.am b/helm/DEVEL/mathml_editor/textomml/Makefile.am deleted file mode 100644 index cd66658f5..000000000 --- a/helm/DEVEL/mathml_editor/textomml/Makefile.am +++ /dev/null @@ -1,17 +0,0 @@ - -noinst_PROGRAMS = textomml - -textomml_SOURCES = main.cc - -LDADDS = \ - $(GMETADOM_LIBS) \ - $(GDOMEXSLT_LIBS) \ - $(top_builddir)/src/.libs/libeditex.a - -textomml_LDADD = $(LDADDS) - -INCLUDES = \ - $(GMETADOM_CFLAGS) \ - $(GDOMEXSLT_CFLAGS) \ - -I$(top_srcdir)/src - diff --git a/helm/DEVEL/mathml_editor/textomml/config.dirs.in b/helm/DEVEL/mathml_editor/textomml/config.dirs.in deleted file mode 100644 index 49791891b..000000000 --- a/helm/DEVEL/mathml_editor/textomml/config.dirs.in +++ /dev/null @@ -1 +0,0 @@ -#define PKGDATADIR "@prefix@/share/@PACKAGE@" diff --git a/helm/DEVEL/mathml_editor/textomml/main.cc b/helm/DEVEL/mathml_editor/textomml/main.cc deleted file mode 100644 index 9da0f0993..000000000 --- a/helm/DEVEL/mathml_editor/textomml/main.cc +++ /dev/null @@ -1,192 +0,0 @@ -/* This file is part of EdiTeX, an editor of mathematical - * expressions based on TeX syntax. - * - * Copyright (C) 2002-2003 Luca Padovani , - * 2003 Paolo Marinelli . - * - * This library 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 (at your option) any later version. - * - * This library 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 library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For more information, please visit the project's home page - * http://helm.cs.unibo.it/editex/ - * or send an email to - */ - -#include -#include -#include - -#include "dom.hh" -#include "TPushParser.hh" -#include "TPushLexer.hh" -#include "TDictionary.hh" -#include "CLoggerConsole.hh" -#include "CMathMLFactoryXSLT.hh" -#include "CMathMLFactoryXSLTDiff.hh" -#include "AMathMLConsumer.hh" - -#include "config.dirs" - -enum CommandLineOptionId { - OPTION_VERSION = 256, - OPTION_HELP, - OPTION_VERBOSE, - OPTION_DICTIONARY, - OPTION_TML_XSLT, - OPTION_XSLT -}; - -static std::string tml_xslt = PKGDATADIR"/tml-mmlp.xsl"; -static std::string dictionary = PKGDATADIR"/dictionary-tex.xml"; -static bool xslt = true; - -static bool -parseBoolean(const char* s, bool& res) -{ - assert(s != NULL); - if (!strcmp(s, "yes")) { - res = true; - return true; - } else if (!strcmp(s, "no")) { - res = false; - return true; - } - - return false; -} - -static void -printVersion() -{ - std::cout << "TeX to MathML converter " << VERSION << " - Luca Padovani (C) 2003" << std::endl - << "This program is covered by the GNU Lesser General Public Licence" << std::endl; -} - -static void -printHelp() -{ - static char* helpMsg = "\ -Usage: textomml [options] file\n\n\ - -V, --version Output version information\n\ - -h, --help This small usage guide\n\ - -v, --verbose[=0-3] Display messages\n\ - --dictionary= Full path of the dictionary\n\ - --tml-xslt= Full path of the XSLT stylesheet\n\ - --xslt[=yes|no] Enable/disable XSLT transformation (default='yes')\n\ -"; - - std::cout << helpMsg << std::endl; - exit(0); -} - -static void -parseError(const char* option) -{ - assert(option != NULL); - std::cerr << "error while parsing option `" << option << "'" << std::endl << std::endl; - printHelp(); -} - -int -main(int argc, char* argv[]) -{ - CLoggerConsole logger; - - while (TRUE) { - int option_index = 0; - static struct option long_options[] = - { - { "version", no_argument, NULL, OPTION_VERSION }, - { "help", no_argument, NULL, OPTION_HELP }, - { "verbose", optional_argument, NULL, OPTION_VERBOSE }, - { "dictionary", required_argument, NULL, OPTION_DICTIONARY }, - { "tml-xslt", required_argument, NULL, OPTION_TML_XSLT }, - { "xslt", optional_argument, NULL, OPTION_XSLT }, - - { NULL, no_argument, NULL, 0 } - }; - - int c = getopt_long(argc, argv, "Vhv::", long_options, &option_index); - - if (c == -1) break; - - switch (c) { - case OPTION_VERSION: - case 'V': - printVersion(); - break; - - case OPTION_HELP: - case 'h': - printHelp(); - break; - - case OPTION_VERBOSE: - case 'v': - if (optarg == NULL) logger.verbosity(ALogger::Warning); - else logger.verbosity(ALogger::Level(*optarg - '0')); - break; - - case OPTION_DICTIONARY: - dictionary = optarg; - break; - - case OPTION_TML_XSLT: - tml_xslt = optarg; - break; - - case OPTION_XSLT: - if (optarg == NULL) printHelp(); - else if (!parseBoolean(optarg, xslt)) parseError("xslt"); - break; - - case '?': - break; - - default: - std::cerr << "*** getopt returned `" << c << "' value" << std::endl; - break; - } - } - - TDictionary dict(logger); - logger.info("loading dictionary: `" + dictionary + "'"); - dict.load("dictionary-test.xml"); - - logger.info("loading stylesheet: `" + tml_xslt + "'"); - DOM::DOMImplementation di; - DOM::Document docStyle = di.createDocumentFromURI("./xsl/tml-mmlp.xsl"); - DOMX::XSLTStylesheet style(docStyle); - - CMathMLFactoryXSLT factory(logger, style); - TPushParser parser(logger, factory, dict); - TPushLexer lexer(logger, parser); - - if (optind < argc) - { - std::ifstream file(argv[optind]); - if (!file) - { - std::cerr << "can't open input file `" << argv[optind] << "'" << std::endl; - exit(1); - } - - parser.freeze(); - char ch; - while (file.get(ch)) lexer.push(ch); - parser.thaw(); - } - else - printHelp(); -} diff --git a/helm/DEVEL/mathml_editor/xsl/.cvsignore b/helm/DEVEL/mathml_editor/xsl/.cvsignore deleted file mode 100644 index 282522db0..000000000 --- a/helm/DEVEL/mathml_editor/xsl/.cvsignore +++ /dev/null @@ -1,2 +0,0 @@ -Makefile -Makefile.in diff --git a/helm/DEVEL/mathml_editor/xsl/Makefile.am b/helm/DEVEL/mathml_editor/xsl/Makefile.am deleted file mode 100644 index 283941298..000000000 --- a/helm/DEVEL/mathml_editor/xsl/Makefile.am +++ /dev/null @@ -1,2 +0,0 @@ -pkgdata_DATA = d-xsl.xsl tml-mmlp.xsl tml-tex.xsl tml-litex.xsl tml-texid.xsl -EXTRA_DIST = d-xsl.xsl tml-mmlp.xsl tml-tex.xsl tml-litex.xsl tml-texid.xsl diff --git a/helm/DEVEL/mathml_editor/xsl/d-xsl.xsl b/helm/DEVEL/mathml_editor/xsl/d-xsl.xsl deleted file mode 100644 index 961989aeb..000000000 --- a/helm/DEVEL/mathml_editor/xsl/d-xsl.xsl +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /// CONTROL SEQUENCES /// - - - - - - - - - - - - - - - - - - - diff --git a/helm/DEVEL/mathml_editor/xsl/tml-litex.xsl b/helm/DEVEL/mathml_editor/xsl/tml-litex.xsl deleted file mode 100644 index a39c6f03b..000000000 --- a/helm/DEVEL/mathml_editor/xsl/tml-litex.xsl +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - $$$$ - $$ - - - - - - \ - - - - - - - - - \ - - - - - - - - - \ - - - - - - - - - - - - - - - __ - - - _ - - - - - - - - ^^ - - - ^ - - - - - {} - - {} - - - - - - - \cr - - - - & - - - - - - \ - - - - - \ - - - - - - - - - - - - - - - diff --git a/helm/DEVEL/mathml_editor/xsl/tml-mmlp.xsl b/helm/DEVEL/mathml_editor/xsl/tml-mmlp.xsl deleted file mode 100644 index f5e1b6f74..000000000 --- a/helm/DEVEL/mathml_editor/xsl/tml-mmlp.xsl +++ /dev/null @@ -1,1159 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - block - - block - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - − - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - I - - - - - - - - - - - - I - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ - - - - - - - - - - - - λ - - : - - . - - - - - - - - - - - - - ̸ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ̂ - - - - - - - - - - - - - ̂ - - - - - - - - - - - - - ̌ - - - - - - - - - - - - - ̃ - - - - - - - - - - - - - ̃ - > - - - - - - - - - - - - ́ - - - - - - - - - - - - - ̀ - > - - - - - - - - - - - - ̇ - - - - - - - - - - - - - ̈ - - - - - - - - - - - - - ̆ - - - - - - - - - - - - - ̄ - - - - - - - - - - - - - - - - - - - - - - - - - - ̅ - - - - - - - - - - - - - ̲ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ( - - - - - ) - - - - - - - - - - - - { - - - - - } - - - - - - - - - - - - [ - - - - - ] - - - - - - - - - - - - - - - - - - - - - - - - - - - } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ( - - mod - - - ) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - _ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ( - - - - ) - - - - - - - - - - - - - - - - - - - - - - - ( - - - - - - ) - - - - - - - - - - - - - - - - - ???? - > - - - - - - - - - - - - ???? - - - - - - - - - - - - { - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/helm/DEVEL/mathml_editor/xsl/tml-tex.xsl b/helm/DEVEL/mathml_editor/xsl/tml-tex.xsl deleted file mode 100644 index ea0a6b94e..000000000 --- a/helm/DEVEL/mathml_editor/xsl/tml-tex.xsl +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - $$$$ - $$ - - - - - - \ - - - - {\rm } - - - - - - \ - - - - {\rm } - - - - - - \ - - - - - - - - - - - - - - - __ - - - _ - - - - - - - - ^^ - - - ^ - - - - - {} - - {} - - - - - - - \cr - - - - & - - - - - - \ - - - - - \ - - - - - - - - - - - {\rm } - - - - - diff --git a/helm/DEVEL/mathml_editor/xsl/tml-texid.xsl b/helm/DEVEL/mathml_editor/xsl/tml-texid.xsl deleted file mode 100644 index 20de507a4..000000000 --- a/helm/DEVEL/mathml_editor/xsl/tml-texid.xsl +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - - - - - - - - - - - - - {\id{}{}} - - - - - - - - - - $${\id{}{}}$$ - ${\id{}{}}$ - - - - - - $$$$ - $$ - - - - - - \ - - - - - - - - - \ - - - - - - - - - \ - - - - - - - - - - - - - - __ - - - _ - - - - - - - - ^^ - - - ^ - - - - - {} - - - \cr - - - - & - - - - - - \ - - - - - \ - - - - - - diff --git a/helm/DEVEL/mlminidom/.cvsignore b/helm/DEVEL/mlminidom/.cvsignore deleted file mode 100644 index dd559e6b4..000000000 --- a/helm/DEVEL/mlminidom/.cvsignore +++ /dev/null @@ -1,8 +0,0 @@ -*.cmi *.cmo *.cmx test test.opt -configure -config.status -config.log -config.cache -Makefile -META -mlminidom.spec diff --git a/helm/DEVEL/mlminidom/.depend b/helm/DEVEL/mlminidom/.depend deleted file mode 100644 index df1b3a2eb..000000000 --- a/helm/DEVEL/mlminidom/.depend +++ /dev/null @@ -1,7 +0,0 @@ -minidom.cmo: minidom.cmi -minidom.cmx: minidom.cmi -ominidom.cmo: minidom.cmi ominidom.cmi -ominidom.cmx: minidom.cmx ominidom.cmi -test.cmo: minidom.cmi -test.cmx: minidom.cmx -ominidom.cmi: minidom.cmi diff --git a/helm/DEVEL/mlminidom/AUTHORS b/helm/DEVEL/mlminidom/AUTHORS deleted file mode 100644 index 4c93fa331..000000000 --- a/helm/DEVEL/mlminidom/AUTHORS +++ /dev/null @@ -1,3 +0,0 @@ -Luca Padovani -Claudio Sacerdoti Coen -Stefano Zacchiroli diff --git a/helm/DEVEL/mlminidom/COPYING b/helm/DEVEL/mlminidom/COPYING deleted file mode 100644 index d60c31a97..000000000 --- a/helm/DEVEL/mlminidom/COPYING +++ /dev/null @@ -1,340 +0,0 @@ - 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/helm/DEVEL/mlminidom/ChangeLog b/helm/DEVEL/mlminidom/ChangeLog deleted file mode 100644 index e69de29bb..000000000 diff --git a/helm/DEVEL/mlminidom/META.in b/helm/DEVEL/mlminidom/META.in deleted file mode 100644 index 42d999a5b..000000000 --- a/helm/DEVEL/mlminidom/META.in +++ /dev/null @@ -1,5 +0,0 @@ -requires="" -version="@VERSION@" -archive(byte)="mlminidom.cma ml_minidom.o" -archive(native)="mlminidom.cmxa ml_minidom.o" -linkopts="" diff --git a/helm/DEVEL/mlminidom/Makefile.in b/helm/DEVEL/mlminidom/Makefile.in deleted file mode 100644 index 1e4dfdd8f..000000000 --- a/helm/DEVEL/mlminidom/Makefile.in +++ /dev/null @@ -1,96 +0,0 @@ -PACKAGE = @PACKAGE@ -VERSION = @VERSION@ -INCLUDEDIR = @OCAML_INCLUDE_DIR@ -PREFIX = -OBJECTS_C = ml_minidom.o -OBJECTS = minidom.cmo ominidom.cmo -OBJECTS_OPT = minidom.cmx ominidom.cmx -INST = ml_minidom.h minidom.mli minidom.cmi ominidom.mli ominidom.cmi META -DIST_FILES = Makefile.in configure.in configure *.ml *.mli test.xml ml_minidom.c ml_minidom.h META.in mlminidom.spec.in .depend -DOC_FILES = AUTHORS COPYING ChangeLog NEWS README -REQUIRES = -PREDICATES = -OCAMLC = ocamlfind ocamlc -OCAMLOPT = ocamlfind ocamlopt -OCAMLDEP = ocamldep -DESTDIR = @OCAML_LIB_DIR@ - -ARCHIVE = $(PACKAGE).cma -ARCHIVE_C = $(PACKAGE).a -ARCHIVE_OPT = $(PACKAGE).cmxa - -TMPDIR = .test -TMPPKGDIR = $(TMPDIR)/$(PACKAGE) - -all: $(OBJECTS_C) $(ARCHIVE) test - -opt: $(OBJECTS_C) $(ARCHIVE_OPT) test.opt - -dist: - rm -rf $(PACKAGE)-$(VERSION) - mkdir $(PACKAGE)-$(VERSION) - cp $(DIST_FILES) $(DOC_FILES) $(PACKAGE)-$(VERSION) - tar cvfz $(PACKAGE)-$(VERSION).tar.gz $(PACKAGE)-$(VERSION) - rm -rf $(PACKAGE)-$(VERSION) - -ml_minidom.o: ml_minidom.c - gcc -c -I$(INCLUDEDIR) `glib-config --cflags` `minidom-config --cflags` $< - -.SUFFIXES: .cmo .cmi .cmx .ml .mli - -.ml.cmo: - $(OCAMLC) -package "$(REQUIRES)" -predicates "$(PREDICATES)" \ - -c $< -.mli.cmi: - $(OCAMLC) -package "$(REQUIRES)" -predicates "$(PREDICATES)" \ - -c $< -.ml.cmx: - $(OCAMLOPT) -package "$(REQUIRES)" -predicates "$(PREDICATES)" \ - -c $< - -depend: *.ml *.mli - $(OCAMLDEP) *.ml *.mli >.depend -include .depend - -$(ARCHIVE): $(OBJECTS) - $(OCAMLC) -a -custom -package "$(REQUIRES)" \ - -predicates "$(PREDICATES)" -o $@ $^ \ - -cclib "`glib-config --libs` `minidom-config --libs`" - -$(ARCHIVE_OPT): $(OBJECTS_OPT) - $(OCAMLOPT) -a -package "$(REQUIRES)" \ - -predicates "$(PREDICATES)" -o $@ $^ \ - -cclib "`glib-config --libs` `minidom-config --libs`" - -test: test.ml $(OBJECTS_C) $(ARCHIVE) - mkdir -p $(TMPPKGDIR) - cp $(OBJECTS_C) $(ARCHIVE) $(INST) $(TMPPKGDIR) - cp test.ml $(TMPDIR) - cd $(TMPDIR) ; export OCAMLPATH=.:$$OCAMLPATH ; \ - $(OCAMLC) -package "$(PACKAGE)" -linkpkg -predicates "" -o $@ test.ml - mv $(TMPDIR)/$@ . - rm -r $(TMPDIR) - -test.opt: test.ml $(OBJECTS_C) $(ARCHIVE_C) $(ARCHIVE_OPT) - mkdir -p $(TMPPKGDIR) - cp $(OBJECTS_C) $(ARCHIVE_C) $(ARCHIVE_OPT) $(INST) $(TMPPKGDIR) - cp test.ml $(TMPDIR) - cd $(TMPDIR) ; export OCAMLPATH=.:$$OCAMLPATH ; \ - $(OCAMLOPT) -package "$(PACKAGE)" -linkpkg -predicates "" -o $@ test.ml - mv $(TMPDIR)/$@ . - rm -r $(TMPDIR) - -install: - test ! -f $(ARCHIVE_OPT) || extra="$(ARCHIVE_C) $(ARCHIVE_OPT)" ; \ - ocamlfind install -destdir $(DESTDIR) $(PACKAGE) $(OBJECTS_C) $(ARCHIVE) $(INST) $$extra - -uninstall: - ocamlfind remove $(PACKAGE) - -clean: - rm -f *.o *.cm? test test.opt $(ARCHIVE) $(ARCHIVE_C) $(ARCHIVE_OPT) - rm -rf $(TMPDIR) - -distclean: clean - rm -f config.log config.cache config.status Makefile META mlminidom.spec - diff --git a/helm/DEVEL/mlminidom/NEWS b/helm/DEVEL/mlminidom/NEWS deleted file mode 100644 index e69de29bb..000000000 diff --git a/helm/DEVEL/mlminidom/README b/helm/DEVEL/mlminidom/README deleted file mode 100644 index c74b582e2..000000000 --- a/helm/DEVEL/mlminidom/README +++ /dev/null @@ -1,9 +0,0 @@ -This is the Ocaml binding for minidom. - -To compile and install: - - ./configure - make - make opt - make install - diff --git a/helm/DEVEL/mlminidom/configure.in b/helm/DEVEL/mlminidom/configure.in deleted file mode 100644 index 8de47e4c4..000000000 --- a/helm/DEVEL/mlminidom/configure.in +++ /dev/null @@ -1,49 +0,0 @@ -AC_INIT(minidom.ml) - -PACKAGE=mlminidom - -MLMINIDOM_MAJOR_VERSION=0 -MLMINIDOM_MINOR_VERSION=2 -MLMINIDOM_MICRO_VERSION=2 -MLMINIDOM_VERSION=$MLMINIDOM_MAJOR_VERSION.$MLMINIDOM_MINOR_VERSION.$MLMINIDOM_MICRO_VERSION -VERSION=$MLMINIDOM_VERSION - -AC_CHECK_PROG(HAVE_GLIB, glib-config, yes, no) -if test $HAVE_GLIB = "no"; then - AC_MSG_ERROR(could not font glib configuration script, please make sure glib (dev) is installed) -fi - -AC_CHECK_PROG(HAVE_MINIDOM, minidom-config, yes, no) -if test $HAVE_MINIDOM = "no"; then - AC_MSG_ERROR(could not find minidom configuration script, please make sure minidom is installed) -fi - -AC_CHECK_PROG(HAVE_OCAMLC, ocamlc, yes, no) -if test $HAVE_OCAMLC = "no"; then - AC_MSG_ERROR(could not find ocamlc in PATH, please make sure ocaml is installed) -fi - -AC_CHECK_PROG(HAVE_OCAMLFIND, ocamlfind, yes, no) -if test $HAVE_OCAMLFIND = "no"; then - AC_MSG_ERROR(could not find ocamlfind in PATH, please make sure findlib is installed) -fi - -AC_MSG_CHECKING("for the ocaml library dir") -OCAML_LIB_DIR=`ocamlc -where` -AC_MSG_RESULT($OCAML_LIB_DIR) - -AC_CHECK_FILE(/usr/include/caml/mlvalues.h, - OCAML_INCLUDE_DIR=/usr/include/caml, - OCAML_INCLUDE_DIR=$OCAML_LIB_DIR/caml -) - -AC_SUBST(PACKAGE) -AC_SUBST(VERSION) -AC_SUBST(OCAML_INCLUDE_DIR) -AC_SUBST(OCAML_LIB_DIR) - -AC_OUTPUT([ - Makefile - mlminidom.spec - META -]) diff --git a/helm/DEVEL/mlminidom/debian/changelog b/helm/DEVEL/mlminidom/debian/changelog deleted file mode 100644 index 8457b124b..000000000 --- a/helm/DEVEL/mlminidom/debian/changelog +++ /dev/null @@ -1,47 +0,0 @@ -mlminidom (0.2.2-1) unstable; urgency=low - - * New upstream release. Built with ocaml 3.04. - - -- Stefano Zacchiroli Sun, 20 Jan 2002 15:18:38 +0100 - -mlminidom (0.2.1-2) unstable; urgency=low - - * Bug fix: moved automagically generated configure from diff.gz to - original tar.gz archive. - - -- Stefano Zacchiroli Tue, 20 Nov 2001 01:06:27 +0100 - -mlminidom (0.2.1-1) unstable; urgency=low - - * New upstream release - - -- Stefano Zacchiroli Sat, 17 Nov 2001 09:24:02 +0100 - -mlminidom (0.2.0-1) unstable; urgency=low - - * New upstream release - - -- Stefano Zacchiroli Tue, 13 Nov 2001 19:41:58 +0100 - -mlminidom (0.1.0-3) unstable; urgency=low - - * Fixed build on architecture which doesn't have native code compiler - (closes: Bug#104702). - - -- Stefano Zacchiroli Tue, 21 Aug 2001 11:14:51 +0200 - -mlminidom (0.1.0-2) unstable; urgency=low - - * Added build-dep on libxml2-dev (closes: Bug#9887). - - -- Stefano Zacchiroli Mon, 28 May 2001 12:28:25 +0200 - -mlminidom (0.1.0-1) unstable; urgency=low - - * Initial Release (closes: Bug#93106). - - -- Stefano Zacchiroli Wed, 4 Apr 2001 22:50:43 +0200 - -Local variables: -mode: debian-changelog -End: diff --git a/helm/DEVEL/mlminidom/debian/control b/helm/DEVEL/mlminidom/debian/control deleted file mode 100644 index 244cf2599..000000000 --- a/helm/DEVEL/mlminidom/debian/control +++ /dev/null @@ -1,13 +0,0 @@ -Source: mlminidom -Section: devel -Priority: optional -Maintainer: Stefano Zacchiroli -Build-Depends: debhelper (>> 3.0.0), ocaml (>= 3.04), libglib1.2-dev, libminidom-dev, libxml2-dev, ocaml-findlib -Standards-Version: 3.5.2 - -Package: mlminidom -Architecture: any -Depends: ocaml (>= 3.04), libminidom0 (>= 0.1.3) -Description: OCaml binding for minidom - This is the OCaml binding for minidom, that is currently available in - the libminidom0 package. diff --git a/helm/DEVEL/mlminidom/debian/copyright b/helm/DEVEL/mlminidom/debian/copyright deleted file mode 100644 index 7bbc006ee..000000000 --- a/helm/DEVEL/mlminidom/debian/copyright +++ /dev/null @@ -1,32 +0,0 @@ -This package was debianized by Stefano Zacchiroli on -Wed, 4 Apr 2001 22:50:43 +0200. - -It was packed from source obtained via cvs, with this CVSROOT: - :pserver:anonymous@phd.cs.unibo.it:/home/lpadovan/PHELM/ - -Upstream Author(s): - Luca Padovani - Claudio Sacerdoti Coen - Stefano Zacchiroli - -Copyright: - Copyright (C) 2000, Luca Padovani . - - This file is part of mlminidom, the Ocaml binding for minidom. - - mlminidom 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. - - mlminidom 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 mlminidom; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - - For details, send a mail to the author. - diff --git a/helm/DEVEL/mlminidom/debian/dirs b/helm/DEVEL/mlminidom/debian/dirs deleted file mode 100644 index 00a96aed3..000000000 --- a/helm/DEVEL/mlminidom/debian/dirs +++ /dev/null @@ -1 +0,0 @@ -usr/lib/ocaml diff --git a/helm/DEVEL/mlminidom/debian/docs b/helm/DEVEL/mlminidom/debian/docs deleted file mode 100644 index 6f12db508..000000000 --- a/helm/DEVEL/mlminidom/debian/docs +++ /dev/null @@ -1,2 +0,0 @@ -AUTHORS -README diff --git a/helm/DEVEL/mlminidom/debian/examples b/helm/DEVEL/mlminidom/debian/examples deleted file mode 100644 index 31c13b443..000000000 --- a/helm/DEVEL/mlminidom/debian/examples +++ /dev/null @@ -1 +0,0 @@ -test.ml diff --git a/helm/DEVEL/mlminidom/debian/rules b/helm/DEVEL/mlminidom/debian/rules deleted file mode 100755 index 8fac22aea..000000000 --- a/helm/DEVEL/mlminidom/debian/rules +++ /dev/null @@ -1,91 +0,0 @@ -#!/usr/bin/make -f -# Sample debian/rules that uses debhelper. -# GNU copyright 1997 to 1999 by Joey Hess. - -# Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 - -# This is the debhelper compatability version to use. -export DH_COMPAT=2 - -UPSTREAM_CHANGELOG = ChangeLog - -configure: configure-stamp -configure-stamp: - dh_testdir - # Add here commands to configure the package. - ./configure - - touch configure-stamp - -build: configure-stamp build-stamp -build-stamp: - dh_testdir - - # Add here commands to compile the package. - $(MAKE) - -test -x /usr/bin/ocamlopt && $(MAKE) opt - #/usr/bin/docbook-to-man debian/mlminidom.sgml > mlminidom.1 - - touch build-stamp - -clean: - dh_testdir - dh_testroot - rm -f build-stamp configure-stamp - - # Add here commands to clean up after the build process. - -$(MAKE) distclean - - dh_clean - -install: build - dh_testdir - dh_testroot - dh_clean -k - dh_installdirs - - # Add here commands to install the package into debian/mlminidom. - $(MAKE) install DESTDIR=$(CURDIR)/debian/mlminidom/usr/lib/ocaml - - -# Build architecture-independent files here. -binary-indep: build install -# We have nothing to do by default. - -# Build architecture-dependent files here. -binary-arch: build install - dh_testdir - dh_testroot -# dh_installdebconf - dh_installdocs - dh_installexamples -# dh_installmenu -# dh_installlogrotate -# dh_installemacsen -# dh_installpam -# dh_installmime -# dh_installinit -# dh_installcron -# dh_installmanpages -# dh_installinfo -# dh_undocumented - if [ -s $(UPSTREAM_CHANGELOG) ]; then \ - dh_installchangelogs $(UPSTREAM_CHANGELOG); \ - else \ - dh_installchangelogs; \ - fi - dh_link - dh_strip - dh_compress - dh_fixperms -# dh_makeshlibs - dh_installdeb -# dh_perl - dh_shlibdeps - dh_gencontrol - dh_md5sums - dh_builddeb - -binary: binary-indep binary-arch -.PHONY: build clean binary-indep binary-arch binary install configure diff --git a/helm/DEVEL/mlminidom/minidom.ml b/helm/DEVEL/mlminidom/minidom.ml deleted file mode 100644 index db028106a..000000000 --- a/helm/DEVEL/mlminidom/minidom.ml +++ /dev/null @@ -1,81 +0,0 @@ -(* Copyright (C) 2000, Luca Padovani . - * - * This file is part of mlminidom, the Ocaml binding for minidom. - * - * mlminidom 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. - * - * mlminidom 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 mlminidom; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * For details, send a mail to the author. - *) - -type mDOMString -type mDOMDoc -type mDOMNode -type mDOMAttr -type mDOMEntity - -external string_of_mDOMString : mDOMString -> string = "ml_string_of_mDOMString" -external mDOMString_of_string : string -> mDOMString = "ml_mDOMString_of_string" -external mDOMString_eq : string -> string -> bool = "ml_mDOMString_eq" - -external doc_load : string -> mDOMDoc = "ml_doc_load" -external doc_new : mDOMString -> mDOMDoc = "ml_doc_new" -external doc_get_root_node : mDOMDoc -> mDOMNode = "ml_doc_get_root_node" - -external doc_add_entity : doc:mDOMDoc -> name:mDOMString -> content:mDOMString -> mDOMEntity = "ml_doc_add_entity" -external doc_get_entity : doc:mDOMDoc -> name:mDOMString -> mDOMEntity option = "ml_doc_get_entity" -external doc_get_predefined_entity : doc:mDOMDoc -> name:mDOMString -> mDOMEntity option = "ml_doc_get_predefined_entity" -external entity_get_content : mDOMEntity -> mDOMString = "ml_entity_get_content" - -external node_is_text : mDOMNode -> bool = "ml_node_is_text" -external node_is_element : mDOMNode -> bool = "ml_node_is_element" -external node_is_blank : mDOMNode -> bool = "ml_node_is_blank" -external node_is_entity_ref : mDOMNode -> bool = "ml_node_is_entity_ref" -external node_get_type : mDOMNode -> int = "ml_node_get_type" -external node_get_name : mDOMNode -> mDOMString option = "ml_node_get_name" -external node_get_ns_uri : mDOMNode -> mDOMString option = "ml_node_get_ns_uri" -external node_get_attribute : node:mDOMNode -> name:mDOMString -> mDOMString option = "ml_node_get_attribute" -external node_get_attribute_ns : node:mDOMNode -> name:mDOMString -> ns_uri:mDOMString -> mDOMString option = "ml_node_get_attribute_ns" -external node_has_attribute : node:mDOMNode -> name:mDOMString -> bool = "ml_node_has_attribute" -external node_has_attribute_ns : node:mDOMNode -> name:mDOMString -> ns_uri:mDOMString -> bool = "ml_node_has_attribute_ns" -external node_get_content : mDOMNode -> mDOMString option = "ml_node_get_content" -external node_get_parent : mDOMNode -> mDOMNode option = "ml_node_get_parent" -external node_get_prev_sibling : mDOMNode -> mDOMNode option = "ml_node_get_prev_sibling" -external node_get_next_sibling : mDOMNode -> mDOMNode option = "ml_node_get_next_sibling" -external node_get_first_child : mDOMNode -> mDOMNode option = "ml_node_get_first_child" -external node_get_first_attribute : mDOMNode -> mDOMAttr option = "ml_node_get_first_attribute" -external node_is_first : mDOMNode -> bool = "ml_node_is_first" -external node_is_last : mDOMNode -> bool = "ml_node_is_last" - -external attr_get_name : mDOMAttr -> mDOMString option = "ml_attr_get_name" -external attr_get_ns_uri : mDOMAttr -> mDOMString option = "ml_attr_get_ns_uri" -external attr_get_value : mDOMAttr -> mDOMString option = "ml_attr_get_value" -external attr_get_prev_sibling : mDOMAttr -> mDOMAttr option = "ml_attr_get_prev_sibling" -external attr_get_next_sibling : mDOMAttr -> mDOMAttr option = "ml_attr_get_next_sibling" -external attr_get_parent : mDOMAttr -> mDOMNode option = "ml_attr_get_parent" - -let rec node_list_of_node_first = - function None -> [] - | Some node -> node :: (node_list_of_node_first (node_get_next_sibling node)) - -let rec attr_list_of_attr_first = - function None -> [] - | Some attr -> attr :: (attr_list_of_attr_first (attr_get_next_sibling attr)) - -let node_get_children node = - (node_list_of_node_first (node_get_first_child node)) - -let node_get_attributes node = - (attr_list_of_attr_first (node_get_first_attribute node)) - diff --git a/helm/DEVEL/mlminidom/minidom.mli b/helm/DEVEL/mlminidom/minidom.mli deleted file mode 100644 index 4e82b73c6..000000000 --- a/helm/DEVEL/mlminidom/minidom.mli +++ /dev/null @@ -1,70 +0,0 @@ -(* Copyright (C) 2000, Luca Padovani . - * - * This file is part of mlminidom, the Ocaml binding for minidom. - * - * mlminidom 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. - * - * mlminidom 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 mlminidom; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * For details, send a mail to the author. - *) - -type mDOMString -type mDOMDoc -type mDOMNode -type mDOMAttr -type mDOMEntity - -external string_of_mDOMString : mDOMString -> string = "ml_string_of_mDOMString" -external mDOMString_of_string : string -> mDOMString = "ml_mDOMString_of_string" -external mDOMString_eq : string -> string -> bool = "ml_mDOMString_eq" - -external doc_load : string -> mDOMDoc = "ml_doc_load" -external doc_new : mDOMString -> mDOMDoc = "ml_doc_new" -external doc_get_root_node : mDOMDoc -> mDOMNode = "ml_doc_get_root_node" - -external doc_add_entity : doc:mDOMDoc -> name:mDOMString -> content:mDOMString -> mDOMEntity = "ml_doc_add_entity" -external doc_get_entity : doc:mDOMDoc -> name:mDOMString -> mDOMEntity option = "ml_doc_get_entity" -external doc_get_predefined_entity : doc:mDOMDoc -> name:mDOMString -> mDOMEntity option = "ml_doc_get_predefined_entity" -external entity_get_content : mDOMEntity -> mDOMString = "ml_entity_get_content" - -external node_is_text : mDOMNode -> bool = "ml_node_is_text" -external node_is_element : mDOMNode -> bool = "ml_node_is_element" -external node_is_blank : mDOMNode -> bool = "ml_node_is_blank" -external node_is_entity_ref : mDOMNode -> bool = "ml_node_is_entity_ref" -external node_get_type : mDOMNode -> int = "ml_node_get_type" -external node_get_name : mDOMNode -> mDOMString option = "ml_node_get_name" -external node_get_ns_uri : mDOMNode -> mDOMString option = "ml_node_get_ns_uri" -external node_get_attribute : node:mDOMNode -> name:mDOMString -> mDOMString option = "ml_node_get_attribute" -external node_get_attribute_ns : node:mDOMNode -> name:mDOMString -> ns_uri:mDOMString -> mDOMString option = "ml_node_get_attribute_ns" -external node_has_attribute : node:mDOMNode -> name:mDOMString -> bool = "ml_node_has_attribute" -external node_has_attribute_ns : node:mDOMNode -> name:mDOMString -> ns_uri:mDOMString -> bool = "ml_node_has_attribute_ns" -external node_get_content : mDOMNode -> mDOMString option = "ml_node_get_content" -external node_get_parent : mDOMNode -> mDOMNode option = "ml_node_get_parent" -external node_get_prev_sibling : mDOMNode -> mDOMNode option = "ml_node_get_prev_sibling" -external node_get_next_sibling : mDOMNode -> mDOMNode option = "ml_node_get_next_sibling" -external node_get_first_child : mDOMNode -> mDOMNode option = "ml_node_get_first_child" -external node_get_first_attribute : mDOMNode -> mDOMAttr option = "ml_node_get_first_attribute" -external node_is_first : mDOMNode -> bool = "ml_node_is_first" -external node_is_last : mDOMNode -> bool = "ml_node_is_last" - -external attr_get_name : mDOMAttr -> mDOMString option = "ml_attr_get_name" -external attr_get_ns_uri : mDOMAttr -> mDOMString option = "ml_attr_get_ns_uri" -external attr_get_value : mDOMAttr -> mDOMString option = "ml_attr_get_value" -external attr_get_prev_sibling : mDOMAttr -> mDOMAttr option = "ml_attr_get_prev_sibling" -external attr_get_next_sibling : mDOMAttr -> mDOMAttr option = "ml_attr_get_next_sibling" -external attr_get_parent : mDOMAttr -> mDOMNode option = "ml_attr_get_parent" - -val node_get_children : mDOMNode -> mDOMNode list -val node_get_attributes : mDOMNode -> mDOMAttr list - diff --git a/helm/DEVEL/mlminidom/ml_minidom.c b/helm/DEVEL/mlminidom/ml_minidom.c deleted file mode 100644 index 52a53f202..000000000 --- a/helm/DEVEL/mlminidom/ml_minidom.c +++ /dev/null @@ -1,350 +0,0 @@ -/* Copyright (C) 2000, Luca Padovani . - * - * This file is part of mlminidom, the Ocaml binding for minidom. - * - * mlminidom 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. - * - * mlminidom 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 mlminidom; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * For details, send a mail to the author. - */ - -#include -#include -#include -#include - -#include "minidom.h" - -#define Val_ptr(p) ((value) (p)) -#define Val_option(p,f) ((p != NULL) ? ml_some(f(p)) : Val_unit) -#define mDOMString_val(v) ((mDOMStringRef) String_val(v)) -#define mDOMDocRef_val(r) (*((mDOMDocRef *)Data_custom_val(r))) - -static value -Val_mDOMConstString(mDOMConstStringRef s) -{ - return copy_string((char *) s); -} - -static value -Val_mDOMString(mDOMStringRef s) -{ - value r = copy_string((char *) s); - mdom_string_free(s); - return r; -} - -static value -ml_some(value v) -{ - CAMLparam1(v); - value ret = alloc_small(1,0); - Field(ret,0) = v; - CAMLreturn(ret); -} - -value -ml_string_of_mDOMString(value s) -{ - CAMLparam1(s); - CAMLreturn(s); -} - -value -ml_mDOMString_of_string(value s) -{ - CAMLparam1(s); - CAMLreturn(s); -} - -static void -ml_doc_free(value doc) -{ - mdom_doc_free(mDOMDocRef_val(doc)); -} - -static struct custom_operations ops = - {"it.unibo.cs.helm.gtkmathview.mDOMDocRef", - ml_doc_free, - custom_compare_default, - custom_hash_default, - custom_serialize_default, - custom_deserialize_default - }; - -value -ml_doc_load(value file_name) -{ - mDOMDocRef doc_ref; - - CAMLparam1(file_name); - CAMLlocal1(val_doc_ref); - - doc_ref = mdom_load(String_val(file_name), FALSE, NULL); - if (doc_ref == NULL) failwith("minidom: could not load document"); - val_doc_ref = alloc_custom(&ops, sizeof(mDOMDocRef), 1, 1); - - *((mDOMDocRef *)Data_custom_val(val_doc_ref)) = doc_ref; - - CAMLreturn(val_doc_ref); -} - -value -ml_doc_new(value s) -{ - mDOMDocRef doc_ref; - - CAMLparam1(s); - CAMLlocal1(val_doc_ref); - - doc_ref = mdom_doc_new(mDOMString_val(s)); - if (doc_ref == NULL) failwith("minidom: could not create new document"); - val_doc_ref = alloc_custom(&ops, sizeof(mDOMDocRef), 1, 1); - - *((mDOMDocRef *)Data_custom_val(val_doc_ref)) = doc_ref; - - CAMLreturn(val_doc_ref); -} - - -value -ml_doc_get_root_node(value doc) -{ - mDOMNodeRef root; - - CAMLparam1(doc); - root = mdom_doc_get_root_node(mDOMDocRef_val(doc)); - if (root == NULL) failwith("minidom: document has no root node!"); - - CAMLreturn((value) root); -} - -value -ml_doc_add_entity(value doc, value name, value content) -{ - mDOMEntityRef ent; - - CAMLparam3(doc, name, content); - ent = mdom_doc_add_entity(mDOMDocRef_val(doc), mDOMString_val(name), mDOMString_val(content)); - if (ent == NULL) failwith("minidom: could not add entity"); - - CAMLreturn((value) ent); -} - -value -ml_doc_get_entity(value doc, value name) -{ - mDOMEntityRef ent; - - CAMLparam2(doc, name); - ent = mdom_doc_get_entity(mDOMDocRef_val(doc), mDOMString_val(name)); - - CAMLreturn(Val_option(ent, Val_ptr)); -} - -value -ml_doc_get_predefined_entity(value name) -{ - mDOMEntityRef ent; - - CAMLparam1(name); - ent = mdom_get_predefined_entity(mDOMString_val(name)); - - CAMLreturn(Val_option(ent, Val_ptr)); -} - -value -ml_entity_get_content(value ent) -{ - CAMLparam1(ent); - CAMLreturn(Val_mDOMConstString(mdom_entity_get_content((mDOMEntityRef) ent))); -} - -value -ml_node_is_text(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_bool(mdom_node_is_text((mDOMNodeRef) node))); -} - -value -ml_node_is_element(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_bool(mdom_node_is_element((mDOMNodeRef) node))); -} - -value -ml_node_is_blank(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_bool(mdom_node_is_blank((mDOMNodeRef) node))); -} - -value -ml_node_is_entity_ref(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_bool(mdom_node_is_entity_ref((mDOMNodeRef) node))); -} - -value -ml_node_get_type(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_int(mdom_node_get_type((mDOMNodeRef) node))); -} - -value -ml_node_get_name(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_option(mdom_node_get_name((mDOMNodeRef) node), Val_mDOMConstString)); -} - -value -ml_node_has_attribute(value node, value name) -{ - CAMLparam2(node,name); - CAMLreturn(Val_bool(mdom_node_has_attribute((mDOMNodeRef) node, String_val(name)))); -} - -value -ml_node_has_attribute_ns(value node, value name, value uri) -{ - CAMLparam3(node,name,uri); - CAMLreturn(Val_bool(mdom_node_has_attribute_ns((mDOMNodeRef) node, String_val(name), String_val(uri)))); -} - -value -ml_node_get_content(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_option(mdom_node_get_content((mDOMNodeRef) node), Val_mDOMString)); -} - -value -ml_node_get_ns_uri(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_option(mdom_node_get_ns_uri((mDOMNodeRef) node), Val_mDOMConstString)); -} - -value -ml_node_get_attribute(value node, value name) -{ - CAMLparam2(node,name); - CAMLreturn(Val_option(mdom_node_get_attribute((mDOMNodeRef) node, String_val(name)), Val_mDOMString)); -} - -value -ml_node_get_attribute_ns(value node, value name, value ns_uri) -{ - CAMLparam2(node,name); - CAMLreturn(Val_option(mdom_node_get_attribute_ns((mDOMNodeRef) node, - String_val(name), - String_val(ns_uri)), Val_mDOMString)); -} - -value -ml_node_get_parent(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_option(mdom_node_get_parent((mDOMNodeRef) node), Val_ptr)); -} - -value -ml_node_get_prev_sibling(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_option(mdom_node_get_prev_sibling((mDOMNodeRef) node), Val_ptr)); -} - -value -ml_node_get_next_sibling(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_option(mdom_node_get_next_sibling((mDOMNodeRef) node), Val_ptr)); -} - -value -ml_node_get_first_child(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_option(mdom_node_get_first_child((mDOMNodeRef) node), Val_ptr)); -} - -value -ml_node_get_first_attribute(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_option(mdom_node_get_first_attribute((mDOMNodeRef) node), Val_ptr)); -} - -value -ml_node_is_first(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_bool(mdom_node_is_first((mDOMNodeRef) node))); -} - -value -ml_node_is_last(value node) -{ - CAMLparam1(node); - CAMLreturn(Val_bool(mdom_node_is_last((mDOMNodeRef) node))); -} - -value -ml_attr_get_name(value attr) -{ - CAMLparam1(attr); - CAMLreturn(Val_option(mdom_attr_get_name((mDOMAttrRef) attr), Val_mDOMConstString)); -} - -value -ml_attr_get_ns_uri(value attr) -{ - CAMLparam1(attr); - CAMLreturn(Val_option(mdom_attr_get_ns_uri((mDOMAttrRef) attr), Val_mDOMConstString)); -} - -value -ml_attr_get_value(value attr) -{ - CAMLparam1(attr); - CAMLreturn(Val_option(mdom_attr_get_value((mDOMAttrRef) attr), Val_mDOMString)); -} - -value -ml_attr_get_prev_sibling(value attr) -{ - CAMLparam1(attr); - CAMLreturn(Val_option(mdom_attr_get_prev_sibling((mDOMAttrRef) attr), Val_ptr)); -} - -value -ml_attr_get_next_sibling(value attr) -{ - CAMLparam1(attr); - CAMLreturn(Val_option(mdom_attr_get_next_sibling((mDOMAttrRef) attr), Val_ptr)); -} - -value -ml_attr_get_parent(value attr) -{ - CAMLparam1(attr); - CAMLreturn(Val_option(mdom_attr_get_parent((mDOMAttrRef) attr), Val_ptr)); -} - diff --git a/helm/DEVEL/mlminidom/ml_minidom.h b/helm/DEVEL/mlminidom/ml_minidom.h deleted file mode 100644 index 6009f2af5..000000000 --- a/helm/DEVEL/mlminidom/ml_minidom.h +++ /dev/null @@ -1,38 +0,0 @@ -/* Copyright (C) 2000, Luca Padovani . - * - * This file is part of mlminidom, the Ocaml binding for minidom. - * - * mlminidom 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. - * - * mlminidom 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 mlminidom; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * For details, send a mail to the author. - */ - -#ifndef ml_minidom_h -#define ml_minidom_h - -#define Val_ptr(p) ((value) (p)) -#ifndef Val_option -#define Val_option(p,f) ((p != NULL) ? ml_some(f(p)) : Val_unit) -#endif /* Val_option */ -#define mDOMString_val(v) ((mDOMStringRef) String_val(v)) -#define mDOMNode_val(v) ((mDOMNodeRef) v) - -#define mDOMNode_option_mDOMNodeRef(p) (((p) != NULL) ? ml_some((value) (p)) : Val_unit) -#define mDOMNodeRef_mDOMNode_option(v) ((v == Val_unit) ? NULL : (mDOMNodeRef)Field((v),0)) -#define Val_mDOMNodeRef(p) (mDOMNode_option_mDOMNodeRef(p)) -#define mDOMNodeRef_val(v) (mDOMNodeRef_mDOMNode_option(v)) -#define mDOMDocRef_val(r) (*((mDOMDocRef *)Data_custom_val(r))) - -#endif /* ml_minidom_h */ diff --git a/helm/DEVEL/mlminidom/mlminidom.spec.in b/helm/DEVEL/mlminidom/mlminidom.spec.in deleted file mode 100644 index ecac5f7f8..000000000 --- a/helm/DEVEL/mlminidom/mlminidom.spec.in +++ /dev/null @@ -1,27 +0,0 @@ -Summary: The Ocaml binding for the minidom library -Name: @PACKAGE@ -Version: @VERSION@ -Release: 1 -Copyright: GPL -URL: http://www.cs.unibo.it/helm -Packager: Luca Padovani -Requires: ocaml >= 3.00, minidom >= 0.0.1, glib, glib-devel -Group: Applications/Publishing -Source: www.cs.unibo.it:/~lpadovan/mml-widget/@PACKAGE@-@VERSION@.tar.gz -%description -The Ocaml binding for the minidom library - -%prep -%setup - -%build -./configure - -%install -make -make opt -make install - -%files -%doc AUTHORS COPYING ChangeLog NEWS README -/usr/lib/ocaml/mlminidom diff --git a/helm/DEVEL/mlminidom/ominidom.ml b/helm/DEVEL/mlminidom/ominidom.ml deleted file mode 100644 index 5f408f7d3..000000000 --- a/helm/DEVEL/mlminidom/ominidom.ml +++ /dev/null @@ -1,180 +0,0 @@ -(* Copyright (C) 2000, Luca Padovani . - * - * This file is part of mlminidom, the Ocaml binding for minidom. - * - * mlminidom 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. - * - * mlminidom 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 mlminidom; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * For details, send a mail to the author. - *) - -exception Node_has_no_parent;; -exception Node_has_no_sibling of string;; -exception Node_has_no_children;; -exception Node_has_no_attributes;; -exception Attribute_has_no_sibling of string;; -exception Attribute_has_no_parent;; -exception Undefined_entity;; - -let option_to_exception v e = - match v with - Some x -> x - | None -> raise e -;; - -class o_mDOMString (str: Minidom.mDOMString) = - object - method get_dom_string = str - method get_string = Minidom.string_of_mDOMString str - end;; - -let o_mDOMString_of_string str = - new o_mDOMString (Minidom.mDOMString_of_string str) - -class o_mDOMEntity (ent : Minidom.mDOMEntity) = - object - method get_dom_entity = ent - method get_content = - new o_mDOMString (Minidom.entity_get_content ent) - end -;; - -class o_mDOMDoc (doc : Minidom.mDOMDoc) = - object - method get_dom_doc = doc - - method get_root_node = - new o_mDOMNode (Minidom.doc_get_root_node doc) - method add_entity (name : o_mDOMString) (value : o_mDOMString) = - new o_mDOMEntity - (Minidom.doc_add_entity doc - (name#get_dom_string) (value#get_dom_string) - ) - method get_entity (name : o_mDOMString) = - match Minidom.doc_get_entity doc (name#get_dom_string) with - | Some x -> new o_mDOMEntity x - | None -> raise Undefined_entity - method get_predefined_entity (name : o_mDOMString) = - match Minidom.doc_get_predefined_entity doc (name#get_dom_string) with - | Some x -> new o_mDOMEntity x - | None -> raise Undefined_entity - end -and o_mDOMNode (node : Minidom.mDOMNode) = - object - method get_dom_node = node - - method is_text = Minidom.node_is_text node - method is_element = Minidom.node_is_element node - method is_blank = Minidom.node_is_blank node - method is_entity_ref = Minidom.node_is_entity_ref node - - method get_type = Minidom.node_get_type node - method get_name = - match Minidom.node_get_name node with - | Some x -> Some (new o_mDOMString x) - | None -> None - method get_ns_uri = - match Minidom.node_get_ns_uri node with - | Some x -> Some (new o_mDOMString x) - | None -> None - method get_attribute (name : o_mDOMString) = - match Minidom.node_get_attribute node (name#get_dom_string) with - | Some x -> Some (new o_mDOMString x) - | None -> None - method get_attribute_ns (name : o_mDOMString) (uri : o_mDOMString) = - match - Minidom.node_get_attribute_ns node - (name#get_dom_string) (uri#get_dom_string) - with - | Some x -> Some (new o_mDOMString x) - | None -> None - method has_attribute (name : o_mDOMString) = - Minidom.node_has_attribute node (name#get_dom_string) - method has_attribute_ns (name : o_mDOMString) (uri : o_mDOMString) = - Minidom.node_has_attribute_ns node (name#get_dom_string) (uri#get_dom_string) - method get_content = - match Minidom.node_get_content node with - | Some x -> Some (new o_mDOMString x) - | None -> None - method get_parent = - new o_mDOMNode - (option_to_exception (Minidom.node_get_parent node) Node_has_no_parent) - method get_prev_sibling = - new o_mDOMNode - (option_to_exception - (Minidom.node_get_prev_sibling node) - (Node_has_no_sibling "left") - ) - method get_next_sibling = - new o_mDOMNode - (option_to_exception - (Minidom.node_get_next_sibling node) - (Node_has_no_sibling "right") - ) - method get_first_child = - new o_mDOMNode - (option_to_exception - (Minidom.node_get_first_child node) - (Node_has_no_children) - ) - method get_first_attribute = - new o_mDOMAttr - (option_to_exception - (Minidom.node_get_first_attribute node) - (Node_has_no_attributes) - ) - method is_first = Minidom.node_is_first node - method is_last = Minidom.node_is_last node - - method get_children = - List.map (function x -> new o_mDOMNode x) (Minidom.node_get_children node) - method get_attributes = List.map - (function x -> new o_mDOMAttr x) (Minidom.node_get_attributes node) - end -and o_mDOMAttr (attr : Minidom.mDOMAttr) = - object - method get_dom_attr = attr - - method get_name = - match Minidom.attr_get_name attr with - | Some x -> Some (new o_mDOMString x) - | None -> None - method get_ns_uri = - match Minidom.attr_get_ns_uri attr with - | Some x -> Some (new o_mDOMString x) - | None -> None - method get_value = - match Minidom.attr_get_value attr with - | Some x -> Some (new o_mDOMString x) - | None -> None - method get_prev_sibling = - new o_mDOMAttr - (option_to_exception - (Minidom.attr_get_prev_sibling attr) - (Attribute_has_no_sibling "left") - ) - method get_next_sibling = - new o_mDOMAttr - (option_to_exception - (Minidom.attr_get_next_sibling attr) - (Attribute_has_no_sibling "right") - ) - method get_parent = - new o_mDOMNode - (option_to_exception - (Minidom.attr_get_parent attr) Attribute_has_no_parent - ) - end -;; - diff --git a/helm/DEVEL/mlminidom/ominidom.mli b/helm/DEVEL/mlminidom/ominidom.mli deleted file mode 100644 index e555a860c..000000000 --- a/helm/DEVEL/mlminidom/ominidom.mli +++ /dev/null @@ -1,87 +0,0 @@ -(* Copyright (C) 2000, Luca Padovani . - * - * This file is part of mlminidom, the Ocaml binding for minidom. - * - * mlminidom 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. - * - * mlminidom 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 mlminidom; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * For details, send a mail to the author. - *) - -exception Node_has_no_parent -exception Node_has_no_sibling of string -exception Node_has_no_children -exception Node_has_no_attributes -exception Attribute_has_no_sibling of string -exception Attribute_has_no_parent -exception Undefined_entity - -class o_mDOMString : Minidom.mDOMString -> - object - method get_dom_string : Minidom.mDOMString - method get_string : string - end - -val o_mDOMString_of_string : string -> o_mDOMString - -class o_mDOMEntity : Minidom.mDOMEntity -> - object - method get_content : o_mDOMString - method get_dom_entity : Minidom.mDOMEntity - end - -class o_mDOMDoc : Minidom.mDOMDoc -> - object - method add_entity : o_mDOMString -> o_mDOMString -> o_mDOMEntity - method get_dom_doc : Minidom.mDOMDoc - method get_entity : o_mDOMString -> o_mDOMEntity - method get_predefined_entity : o_mDOMString -> o_mDOMEntity - method get_root_node : o_mDOMNode - end -and o_mDOMNode : Minidom.mDOMNode -> - object - method get_attribute : o_mDOMString -> o_mDOMString option - method get_attribute_ns : - o_mDOMString -> o_mDOMString -> o_mDOMString option - method has_attribute : o_mDOMString -> bool - method has_attribute_ns : o_mDOMString -> o_mDOMString -> bool - method get_attributes : o_mDOMAttr list - method get_children : o_mDOMNode list - method get_content : o_mDOMString option - method get_dom_node : Minidom.mDOMNode - method get_first_attribute : o_mDOMAttr - method get_first_child : o_mDOMNode - method get_name : o_mDOMString option - method get_next_sibling : o_mDOMNode - method get_ns_uri : o_mDOMString option - method get_parent : o_mDOMNode - method get_prev_sibling : o_mDOMNode - method get_type : int - method is_blank : bool - method is_element : bool - method is_entity_ref : bool - method is_first : bool - method is_last : bool - method is_text : bool - end -and o_mDOMAttr : Minidom.mDOMAttr -> - object - method get_dom_attr : Minidom.mDOMAttr - method get_name : o_mDOMString option - method get_next_sibling : o_mDOMAttr - method get_ns_uri : o_mDOMString option - method get_parent : o_mDOMNode - method get_prev_sibling : o_mDOMAttr - method get_value : o_mDOMString option - end diff --git a/helm/DEVEL/mlminidom/test.ml b/helm/DEVEL/mlminidom/test.ml deleted file mode 100644 index a906c0552..000000000 --- a/helm/DEVEL/mlminidom/test.ml +++ /dev/null @@ -1,106 +0,0 @@ -(* Copyright (C) 2000, Luca Padovani . - * - * This file is part of mlminidom, the Ocaml binding for minidom. - * - * mlminidom 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. - * - * mlminidom 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 mlminidom; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * For details, send a mail to the author. - *) - -let doc = Minidom.doc_load "test.xml" - -let root = Minidom.doc_get_root_node doc - -let check_attribute_ns attr = - Printf.printf "\n\n"; - let ns_uri = Minidom.attr_get_ns_uri attr - and attr_name = Minidom.attr_get_name attr - and attr_value = Minidom.attr_get_value attr - and parent = Minidom.attr_get_parent attr - in - match parent,ns_uri,attr_name,attr_value with - Some parent_node,Some uri,Some attribute_name,Some attribute_value -> - let attr_info = - (Minidom.node_get_attribute_ns parent_node attribute_name uri, - Minidom.node_has_attribute_ns parent_node attribute_name uri) - in begin - match attr_info with - Some attr1, true -> - Printf.printf "found the attribute with ns %s (was %s)\n" - (Minidom.string_of_mDOMString attr1) (Minidom.string_of_mDOMString attribute_value) - | None, false -> - Printf.printf "attribute not found (uri was %s)!!!!\n" (Minidom.string_of_mDOMString uri) - | _,_ -> assert false - end - | _ -> - Printf.printf "parent_node == NULL || uri == NULL || attribute_name == NULL || attribute_value == NULL\n" -;; - -let print_attribute attr = - check_attribute_ns attr; - let ns_uri = Minidom.attr_get_ns_uri attr - in - begin - match ns_uri with - Some uri -> Printf.printf " %s:" (Minidom.string_of_mDOMString uri); - | None -> () - end; - match ((Minidom.attr_get_name attr), (Minidom.attr_get_value attr)) with - (Some attr_name, Some attr_value) -> - Printf.printf " %s=\"%s\"" (Minidom.string_of_mDOMString attr_name) (Minidom.string_of_mDOMString attr_value) - | (Some attr_name, _) -> - Printf.printf " ??? attribute %s has no value !!!" (Minidom.string_of_mDOMString attr_name) - | (_,_) -> - Printf.printf " ??? very strange attribute !!!" -;; - -let rec print_node n node = - if Minidom.node_is_blank node then () - else if Minidom.node_is_element node then begin - match Minidom.node_get_name node with - Some node_name -> - begin - let children = Minidom.node_get_children node - and attributes = Minidom.node_get_attributes node - and ns_uri = Minidom.node_get_ns_uri node - and is_first,is_last = (Minidom.node_is_first node), (Minidom.node_is_last node) - in - for i = 1 to n do print_char ' ' done; - Printf.printf "<"; - begin - match ns_uri with - Some uri -> Printf.printf "%s:" (Minidom.string_of_mDOMString uri) - | None -> () - end; - Printf.printf "%s" (Minidom.string_of_mDOMString node_name); - List.iter print_attribute attributes; - Printf.printf ">\n"; - List.iter (print_node (n + 2)) children; - for i = 1 to n do print_char ' ' done; - Printf.printf "\n" (Minidom.string_of_mDOMString node_name) - end - | None -> Printf.printf "??? this node has no name !!!\n" - end else if Minidom.node_is_text node then begin - match Minidom.node_get_content node with - Some node_content -> - for i = 1 to n do print_char ' ' done; - Printf.printf "%s\n" (Minidom.string_of_mDOMString node_content) - | None -> Printf.printf "??? this node has no content !!!\n" - end else begin - Printf.printf "don't know how to manage a node with type %d\n" (Minidom.node_get_type node) - end -;; - -print_node 0 root;; diff --git a/helm/DEVEL/mlminidom/test.xml b/helm/DEVEL/mlminidom/test.xml deleted file mode 100644 index 83d2eef68..000000000 --- a/helm/DEVEL/mlminidom/test.xml +++ /dev/null @@ -1,505 +0,0 @@ - - - - - - - - DEFINITION and_ind() OF TYPE - - - - - - - - __ - - - - - - - - ( - - - - - Π - A - : - - Prop - - - - - - - . - - - - - Π - B - : - - Prop - - - - - - - . - - - - - Π - P - : - - Prop - - - - - - - . - - - - - Π - f - : - - ( - A - - - ( - B - - P - ) - - ) - - - - - - - . - - Π - a - : - - ( - and - - _ - - A - - _ - - B - ) - - . - P - - - - - - - - - - - - - - - - - - - - - - - - - - - - :> - - Prop - - - - - - - - ) - - - - - - - - cast - - prod - - A - - - Prop - - - - - prod - - B - - - Prop - - - - - prod - - P - - - Prop - - - - - prod - - f - - - arrow - A - - arrow - B - P - - - - - - prod - - a - - - app - and - A - B - - - - P - - - - - - - Prop - - - - - - - - - - - AS - - - - - - - - __ - - - - - - - λ - A - : - - Prop - - - - - - - . - - - - - λ - B - : - - Prop - - - - - - - . - - - - - λ - P - : - - Prop - - - - - - - . - - - - - λ - f - : - - ( - A - - - ( - B - - P - ) - - ) - - - - - - - . - - - - - λ - a - : - - ( - and - - _ - - A - - _ - - B - ) - - - - - - - . - - < - P - > - CASES - - _ - - a - - _ - - OF - - ( - conj - - _ - - $1 - - _ - - $2 - ) - - - - ( - f - - _ - - $1 - - _ - - $2 - ) - - - _ - - END - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - A - - - Prop - - - - - - B - - - Prop - - - - - - P - - - Prop - - - - - - f - - - arrow - A - - arrow - B - P - - - - - - - a - - - app - and - A - B - - - - - mutcase - P - a - - app - conj - $1 - $2 - - - app - f - $1 - $2 - - - - - - - - - - - - - - diff --git a/helm/DEVEL/ocaml-http/.cvsignore b/helm/DEVEL/ocaml-http/.cvsignore deleted file mode 100644 index 391f4f58e..000000000 --- a/helm/DEVEL/ocaml-http/.cvsignore +++ /dev/null @@ -1,8 +0,0 @@ -*.cmi -*.cmo -*.cmx -*.cma -*.cmxa -*.o -*.a -*.deb diff --git a/helm/DEVEL/ocaml-http/.depend b/helm/DEVEL/ocaml-http/.depend deleted file mode 100644 index c175b1912..000000000 --- a/helm/DEVEL/ocaml-http/.depend +++ /dev/null @@ -1,42 +0,0 @@ -http_common.cmo: http_constants.cmi http_types.cmo http_common.cmi -http_common.cmx: http_constants.cmx http_types.cmx http_common.cmi -http_constants.cmo: http_constants.cmi -http_constants.cmx: http_constants.cmi -http_daemon.cmo: http_common.cmi http_constants.cmi http_misc.cmi \ - http_parser.cmi http_parser_sanity.cmi http_request.cmi \ - http_tcp_server.cmi http_types.cmo http_daemon.cmi -http_daemon.cmx: http_common.cmx http_constants.cmx http_misc.cmx \ - http_parser.cmx http_parser_sanity.cmx http_request.cmx \ - http_tcp_server.cmx http_types.cmx http_daemon.cmi -http_message.cmo: http_common.cmi http_constants.cmi http_misc.cmi \ - http_parser_sanity.cmi http_types.cmo http_message.cmi -http_message.cmx: http_common.cmx http_constants.cmx http_misc.cmx \ - http_parser_sanity.cmx http_types.cmx http_message.cmi -http_misc.cmo: http_types.cmo http_misc.cmi -http_misc.cmx: http_types.cmx http_misc.cmi -http_parser.cmo: http_common.cmi http_constants.cmi http_parser_sanity.cmi \ - http_types.cmo http_parser.cmi -http_parser.cmx: http_common.cmx http_constants.cmx http_parser_sanity.cmx \ - http_types.cmx http_parser.cmi -http_parser_sanity.cmo: http_constants.cmi http_types.cmo \ - http_parser_sanity.cmi -http_parser_sanity.cmx: http_constants.cmx http_types.cmx \ - http_parser_sanity.cmi -http_request.cmo: http_common.cmi http_message.cmi http_misc.cmi \ - http_parser.cmi http_types.cmo http_request.cmi -http_request.cmx: http_common.cmx http_message.cmx http_misc.cmx \ - http_parser.cmx http_types.cmx http_request.cmi -http_response.cmo: http_common.cmi http_constants.cmi http_daemon.cmi \ - http_message.cmi http_misc.cmi http_types.cmo http_response.cmi -http_response.cmx: http_common.cmx http_constants.cmx http_daemon.cmx \ - http_message.cmx http_misc.cmx http_types.cmx http_response.cmi -http_tcp_server.cmo: http_threaded_tcp_server.cmi http_tcp_server.cmi -http_tcp_server.cmx: http_threaded_tcp_server.cmi http_tcp_server.cmi -http_common.cmi: http_types.cmo -http_constants.cmi: http_types.cmo -http_daemon.cmi: http_types.cmo -http_message.cmi: http_types.cmo -http_parser.cmi: http_types.cmo -http_request.cmi: http_types.cmo -http_response.cmi: http_types.cmo -http_tcp_server.cmi: http_types.cmo diff --git a/helm/DEVEL/ocaml-http/.ocamlinit b/helm/DEVEL/ocaml-http/.ocamlinit deleted file mode 100644 index 577740dbd..000000000 --- a/helm/DEVEL/ocaml-http/.ocamlinit +++ /dev/null @@ -1 +0,0 @@ -#use "tophttp";; diff --git a/helm/DEVEL/ocaml-http/INSTALL b/helm/DEVEL/ocaml-http/INSTALL deleted file mode 100644 index c98cdb44a..000000000 --- a/helm/DEVEL/ocaml-http/INSTALL +++ /dev/null @@ -1,37 +0,0 @@ - -In order to build ocaml-http you will need: - - - the ocaml compiler (>= 3.06) - [ http://caml.inria.fr ] - - - findlib (>= 0.8) - [ http://www.ocaml-programming.de/packages/documentation/findlib/ ] - - - ocamlnet (>= 0.94) - [ http://sourceforge.net/projects/ocamlnet ] - - - pcre-ocaml (>= 4.28.2) - [ http://www.ai.univie.ac.at/~markus/home/ocaml_sources.html ] - -To build the bytecode library: - - $ make all - -To build the nativecode library (only if you have an ocaml native code -compiler): - - $ make opt - -To install the built stuff in the OCaml standard library directory (as root): - - # make install - -To install the built stuff in another directory: - - $ make install DESTDIR=another_directory - -To build a debian package of the library (please note that to build a debian -package you will also need some additional stuff like debhelper, fakeroot, ...): - - $ fakeroot debian/rules binary - diff --git a/helm/DEVEL/ocaml-http/LICENSE b/helm/DEVEL/ocaml-http/LICENSE deleted file mode 100644 index baff777d2..000000000 --- a/helm/DEVEL/ocaml-http/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -(* - OCaml HTTP - do it yourself (fully OCaml) HTTP daemon - - Copyright (C) <2002> Stefano Zacchiroli - - 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 -*) - diff --git a/helm/DEVEL/ocaml-http/META.in b/helm/DEVEL/ocaml-http/META.in deleted file mode 100644 index 8c325462e..000000000 --- a/helm/DEVEL/ocaml-http/META.in +++ /dev/null @@ -1,8 +0,0 @@ -description = "OCaml HTTP daemon library" -version = "@DISTVERSION@" -requires = "unix,pcre,netstring" -requires(mt) = "unix,pcre,netstring,threads" -archive(byte) = "http.cma" -archive(native) = "http.cmxa" -archive(mt,byte) = "http_mt.cma" -archive(mt,native) = "http_mt.cmxa" diff --git a/helm/DEVEL/ocaml-http/Makefile b/helm/DEVEL/ocaml-http/Makefile deleted file mode 100644 index 488ae4082..000000000 --- a/helm/DEVEL/ocaml-http/Makefile +++ /dev/null @@ -1,124 +0,0 @@ -include Makefile.defs - -MODULES = \ - http_types http_constants http_parser_sanity http_misc http_common \ - http_tcp_server http_parser http_message http_request http_daemon \ - http_response - -THREADED_SRV = http_threaded_tcp_server -MODULES_MT = $(patsubst http_tcp_server, mt/$(THREADED_SRV) http_tcp_server, $(MODULES)) -MODULES_NON_MT = $(patsubst http_tcp_server, non_mt/$(THREADED_SRV) http_tcp_server, $(MODULES)) -PUBLIC_MODULES = http_common http_message http_request http_daemon http_response -PUBLIC_IMPL = http_types -OCAMLDOC_STUFF = *.mli $(patsubst %, %.ml, $(PUBLIC_IMPL)) -DOCDIR = doc/html -DOTDIR = doc/dot -TEXDIR = doc/latex -DESTDIR = $(shell $(OCAMLFIND) printconf stdlib) - -all: all_non_mt all_mt -opt: opt_non_mt opt_mt -all_non_mt: http.cma -opt_non_mt: http.cmxa -all_mt: http_mt.cma -opt_mt: http_mt.cmxa -world: all opt -doc: $(DOTDIR)/ocaml-http.ps $(TEXDIR)/ocaml-http.tex $(OCAMLDOC_STUFF) - $(OCAMLDOC) -html -d $(DOCDIR) $(OCAMLDOC_STUFF) -$(TEXDIR)/ocaml-http.tex: $(OCAMLDOC_STUFF) - $(OCAMLDOC) -latex -o $@ $^ -$(DOTDIR)/ocaml-http.ps: $(DOTDIR)/ocaml-http.dot - $(DOT) -Tps $< > $@ -$(DOTDIR)/ocaml-http.dot: *.ml *.mli - $(OCAMLDOC) -dot -o $(DOTDIR)/ocaml-http.dot *.ml *.mli - -examples: - $(MAKE) -C examples/ -examples.opt: - $(MAKE) -C examples/ opt - -include .depend - -depend: - $(OCAMLDEP) *.ml *.mli > .depend - -%.cmi: %.mli - $(OCAMLC) -c $< -%.cmo: %.ml %.cmi - $(OCAMLC) -c $< -%.cmx: %.ml %.cmi - $(OCAMLOPT) -c $< -include Makefile.overrides - -non_mt/$(THREADED_SRV).cmo: non_mt/$(THREADED_SRV).ml $(THREADED_SRV).cmi - cp $(THREADED_SRV).{cmi,mli} non_mt/ - $(OCAMLC) -c $< -non_mt/$(THREADED_SRV).cmx: non_mt/$(THREADED_SRV).ml $(THREADED_SRV).cmi - cp $(THREADED_SRV).{cmi,mli} non_mt/ - $(OCAMLOPT) -c $< - -mt/$(THREADED_SRV).cmo: mt/$(THREADED_SRV).ml $(THREADED_SRV).cmi - cp $(THREADED_SRV).{cmi,mli} mt/ - $(OCAMLC) $(THREADS_FLAGS) -c $< -mt/$(THREADED_SRV).cmx: mt/$(THREADED_SRV).ml $(THREADED_SRV).cmi - cp $(THREADED_SRV).{cmi,mli} mt/ - $(OCAMLOPT) $(THREADS_FLAGS) -c $< - -http.cma: $(patsubst %,%.cmo,$(MODULES_NON_MT)) - $(OCAMLC) -a -o $@ $^ -http.cmxa: $(patsubst %,%.cmx,$(MODULES_NON_MT)) - $(OCAMLOPT) -a -o $@ $^ -http_mt.cma: $(patsubst %,%.cmo,$(MODULES_MT)) - $(OCAMLC) -a -o $@ $^ -http_mt.cmxa: $(patsubst %,%.cmx,$(MODULES_MT)) - $(OCAMLOPT) -a -o $@ $^ - -meta: META -META: META.in - cat META.in | sed -e 's/@DISTVERSION@/$(DISTVERSION)/' > META - -clean: - $(MAKE) -C examples/ clean - for d in . mt non_mt; do \ - rm -f $$d/*.cm[ioax] $$d/*.cmxa $$d/*.[ao] $$d/test{,.opt}; \ - done - rm -f {mt,non_mt}/$(THREADED_SRV).mli -docclean: - rm -f \ - $(DOCDIR)/*.html $(DOCDIR)/*.css \ - $(DOTDIR)/*.dot $(DOTDIR)/*.ps \ - $(TEXDIR)/*.tex -distclean: clean docclean - $(MAKE) -C examples/ distclean - rm -f META -dist: distreal distrm -distreal: distclean depend - if [ -d $(DISTDIR) ]; then rm -rf $(DISTDIR); else true; fi - mkdir $(DISTDIR) - for f in \ - $(patsubst %, %.ml, $(MODULES)) \ - $(patsubst %, %.mli, $(MODULES) $(THREADED_SRV)) \ - mt/ non_mt/ $(EXTRA_DIST) examples/ debian/; \ - do \ - cp -r $$f $(DISTDIR)/; \ - done - -find $(DISTDIR)/ -type d -name CVS -exec rm -rf {} \; - -find $(DISTDIR)/ -type f -name ".cvs*" -exec rm -f {} \; - tar cvzf $(DISTDIR).tar.gz $(DISTDIR)/ -distrm: - rm -rf $(DISTDIR)/ -deb: distreal - (cd $(DISTDIR)/ && debuild) - rm -rf $(DISTDIR)/ -install: META - $(OCAMLFIND) install -destdir $(DESTDIR) $(PKGNAME) \ - $(patsubst %, %.mli, $(PUBLIC_MODULES)) \ - $(patsubst %, %.ml, $(PUBLIC_IMPL)) \ - $(patsubst %, %.cmi, $(PUBLIC_MODULES)) \ - $(patsubst %, %.cmi, $(PUBLIC_IMPL)) \ - http{,_mt}.cm{,x}a http{,_mt}.a META - -.PHONY: \ - all opt world all_non_mt all_mt opt_non_mt opt_mt \ - examples examples.opt depend clean distclean dist \ - install meta doc deb distreal distrm diff --git a/helm/DEVEL/ocaml-http/Makefile.defs b/helm/DEVEL/ocaml-http/Makefile.defs deleted file mode 100644 index 6fd4b75f8..000000000 --- a/helm/DEVEL/ocaml-http/Makefile.defs +++ /dev/null @@ -1,25 +0,0 @@ -PKGNAME = http -DISTVERSION = $(shell dpkg-parsechangelog | egrep '^Version: ' | sed 's/^Version: //') - -DEBUG_FLAGS = -REQUIRES = unix pcre netstring -COMMON_FLAGS = $(DEBUG_FLAGS) -pp camlp4o -package "$(REQUIRES)" -THREADS_FLAGS = -package threads -thread -OCAMLFIND = ocamlfind -OCAMLC = $(OCAMLFIND) ocamlc $(COMMON_FLAGS) -OCAMLOPT = $(OCAMLFIND) ocamlopt $(COMMON_FLAGS) -OCAMLDEP = $(OCAMLFIND) ocamldep $(COMMON_FLAGS) -OCAMLDOC := \ - ocamldoc \ - $(shell $(OCAMLFIND) query -i-format unix) \ - $(shell $(OCAMLFIND) query -i-format pcre) \ - $(shell $(OCAMLFIND) query -i-format netstring) -DOT = dot - -DISTNAME = ocaml-http -DISTDIR = $(DISTNAME)-$(DISTVERSION) -EXTRA_DIST = \ - INSTALL LICENSE README META.in Makefile Makefile.defs Makefile.overrides \ - .depend tophttp doc - - diff --git a/helm/DEVEL/ocaml-http/Makefile.overrides b/helm/DEVEL/ocaml-http/Makefile.overrides deleted file mode 100644 index 62a81b549..000000000 --- a/helm/DEVEL/ocaml-http/Makefile.overrides +++ /dev/null @@ -1,2 +0,0 @@ -http_types.cmi http_types.cmo: http_types.ml - $(OCAMLC) -c $< diff --git a/helm/DEVEL/ocaml-http/README b/helm/DEVEL/ocaml-http/README deleted file mode 100644 index 7d2c1a5a8..000000000 --- a/helm/DEVEL/ocaml-http/README +++ /dev/null @@ -1,10 +0,0 @@ - -ocaml-http is a simple OCaml library for creating HTTP daemons, it is largely -inspired to the Perl's HTTP:: modules family. - -Currently the library contains the following modules: - -* Http.Daemon - - this module provide - diff --git a/helm/DEVEL/ocaml-http/TODO b/helm/DEVEL/ocaml-http/TODO deleted file mode 100644 index 343b51d87..000000000 --- a/helm/DEVEL/ocaml-http/TODO +++ /dev/null @@ -1,2 +0,0 @@ -- hostname support for ~addr parameter (e.g. start ~addr:"localhost") -- HTTP authentication support diff --git a/helm/DEVEL/ocaml-http/debian/changelog b/helm/DEVEL/ocaml-http/debian/changelog deleted file mode 100644 index 79917ba3d..000000000 --- a/helm/DEVEL/ocaml-http/debian/changelog +++ /dev/null @@ -1,63 +0,0 @@ -ocaml-http (0.0.8) unstable; urgency=low - - * Added support for "ancient" HTTP requests which specify no HTTP - version - - 'version' method on message now has type 'version option' - * Http_daemon now use debugging prints from Http_common like other - modules - * Added debugging print of requests parse error - * Shutdown server socket on abnormal exit (actually: uncaught - exceptions or SIGTERM received) - * Added a lot of ocamldoc documentation - - -- Stefano Zacchiroli Fri, 10 Jan 2003 10:36:53 +0100 - -ocaml-http (0.0.7) unstable; urgency=low - - * Added support for POST requests - * Implemented a commont 'message' class from which 'request' and - 'response' inherit - * Changed constructor of 'request' objects, requests are now buildable - directly (and only) from an input channel - * Added client IP address information to Http_request.request class - * Added OO daemon interfaces ("daemon" and "connection" classes) - * Use Pcre to perform sanity test on headers instead of home made - parsing - * Callback functions can raise Http_types.Quit to have main daemon - quit - * Case-insensitive handling of header names - - -- Stefano Zacchiroli Wed, 25 Dec 2002 16:22:31 +0100 - -ocaml-http (0.0.6) unstable; urgency=low - - * Ship multithreaded and non multithreaded cm{x,}aS - * Added support for multiple binding of the same parameter in request - objects (new method 'paramAll') - * Added support for 'empty' bindings in query arguments (e.g. - "/foo?b=" or "/foo?b") - * Added some sanity checks - * Bumped Standards-Version to 3.5.8 - * Use versioned dependencies lib{pcre,ocamlnet}-ocaml-dev- - * Added 'Provides libhttp-ocaml-dev-' - * Removed GPL from debian/copyright, added reference to - /usr/share/common-licenses/GPL - - -- Stefano Zacchiroli Mon, 25 Nov 2002 11:04:49 +0100 - -ocaml-http (0.0.5) unstable; urgency=low - - * Fixed bug for HTTP encoded GET parameters which contain '?' or '&' - characters - * Added support for chdir in a given document root before starting - * Added support for multi threaded daemons - * Added a generic 'Http_daemon.respond' function - * Added 'toString' method to response objects - - -- Stefano Zacchiroli Fri, 22 Nov 2002 11:29:37 +0100 - -ocaml-http (0.0.3) unstable; urgency=low - - * First release. - - -- Stefano Zacchiroli Sun, 17 Nov 2002 17:41:41 +0100 diff --git a/helm/DEVEL/ocaml-http/debian/control b/helm/DEVEL/ocaml-http/debian/control deleted file mode 100644 index 1a72fbd75..000000000 --- a/helm/DEVEL/ocaml-http/debian/control +++ /dev/null @@ -1,19 +0,0 @@ -Source: ocaml-http -Section: devel -Priority: optional -Maintainer: Stefano Zacchiroli -Build-Depends: debhelper (>> 4.0.0), ocaml-3.06-1, ocaml-findlib, libpcre-ocaml-dev (>= 4.30.0), libocamlnet-ocaml-dev (>= 0.94), graphviz -Standards-Version: 3.5.8 - -Package: libhttp-ocaml-dev -Architecture: any -Depends: ocaml-3.06-1, libpcre-ocaml-dev (>= 4.30.0), libocamlnet-ocaml-dev (>= 0.94) -Description: OCaml module to build simple HTTP servers - OCaml module to build simple HTTP server, largely inspired to Perl's - HTTP::Daemon module. - . - Contains an Http.Daemon module which allow you to create simple HTTP - servers, and a set of facility functions to handle HTTP request and - responses. - . - Contains also classes that enclose HTTP request and responses. diff --git a/helm/DEVEL/ocaml-http/debian/copyright b/helm/DEVEL/ocaml-http/debian/copyright deleted file mode 100644 index efabd64a9..000000000 --- a/helm/DEVEL/ocaml-http/debian/copyright +++ /dev/null @@ -1,13 +0,0 @@ -Author: Stefano Zacchiroli - -Copyright: - - OCaml HTTP - do it yourself (fully OCaml) HTTP daemon - - Copyright (C) <2002> Stefano Zacchiroli - - OCaml HTTP is distributed under the term of the GNU General Public - License, you can find a copy of the license in: - - /usr/share/common-licenses/GPL - diff --git a/helm/DEVEL/ocaml-http/debian/dirs b/helm/DEVEL/ocaml-http/debian/dirs deleted file mode 100644 index bfe42fe0e..000000000 --- a/helm/DEVEL/ocaml-http/debian/dirs +++ /dev/null @@ -1 +0,0 @@ -/usr/lib/ocaml/3.06 diff --git a/helm/DEVEL/ocaml-http/debian/docs b/helm/DEVEL/ocaml-http/debian/docs deleted file mode 100644 index 2e098492d..000000000 --- a/helm/DEVEL/ocaml-http/debian/docs +++ /dev/null @@ -1,2 +0,0 @@ -README -doc/* diff --git a/helm/DEVEL/ocaml-http/debian/examples b/helm/DEVEL/ocaml-http/debian/examples deleted file mode 100644 index 6e72ae207..000000000 --- a/helm/DEVEL/ocaml-http/debian/examples +++ /dev/null @@ -1 +0,0 @@ -examples/*.ml diff --git a/helm/DEVEL/ocaml-http/debian/rules b/helm/DEVEL/ocaml-http/debian/rules deleted file mode 100755 index 498a5540e..000000000 --- a/helm/DEVEL/ocaml-http/debian/rules +++ /dev/null @@ -1,48 +0,0 @@ -#!/usr/bin/make -f - -#export DH_VERBOSE=1 -export DH_COMPAT=4 - -TARGETDIR = $(CURDIR)/debian/libhttp-ocaml-dev -OCAML_LIB_DIR = $(shell ocamlc -where) - -build: build-stamp -build-stamp: - dh_testdir - $(MAKE) all - if [ -x /usr/bin/ocamlopt ]; then $(MAKE) opt; else true; fi - touch build-stamp - -clean: - dh_testdir - dh_testroot - rm -f build-stamp - -$(MAKE) distclean - dh_clean - -install: build - dh_testdir - dh_testroot - dh_clean -k - dh_installdirs - $(MAKE) install DESTDIR=$(TARGETDIR)$(OCAML_LIB_DIR) - $(MAKE) doc - -binary-arch: build install - dh_testdir - dh_testroot - dh_installdocs - dh_installexamples - dh_installchangelogs - dh_link - dh_strip - dh_compress - dh_fixperms - dh_installdeb - dh_shlibdeps - dh_gencontrol - dh_md5sums - dh_builddeb - -binary: binary-arch -.PHONY: build clean binary-arch binary install diff --git a/helm/DEVEL/ocaml-http/doc/dot/.cvsignore b/helm/DEVEL/ocaml-http/doc/dot/.cvsignore deleted file mode 100644 index 269c66077..000000000 --- a/helm/DEVEL/ocaml-http/doc/dot/.cvsignore +++ /dev/null @@ -1,2 +0,0 @@ -*.dot -*.ps diff --git a/helm/DEVEL/ocaml-http/doc/html/.cvsignore b/helm/DEVEL/ocaml-http/doc/html/.cvsignore deleted file mode 100644 index d0098b437..000000000 --- a/helm/DEVEL/ocaml-http/doc/html/.cvsignore +++ /dev/null @@ -1,2 +0,0 @@ -*.css -*.html diff --git a/helm/DEVEL/ocaml-http/doc/latex/.cvsignore b/helm/DEVEL/ocaml-http/doc/latex/.cvsignore deleted file mode 100644 index 01564af35..000000000 --- a/helm/DEVEL/ocaml-http/doc/latex/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -*.tex diff --git a/helm/DEVEL/ocaml-http/examples/.cvsignore b/helm/DEVEL/ocaml-http/examples/.cvsignore deleted file mode 100644 index c0404dd2a..000000000 --- a/helm/DEVEL/ocaml-http/examples/.cvsignore +++ /dev/null @@ -1,5 +0,0 @@ -*.cmi -*.cmo -*.cmx -*.cma -*.cmxa diff --git a/helm/DEVEL/ocaml-http/examples/Makefile b/helm/DEVEL/ocaml-http/examples/Makefile deleted file mode 100644 index 7267301eb..000000000 --- a/helm/DEVEL/ocaml-http/examples/Makefile +++ /dev/null @@ -1,31 +0,0 @@ -include ../Makefile.defs -OBJS_NON_MT = ../http.cma -OBJS_NON_MT_OPT = ../http.cmxa -OBJS_MT = ../http_mt.cma -OBJS_MT_OPT = ../http_mt.cmxa -EXAMPLES_FLAGS = -I .. -linkpkg - -EXAMPLES = \ - always_ok_daemon webfsd obj_foo dump_args timeout dont_fork \ - threads chdir damned_recursion oo_daemon client_address highlander - -all: $(EXAMPLES) -opt: $(patsubst %,%.opt,$(EXAMPLES)) -%: %.ml $(OBJS_NON_MT) - $(OCAMLC) $(EXAMPLES_FLAGS) $(OBJS_NON_MT) -o $@ $< -%.opt: %.ml $(OBJS_NON_MT_OPT) - $(OCAMLOPT) $(EXAMPLES_FLAGS) $(OBJS_NON_MT_OPT) -o $@ $< - -threads: threads.ml $(OBJS_MT) - $(OCAMLC) $(EXAMPLES_FLAGS) $(OBJS_MT) $(THREADS_FLAGS) -o $@ $< -threads.opt: threads.ml $(OBJS_MT_OPT) - $(OCAMLOPT) $(EXAMPLES_FLAGS) $(OBJS_MT_OPT) $(THREADS_FLAGS) -o $@ $< - -damned_recursion: damned_recursion.ml $(OBJS_MT) - $(OCAMLC) $(EXAMPLES_FLAGS) $(OBJS_MT) $(THREADS_FLAGS) -package netclient -o $@ $< -damned_recursion.opt: damned_recursion.ml $(OBJS_MT_OPT) - $(OCAMLOPT) $(EXAMPLES_FLAGS) $(OBJS_MT_OPT) $(THREADS_FLAGS) -package netclient -o $@ $< - -distclean: clean -clean: - -rm -f *.cm[ioax] *.o $(EXAMPLES) $(patsubst %,%.opt,$(EXAMPLES)) diff --git a/helm/DEVEL/ocaml-http/examples/always_ok_daemon.ml b/helm/DEVEL/ocaml-http/examples/always_ok_daemon.ml deleted file mode 100644 index 492be655a..000000000 --- a/helm/DEVEL/ocaml-http/examples/always_ok_daemon.ml +++ /dev/null @@ -1,25 +0,0 @@ - -(* - OCaml HTTP - do it yourself (fully OCaml) HTTP daemon - - Copyright (C) <2002> Stefano Zacchiroli - - 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 -*) - -open Http_daemon;; - (* start an http daemon that alway respond with a 200 status code and an empty - content *) -start ~port:9999 (fun _ _ outchan -> respond outchan) diff --git a/helm/DEVEL/ocaml-http/examples/chdir.ml b/helm/DEVEL/ocaml-http/examples/chdir.ml deleted file mode 100644 index a5e460b3a..000000000 --- a/helm/DEVEL/ocaml-http/examples/chdir.ml +++ /dev/null @@ -1,27 +0,0 @@ - -(* - OCaml HTTP - do it yourself (fully OCaml) HTTP daemon - - Copyright (C) <2002> Stefano Zacchiroli - - 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 -*) - -open Http_daemon;; -open Printf;; -start - ~port:9999 - ~root:"/etc" - (fun _ _ outchan -> respond ~body:(sprintf "%s\n" (Sys.getcwd ())) outchan) diff --git a/helm/DEVEL/ocaml-http/examples/client_address.ml b/helm/DEVEL/ocaml-http/examples/client_address.ml deleted file mode 100644 index 75719111e..000000000 --- a/helm/DEVEL/ocaml-http/examples/client_address.ml +++ /dev/null @@ -1,34 +0,0 @@ - -(* - OCaml HTTP - do it yourself (fully OCaml) HTTP daemon - - Copyright (C) <2002> Stefano Zacchiroli - - 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 -*) - -open Printf;; - -let callback req outchan = - let body = - sprintf - "Hi, this is your personal assistant, you are connected from %s:%d\n" - req#clientAddr - req#clientPort - in - let res = new Http_response.response ~body () in - Http_daemon.respond_with res outchan -in -Http_daemon.start' ~port:9999 callback diff --git a/helm/DEVEL/ocaml-http/examples/damned_recursion.ml b/helm/DEVEL/ocaml-http/examples/damned_recursion.ml deleted file mode 100644 index dd3f6a36d..000000000 --- a/helm/DEVEL/ocaml-http/examples/damned_recursion.ml +++ /dev/null @@ -1,58 +0,0 @@ - -(* - OCaml HTTP - do it yourself (fully OCaml) HTTP daemon - - Copyright (C) <2002> Stefano Zacchiroli - - 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 -*) - -open Http_types;; -open Printf;; - -let wget addr port path = - let rec wget' inchan buf = - Buffer.add_string buf (input_line inchan ^ "\n"); - wget' inchan buf - in - prerr_endline (sprintf "DEBUG: wgetting url '%s:%d%s'" addr port path); - let sockaddr = Unix.ADDR_INET (Unix.inet_addr_of_string addr, port) in - let suck = Unix.socket Unix.PF_INET Unix.SOCK_STREAM 0 in - Unix.connect suck sockaddr; - let outchan = Unix.out_channel_of_descr suck in - output_string outchan (sprintf "GET %s HTTP/1.0\r\n\r\n" path); - flush outchan; - let inchan = Unix.in_channel_of_descr suck in - let buf = Buffer.create 1023 in - try - wget' inchan buf - with End_of_file -> Buffer.contents buf -in -let callback (req: request) outchan = - let i = int_of_string (req#param "x") in - prerr_endline (string_of_int i); - match i with - | 0 -> output_string outchan "1" - | x when x>0 -> - let data = - wget "127.0.0.1" 9999 (sprintf "/foo?x=%d" (x-1)) -(* wget "127.0.0.1" 80 "/index.html" *) - in - output_string outchan (sprintf "%s %d" data x) - | _ -> assert false -in -let mode = `Thread in -Http_daemon.start' ~port:9999 ~mode callback - diff --git a/helm/DEVEL/ocaml-http/examples/dont_fork.ml b/helm/DEVEL/ocaml-http/examples/dont_fork.ml deleted file mode 100644 index d0e1d91e6..000000000 --- a/helm/DEVEL/ocaml-http/examples/dont_fork.ml +++ /dev/null @@ -1,25 +0,0 @@ - -(* - OCaml HTTP - do it yourself (fully OCaml) HTTP daemon - - Copyright (C) <2002> Stefano Zacchiroli - - 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 -*) - -let callback req outchan = - Http_daemon.respond_error ~body:"AH AH AH :-P\n" outchan -in -Http_daemon.start' ~port:9999 ~mode:`Single ~timeout:(Some 5) callback diff --git a/helm/DEVEL/ocaml-http/examples/dump_args.ml b/helm/DEVEL/ocaml-http/examples/dump_args.ml deleted file mode 100644 index 8e0d5dc67..000000000 --- a/helm/DEVEL/ocaml-http/examples/dump_args.ml +++ /dev/null @@ -1,46 +0,0 @@ - -(* - OCaml HTTP - do it yourself (fully OCaml) HTTP daemon - - Copyright (C) <2002> Stefano Zacchiroli - - 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 -*) - -open Printf;; - -let callback req outchan = - Http_daemon.send_basic_headers ~code:200 outchan; - Http_daemon.send_CRLF outchan; - let str = - (sprintf "request path = %s\n" req#path) ^ - (sprintf "request GET params = %s\n" - (String.concat ";" - (List.map (fun (h,v) -> String.concat "=" [h;v]) req#params_GET))) ^ - (sprintf "request POST params = %s\n" - (String.concat ";" - (List.map (fun (h,v) -> String.concat "=" [h;v]) req#params_POST))) ^ - (sprintf "request ALL params = %s\n" - (String.concat ";" - (List.map (fun (h,v) -> String.concat "=" [h;v]) req#params))) ^ - (sprintf "request BODY = '%s'\n" req#body) - in - output_string outchan str; - prerr_endline str -in -print_endline "Starting custom Http_daemon ..."; -flush stdout; -Http_daemon.start' ~port:9999 callback - diff --git a/helm/DEVEL/ocaml-http/examples/highlander.ml b/helm/DEVEL/ocaml-http/examples/highlander.ml deleted file mode 100644 index b58d3a6e7..000000000 --- a/helm/DEVEL/ocaml-http/examples/highlander.ml +++ /dev/null @@ -1,54 +0,0 @@ - -(* - OCaml HTTP - do it yourself (fully OCaml) HTTP daemon - - Copyright (C) <2002> Stefano Zacchiroli - - 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 -*) - -(* almost the same as dump_args.ml, but used to test fast rebinding of the same -port *) - -open Printf;; - -let callback req outchan = - Http_daemon.send_basic_headers ~code:200 outchan; - Http_daemon.send_CRLF outchan; - let str = - (sprintf "request path = %s\n" req#path) ^ - (sprintf "request GET params = %s\n" - (String.concat ";" - (List.map (fun (h,v) -> String.concat "=" [h;v]) req#params_GET))) ^ - (sprintf "request POST params = %s\n" - (String.concat ";" - (List.map (fun (h,v) -> String.concat "=" [h;v]) req#params_POST))) ^ - (sprintf "request ALL params = %s\n" - (String.concat ";" - (List.map (fun (h,v) -> String.concat "=" [h;v]) req#params))) ^ - (sprintf "request BODY = '%s'\n" req#body) - in - output_string outchan str; - prerr_endline str -in -print_endline "Starting custom Http_daemon ..."; -flush stdout; -(* Sys.catch_break true; *) -while true do -(* try *) - Http_daemon.start' ~mode:`Single ~port:9999 callback -(* with Sys.Break -> prerr_endline "RESURRECTION!!!!" *) -done - diff --git a/helm/DEVEL/ocaml-http/examples/obj_foo.ml b/helm/DEVEL/ocaml-http/examples/obj_foo.ml deleted file mode 100644 index 278621853..000000000 --- a/helm/DEVEL/ocaml-http/examples/obj_foo.ml +++ /dev/null @@ -1,27 +0,0 @@ - -(* - OCaml HTTP - do it yourself (fully OCaml) HTTP daemon - - Copyright (C) <2002> Stefano Zacchiroli - - 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 -*) - -open Http_types;; - -let callback (req: request) outchan = - Http_daemon.respond_error ~body:(req#param "foo") outchan -in -Http_daemon.start' ~port:9999 callback diff --git a/helm/DEVEL/ocaml-http/examples/oo_daemon.ml b/helm/DEVEL/ocaml-http/examples/oo_daemon.ml deleted file mode 100644 index b73a2acd9..000000000 --- a/helm/DEVEL/ocaml-http/examples/oo_daemon.ml +++ /dev/null @@ -1,44 +0,0 @@ - -(* - OCaml HTTP - do it yourself (fully OCaml) HTTP daemon - - Copyright (C) <2002> Stefano Zacchiroli - - 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 -*) - -open Http_daemon;; -open Http_response;; - - (* the simple way *) -let d = new daemon ~addr:"127.0.0.1" ~port:9999 () in -while true do - let (req, conn) = d#getRequest in (* wait for valid request *) - conn#respond_with (new response ~body:"foo\n" ()); - conn#close -done - -(* - (* the hard way *) -let d = new daemon ~addr:"127.0.0.1" ~port:9999 () in -while true do - let conn = d#accept in (* wait for client connection *) - (match conn#getRequest with - | None -> () (* invalid request received *) - | Some req -> conn#respond_with (new response ~body:"foo\n" ())); - conn#close (* close socket *) -done -*) - diff --git a/helm/DEVEL/ocaml-http/examples/threads.ml b/helm/DEVEL/ocaml-http/examples/threads.ml deleted file mode 100644 index 9eba49f37..000000000 --- a/helm/DEVEL/ocaml-http/examples/threads.ml +++ /dev/null @@ -1,47 +0,0 @@ - -(* - OCaml HTTP - do it yourself (fully OCaml) HTTP daemon - - Copyright (C) <2002> Stefano Zacchiroli - - 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 -*) - -let m = Mutex.create () in -let i = ref 10 in -let dump_i outchan = - Http_daemon.respond ~body:(Printf.sprintf "i = %d\n" !i) outchan -in -let callback req outchan = - match req#path with - | "/incr" -> - Mutex.lock m; - incr i; - dump_i outchan; - Unix.sleep 5; - Mutex.unlock m - | "/decr" -> - Mutex.lock m; - decr i; - dump_i outchan; - Unix.sleep 5; - Mutex.unlock m - | "/get" -> - Mutex.lock m; - dump_i outchan; - Mutex.unlock m - | bad_request -> Http_daemon.respond_error outchan -in -Http_daemon.start' ~port:9999 ~mode:`Thread callback diff --git a/helm/DEVEL/ocaml-http/examples/timeout.ml b/helm/DEVEL/ocaml-http/examples/timeout.ml deleted file mode 100644 index eaa840778..000000000 --- a/helm/DEVEL/ocaml-http/examples/timeout.ml +++ /dev/null @@ -1,26 +0,0 @@ - -(* - OCaml HTTP - do it yourself (fully OCaml) HTTP daemon - - Copyright (C) <2002> Stefano Zacchiroli - - 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 -*) - -let callback _ _ outchan = - output_string outchan "Here you are!\n"; - flush outchan -in -Http_daemon.start ~port:9999 ~timeout:(Some 10) callback diff --git a/helm/DEVEL/ocaml-http/examples/webfsd.ml b/helm/DEVEL/ocaml-http/examples/webfsd.ml deleted file mode 100644 index 6babe3dde..000000000 --- a/helm/DEVEL/ocaml-http/examples/webfsd.ml +++ /dev/null @@ -1,40 +0,0 @@ - -(* - OCaml HTTP - do it yourself (fully OCaml) HTTP daemon - - Copyright (C) <2002> Stefano Zacchiroli - - 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 -*) - -let def_port = 80 in -let def_addr = "0.0.0.0" in -let def_root = Sys.getcwd () in - -let port = ref def_port in -let addr = ref def_addr in -let root = ref def_root in -let argspec = - [ "-p", Arg.Int (fun p -> port := p), - "TCP port on which listen, default: " ^ string_of_int !port; - "-a", Arg.String (fun a -> addr := a), - "IP address on which listen, default: " ^ !addr; - "-r", Arg.String (fun r -> root := r), - "DocumentRoot, default: current working directory" ] -in -Arg.parse argspec (fun _ -> ()) ""; -Sys.chdir !root; -Http_daemon.Trivial.start ~addr:!addr ~port:!port () - diff --git a/helm/DEVEL/ocaml-http/http_common.ml b/helm/DEVEL/ocaml-http/http_common.ml deleted file mode 100644 index 23beaf9ae..000000000 --- a/helm/DEVEL/ocaml-http/http_common.ml +++ /dev/null @@ -1,162 +0,0 @@ - -(* - OCaml HTTP - do it yourself (fully OCaml) HTTP daemon - - Copyright (C) <2002> Stefano Zacchiroli - - 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 -*) - -open Http_types;; -open Printf;; - -let debug = ref false -let debug_print s = - if !debug then - prerr_endline (sprintf "[OCaml HTTP] DEBUG: %s" s) - -let http_version = Http_constants.version -let server_string = Http_constants.server_string - -let string_of_version = function - | `HTTP_1_0 -> "HTTP/1.0" - | `HTTP_1_1 -> "HTTP/1.1" - -let version_of_string = function - | "HTTP/1.0" -> `HTTP_1_0 - | "HTTP/1.1" -> `HTTP_1_1 - | invalid_version -> raise (Invalid_HTTP_version invalid_version) - -let string_of_method = function - | `GET -> "GET" - | `POST -> "POST" - -let method_of_string = function - | "GET" -> `GET - | "POST" -> `POST - | invalid_method -> raise (Invalid_HTTP_method invalid_method) - -let status_of_code = function - | 100 -> `Informational `Continue - | 101 -> `Informational `Switching_protocols - | 200 -> `Success `OK - | 201 -> `Success `Created - | 202 -> `Success `Accepted - | 203 -> `Success `Non_authoritative_information - | 204 -> `Success `No_content - | 205 -> `Success `Reset_content - | 206 -> `Success `Partial_content - | 300 -> `Redirection `Multiple_choices - | 301 -> `Redirection `Moved_permanently - | 302 -> `Redirection `Found - | 303 -> `Redirection `See_other - | 304 -> `Redirection `Not_modified - | 305 -> `Redirection `Use_proxy - | 307 -> `Redirection `Temporary_redirect - | 400 -> `Client_error `Bad_request - | 401 -> `Client_error `Unauthorized - | 402 -> `Client_error `Payment_required - | 403 -> `Client_error `Forbidden - | 404 -> `Client_error `Not_found - | 405 -> `Client_error `Method_not_allowed - | 406 -> `Client_error `Not_acceptable - | 407 -> `Client_error `Proxy_authentication_required - | 408 -> `Client_error `Request_time_out - | 409 -> `Client_error `Conflict - | 410 -> `Client_error `Gone - | 411 -> `Client_error `Length_required - | 412 -> `Client_error `Precondition_failed - | 413 -> `Client_error `Request_entity_too_large - | 414 -> `Client_error `Request_URI_too_large - | 415 -> `Client_error `Unsupported_media_type - | 416 -> `Client_error `Requested_range_not_satisfiable - | 417 -> `Client_error `Expectation_failed - | 500 -> `Server_error `Internal_server_error - | 501 -> `Server_error `Not_implemented - | 502 -> `Server_error `Bad_gateway - | 503 -> `Server_error `Service_unavailable - | 504 -> `Server_error `Gateway_time_out - | 505 -> `Server_error `HTTP_version_not_supported - | invalid_code -> raise (Invalid_code invalid_code) - -let code_of_status = function - | `Informational `Continue -> 100 - | `Informational `Switching_protocols -> 101 - | `Success `OK -> 200 - | `Success `Created -> 201 - | `Success `Accepted -> 202 - | `Success `Non_authoritative_information -> 203 - | `Success `No_content -> 204 - | `Success `Reset_content -> 205 - | `Success `Partial_content -> 206 - | `Redirection `Multiple_choices -> 300 - | `Redirection `Moved_permanently -> 301 - | `Redirection `Found -> 302 - | `Redirection `See_other -> 303 - | `Redirection `Not_modified -> 304 - | `Redirection `Use_proxy -> 305 - | `Redirection `Temporary_redirect -> 307 - | `Client_error `Bad_request -> 400 - | `Client_error `Unauthorized -> 401 - | `Client_error `Payment_required -> 402 - | `Client_error `Forbidden -> 403 - | `Client_error `Not_found -> 404 - | `Client_error `Method_not_allowed -> 405 - | `Client_error `Not_acceptable -> 406 - | `Client_error `Proxy_authentication_required -> 407 - | `Client_error `Request_time_out -> 408 - | `Client_error `Conflict -> 409 - | `Client_error `Gone -> 410 - | `Client_error `Length_required -> 411 - | `Client_error `Precondition_failed -> 412 - | `Client_error `Request_entity_too_large -> 413 - | `Client_error `Request_URI_too_large -> 414 - | `Client_error `Unsupported_media_type -> 415 - | `Client_error `Requested_range_not_satisfiable -> 416 - | `Client_error `Expectation_failed -> 417 - | `Server_error `Internal_server_error -> 500 - | `Server_error `Not_implemented -> 501 - | `Server_error `Bad_gateway -> 502 - | `Server_error `Service_unavailable -> 503 - | `Server_error `Gateway_time_out -> 504 - | `Server_error `HTTP_version_not_supported -> 505 - -let is_informational code = - match status_of_code code with - | `Informational _ -> true - | _ -> false - -let is_success code = - match status_of_code code with - | `Success _ -> true - | _ -> false - -let is_redirection code = - match status_of_code code with - | `Redirection _ -> true - | _ -> false - -let is_client_error code = - match status_of_code code with - | `Client_error _ -> true - | _ -> false - -let is_server_error code = - match status_of_code code with - | `Server_error _ -> true - | _ -> false - -let is_error code = is_client_error code || is_server_error code - diff --git a/helm/DEVEL/ocaml-http/http_common.mli b/helm/DEVEL/ocaml-http/http_common.mli deleted file mode 100644 index 55e37b073..000000000 --- a/helm/DEVEL/ocaml-http/http_common.mli +++ /dev/null @@ -1,80 +0,0 @@ - -(* - OCaml HTTP - do it yourself (fully OCaml) HTTP daemon - - Copyright (C) <2002> Stefano Zacchiroli - - 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 -*) - -(** Common functionalities shared by other OCaml HTTP modules *) - -open Http_types;; - - (** whether debugging messages are enabled or not, can be changed at runtime - *) -val debug: bool ref - - (** print a string on stderr only if debugging is enabled *) -val debug_print: string -> unit - - (** see {! Http_constants.version} *) -val http_version: version - - (** see {! Http_constants.server_string} *) -val server_string: string - - (** pretty print an HTTP version *) -val string_of_version: version -> string - - (** parse an HTTP version from a string - @raise Invalid_HTTP_version if given string doesn't represent a supported HTTP - version *) -val version_of_string: string -> version - - (** pretty print an HTTP method *) -val string_of_method: meth -> string - - (** parse an HTTP method from a string - @raise Invalid_HTTP_method if given string doesn't represent a supported - method *) -val method_of_string: string -> meth - - (** converts an integer HTTP status to the corresponding status value - @raise Invalid_code if given integer isn't a valid HTTP status code *) -val status_of_code: int -> status - - (** converts an HTTP status to the corresponding integer value *) -val code_of_status: [< status] -> int - - (** @return true on "informational" status codes, false elsewhere *) -val is_informational: int -> bool - - (** @return true on "success" status codes, false elsewhere *) -val is_success: int -> bool - - (** @return true on "redirection" status codes, false elsewhere *) -val is_redirection: int -> bool - - (** @return true on "client error" status codes, false elsewhere *) -val is_client_error: int -> bool - - (** @return true on "server error" status codes, false elsewhere *) -val is_server_error: int -> bool - - (** @return true on "client error" and "server error" status code, false - elsewhere *) -val is_error: int -> bool - diff --git a/helm/DEVEL/ocaml-http/http_constants.ml b/helm/DEVEL/ocaml-http/http_constants.ml deleted file mode 100644 index 88d8617c9..000000000 --- a/helm/DEVEL/ocaml-http/http_constants.ml +++ /dev/null @@ -1,30 +0,0 @@ - -(* - OCaml HTTP - do it yourself (fully OCaml) HTTP daemon - - Copyright (C) <2002> Stefano Zacchiroli - - 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 -*) - -let version = `HTTP_1_1 ;; -let server_string = "OCaml HTTP Daemon" ;; -let crlf = "\r\n" ;; - -let default_addr = "0.0.0.0" ;; -let default_port = 80 ;; -let default_timeout = 300 ;; -let default_mode = `Fork ;; - diff --git a/helm/DEVEL/ocaml-http/http_constants.mli b/helm/DEVEL/ocaml-http/http_constants.mli deleted file mode 100644 index bdce244fd..000000000 --- a/helm/DEVEL/ocaml-http/http_constants.mli +++ /dev/null @@ -1,41 +0,0 @@ - -(* - OCaml HTTP - do it yourself (fully OCaml) HTTP daemon - - Copyright (C) <2002> Stefano Zacchiroli - - 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 -*) - -(** Constants *) - -open Http_types - - (** default HTTP version *) -val version: Http_types.version - - (** string returned as value of "Server:" response header *) -val server_string: string - - (** "\r\n" string *) -val crlf: string - - (** {2 daemon default values} *) - -val default_addr: string (** default listen address *) -val default_port: int (** default listen port *) -val default_timeout: int (** default callbacks timeout *) -val default_mode: daemon_mode (** default request handling mode *) - diff --git a/helm/DEVEL/ocaml-http/http_daemon.ml b/helm/DEVEL/ocaml-http/http_daemon.ml deleted file mode 100644 index 9e0507dd2..000000000 --- a/helm/DEVEL/ocaml-http/http_daemon.ml +++ /dev/null @@ -1,472 +0,0 @@ - -(* - OCaml HTTP - do it yourself (fully OCaml) HTTP daemon - - Copyright (C) <2002> Stefano Zacchiroli - - 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 -*) - -open Printf;; - -open Http_common;; -open Http_types;; -open Http_constants;; -open Http_parser;; - - (** send raw data on outchan, flushing it afterwards *) -let send_raw ~data outchan = - output_string outchan data; - flush outchan - -let send_CRLF = send_raw ~data:crlf - -let send_header ~header ~value = - Http_parser_sanity.heal_header (header, value); - send_raw ~data:(header ^ ": " ^ value ^ crlf) - -let send_headers ~headers outchan = - List.iter (fun (header, value) -> send_header ~header ~value outchan) headers - - (** internal: parse a code argument from a function which have two optional - arguments "code" and "status" *) -let get_code_argument func_name = - fun ~code ~status -> - (match code, status with - | Some c, None -> c - | None, Some s -> code_of_status s - | Some _, Some _ -> (* TODO use some static type checking *) - failwith (func_name ^ " you must give 'code' or 'status', not both") - | None, None -> (* TODO use some static type checking *) - failwith (func_name ^ " you must give 'code' or 'status', not none")) - - (** internal: low level for send_status_line *) -let send_status_line' ~version ~code = - let status_line = - String.concat - " " - [ string_of_version version; - string_of_int code; - Http_misc.reason_phrase_of_code code ] - in - send_raw ~data:(status_line ^ crlf) - -let send_status_line ?(version = http_version) ?code ?status outchan = - send_status_line' - ~version - ~code:(get_code_argument "Daemon.send_status_line" ~code ~status) - outchan - - (* FIXME duplication of code between this and response#addBasicHeaders *) -let send_basic_headers ?(version = http_version) ?code ?status outchan = - send_status_line' - ~version ~code:(get_code_argument "Daemon.send_basic_headers" ~code ~status) - outchan; - send_headers - ~headers:["Date", Http_misc.date_822 (); "Server", server_string] - outchan - - (** internal: given a status code and an additional body return a string - representing an HTML document that explains the meaning of given status code. - Additional data can be added to the body via 'body' argument *) -let foo_body code body = - let reason_phrase = Http_misc.reason_phrase_of_code code in - sprintf -" - -%d %s - -

    %d - %s

    %s -" - code reason_phrase code reason_phrase body - - (** internal: send a fooish body explaining in HTML form the 'reason phrase' - of an HTTP response; body, if given, will be appended to the body *) -let send_foo_body code body = send_raw ~data:(foo_body code body) - -let respond - (* Warning: keep default values in sync with Http_response.response class *) - ?(body = "") ?(headers = []) - ?(version = http_version) ?(code = 200) ?status outchan - = - let code = - match status with - | None -> code - | Some s -> code_of_status s - in - send_basic_headers ~version ~code outchan; - send_headers ~headers outchan; - send_header "Content-Length" (string_of_int (String.length body)) outchan; - send_CRLF outchan; - send_raw ~data:body outchan - - (** internal: low level for respond_redirect, respond_error, ... - This function send a status line corresponding to a given code, some basic - headers, the additional headers (if given) and an HTML page containing the - reason phrase; if body is given it will be included in the body of the HTML - page *) -let send_empty_response - func_name ?(is_valid_status = fun _ -> true) ?(headers = []) ~body () = - fun ?(version = http_version) ?code ?status outchan -> - let code = get_code_argument func_name ~code ~status in - if not (is_valid_status code) then - failwith - (sprintf "'%d' isn't a valid status code for %s" code func_name) - else begin (* status code suitable for answering *) - let headers = - [ - "Connection", "close"; - "Content-Type", "text/html; charset=iso-8859-1" - ] @ headers - in - let body = (foo_body code body) ^ body in - respond ~version ~code ~headers ~body outchan -(* - (* OLD VERSION, now use 'respond' function *) - send_basic_headers ~version ~code outchan; - send_header ~header:"Connection" ~value:"close" outchan; - send_header - ~header:"Content-Type" - ~value:"text/html; charset=iso-8859-1" - outchan; - send_headers ~headers outchan; - send_CRLF outchan; - send_foo_body ~code ~body outchan -*) - end - -let respond_redirect - ~location ?(body = "") ?(version = http_version) ?(code = 301) ?status outchan - = - let code = - match status with - | None -> code - | Some (s: Http_types.redirection_status) -> code_of_status s - in - send_empty_response - "Daemon.respond_redirect" ~is_valid_status:is_redirection - ~headers:["Location", location] ~body () - ~version ~code outchan - -let respond_error - ?(body = "") ?(version = http_version) ?(code = 400) ?status outchan = - let code = - match status with - | None -> code - | Some s -> code_of_status s - in - send_empty_response - "Daemon.respond_error" ~is_valid_status:is_error ~body () - ~version ~code outchan - -let respond_not_found ~url ?(version = http_version) outchan = - send_empty_response - "Daemon.respond_not_found" ~body:"" () ~version ~code:404 outchan - -let respond_forbidden ~url ?(version = http_version) outchan = - send_empty_response - "Daemon.respond_permission_denied" ~body:"" () ~version ~code:403 outchan - -(* let send_file ?name ?file outchan = *) -let send_file ~src outchan = - let buflen = 1024 in - let buf = String.make buflen ' ' in -(* - let (file, cleanup) = - (match (name, file) with - | Some n, None -> (* if we open the file, we close it before returning *) - let f = open_in n in - f, (fun () -> close_in f) - | None, Some f -> (f, (fun () -> ())) - | _ -> (* TODO use some static type checking *) - failwith "Daemon.send_file: either name or file must be given") - in -*) - let (file, cleanup) = - match src with - | FileSrc fname -> (* if we open the file, we close it before returning *) - let f = open_in fname in - f, (fun () -> close_in f) - | InChanSrc inchan -> inchan, ignore - in - try - while true do - let bytes = input file buf 0 buflen in - if bytes = 0 then - raise End_of_file - else - output outchan buf 0 bytes - done; - assert false - with End_of_file -> - begin - flush outchan; - cleanup () - end - - (* TODO interface is too ugly to advertise this function in .mli *) - (** create a minimal HTML directory listing of a given directory and send it - over an out_channel, directory is passed as a dir_handle; name is the - directory name, used for pretty printing purposes; path is the opened dir - path, used to test its contents with stat *) -let send_dir_listing ~dir ~name ~path outchan = - fprintf outchan "\n%s\n\n" name; - let (dirs, files) = - List.partition (fun e -> Http_misc.is_directory (path ^ e)) (Http_misc.ls dir) - in - List.iter - (fun d -> fprintf outchan "
    %s/
    \n" d d) - (List.sort compare dirs); - List.iter - (fun f -> fprintf outchan "%s
    \n" f f) - (List.sort compare files); - fprintf outchan "\n"; - flush outchan - -let respond_file ~fname ?(version = http_version) outchan = - (** ASSUMPTION: 'fname' doesn't begin with a "/"; it's relative to the current - document root (usually the daemon's cwd) *) - let droot = Sys.getcwd () in (* document root *) - let path = droot ^ "/" ^ fname in (* full path to the desired file *) - if not (Sys.file_exists path) then (* file not found *) - respond_not_found ~url:fname outchan - else begin - try - if Http_misc.is_directory path then begin (* file found, is a dir *) - let dir = Unix.opendir path in - send_basic_headers ~version ~code:200 outchan; - send_header "Content-Type" "text/html" outchan; - send_CRLF outchan; - send_dir_listing ~dir ~name:fname ~path outchan; - Unix.closedir dir - end else begin (* file found, is something else *) - let file = open_in fname in - send_basic_headers ~version ~code:200 outchan; - send_header - ~header:"Content-Length" - ~value:(string_of_int (Http_misc.filesize fname)) - outchan; - send_CRLF outchan; - send_file ~src:(InChanSrc file) outchan; - close_in file - end - with - | Unix.Unix_error (Unix.EACCES, s, _) when (s = fname) -> - respond_forbidden ~url:fname ~version outchan - | Sys_error s when - (Pcre.pmatch ~rex:(Pcre.regexp (fname ^ ": Permission denied")) s) -> - respond_forbidden ~url:fname ~version outchan - end - -let respond_with (res: Http_types.response) outchan = - res#serialize outchan; - flush outchan - - (** internal: this exception is raised after a malformed request has been read - by a serving process to signal main server (or itself if mode = `Single) to - skip to next request *) -exception Again;; - -let pp_parse_exc e = - sprintf "HTTP request parse error: %s" (Printexc.to_string e) - - (* given a Http_parser.parse_request like function, wrap it in a function that - do the same and additionally catch parsing exception sending HTTP error - messages back to client as needed. Returned function raises Again when it - encounter a parse error (name 'Again' is intended for future versions that - will support http keep alive signaling that a new request has to be parsed - from client) *) -let rec wrap_parse_request_w_safety parse_function inchan outchan = -(* try *) - (try - parse_function inchan - with - | (End_of_file) as e -> - debug_print (pp_parse_exc e); - respond_error ~code:400 ~body:"Unexpected End Of File" outchan; - raise Again - | (Malformed_request req) as e -> - debug_print (pp_parse_exc e); - respond_error - ~code:400 - ~body:( - "request 1st line format should be: ' '" ^ - "
    \nwhile received request 1st line was:
    \n" ^ req) - outchan; - raise Again - | (Invalid_HTTP_method meth) as e -> - debug_print (pp_parse_exc e); - respond_error - ~code:501 - ~body:("Method '" ^ meth ^ "' isn't supported (yet)") - outchan; - raise Again - | (Malformed_request_URI uri) as e -> - debug_print (pp_parse_exc e); - respond_error ~code:400 ~body:("Malformed URL: '" ^ uri ^ "'") outchan; - raise Again - | (Invalid_HTTP_version version) as e -> - debug_print (pp_parse_exc e); - respond_error - ~code:505 - ~body:("HTTP version '" ^ version ^ "' isn't supported (yet)") - outchan; - raise Again - | (Malformed_query query) as e -> - debug_print (pp_parse_exc e); - respond_error - ~code:400 ~body:(sprintf "Malformed query string '%s'" query) outchan; - raise Again - | (Malformed_query_part (binding, query)) as e -> - debug_print (pp_parse_exc e); - respond_error - ~code:400 - ~body:( - sprintf "Malformed query part '%s' in query '%s'" binding query) - outchan; - raise Again) -(* (* preliminary support for HTTP keep alive connections ... *) - with Again -> - wrap_parse_request_w_safety parse_function inchan outchan -*) - - (* wrapper around Http_parser.parse_request which catch parsing exceptions and - return error messages to client as needed - @param inchan in_channel from which read incoming requests - @param outchan out_channl on which respond with error messages if needed - *) -let safe_parse_request = wrap_parse_request_w_safety parse_request - - (* as above but for OO version (Http_parser.parse_request') *) -let safe_parse_request' = wrap_parse_request_w_safety (new Http_request.request) - -let chdir_to_document_root = function (* chdir to document root *) - | Some dir -> Sys.chdir dir - | None -> () - -let server_of_mode = function - | `Single -> Http_tcp_server.simple - | `Fork -> Http_tcp_server.fork - | `Thread -> Http_tcp_server.thread - - (* TODO what happens when a Quit exception is raised by a callback? Do other - callbacks keep on living until the end or are them all killed immediatly? - The right semantics should obviously be the first one *) - - (* TODO support also chroot to 'root', not only chdir *) - (* curried request *) -let start - ?(addr = default_addr) ?(port = default_port) - ?(timeout = Some default_timeout) ?(mode = default_mode) ?root callback - = - chdir_to_document_root root; - let sockaddr = Http_misc.build_sockaddr (addr, port) in - let daemon_callback inchan outchan = - try - let (path, parameters) = safe_parse_request inchan outchan in - callback path parameters outchan; - flush outchan - with Again -> () - in - try - (server_of_mode mode) ~sockaddr ~timeout daemon_callback - with Quit -> () - - (* OO request *) -let start' - ?(addr = default_addr) ?(port = default_port) - ?(timeout = Some default_timeout) ?(mode = default_mode) ?root callback - = - chdir_to_document_root root; - let sockaddr = Http_misc.build_sockaddr (addr, port) in - let daemon_callback inchan outchan = - try - let req = safe_parse_request' inchan outchan in - callback req outchan; - flush outchan - with Again -> () - in - try - (server_of_mode mode) ~sockaddr ~timeout daemon_callback - with Quit -> () - -module Trivial = - struct - let callback path _ outchan = - if not (Pcre.pmatch ~rex:(Pcre.regexp "^/") path) then - respond_error ~code:400 outchan - else - respond_file ~fname:(Http_misc.strip_heading_slash path) outchan - let start ?(addr = default_addr) ?(port = default_port) () = - start ~addr ~port callback - end - - (* @param inchan input channel connected to client - @param outchan output channel connected to client - @param sockaddr client socket address *) -class connection inchan outchan sockaddr = - (* ASSUMPTION: inchan and outchan are channels built on top of the same - Unix.file_descr thus closing one of them will close also the other *) - let close' o = o#close in - object (self) - - initializer Gc.finalise close' self - - val mutable closed = false - - method private assertNotClosed = - if closed then - failwith "Http_daemon.connection: connection is closed" - - method getRequest = - self#assertNotClosed; - try - Some (safe_parse_request' inchan outchan) - with Again -> None - - method respond_with res = - self#assertNotClosed; - respond_with res outchan - - method close = - self#assertNotClosed; - close_in inchan; (* this close also outchan *) - closed <- true - - end - -class daemon ?(addr = "0.0.0.0") ?(port = 80) () = - object (self) - - val suck = - Http_tcp_server.init_socket (Http_misc.build_sockaddr (addr, port)) - - method accept = - let (cli_suck, cli_sockaddr) = Unix.accept suck in (* may block *) - let (inchan, outchan) = - (Unix.in_channel_of_descr cli_suck, Unix.out_channel_of_descr cli_suck) - in - new connection inchan outchan cli_sockaddr - - method getRequest = - let conn = self#accept in - match conn#getRequest with - | None -> - conn#close; - self#getRequest - | Some req -> (req, conn) - - end - diff --git a/helm/DEVEL/ocaml-http/http_daemon.mli b/helm/DEVEL/ocaml-http/http_daemon.mli deleted file mode 100644 index 3cc176854..000000000 --- a/helm/DEVEL/ocaml-http/http_daemon.mli +++ /dev/null @@ -1,158 +0,0 @@ - -(* - OCaml HTTP - do it yourself (fully OCaml) HTTP daemon - - Copyright (C) <2002> Stefano Zacchiroli - - 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 -*) - -(** Main OCaml HTTP module. - Here you can find two set of functions: - - functions which let you start an HTTP Daemon (start* functions) - - facility functions which let you sent responses back to clients *) - - (** send a CRLF sequence on the given output channel, this is mandatory after - the last header was sent and before start sending the response body *) -val send_CRLF: out_channel -> unit - - (** send response status line, version is the http version used in response, - either code or status must be given (not both, not none) which represent the - HTTP response code, outchan is the output channel to which send status line *) -val send_status_line: - ?version: Http_types.version -> ?code: int -> ?status: Http_types.status -> - out_channel -> - unit - - (** like send_status_line but additionally will also send "Date" and "Server" - standard headers *) -val send_basic_headers: - ?version: Http_types.version -> ?code: int -> ?status: Http_types.status -> - out_channel -> - unit - - (** send an HTTP header on outchan *) -val send_header: header: string -> value: string -> out_channel -> unit - - (** as send_header, but for a list of pairs *) -val send_headers: headers:(string * string) list -> out_channel -> unit - -(* - (** send a file through an out_channel, file can be passed as an in_channel - (if 'file' is given) or as a file name (if 'name' is given) *) -val send_file: ?name:string -> ?file:in_channel -> out_channel -> unit -*) - (** send a file through an out_channel *) -val send_file: src:Http_types.file_source -> out_channel -> unit - - (** high level response function, respond on outchan sending: basic headers - (including Content-Length computed using 'body' argument), headers probided - via 'headers' argument, body given via 'body' argument. Default response - status is 200, default response HTTP version is Http_common.http_version *) -val respond: - ?body:string -> ?headers:(string * string) list -> - ?version:Http_types.version -> ?code:int -> ?status:Http_types.status -> - out_channel -> - unit - - (** send a 404 (not found) HTTP response *) -val respond_not_found: - url:string -> ?version: Http_types.version -> out_channel -> unit - - (** send a 403 (forbidden) HTTP response *) -val respond_forbidden: - url:string -> ?version: Http_types.version -> out_channel -> unit - - (** send a "redirection" class response, optional body argument contains data - that will be displayed in the body of the response, default response status is - 302 (moved permanently), only redirection status are accepted by this - function, other values will raise Failure *) -val respond_redirect: - location:string -> ?body:string -> - ?version: Http_types.version -> - ?code: int -> ?status: Http_types.redirection_status -> - out_channel -> - unit - - (** send an "error" response (i.e. 400 <= status < 600), optional body - argument as per send_redirect, default response status is 400 (bad request), - only error status are accepted by this function, other values will - raise Failure *) -val respond_error: - ?body:string -> - ?version: Http_types.version -> - ?code: int -> ?status: Http_types.error_status -> - out_channel -> - unit - - (** tipical static pages http daemon behaviour, if requested url is a file, - return it, it it is a directory return a directory listing of it *) -val respond_file: - fname:string -> ?version: Http_types.version -> out_channel -> unit - - (** respond using a prebuilt Http_types.response object *) -val respond_with: Http_types.response -> out_channel -> unit - - (** create an HTTP daemon listening on 'addr':'port' (defaults are - addr:"0.0.0.0" and port:80), callback is the user supplied function which - receive as a first parameter the path required by the the HTTP client as a - string, and a list of pair representing parameters passed - via GET. The last argument of the callback is an output_channel connected to - the HTTP client to which the user can write directly. 'timeout' parameter sets - a timeout for each request processed by the daemon, if it's set to None, - daemon waits forever for completed requests (use with care!), default is 5 - minute. 'mode' parameter has 3 possible values: `Single means that all request - are handled by the same process, `Fork means that each request is handled by a - separate process, `Thread means that each request is handled by a separate - thread, default is `Fork; 'root' (mnemonic "document root") is the directory - where the daemon chdir before starting up, default is current working - directory *) -val start: - ?addr: string -> ?port: int -> - ?timeout: int option -> ?mode: Http_types.daemon_mode -> ?root: string -> - (string -> (string * string) list -> out_channel -> unit) -> - unit - - (** identical to 'start' above but callback receive two arguments, the second - one is an out_channel as per 'start', but the secondo one is a Request.request - object *) -val start': - ?addr: string -> ?port: int -> - ?timeout: int option -> ?mode: Http_types.daemon_mode -> ?root: string -> - (Http_types.request -> out_channel -> unit) -> - unit - - (** Object oriented interface to HTTP daemons. - @param addr address on which daemon will listen for connections - @param port port which daemon will bind - see {! Http_types.daemon} *) -class daemon: - ?addr: string -> ?port: int -> - unit -> - Http_types.daemon - - (** Trivial static pages HTTP daemon. - Daemons created using this module will serve directory indexes and files found - starting from the working directory *) -module Trivial : - sig - (** callback function, exposed if you like to use it as a basis to define - a more powerful daemon *) - val callback : string -> 'a -> out_channel -> unit - - (** start the "trivial" HTTP daemon *) - val start : ?addr:string -> ?port:int -> unit -> unit - end - diff --git a/helm/DEVEL/ocaml-http/http_message.ml b/helm/DEVEL/ocaml-http/http_message.ml deleted file mode 100644 index ad3f38b50..000000000 --- a/helm/DEVEL/ocaml-http/http_message.ml +++ /dev/null @@ -1,118 +0,0 @@ - -(* - OCaml HTTP - do it yourself (fully OCaml) HTTP daemon - - Copyright (C) <2002> Stefano Zacchiroli - - 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 -*) - -open Http_common;; -open Http_constants;; -open Http_types;; -open Printf;; - - (* remove all bindings of 'name' from hashtbl 'tbl' *) -let rec hashtbl_remove_all tbl name = - if not (Hashtbl.mem tbl name) then - raise (Header_not_found name); - Hashtbl.remove tbl name; - if Hashtbl.mem tbl name then hashtbl_remove_all tbl name -;; - -class virtual message ~body ~headers ~version ~clisockaddr ~srvsockaddr = - - let ((cliaddr, cliport), (srvaddr, srvport)) = - (Http_misc.explode_sockaddr clisockaddr, - Http_misc.explode_sockaddr srvsockaddr) - in - - object (self) - - val _contentsBuf = Buffer.create 1024 - val _headers = Hashtbl.create 11 - val mutable _version: version option = version - - initializer - self#setBody body; - self#addHeaders headers - - method version = _version - method setVersion v = _version <- Some v - - method body = Buffer.contents _contentsBuf - method setBody c = - Buffer.clear _contentsBuf; - Buffer.add_string _contentsBuf c - method bodyBuf = _contentsBuf - method setBodyBuf b = - Buffer.clear _contentsBuf; - Buffer.add_buffer _contentsBuf b - method addBody s = Buffer.add_string _contentsBuf s - method addBodyBuf b = Buffer.add_buffer _contentsBuf b - - method addHeader ~name ~value = - let name = String.lowercase name in - Http_parser_sanity.heal_header (name, value); - Hashtbl.add _headers name value - method addHeaders = - List.iter (fun (name, value) -> self#addHeader ~name ~value) - method replaceHeader ~name ~value = - let name = String.lowercase name in - Http_parser_sanity.heal_header (name, value); - Hashtbl.replace _headers name value - method replaceHeaders = - List.iter (fun (name, value) -> self#replaceHeader ~name ~value) - method removeHeader ~name = - let name = String.lowercase name in - hashtbl_remove_all _headers name - method hasHeader ~name = - let name = String.lowercase name in - Hashtbl.mem _headers name - method header ~name = - if not (self#hasHeader name) then raise (Header_not_found name); - let name = String.lowercase name in - String.concat ", " (List.rev (Hashtbl.find_all _headers name)) - method headers = - List.rev - (Hashtbl.fold - (fun name _ headers -> (name, self#header ~name)::headers) - _headers - []) - - method clientSockaddr = clisockaddr - method clientAddr = cliaddr - method clientPort = cliport - - method serverSockaddr = srvsockaddr - method serverAddr = srvaddr - method serverPort = srvport - - method private virtual fstLineToString: string - method toString = - self#fstLineToString ^ (* {request,status} line *) - crlf ^ - (String.concat (* headers, crlf terminated *) - "" - (List.map (fun (h,v) -> h ^ ": " ^ v ^ crlf) self#headers)) ^ - (sprintf "Content-Length: %d" (String.length self#body)) ^ crlf ^ - crlf ^ - self#body (* body *) - method serialize outchan = - output_string outchan self#toString; - flush outchan - - end - diff --git a/helm/DEVEL/ocaml-http/http_message.mli b/helm/DEVEL/ocaml-http/http_message.mli deleted file mode 100644 index eadf50264..000000000 --- a/helm/DEVEL/ocaml-http/http_message.mli +++ /dev/null @@ -1,130 +0,0 @@ - -(* - OCaml HTTP - do it yourself (fully OCaml) HTTP daemon - - Copyright (C) <2002> Stefano Zacchiroli - - 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 -*) - -(** Object Oriented representation of HTTP messages *) - -open Http_types;; - - (** OO representation of an HTTP message - @param entity body included in the message - @param headers message headers shipped with the message *) -class virtual message: - body: string -> headers: (string * string) list -> version: version option -> - clisockaddr: Unix.sockaddr -> srvsockaddr: Unix.sockaddr -> - object - - (** @return message HTTP version, it can be None because older version - of the HTTP protocol don't require HTTP version to be told between - message source and destination *) - method version: version option - - (** set message HTTP version *) - method setVersion: version -> unit - - (** @return message body *) - method body: string - - (** set message body *) - method setBody: string -> unit - - (** @return a Buffer.t connected to message body (Warning: changing this - buffer will change message body too) *) - method bodyBuf: Buffer.t - - (** set a new Buffer.t used to keep message body *) - method setBodyBuf: Buffer.t -> unit - - (** append a string to message body *) - method addBody: string -> unit - - (** append a whole buffer to message body *) - method addBodyBuf: Buffer.t -> unit - - (** {i header name comparison are performed in a case-insensitive manner - as required by RFC2616, actually the implementation works converting all - header names in lowercase} *) - - (** add an HTTP header - @param name header's name - @param value header's value *) - method addHeader: name:string -> value:string -> unit - - (** add a list of HTTP headers - @param headers a list of pairs: header_name, header_value *) - method addHeaders: (string * string) list -> unit - - (** like addHeader but replace previous definition of the same header *) - method replaceHeader: name:string -> value:string -> unit - - (** like addHeaders but replace previous definition of headers that were - already defined *) - method replaceHeaders: (string * string) list -> unit - - (** remove _all_ occurences of an HTTP header from the message - @param name name of the header to be removed *) - method removeHeader: name:string -> unit - - (** @return true if given header exists in message, false otherwise *) - method hasHeader: name:string -> bool - - (** @return value associated to a given header - @param name name of the header to lookup - @raise Header_not_found if given header wasn't defined in message *) - method header: name:string -> string - - (** @return the full set of headers defined for this message, the value - returned is an association list from headers name to headers value, an - header may occurs more that once in the list *) - method headers: (string * string) list - - - (** @return client Unix.sockaddr *) - method clientSockaddr: Unix.sockaddr - - (** @return client address pretty printed *) - method clientAddr: string - - (** @return client port *) - method clientPort: int - - (** @return server Unix.sockaddr *) - method serverSockaddr: Unix.sockaddr - - (** @return server address pretty printed *) - method serverAddr: string - - (** @return server port *) - method serverPort: int - - - (** @return for requests first request line, for responses first - response line. - User by derived requests and responses to implement toString method *) - method private virtual fstLineToString: string - - (** @return a string representation of the message *) - method toString: string - - (** serialize the message over an output channel *) - method serialize: out_channel -> unit - - end - diff --git a/helm/DEVEL/ocaml-http/http_misc.ml b/helm/DEVEL/ocaml-http/http_misc.ml deleted file mode 100644 index 191508c49..000000000 --- a/helm/DEVEL/ocaml-http/http_misc.ml +++ /dev/null @@ -1,139 +0,0 @@ - -(* - OCaml HTTP - do it yourself (fully OCaml) HTTP daemon - - Copyright (C) <2002> Stefano Zacchiroli - - 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 -*) - -open Http_types;; - -let date_822 () = - Netdate.mk_mail_date ~zone:Netdate.localzone (Unix.time ()) - -let is_directory name = - match Unix.lstat name with - | { Unix.st_kind = Unix.S_DIR } -> true - | _ -> false - -let filesize fname = (Unix.stat fname).Unix.st_size - -let strip_trailing_slash = - let rex = Pcre.regexp "/$" in - fun s -> Pcre.replace ~rex ~templ:"" s - -let strip_heading_slash = - let rex = Pcre.regexp "^/" in - fun s -> Pcre.replace ~rex ~templ:"" s - -let ls dir = - let rec ls' entries = - try ls' ((Unix.readdir dir)::entries) with End_of_file -> entries - in - ls' [] - -let string_explode s = - let rec string_explode' acc = function - | "" -> acc - | s -> string_explode' (s.[0] :: acc) (String.sub s 1 (String.length s - 1)) - in - List.rev (string_explode' [] s) - -let string_implode = List.fold_left (fun s c -> s ^ (String.make 1 c)) "" - -let reason_phrase_of_code = function - | 100 -> "Continue" - | 101 -> "Switching protocols" - | 200 -> "OK" - | 201 -> "Created" - | 202 -> "Accepted" - | 203 -> "Non authoritative information" - | 204 -> "No content" - | 205 -> "Reset content" - | 206 -> "Partial content" - | 300 -> "Multiple choices" - | 301 -> "Moved permanently" - | 302 -> "Found" - | 303 -> "See other" - | 304 -> "Not modified" - | 305 -> "Use proxy" - | 307 -> "Temporary redirect" - | 400 -> "Bad request" - | 401 -> "Unauthorized" - | 402 -> "Payment required" - | 403 -> "Forbidden" - | 404 -> "Not found" - | 405 -> "Method not allowed" - | 406 -> "Not acceptable" - | 407 -> "Proxy authentication required" - | 408 -> "Request time out" - | 409 -> "Conflict" - | 410 -> "Gone" - | 411 -> "Length required" - | 412 -> "Precondition failed" - | 413 -> "Request entity too large" - | 414 -> "Request URI too large" - | 415 -> "Unsupported media type" - | 416 -> "Requested range not satisfiable" - | 417 -> "Expectation failed" - | 500 -> "Internal server error" - | 501 -> "Not implemented" - | 502 -> "Bad gateway" - | 503 -> "Service unavailable" - | 504 -> "Gateway time out" - | 505 -> "HTTP version not supported" - | invalid_code -> raise (Invalid_code invalid_code) - -let build_sockaddr (addr, port) = - Unix.ADDR_INET (Unix.inet_addr_of_string addr, port) - -let explode_sockaddr = function - | Unix.ADDR_INET (addr, port) -> (Unix.string_of_inet_addr addr, port) - | _ -> assert false (* can explode only inet address *) - -let peername_of_out_channel outchan = - Unix.getpeername (Unix.descr_of_out_channel outchan) -let peername_of_in_channel inchan = - Unix.getpeername (Unix.descr_of_in_channel inchan) -let sockname_of_out_channel outchan = - Unix.getsockname (Unix.descr_of_out_channel outchan) -let sockname_of_in_channel inchan = - Unix.getsockname (Unix.descr_of_in_channel inchan) - -let buf_of_inchan ?limit ic = - let buf = Buffer.create 10240 in - let tmp = String.make 1024 '\000' in - let rec buf_of_inchan' limit = - (match limit with - | None -> - let bytes = input ic tmp 0 1024 in - if bytes > 0 then begin - Buffer.add_substring buf tmp 0 bytes; - buf_of_inchan' None - end - | Some lim -> (* TODO what about using a single really_input call? *) - let bytes = input ic tmp 0 (min lim 1024) in - if bytes > 0 then begin - Buffer.add_substring buf tmp 0 bytes; - buf_of_inchan' (Some (lim - bytes)) - end) - in - (try buf_of_inchan' limit with End_of_file -> ()); - buf - -let list_assoc_all key pairs = - snd (List.split (List.filter (fun (k, v) -> k = key) pairs)) - diff --git a/helm/DEVEL/ocaml-http/http_misc.mli b/helm/DEVEL/ocaml-http/http_misc.mli deleted file mode 100644 index d19535e94..000000000 --- a/helm/DEVEL/ocaml-http/http_misc.mli +++ /dev/null @@ -1,85 +0,0 @@ - -(* - OCaml HTTP - do it yourself (fully OCaml) HTTP daemon - - Copyright (C) <2002> Stefano Zacchiroli - - 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 -*) - -(** Helpers and other not better classified functions which should not be -exposed in the final API *) - - (** @return the current date compliant to RFC 1123, which updates RFC 822 - zone info are retrieved from UTC *) -val date_822: unit -> string - - (** @return true if 'name' is a directory on the file system, false otherwise - *) -val is_directory: string -> bool - - (** @return the filesize of fname *) -val filesize: string -> int - - (** strip trailing '/', if any, from a string and @return the new string *) -val strip_trailing_slash: string -> string - - (** strip heading '/', if any, from a string and @return the new string *) -val strip_heading_slash: string -> string - - (** given a dir handle @return a list of entries contained *) -val ls: Unix.dir_handle -> string list - - (** explode a string in a char list *) -val string_explode: string -> char list - - (** implode a char list in a string *) -val string_implode: char list -> string - - (** given an HTTP response code return the corresponding reason phrase *) -val reason_phrase_of_code: int -> string - - (** build a Unix.sockaddr inet address from a string representation of an IP - address and a port number *) -val build_sockaddr: string * int -> Unix.sockaddr - - (** explode an _inet_ Unix.sockaddr address in a string representation of an - IP address and a port number *) -val explode_sockaddr: Unix.sockaddr -> string * int - - (** given an out_channel build on top of a socket, return peername related to - that socket *) -val peername_of_out_channel: out_channel -> Unix.sockaddr - - (** as above but works on in_channels *) -val peername_of_in_channel: in_channel -> Unix.sockaddr - - (** given an out_channel build on top of a socket, return sockname related to - that socket *) -val sockname_of_out_channel: out_channel -> Unix.sockaddr - - (** as above but works on in_channels *) -val sockname_of_in_channel: in_channel -> Unix.sockaddr - - (* TODO replace with Buffer.add_channel which does almost the same :-((( *) - (** reads from an input channel till it End_of_file and returns what has been - read; if limit is given returned buffer will contains at most first 'limit' - bytes read from input channel *) -val buf_of_inchan: ?limit: int -> in_channel -> Buffer.t - - (** like List.assoc but return all bindings of a given key instead of the - leftmost one only *) -val list_assoc_all: 'a -> ('a * 'b) list -> 'b list - diff --git a/helm/DEVEL/ocaml-http/http_parser.ml b/helm/DEVEL/ocaml-http/http_parser.ml deleted file mode 100644 index 7ab21be7f..000000000 --- a/helm/DEVEL/ocaml-http/http_parser.ml +++ /dev/null @@ -1,147 +0,0 @@ - -(* - OCaml HTTP - do it yourself (fully OCaml) HTTP daemon - - Copyright (C) <2002> Stefano Zacchiroli - - 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 -*) - -open Printf;; - -open Http_common;; -open Http_types;; -open Http_constants;; - -let (bindings_sep, binding_sep, pieces_sep, header_sep) = - (Pcre.regexp "&", Pcre.regexp "=", Pcre.regexp " ", Pcre.regexp ":") -let header_RE = Pcre.regexp "([^:]*):(.*)" - -let url_decode url = Netencoding.Url.decode ~plus:true url - -let split_query_params query = - let bindings = Pcre.split ~rex:bindings_sep query in - match bindings with - | [] -> raise (Malformed_query query) - | bindings -> - List.map - (fun binding -> - match Pcre.split ~rex:binding_sep binding with - | [ ""; b ] -> (* '=b' *) - raise (Malformed_query_part (binding, query)) - | [ a; b ] -> (* 'a=b' *) (url_decode a, url_decode b) - | [ a ] -> (* 'a=' || 'a' *) (url_decode a, "") - | _ -> raise (Malformed_query_part (binding, query))) - bindings - - (** internal, used by generic_input_line *) -exception Line_completed;; - - (** given an input channel and a separator - @return a line read from it (like Pervasives.input_line) - line is returned only after reading a separator string; separator string isn't - included in the returned value - TODO what about efficiency?, input is performed char-by-char - *) -let generic_input_line ~sep ~ic = - let sep_len = String.length sep in - if sep_len < 1 then - failwith ("Separator '" ^ sep ^ "' is too short!") - else (* valid separator *) - let line = ref "" in - let sep_pointer = ref 0 in - try - while true do - if !sep_pointer >= String.length sep then (* line completed *) - raise Line_completed - else begin (* incomplete line: need to read more *) - let ch = input_char ic in - if ch = String.get sep !sep_pointer then (* next piece of sep *) - incr sep_pointer - else begin (* useful char *) - for i = 0 to !sep_pointer - 1 do - line := !line ^ (String.make 1 (String.get sep i)) - done; - sep_pointer := 0; - line := !line ^ (String.make 1 ch) - end - end - done; - assert false (* unreacheable statement *) - with Line_completed -> !line - -let patch_empty_path = function "" -> "/" | s -> s -let debug_dump_request path params = - debug_print - (sprintf - "recevied request; path: %s; params: %s" - path - (String.concat ", " (List.map (fun (n, v) -> n ^ "=" ^ v) params))) - -let parse_request_fst_line ic = - let request_line = generic_input_line ~sep:crlf ~ic in - debug_print (sprintf "HTTP request line (not yet parsed): %s" request_line); - try - (match Pcre.split ~rex:pieces_sep request_line with - | [ meth_raw; uri_raw ] -> (* ancient HTTP request line *) - (method_of_string meth_raw, (* method *) - Http_parser_sanity.url_of_string uri_raw, (* uri *) - None) (* no version given *) - | [ meth_raw; uri_raw; http_version_raw ] -> (* HTTP 1.{0,1} *) - (method_of_string meth_raw, (* method *) - Http_parser_sanity.url_of_string uri_raw, (* uri *) - Some (version_of_string http_version_raw)) (* version *) - | _ -> raise (Malformed_request request_line)) - with Malformed_URL url -> raise (Malformed_request_URI url) - -let parse_path uri = patch_empty_path (String.concat "/" (Neturl.url_path uri)) -let parse_query_get_params uri = - try (* act on HTTP encoded URIs *) - split_query_params (Neturl.url_query ~encoded:true uri) - with Not_found -> [] - -let parse_headers ic = - (* consume also trailing "^\r\n$" line *) - let rec parse_headers' headers = - match generic_input_line ~sep:crlf ~ic with - | "" -> List.rev headers - | line -> - (let subs = - try - Pcre.extract ~rex:header_RE line - with Not_found -> raise (Invalid_header line) - in - let header = - try - subs.(1) - with Invalid_argument "Array.get" -> raise (Invalid_header line) - in - let value = - try - Http_parser_sanity.normalize_header_value subs.(2) - with Invalid_argument "Array.get" -> "" - in - Http_parser_sanity.heal_header (header, value); - parse_headers' ((header, value) :: headers)) - in - parse_headers' [] - -let parse_request ic = - let (meth, uri, version) = parse_request_fst_line ic in - let path = parse_path uri in - let query_get_params = parse_query_get_params uri in - debug_dump_request path query_get_params; - (path, query_get_params) - diff --git a/helm/DEVEL/ocaml-http/http_parser.mli b/helm/DEVEL/ocaml-http/http_parser.mli deleted file mode 100644 index e2f9287c8..000000000 --- a/helm/DEVEL/ocaml-http/http_parser.mli +++ /dev/null @@ -1,62 +0,0 @@ - -(* - OCaml HTTP - do it yourself (fully OCaml) HTTP daemon - - Copyright (C) <2002> Stefano Zacchiroli - - 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 -*) - -(** HTTP messages parsing *) - -open Http_types;; - - (** given an HTTP like query string (e.g. "name1=value1&name2=value2&...") - @return a list of pairs [("name1", "value1"); ("name2", "value2")] - @raise Malformed_query if the string isn't a valid query string - @raise Malformed_query_part if some piece of the query isn't valid - *) -val split_query_params: string -> (string * string) list - - (** parse 1st line of an HTTP request - @param inchan input channel from which parse request - @return a triple meth * url * version, meth is the HTTP method invoked, url is - the requested url, version is the HTTP version specified or None if no version - was specified - @raise Malformed_request if request 1st linst isn't well formed - @raise Malformed_request_URI if requested URI isn't well formed *) -val parse_request_fst_line: in_channel -> meth * Neturl.url * version option - - (** parse HTTP GET parameters from an URL; paramater which were passed with no - value (like 'x' in "/foo.cgi?a=10&x=&c=9") are returned associated with the - empty ("") string. - @return a list of pairs param_name * param_value *) -val parse_query_get_params: Neturl.url -> (string * string) list - - (** parse the base path (removing query string, fragment, ....) from an URL *) -val parse_path: Neturl.url -> string - - (** parse HTTP headers. Consumes also trailing CRLF at the end of header list - @param inchan input channel from which parse headers - @return a list of pairs header_name * header_value - @raise Invalid_header if a not well formed header is encountered *) -val parse_headers: in_channel -> (string * string) list - - (** given an input channel, reads from it a GET HTTP request and - @return a pair where path is a string representing the - requested path and query_params is a list of pairs (the GET - parameters) *) -val parse_request: in_channel -> string * (string * string) list - diff --git a/helm/DEVEL/ocaml-http/http_parser_sanity.ml b/helm/DEVEL/ocaml-http/http_parser_sanity.ml deleted file mode 100644 index 8e6ef7d54..000000000 --- a/helm/DEVEL/ocaml-http/http_parser_sanity.ml +++ /dev/null @@ -1,112 +0,0 @@ - -(* - OCaml HTTP - do it yourself (fully OCaml) HTTP daemon - - Copyright (C) <2002> Stefano Zacchiroli - - 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 -*) - -open Neturl;; -open Printf;; - -open Http_types;; -open Http_constants;; - -(* -type url_syntax_option = - Url_part_not_recognized - | Url_part_allowed - | Url_part_required - -* (1) scheme://user:password@host:port/path;params?query#fragment -*) - -let request_uri_syntax = { - url_enable_scheme = Url_part_not_recognized; - url_enable_user = Url_part_not_recognized; - url_enable_password = Url_part_not_recognized; - url_enable_host = Url_part_not_recognized; - url_enable_port = Url_part_not_recognized; - url_enable_path = Url_part_required; - url_enable_param = Url_part_not_recognized; - url_enable_query = Url_part_allowed; - url_enable_fragment = Url_part_not_recognized; - url_enable_other = Url_part_not_recognized; - url_accepts_8bits = false; - url_is_valid = (fun _ -> true); -} - - (* convention: - foo_RE_raw is the uncompiled regexp matching foo - foo_RE is the compiled regexp matching foo - is_foo is the predicate over string matching foo - *) - -let separators_RE_raw = "()<>@,;:\\\\\"/\\[\\]?={} \t" -let ctls_RE_raw = "\\x00-\\x1F\\x7F" -let token_RE_raw = "[^" ^ separators_RE_raw ^ ctls_RE_raw ^ "]+" -let lws_RE_raw = "(\r\n)?[ \t]" -let quoted_string_RE_raw = "\"(([^\"])|(\\\\\"))*\"" -let text_RE_raw = "(([^" ^ ctls_RE_raw ^ "])|(" ^ lws_RE_raw ^ "))+" -let field_content_RE_raw = - sprintf - "^(((%s)|(%s)|(%s))|(%s))*$" - token_RE_raw - separators_RE_raw - quoted_string_RE_raw - text_RE_raw -(* - (* following RFC 2616 specifications *) -let field_value_RE_raw = "((" ^ field_content_RE_raw ^ ")|(" ^ lws_RE_raw^ "))*" -*) - (* smarter implementation: TEXT production is included in the regexp below *) -let field_value_RE_raw = - sprintf - "^((%s)|(%s)|(%s)|(%s))*$" - token_RE_raw - separators_RE_raw - quoted_string_RE_raw - lws_RE_raw - -let token_RE = Pcre.regexp ("^" ^ token_RE_raw ^ "$") -let field_value_RE = Pcre.regexp ("^" ^ field_value_RE_raw ^ "$") -let heading_lws_RE = Pcre.regexp (sprintf "^%s*" lws_RE_raw) -let trailing_lws_RE = Pcre.regexp (sprintf "%s*$" lws_RE_raw) - -let is_token s = Pcre.pmatch ~rex:token_RE s -let is_field_name = is_token -let is_field_value s = Pcre.pmatch ~rex:field_value_RE s - -let heal_header_name s = - if not (is_field_name s) then raise (Invalid_header_name s) else () - -let heal_header_value s = - if not (is_field_value s) then raise (Invalid_header_value s) else () - -let normalize_header_value s = - Pcre.replace ~rex:trailing_lws_RE - (Pcre.replace ~rex:heading_lws_RE s) - -let heal_header (name, value) = - heal_header_name name; - heal_header_value name - -let url_of_string s = - try - url_of_string request_uri_syntax s - with Neturl.Malformed_URL -> raise (Malformed_URL s) -let string_of_url = Neturl.string_of_url - diff --git a/helm/DEVEL/ocaml-http/http_parser_sanity.mli b/helm/DEVEL/ocaml-http/http_parser_sanity.mli deleted file mode 100644 index 2603d7da9..000000000 --- a/helm/DEVEL/ocaml-http/http_parser_sanity.mli +++ /dev/null @@ -1,46 +0,0 @@ - -(* - OCaml HTTP - do it yourself (fully OCaml) HTTP daemon - - Copyright (C) <2002> Stefano Zacchiroli - - 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 -*) - -(** Sanity test functions related to HTTP message parsing *) - - (** @param name an HTTP header name - @raise Invalid_header_name if name isn't a valid HTTP header name *) -val heal_header_name: string -> unit - - (** @param value an HTTP header value - @raise Invalid_header_value if value isn't a valid HTTP header value *) -val heal_header_value: string -> unit - - (** @param header a pair header_name * header_value - @raise Invalid_header_name if name isn't a valid HTTP header name - @raise Invalid_header_value if value isn't a valid HTTP header value *) -val heal_header: string * string -> unit - - (** remove heading and/or trailing LWS sequences as per RFC2616 *) -val normalize_header_value: string -> string - - (** parse an URL from a string. - @raise Malformed_URL if an invalid URL is encountered *) -val url_of_string: string -> Neturl.url - - (** pretty print an URL *) -val string_of_url: Neturl.url -> string - diff --git a/helm/DEVEL/ocaml-http/http_request.ml b/helm/DEVEL/ocaml-http/http_request.ml deleted file mode 100644 index 65cba9710..000000000 --- a/helm/DEVEL/ocaml-http/http_request.ml +++ /dev/null @@ -1,128 +0,0 @@ - -(* - OCaml HTTP - do it yourself (fully OCaml) HTTP daemon - - Copyright (C) <2002> Stefano Zacchiroli - - 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 -*) - -open Printf;; - -open Http_common;; -open Http_types;; - -let debug_dump_request path params = - debug_print ("request path = " ^ path); - debug_print ( - sprintf"request params = %s" - (String.concat ";" - (List.map (fun (h,v) -> String.concat "=" [h;v]) params))) - -exception Fallback;; (* used internally by request class *) - -class request ic = - let (meth, uri, version) = Http_parser.parse_request_fst_line ic in - let uri_str = Neturl.string_of_url uri in - let path = Http_parser.parse_path uri in - let query_get_params = Http_parser.parse_query_get_params uri in - let (headers, body) = - (match version with - | None -> [], "" (* No version given, use request's 1st line only *) - | Some version -> (* Version specified, parse also headers and body *) - let headers = - List.map (* lowercase header names to ease lookups before having a - request object *) - (fun (h,v) -> (String.lowercase h, v)) - (Http_parser.parse_headers ic) (* trailing \r\n consumed! *) - in - let body = - (* TODO fallback on size defined in Transfer-Encoding if - Content-Length isn't defined *) - if meth = `POST then - Buffer.contents - (try (* read only Content-Length bytes *) - let limit_raw = - (try - List.assoc "content-length" headers - with Not_found -> raise Fallback) - in - let limit = - (try (* TODO supports only a maximum content-length of 1Gb *) - int_of_string limit_raw - with Failure "int_of_string" -> - raise (Invalid_header ("content-length: " ^ limit_raw))) - in - Http_misc.buf_of_inchan ~limit ic - with Fallback -> Http_misc.buf_of_inchan ic) (* read until EOF *) - else (* TODO empty body for methods other than POST, is ok? *) - "" - in - (headers, body)) - in - let query_post_params = - match meth with - | `POST -> - let ct = try List.assoc "content-type" headers with Not_found -> "" in - if ct = "application/x-www-form-urlencoded" then - Http_parser.split_query_params body - else [] - | _ -> [] - in - let params = query_post_params @ query_get_params in (* prefers POST params *) - let _ = debug_dump_request path params in - let (clisockaddr, srvsockaddr) = - (Http_misc.peername_of_in_channel ic, Http_misc.sockname_of_in_channel ic) - in - - object (self) - - inherit - Http_message.message ~body ~headers ~version ~clisockaddr ~srvsockaddr - - val params_tbl = - let tbl = Hashtbl.create (List.length params) in - List.iter (fun (n,v) -> Hashtbl.add tbl n v) params; - tbl - - method meth = meth - method uri = uri_str - method path = path - method param ?meth name = - (match (meth: meth option) with - | None -> - (try - Hashtbl.find params_tbl name - with Not_found -> raise (Param_not_found name)) - | Some `GET -> List.assoc name query_get_params - | Some `POST -> List.assoc name query_post_params) - method paramAll ?meth name = - (match (meth: meth option) with - | None -> List.rev (Hashtbl.find_all params_tbl name) - | Some `GET -> Http_misc.list_assoc_all name query_get_params - | Some `POST -> Http_misc.list_assoc_all name query_post_params) - method params = params - method params_GET = query_get_params - method params_POST = query_post_params - - method private fstLineToString = - let method_string = string_of_method self#meth in - match self#version with - | Some version -> - sprintf "%s %s %s" method_string self#uri (string_of_version version) - | None -> sprintf "%s %s" method_string self#uri - - end - diff --git a/helm/DEVEL/ocaml-http/http_request.mli b/helm/DEVEL/ocaml-http/http_request.mli deleted file mode 100644 index d85ceb278..000000000 --- a/helm/DEVEL/ocaml-http/http_request.mli +++ /dev/null @@ -1,29 +0,0 @@ - -(* - OCaml HTTP - do it yourself (fully OCaml) HTTP daemon - - Copyright (C) <2002> Stefano Zacchiroli - - 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 -*) - -(** Object Oriented representation of HTTP requests *) - -open Http_types;; - - (** OO representation of an HTTP request - @param inchan input channel from which parse an HTTP request *) -class request: in_channel -> Http_types.request - diff --git a/helm/DEVEL/ocaml-http/http_response.ml b/helm/DEVEL/ocaml-http/http_response.ml deleted file mode 100644 index 6fc321325..000000000 --- a/helm/DEVEL/ocaml-http/http_response.ml +++ /dev/null @@ -1,118 +0,0 @@ - -(* - OCaml HTTP - do it yourself (fully OCaml) HTTP daemon - - Copyright (C) <2002> Stefano Zacchiroli - - 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 -*) - -open Http_types;; -open Http_constants;; -open Http_common;; -open Http_daemon;; -open Printf;; - -let status_line_RE = Pcre.regexp "^(HTTP/\\d\\.\\d) (\\d{3}) (.*)$" - -let anyize = function - | Some addr -> addr - | None -> Unix.ADDR_INET (Unix.inet_addr_any, -1) - -class response - (* Warning: keep default values in sync with Http_daemon.respond function *) - ?(body = "") ?(headers = []) ?(version = http_version) - ?clisockaddr ?srvsockaddr (* optional because response have to be easily - buildable in callback functions *) - ?(code = 200) ?status - () - = - - (** if no address were supplied for client and/or server, use a foo address - instead *) - let (clisockaddr, srvsockaddr) = (anyize clisockaddr, anyize srvsockaddr) in - - (* "version code reason_phrase" *) - object (self) - - (* note that response objects can't be created with a None version *) - inherit - Http_message.message - ~body ~headers ~version:(Some version) ~clisockaddr ~srvsockaddr - - val mutable _code = - match status with - | None -> code - | Some (s: Http_types.status) -> code_of_status s - val mutable _reason: string option = None - - method private getRealVersion = - match self#version with - | None -> - failwith ("Http_response.fstLineToString: " ^ - "can't serialize an HTTP response with no HTTP version defined") - | Some v -> string_of_version v - - method code = _code - method setCode c = - ignore (status_of_code c); (* sanity check on c *) - _code <- c - method status = status_of_code _code - method setStatus (s: Http_types.status) = _code <- code_of_status s - method reason = - match _reason with - | None -> Http_misc.reason_phrase_of_code _code - | Some r -> r - method setReason r = _reason <- Some r - method statusLine = - String.concat " " - [self#getRealVersion; string_of_int self#code; self#reason] - method setStatusLine s = - try - let subs = Pcre.extract ~rex:status_line_RE s in - self#setVersion (version_of_string subs.(1)); - self#setCode (int_of_string subs.(2)); - self#setReason subs.(3) - with Not_found -> - raise (Invalid_status_line s) - - method isInformational = is_informational _code - method isSuccess = is_success _code - method isRedirection = is_redirection _code - method isClientError = is_client_error _code - method isServerError = is_server_error _code - method isError = is_error _code - - (* FIXME duplication of code between this and send_basic_headers *) - method addBasicHeaders = - self#addHeader ~name:"Date" ~value:(Http_misc.date_822 ()); - self#addHeader ~name:"Server" ~value:server_string - - method contentType = self#header "Content-Type" - method setContentType t = self#replaceHeader "Content-Type" t - method contentEncoding = self#header "Content-Encoding" - method setContentEncoding e = self#replaceHeader "Content-Encoding" e - method date = self#header "Date" - method setDate d = self#replaceHeader "Date" d - method expires = self#header "Expires" - method setExpires t = self#replaceHeader "Expires" t - method server = self#header "Server" - method setServer s = self#replaceHeader "Server" s - - method private fstLineToString = - sprintf "%s %d %s" self#getRealVersion self#code self#reason - - end - diff --git a/helm/DEVEL/ocaml-http/http_response.mli b/helm/DEVEL/ocaml-http/http_response.mli deleted file mode 100644 index d30f97d40..000000000 --- a/helm/DEVEL/ocaml-http/http_response.mli +++ /dev/null @@ -1,33 +0,0 @@ - -(* - OCaml HTTP - do it yourself (fully OCaml) HTTP daemon - - Copyright (C) <2002> Stefano Zacchiroli - - 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 -*) - -(** Object Oriented representation of HTTP responses *) - -open Http_types;; - - (** OO representation of an HTTP response. *) -class response: - ?body:string -> ?headers:(string * string) list -> ?version: version -> - ?clisockaddr: Unix.sockaddr -> ?srvsockaddr: Unix.sockaddr -> - ?code:int -> ?status:Http_types.status -> - unit -> - Http_types.response - diff --git a/helm/DEVEL/ocaml-http/http_tcp_server.ml b/helm/DEVEL/ocaml-http/http_tcp_server.ml deleted file mode 100644 index 23fbc66de..000000000 --- a/helm/DEVEL/ocaml-http/http_tcp_server.ml +++ /dev/null @@ -1,169 +0,0 @@ - -(* - OCaml HTTP - do it yourself (fully OCaml) HTTP daemon - - Copyright (C) <2002> Stefano Zacchiroli - - 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 -*) - - - (** raised when a client timeouts *) -exception Timeout;; - -let backlog = 10;; - - (** if timeout is given (Some _) @return a new callback which establish - timeout_callback as callback for signal Sys.sigalrm and register an alarm - (expiring after timeout seconds) before invoking the real callback given. If - timeout is None, callback is returned unchanged. *) -let wrap_callback_w_timeout ~callback ~timeout ~timeout_callback = - match timeout with - | None -> callback - | Some timeout -> (* wrap callback setting an handler for ALRM signal and an - alarm that ring after timeout seconds *) - (fun inchan outchan -> - ignore (Sys.signal Sys.sigalrm (Sys.Signal_handle timeout_callback)); - ignore (Unix.alarm timeout); - callback inchan outchan) - - (* try to close nicely a socket *) -let shutdown_socket suck = - try - Unix.shutdown suck Unix.SHUTDOWN_ALL - with Unix.Unix_error(_, "shutdown", "") -> () - -let nice_unix_accept suck = - try - Unix.accept suck - with e -> (* clean up socket before exit *) - shutdown_socket suck; - raise e - -let init_socket sockaddr = - let suck = Unix.socket Unix.PF_INET Unix.SOCK_STREAM 0 in - (* shutdown socket on SIGTERM *) - ignore (Sys.signal Sys.sigterm - (Sys.Signal_handle - (fun _ -> shutdown_socket suck; exit 17))); - Unix.setsockopt suck Unix.SO_REUSEADDR true; - Unix.bind suck sockaddr; - Unix.listen suck backlog; - suck - -let init_callback callback timeout = - let timeout_callback signo = - if signo = Sys.sigalrm then - raise Timeout - in - wrap_callback_w_timeout ~callback ~timeout ~timeout_callback - - (** DEPRECATED and no longer visibile in .mli interface, this server has been - replaced by 'fork'! - tcp_server which use Unix.establish_server which in turn forks a child for - each request *) -let ocaml_builtin ~sockaddr ~timeout callback = - let timeout_callback signo = - if signo = Sys.sigalrm then - exit 2 - in - Unix.establish_server - (wrap_callback_w_timeout ~callback ~timeout ~timeout_callback) - sockaddr - - (** like Unix.establish_server, but shutdown sockets when receiving SIGTERM - and before exiting for an uncaught exception *) -let my_establish_server server_fun sockaddr = - let suck = init_socket sockaddr in - while true do - let (s, caller) = nice_unix_accept suck in - (* "double fork" trick, see Unix.establish_server implementation *) - match Unix.fork() with - | 0 -> (* parent *) - (try - if Unix.fork () <> 0 then - exit 0; (* The son exits, the grandson works *) - let inchan = Unix.in_channel_of_descr s in - let outchan = Unix.out_channel_of_descr s in - server_fun inchan outchan; - close_out outchan; - (* The file descriptor was already closed by close_out. close_in - inchan; *) - exit 0 - with e -> - shutdown_socket suck; (* clean up socket before exit *) - raise e) - | child when (child > 0) -> (* child *) - Unix.close s; - ignore (Unix.waitpid [] child) (* Reclaim the son *) - | _ (* < 0 *) -> - failwith "Can't fork" - done - -let fork ~sockaddr ~timeout callback = - let timeout_callback signo = - if signo = Sys.sigalrm then - exit 2 - in - my_establish_server - (wrap_callback_w_timeout ~callback ~timeout ~timeout_callback) - sockaddr - - - (** tcp_server which doesn't fork, requests are server sequentially and in the - same address space of the calling process *) -let simple ~sockaddr ~timeout callback = - let suck = init_socket sockaddr in - let callback = init_callback callback timeout in - try - while true do - let (client, _) = Unix.accept suck in - (* client is now connected *) - let (inchan, outchan) = - (Unix.in_channel_of_descr client, Unix.out_channel_of_descr client) - in - (try - callback inchan outchan; - ignore (Unix.alarm 0) (* reset alarm *) - with Timeout -> ()); - close_out outchan (* this close also inchan: socket is the same *) - done - with e -> (* clean up socket before exit *) - shutdown_socket suck; - raise e - - (** tcp_server which creates a new thread for each request to be served *) -let thread ~sockaddr ~timeout callback = - let suck = init_socket sockaddr in - let callback = init_callback callback timeout in - let callback (i, o) = - try - callback i o; - close_out o - with - | Timeout -> close_out o - | e -> - close_out o; - raise e - in - while true do - let (client, _) = nice_unix_accept suck in - (* client is now connected *) - let (inchan, outchan) = - (Unix.in_channel_of_descr client, Unix.out_channel_of_descr client) - in - Http_threaded_tcp_server.serve callback (inchan, outchan) - done - diff --git a/helm/DEVEL/ocaml-http/http_tcp_server.mli b/helm/DEVEL/ocaml-http/http_tcp_server.mli deleted file mode 100644 index d35ad2cf7..000000000 --- a/helm/DEVEL/ocaml-http/http_tcp_server.mli +++ /dev/null @@ -1,39 +0,0 @@ - -(* - OCaml HTTP - do it yourself (fully OCaml) HTTP daemon - - Copyright (C) <2002> Stefano Zacchiroli - - 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 -*) - -(** TCP servers used as low-levels for HTTP daemons *) - -(** {2 servers} *) - - (** single process server *) -val simple: Http_types.tcp_server - - (** multi threaded server *) -val thread: Http_types.tcp_server - - (** multi process server *) -val fork: Http_types.tcp_server - -(** {2 low level functions} *) - - (** initialize a passive socket listening on given Unix.sockaddr *) -val init_socket: Unix.sockaddr -> Unix.file_descr - diff --git a/helm/DEVEL/ocaml-http/http_threaded_tcp_server.mli b/helm/DEVEL/ocaml-http/http_threaded_tcp_server.mli deleted file mode 100644 index 813c69f43..000000000 --- a/helm/DEVEL/ocaml-http/http_threaded_tcp_server.mli +++ /dev/null @@ -1,26 +0,0 @@ - -(* - OCaml HTTP - do it yourself (fully OCaml) HTTP daemon - - Copyright (C) <2002> Stefano Zacchiroli - - 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 -*) - -(** Multithreaded part of Http_tcp_server *) - - (** serve an HTTP request for a multi threaded TCP server *) -val serve : ('a -> 'b) -> 'a -> unit - diff --git a/helm/DEVEL/ocaml-http/http_types.ml b/helm/DEVEL/ocaml-http/http_types.ml deleted file mode 100644 index 40015e683..000000000 --- a/helm/DEVEL/ocaml-http/http_types.ml +++ /dev/null @@ -1,385 +0,0 @@ - -(* - OCaml HTTP - do it yourself (fully OCaml) HTTP daemon - - Copyright (C) <2002> Stefano Zacchiroli - - 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 -*) - -(** Type definitions *) - - (** HTTP version, actually only 1.0 and 1.1 are supported. Note that - 'supported' here means only 'accepted inside a HTTP request line', no - different behaviours are actually implemented depending on HTTP version *) -type version = - [ `HTTP_1_0 - | `HTTP_1_1 - ] - - (** HTTP method, actually only GET and POST methods are supported *) -type meth = - [ `GET - | `POST - ] - - (** Daemon behaviour wrt request handling. `Single mode use a single process - to handle all requests, no request is served until a previous one has been - fully served. `Fork mode fork a new process for each request, the new process - will execute the callback function and then exit. `Thread mode create a new - thread for each request, the new thread will execute the callback function and - then exit, threads can communicate using standard OCaml Thread library. *) -type daemon_mode = [ `Single | `Fork | `Thread ] - - (** A TCP server is a function taking an address on which bind and listen for - connections, an optional timeout after which abort client connections and a - callback function which in turn takes an input and an output channel as - arguments. After receiving this argument a TCP server sits and waits for - connection, on each connection it apply the callback function to channels - connected to client. *) -type tcp_server = - sockaddr:Unix.sockaddr -> timeout:int option -> - (in_channel -> out_channel -> unit) -> - unit - - (** informational HTTP status, see RFC2616 *) -type informational_substatus = - [ `Continue - | `Switching_protocols - ] - - (** success HTTP status, see RFC2616 *) -type success_substatus = - [ `OK - | `Created - | `Accepted - | `Non_authoritative_information - | `No_content - | `Reset_content - | `Partial_content - ] - - (** redirection HTTP status, see RFC2616 *) -type redirection_substatus = - [ `Multiple_choices - | `Moved_permanently - | `Found - | `See_other - | `Not_modified - | `Use_proxy - | `Temporary_redirect - ] - - (** client error HTTP status, see RFC2616 *) -type client_error_substatus = - [ `Bad_request - | `Unauthorized - | `Payment_required - | `Forbidden - | `Not_found - | `Method_not_allowed - | `Not_acceptable - | `Proxy_authentication_required - | `Request_time_out - | `Conflict - | `Gone - | `Length_required - | `Precondition_failed - | `Request_entity_too_large - | `Request_URI_too_large - | `Unsupported_media_type - | `Requested_range_not_satisfiable - | `Expectation_failed - ] - - (** server error HTTP status, see RFC2616 *) -type server_error_substatus = - [ `Internal_server_error - | `Not_implemented - | `Bad_gateway - | `Service_unavailable - | `Gateway_time_out - | `HTTP_version_not_supported - ] - -type informational_status = [ `Informational of informational_substatus ] -type success_status = [ `Success of success_substatus ] -type redirection_status = [ `Redirection of redirection_substatus ] -type client_error_status = [ `Client_error of client_error_substatus ] -type server_error_status = [ `Server_error of server_error_substatus ] - -type error_status = - [ client_error_status - | server_error_status - ] - - (** HTTP status *) -type status = - [ informational_status - | success_status - | redirection_status - | client_error_status - | server_error_status - ] - - (** File sources *) -type file_source = - | FileSrc of string (** filename *) - | InChanSrc of in_channel (** input channel *) - - (** {2 Exceptions} *) - - (** invalid header encountered *) -exception Invalid_header of string - - (** invalid header name encountered *) -exception Invalid_header_name of string - - (** invalid header value encountered *) -exception Invalid_header_value of string - - (** unsupported or invalid HTTP version encountered *) -exception Invalid_HTTP_version of string - - (** unsupported or invalid HTTP method encountered *) -exception Invalid_HTTP_method of string - - (** invalid HTTP status code integer representation encountered *) -exception Invalid_code of int - - (** invalid URL encountered *) -exception Malformed_URL of string - - (** invalid query string encountered *) -exception Malformed_query of string - - (** invalid query string part encountered, arguments are parameter name and - parameter value *) -exception Malformed_query_part of string * string - - (** invalid request URI encountered *) -exception Malformed_request_URI of string - - (** malformed request received *) -exception Malformed_request of string - - (** a parameter you were looking for was not found *) -exception Param_not_found of string - - (** invalid HTTP status line encountered *) -exception Invalid_status_line of string - - (** an header you were looking for was not found *) -exception Header_not_found of string - - (** raisable by callback functions to make main daemon quit, this is the only - 'clean' way to make start functions return *) -exception Quit - - (** {2 OO representation of HTTP messages} *) - - (** HTTP generic messages. See {! Http_message.message} *) -class type message = object - - method version: version option - method setVersion: version -> unit - - method body: string - method setBody: string -> unit - method bodyBuf: Buffer.t - method setBodyBuf: Buffer.t -> unit - method addBody: string -> unit - method addBodyBuf: Buffer.t -> unit - - method addHeader: name:string -> value:string -> unit - method addHeaders: (string * string) list -> unit - method replaceHeader: name:string -> value:string -> unit - method replaceHeaders: (string * string) list -> unit - method removeHeader: name:string -> unit - method hasHeader: name:string -> bool - method header: name:string -> string - method headers: (string * string) list - - method clientSockaddr: Unix.sockaddr - method clientAddr: string - method clientPort: int - - method serverSockaddr: Unix.sockaddr - method serverAddr: string - method serverPort: int - - method toString: string - method serialize: out_channel -> unit - - end - - (** HTTP requests *) -class type request = object - - (** an HTTP request is a flavour of HTTP message *) - inherit message - - (** @return request method *) - method meth: meth - - (** @return requested URI (including query string, fragment, ...) *) - method uri: string - - (** @return requested path *) - method path: string - - (** lookup a given parameter - @param meth if given restrict the lookup area (e.g. if meth = POST than - only parameters received via POST are searched), if not given both GET and - POST parameter are searched in an unspecified order (actually the - implementation prefers POST parameters but this is not granted, you've - been warned) - @param name name of the parameter to lookup - @return value associated to parameter name - @raise Param_not_found if parameter name was not found *) - method param: ?meth:meth -> string -> string - - (** like param above but return a list of values associated to given - parameter (a parameter could be defined indeed more than once: passed more - than once in a query string or passed both insider the url (the GET way) - and inside message body (the POST way)) *) - method paramAll: ?meth:meth -> string -> string list - - (** @return the list of all received parameters *) - method params: (string * string) list - - (** @return the list of all parameters received via GET *) - method params_GET: (string * string) list - - (** @return the list of all parameter received via POST *) - method params_POST: (string * string) list - - end - - (** HTTP responses *) -class type response = object - - inherit message - - (** @return response code *) - method code: int - - (** set response code *) - method setCode: int -> unit - - (** @return response status, see {! Http_types.status} *) - method status: status - - (** set response status *) - method setStatus: status -> unit - - (** @return reason string *) - method reason: string - - (** set reason string *) - method setReason: string -> unit - - (** @return status line *) - method statusLine: string - - (** set status line - @raise Invalid_status_line if an invalid HTTP status line was passed *) - method setStatusLine: string -> unit - - (** response is an informational one *) - method isInformational: bool - - (** response is a success one *) - method isSuccess: bool - - (** response is a redirection one *) - method isRedirection: bool - - (** response is a client error one *) - method isClientError: bool - - (** response is a server error one *) - method isServerError: bool - - (** response is either a client error or a server error response *) - method isError: bool - - (** add basic headers to response, see {! Http_daemon.send_basic_headers} - *) - method addBasicHeaders: unit - - (** facilities to access some frequently used headers *) - - (** @return Content-Type header value *) - method contentType: string - - (** set Content-Type header value *) - method setContentType: string -> unit - - (** @return Content-Encoding header value *) - method contentEncoding: string - - (** set Content-Encoding header value *) - method setContentEncoding: string -> unit - - (** @return Date header value *) - method date: string - - (** set Date header value *) - method setDate: string -> unit - - (** @return Expires header value *) - method expires: string - - (** set Expires header value *) - method setExpires: string -> unit - - (** @return Server header value *) - method server: string - - (** set Server header value *) - method setServer: string -> unit - - end - - (** {2 OO representation of other HTTP "entities"} *) - - (** an HTTP connection from a client to a server *) -class type connection = - object - (** @return next request object, may block if client hasn't submitted any - request yet, may be None if client request was ill-formed *) - method getRequest: request option - - (** respond to client sending it a response *) - method respond_with: response -> unit - - (** close connection to client. Warning: this object can't be used any - longer after this method has been called *) - method close: unit - end - - (** an HTTP daemon *) -class type daemon = - object - (** @return a connection to a client, may block if no client has connected - yet *) - method accept: connection - - (** shortcut method, blocks until a client has submit a request and - return a pair request * connection *) - method getRequest: request * connection - end - diff --git a/helm/DEVEL/ocaml-http/mt/.cvsignore b/helm/DEVEL/ocaml-http/mt/.cvsignore deleted file mode 100644 index 977cc04b5..000000000 --- a/helm/DEVEL/ocaml-http/mt/.cvsignore +++ /dev/null @@ -1,6 +0,0 @@ -*.cmi -*.cmo -*.cmx -*.cma -*.cmxa -*.mli diff --git a/helm/DEVEL/ocaml-http/mt/http_threaded_tcp_server.ml b/helm/DEVEL/ocaml-http/mt/http_threaded_tcp_server.ml deleted file mode 100644 index acdef6105..000000000 --- a/helm/DEVEL/ocaml-http/mt/http_threaded_tcp_server.ml +++ /dev/null @@ -1,23 +0,0 @@ - -(* - OCaml HTTP - do it yourself (fully OCaml) HTTP daemon - - Copyright (C) <2002> Stefano Zacchiroli - - 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 -*) - -let serve callback arg = ignore (Thread.create callback arg) - diff --git a/helm/DEVEL/ocaml-http/non_mt/.cvsignore b/helm/DEVEL/ocaml-http/non_mt/.cvsignore deleted file mode 100644 index 977cc04b5..000000000 --- a/helm/DEVEL/ocaml-http/non_mt/.cvsignore +++ /dev/null @@ -1,6 +0,0 @@ -*.cmi -*.cmo -*.cmx -*.cma -*.cmxa -*.mli diff --git a/helm/DEVEL/ocaml-http/non_mt/http_threaded_tcp_server.ml b/helm/DEVEL/ocaml-http/non_mt/http_threaded_tcp_server.ml deleted file mode 100644 index 9c92d7112..000000000 --- a/helm/DEVEL/ocaml-http/non_mt/http_threaded_tcp_server.ml +++ /dev/null @@ -1,26 +0,0 @@ - -(* - OCaml HTTP - do it yourself (fully OCaml) HTTP daemon - - Copyright (C) <2002> Stefano Zacchiroli - - 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 -*) - -let serve _ _ = - failwith - ("Threaded server not supported by the non threaded version " ^ - "of ocaml-http, please link against http_mt.cm{,x}a") - diff --git a/helm/DEVEL/ocaml-http/tophttp b/helm/DEVEL/ocaml-http/tophttp deleted file mode 100644 index 64694a213..000000000 --- a/helm/DEVEL/ocaml-http/tophttp +++ /dev/null @@ -1,5 +0,0 @@ -#use "topfind";; -#require "unix";; -#require "pcre";; -#require "netstring";; -#load "http.cma";; diff --git a/helm/DEVEL/pxp/.cvsignore b/helm/DEVEL/pxp/.cvsignore deleted file mode 100644 index c1fcbc4ae..000000000 --- a/helm/DEVEL/pxp/.cvsignore +++ /dev/null @@ -1,7 +0,0 @@ -*.cmo -*.cmx -*.cmi - -*.o -*.a - diff --git a/helm/DEVEL/pxp/findlib-0.4.tar.gz b/helm/DEVEL/pxp/findlib-0.4.tar.gz deleted file mode 100644 index a45cce573f7f78774de51a1c11e407df803c61f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 92356 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͠LwRoOLaO4=1y%5s<>#r)kW3Am9{guW4(^)T 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 diff --git a/helm/DEVEL/pxp/netstring/.cvsignore b/helm/DEVEL/pxp/netstring/.cvsignore deleted file mode 100644 index c1fcbc4ae..000000000 --- a/helm/DEVEL/pxp/netstring/.cvsignore +++ /dev/null @@ -1,7 +0,0 @@ -*.cmo -*.cmx -*.cmi - -*.o -*.a - diff --git a/helm/DEVEL/pxp/netstring/LICENSE b/helm/DEVEL/pxp/netstring/LICENSE deleted file mode 100644 index 820032ee2..000000000 --- a/helm/DEVEL/pxp/netstring/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -Copyright 1999 by Gerd Stolpmann - -The package "netstring" is copyright by Gerd Stolpmann. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of the "netstring" software (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 Gerd Stolpmann 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/helm/DEVEL/pxp/netstring/META b/helm/DEVEL/pxp/netstring/META deleted file mode 100644 index d422128ab..000000000 --- a/helm/DEVEL/pxp/netstring/META +++ /dev/null @@ -1,54 +0,0 @@ -version = "0.9.3" -requires = "str" -description = "String processing for the Internet" - -archive(byte) = - "netstring.cma netmappings_iso.cmo netmappings_other.cmo" -archive(byte,toploop) = - "netstring.cma netmappings_iso.cmo netmappings_other.cmo - netstring_top.cmo" -archive(byte,mt) = - "netstring.cma netmappings_iso.cmo netmappings_other.cmo - netstring_mt.cmo" -archive(byte,mt,toploop) = - "netstring.cma netmappings_iso.cmo netmappings_other.cmo - netstring_mt.cmo netstring_top.cmo" -archive(native) = - "netstring.cmxa netmappings_iso.cmx netmappings_other.cmx" -archive(native,mt) = - "netstring.cmxa netmappings_iso.cmx netmappings_other.cmx - netstring_mt.cmx" - -archive(byte,netstring_only_iso) = - "netstring.cma netmappings_iso.cmo" -archive(byte,toploop,netstring_only_iso) = - "netstring.cma netmappings_iso.cmo - netstring_top.cmo" -archive(byte,mt,netstring_only_iso) = - "netstring.cma netmappings_iso.cmo - netstring_mt.cmo" -archive(byte,mt,toploop,netstring_only_iso) = - "netstring.cma netmappings_iso.cmo - netstring_mt.cmo netstring_top.cmo" -archive(native,netstring_only_iso) = - "netstring.cmxa netmappings_iso.cmx" -archive(native,mt,netstring_only_iso) = - "netstring.cmxa netmappings_iso.cmx - netstring_mt.cmx" - -archive(byte,netstring_minimum) = - "netstring.cma" -archive(byte,toploop,netstring_minimum) = - "netstring.cma - netstring_top.cmo" -archive(byte,mt,netstring_minimum) = - "netstring.cma - netstring_mt.cmo" -archive(byte,mt,toploop,netstring_minimum) = - "netstring.cma - netstring_mt.cmo netstring_top.cmo" -archive(native,netstring_minimum) = - "netstring.cmxa" -archive(native,mt,netstring_minimum) = - "netstring.cmxa - netstring_mt.cmx" diff --git a/helm/DEVEL/pxp/netstring/Makefile b/helm/DEVEL/pxp/netstring/Makefile deleted file mode 100644 index 98f9ef013..000000000 --- a/helm/DEVEL/pxp/netstring/Makefile +++ /dev/null @@ -1,151 +0,0 @@ -# make all: make bytecode archive -# make opt: make native archive -# make install: install bytecode archive, and if present, native archive -# make uninstall: uninstall package -# make clean: remove intermediate files -# make distclean: remove any superflous files -# make release: cleanup, create archive, tag CVS module -# (for developers) - -#---------------------------------------------------------------------- -# specific rules for this package: - -OBJECTS = netstring_str.cmo \ - netencoding.cmo netbuffer.cmo netstream.cmo \ - mimestring.cmo cgi.cmo base64.cmo \ - nethtml_scanner.cmo nethtml.cmo \ - neturl.cmo \ - netmappings.cmo netconversion.cmo -XOBJECTS = $(OBJECTS:.cmo=.cmx) -ARCHIVE = netstring.cma -XARCHIVE = netstring.cmxa - -NAME = netstring -REQUIRES = str - -ISO_MAPPINGS = mappings/iso*.unimap -OTHER_MAPPINGS = mappings/cp*.unimap \ - mappings/adobe*.unimap \ - mappings/jis*.unimap \ - mappings/koi*.unimap \ - mappings/mac*.unimap \ - mappings/windows*.unimap - -all: $(ARCHIVE) \ - netstring_top.cmo netstring_mt.cmo \ - netmappings_iso.cmo netmappings_other.cmo - -opt: $(XARCHIVE) \ - netstring_mt.cmx \ - netmappings_iso.cmx netmappings_other.cmx - - -$(ARCHIVE): $(OBJECTS) - $(OCAMLC) -a -o $(ARCHIVE) $(OBJECTS) - -$(XARCHIVE): $(XOBJECTS) - $(OCAMLOPT) -a -o $(XARCHIVE) $(XOBJECTS) - -netmappings_iso.ml: - $(MAKE) -C tools - test ! -d mappings || tools/unimap_to_ocaml/unimap_to_ocaml \ - -o netmappings_iso.ml $(ISO_MAPPINGS) - -netmappings_other.ml: - $(MAKE) -C tools - test ! -d mappings || tools/unimap_to_ocaml/unimap_to_ocaml \ - -o netmappings_other.ml $(OTHER_MAPPINGS) - -#---------------------------------------------------------------------- -# general rules: - -OPTIONS = -OCAMLC = ocamlc $(DEBUG) $(OPTIONS) $(ROPTIONS) -OCAMLOPT = ocamlopt $(OPTIONS) $(ROPTIONS) -OCAMLLEX = ocamllex -OCAMLDEP = ocamldep $(OPTIONS) -OCAMLFIND = ocamlfind - -DEBUG = -# Invoke with: make DEBUG=-g - -depend: *.ml *.mli - $(OCAMLDEP) *.ml *.mli >depend - -depend.pkg: Makefile - $(OCAMLFIND) use -p ROPTIONS= $(REQUIRES) >depend.pkg - -.PHONY: install -install: all - { test ! -f $(XARCHIVE) || extra="*.cmxa *.a netstring_mt.cmx netmappings_iso.cmx netmappings_other.cmx netstring_mt.o netmappings_iso.o netmappings_other.o"; }; \ - $(OCAMLFIND) install $(NAME) *.mli *.cmi *.cma netstring_top.cmo netstring_mt.cmo netmappings_iso.cmo netmappings_other.cmo META $$extra - -.PHONY: install-cgi -install-cgi: - $(OCAMLFIND) install cgi compat-cgi/META - - -.PHONY: install-base64 -install-base64: - $(OCAMLFIND) install base64 compat-base64/META - - -.PHONY: uninstall -uninstall: - $(OCAMLFIND) remove $(NAME) - -.PHONY: uninstall-cgi -uninstall-cgi: - $(OCAMLFIND) remove cgi - -.PHONY: uninstall-base64 -uninstall-base64: - $(OCAMLFIND) remove base64 - -.PHONY: clean -clean: - rm -f *.cmi *.cmo *.cma *.cmx *.o *.a *.cmxa - test ! -d mappings || rm -f netmappings_iso.ml netmappings_other.ml - -.PHONY: distclean -distclean: - rm -f *.cmi *.cmo *.cma *.cmx *.o *.a *.cmxa - rm -f *~ depend depend.pkg compat-cgi/*~ compat-base64/*~ - $(MAKE) -C tests distclean - $(MAKE) -C doc distclean - $(MAKE) -C tools distclean - -RELEASE: META - awk '/version/ { print substr($$3,2,length($$3)-2) }' META >RELEASE - -.PHONY: dist -dist: RELEASE - r=`head -1 RELEASE`; cd ..; gtar czf $(NAME)-$$r.tar.gz --exclude='*/CVS*' --exclude="*/depend.pkg" --exclude="*/depend" --exclude="*/doc/common.xml" --exclude="*/doc/config.xml" --exclude="*/doc/readme.dtd" --exclude="*/Mail" --exclude="*/mappings" $(NAME) - -.PHONY: tag-release -tag-release: RELEASE - r=`head -1 RELEASE | sed -e s/\\\./-/g`; cd ..; cvs tag -F $(NAME)-$$r $(NAME) - -.PHONY: release -release: distclean - test -f netmappings_iso.ml - test -f netmappings_other.ml - $(MAKE) tag-release - $(MAKE) dist - -.SUFFIXES: .cmo .cmi .cmx .ml .mli .mll - -.ml.cmx: - $(OCAMLOPT) -c -thread $< - -.ml.cmo: - $(OCAMLC) -c -thread $< - -.mli.cmi: - $(OCAMLC) -c $< - -.mll.ml: - $(OCAMLLEX) $< - -include depend -include depend.pkg diff --git a/helm/DEVEL/pxp/netstring/RELEASE b/helm/DEVEL/pxp/netstring/RELEASE deleted file mode 100644 index 965065db5..000000000 --- a/helm/DEVEL/pxp/netstring/RELEASE +++ /dev/null @@ -1 +0,0 @@ -0.9.3 diff --git a/helm/DEVEL/pxp/netstring/base64.ml b/helm/DEVEL/pxp/netstring/base64.ml deleted file mode 100644 index 285626f77..000000000 --- a/helm/DEVEL/pxp/netstring/base64.ml +++ /dev/null @@ -1,24 +0,0 @@ -(* $Id$ - * ---------------------------------------------------------------------- - * - *) - -let encode s = Netencoding.Base64.encode s;; -let url_encode s = Netencoding.Base64.url_encode s;; -let decode s = Netencoding.Base64.decode s;; - -(* ====================================================================== - * History: - * - * $Log$ - * Revision 1.1 2000/11/17 09:57:27 lpadovan - * Initial revision - * - * Revision 1.2 2000/06/25 22:34:43 gerd - * Added labels to arguments. - * - * Revision 1.1 2000/03/02 01:15:20 gerd - * Initial revision. - * - * - *) diff --git a/helm/DEVEL/pxp/netstring/base64.mli b/helm/DEVEL/pxp/netstring/base64.mli deleted file mode 100644 index 5dd60ea75..000000000 --- a/helm/DEVEL/pxp/netstring/base64.mli +++ /dev/null @@ -1,36 +0,0 @@ -(* $Id$ - * ---------------------------------------------------------------------- - * - *) - -(**********************************************************************) -(* Base64 compatibility module *) -(**********************************************************************) - -(* PLEASE DO NOT USE THIS MODULE IN NEW SOFTWARE! - * The module Netencoding.Base64 is the preferred API. This module is - * only for compatibility with older software. - *) - -(* This interface is compatible with all previously released Base64 - * modules (0.1 and 0.2). - *) - -val encode : string -> string - -val url_encode : string -> string - -val decode : string -> string - -(* ====================================================================== - * History: - * - * $Log$ - * Revision 1.1 2000/11/17 09:57:27 lpadovan - * Initial revision - * - * Revision 1.1 2000/03/02 01:15:20 gerd - * Initial revision. - * - * - *) diff --git a/helm/DEVEL/pxp/netstring/cgi.ml b/helm/DEVEL/pxp/netstring/cgi.ml deleted file mode 100644 index 48412be29..000000000 --- a/helm/DEVEL/pxp/netstring/cgi.ml +++ /dev/null @@ -1,645 +0,0 @@ -(* $Id$ - * ---------------------------------------------------------------------- - * - *) - -exception Resources_exceeded - -type argument_processing = Memory | File | Automatic;; - -type argument = - { mutable arg_name : string; - mutable arg_processing : argument_processing; - mutable arg_buf_value : Buffer.t; - mutable arg_mem_value : string option; - (* Here, the value is stored if it must be kept in memory *) - mutable arg_disk_value : string Weak.t; - (* This component is used iff arg_mem_value = None. The - * weak array has a length of 1, and the single element stores - * the value (if any). - *) - mutable arg_file : string option; - (* The filename of the temporary file storing the value *) - mutable arg_fd : out_channel option; - (* The file descriptor of the temp file (if open) *) - mutable arg_mimetype : string; - mutable arg_filename : string option; - mutable arg_header : (string * string) list; - (* For the last three components, see the description of the - * corresponding functions in the mli file. - *) - } -;; - -type workaround = - Work_around_MSIE_Content_type_bug - | Work_around_backslash_bug -;; - -type config = - { maximum_content_length : int; - how_to_process_arguments : argument -> argument_processing; - tmp_directory : string; - tmp_prefix : string; - workarounds : workaround list; - } -;; - - -let print_argument arg = - Format.printf - "" - arg.arg_name - (match arg.arg_filename with None -> "*" | Some n -> n) - arg.arg_mimetype - (match arg.arg_file with None -> "Memory" | Some n -> n) -;; - - -let encode = Netencoding.Url.encode ;; -let decode = Netencoding.Url.decode ;; - - - -let url_split_re = - Str.regexp "[&=]";; - - -let mk_url_encoded_parameters nv_pairs = - String.concat "&" - (List.map - (fun (name,value) -> - let name_encoded = Netencoding.Url.encode name in - let value_encoded = Netencoding.Url.encode value in - name_encoded ^ "=" ^ value_encoded - ) - nv_pairs - ) -;; - - -let dest_url_encoded_parameters parstr = - - let rec parse_after_amp tl = - match tl with - Str.Text name :: Str.Delim "=" :: Str.Text value :: tl' -> - (Netencoding.Url.decode name, - Netencoding.Url.decode value) :: parse_next tl' - | Str.Text name :: Str.Delim "=" :: Str.Delim "&" :: tl' -> - (Netencoding.Url.decode name, "") :: parse_after_amp tl' - | Str.Text name :: Str.Delim "=" :: [] -> - [Netencoding.Url.decode name, ""] - | _ -> - failwith "Cgi.dest_url_encoded_parameters" - and parse_next tl = - match tl with - [] -> [] - | Str.Delim "&" :: tl' -> - parse_after_amp tl' - | _ -> - failwith "Cgi.dest_url_encoded_parameters" - in - let toklist = Str.full_split url_split_re parstr in - match toklist with - [] -> [] - | _ -> parse_after_amp toklist -;; - - -let mk_form_encoded_parameters ntv_triples = - failwith "Cgi.mk_form_encoded_parameters: not implemented";; - - -let dest_parameter_header header options = - let get_name s = - (* s is: form-data; ... name="fieldname" ... - * Extract "fieldname" - *) - try - let tok, params = Mimestring.scan_value_with_parameters s options in - List.assoc "name" params - with - Not_found -> - failwith "Cgi.dest_form_encoded_parameters" - | Failure "Mimestring.scan_value_with_parameters" -> - failwith "Cgi.dest_form_encoded_parameters" - in - - let get_filename s = - (* s is: form-data; ... filename="fieldname" ... - * Extract "fieldname" - *) - try - let tok, params = Mimestring.scan_value_with_parameters s options in - Some(List.assoc "filename" params) - with - Not_found -> - None - | Failure "Mimestring.scan_value_with_parameters" -> - failwith "Cgi.dest_form_encoded_parameters" - in - - let mime_type = - try List.assoc "content-type" header - with Not_found -> "text/plain" in (* the default *) - - let content_disposition = - try List.assoc "content-disposition" header - with - Not_found -> - failwith "Cgi.dest_form_encoded_parameters: no content-disposition" - in - - let name = get_name content_disposition in - let filename = get_filename content_disposition in - - name, mime_type, filename -;; - - -let dest_form_encoded_parameters parstr ~boundary config = - let options = - if List.mem Work_around_backslash_bug config.workarounds then - [ Mimestring.No_backslash_escaping ] - else - [] - in - let parts = - Mimestring.scan_multipart_body_and_decode - parstr 0 (String.length parstr) boundary in - List.map - (fun (params, value) -> - - let name, mime_type, filename = dest_parameter_header params options in - { arg_name = name; - arg_processing = Memory; - arg_buf_value = Buffer.create 1; - arg_mem_value = Some value; - arg_disk_value = Weak.create 1; - arg_file = None; - arg_fd = None; - arg_mimetype = mime_type; - arg_filename = filename; - arg_header = params; - } - - ) - parts -;; - - -let make_temporary_file config = - (* Returns (filename, out_channel). *) - let rec try_creation n = - try - let fn = - Filename.concat - config.tmp_directory - (config.tmp_prefix ^ "-" ^ (string_of_int n)) - in - let fd = - open_out_gen - [ Open_wronly; Open_creat; Open_excl; Open_binary ] - 0o666 - fn - in - fn, fd - with - Sys_error m -> - (* This does not look very intelligent, but it is the only chance - * to limit the number of trials. - *) - if n > 1000 then - failwith ("Cgi: Cannot create temporary file: " ^ m); - try_creation (n+1) - in - try_creation 0 -;; - - -let dest_form_encoded_parameters_from_netstream s ~boundary config = - let parts = ref [] in - let options = - if List.mem Work_around_backslash_bug config.workarounds then - [ Mimestring.No_backslash_escaping ] - else - [] - in - - let create header = - (* CALLBACK for scan_multipart_body_from_netstream *) - let name, mime_type, filename = dest_parameter_header header options in - let p0 = - { arg_name = name; - arg_processing = Memory; - arg_buf_value = Buffer.create 80; - arg_mem_value = None; - arg_disk_value = Weak.create 1; - arg_file = None; - arg_fd = None; - arg_mimetype = mime_type; - arg_filename = filename; - arg_header = header; - } - in - let pr = config.how_to_process_arguments p0 in - let p = { p0 with arg_processing = pr } in - if pr = File then begin - let fn, fd = make_temporary_file config in - p.arg_file <- Some fn; - p.arg_fd <- Some fd; - p.arg_mem_value <- None; - end; - p - in - - let add p s k n = - (* CALLBACK for scan_multipart_body_from_netstream *) - if (p.arg_processing = Automatic) && - (Buffer.length (p.arg_buf_value) >= Netstream.block_size s) then begin - (* This is a LARGE argument *) - p.arg_processing <- File; - let fn, fd = make_temporary_file config in - p.arg_file <- Some fn; - p.arg_fd <- Some fd; - p.arg_mem_value <- None; - output_string fd (Buffer.contents p.arg_buf_value); - p.arg_buf_value <- Buffer.create 1; - end; - - match p.arg_processing with - (Memory|Automatic) -> - Buffer.add_substring - p.arg_buf_value - (Netbuffer.unsafe_buffer (Netstream.window s)) - k - n - | File -> - let fd = match p.arg_fd with Some fd -> fd | None -> assert false in - output - fd - (Netbuffer.unsafe_buffer (Netstream.window s)) - k - n; - in - - let stop p = - (* CALLBACK for scan_multipart_body_from_netstream *) - begin match p.arg_processing with - (Memory|Automatic) -> - p.arg_mem_value <- Some (Buffer.contents p.arg_buf_value); - p.arg_buf_value <- Buffer.create 1; - | File -> - let fd = match p.arg_fd with Some fd -> fd | None -> assert false in - close_out fd; - p.arg_mem_value <- None - end; - parts := p :: !parts - in - - Mimestring.scan_multipart_body_from_netstream - s - boundary - create - add - stop; - - List.rev !parts -;; - - -let getenv name = - try Sys.getenv name with Not_found -> "";; - -(* getenv: - * We use this getenv instead of Sys.getenv. The CGI specification does not - * say anything about what should happen if a certain environment variable - * is not set. - * Some servers initialize the environment variable to the empty string if - * it is not applicable, some servers do not set the variable at all. Because - * of this, unset variables are always reported as empty variables. - * - * This is especially a problem with QUERY_STRING. - *) - -let mk_simple_arg ~name v = - { arg_name = name; - arg_processing = Memory; - arg_buf_value = Buffer.create 1; - arg_mem_value = Some v; - arg_disk_value = Weak.create 0; - arg_file = None; - arg_fd = None; - arg_mimetype = "text/plain"; - arg_filename = None; - arg_header = []; - } -;; - -let mk_memory_arg ~name ?(mime = "text/plain") ?filename ?(header = []) v = - { arg_name = name; - arg_processing = Memory; - arg_buf_value = Buffer.create 1; - arg_mem_value = Some v; - arg_disk_value = Weak.create 0; - arg_file = None; - arg_fd = None; - arg_mimetype = mime; - arg_filename = filename; - arg_header = header; - } -;; - -let mk_file_arg - ~name ?(mime = "text/plain") ?filename ?(header = []) v_filename = - let v_abs_filename = - if Filename.is_relative v_filename then - Filename.concat (Sys.getcwd()) v_filename - else - v_filename - in - { arg_name = name; - arg_processing = File; - arg_buf_value = Buffer.create 1; - arg_mem_value = None; - arg_disk_value = Weak.create 0; - arg_file = Some v_abs_filename; - arg_fd = None; - arg_mimetype = mime; - arg_filename = filename; - arg_header = header; - } -;; - - -let get_content_type config = - (* Get the environment variable CONTENT_TYPE; if necessary apply - * workarounds for browser bugs. - *) - let content_type = getenv "CONTENT_TYPE" in - let user_agent = getenv "HTTP_USER_AGENT" in - let eff_content_type = - if Str.string_match (Str.regexp ".*MSIE") user_agent 0 && - List.mem Work_around_MSIE_Content_type_bug config.workarounds - then begin - (* Microsoft Internet Explorer: When used with SSL connections, - * this browser sometimes produces CONTENT_TYPEs like - * "multipart/form-data; boundary=..., multipart/form-data; boundary=..." - * Workaround: Throw away everything after ", ". - *) - if Str.string_match (Str.regexp "\\([^,]*boundary[^,]*\\), .*boundary") - content_type 0 - then - Str.matched_group 1 content_type - else - content_type - end - else - content_type - in - eff_content_type -;; - - -let really_parse_args config = - let make_simple_arg (n,v) = mk_simple_arg n v in - - match getenv "REQUEST_METHOD" with - ("GET"|"HEAD") -> - List.map - make_simple_arg - (dest_url_encoded_parameters(getenv "QUERY_STRING")) - - | "POST" -> - let n = - try - int_of_string (getenv "CONTENT_LENGTH") - with - _ -> failwith "Cgi.parse_arguments" - in - if n > config.maximum_content_length then - raise Resources_exceeded; - begin - let mime_type, params = - Mimestring.scan_mime_type(get_content_type config) [] in - match mime_type with - "application/x-www-form-urlencoded" -> - let buf = String.create n in - really_input stdin buf 0 n; - List.map - make_simple_arg - (dest_url_encoded_parameters buf) - | "multipart/form-data" -> - let boundary = - try - List.assoc "boundary" params - with - Not_found -> - failwith "Cgi.parse_arguments" - in - (* -------------------------------------------------- DEBUG - let f = open_out "/tmp/cgiout" in - output_string f buf; - close_out f; - * -------------------------------------------------- - *) - dest_form_encoded_parameters_from_netstream - (Netstream.create_from_channel stdin (Some n) 4096) - boundary - config - | _ -> - failwith ("Cgi.parse_arguments: unknown content-type " ^ mime_type) - end - | _ -> - failwith "Cgi.parse_arguments: unknown method" - -let parsed = ref None;; (* protected by lock/unlock *) - -let lock = ref (fun () -> ());; -let unlock = ref (fun () -> ());; - -let init_mt new_lock new_unlock = - lock := new_lock; - unlock := new_unlock -;; - -let protect f = - !lock(); - try - let r = f() in - !unlock(); - r - with - x -> - !unlock(); - raise x -;; - -let parse_arguments config = - protect - (fun () -> - match !parsed with - Some _ -> () - | None -> - parsed := Some (List.map - (fun arg -> arg.arg_name, arg) - (really_parse_args config)) - ) -;; - -let arguments () = - protect - (fun () -> - match !parsed with - Some plist -> plist - | None -> - failwith "Cgi.arguments" - ) -;; - -let set_arguments arglist = - protect - (fun () -> - parsed := Some (List.map - (fun arg -> arg.arg_name, arg) - arglist) - ) -;; - -let default_config = - { maximum_content_length = max_int; - how_to_process_arguments = (fun _ -> Memory); - tmp_directory = "/var/tmp"; - tmp_prefix = "cgi-"; - workarounds = [ Work_around_MSIE_Content_type_bug; - Work_around_backslash_bug; - ] - } -;; - -let arg_value arg = - match arg.arg_mem_value with - None -> - begin - match Weak.get arg.arg_disk_value 0 with - None -> - begin - match arg.arg_file with - None -> - failwith "Cgi.arg_value: no value present" - | Some filename -> - let fd = open_in_bin filename in - try - let len = in_channel_length fd in - let s = String.create len in - really_input fd s 0 len; - Weak.set arg.arg_disk_value 0 (Some s); - close_in fd; - s - with - any -> close_in fd; raise any - end - | Some v -> v - end - | Some s -> - s -;; - -let arg_name arg = arg.arg_name;; -let arg_file arg = arg.arg_file;; -let arg_mimetype arg = arg.arg_mimetype;; -let arg_filename arg = arg.arg_filename;; -let arg_header arg = arg.arg_header;; - -let cleanup () = - protect - (fun () -> - match !parsed with - None -> () - | Some plist -> - List.iter - (fun (name, arg) -> - match arg.arg_file with - None -> () - | Some filename -> - (* We do not complain if the file does not exist anymore. *) - if Sys.file_exists filename then - Sys.remove filename; - arg.arg_file <- None - ) - plist - ) -;; - -let argument name = List.assoc name (arguments());; -let argument_value name = arg_value (argument name);; - -module Operators = struct - let ( !% ) = argument - let ( !$ ) = argument_value -end;; - - -let parse_args() = - parse_arguments default_config; - List.map - (fun (name, arg) -> name, arg_value arg) - (arguments()) -;; - -let parse_args_with_mimetypes() = - parse_arguments default_config; - List.map - (fun (name, arg) -> name, arg_mimetype arg, arg_value arg) - (arguments()) -;; - -let header s = - let t = - match s with - "" -> "text/html" - | _ -> s - in - print_string ("Content-type: " ^ t ^ "\n\n"); - flush stdout -;; - - -let this_url() = - "http://" ^ (getenv "SERVER_NAME") ^ (getenv "SCRIPT_NAME") -;; - - -(* ====================================================================== - * History: - * - * $Log$ - * Revision 1.1 2000/11/17 09:57:27 lpadovan - * Initial revision - * - * Revision 1.8 2000/06/25 22:34:43 gerd - * Added labels to arguments. - * - * Revision 1.7 2000/06/25 21:40:36 gerd - * Added printer. - * - * Revision 1.6 2000/06/25 21:15:48 gerd - * Checked thread-safety. - * - * Revision 1.5 2000/05/16 22:29:36 gerd - * Added support for two common file upload bugs. - * - * Revision 1.4 2000/04/15 16:47:27 gerd - * Last minor changes before releasing 0.6. - * - * Revision 1.3 2000/04/15 13:09:01 gerd - * Implemented uploads to temporary files. - * - * Revision 1.2 2000/03/02 01:15:30 gerd - * Updated. - * - * Revision 1.1 2000/02/25 15:21:12 gerd - * Initial revision. - * - * - *) diff --git a/helm/DEVEL/pxp/netstring/cgi.mli b/helm/DEVEL/pxp/netstring/cgi.mli deleted file mode 100644 index 8aea499d8..000000000 --- a/helm/DEVEL/pxp/netstring/cgi.mli +++ /dev/null @@ -1,419 +0,0 @@ -(* $Id$ - * ---------------------------------------------------------------------- - * - *) - -(* FOR SIMPLE CGI PROGRAMS: - * - * If you do not need all the features of the API below, the following may - * be enough: - * - * - At the beginning of the main program, call 'parse_argument' with - * either 'default_config' as argument or with a customized configuration. - * - Use 'argument_value(name)' to get the string value of the CGI parameter - * 'name'. If you like, you can also open the Cgi.Operators module and - * write '!$ name' instead. Here, !$ is a prefix operator equivalent to - * argument_value. - * - * If you do not change the default configuration, you do not need to - * worry about temporary files - there are not any. - * - * Most of the other functions defined below deal with file uploads, and - * are only useful for that. - *) - - -(**********************************************************************) -(* CGI functions *) -(**********************************************************************) - -(* First, the general interface to the CGI argument parser. *) - -exception Resources_exceeded - -type argument - -type argument_processing = - Memory (* Keep the value of the argument in memory *) - | File (* Store the value of the argument into a temporary file *) - | Automatic (* Store only large arguments into files. An argument - * value is large if it is longer than about one block (4K). - * This is not an exact definition. - *) - -type workaround = - Work_around_MSIE_Content_type_bug - (* There is a bug in MSIE I observed together with SSL connections. - * The CONTENT_TYPE passed to the server has sometimes the wrong - * format. This option enables a workaround if the user agent string - * contains the word "MSIE". - *) - | Work_around_backslash_bug - (* There is a bug in many browsers: The backslash character is not - * handled as an escaping character in MIME headers. Because DOS- - * based systems use the backslash regularly in filenames, this bug - * matters. - * This option changes the interpretation of backslashes such that - * these are handled as normal characters. I do not know any browser - * that is not affected by this bug, so there is no check on - * the user agent string. - *) - - -type config = - { maximum_content_length : int; - (* The maximum CONTENT_LENGTH. Bigger requests trigger an - * Resources_exceeded exception. This feature can be used - * to detect primitive denial-of-service attacks. - *) - how_to_process_arguments : argument -> argument_processing; - (* After the beginning of an argument has been decoded, the - * type of processing is decided by invoking this function on - * the argument. Note that the passed argument is incomplete - - * it does not have a value. You can assume that name, filename, - * MIME type and the whole header are already known. - * - THIS CONFIGURATION PARAMETER ONLY AFFECTS ARGUMENTS - * "POST"ED FROM THE CLIENT IN FORM-ENCODED REPRESENTATION. - * All other transport methods can only handle the Memory - * processing type. - *) - tmp_directory : string; - (* The temporary directory to use for the temporary files. *) - tmp_prefix : string; - (* A prefix for temporary files. It is recommended that the prefix - * contains a part that is random or that depends on rapidly changing - * environment properties. For example, the process ID is a good - * candidate, or the current system time. It is not required that - * the prefix is unique; there is a fail-safe algorithm that - * computes a unique file name from the prefix, even if several - * CGI programs run concurrently. - *) - workarounds : workaround list; - (* Specifies which workarounds should be enabled. *) - } - -val parse_arguments : config -> unit -val arguments : unit -> (string * argument) list - (* - let () = parse_arguments config: - * Decodes the CGI arguments. 'config' specifies limits and processing - * hints; you can simply pass default_config (see below). - * - * - let arglist = get_arguments(): - * The function returns a list with (name, arg) pairs. The name is - * passed back as string while the value is returned as opaque type - * 'argument'. Below accessor functions are defined. These functions - * require that parse_arguments was invoked before. - * - * Note 1: You can invoke 'parse_arguments' several times, but only - * the first time the arguments are read in. If you call the function - * again, it does nothing (even if the config changes). This is also - * true if 'parse_arguments' has been invoked after 'set_arguments'. - * - * Note 2: It is not guaranteed that stdin has been read until EOF. - * Only CONTENT_LENGTH bytes are read from stdin (following the CGI spec). - * - * Note 3: If arguments are processed in File or Automatic mode, the - * caller of 'parse_arguments' is responsible for deleting the files - * after use. You may consider to apply the at_exit function of the - * core library for this purpose. See also 'cleanup' below. - *) - -val set_arguments : argument list -> unit - (* Alternatively, you can set the arguments to use. This overrides any - * previously parsed set of arguments, and also any following parsing. - * - Intended for debugging, and to make it possible to replace the - * CGI parser by a different one while retaining this API. - *) - -val default_config : config - (* maximum_content_length = maxint - * how_to_process_arguments = "use always Memory" - * tmp_directory = "/var/tmp" - * tmp_prefix = "cgi" - * workarounds = [ Work_around_MSIE_content_type_bug; - * Work_around_backslash_bug; - * ] - * - * Note 1: On some Unixes, a special file system is used for /tmp that - * stores the files into the virtual memory (main memory or swap area). - * Because of this, /var/tmp is preferred as default. - * - * Note 2: Filename.temp_file is not used because it depends on - * environment variables which are usually not set in a CGI environment. - *) - -val arg_name : argument -> string -val arg_value : argument -> string -val arg_file : argument -> string option -val arg_mimetype : argument -> string -val arg_filename : argument -> string option -val arg_header : argument -> (string * string) list - (* The accessor functions that return several aspects of arguments. - * arg_name: returns the name of the argument - * arg_value: returns the value of the argument. If the value is stored - * in a temporary file, the contents of this file are returned, i.e. - * the file is loaded. This may have some consequences: - * (1) The function may fail because of I/O errors. - * (2) The function may be very slow, especially if the file is - * non-local. - * (3) If the value is bigger than Sys.max_string_length, the function - * raises the exception Resources_exceeded. On 32 bit architectures, - * strings are limited to 16 MB. - * Note that loaded values are put into weak arrays. This makes it - * possible that subsequent calls of 'arg_value' on the same argument - * can avoid loading the value again, and that unused values will - * nevertheless be collected by the GC. - * arg_file: returns 'Some filename' if the value resides in a temporary - * file, and 'filename' is the absolute path of this file. If the - * value is only available in memory, None is returned. - * arg_mimetype: returns the MIME type of the argument. Note that the - * default MIME type is "text/plain", and that the default is returned - * if the MIME type is not available. - * arg_filename: returns 'Some filename' if the argument is associated - * with a certain filename (e.g. from a file upload); otherwise None - * arg_header: returns pairs (name,value) containing the complete header - * of the argument. If the transmission protocol does not specify - * a header, the empty list is passed back. - *) - -val mk_simple_arg : name:string -> string -> argument - (* mk_simple_arg name value: - * Creates a simple argument with only name, and a value passed by string. - * The MIME type is "text/plain". - *) - -val mk_memory_arg - : name:string -> ?mime:string -> ?filename:string -> - ?header:((string * string) list) -> string -> argument - (* mk_memory_arg name mimetype filename header value: - * Creates an argument whose value is kept in memory. - * - * Note: The signature of this function changed in release 0.8. - *) - -val mk_file_arg - : name:string -> ?mime:string -> ?filename:string -> - ?header:((string * string) list) -> string -> argument - (* mk_file_arg name mimetype filename header value_filename: - * Creates an argument whose value is stored in the file - * 'value_filename'. If this file name is not absolute, it is interpreted - * relative to the directory returned by Sys.getcwd() - this might not - * be what you want with respect to mount points and symlinks (and it - * depends on the operating system as getcwd is only POSIX.1). The - * file name is turned into an absolute name immediately, and the - * function arg_file returns the rewritten name. - * - * Note: The signature of this function changed in release 0.8. - *) - - -val cleanup : unit -> unit - (* Removes all temporary files that occur in the current set of arguments - * (as returned by 'arguments()'). - *) - - -(* Convenience functions: *) - -val argument : string -> argument - (* let argument name = List.assoc name (arguments()) -- i.e. returns - * the argument with the passed name. Of course, this function expects - * that 'parse_arguments' was called before. - *) - -val argument_value : string -> string - (* let argument_value name = arg_value(argument name) -- i.e. returns - * the value of the argument. - * See also Operators.( !$ ) below. - *) - -(* For toploop printers: *) - -val print_argument : argument -> unit - - -(* Now, the compatibility functions. *) - -val parse_args : unit -> (string * string) list - (* Decodes the arguments of the CGI and returns them as an association list - * Works whatever the method is (GET or POST) - *) - -val parse_args_with_mimetypes : unit -> (string * string * string) list - (* Like parse_args, but returns also the MIME type. - * The triples contain (name, mime_type, value). - * If an encoding was chosen that does not transfer the MIME type, - * "text/plain" is returned. - * - * THIS FUNCTION SHOULD BE CONSIDERED AS DEPRECATED. - * It was included in netstring-0.4, but most people want not only - * the MIME type. parse_arguments should be used instead. - *) - -val header : string -> unit - (* Prints the content-type header. - * the argument is the MIME type (default value is "text/html" if the - * argument is the empty string) - *) - -val this_url : unit -> string - (* Returns the address of the CGI *) - -(**********************************************************************) -(* The Operators module *) -(**********************************************************************) - -(* If you open the Operators module, you can write - * !% "name" instead of argument "name", and - * !$ "name" instead of argument_value "name" - *) - -module Operators : sig - val ( !% ) : string -> argument - (* same as 'argument' above *) - val ( !$ ) : string -> string - (* same as 'argument_value' above *) -end - -(**********************************************************************) -(* Low-level functions *) -(**********************************************************************) - -(* Encoding/Decoding within URLs: - * - * The following two functions perform the '%'-substitution for - * characters that may otherwise be interpreted as metacharacters. - * - * See also the Netencoding module. This interface contains these functions - * to keep the compatibility with the old Cgi module. - *) - -val decode : string -> string -val encode : string -> string - -(* URL-encoded parameters: - * - * The following two functions create and analyze URL-encoded parameters. - * Format: name1=val1&name2=val2&... - *) - -val mk_url_encoded_parameters : (string * string) list -> string - (* The argument is a list of (name,value) pairs. The result is the - * single URL-encoded parameter string. - *) - -val dest_url_encoded_parameters : string -> (string * string) list - (* The argument is the URL-encoded parameter string. The result is - * the corresponding list of (name,value) pairs. - * Note: Whitespace within the parameter string is ignored. - * If there is a format error, the function fails. - *) - -(* Form-encoded parameters: - * - * According to: RFCs 2388, 2183, 2045, 2046 - * - * General note: This is a simple API to encode/decode form-encoded parameters. - * Especially, it is not possible to pass the header of the parts through - * this API. - *) - -val mk_form_encoded_parameters : (string * string * string) list -> - (string * string) - (* The argument is a list of (name,mimetype,value) triples. - * The result is (parstr, boundary), where 'parstr' is the - * single form-encoded parameter string, and 'boundary' is the - * boundary to separate the message parts. - * - * THIS FUNCTION IS CURRENTLY NOT IMPLEMENTED! - *) - -val dest_form_encoded_parameters : string -> boundary:string -> config -> - argument list - (* The first argument is the form-encoded parameter string. - * The second argument is the boundary (extracted from the mime type). - * Third argument: Only the workarounds component is used. - * The result is - * the corresponding list of arguments (all in memory). - * If there is a format error, the function fails. - * Note: embedded multipart/mixed types are returned as they are, - * and are not recursively decoded. - * Note: The content-transfer-encodings "7bit", "8bit", "binary", - * "base64", and "quoted-printable" are supported. - * Note: Parameter names which include spaces or non-alphanumeric - * characters may be problematic (the rules of RFC 2047 are NOT applied). - * Note: The returned MIME type is not normalized. - *) - -val dest_form_encoded_parameters_from_netstream - : Netstream.t -> boundary:string -> config -> argument list - (* let arglist = dest_form_encoded_parameters_from_netstream s b c: - * Reads the form-encoded parameters from netstream s. The boundary - * is passed in b, and the configuration in c. - * A list of arguments is returned. - * - * See also dest_form_encoded_parameters. - * - * Restriction: In contrast to dest_form_encoded_parameters, this - * function is not able to handle the content-transfer-encodings - * "base64" and "quoted-printable". (This is not really a restriction - * because no browser uses these encodings in conjunction with HTTP. - * This is different if mail transport is chosen. - The reason for - * this restriction is that there are currently no stream functions - * for decoding.) - *) - -(* Private functions: *) - -val init_mt : (unit -> unit) -> (unit -> unit) -> unit - - -(**********************************************************************) -(* Compatibility with CGI library by J.-C. Filliatre *) -(**********************************************************************) - -(* The following functions are compatible with J.-C. Filliatre's CGI - * library: - * - * parse_args, header, this_url, decode, encode. - * - * Note that the new implementation of parse_args can be safely invoked - * several times. - * - * Since release 0.8, Netstring's CGI implementation is again thread-safe. - *) - - -(* ====================================================================== - * History: - * - * $Log$ - * Revision 1.1 2000/11/17 09:57:27 lpadovan - * Initial revision - * - * Revision 1.8 2000/06/25 22:34:43 gerd - * Added labels to arguments. - * - * Revision 1.7 2000/06/25 21:40:36 gerd - * Added printer. - * - * Revision 1.6 2000/06/25 21:15:48 gerd - * Checked thread-safety. - * - * Revision 1.5 2000/05/16 22:28:13 gerd - * New "workarounds" config component. - * - * Revision 1.4 2000/04/15 16:47:27 gerd - * Last minor changes before releasing 0.6. - * - * Revision 1.3 2000/04/15 13:09:01 gerd - * Implemented uploads to temporary files. - * - * Revision 1.2 2000/03/02 01:15:30 gerd - * Updated. - * - * Revision 1.1 2000/02/25 15:21:12 gerd - * Initial revision. - * - * - *) diff --git a/helm/DEVEL/pxp/netstring/compat-base64/META b/helm/DEVEL/pxp/netstring/compat-base64/META deleted file mode 100644 index a5c003ea4..000000000 --- a/helm/DEVEL/pxp/netstring/compat-base64/META +++ /dev/null @@ -1,3 +0,0 @@ -version = "0.5" -requires = "netstring" -description = "Compatibility with base64" diff --git a/helm/DEVEL/pxp/netstring/compat-cgi/META b/helm/DEVEL/pxp/netstring/compat-cgi/META deleted file mode 100644 index 2294921a0..000000000 --- a/helm/DEVEL/pxp/netstring/compat-cgi/META +++ /dev/null @@ -1,3 +0,0 @@ -version = "0.5" -requires = "netstring" -description = "Compatibility with cgi" diff --git a/helm/DEVEL/pxp/netstring/depend b/helm/DEVEL/pxp/netstring/depend deleted file mode 100644 index 5991264c6..000000000 --- a/helm/DEVEL/pxp/netstring/depend +++ /dev/null @@ -1,36 +0,0 @@ -base64.cmo: netencoding.cmi base64.cmi -base64.cmx: netencoding.cmx base64.cmi -cgi.cmo: mimestring.cmi netbuffer.cmi netencoding.cmi netstream.cmi cgi.cmi -cgi.cmx: mimestring.cmx netbuffer.cmx netencoding.cmx netstream.cmx cgi.cmi -mimestring.cmo: netbuffer.cmi netencoding.cmi netstream.cmi netstring_str.cmi \ - mimestring.cmi -mimestring.cmx: netbuffer.cmx netencoding.cmx netstream.cmx netstring_str.cmx \ - mimestring.cmi -netbuffer.cmo: netbuffer.cmi -netbuffer.cmx: netbuffer.cmi -netconversion.cmo: netmappings.cmi netconversion.cmi -netconversion.cmx: netmappings.cmx netconversion.cmi -netencoding.cmo: netstring_str.cmi netencoding.cmi -netencoding.cmx: netstring_str.cmx netencoding.cmi -nethtml.cmo: nethtml.cmi -nethtml.cmx: nethtml.cmi -netmappings.cmo: netmappings.cmi -netmappings.cmx: netmappings.cmi -netmappings_iso.cmo: netmappings.cmi -netmappings_iso.cmx: netmappings.cmx -netmappings_other.cmo: netmappings.cmi -netmappings_other.cmx: netmappings.cmx -netstream.cmo: netbuffer.cmi netstream.cmi -netstream.cmx: netbuffer.cmx netstream.cmi -netstring_mt.cmo: cgi.cmi netmappings.cmi netstring_str.cmi netstring_mt.cmi -netstring_mt.cmx: cgi.cmx netmappings.cmx netstring_str.cmx netstring_mt.cmi -netstring_str.cmo: netstring_str.cmi -netstring_str.cmx: netstring_str.cmi -netstring_top.cmo: netstring_top.cmi -netstring_top.cmx: netstring_top.cmi -neturl.cmo: netencoding.cmi neturl.cmi -neturl.cmx: netencoding.cmx neturl.cmi -cgi.cmi: netstream.cmi -mimestring.cmi: netstream.cmi -netmappings.cmi: netconversion.cmi -netstream.cmi: netbuffer.cmi diff --git a/helm/DEVEL/pxp/netstring/depend.pkg b/helm/DEVEL/pxp/netstring/depend.pkg deleted file mode 100644 index e69de29bb..000000000 diff --git a/helm/DEVEL/pxp/netstring/doc/ABOUT-FINDLIB b/helm/DEVEL/pxp/netstring/doc/ABOUT-FINDLIB deleted file mode 100644 index d942e2786..000000000 --- a/helm/DEVEL/pxp/netstring/doc/ABOUT-FINDLIB +++ /dev/null @@ -1,52 +0,0 @@ -****************************************************************************** -ABOUT-FINDLIB - Package manager for O'Caml -****************************************************************************** - - -============================================================================== -Abstract -============================================================================== - -The findlib library provides a scheme to manage reusable software components -(packages), and includes tools that support this scheme. Packages are -collections of OCaml modules for which metainformation can be stored. The -packages are kept in the filesystem hierarchy, but with strict directory -structure. The library contains functions to look the directory up that stores -a package, to query metainformation about a package, and to retrieve dependency -information about multiple packages. There is also a tool that allows the user -to enter queries on the command-line. In order to simplify compilation and -linkage, there are new frontends of the various OCaml compilers that can -directly deal with packages. - -Together with the packages metainformation is stored. This includes a version -string, the archives the package consists of, and additional linker options. -Packages can also be dependent on other packages. There is a query which finds -out all predecessors of a list of packages and sorts them topologically. The -new compiler frontends do this implicitly. - -Metainformation can be conditional, i.e. depend on a set of predicates. This is -mainly used to be able to react on certain properties of the environment, such -as if the bytecode or the native compiler is invoked, if the application is -multi-threaded, and a few more. If the new compiler frontends are used, most -predicates are found out automatically. - -There is special support for scripts. A new directive, "#require", loads -packages into scripts. Of course, this works only with newly created toploops -which include the findlib library. - -============================================================================== -Where to get findlib -============================================================================== - -The manual of findlib is available online [1]. You can download findlib here -[2]. - - --------------------------- - -[1] see http://www.ocaml-programming.de/packages/documentation/findlib/ - -[2] see http://www.ocaml-programming.de/packages/findlib-0.3.1.tar.gz - - - diff --git a/helm/DEVEL/pxp/netstring/doc/ABOUT-FINDLIB.xml b/helm/DEVEL/pxp/netstring/doc/ABOUT-FINDLIB.xml deleted file mode 100644 index d1dc5b04e..000000000 --- a/helm/DEVEL/pxp/netstring/doc/ABOUT-FINDLIB.xml +++ /dev/null @@ -1,61 +0,0 @@ - - -%common; - -findlib"> -Findlib"> - -]> - - - - Abstract -

    -The &f; library provides a scheme to manage reusable software -components (packages), and includes tools that support this -scheme. Packages are collections of OCaml modules for which -metainformation can be stored. The packages are kept in the filesystem -hierarchy, but with strict directory structure. The library contains -functions to look the directory up that stores a package, to query -metainformation about a package, and to retrieve dependency -information about multiple packages. There is also a tool that allows -the user to enter queries on the command-line. In order to simplify -compilation and linkage, there are new frontends of the various OCaml -compilers that can directly deal with packages. -

    - -

    -Together with the packages metainformation is stored. This includes a -version string, the archives the package consists of, and additional -linker options. Packages can also be dependent on other -packages. There is a query which finds out all predecessors of a list -of packages and sorts them topologically. The new compiler frontends -do this implicitly. -

    - -

    -Metainformation can be conditional, i.e. depend on a set of -predicates. This is mainly used to be able to react on certain -properties of the environment, such as if the bytecode or the native -compiler is invoked, if the application is multi-threaded, and a few -more. If the new compiler frontends are used, most predicates are -found out automatically. -

    - -

    -There is special support for scripts. A new directive, "#require", -loads packages into scripts. Of course, this works only with newly -created toploops which include the &f; library. -

    - -
    - - Where to get findlib -

    -The manual of &f; is available online. -You can download &f; here. -

    -
    -
    diff --git a/helm/DEVEL/pxp/netstring/doc/INSTALL b/helm/DEVEL/pxp/netstring/doc/INSTALL deleted file mode 100644 index cca39944b..000000000 --- a/helm/DEVEL/pxp/netstring/doc/INSTALL +++ /dev/null @@ -1,128 +0,0 @@ -****************************************************************************** -INSTALL - Netstring, string processing functions for the net -****************************************************************************** - - -============================================================================== -The "Netstring" package -============================================================================== - ------------------------------------------------------------------------------- -Prerequisites ------------------------------------------------------------------------------- - -Netstring does not need any other packages besides the O'Caml core. Netstring -needs at least O'Caml 3.00. The installation procedure defined in the Makefile -requires findlib [1] to work [2]. - ------------------------------------------------------------------------------- -Configuration ------------------------------------------------------------------------------- - -It is not necessary to configure "Netstring". - ------------------------------------------------------------------------------- -Compilation ------------------------------------------------------------------------------- - -The Makefile defines the following goals: - -- make all - compiles with the bytecode compiler and creates netstring.cma, - netstring_mt.cmo, netstring_top.cmo, netmappings_iso.cmo, and - netmappings_other.cmo - -- make opt - compiles with the native compiler and creates netstring.cmxa, - netstring_mt.cmx, netmappings_iso.cmx, and netmappings_other.cmx - -The archive netstring.cmx?a contains the functionality, and the two -single-module files netmappings_iso.cm[ox] and netmappings_other.cm[ox] add -configurations to the character set conversion module. These configurations are -optional: - -- Netmappings_iso: Conversion tables for the character sets ISO-8859-2, -3, - -4, -5, -6, -7, -8, -9, -10, 13, -14, and -15. - -- Netmappings_other: Conversion tables for the character sets WINDOWS-1250, - -1251, -1252, -1253, -1254, -1255, -1256, -1257, -1258; code pages 037, 424, - 437, 500, 737, 775, 850, 852, 855, 856, 857, 860, 861, 862, 863, 864, 865, - 866, 869, 874, 875, 1006, 1026; JIS-0201; KOI8R; Macintosh Roman encoding; - Adobe Standard Encoding, Symbol Encoding, and Zapf Dingbats Encodings. - -Even without these configuration files, the conversion module is able to handle -the encodings ISO-8859-1, US-ASCII, UTF-16, UTF-8, and the Java variant of -UTF-8. - -The module Netstring_mt must be linked into multi-threaded applications; -otherwise some mutexes remain uninitialized. - -The module Netstring_top loads several printers for abstract values (for -toploops). - ------------------------------------------------------------------------------- -Installation ------------------------------------------------------------------------------- - -The Makefile defines the following goals: - -- make install - installs the bytecode archive, the interface definitions, and if present, - the native archive in the default location of findlib - -- make install-cgi - Installs a pseudo package "cgi" which is compatible with the old cgi - package. This has the effect that software searching the "cgi" package will - find the netstring package instead. This is recommended. - -- make install-base64 - Installs a pseudo package "base64" which is compatible with the old base64 - package. This has the effect that software searching the "base64" package - will find the netstring package instead. This is recommended. - -- make uninstall - removes the package - -- make uninstall-cgi - removes the "cgi" compatibility package - -- make uninstall-base64 - removes the "base64" compatibility package - ------------------------------------------------------------------------------- -Linking netstring with findlib ------------------------------------------------------------------------------- - -The command - -ocamlfind ocamlc ... -package netstring ... -linkpkg ... - -links as much as possible code from netstring into your application: All -conversion tables; when -thread is specified, the initialization code for -multi-threaded programs; when a toploop is created, the code setting the value -printers. - -The following predicates reduce the amount of linked code: - -- netstring_only_iso: Only the conversion tables for the ISO-8859 series of - character sets are linked. - -- netstring_minimum: No additional conversion tables are linked; only - ISO-8859-1 and the UTF encodings work. - -For example, the command may look like - -ocamlfind ocamlc ... - -package netstring -predicates netstring_only_iso ... -linkpkg ... - -to link only the ISO-8859 conversion tables. - - --------------------------- - -[1] see http://www.ocaml-programming.de/packages/documentation/findlib/ - -[2] Findlib is a package manager, see the file ABOUT-FINDLIB. - - - diff --git a/helm/DEVEL/pxp/netstring/doc/INSTALL.xml b/helm/DEVEL/pxp/netstring/doc/INSTALL.xml deleted file mode 100644 index b5b53eddc..000000000 --- a/helm/DEVEL/pxp/netstring/doc/INSTALL.xml +++ /dev/null @@ -1,153 +0,0 @@ - - -%common; - -Netstring"> - -]> - - - The "Netstring" package - Prerequisites -

    -&m; does not need any other packages besides the O'Caml core. &m; needs -at least O'Caml 3.00. The installation procedure defined in the Makefile -requires findlib to -workFindlib is a package manager, see the file -ABOUT-FINDLIB.. -

    -
    - - Configuration -

    -It is not necessary to configure "Netstring". -

    -
    - - Compilation -

    -The Makefile defines the following goals: -

    -
      -
    • -

      make all

      -

      compiles with the bytecode compiler and creates netstring.cma, -netstring_mt.cmo, netstring_top.cmo, netmappings_iso.cmo, and -netmappings_other.cmo

      -
    • -
    • -

      make opt

      -

      compiles with the native compiler and creates netstring.cmxa, -netstring_mt.cmx, netmappings_iso.cmx, and netmappings_other.cmx

      -
    • -
    - -

    The archive netstring.cmx?a contains the functionality, and the two -single-module files netmappings_iso.cm[ox] and netmappings_other.cm[ox] add -configurations to the character set conversion module. These configurations are -optional:

    - -
      -
    • Netmappings_iso: Conversion tables for the character sets -ISO-8859-2, -3, -4, -5, -6, -7, -8, -9, -10, 13, -14, and -15.

      -
    • -
    • Netmappings_other: Conversion tables for the character sets -WINDOWS-1250, -1251, -1252, -1253, -1254, -1255, -1256, -1257, -1258; -code pages 037, 424, 437, 500, 737, 775, 850, 852, 855, 856, 857, 860, 861, -862, 863, 864, 865, 866, 869, 874, 875, 1006, 1026; JIS-0201; KOI8R; Macintosh -Roman encoding; Adobe Standard Encoding, Symbol Encoding, and Zapf Dingbats -Encodings.

      -
    • -
    - -

    Even without these configuration files, the conversion module is able to -handle the encodings ISO-8859-1, US-ASCII, UTF-16, UTF-8, and the Java variant -of UTF-8.

    - -

    The module Netstring_mt must be linked into multi-threaded applications; -otherwise some mutexes remain uninitialized.

    - -

    The module Netstring_top loads several printers for abstract values (for -toploops).

    - -
    - - Installation -

    -The Makefile defines the following goals:

    -
      -
    • -

      make install

      -

      installs the bytecode archive, the interface definitions, and if -present, the native archive in the default location of findlib -

      -
    • - -
    • -

      make install-cgi

      -

      Installs a pseudo package "cgi" which is compatible with the old -cgi package. This has the effect that software searching the "cgi" package will -find the netstring package instead. This is recommended.

      -
    • - -
    • -

      make install-base64

      Installs a pseudo package "base64" -which is compatible with the old base64 package. This has the effect that -software searching the "base64" package will find the netstring package -instead. This is recommended.

      -
    • - -
    • -

      make uninstall

      -

      removes the package

      -
    • - -
    • -

      make uninstall-cgi

      -

      removes the "cgi" compatibility package

      -
    • - -
    • -

      make uninstall-base64

      -

      removes the "base64" compatibility package

      -
    • -
    -
    - - - - Linking netstring with findlib -

    The command - -ocamlfind ocamlc ... -package netstring ... -linkpkg ... - -links as much as possible code from netstring into your application: All -conversion tables; when -thread is specified, the initialization code for -multi-threaded programs; when a toploop is created, the code setting the value -printers.

    - -

    The following predicates reduce the amount of linked code:

    - -
      -
    • netstring_only_iso: Only the conversion tables for the ISO-8859 -series of character sets are linked.

      -
    • -
    • netstring_minimum: No additional conversion tables are linked; -only ISO-8859-1 and the UTF encodings work.

      -
    • -
    - -

    For example, the command may look like - - -ocamlfind ocamlc ... - -package netstring -predicates netstring_only_iso ... -linkpkg ... - - -to link only the ISO-8859 conversion tables.

    -
    - -
    -
    \ No newline at end of file diff --git a/helm/DEVEL/pxp/netstring/doc/Makefile b/helm/DEVEL/pxp/netstring/doc/Makefile deleted file mode 100644 index 7f8450be3..000000000 --- a/helm/DEVEL/pxp/netstring/doc/Makefile +++ /dev/null @@ -1,22 +0,0 @@ -.PHONY: all -all: README INSTALL ABOUT-FINDLIB - -README: README.xml common.xml config.xml - readme -text README.xml >README - -INSTALL: INSTALL.xml common.xml config.xml - readme -text INSTALL.xml >INSTALL - -ABOUT-FINDLIB: ABOUT-FINDLIB.xml common.xml config.xml - readme -text ABOUT-FINDLIB.xml >ABOUT-FINDLIB - -.PHONY: clean -clean: - -.PHONY: CLEAN -CLEAN: clean - -.PHONY: distclean -distclean: clean - rm -f *~ - diff --git a/helm/DEVEL/pxp/netstring/doc/README b/helm/DEVEL/pxp/netstring/doc/README deleted file mode 100644 index b590416be..000000000 --- a/helm/DEVEL/pxp/netstring/doc/README +++ /dev/null @@ -1,212 +0,0 @@ -****************************************************************************** -README - Netstring, string processing functions for the net -****************************************************************************** - - -============================================================================== -Abstract -============================================================================== - -Netstring is a collection of string processing functions that are useful in -conjunction with Internet messages and protocols. In particular, it contains -functions for the following purposes: - -- Parsing MIME messages - -- Several encoding/decoding functions (Base 64, Quoted Printable, Q, - URL-encoding) - -- A new implementation of the CGI interface that allows users to upload files - -- A simple HTML parser - -- URL parsing, printing and processing - -- Conversion between character sets - -============================================================================== -Download -============================================================================== - -You can download Netstring as gzip'ed tarball [1]. - -============================================================================== -Documentation -============================================================================== - -Sorry, there is no manual. The mli files describe each function in detail. -Furthermore, the following additional information may be useful. - ------------------------------------------------------------------------------- -New CGI implementation ------------------------------------------------------------------------------- - -For a long time, the CGI implementation by Jean-Christophe Filliatre has been -the only freely available module that implemented the CGI interface (it also -based on code by Daniel de Rauglaudre). It worked well, but it did not support -file uploads because this requires a parser for MIME messages. - -The main goal of Netstring is to realize such uploads, and because of this it -contains an almost complete parser for MIME messages. - -The new CGI implementation provides the same functions than the old one, and -some extensions. If you call Cgi.parse_args(), you get the CGI parameters as -before, but as already explained this works also if the parameters are -encaspulated as MIME message. In the HTML code, you can select the MIME format -by using - -
    -... -
    - - -- this "enctype" attribute forces the browser to send the form parameters as -multipart MIME message (Note: You can neither send the parameters of a -conventional hyperlink as MIME message nor the form parameters if the "method" -is "get"). In many browsers only this particular encoding enables the file -upload elements, you cannot perform file uploads with other encodings. - -As MIME messages can transport MIME types, filename, and other additional -properties, it is also possible to get these using the enhanced interface. -After calling - -Cgi.parse_arguments config - -you can get all available information about a certain parameter by invoking - -let param = Cgi.argument "name" - -- where "param" has the type "argument". There are several accessor functions -to extract the various aspects of arguments (name, filename, value by string, -value by temporary file, MIME type, MIME header) from "argument" values. - ------------------------------------------------------------------------------- -Base64, and other encodings ------------------------------------------------------------------------------- - -Netstring is also the successor of the Base64 package. It provides a Base64 -compatible interface, and an enhanced API. The latter is contained in the -Netencoding module which also offers implementations of the "quoted printable", -"Q", and "URL" encodings. Please see netencoding.mli for details. - ------------------------------------------------------------------------------- -The MIME scanner functions ------------------------------------------------------------------------------- - -In the Mimestring module you can find several functions scanning parts of MIME -messages. These functions already cover most aspects of MIME messages: Scanning -of headers, analysis of structured header entries, and scanning of multipart -bodies. Of course, a full-featured MIME scanner would require some more -functions, especially concrete parsers for frequent structures (mail addresses -or date strings). - -Please see the file mimestring.mli for details. - ------------------------------------------------------------------------------- -The HTML parser ------------------------------------------------------------------------------- - -The HTML parser should be able to read every HTML file; whether it is correct -or not. The parser tries to recover from parsing errors as much as possible. - -The parser returns the HTML term as conventional recursive value (i.e. no -object-oriented design). - -The parser depends a bit on knowledge about the HTML version; mainly because it -needs to know the tags that are always empty. It may be necessary that you must -adjust this configuration before the parser works well enough for your purpose. - -Please see the Nethtml module for details. - ------------------------------------------------------------------------------- -The abstract data type URL ------------------------------------------------------------------------------- - -The module Neturl contains support for URL parsing and processing. The -implementation follows strictly the standards RFC 1738 and RFC 1808. URLs can -be parsed, and several accessor functions allow the user to get components of -parsed URLs, or to change components. Modifying URLs is safe; it is impossible -to create a URL that does not have a valid string representation. - -Both absolute and relative URLs are supported. It is possible to apply a -relative URL to a base URL in order to get the corresponding absolute URL. - ------------------------------------------------------------------------------- -Conversion between character sets and encodings ------------------------------------------------------------------------------- - -The module Netconversion converts strings from one characters set to another. -It is Unicode-based, and there are conversion tables for more than 50 -encodings. - -============================================================================== -Author, Copying -============================================================================== - -Netstring has been written by Gerd Stolpmann [2]. You may copy it as you like, -you may use it even for commercial purposes as long as the license conditions -are respected, see the file LICENSE coming with the distribution. It allows -almost everything. - -============================================================================== -History -============================================================================== - -- Changed in 0.9.3: Fixed a bug in the "install" rule of the Makefile. - -- Changed in 0.9.2: New format for the conversion tables which are now much - smaller. - -- Changed in 0.9.1: Updated the Makefile such that (native-code) compilation - of netmappings.ml becomes possible. - -- Changed in 0.9: Extended Mimestring module: It can now process RFC-2047 - messages. - New Netconversion module which converts strings between character encodings. - -- Changed in 0.8.1: Added the component url_accepts_8bits to - Neturl.url_syntax. This helps processing URLs which intentionally contain - bytes >= 0x80. - Fixed a bug: Every URL containing a 'j' was malformed! - -- Changed in 0.8: Added the module Neturl which provides the abstract data - types of URLs. - The whole package is now thread-safe. - Added printers for the various opaque data types. - Added labels to function arguments where appropriate. The following - functions changed their signatures significantly: Cgi.mk_memory_arg, - Cgi.mk_file_arg. - -- Changed in 0.7: Added workarounds for frequent browser bugs. Some functions - take now an additional argument specifying which workarounds are enabled. - -- Changed in 0.6.1: Updated URLs in documentation. - -- Changed in 0.6: The file upload has been re-implemented to support large - files; the file is now read block by block and the blocks can be collected - either in memory or in a temporary file. - Furthermore, the CGI API has been revised. There is now an opaque data type - "argument" that hides all implementation details and that is extensible (if - necessary, it is possible to add features without breaking the interface - again). - The CGI argument parser can be configured; currently it is possible to limit - the size of uploaded data, to control by which method arguments are - processed, and to set up where temporary files are created. - The other parts of the package that have nothing to do with CGI remain - unchanged. - -- Changed in 0.5.1: A mistake in the documentation has been corrected. - -- Initial version 0.5: The Netstring package wants to be the successor of the - Base64-0.2 and the Cgi-0.3 packages. The sum of both numbers is 0.5, and - because of this, the first version number is 0.5. - - --------------------------- - -[1] see http://www.ocaml-programming.de/packages/netstring-0.9.2.tar.gz - -[2] see mailto:gerd@gerd-stolpmann.de - - - diff --git a/helm/DEVEL/pxp/netstring/doc/README.xml b/helm/DEVEL/pxp/netstring/doc/README.xml deleted file mode 100644 index bbf473e99..000000000 --- a/helm/DEVEL/pxp/netstring/doc/README.xml +++ /dev/null @@ -1,244 +0,0 @@ - - -%common; - - -up'> - - -%config; - -]> - - - - Abstract -

    -Netstring is a collection of string processing functions that are -useful in conjunction with Internet messages and protocols. In particular, -it contains functions for the following purposes:

    - -
      -
    • Parsing MIME messages

      -
    • -
    • Several encoding/decoding functions (Base 64, Quoted Printable, Q, URL-encoding)

      -
    • -
    • A new implementation of the CGI interface that allows users to upload files

      -
    • -
    • A simple HTML parser

      -
    • -
    • URL parsing, printing and processing

      -
    • -
    • Conversion between character sets

      -
    • -
    - -
    - - - Download -

    -You can download Netstring as gzip'ed tarball. -

    - -
    - - - Documentation -

    -Sorry, there is no manual. The mli files describe each function in -detail. Furthermore, the following additional information may be useful.

    - - - New CGI implementation - -

    For a long time, the CGI implementation by Jean-Christophe Filliatre -has been the only freely available module that implemented the CGI interface -(it also based on code by Daniel de Rauglaudre). It worked well, but it did not -support file uploads because this requires a parser for MIME messages.

    -

    The main goal of Netstring is to realize such uploads, and because of -this it contains an almost complete parser for MIME messages.

    -

    The new CGI implementation provides the same functions than the old -one, and some extensions. If you call Cgi.parse_args(), you get the CGI -parameters as before, but as already explained this works also if the -parameters are encaspulated as MIME message. In the HTML code, you can select -the MIME format by using - -... - -]]> - -- this "enctype" attribute forces the browser to send the form parameters -as multipart MIME message (Note: You can neither send the parameters of a -conventional hyperlink as MIME message nor the form parameters if the -"method" is "get"). In many browsers only this particular encoding enables -the file upload elements, you cannot perform file uploads with other encodings. -

    - -

    As MIME messages can transport MIME types, filename, and other -additional properties, it is also possible to get these using the enhanced -interface. After calling - -you can get all available information about a certain parameter by invoking - -- where "param" has the type "argument". There are several accessor functions -to extract the various aspects of arguments (name, filename, value by string, -value by temporary file, MIME type, MIME header) from "argument" values. -

    - -
    - - - - Base64, and other encodings - -

    Netstring is also the successor of the Base64 package. It provides a -Base64 compatible interface, and an enhanced API. The latter is contained in -the Netencoding module which also offers implementations of the "quoted -printable", "Q", and "URL" encodings. Please see netencoding.mli for -details.

    - -
    - - - - The MIME scanner functions - -

    In the Mimestring module you can find several functions scanning parts -of MIME messages. These functions already cover most aspects of MIME messages: -Scanning of headers, analysis of structured header entries, and scanning of -multipart bodies. Of course, a full-featured MIME scanner would require some -more functions, especially concrete parsers for frequent structures -(mail addresses or date strings). -

    -

    Please see the file mimestring.mli for details.

    -
    - - - - The HTML parser - -

    The HTML parser should be able to read every HTML file; whether it is -correct or not. The parser tries to recover from parsing errors as much as -possible. -

    -

    The parser returns the HTML term as conventional recursive value -(i.e. no object-oriented design).

    -

    The parser depends a bit on knowledge about the HTML version; mainly -because it needs to know the tags that are always empty. It may be necessary -that you must adjust this configuration before the parser works well enough for -your purpose. -

    -

    Please see the Nethtml module for details.

    -
    - - - The abstract data type URL -

    The module Neturl contains support for URL parsing and processing. -The implementation follows strictly the standards RFC 1738 and RFC 1808. -URLs can be parsed, and several accessor functions allow the user to -get components of parsed URLs, or to change components. Modifying URLs -is safe; it is impossible to create a URL that does not have a valid -string representation.

    - -

    Both absolute and relative URLs are supported. It is possible to -apply a relative URL to a base URL in order to get the corresponding -absolute URL.

    -
    - - - Conversion between character sets and encodings -

    The module Netconversion converts strings from one characters set -to another. It is Unicode-based, and there are conversion tables for more than -50 encodings.

    -
    - -
    - - - Author, Copying -

    -Netstring has been written by &person.gps;. You may copy it as you like, -you may use it even for commercial purposes as long as the license conditions -are respected, see the file LICENSE coming with the distribution. It allows -almost everything. -

    -
    - - - History - -
      -
    • Changed in 0.9.3: Fixed a bug in the "install" rule of -the Makefile.

      -
    • -
    • Changed in 0.9.2: New format for the conversion tables -which are now much smaller.

      -
    • -
    • Changed in 0.9.1: Updated the Makefile such that -(native-code) compilation of netmappings.ml becomes possible. -

      -
    • -
    • Changed in 0.9: Extended Mimestring module: It can -now process RFC-2047 messages.

      -

      New Netconversion module which converts strings between character -encodings.

      -
    • -
    • Changed in 0.8.1: Added the component -url_accepts_8bits to Neturl.url_syntax. This helps processing URLs which -intentionally contain bytes >= 0x80.

      -

      Fixed a bug: Every URL containing a 'j' was malformed!

      -
    • -
    • Changed in 0.8: Added the module Neturl which -provides the abstract data types of URLs.

      -

      The whole package is now thread-safe.

      -

      Added printers for the various opaque data types.

      -

      Added labels to function arguments where appropriate. The -following functions changed their signatures significantly: -Cgi.mk_memory_arg, Cgi.mk_file_arg.

      -
    • -
    • Changed in 0.7: Added workarounds for frequent -browser bugs. Some functions take now an additional argument -specifying which workarounds are enabled.

      -
    • -
    • Changed in 0.6.1: Updated URLs in documentation.

      -
    • - -
    • Changed in 0.6: The file upload has been re-implemented -to support large files; the file is now read block by block and the blocks can -be collected either in memory or in a temporary file.
      -Furthermore, the CGI API has been revised. There is now an opaque data type -"argument" that hides all implementation details and that is extensible (if -necessary, it is possible to add features without breaking the interface -again).
      -The CGI argument parser can be configured; currently it is possible to -limit the size of uploaded data, to control by which method arguments are -processed, and to set up where temporary files are created.
      -The other parts of the package that have nothing to do with CGI remain -unchanged. -

      -
    • - -
    • Changed in 0.5.1: A mistake in the documentation has -been corrected.

      -
    • - -
    • Initial version 0.5: -The Netstring package wants to be the successor of the Base64-0.2 and -the Cgi-0.3 packages. The sum of both numbers is 0.5, and because of this, -the first version number is 0.5. -

      -
    • -
    -
    - -
    - diff --git a/helm/DEVEL/pxp/netstring/mimestring.ml b/helm/DEVEL/pxp/netstring/mimestring.ml deleted file mode 100644 index 8fc4bfcbe..000000000 --- a/helm/DEVEL/pxp/netstring/mimestring.ml +++ /dev/null @@ -1,1035 +0,0 @@ -(* $Id$ - * ---------------------------------------------------------------------- - * - *) - -module Str = Netstring_str;; - -let cr_or_lf_re = Str.regexp "[\013\n]";; - -let trim_right_spaces_re = - Str.regexp "[ \t]+$";; - -let trim_left_spaces_re = - Str.regexp "^[ \t]+";; - -let header_re = - Str.regexp "\\([^ \t\r\n:]+\\):\\([ \t]*.*\n\\([ \t].*\n\\)*\\)";; - -let empty_line_re = - Str.regexp "\013?\n";; - -let end_of_header_re = - Str.regexp "\n\013?\n";; - - -let scan_header ?(unfold=true) parstr ~start_pos:i0 ~end_pos:i1 = - let rec parse_header i l = - match Str.string_partial_match header_re parstr i with - Some r -> - let i' = Str.match_end r in - if i' > i1 then - failwith "Mimestring.scan_header"; - let name = String.lowercase(Str.matched_group r 1 parstr) in - let value_with_crlf = - Str.matched_group r 2 parstr in - let value = - if unfold then begin - let value_with_rspaces = - Str.global_replace cr_or_lf_re "" value_with_crlf in - let value_with_lspaces = - Str.global_replace trim_right_spaces_re "" value_with_rspaces in - Str.global_replace trim_left_spaces_re "" value_with_lspaces - end - else value_with_crlf - in - parse_header i' ( (name,value) :: l) - | None -> - (* The header must end with an empty line *) - begin match Str.string_partial_match empty_line_re parstr i with - Some r' -> - List.rev l, Str.match_end r' - | None -> - failwith "Mimestring.scan_header" - end - in - parse_header i0 [] -;; - -type s_token = - Atom of string - | EncodedWord of (string * string * string) - | QString of string - | Control of char - | Special of char - | DomainLiteral of string - | Comment - | End -;; - -type s_option = - No_backslash_escaping - | Return_comments - | Recognize_encoded_words -;; - -type s_extended_token = - { token : s_token; - token_pos : int; - token_line : int; - token_linepos : int; (* Position of the beginning of the line *) - token_len : int; - mutable token_sep : bool; (* separates adjacent encoded words *) - } -;; - -let get_token et = et.token;; -let get_pos et = et.token_pos;; -let get_line et = et.token_line;; -let get_column et = et.token_pos - et.token_linepos;; -let get_length et = et.token_len;; -let separates_adjacent_encoded_words et = et.token_sep;; - -let get_decoded_word et = - match et.token with - Atom s -> s - | QString s -> s - | Control c -> String.make 1 c - | Special c -> String.make 1 c - | DomainLiteral s -> s - | Comment -> "" - | EncodedWord (_, encoding, content) -> - ( match encoding with - ("Q"|"q") -> - Netencoding.Q.decode content - | ("B"|"b") -> - Netencoding.Base64.decode - ~url_variant:false - ~accept_spaces:false - content - | _ -> failwith "get_decoded_word" - ) - | End -> - failwith "get_decoded_word" -;; - -let get_charset et = - match et.token with - EncodedWord (charset, _, _) -> charset - | End -> failwith "get_charset" - | _ -> "US-ASCII" -;; - -type scanner_spec = - { (* What the user specifies: *) - scanner_specials : char list; - scanner_options : s_option list; - (* Derived from that: *) - mutable opt_no_backslash_escaping : bool; - mutable opt_return_comments : bool; - mutable opt_recognize_encoded_words : bool; - - mutable is_special : bool array; - mutable space_is_special : bool; - } -;; - -type scanner_target = - { scanned_string : string; - mutable scanner_pos : int; - mutable scanner_line : int; - mutable scanner_linepos : int; - (* Position of the beginning of the line *) - mutable scanned_tokens : s_extended_token Queue.t; - (* A queue of already scanned tokens in order to look ahead *) - mutable last_token : s_token; - (* The last returned token. It is only important whether it is - * EncodedWord or not. - *) - } -;; - -type mime_scanner = scanner_spec * scanner_target -;; - -let get_pos_of_scanner (spec, target) = - if spec.opt_recognize_encoded_words then - failwith "get_pos_of_scanner" - else - target.scanner_pos -;; - -let get_line_of_scanner (spec, target) = - if spec.opt_recognize_encoded_words then - failwith "get_line_of_scanner" - else - target.scanner_line -;; - -let get_column_of_scanner (spec, target) = - if spec.opt_recognize_encoded_words then - failwith "get_column_of_scanner" - else - target.scanner_pos - target.scanner_linepos -;; - -let create_mime_scanner ~specials ~scan_options = - let is_spcl = Array.create 256 false in - List.iter - (fun c -> is_spcl.( Char.code c ) <- true) - specials; - let spec = - { scanner_specials = specials; - scanner_options = scan_options; - opt_no_backslash_escaping = - List.mem No_backslash_escaping scan_options; - opt_return_comments = - List.mem Return_comments scan_options; - opt_recognize_encoded_words = - List.mem Recognize_encoded_words scan_options; - is_special = is_spcl; - space_is_special = is_spcl.(32); - } - in - (* Grab the remaining arguments: *) - fun ?(pos=0) ?(line=1) ?(column=0) s -> - let target = - { scanned_string = s; - scanner_pos = pos; - scanner_line = line; - scanner_linepos = pos - column; - scanned_tokens = Queue.create(); - last_token = Comment; (* Must not be initialized with EncodedWord *) - } - in - spec, target -;; - - -let encoded_word_re = - Str.regexp "=\\?\\([^?]+\\)\\?\\([^?]+\\)\\?\\([^?]+\\)\\?=";; - -let scan_next_token ((spec,target) as scn) = - let mk_pair t len = - { token = t; - token_pos = target.scanner_pos; - token_line = target.scanner_line; - token_linepos = target.scanner_linepos; - token_len = len; - token_sep = false; - }, - t - in - - (* Note: mk_pair creates a new token pair, and it assumes that - * target.scanner_pos (and also scanner_line and scanner_linepos) - * still contain the position of the beginning of the token. - *) - - let s = target.scanned_string in - let l = String.length s in - let rec scan i = - if i < l then begin - let c = s.[i] in - if spec.is_special.( Char.code c ) then begin - let pair = mk_pair (Special c) 1 in - target.scanner_pos <- target.scanner_pos + 1; - (match c with - '\n' -> - target.scanner_line <- target.scanner_line + 1; - target.scanner_linepos <- target.scanner_pos; - | _ -> () - ); - pair - end - else - match c with - '"' -> - (* Quoted string: *) - scan_qstring (i+1) (i+1) 0 - | '(' -> - (* Comment: *) - let i', line, linepos = - scan_comment (i+1) 0 target.scanner_line target.scanner_linepos - in - let advance() = - target.scanner_pos <- i'; - target.scanner_line <- line; - target.scanner_linepos <- linepos - in - if spec.opt_return_comments then begin - let pair = mk_pair Comment (i' - i) in - advance(); - pair - end - else - if spec.space_is_special then begin - let pair = mk_pair (Special ' ') (i' - i) in - advance(); - pair - end - else begin - advance(); - scan i' - end - | (' '|'\t'|'\r') -> - (* Ignore whitespace by default: *) - target.scanner_pos <- target.scanner_pos + 1; - scan (i+1) - | '\n' -> - (* Ignore whitespace by default: *) - target.scanner_pos <- target.scanner_pos + 1; - target.scanner_line <- target.scanner_line + 1; - target.scanner_linepos <- target.scanner_pos; - scan (i+1) - | ('\000'..'\031'|'\127'..'\255') -> - let pair = mk_pair (Control c) 1 in - target.scanner_pos <- target.scanner_pos + 1; - pair - | '[' -> - (* Domain literal: *) - scan_dliteral (i+1) (i+1) 0 - | _ -> - scan_atom i i - end - else - mk_pair End 0 - - and scan_atom i0 i = - let return_atom() = - let astring = String.sub s i0 (i-i0) in - let r = - if spec.opt_recognize_encoded_words then - Str.string_match ~groups:4 encoded_word_re astring 0 - else - None - in - match r with - None -> - (* An atom contains never a linefeed character, so we can ignore - * scanner_line here. - *) - let pair = mk_pair (Atom astring) (i-i0) in - target.scanner_pos <- i; - pair - | Some mr -> - (* Found an encoded word. *) - let charset = Str.matched_group mr 1 astring in - let encoding = Str.matched_group mr 2 astring in - let content = Str.matched_group mr 3 astring in - let t = EncodedWord(String.uppercase charset, - String.uppercase encoding, - content) in - let pair = mk_pair t (i-i0) in - target.scanner_pos <- i; - pair - in - - if i < l then - let c = s.[i] in - match c with - ('\000'..'\031'|'\127'..'\255'|'"'|'('|'['|' '|'\t'|'\r'|'\n') -> - return_atom() - | _ -> - if spec.is_special.( Char.code c ) then - return_atom() - else - scan_atom i0 (i+1) - else - return_atom() - - and scan_qstring i0 i n = - if i < l then - let c = s.[i] in - match c with - '"' -> - (* Regular end of the quoted string: *) - let content, line, linepos = copy_qstring i0 (i-1) n in - let pair = mk_pair (QString content) (i-i0+2) in - target.scanner_pos <- i+1; - target.scanner_line <- line; - target.scanner_linepos <- linepos; - pair - | '\\' when not spec.opt_no_backslash_escaping -> - scan_qstring i0 (i+2) (n+1) - | _ -> - scan_qstring i0 (i+1) (n+1) - else - (* Missing right double quote *) - let content, line, linepos = copy_qstring i0 (l-1) n in - let pair = mk_pair (QString content) (l-i0+1) in - target.scanner_pos <- l; - target.scanner_line <- line; - target.scanner_linepos <- linepos; - pair - - and copy_qstring i0 i1 n = - (* Used for quoted strings and for domain literals *) - let r = String.create n in - let k = ref 0 in - let line = ref target.scanner_line in - let linepos = ref target.scanner_linepos in - for i = i0 to i1 do - let c = s.[i] in - match c with - '\\' when i < i1 && not spec.opt_no_backslash_escaping -> () - | '\n' -> - line := !line + 1; - linepos := i+1; - r.[ !k ] <- c; - incr k - | _ -> - r.[ !k ] <- c; - incr k - done; - assert (!k = n); - r, !line, !linepos - - and scan_dliteral i0 i n = - if i < l then - let c = s.[i] in - match c with - ']' -> - (* Regular end of the domain literal: *) - let content, line, linepos = copy_qstring i0 (i-1) n in - let pair = mk_pair (DomainLiteral content) (i-i0+2) in - target.scanner_pos <- i+1; - target.scanner_line <- line; - target.scanner_linepos <- linepos; - pair - | '\\' when not spec.opt_no_backslash_escaping -> - scan_dliteral i0 (i+2) (n+1) - | _ -> - (* Note: '[' is not allowed by RFC 822; we treat it here as - * a regular character (questionable) - *) - scan_dliteral i0 (i+1) (n+1) - else - (* Missing right bracket *) - let content, line, linepos = copy_qstring i0 (l-1) n in - let pair = mk_pair (DomainLiteral content) (l-i0+1) in - target.scanner_pos <- l; - target.scanner_line <- line; - target.scanner_linepos <- linepos; - pair - - - and scan_comment i level line linepos = - if i < l then - let c = s.[i] in - match c with - ')' -> - (i+1), line, linepos - | '(' -> - (* nested comment *) - let i', line', linepos' = - scan_comment (i+1) (level+1) line linepos - in - scan_comment i' level line' linepos' - | '\\' when not spec.opt_no_backslash_escaping -> - if (i+1) < l && s.[i+1] = '\n' then - scan_comment (i+2) level (line+1) (i+2) - else - scan_comment (i+2) level line linepos - | '\n' -> - scan_comment (i+1) level (line+1) (i+1) - | _ -> - scan_comment (i+1) level line linepos - else - (* Missing closing ')' *) - i, line, linepos - in - - scan target.scanner_pos -;; - - -let scan_token ((spec,target) as scn) = - (* This function handles token queueing in order to recognize white space - * that separates adjacent encoded words. - *) - - let rec collect_whitespace () = - (* Scans whitespace tokens and returns them as: - * (ws_list, other_tok) if there is some other_tok following the - * list (other_tok = End is possible) - *) - let (et, t) as pair = scan_next_token scn in - ( match t with - (Special ' '|Special '\t'|Special '\n'|Special '\r') -> - let ws_list, tok = collect_whitespace() in - pair :: ws_list, tok - | _ -> - [], pair - ) - in - - try - (* Is there an already scanned token in the queue? *) - let et = Queue.take target.scanned_tokens in - let t = et.token in - target.last_token <- t; - et, et.token - with - Queue.Empty -> - (* If not: inspect the last token. If that token is an EncodedWord, - * the next tokens are scanned in advance to determine if there - * are spaces separating two EncodedWords. These tokens are put - * into the queue such that it is avoided that they are scanned - * twice. (The sole purpose of the queue.) - *) - match target.last_token with - EncodedWord(_,_,_) as ew -> - let ws_list, tok = collect_whitespace() in - (* If tok is an EncodedWord, too, the tokens in ws_list must - * be flagged as separating two adjacent encoded words. - *) - ( match tok with - _, EncodedWord(_,_,_) -> - List.iter - (fun (et,t) -> - et.token_sep <- true) - ws_list - | _ -> - () - ); - (* Anyway, queue the read tokens but the first up *) - ( match ws_list with - [] -> - (* Nothing to queue *) - let et, t = tok in - target.last_token <- t; - tok - | (et,t) as pair :: ws_list' -> - List.iter - (fun (et',_) -> - Queue.add et' target.scanned_tokens) - ws_list'; - ( match tok with - | _, End -> - () - | (et',_) -> - Queue.add et' target.scanned_tokens - ); - (* Return the first scanned token *) - target.last_token <- t; - pair - ) - | _ -> - (* Regular case: Scan one token; do not queue it up *) - let (et, t) as pair = scan_next_token scn in - target.last_token <- t; - pair -;; - - -let scan_token_list scn = - let rec collect() = - match scan_token scn with - _, End -> - [] - | pair -> - pair :: collect() - in - collect() -;; - - -let scan_structured_value s specials options = - let rec collect scn = - match scan_token scn with - _, End -> - [] - | _, t -> - t :: collect scn - in - let scn = create_mime_scanner specials options s in - collect scn -;; - - -let specials_rfc822 = - [ '<'; '>'; '@'; ','; ';'; ':'; '\\'; '.' ];; - - -let specials_rfc2045 = - [ '<'; '>'; '@'; ','; ';'; ':'; '\\'; '/' ];; - - -let scan_encoded_text_value s = - let specials = [ ' '; '\t'; '\r'; '\n'; '('; '['; '"' ] in - let options = [ Recognize_encoded_words ] in - let scn = create_mime_scanner specials options s in - - let rec collect () = - match scan_token scn with - _, End -> - [] - | et, _ when separates_adjacent_encoded_words et -> - collect() - | et, (Special _|Atom _|EncodedWord(_,_,_)) -> - et :: collect () - | _, _ -> - assert false - in - collect() -;; - - -let scan_value_with_parameters s options = - let rec parse_params tl = - match tl with - Atom n :: Special '=' :: Atom v :: tl' -> - (n,v) :: parse_rest tl' - | Atom n :: Special '=' :: QString v :: tl' -> - (n,v) :: parse_rest tl' - | _ -> - failwith "Mimestring.scan_value_with_parameters" - and parse_rest tl = - match tl with - [] -> [] - | Special ';' :: tl' -> - parse_params tl' - | _ -> - failwith "Mimestring.scan_value_with_parameters" - in - - (* Note: Even if not used here, the comma is a very common separator - * and should be recognized as being special. You will get a - * failure if there is a comma in the scanned string. - *) - let tl = scan_structured_value s [ ';'; '='; ',' ] options in - match tl with - [ Atom n ] -> n, [] - | [ QString n ] -> n, [] - | Atom n :: Special ';' :: tl' -> - n, parse_params tl' - | QString n :: Special ';' :: tl' -> - n, parse_params tl' - | _ -> - failwith "Mimestring.scan_value_with_parameters" -;; - - -let scan_mime_type s options = - let n, params = scan_value_with_parameters s options in - (String.lowercase n), - (List.map (fun (n,v) -> (String.lowercase n, v)) params) -;; - - -let lf_re = Str.regexp "[\n]";; - -let scan_multipart_body s ~start_pos:i0 ~end_pos:i1 ~boundary = - let l_s = String.length s in - if i0 < 0 or i1 < 0 or i0 > l_s or i1 >l_s then - invalid_arg "Mimestring.scan_multipart_body"; - - (* First compile the regexps scanning for 'boundary': *) - let boundary1_re = - Str.regexp ("\n--" ^ Str.quote boundary) in - let boundary2_re = - Str.regexp ("--" ^ Str.quote boundary) in - - let rec parse i = - (* i: Beginning of the current part (position directly after the - * boundary line - *) - (* Search for next boundary at position i *) - let i' = - try min (fst (Str.search_forward boundary1_re s i) + 1) i1 - with - Not_found -> i1 - in - (* i': Either the position of the first '-' of the boundary line, - * or i1 if no boundary has been found - *) - if i' >= i1 then - [] (* Ignore everything after the last boundary *) - else - let i'' = - try min (fst (Str.search_forward lf_re s i') + 1) i1 - with - Not_found -> i1 - in - (* i'': The position after the boundary line *) -(* - print_int i; print_newline(); - print_int i'; print_newline(); - print_int i''; print_newline(); - flush stdout; -*) - let header, k = scan_header s i i' in - (* header: the header of the part - * k: beginning of the body - *) - - let value = - (* We know that i'-1 is a linefeed character. i'-2 should be a CR - * character. Both characters are not part of the value. - *) - if i' >= 2 then - match s.[i'-2] with - '\013' -> String.sub s k (i'-2-k) - | _ -> String.sub s k (i'-1-k) - else - String.sub s k (i'-1-k) - in - - let pair = - (header, value) in - - if i'' >= i1 - then - [ pair ] - else - pair :: parse i'' - in - - (* Find the first boundary. This is a special case, because it may be - * right at the beginning of the string (no preceding CRLF) - *) - - let i_bnd = - if Str.string_partial_match boundary2_re s i0 <> None then - i0 - else - try min (fst (Str.search_forward boundary1_re s i0)) i1 - with - Not_found -> i1 - in - - if i_bnd >= i1 then - [] - else - let i_bnd' = - try min (fst (Str.search_forward lf_re s (i_bnd + 1)) + 1) i1 - with - Not_found -> i1 - in - if i_bnd' >= i1 then - [] - else - parse i_bnd' -;; - - -let scan_multipart_body_and_decode s ~start_pos:i0 ~end_pos:i1 ~boundary = - let parts = scan_multipart_body s i0 i1 boundary in - List.map - (fun (params, value) -> - let encoding = - try List.assoc "content-transfer-encoding" params - with Not_found -> "7bit" - in - - (* NOTE: In the case of "base64" and "quoted-printable", the allocation - * of the string "value" could be avoided. - *) - - let value' = - match encoding with - ("7bit"|"8bit"|"binary") -> value - | "base64" -> - Netencoding.Base64.decode_substring - value 0 (String.length value) false true - | "quoted-printable" -> - Netencoding.QuotedPrintable.decode_substring - value 0 (String.length value) - | _ -> - failwith "Mimestring.scan_multipart_body_and_decode: Unknown content-transfer-encoding" - in - (params, value') - ) - parts -;; - - -let scan_multipart_body_from_netstream s ~boundary ~create ~add ~stop = - - (* The block size of s must be at least the length of the boundary + 3. - * Otherwise it is not guaranteed that the boundary is always recognized. - *) - if Netstream.block_size s < String.length boundary + 3 then - invalid_arg "Mimestring.scan_multipart_body_from_netstream"; - - (* First compile the regexps scanning for 'boundary': *) - let boundary1_re = - Str.regexp ("\n--" ^ Str.quote boundary) in - let boundary2_re = - Str.regexp ("--" ^ Str.quote boundary) in - - (* Subtask 1: Search the end of the MIME header: CR LF CR LF - * (or LF LF). Enlarge the window until the complete header - * is covered by the window. - *) - let rec search_end_of_header k = - (* Search the end of the header beginning at position k of the - * current window. - * Return the position of the first character of the body. - *) - try - (* Search for LF CR? LF: *) - let i, r = Str.search_forward - end_of_header_re - (Netbuffer.unsafe_buffer (Netstream.window s)) - k - in - (* If match_end <= window_length, the search was successful. - * Otherwise, we searched in the uninitialized region of the - * buffer. - *) - if Str.match_end r <= Netstream.window_length s then - Str.match_end r - else - raise Not_found - with - Not_found -> - (* If the end of the stream is reached, the end of the header - * is missing: Error. - * Otherwise, we try to read another block, and continue. - *) - if Netstream.at_eos s then - failwith "Mimestring.scan_multipart_body_from_netstream: Unexpected end of stream"; - let w0 = Netstream.window_length s in - Netstream.want_another_block s; - search_end_of_header (max (w0 - 2) 0) - in - - (* Subtask 2: Search the first boundary line. *) - let rec search_first_boundary() = - (* Search boundary per regexp; return the position of the character - * immediately following the boundary (on the same line), or - * raise Not_found. - *) - try - (* Search boundary per regexp: *) - let i, r = Str.search_forward - boundary1_re - (Netbuffer.unsafe_buffer (Netstream.window s)) - 0 - in - (* If match_end <= window_length, the search was successful. - * Otherwise, we searched in the uninitialized region of the - * buffer. - *) - if Str.match_end r <= Netstream.window_length s then begin - Str.match_end r - end - else raise Not_found - with - Not_found -> - if Netstream.at_eos s then raise Not_found; - (* The regexp did not match: Move the window by one block. - *) - let n = - min - (Netstream.window_length s) - (Netstream.block_size s) - in - Netstream.move s n; - search_first_boundary() - in - - (* Subtask 3: Search the next boundary line. Invoke 'add' for every - * read chunk - *) - let rec search_next_boundary p = - (* Returns the position directly after the boundary on the same line *) - try - (* Search boundary per regexp: *) - let i,r = Str.search_forward - boundary1_re - (Netbuffer.unsafe_buffer (Netstream.window s)) - 0 - in - (* If match_end <= window_length, the search was successful. - * Otherwise, we searched in the uninitialized region of the - * buffer. - *) - if Str.match_end r <= Netstream.window_length s then begin - (* Add the last chunk of the part. *) - let n = - (* i is a LF. i - 1 should be CR. Ignore these characters. *) - if i >= 1 then - match (Netbuffer.unsafe_buffer (Netstream.window s)).[ i - 1 ] with - '\013' -> i - 1 - | _ -> i - else - i - in - (* Printf.printf "add n=%d\n" n; *) - add p s 0 n; - Str.match_end r - end - else raise Not_found - with - Not_found -> - if Netstream.at_eos s then - failwith "Mimestring.scan_multipart_body_from_netstream: next MIME boundary not found"; - (* The regexp did not match: Add the first block of the window; - * and move the window. - *) - let n = - min - (Netstream.window_length s) - (Netstream.block_size s) - in - (* Printf.printf "add n=%d\n" n; *) - add p s 0 n; - Netstream.move s n; - search_next_boundary p - in - - (* Subtask 4: Search the end of the boundary line *) - let rec search_end_of_line k = - (* Search LF beginning at position k. Discard any contents until that. *) - try - let i,r = Str.search_forward - lf_re - (Netbuffer.unsafe_buffer (Netstream.window s)) - k - in - (* If match_end <= window_length, the search was successful. - * Otherwise, we searched in the uninitialized region of the - * buffer. - *) - if Str.match_end r <= Netstream.window_length s then begin - Str.match_end r - end - else raise Not_found - with - Not_found -> - if Netstream.at_eos s then - failwith "Mimestring.scan_multipart_body_from_netstream: MIME boundary without line end"; - (* The regexp did not match: move the window. - *) - let n = Netstream.window_length s in - Netstream.move s n; - search_end_of_line 0 - in - - (* Subtask 5: Check whether "--" follows the boundary on the same line *) - let check_whether_last_boundary k = - (* k: The position directly after the boundary. *) - Netstream.want s (k+2); - let str = Netbuffer.unsafe_buffer (Netstream.window s) in - (Netstream.window_length s >= k+2) && str.[k] = '-' && str.[k+1] = '-' - in - - (* Subtask 6: Check whether the buffer begins with a boundary. *) - let check_beginning_is_boundary () = - let m = String.length boundary + 2 in - Netstream.want s m; - let str = Netbuffer.unsafe_buffer (Netstream.window s) in - (Netstream.window_length s >= m) && - (Str.string_partial_match boundary2_re str 0 <> None) - in - - let rec parse_part () = - (* The first byte of the current window of s contains the character - * directly following the boundary line that starts this part. - *) - (* Search the end of the MIME header: *) - let k_eoh = search_end_of_header 0 in - (* Printf.printf "k_eoh=%d\n" k_eoh; *) - (* Get the MIME header: *) - let str = Netbuffer.unsafe_buffer (Netstream.window s) in - let header, k_eoh' = scan_header str 0 k_eoh in - assert (k_eoh = k_eoh'); - (* Move the window over the header: *) - Netstream.move s k_eoh; - (* Create the part: *) - let p = create header in - let continue = - begin try - (* Search the next boundary; add the chunks while searching: *) - let k_eob = search_next_boundary p in - (* Printf.printf "k_eob=%d\n" k_eob; *) - (* Is this the last boundary? *) - if check_whether_last_boundary k_eob then begin - (* Skip the rest: *) - while not (Netstream.at_eos s) do - Netstream.move s (Netstream.window_length s) - done; - Netstream.move s (Netstream.window_length s); - false - end - else begin - (* Move to the beginning of the next line: *) - let k_eol = search_end_of_line k_eob in - Netstream.move s k_eol; - true - end - with - any -> - (try stop p with _ -> ()); - raise any - end in - stop p; - if continue then - (* Continue with next part: *) - parse_part() - in - - (* Check whether s directly begins with a boundary: *) - if check_beginning_is_boundary() then begin - (* Move to the beginning of the next line: *) - let k_eol = search_end_of_line 0 in - Netstream.move s k_eol; - (* Begin with first part: *) - parse_part() - end - else begin - (* Search the first boundary: *) - try - let k_eob = search_first_boundary() in - (* Printf.printf "k_eob=%d\n" k_eob; *) - (* Move to the beginning of the next line: *) - let k_eol = search_end_of_line k_eob in - (* Printf.printf "k_eol=%d\n" k_eol; *) - Netstream.move s k_eol; - (* Begin with first part: *) - parse_part() - with - Not_found -> - (* No boundary at all: The body is empty. *) - () - end; -;; - - -(* ====================================================================== - * History: - * - * $Log$ - * Revision 1.1 2000/11/17 09:57:27 lpadovan - * Initial revision - * - * Revision 1.8 2000/08/13 00:04:36 gerd - * Encoded_word -> EncodedWord - * Bugfixes. - * - * Revision 1.7 2000/08/07 00:25:14 gerd - * Implemented the new functions for structured field lexing. - * - * Revision 1.6 2000/06/25 22:34:43 gerd - * Added labels to arguments. - * - * Revision 1.5 2000/06/25 21:15:48 gerd - * Checked thread-safety. - * - * Revision 1.4 2000/05/16 22:30:14 gerd - * Added support for some types of malformed MIME messages. - * - * Revision 1.3 2000/04/15 13:09:01 gerd - * Implemented uploads to temporary files. - * - * Revision 1.2 2000/03/02 01:15:30 gerd - * Updated. - * - * Revision 1.1 2000/02/25 15:21:12 gerd - * Initial revision. - * - * - *) diff --git a/helm/DEVEL/pxp/netstring/mimestring.mli b/helm/DEVEL/pxp/netstring/mimestring.mli deleted file mode 100644 index 39634b59c..000000000 --- a/helm/DEVEL/pxp/netstring/mimestring.mli +++ /dev/null @@ -1,683 +0,0 @@ -(* $Id$ - * ---------------------------------------------------------------------- - * - *) - -(**********************************************************************) -(* Collection of auxiliary functions to parse MIME headers *) -(**********************************************************************) - - -val scan_header : - ?unfold:bool -> - string -> start_pos:int -> end_pos:int -> - ((string * string) list * int) - (* let params, i2 = scan_header s i0 i1: - * - * DESCRIPTION - * - * Scans the MIME header that begins at position i0 in the string s - * and that must end somewhere before position i1. It is intended - * that in i1 the character position following the end of the body of the - * MIME message is passed. - * Returns the parameters of the header as (name,value) pairs (in - * params), and in i2 the position of the character following - * directly after the header (i.e. after the blank line separating - * the header from the body). - * The following normalizations have already been applied: - * - The names are all in lowercase - * - Newline characters (CR and LF) have been removed (unless - * ?unfold:false has been passed) - * - Whitespace at the beginning and at the end of values has been - * removed (unless ?unfold:false is specified) - * The rules of RFC 2047 have NOT been applied. - * The function fails if the header violates the header format - * strongly. (Some minor deviations are tolerated, e.g. it is sufficient - * to separate lines by only LF instead of CRLF.) - * - * OPTIONS: - * - * unfold: If true (the default), folded lines are concatenated and - * returned as one line. This means that CR and LF characters are - * deleted and that whitespace at the beginning and the end of the - * string is removed. - * You may set ?unfold:false to locate individual characters in the - * parameter value exactly. - * - * ABOUT MIME MESSAGE FORMAT: - * - * This is the modern name for messages in "E-Mail format". Messages - * consist of a header and a body; the first empty line separates both - * parts. The header contains lines "param-name: param-value" where - * the param-name must begin on column 0 of the line, and the ":" - * separates the name and the value. So the format is roughly: - * - * param1-name: param1-value - * ... - * paramN-name: paramN-value - * - * body - * - * This function wants in i0 the position of the first character of - * param1-name in the string, and in i1 the position of the character - * following the body. It returns as i2 the position where the body - * begins. Furthermore, in 'params' all parameters are returned that - * exist in the header. - * - * DETAILS - * - * Note that parameter values are restricted; you cannot represent - * arbitrary strings. The following problems can arise: - * - Values cannot begin with whitespace characters, because there - * may be an arbitrary number of whitespaces between the ':' and the - * value. - * - Values (and names of parameters, too) must only be formed of - * 7 bit ASCII characters. (If this is not enough, the MIME standard - * knows the extension RFC 2047 that allows that header values may - * be composed of arbitrary characters of arbitrary character sets.) - * - Header values may be broken into several lines, the continuation - * lines must begin with whitespace characters. This means that values - * must not contain line breaks as semantical part of the value. - * And it may mean that ONE whitespace character is not distinguishable - * from SEVERAL whitespace characters. - * - Header lines must not be longer than 76 characters. Values that - * would result into longer lines must be broken into several lines. - * This means that you cannot represent strings that contain too few - * whitespace characters. - * - Some gateways pad the lines with spaces at the end of the lines. - * - * This implementation of a MIME scanner tolerates a number of - * deviations from the standard: long lines are not rejected; 8 bit - * values are accepted; lines may be ended only with LF instead of - * CRLF. - * Furthermore, header values are transformed: - * - leading and trailing spaces are always removed - * - CRs and LFs are deleted; it is guaranteed that there is at least - * one space or tab where CR/LFs are deleted. - * Last but not least, the names of the header values are converted - * to lowercase; MIME specifies that they are case-independent. - * - * COMPATIBILITY WITH THE STANDARD - * - * This function can parse all MIME headers that conform to RFC 822. - * But there may be still problems, as RFC 822 allows some crazy - * representations that are actually not used in practice. - * In particular, RFC 822 allows it to use backslashes to "indicate" - * that a CRLF sequence is semantically meant as line break. As this - * function normally deletes CRLFs, it is not possible to recognize such - * indicators in the result of the function. - *) - -(**********************************************************************) - -(* The following types and functions allow it to build scanners for - * structured MIME values in a highly configurable way. - * - * WHAT ARE STRUCTURED VALUES? - * - * RFC 822 (together with some other RFCs) defines lexical rules - * how formal MIME header values should be divided up into tokens. Formal - * MIME headers are those headers that are formed according to some - * grammar, e.g. mail addresses or MIME types. - * Some of the characters separate phrases of the value; these are - * the "special" characters. For example, '@' is normally a special - * character for mail addresses, because it separates the user name - * from the domain name. RFC 822 defines a fixed set of special - * characters, but other RFCs use different sets. Because of this, - * the following functions allow it to configure the set of special characters. - * Every sequence of characters may be embraced by double quotes, - * which means that the sequence is meant as literal data item; - * special characters are not recognized inside a quoted string. You may - * use the backslash to insert any character (including double quotes) - * verbatim into the quoted string (e.g. "He said: \"Give it to me!\""). - * The sequence of a backslash character and another character is called - * a quoted pair. - * Structured values may contain comments. The beginning of a comment - * is indicated by '(', and the end by ')'. Comments may be nested. - * Comments may contain quoted pairs. A - * comment counts as if a space character were written instead of it. - * Control characters are the ASCII characters 0 to 31, and 127. - * RFC 822 demands that MIME headers are 7 bit ASCII strings. Because - * of this, this function also counts the characters 128 to 255 as - * control characters. - * Domain literals are strings embraced by '[' and ']'; such literals - * may contain quoted pairs. Today, domain literals are used to specify - * IP addresses. - * Every character sequence not falling in one of the above categories - * is an atom (a sequence of non-special and non-control characters). - * When recognized, atoms may be encoded in a character set different than - * US-ASCII; such atoms are called encoded words (see RFC 2047). - * - * EXTENDED INTERFACE: - * - * In order to scan a string containing a MIME value, you must first - * create a mime_scanner using the function create_mime_scanner. - * The scanner contains the reference to the scanned string, and a - * specification how the string is to be scanned. The specification - * consists of the lists 'specials' and 'scan_options'. - * - * The character list 'specials' specifies the set of special characters. - * These characters are returned as Special c token; the following additional - * rules apply: - * - * - Spaces: - * If ' ' in specials: A space character is returned as Special ' '. - * Note that there may also be an effect on how comments are returned - * (see below). - * If ' ' not in specials: Spaces are ignored. - * - * - Tabs, CRs, LFs: - * If '\t' in specials: A tab character is returned as Special '\t'. - * If '\t' not in specials: Tabs are ignored. - * - * If '\r' in specials: A CR character is returned as Special '\r'. - * If '\r' not in specials: CRs are ignored. - * - * If '\n' in specials: A LF character is returned as Special '\n'. - * If '\n' not in specials: LFs are ignored. - * - * - Comments: - * If '(' in specials: Comments are not recognized. The character '(' - * is returned as Special '('. - * If '(' not in specials: Comments are recognized. How comments are - * returned, depends on the following: - * If Return_comments in scan_options: Outer comments are returned as - * Comment (note that inner comments count but - * are not returned as tokens) - * If otherwise ' ' in specials: Outer comments are returned as - * Special ' ' - * Otherwise: Comments are recognized but ignored. - * - * - Quoted strings: - * If '"' in specials: Quoted strings are not recognized, and double quotes - * are returned as Special '"'. - * If '"' not in specials: Quoted strings are returned as QString tokens. - * - * - Domain literals: - * If '[' in specials: Domain literals are not recognized, and left brackets - * are returned as Special '['. - * If '[' not in specials: Domain literals are returned as DomainLiteral - * tokens. - * - * Note that the rule for domain literals is completely new in netstring-0.9. - * It may cause incompatibilities with previous versions if '[' is not - * special. - * - * The general rule for special characters: Every special character c is - * returned as Special c, and any additional scanning functionality - * for this character is turned off. - * - * If recognized, quoted strings are returned as QString s, where - * s is the string without the embracing quotes, and with already - * decoded quoted pairs. - * - * Control characters c are returned as Control c. - * - * If recognized, comments may either be returned as spaces (in the case - * you are not interested in the contents of comments), or as Comment tokens. - * The contents of comments are not further scanned; you must start a - * subscanner to analyze comments as structured values. - * - * If recognized, domain literals are returned as DomainLiteral s, where - * s is the literal without brackets, and with decoded quoted pairs. - * - * Atoms are returned as Atom s where s is a longest sequence of - * atomic characters (all characters which are neither special nor control - * characters nor delimiters for substructures). If the option - * Recognize_encoded_words is on, atoms which look like encoded words - * are returned as EncodedWord tokens. (Important note: Neither '?' nor - * '=' must be special in order to enable this functionality.) - * - * After the mime_scanner has been created, you can scan the tokens by - * invoking scan_token which returns one token at a time, or by invoking - * scan_token_list which returns all following tokens. - * - * There are two token types: s_token is the base type and is intended to - * be used for pattern matching. s_extended_token is a wrapper that - * additionally contains information where the token occurs. - * - * SIMPLE INTERFACE - * - * Instead of creating a mime_scanner and calling the scan functions, - * you may also invoke scan_structured_value. This function returns the - * list of tokens directly; however, it is restricted to s_token. - * - * EXAMPLES - * - * scan_structured_value "user@domain.com" [ '@'; '.' ] [] - * = [ Atom "user"; Special '@'; Atom "domain"; Special '.'; Atom "com" ] - * - * scan_structured_value "user @ domain . com" [ '@'; '.' ] [] - * = [ Atom "user"; Special '@'; Atom "domain"; Special '.'; Atom "com" ] - * - * scan_structured_value "user(Do you know him?)@domain.com" [ '@'; '.' ] [] - * = [ Atom "user"; Special '@'; Atom "domain"; Special '.'; Atom "com" ] - * - * scan_structured_value "user(Do you know him?)@domain.com" [ '@'; '.' ] - * [ Return_comments ] - * = [ Atom "user"; Comment; Special '@'; Atom "domain"; Special '.'; - * Atom "com" ] - * - * scan_structured_value "user (Do you know him?) @ domain . com" - * [ '@'; '.'; ' ' ] [] - * = [ Atom "user"; Special ' '; Special ' '; Special ' '; Special '@'; - * Special ' '; Atom "domain"; - * Special ' '; Special '.'; Special ' '; Atom "com" ] - * - * scan_structured_value "user (Do you know him?) @ domain . com" - * [ '@'; '.'; ' ' ] [ Return_comments ] - * = [ Atom "user"; Special ' '; Comment; Special ' '; Special '@'; - * Special ' '; Atom "domain"; - * Special ' '; Special '.'; Special ' '; Atom "com" ] - * - * scan_structured_value "user @ domain . com" [ '@'; '.'; ' ' ] [] - * = [ Atom "user"; Special ' '; Special '@'; Special ' '; Atom "domain"; - * Special ' '; Special '.'; Special ' '; Atom "com" ] - * - * scan_structured_value "user(Do you know him?)@domain.com" ['@'; '.'; '('] - * [] - * = [ Atom "user"; Special '('; Atom "Do"; Atom "you"; Atom "know"; - * Atom "him?)"; Special '@'; Atom "domain"; Special '.'; Atom "com" ] - * - * scan_structured_value "\"My.name\"@domain.com" [ '@'; '.' ] [] - * = [ QString "My.name"; Special '@'; Atom "domain"; Special '.'; - * Atom "com" ] - * - * scan_structured_value "=?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?=" - * [ ] [ ] - * = [ Atom "=?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?=" ] - * - * scan_structured_value "=?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?=" - * [ ] [ Recognize_encoded_words ] - * = [ EncodedWord("ISO-8859-1", "Q", "Keld_J=F8rn_Simonsen") ] - * - *) - - - -type s_token = - Atom of string - | EncodedWord of (string * string * string) - | QString of string - | Control of char - | Special of char - | DomainLiteral of string - | Comment - | End - -(* - Words are: Atom, EncodedWord, QString. - * - Atom s: The character sequence forming the atom is contained in s - * - EncodedWord(charset, encoding, encoded_string) means: - * * charset is the (uppercase) character set - * * encoding is either "Q" or "B" - * * encoded_string: contains the text of the word; the text is represented - * as octet string following the conventions for character set charset and - * then encoded either as "Q" or "B" string. - * - QString s: Here, s are the characters inside the double quotes after - * decoding any quoted pairs (backslash + character pairs) - * - Control c: The control character c - * - Special c: The special character c - * - DomainLiteral s: s contains the characters inside the brackets after - * decoding any quoted pairs - * - Comment: if the option Return_comments is specified, this token - * represents the whole comment. - * - End: Is returned after the last token - *) - - -type s_option = - No_backslash_escaping - (* Do not handle backslashes in quoted string and comments as escape - * characters; backslashes are handled as normal characters. - * For example: "C:\dir\file" will be returned as - * QString "C:\dir\file", and not as QString "C:dirfile". - * - This is a common error in many MIME implementations. - *) - | Return_comments - (* Comments are returned as token Comment (unless '(' is included - * in the list of special characters, in which case comments are - * not recognized at all). - * You may get the exact location of the comment by applying - * get_pos and get_length to the extended token. - *) - | Recognize_encoded_words - (* Enables that encoded words are recognized and returned as - * EncodedWord(charset,encoding,content) instead of Atom. - *) - -type s_extended_token - (* An opaque type containing s_token plus: - * - where the token occurs - * - RFC-2047 access functions - *) - -val get_token : s_extended_token -> s_token - (* Return the s_token within the s_extended_token *) - -val get_decoded_word : s_extended_token -> string -val get_charset : s_extended_token -> string - (* Return the decoded word (the contents of the word after decoding the - * "Q" or "B" representation), and the character set of the decoded word - * (uppercase). - * These functions not only work for EncodedWord: - * - Atom: Returns the atom without decoding it - * - QString: Returns the characters inside the double quotes, and - * decodes any quoted pairs (backslash + character) - * - Control: Returns the one-character string - * - Special: Returns the one-character string - * - DomainLiteral: Returns the characters inside the brackets, and - * decodes any quoted pairs - * - Comment: Returns "" - * The character set is "US-ASCII" for these tokens. - *) - -val get_pos : s_extended_token -> int - (* Return the byte position where the token starts in the string - * (the first byte has position 0) - *) - -val get_line : s_extended_token -> int - (* Return the line number where the token starts (numbering begins - * usually with 1) - *) - -val get_column : s_extended_token -> int - (* Return the column of the line where the token starts (first column - * is number 0) - *) - -val get_length : s_extended_token -> int - (* Return the length of the token in bytes *) - -val separates_adjacent_encoded_words : s_extended_token -> bool - (* True iff the current token is white space (Special ' ', Special '\t', - * Special '\r' or Special '\n') and the last non-white space token - * was EncodedWord and the next non-white space token will be - * EncodedWord. - * Such spaces do not count and must be ignored by any application. - *) - - -type mime_scanner - -val create_mime_scanner : - specials:char list -> - scan_options:s_option list -> - ?pos:int -> - ?line:int -> - ?column:int -> - string -> - mime_scanner - (* Creates a new mime_scanner scanning the passed string. - * specials: The list of characters recognized as special characters. - * scan_options: The list of global options modifying the behaviour - * of the scanner - * pos: The position of the byte where the scanner starts in the - * passed string. Defaults to 0. - * line: The line number of this byte. Defaults to 1. - * column: The column number of this byte. Default to 0. - * - * The optional parameters pos, line, column are intentionally after - * scan_options and before the string argument, so you can specify - * scanners by partially applying arguments to create_mime_scanner - * which are not yet connected with a particular string: - * let my_scanner_spec = create_mime_scanner my_specials my_options in - * ... - * let my_scanner = my_scanner_spec my_string in - * ... - *) - -val get_pos_of_scanner : mime_scanner -> int -val get_line_of_scanner : mime_scanner -> int -val get_column_of_scanner : mime_scanner -> int - (* Return the current position, line, and column of a mime_scanner. - * The primary purpose of these functions is to simplify switching - * from one mime_scanner to another within a string: - * - * let scanner1 = create_mime_scanner ... s in - * ... now scanning some tokens from s using scanner1 ... - * let scanner2 = create_mime_scanner ... - * ?pos:(get_pos_of_scanner scanner1) - * ?line:(get_line_of_scanner scanner1) - * ?column:(get_column_of_scanner scanner1) - * s in - * ... scanning more tokens from s using scanner2 ... - * - * RESTRICTION: These functions are not available if the option - * Recognize_encoded_words is on. The reason is that this option - * enables look-ahead scanning; please use the location of the last - * scanned token instead. - * It is currently not clear whether a better implementation is needed - * (costs a bit more time). - * - * Note: To improve the performance of switching, it is recommended to - * create scanner specs in advance (see the example my_scanner_spec - * above). - *) - -val scan_token : mime_scanner -> (s_extended_token * s_token) - (* Returns the next token, or End if there is no more token. *) - -val scan_token_list : mime_scanner -> (s_extended_token * s_token) list - (* Returns all following tokens as a list (excluding End) *) - -val scan_structured_value : string -> char list -> s_option list -> s_token list - (* This function is included for backwards compatibility, and for all - * cases not requiring extended tokens. - * - * It scans the passed string according to the list of special characters - * and the list of options, and returns the list of all tokens. - *) - -val specials_rfc822 : char list -val specials_rfc2045 : char list - (* The sets of special characters defined by the RFCs 822 and 2045. - * - * CHANGE in netstring-0.9: '[' and ']' are no longer special because - * there is now support for domain literals. - * '?' and '=' are not special in the rfc2045 version because there is - * already support for encoded words. - *) - - -(**********************************************************************) - -(* Widely used scanners: *) - - -val scan_encoded_text_value : string -> s_extended_token list - (* Scans a "text" value. The returned token list contains only - * Special, Atom and EncodedWord tokens. - * Spaces, TABs, CRs, LFs are returned unless - * they occur between adjacent encoded words in which case - * they are ignored. - *) - - -val scan_value_with_parameters : string -> s_option list -> - (string * (string * string) list) - (* let name, params = scan_value_with_parameters s options: - * Scans phrases like - * name ; p1=v1 ; p2=v2 ; ... - * The scan is done with the set of special characters [';', '=']. - *) - -val scan_mime_type : string -> s_option list -> - (string * (string * string) list) - (* let name, params = scan_mime_type s options: - * Scans MIME types like - * text/plain; charset=iso-8859-1 - * The name of the type and the names of the parameters are converted - * to lower case. - *) - - -(**********************************************************************) - -(* Scanners for MIME bodies *) - -val scan_multipart_body : string -> start_pos:int -> end_pos:int -> - boundary:string -> - ((string * string) list * string) list - (* let [params1, value1; params2, value2; ...] - * = scan_multipart_body s i0 i1 b - * - * Scans the string s that is the body of a multipart message. - * The multipart message begins at position i0 in s and i1 the position - * of the character following the message. In b the boundary string - * must be passed (this is the "boundary" parameter of the multipart - * MIME type, e.g. multipart/mixed;boundary="some string" ). - * The return value is the list of the parts, where each part - * is returned as pair (params, value). The left component params - * is the list of name/value pairs of the header of the part. The - * right component is the RAW content of the part, i.e. if the part - * is encoded ("content-transfer-encoding"), the content is returned - * in the encoded representation. The caller must himself decode - * the content. - * The material before the first boundary and after the last - * boundary is not returned. - * - * MULTIPART MESSAGES - * - * The MIME standard defines a way to group several message parts to - * a larger message (for E-Mails this technique is known as "attaching" - * files to messages); these are the so-called multipart messages. - * Such messages are recognized by the major type string "multipart", - * e.g. multipart/mixed or multipart/form-data. Multipart types MUST - * have a boundary parameter because boundaries are essential for the - * representation. - * Multipart messages have a format like - * - * ...Header... - * Content-type: multipart/xyz; boundary="abc" - * ...Header... - * - * Body begins here ("prologue") - * --abc - * ...Header part 1... - * - * ...Body part 1... - * --abc - * ...Header part 2... - * - * - * ...Body part 2 - * --abc - * ... - * --abc-- - * Epilogue - * - * The parts are separated by boundary lines which begin with "--" and - * the string passed as boundary parameter. (Note that there may follow - * arbitrary text on boundary lines after "--abc".) The boundary is - * chosen such that it does not occur as prefix of any line of the - * inner parts of the message. - * The parts are again MIME messages, with header and body. Note - * that it is explicitely allowed that the parts are even multipart - * messages. - * The texts before the first boundary and after the last boundary - * are ignored. - * Note that multipart messages as a whole MUST NOT be encoded. - * Only the PARTS of the messages may be encoded (if they are not - * multipart messages themselves). - * - * Please read RFC 2046 if want to know the gory details of this - * brain-dead format. - *) - -val scan_multipart_body_and_decode : string -> start_pos:int -> end_pos:int -> - boundary:string -> - ((string * string) list * string) list - (* Same as scan_multipart_body, but decodes the bodies of the parts - * if they are encoded using the methods "base64" or "quoted printable". - * Fails, if an unknown encoding is used. - *) - -val scan_multipart_body_from_netstream - : Netstream.t -> - boundary:string -> - create:((string * string) list -> 'a) -> - add:('a -> Netstream.t -> int -> int -> unit) -> - stop:('a -> unit) -> - unit - (* scan_multipart_body_from_netstream s b create add stop: - * - * Reads the MIME message from the netstream s block by block. The - * parts are delimited by the boundary b. - * - * Once a new part is detected and begins, the function 'create' is - * called with the MIME header as argument. The result p of this function - * may be of any type. - * - * For every chunk of the part that is being read, the function 'add' - * is invoked: add p s k n. - * Here, p is the value returned by the 'create' invocation for the - * current part. s is the netstream. The current window of s contains - * the read chunk completely; the chunk begins at position k of the - * window (relative to the beginning of the window) and has a length - * of n bytes. - * - * When the part has been fully read, the function 'stop' is - * called with p as argument. - * - * That means, for every part the following is executed: - * - let p = create h - * - add p s k1 n1 - * - add p s k2 n2 - * - ... - * - add p s kN nN - * - stop p - * - * IMPORTANT PRECONDITION: - * - The block size of the netstream s must be at least - * String.length b + 3 - * - * EXCEPTIONS: - * - Exceptions can happen because of ill-formed input, and within - * the callbacks of the functions 'create', 'add', 'stop'. - * - If the exception happens while part p is being read, and the - * 'create' function has already been called (successfully), the - * 'stop' function is also called (you have the chance to close files). - *) - - -(* THREAD-SAFETY: - * The functions are thread-safe as long as the threads do not share - * values. - *) - -(* ====================================================================== - * History: - * - * $Log$ - * Revision 1.1 2000/11/17 09:57:27 lpadovan - * Initial revision - * - * Revision 1.8 2000/08/13 00:04:36 gerd - * Encoded_word -> EncodedWord - * Bugfixes. - * - * Revision 1.7 2000/08/07 00:25:00 gerd - * Major update of the interface for structured field lexing. - * - * Revision 1.6 2000/06/25 22:34:43 gerd - * Added labels to arguments. - * - * Revision 1.5 2000/06/25 21:15:48 gerd - * Checked thread-safety. - * - * Revision 1.4 2000/05/16 22:29:12 gerd - * New "option" arguments specifying the level of MIME - * compatibility. - * - * Revision 1.3 2000/04/15 13:09:01 gerd - * Implemented uploads to temporary files. - * - * Revision 1.2 2000/03/02 01:15:30 gerd - * Updated. - * - * Revision 1.1 2000/02/25 15:21:12 gerd - * Initial revision. - * - * - *) diff --git a/helm/DEVEL/pxp/netstring/netbuffer.ml b/helm/DEVEL/pxp/netstring/netbuffer.ml deleted file mode 100644 index d6fc40ff7..000000000 --- a/helm/DEVEL/pxp/netstring/netbuffer.ml +++ /dev/null @@ -1,145 +0,0 @@ -(* $Id$ - * ---------------------------------------------------------------------- - * - *) - -type t = - { mutable buffer : string; - mutable length : int; - } - -(* To help the garbage collector: - * The 'buffer' has a minimum length of 31 bytes. This minimum can still - * be stored in the minor heap. - * The 'buffer' has a length which is always near a multiple of two. This - * limits the number of different bucket sizes, and simplifies reallocation - * of freed memory. - *) - -(* Optimal string length: - * Every string takes: 1 word for the header, enough words for the - * contents + 1 Null byte (for C compatibility). - * If the buffer grows, it is best to use a new string length such - * that the number of words is exactly twice as large as for the previous - * string. - * n: length of the previous string in bytes - * w: storage size of the previous string in words - * n': length of the new string in bytes - * w' = 2*w: storage size of the new string in words - * - * w = (n+1) / word_length + 1 - * [it is assumed that (n+1) is always a multiple of word_length] - * - * n' = (2*w - 1) * word_length - 1 - * - * n' = [2 * ( [n+1] / word_length + 1) - 1] * word_length - 1 - * = ... - * = (2*n + 2) + word_length - 1 - * = 2 * n + word_length + 1 - * - * n'+1 is again a multiple of word_length: - * n'+1 = 2*n + 2 + word_length - * = 2*(n+1) + word_length - * = a multiple of word_length because n+1 is a multiple of word_length - *) - -let word_length = Sys.word_size / 8 (* in bytes *) - -let create n = - { buffer = String.create (max n 31); length = 0; } - -let contents b = - String.sub b.buffer 0 b.length - -let sub b ~pos:k ~len:n = - if k+n > b.length then - raise (Invalid_argument "Netbuffer.sub"); - String.sub b.buffer k n - -let unsafe_buffer b = - b.buffer - -let length b = - b.length - -let add_string b s = - let l = String.length s in - if l + b.length > String.length b.buffer then begin - let l' = l + b.length in - let rec new_size s = - if s >= l' then s else new_size(2*s + word_length + 1) - in - let buffer' = String.create (new_size (String.length b.buffer)) in - String.blit b.buffer 0 buffer' 0 b.length; - b.buffer <- buffer' - end; - String.blit s 0 b.buffer b.length l; - b.length <- b.length + l - -let add_sub_string b s ~pos:k ~len:l = - if l + b.length > String.length b.buffer then begin - let l' = l + b.length in - let rec new_size s = - if s >= l' then s else new_size(2*s + word_length + 1) - in - let buffer' = String.create (new_size (String.length b.buffer)) in - String.blit b.buffer 0 buffer' 0 b.length; - b.buffer <- buffer' - end; - String.blit s k b.buffer b.length l; - b.length <- b.length + l - -let delete b ~pos:k ~len:l = - (* deletes l bytes at position k in b *) - let n = String.length b.buffer in - if k+l <> n & k <> n then - String.blit b.buffer (k+l) b.buffer k (n-l-k); - b.length <- b.length - l; - () - -let try_shrinking b = - (* If the buffer size decreases drastically, reallocate the buffer *) - if b.length < (String.length b.buffer / 2) then begin - let rec new_size s = - if s >= b.length then s else new_size(2*s + word_length + 1) - in - let buffer' = String.create (new_size 31) in - String.blit b.buffer 0 buffer' 0 b.length; - b.buffer <- buffer' - end - -let clear b = - delete b 0 (b.length) - -let index_from b k c = - if k > b.length then - raise (Invalid_argument "Netbuffer.index_from"); - let p = String.index_from b.buffer k c in - if p >= b.length then raise Not_found; - p - -let print_buffer b = - Format.printf - "" - b.length - (String.length b.buffer) -;; - -(* ====================================================================== - * History: - * - * $Log$ - * Revision 1.1 2000/11/17 09:57:27 lpadovan - * Initial revision - * - * Revision 1.3 2000/06/25 22:34:43 gerd - * Added labels to arguments. - * - * Revision 1.2 2000/06/24 20:20:33 gerd - * Added the toploop printer. - * - * Revision 1.1 2000/04/15 13:07:48 gerd - * Initial revision. - * - * - *) diff --git a/helm/DEVEL/pxp/netstring/netbuffer.mli b/helm/DEVEL/pxp/netstring/netbuffer.mli deleted file mode 100644 index 0ecd61e6a..000000000 --- a/helm/DEVEL/pxp/netstring/netbuffer.mli +++ /dev/null @@ -1,93 +0,0 @@ -(* $Id$ - * ---------------------------------------------------------------------- - * - *) - - -(* A Netbuffer.t is a buffer that can grow and shrink dynamically. *) - -type t - -val create : int -> t - (* Creates a netbuffer which allocates initially this number of bytes. - * The logical length is zero. - *) - -val contents : t -> string - (* Returns the contents of the buffer as fresh string. *) - -val sub : t -> pos:int -> len:int -> string - (* sub nb k n: returns the n characters starting at position n from - * netbuffer nb as fresh string - *) - -val length : t -> int - (* Returns the logical length of the buffer *) - -val add_string : t -> string -> unit - (* add_string nb s: Adds a copy of the string s to the logical end of - * the netbuffer nb. If necessary, the nb grows. - *) - -val add_sub_string : t -> string -> pos:int -> len:int -> unit - (* add_sub_string nb s k n: Adds the substring of s starting at position - * k with length n to the logical end of the netbuffer nb. If necessary, - * the nb grows. - * This is semantically the same as - * add_string nb (String.sub s k n), but the extra copy is avoided. - *) - -val delete : t -> pos:int -> len:int -> unit - (* delete nb k n: Deletes the n bytes at position k of netbuffer nb - * in-place. - * The netbuffer does not shrink! - *) - -val clear : t -> unit - (* deletes all contents from the buffer. As 'delete', the netbuffer does - * not shrink. - *) - -val try_shrinking : t -> unit - (* try_shrinking nb: If the length of the buffer is less than half of - * the allocated space, the netbuffer is reallocated in order to save - * memory. - *) - -val index_from : t -> int -> char -> int - (* index_from nb k c: Searches the character c in the netbuffer beginning - * at position k. If found, the position of the left-most occurence is - * returned. Otherwise, Not_found is raised. - *) - -val unsafe_buffer : t -> string - (* WARNING! This is a low-level function! - * Returns the current string that internally holds the buffer. - * The byte positions 0 to length - 1 actually store the contents of - * the buffer. You can directly read and modify the buffer. Note that - * there is no protection if you read or write positions beyond the - * length of the buffer. - *) - -val print_buffer : t -> unit - (* For the toploop *) - - -(* ====================================================================== - * History: - * - * $Log$ - * Revision 1.1 2000/11/17 09:57:27 lpadovan - * Initial revision - * - * Revision 1.3 2000/06/25 22:34:43 gerd - * Added labels to arguments. - * - * Revision 1.2 2000/06/24 20:20:33 gerd - * Added the toploop printer. - * - * Revision 1.1 2000/04/15 13:07:48 gerd - * Initial revision. - * - * - *) diff --git a/helm/DEVEL/pxp/netstring/netconversion.ml b/helm/DEVEL/pxp/netstring/netconversion.ml deleted file mode 100644 index e740654ad..000000000 --- a/helm/DEVEL/pxp/netstring/netconversion.ml +++ /dev/null @@ -1,864 +0,0 @@ -(* $Id$ - * ---------------------------------------------------------------------- - *) - -exception Malformed_code - - -type encoding = - [ `Enc_utf8 (* UTF-8 *) - | `Enc_java - | `Enc_utf16 (* UTF-16 with unspecified endianess (restricted usage) *) - | `Enc_utf16_le (* UTF-16 little endian *) - | `Enc_utf16_be (* UTF-16 big endian *) - | `Enc_usascii (* US-ASCII (only 7 bit) *) - | `Enc_iso88591 (* ISO-8859-1 *) - | `Enc_iso88592 (* ISO-8859-2 *) - | `Enc_iso88593 (* ISO-8859-3 *) - | `Enc_iso88594 (* ISO-8859-4 *) - | `Enc_iso88595 (* ISO-8859-5 *) - | `Enc_iso88596 (* ISO-8859-6 *) - | `Enc_iso88597 (* ISO-8859-7 *) - | `Enc_iso88598 (* ISO-8859-8 *) - | `Enc_iso88599 (* ISO-8859-9 *) - | `Enc_iso885910 (* ISO-8859-10 *) - | `Enc_iso885913 (* ISO-8859-13 *) - | `Enc_iso885914 (* ISO-8859-14 *) - | `Enc_iso885915 (* ISO-8859-15 *) - | `Enc_koi8r (* KOI8-R *) - | `Enc_jis0201 (* JIS-0201 *) - (* Microsoft: *) - | `Enc_windows1250 (* WINDOWS-1250 *) - | `Enc_windows1251 (* WINDOWS-1251 *) - | `Enc_windows1252 (* WINDOWS-1252 *) - | `Enc_windows1253 (* WINDOWS-1253 *) - | `Enc_windows1254 (* WINDOWS-1254 *) - | `Enc_windows1255 (* WINDOWS-1255 *) - | `Enc_windows1256 (* WINDOWS-1256 *) - | `Enc_windows1257 (* WINDOWS-1257 *) - | `Enc_windows1258 (* WINDOWS-1258 *) - (* IBM, ASCII-based: *) - | `Enc_cp437 - | `Enc_cp737 - | `Enc_cp775 - | `Enc_cp850 - | `Enc_cp852 - | `Enc_cp855 - | `Enc_cp856 - | `Enc_cp857 - | `Enc_cp860 - | `Enc_cp861 - | `Enc_cp862 - | `Enc_cp863 - | `Enc_cp864 - | `Enc_cp865 - | `Enc_cp866 - | `Enc_cp869 - | `Enc_cp874 - | `Enc_cp1006 - (* IBM, EBCDIC-based: *) - | `Enc_cp037 - | `Enc_cp424 - | `Enc_cp500 - | `Enc_cp875 - | `Enc_cp1026 - (* Adobe: *) - | `Enc_adobe_standard_encoding - | `Enc_adobe_symbol_encoding - | `Enc_adobe_zapf_dingbats_encoding - (* Apple: *) - | `Enc_macroman - - ] -;; - - -let norm_enc_name e = - (* Removes some characters from e; uppercase *) - let e' = String.create (String.length e) in - let rec next i j = - if i < String.length e then - match e.[i] with - ('-'|'_'|'.') -> next (i+1) j - | c -> e'.[j] <- c; next (i+1) (j+1) - else - j - in - let l = next 0 0 in - String.uppercase(String.sub e' 0 l) -;; - - -let encoding_of_string e = - match norm_enc_name e with - ("UTF16"|"UCS2"|"ISO10646UCS2") -> `Enc_utf16 - | "UTF16BE" -> `Enc_utf16_be - | "UTF16LE" -> `Enc_utf16_le - | "UTF8" -> `Enc_utf8 - | ("UTF8JAVA"|"JAVA") -> `Enc_java - | ("USASCII"|"ASCII"|"ISO646US"|"IBM367"|"CP367") -> `Enc_usascii - | ("ISO88591"|"LATIN1"|"IBM819"|"CP819") -> `Enc_iso88591 - | ("ISO88592"|"LATIN2") -> `Enc_iso88592 - | ("ISO88593"|"LATIN3") -> `Enc_iso88593 - | ("ISO88594"|"LATIN4") -> `Enc_iso88594 - | ("ISO88595"|"CYRILLIC") -> `Enc_iso88595 - | ("ISO88596"|"ARABIC"|"ECMA114"|"ASMO708") -> `Enc_iso88596 - | ("ISO88597"|"GREEK"|"GREEK8"|"ELOT928"|"ECMA118") -> `Enc_iso88597 - | ("ISO88598"|"HEBREW") -> `Enc_iso88598 - | ("ISO88599"|"LATIN5") -> `Enc_iso88599 - | ("ISO885910"|"LATIN6") -> `Enc_iso885910 - | "ISO885913" -> `Enc_iso885913 - | "ISO885914" -> `Enc_iso885914 - | "ISO885915" -> `Enc_iso885915 - | "KOI8R" -> `Enc_koi8r - | ("JIS0201"|"JISX0201"|"X0201") -> `Enc_jis0201 - - | "WINDOWS1250" -> `Enc_windows1250 - | "WINDOWS1251" -> `Enc_windows1251 - | "WINDOWS1252" -> `Enc_windows1252 - | "WINDOWS1253" -> `Enc_windows1253 - | "WINDOWS1254" -> `Enc_windows1254 - | "WINDOWS1255" -> `Enc_windows1255 - | "WINDOWS1256" -> `Enc_windows1256 - | "WINDOWS1257" -> `Enc_windows1257 - | "WINDOWS1258" -> `Enc_windows1258 - - | ("CP437"|"IBM437") -> `Enc_cp437 - | ("CP737"|"IBM737") -> `Enc_cp737 - | ("CP775"|"IBM775") -> `Enc_cp775 - | ("CP850"|"IBM850") -> `Enc_cp850 - | ("CP852"|"IBM852") -> `Enc_cp852 - | ("CP855"|"IBM855") -> `Enc_cp855 - | ("CP856"|"IBM856") -> `Enc_cp856 - | ("CP857"|"IBM857") -> `Enc_cp857 - | ("CP860"|"IBM860") -> `Enc_cp860 - | ("CP861"|"IBM861") -> `Enc_cp861 - | ("CP862"|"IBM862") -> `Enc_cp862 - | ("CP863"|"IBM863") -> `Enc_cp863 - | ("CP864"|"IBM864") -> `Enc_cp864 - | ("CP865"|"IBM865") -> `Enc_cp865 - | ("CP866"|"IBM866") -> `Enc_cp866 - | ("CP869"|"IBM869") -> `Enc_cp869 - | ("CP874"|"IBM874") -> `Enc_cp874 - | ("CP1006"|"IBM1006") -> `Enc_cp1006 - - | ("CP037"|"IBM037"|"EBCDICCPUS"|"EBCDICCPCA"|"EBCDICCPWT"| - "EBCDICCPNL") -> `Enc_cp037 - | ("CP424"|"IBM424"|"EBCDICCPHE") -> `Enc_cp424 - | ("CP500"|"IBM500"|"EBCDICCPBE"|"EBCDICCPCH") -> `Enc_cp500 - | ("CP875"|"IBM875") -> `Enc_cp875 - | ("CP1026"|"IBM1026") -> `Enc_cp1026 - - | "ADOBESTANDARDENCODING" -> `Enc_adobe_standard_encoding - | "ADOBESYMBOLENCODING" -> `Enc_adobe_symbol_encoding - | "ADOBEZAPFDINGBATSENCODING" -> `Enc_adobe_zapf_dingbats_encoding - - | "MACINTOSH" -> `Enc_macroman - - | _ -> - failwith "Netconversion.encoding_of_string: unknown encoding" -;; - - -let string_of_encoding (e : encoding) = - (* If there is a "preferred MIME name", this name is returned (see IANA). *) - match e with - `Enc_utf16 -> "UTF-16" - | `Enc_utf16_be -> "UTF-16-BE" - | `Enc_utf16_le -> "UTF-16-LE" - | `Enc_utf8 -> "UTF-8" - | `Enc_java -> "UTF-8-JAVA" - | `Enc_usascii -> "US-ASCII" - | `Enc_iso88591 -> "ISO-8859-1" - | `Enc_iso88592 -> "ISO-8859-2" - | `Enc_iso88593 -> "ISO-8859-3" - | `Enc_iso88594 -> "ISO-8859-4" - | `Enc_iso88595 -> "ISO-8859-5" - | `Enc_iso88596 -> "ISO-8859-6" - | `Enc_iso88597 -> "ISO-8859-7" - | `Enc_iso88598 -> "ISO-8859-8" - | `Enc_iso88599 -> "ISO-8859-9" - | `Enc_iso885910 -> "ISO-8859-10" - | `Enc_iso885913 -> "ISO-8859-13" - | `Enc_iso885914 -> "ISO-8859-14" - | `Enc_iso885915 -> "ISO-8859-15" - | `Enc_koi8r -> "KOI8-R" - | `Enc_jis0201 -> "JIS_X0201" - | `Enc_windows1250 -> "WINDOWS-1250" - | `Enc_windows1251 -> "WINDOWS-1251" - | `Enc_windows1252 -> "WINDOWS-1252" - | `Enc_windows1253 -> "WINDOWS-1253" - | `Enc_windows1254 -> "WINDOWS-1254" - | `Enc_windows1255 -> "WINDOWS-1255" - | `Enc_windows1256 -> "WINDOWS-1256" - | `Enc_windows1257 -> "WINDOWS-1257" - | `Enc_windows1258 -> "WINDOWS-1258" - | `Enc_cp437 -> "CP437" - | `Enc_cp737 -> "CP737" - | `Enc_cp775 -> "CP775" - | `Enc_cp850 -> "CP850" - | `Enc_cp852 -> "CP852" - | `Enc_cp855 -> "CP855" - | `Enc_cp856 -> "CP856" - | `Enc_cp857 -> "CP857" - | `Enc_cp860 -> "CP860" - | `Enc_cp861 -> "CP861" - | `Enc_cp862 -> "CP862" - | `Enc_cp863 -> "CP863" - | `Enc_cp864 -> "CP864" - | `Enc_cp865 -> "CP865" - | `Enc_cp866 -> "CP866" - | `Enc_cp869 -> "CP869" - | `Enc_cp874 -> "CP874" - | `Enc_cp1006 -> "CP1006" - | `Enc_cp037 -> "CP037" - | `Enc_cp424 -> "CP424" - | `Enc_cp500 -> "CP500" - | `Enc_cp875 -> "CP875" - | `Enc_cp1026 -> "CP1026" - | `Enc_adobe_standard_encoding -> "ADOBE-STANDARD-ENCODING" - | `Enc_adobe_symbol_encoding -> "ADOBE-SYMBOL-ENCODING" - | `Enc_adobe_zapf_dingbats_encoding -> "ADOBE-ZAPF-DINGBATS-ENCODING" - | `Enc_macroman -> "MACINTOSH" -;; - - -let read_iso88591 write s_in p_in l_in = - let rec scan k_in k_out c_out = - if k_in < l_in then begin - let p = Char.code s_in.[p_in + k_in] in - let n = write p k_out c_out in - if n < 0 then - k_in, k_out, `Enc_iso88591 - else - scan (k_in + 1) (k_out + n) (c_out + 1) - end - else - k_in, k_out, `Enc_iso88591 - in - scan 0 0 0 -;; - - -let read_usascii write s_in p_in l_in = - let rec scan k_in k_out c_out = - if k_in < l_in then begin - let p = Char.code s_in.[p_in + k_in] in - if p >= 0x80 then raise Malformed_code; - let n = write p k_out c_out in - if n < 0 then - k_in, k_out, `Enc_usascii - else - scan (k_in + 1) (k_out + n) (c_out + 1) - end - else - k_in, k_out, `Enc_usascii - in - scan 0 0 0 -;; - - -let read_8bit m_to_unicode enc write s_in p_in l_in = - let rec scan k_in k_out c_out = - if k_in < l_in then begin - let p_local = Char.code s_in.[p_in + k_in] in - let p_uni = Array.unsafe_get m_to_unicode p_local in - if p_uni < 0 then raise Malformed_code; - let n = write p_uni k_out c_out in - if n < 0 then - k_in, k_out, enc - else - scan (k_in + 1) (k_out + n) (c_out + 1) - end - else - k_in, k_out, enc - in - scan 0 0 0 -;; - - -let read_utf8 is_java write s_in p_in l_in = - let rec scan k_in k_out c_out = - if k_in < l_in then begin - let n_out, n_in = - match s_in.[p_in + k_in] with - '\000' -> - if is_java then raise Malformed_code; - write 0 k_out c_out, 1 - | ('\001'..'\127' as c) -> - write (Char.code c) k_out c_out, 1 - | ('\128'..'\223' as c) -> - if k_in + 1 >= l_in then - -1, 0 - else begin - let n1 = Char.code c in - let n2 = Char.code (s_in.[p_in + k_in + 1]) in - if is_java && (n1 = 0x80 && n2 = 0xc0) then - write 0 k_out c_out, 2 - else begin - if n2 < 128 or n2 > 191 then raise Malformed_code; - let p = ((n1 land 0b11111) lsl 6) lor (n2 land 0b111111) in - if p < 128 then raise Malformed_code; - write p k_out c_out, 2 - end - end - | ('\224'..'\239' as c) -> - if k_in + 2 >= l_in then - -1, 0 - else begin - let n1 = Char.code c in - let n2 = Char.code (s_in.[p_in + k_in + 1]) in - let n3 = Char.code (s_in.[p_in + k_in + 2]) in - if n2 < 128 or n2 > 191 then raise Malformed_code; - if n3 < 128 or n3 > 191 then raise Malformed_code; - let p = - ((n1 land 0b1111) lsl 12) lor - ((n2 land 0b111111) lsl 6) lor - (n3 land 0b111111) - in - if p < 0x800 then raise Malformed_code; - if (p >= 0xd800 && p < 0xe000) then - (* Surrogate pairs are not supported in UTF-8 *) - raise Malformed_code; - if (p >= 0xfffe && p <= 0xffff) then - raise Malformed_code; - write p k_out c_out, 3 - end - | ('\240'..'\247' as c) -> - if k_in + 3 >= l_in then - -1, 0 - else begin - let n1 = Char.code c in - let n2 = Char.code (s_in.[p_in + k_in + 1]) in - let n3 = Char.code (s_in.[p_in + k_in + 2]) in - let n4 = Char.code (s_in.[p_in + k_in + 3]) in - if n2 < 128 or n2 > 191 then raise Malformed_code; - if n3 < 128 or n3 > 191 then raise Malformed_code; - if n4 < 128 or n4 > 191 then raise Malformed_code; - let p = ((n1 land 0b111) lsl 18) lor - ((n2 land 0b111111) lsl 12) lor - ((n3 land 0b111111) lsl 6) lor - (n4 land 0b111111) - in - if p < 0x10000 then raise Malformed_code; - if p >= 0x110000 then - (* These code points are not supported. *) - raise Malformed_code; - write p k_out c_out, 4 - end - | _ -> - (* Outside the valid range of XML characters *) - raise Malformed_code; - in - (* n_out: number of written bytes; -1 means out buf is full - * n_in: number of read bytes; 0 means end of in buf reached - * n_in = 0 implies n_out = -1 - *) - if n_out < 0 then - k_in, k_out, `Enc_utf8 - else - scan (k_in + n_in) (k_out + n_out) (c_out + 1) - end - else - k_in, k_out, `Enc_utf8 - in - scan 0 0 0 -;; - - -let surrogate_offset = 0x10000 - (0xD800 lsl 10) - 0xDC00;; - -let read_utf16_le k_in_0 write s_in p_in l_in = - let rec scan k_in k_out c_out = - if k_in + 1 < l_in then begin - let p = (Char.code s_in.[p_in + k_in]) lor ((Char.code s_in.[p_in + k_in + 1]) lsl 8) in - - if p >= 0xd800 & p < 0xe000 then begin - (* This is a surrogate pair. *) - if k_in + 3 < l_in then begin - if p <= 0xdbff then begin - let q = (Char.code s_in.[p_in + k_in + 2 ]) lor - ((Char.code s_in.[p_in + k_in + 3]) lsl 8) in - if q < 0xdc00 or q > 0xdfff then raise Malformed_code; - let eff_p = (p lsl 10) + q + surrogate_offset in - let n = write eff_p k_out c_out in - if n < 0 then - k_in, k_out, `Enc_utf16_le - else - scan (k_in + 4) (k_out + n) (c_out + 1) - end - else - (* Malformed pair: *) - raise Malformed_code; - end - else - (* Incomplete pair: *) - k_in, k_out, `Enc_utf16_le - end - - else - if p = 0xfffe then - (* Big endian byte order mark: It is illegal here *) - raise Malformed_code - else begin - (* A regular code point *) - let n = write p k_out c_out in - if n < 0 then - k_in, k_out, `Enc_utf16_le - else - scan (k_in + 2) (k_out + n) (c_out + 1) - end - end - else - (* Incomplete character: *) - k_in, k_out, `Enc_utf16_le - in - scan k_in_0 0 0 -;; - - -let read_utf16_be k_in_0 write s_in p_in l_in = - let rec scan k_in k_out c_out = - if k_in + 1 < l_in then begin - let p = (Char.code s_in.[p_in + k_in + 1]) lor ((Char.code s_in.[p_in + k_in]) lsl 8) in - - if p >= 0xd800 & p < 0xe000 then begin - (* This is a surrogate pair. *) - if k_in + 3 < l_in then begin - if p <= 0xdbff then begin - let q = (Char.code s_in.[p_in + k_in + 3 ]) lor - ((Char.code s_in.[p_in + k_in + 2]) lsl 8) in - if q < 0xdc00 or q > 0xdfff then raise Malformed_code; - let eff_p = (p lsl 10) + q + surrogate_offset in - let n = write eff_p k_out c_out in - if n < 0 then - k_in, k_out, `Enc_utf16_be - else - scan (k_in + 4) (k_out + n) (c_out + 1) - end - else - (* Malformed pair: *) - raise Malformed_code; - end - else - (* Incomplete pair: *) - k_in, k_out, `Enc_utf16_be - end - - else - if p = 0xfffe then - (* Little endian byte order mark: It is illegal here *) - raise Malformed_code - else begin - (* A regular code point *) - let n = write p k_out c_out in - if n < 0 then - k_in, k_out, `Enc_utf16_be - else - scan (k_in + 2) (k_out + n) (c_out + 1) - end - - end - else - (* Incomplete character: *) - k_in, k_out, `Enc_utf16_be - in - scan k_in_0 0 0 -;; - - -let read_utf16 write s_in p_in l_in = - (* Expect a BOM at the beginning of the text *) - if l_in >= 2 then begin - let c0 = s_in.[p_in + 0] in - let c1 = s_in.[p_in + 1] in - if c0 = '\254' & c1 = '\255' then begin - (* 0xfeff as big endian *) - read_utf16_be 2 write s_in p_in l_in - end - else - if c0 = '\255' & c1 = '\254' then begin - (* 0xfeff as little endian *) - read_utf16_le 2 write s_in p_in l_in - end - else - (* byte order mark missing *) - raise Malformed_code - end - else - 0, 0, `Enc_utf16 -;; - - -let write_iso88591 s_out p_out l_out max_chars w p k_out c_out = - if k_out < l_out && c_out < max_chars then begin - if p > 255 then begin - let subst = w p in - let l_subst = String.length subst in - if k_out + l_subst <= l_out then begin - (* Enough space to store 'subst': *) - String.blit subst 0 s_out (k_out+p_out) l_subst; - l_subst - end - else - (* Not enough space: Stop this round of recoding *) - -1 - end - else begin - s_out.[p_out + k_out] <- Char.chr p; - 1 - end - end - else - -1 (* End-of-buffer indicator *) -;; - - -let write_usascii s_out p_out l_out max_chars w p k_out c_out = - if k_out < l_out && c_out < max_chars then begin - if p > 127 then begin - let subst = w p in - let l_subst = String.length subst in - if k_out + l_subst <= l_out then begin - (* Enough space to store 'subst': *) - String.blit subst 0 s_out (k_out+p_out) l_subst; - l_subst - end - else - (* Not enough space: Stop this round of recoding *) - -1 - end - else begin - s_out.[p_out + k_out] <- Char.chr p; - 1 - end - end - else - -1 (* End-of-buffer indicator *) -;; - - -let write_8bit from_unicode s_out p_out l_out max_chars w p k_out c_out = - if k_out < l_out && c_out < max_chars then begin - let p' = - match Array.unsafe_get from_unicode (p land 255) with - Netmappings.U_nil -> -1 - | Netmappings.U_single (p0,q0) -> - if p0 = p then q0 else -1 - | Netmappings.U_list l -> - (try List.assoc p l with Not_found -> -1) - in - if p' < 0 then begin - let subst = w p in - let l_subst = String.length subst in - if k_out + l_subst <= l_out then begin - (* Enough space to store 'subst': *) - String.blit subst 0 s_out (k_out+p_out) l_subst; - l_subst - end - else - (* Not enough space: Stop this round of recoding *) - -1 - end - else begin - s_out.[p_out + k_out] <- Char.chr p'; - 1 - end - end - else - -1 (* End-of-buffer indicator *) -;; - - -let write_utf8 is_java s_out p_out l_out max_chars w p k_out c_out = - if p <= 127 && (not is_java || p <> 0) then begin - if k_out < l_out && c_out < max_chars then begin - s_out.[p_out + k_out] <- Char.chr p; - 1 - end - else -1 - end - else if p <= 0x7ff then begin - if k_out + 1 < l_out && c_out < max_chars then begin - s_out.[p_out + k_out] <- Char.chr (0xc0 lor (p lsr 6)); - s_out.[p_out + k_out + 1] <- Char.chr (0x80 lor (p land 0x3f)); - 2 - end - else -1 - end - else if p <= 0xffff then begin - (* Refuse writing surrogate pairs, and fffe, ffff *) - if (p >= 0xd800 & p < 0xe000) or (p >= 0xfffe) then - failwith "Netconversion.write_utf8"; - if k_out + 2 < l_out && c_out < max_chars then begin - s_out.[p_out + k_out] <- Char.chr (0xe0 lor (p lsr 12)); - s_out.[p_out + k_out + 1] <- Char.chr (0x80 lor ((p lsr 6) land 0x3f)); - s_out.[p_out + k_out + 2] <- Char.chr (0x80 lor (p land 0x3f)); - 3 - end - else -1 - end - else if p <= 0x10ffff then begin - if k_out + 3 < l_out && c_out < max_chars then begin - s_out.[p_out + k_out] <- Char.chr (0xf0 lor (p lsr 18)); - s_out.[p_out + k_out + 1] <- Char.chr (0x80 lor ((p lsr 12) land 0x3f)); - s_out.[p_out + k_out + 2] <- Char.chr (0x80 lor ((p lsr 6) land 0x3f)); - s_out.[p_out + k_out + 3] <- Char.chr (0x80 lor (p land 0x3f)); - 4 - end - else -1 - end - else - (* Higher code points are not possible in XML: *) - failwith "Netconversion.write_utf8" -;; - - -let write_utf16_le s_out p_out l_out max_chars w p k_out c_out = - if p >= 0xfffe then begin - if p <= 0xffff or p > 0x10ffff then failwith "Netconversion.write_utf16_le"; - (* Must be written as surrogate pair *) - if k_out + 3 < l_out && c_out < max_chars then begin - let high = (p lsr 10) + 0xd800 in - let low = (p land 0x3ff) + 0xdc00 in - s_out.[p_out + k_out ] <- Char.chr (high land 0xff); - s_out.[p_out + k_out + 1] <- Char.chr (high lsr 8); - s_out.[p_out + k_out + 2] <- Char.chr (low land 0xff); - s_out.[p_out + k_out + 3] <- Char.chr (low lsr 8); - 4 - end - else -1 - end - else begin - if k_out + 1 < l_out && c_out < max_chars then begin - s_out.[p_out + k_out ] <- Char.chr (p land 0xff); - s_out.[p_out + k_out + 1] <- Char.chr (p lsr 8); - 2 - end - else - -1 - end -;; - - -let write_utf16_be s_out p_out l_out max_chars w p k_out c_out = - if p >= 0xfffe then begin - if p <= 0xffff or p > 0x10ffff then failwith "Netconversion.write_utf16_be"; - (* Must be written as surrogate pair *) - if k_out + 3 < l_out && c_out < max_chars then begin - let high = (p lsr 10) + 0xd800 in - let low = (p land 0x3ff) + 0xdc00 in - s_out.[p_out + k_out + 1] <- Char.chr (high land 0xff); - s_out.[p_out + k_out ] <- Char.chr (high lsr 8); - s_out.[p_out + k_out + 3] <- Char.chr (low land 0xff); - s_out.[p_out + k_out + 2] <- Char.chr (low lsr 8); - 4 - end - else -1 - end - else begin - if k_out + 1 < l_out && c_out < max_chars then begin - s_out.[p_out + k_out + 1] <- Char.chr (p land 0xff); - s_out.[p_out + k_out ] <- Char.chr (p lsr 8); - 2 - end - else - -1 - end -;; - - -let recode ~in_enc - ~in_buf - ~in_pos - ~in_len - ~out_enc - ~out_buf - ~out_pos - ~out_len - ~max_chars - ~subst = - if (in_pos < 0 || in_len < 0 || in_pos + in_len > String.length in_buf || - out_pos < 0 || out_len < 0 || out_pos + out_len > String.length out_buf) - then - invalid_arg "Netconversion.recode"; - - let reader = - match in_enc with - `Enc_iso88591 -> read_iso88591 - | `Enc_usascii -> read_usascii - | `Enc_utf8 -> read_utf8 false - | `Enc_java -> read_utf8 true - | `Enc_utf16 -> read_utf16 - | `Enc_utf16_le -> read_utf16_le 0 - | `Enc_utf16_be -> read_utf16_be 0 - | _ -> - (try - let to_unicode' = Hashtbl.find Netmappings.to_unicode in_enc in - let to_unicode = - Netmappings.lock(); - Lazy.force to_unicode' in - Netmappings.unlock(); - read_8bit to_unicode in_enc - with - Not_found -> - failwith("Support for the encoding `" ^ - string_of_encoding in_enc ^ - "' has not been compiled into Netstring") - ) - in - let writer = - match out_enc with - `Enc_iso88591 -> write_iso88591 out_buf out_pos out_len max_chars subst - | `Enc_usascii -> write_usascii out_buf out_pos out_len max_chars subst - | `Enc_utf8 -> write_utf8 false - out_buf out_pos out_len max_chars subst - | `Enc_java -> write_utf8 true out_buf out_pos out_len max_chars subst - | `Enc_utf16 -> failwith "Netconversion.recode" - | `Enc_utf16_le -> write_utf16_le out_buf out_pos out_len max_chars subst - | `Enc_utf16_be -> write_utf16_be out_buf out_pos out_len max_chars subst - | _ -> - (try - let from_unicode' = Hashtbl.find Netmappings.from_unicode out_enc - in - let from_unicode = - Netmappings.lock(); - Lazy.force from_unicode' in - Netmappings.unlock(); - write_8bit from_unicode out_buf out_pos out_len max_chars subst - with - Not_found -> - failwith("Support for the encoding `" ^ - string_of_encoding out_enc ^ - "' has not been compiled into Netstring") - ) - in - reader writer in_buf in_pos in_len -;; - - -let makechar enc p = - match enc with - `Enc_iso88591 -> - if p > 255 then raise Not_found; - String.make 1 (Char.chr p) - | `Enc_usascii -> - if p > 127 then raise Not_found; - String.make 1 (Char.chr p) - | `Enc_utf8 -> - let s = String.create 4 in - let n = write_utf8 false s 0 4 1 (fun _ -> raise Not_found) p 0 0 in - String.sub s 0 n - | `Enc_java -> - let s = String.create 4 in - let n = write_utf8 true s 0 4 1 (fun _ -> raise Not_found) p 0 0 in - String.sub s 0 n - | `Enc_utf16_le -> - let s = String.create 4 in - let n = write_utf16_le s 0 4 1 (fun _ -> raise Not_found) p 0 0 in - String.sub s 0 n - | `Enc_utf16_be -> - let s = String.create 4 in - let n = write_utf16_be s 0 4 1 (fun _ -> raise Not_found) p 0 0 in - String.sub s 0 n - | `Enc_utf16 -> - failwith "Netconversion.makechar" - | _ -> - let s = String.create 1 in - let from_unicode' = - try - Hashtbl.find Netmappings.from_unicode enc - with - Not_found -> - failwith("Support for the encoding `" ^ - string_of_encoding enc ^ - "' has not been compiled into Netstring") - in - let from_unicode = - Netmappings.lock(); - Lazy.force from_unicode' in - Netmappings.unlock(); - let n = - write_8bit from_unicode s 0 1 1 (fun _ -> raise Not_found) p 0 0 in - s -;; - - -let recode_string ~in_enc ~out_enc ?(subst = (fun _ -> raise Not_found)) s = - - let length = String.length s in - let size = 1024 in - let out_buf = String.create size in - - let rec recode_loop k s_done in_enc = - (* 'k' bytes of 's' have already been processed, and the result is in - * 's_done'. - *) - (* Recode to 'out_buf': *) - let in_len = length - k in - let in_done, out_done, in_enc' = - recode ~in_enc:in_enc ~in_buf:s ~in_pos:k ~in_len:in_len - ~out_enc:out_enc ~out_buf:out_buf ~out_pos:0 ~out_len:size - ~max_chars:size ~subst:subst in - (* Collect the results: *) - let k' = k + in_done in - let s_done' = String.sub out_buf 0 out_done :: s_done in - (* Still something to do? *) - if k' < length then - recode_loop k' s_done' in_enc' - else - (* No: Concatenate s_done' to get the final result. *) - String.concat "" (List.rev s_done') - in - - recode_loop 0 [] in_enc -;; - - -(* ====================================================================== - * History: - * - * $Log$ - * Revision 1.1 2000/11/17 09:57:28 lpadovan - * Initial revision - * - * Revision 1.2 2000/08/29 00:46:41 gerd - * New type for the Unicode to 8 bit translation table. - * The Netmappings tables are now Lazy.t. - * - * Revision 1.1 2000/08/13 00:02:57 gerd - * Initial revision. - * - * - * ====================================================================== - * OLD LOGS FROM THE PXP PACKAGE (FILE NAME pxp_encoding.ml): - * - * Revision 1.5 2000/07/27 00:41:14 gerd - * new 8 bit codes - * - * Revision 1.4 2000/07/04 22:11:41 gerd - * Implemented the enhancements and extensions of - * rev. 1.4 of pxp_encoding.mli. - * - * Revision 1.3 2000/05/29 23:48:38 gerd - * Changed module names: - * Markup_aux into Pxp_aux - * Markup_codewriter into Pxp_codewriter - * Markup_document into Pxp_document - * Markup_dtd into Pxp_dtd - * Markup_entity into Pxp_entity - * Markup_lexer_types into Pxp_lexer_types - * Markup_reader into Pxp_reader - * Markup_types into Pxp_types - * Markup_yacc into Pxp_yacc - * See directory "compatibility" for (almost) compatible wrappers emulating - * Markup_document, Markup_dtd, Markup_reader, Markup_types, and Markup_yacc. - * - * Revision 1.2 2000/05/29 21:14:57 gerd - * Changed the type 'encoding' into a polymorphic variant. - * - * Revision 1.1 2000/05/20 20:30:50 gerd - * Initial revision. - * - * - *) diff --git a/helm/DEVEL/pxp/netstring/netconversion.mli b/helm/DEVEL/pxp/netstring/netconversion.mli deleted file mode 100644 index 5e3e4b4e1..000000000 --- a/helm/DEVEL/pxp/netstring/netconversion.mli +++ /dev/null @@ -1,241 +0,0 @@ -(* $Id$ - * ---------------------------------------------------------------------- - *) - -exception Malformed_code - -(* Encodings: - * - With the exception of UTF-8 and UTF-16, only single-byte character sets - * are supported. - * - I took the mappings from www.unicode.org, and the standard names of - * the character sets from IANA. Obviously, many character sets are missing - * that can be supported; especially ISO646 character sets, many EBCDIC - * code pages. - * - Because of the copyright statement from Unicode, I cannot put the - * source tables that describe the mappings into the distribution. They - * are publicly available from www.unicode.org. - * - Because of this, it is difficult for you to extend the list of character - * sets; you need the source tables I am not allowed to distribute. - * These tables have a very simple format: Every line describes a pair - * of code points; the left code (<= 0xff) is the code in the character - * set, the right code (<= 0xffff) is the Unicode equivalent. - * For an example, see - * http://www.unicode.org/Public/MAPPINGS/ISO8859/8859-2.TXT - * You can send me such files, and I will integrate them into the - * distribution (if possible). - * - I really do not know very much about the character sets used in - * East Asia. If you need them, please write the necessary conversion - * functions and send them to me. - * - * KNOWN PROBLEMS: - * - The following charsets do not have a bijective mapping to Unicode: - * adobe_standard_encoding, adobe_symbol_encoding, - * adobe_zapf_dingbats_encoding, cp1002 (0xFEBE). The current implementation - * simply removes one of the conflicting code point pairs - this might - * not what you want. - *) - -type encoding = - [ `Enc_utf8 (* UTF-8 *) - | `Enc_java (* The variant of UTF-8 used by Java *) - | `Enc_utf16 (* UTF-16 with unspecified endianess (restricted usage) *) - | `Enc_utf16_le (* UTF-16 little endian *) - | `Enc_utf16_be (* UTF-16 big endian *) - | `Enc_usascii (* US-ASCII (only 7 bit) *) - | `Enc_iso88591 (* ISO-8859-1 *) - | `Enc_iso88592 (* ISO-8859-2 *) - | `Enc_iso88593 (* ISO-8859-3 *) - | `Enc_iso88594 (* ISO-8859-4 *) - | `Enc_iso88595 (* ISO-8859-5 *) - | `Enc_iso88596 (* ISO-8859-6 *) - | `Enc_iso88597 (* ISO-8859-7 *) - | `Enc_iso88598 (* ISO-8859-8 *) - | `Enc_iso88599 (* ISO-8859-9 *) - | `Enc_iso885910 (* ISO-8859-10 *) - | `Enc_iso885913 (* ISO-8859-13 *) - | `Enc_iso885914 (* ISO-8859-14 *) - | `Enc_iso885915 (* ISO-8859-15 *) - | `Enc_koi8r (* KOI8-R *) - | `Enc_jis0201 (* JIS-0201 *) - (* Microsoft: *) - | `Enc_windows1250 (* WINDOWS-1250 *) - | `Enc_windows1251 (* WINDOWS-1251 *) - | `Enc_windows1252 (* WINDOWS-1252 *) - | `Enc_windows1253 (* WINDOWS-1253 *) - | `Enc_windows1254 (* WINDOWS-1254 *) - | `Enc_windows1255 (* WINDOWS-1255 *) - | `Enc_windows1256 (* WINDOWS-1256 *) - | `Enc_windows1257 (* WINDOWS-1257 *) - | `Enc_windows1258 (* WINDOWS-1258 *) - (* IBM, ASCII-based: *) - | `Enc_cp437 - | `Enc_cp737 - | `Enc_cp775 - | `Enc_cp850 - | `Enc_cp852 - | `Enc_cp855 - | `Enc_cp856 - | `Enc_cp857 - | `Enc_cp860 - | `Enc_cp861 - | `Enc_cp862 - | `Enc_cp863 - | `Enc_cp864 - | `Enc_cp865 - | `Enc_cp866 - | `Enc_cp869 - | `Enc_cp874 - | `Enc_cp1006 - (* IBM, EBCDIC-based: *) - | `Enc_cp037 - | `Enc_cp424 - | `Enc_cp500 - | `Enc_cp875 - | `Enc_cp1026 - (* Adobe: *) - | `Enc_adobe_standard_encoding - | `Enc_adobe_symbol_encoding - | `Enc_adobe_zapf_dingbats_encoding - (* Apple: *) - | `Enc_macroman - - ] - - -val encoding_of_string : string -> encoding;; - (* Returns the encoding of the name of the encoding. Fails if the - * encoding is unknown. - * E.g. encoding_of_string "iso-8859-1" = `Enc_iso88591 - *) - -val string_of_encoding : encoding -> string;; - (* Returns the name of the encoding. *) - - -val makechar : encoding -> int -> string - (* makechar enc i: - * Creates the string representing the code point i in encoding enc. - * Raises Not_found if the character is legal but cannot be represented - * in enc. - * - * Possible encodings: everything but `Enc_utf16. - *) - -val recode : in_enc:encoding -> - in_buf:string -> - in_pos:int -> - in_len:int -> - out_enc:encoding -> - out_buf:string -> - out_pos:int -> - out_len:int -> - max_chars:int -> - subst:(int -> string) -> (int * int * encoding) - (* - * let (in_n, out_n, in_enc') = - * recode in_enc in_buf in_len out_enc out_buf out_pos out_len max_chars - * subst: - * Converts the character sequence contained in the at most in_len bytes - * of in_buf starting at position in_pos, and writes the result - * into at most out_len bytes of out_buf starting at out_pos. - * At most max_chars are written into out_buf. - * The characters in in_buf are assumed to be encoded as in_enc, and the - * characters in out_buf will be encoded as out_enc. - * If there is a code point which cannot be represented in out_enc, - * the function subst is called with the code point as argument, and the - * resulting string (which must already be encoded as out_enc) is - * inserted instead. - * Note: It is possible that subst is called several times for the same - * character. - * Return value: out_n is the actual number of bytes written into out_buf. - * in_n is the actual number of bytes that have been converted from - * in_buf; in_n may be smaller than in_len because of incomplete - * multi-byte characters, or because the output buffer has less space - * for characters than the input buffer, or because of a change - * of the encoding variant. - * If there is at least one complete character in in_buf, and at least - * space for one complete character in out_buf, and max_chars >= 1, it is - * guaranteed that in_n > 0 or out_n > 0. - * in_enc' is normally identical to in_enc. However, there are cases - * in which the encoding can be refined when looking at the byte - * sequence; for example whether a little endian or big endian variant - * of the encoding is used. in_enc' is the variant of in_enc that was - * used for the last character that has been converted. - * - * NOTES: - * - * Supported range of code points: 0 to 0xd7ff, 0xe000 to 0xfffd, - * 0x10000 to 0x10ffff. - * - * Enc_utf8: Malformed UTF-8 byte sequences are always rejected. This - * is also true for the sequence 0xc0 0x80 which is used by some software - * (Java) as paraphrase for the code point 0. - * - * Enc_utf16: When reading from a string encoded as Enc_utf16, a byte - * order mark is expected at the beginning. The detected variant - * (Enc_utf16_le or Enc_utf16_be) is returned. The byte order mark is - * not included into the output string. - It is not possible to - * write as Enc_utf16. - * - * Enc_utf16_le, Enc_utf16_be: When reading from such a string, the - * code point 0xfeff is returned as it is; it is a "zero-width - * non-breaking space". The code point 0xfffe is rejected. - * - * Surrogate pairs: These are recognized (or written) only for a - * UTF-16 encoding; and rejected for any other encoding. - * - * Rejected byte sequences cause the exception Bad_character_stream. - *) - -val recode_string : in_enc:encoding -> - out_enc:encoding -> - ?subst:(int -> string) -> - string -> - string - (* Recodes a complete string from in_enc to out_enc, and returns it. - * The function subst is invoked for code points of in_enc that cannot - * be represented in out_enc, and the result of the function invocation - * is substituted. - * If subst is missing, Not_found is raised in this case. - *) - -(* ====================================================================== - * History: - * - * $Log$ - * Revision 1.1 2000/11/17 09:57:28 lpadovan - * Initial revision - * - * Revision 1.1 2000/08/13 00:02:57 gerd - * Initial revision. - * - * - * ====================================================================== - * OLD LOGS FROM THE PXP PACKAGE (FILE NAME pxp_encoding.mli): - * - * Revision 1.4 2000/07/04 22:05:58 gerd - * Enhanced version of 'recode'. Labeled arguments. - * New function 'recode_string'. - * - * Revision 1.3 2000/05/29 23:48:38 gerd - * Changed module names: - * Markup_aux into Pxp_aux - * Markup_codewriter into Pxp_codewriter - * Markup_document into Pxp_document - * Markup_dtd into Pxp_dtd - * Markup_entity into Pxp_entity - * Markup_lexer_types into Pxp_lexer_types - * Markup_reader into Pxp_reader - * Markup_types into Pxp_types - * Markup_yacc into Pxp_yacc - * See directory "compatibility" for (almost) compatible wrappers emulating - * Markup_document, Markup_dtd, Markup_reader, Markup_types, and Markup_yacc. - * - * Revision 1.2 2000/05/29 21:14:57 gerd - * Changed the type 'encoding' into a polymorphic variant. - * - * Revision 1.1 2000/05/20 20:30:50 gerd - * Initial revision. - * - * - *) diff --git a/helm/DEVEL/pxp/netstring/netencoding.ml b/helm/DEVEL/pxp/netstring/netencoding.ml deleted file mode 100644 index e87c4c397..000000000 --- a/helm/DEVEL/pxp/netstring/netencoding.ml +++ /dev/null @@ -1,903 +0,0 @@ -(* $Id$ - * ---------------------------------------------------------------------- - * - *) - - -module Str = Netstring_str;; - -module Base64 = struct - let b64_pattern plus slash = - [| 'A'; 'B'; 'C'; 'D'; 'E'; 'F'; 'G'; 'H'; 'I'; 'J'; 'K'; 'L'; 'M'; - 'N'; 'O'; 'P'; 'Q'; 'R'; 'S'; 'T'; 'U'; 'V'; 'W'; 'X'; 'Y'; 'Z'; - 'a'; 'b'; 'c'; 'd'; 'e'; 'f'; 'g'; 'h'; 'i'; 'j'; 'k'; 'l'; 'm'; - 'n'; 'o'; 'p'; 'q'; 'r'; 's'; 't'; 'u'; 'v'; 'w'; 'x'; 'y'; 'z'; - '0'; '1'; '2'; '3'; '4'; '5'; '6'; '7'; '8'; '9'; plus; slash |];; - - - let rfc_pattern = b64_pattern '+' '/';; - let url_pattern = b64_pattern '-' '/';; - - let encode_with_options b64 equal s pos len linelen crlf = - (* encode using "base64". - * 'b64': The encoding table, created by b64_pattern. - * 'equal': The character that should be used instead of '=' in the original - * encoding scheme. Pass '=' to get the original encoding scheme. - * s, pos, len, linelen: See the interface description of encode_substring. - *) - assert (Array.length b64 = 64); - if len < 0 or pos < 0 or pos > String.length s or linelen < 0 then - invalid_arg "Netencoding.Base64.encode_with_options"; - if pos + len > String.length s then - invalid_arg "Netencoding.Base64.encode_with_options"; - - let linelen = - (linelen/4) * 4 in - - let l_t = if len = 0 then 0 else ((len - 1) / 3 + 1) * 4 in - (* l_t: length of the result without additional line endings *) - - let l_t' = - if linelen < 4 then - l_t - else - if l_t = 0 then 0 else - let n_lines = ((l_t - 1) / linelen) + 1 in - l_t + n_lines * (if crlf then 2 else 1) - in - (* l_t': length of the result with CRLF or LF characters *) - - let t = String.make l_t' equal in - let j = ref 0 in - let q = ref 0 in - for k = 0 to len / 3 - 1 do - let p = pos + 3*k in - (* p >= pos >= 0: this is evident - * p+2 < pos+len <= String.length s: - * Because k <= len/3-1 - * 3*k <= 3*(len/3-1) = len - 3 - * pos+3*k+2 <= pos + len - 3 + 2 = pos + len - 1 < pos + len - * So it is proved that the following unsafe string accesses always - * work. - *) - let bits = (Char.code (String.unsafe_get s (p)) lsl 16) lor - (Char.code (String.unsafe_get s (p+1)) lsl 8) lor - (Char.code (String.unsafe_get s (p+2))) in - (* Obviously, 'bits' is a 24 bit entity (i.e. bits < 2**24) *) - assert(!j + 3 < l_t'); - String.unsafe_set t !j (Array.unsafe_get b64 ( bits lsr 18)); - String.unsafe_set t (!j+1) (Array.unsafe_get b64 ((bits lsr 12) land 63)); - String.unsafe_set t (!j+2) (Array.unsafe_get b64 ((bits lsr 6) land 63)); - String.unsafe_set t (!j+3) (Array.unsafe_get b64 ( bits land 63)); - j := !j + 4; - if linelen > 3 then begin - q := !q + 4; - if !q + 4 > linelen then begin - (* The next 4 characters won't fit on the current line. So insert - * a line ending. - *) - if crlf then begin - t.[ !j ] <- '\013'; - t.[ !j+1 ] <- '\010'; - j := !j + 2; - end - else begin - t.[ !j ] <- '\010'; - incr j - end; - q := 0; - end; - end; - done; - (* padding if needed: *) - let m = len mod 3 in - begin - match m with - 0 -> () - | 1 -> - let bits = Char.code (s.[pos + len - 1]) in - t.[ !j ] <- b64.( bits lsr 2); - t.[ !j + 1 ] <- b64.( (bits land 0x03) lsl 4); - j := !j + 4; - q := !q + 4; - | 2 -> - let bits = (Char.code (s.[pos + len - 2]) lsl 8) lor - (Char.code (s.[pos + len - 1])) in - t.[ !j ] <- b64.( bits lsr 10); - t.[ !j + 1 ] <- b64.((bits lsr 4) land 0x3f); - t.[ !j + 2 ] <- b64.((bits lsl 2) land 0x3f); - j := !j + 4; - q := !q + 4; - | _ -> assert false - end; - - (* If required, add another line end: *) - - if linelen > 3 & !q > 0 then begin - if crlf then begin - t.[ !j ] <- '\013'; - t.[ !j+1 ] <- '\010'; - j := !j + 2; - end - else begin - t.[ !j ] <- '\010'; - incr j - end; - end; - - t ;; - - - - let encode ?(pos=0) ?len ?(linelength=0) ?(crlf=false) s = - let l = match len with None -> String.length s - pos | Some x -> x in - encode_with_options rfc_pattern '=' s pos l linelength crlf;; - - - let encode_substring s ~pos ~len ~linelength ~crlf = - encode_with_options rfc_pattern '=' s pos len linelength crlf;; - - - let url_encode ?(pos=0) ?len ?(linelength=0) ?(crlf=false) s = - let l = match len with None -> String.length s - pos | Some x -> x in - encode_with_options url_pattern '.' s pos l linelength crlf;; - - - let decode_substring t ~pos ~len ~url_variant:p_url ~accept_spaces:p_spaces = - if len < 0 or pos < 0 or pos > String.length t then - invalid_arg "Netencoding.Base64.decode_substring"; - if pos + len > String.length t then - invalid_arg "Netencoding.Base64.decode_substring"; - - (* Compute the number of effective characters l_t in 't'; - * pad_chars: number of '=' characters at the end of the string. - *) - let l_t, pad_chars = - if p_spaces then begin - (* Count all non-whitespace characters: *) - let c = ref 0 in - let p = ref 0 in - for i = pos to pos + len - 1 do - match String.unsafe_get t i with - (' '|'\t'|'\r'|'\n') -> () - | ('='|'.') as ch -> - if ch = '.' & not p_url then - invalid_arg "Netencoding.Base64.decode_substring"; - incr c; - incr p; - if !p > 2 then - invalid_arg "Netencoding.Base64.decode_substring"; - for j = i+1 to pos + len - 1 do - match String.unsafe_get t j with - (' '|'\t'|'\r'|'\n'|'.'|'=') -> () - | _ -> - (* Only another '=' or spaces allowed *) - invalid_arg "Netencoding.Base64.decode_substring"; - done - | _ -> incr c - done; - if !c mod 4 <> 0 then - invalid_arg "Netencoding.Base64.decode_substring"; - !c, !p - end - else - len, - ( if len mod 4 <> 0 then - invalid_arg "Netencoding.Base64.decode_substring"; - if len > 0 then ( - if String.sub t (len - 2) 2 = "==" or - (p_url & String.sub t (len - 2) 2 = "..") then 2 - else - if String.sub t (len - 1) 1 = "=" or - (p_url & String.sub t (len - 1) 1 = ".") then 1 - else - 0 - ) - else 0 - ) - in - - let l_s = (l_t / 4) * 3 - pad_chars in (* sic! *) - let s = String.create l_s in - - let decode_char c = - match c with - 'A' .. 'Z' -> Char.code(c) - 65 (* 65 = Char.code 'A' *) - | 'a' .. 'z' -> Char.code(c) - 71 (* 71 = Char.code 'a' - 26 *) - | '0' .. '9' -> Char.code(c) + 4 (* -4 = Char.code '0' - 52 *) - | '+' -> 62 - | '-' -> if not p_url then - invalid_arg "Netencoding.Base64.decode_substring"; - 62 - | '/' -> 63 - | _ -> invalid_arg "Netencoding.Base64.decode_substring"; - in - - (* Decode all but the last quartet: *) - - let cursor = ref pos in - let rec next_char() = - match t.[ !cursor ] with - (' '|'\t'|'\r'|'\n') -> - if p_spaces then (incr cursor; next_char()) - else invalid_arg "Netencoding.Base64.decode_substring" - | c -> - incr cursor; c - in - - if p_spaces then begin - for k = 0 to l_t / 4 - 2 do - let q = 3*k in - let c0 = next_char() in - let c1 = next_char() in - let c2 = next_char() in - let c3 = next_char() in - let n0 = decode_char c0 in - let n1 = decode_char c1 in - let n2 = decode_char c2 in - let n3 = decode_char c3 in - let x0 = (n0 lsl 2) lor (n1 lsr 4) in - let x1 = ((n1 lsl 4) land 0xf0) lor (n2 lsr 2) in - let x2 = ((n2 lsl 6) land 0xc0) lor n3 in - String.unsafe_set s q (Char.chr x0); - String.unsafe_set s (q+1) (Char.chr x1); - String.unsafe_set s (q+2) (Char.chr x2); - done; - end - else begin - (* Much faster: *) - for k = 0 to l_t / 4 - 2 do - let p = pos + 4*k in - let q = 3*k in - let c0 = String.unsafe_get t p in - let c1 = String.unsafe_get t (p + 1) in - let c2 = String.unsafe_get t (p + 2) in - let c3 = String.unsafe_get t (p + 3) in - let n0 = decode_char c0 in - let n1 = decode_char c1 in - let n2 = decode_char c2 in - let n3 = decode_char c3 in - let x0 = (n0 lsl 2) lor (n1 lsr 4) in - let x1 = ((n1 lsl 4) land 0xf0) lor (n2 lsr 2) in - let x2 = ((n2 lsl 6) land 0xc0) lor n3 in - String.unsafe_set s q (Char.chr x0); - String.unsafe_set s (q+1) (Char.chr x1); - String.unsafe_set s (q+2) (Char.chr x2); - done; - cursor := pos + l_t - 4; - end; - - (* Decode the last quartet: *) - - if l_t > 0 then begin - let q = 3*(l_t / 4 - 1) in - let c0 = next_char() in - let c1 = next_char() in - let c2 = next_char() in - let c3 = next_char() in - - if (c2 = '=' & c3 = '=') or (p_url & c2 = '.' & c3 = '.') then begin - let n0 = decode_char c0 in - let n1 = decode_char c1 in - let x0 = (n0 lsl 2) lor (n1 lsr 4) in - s.[ q ] <- Char.chr x0; - end - else - if (c3 = '=') or (p_url & c3 = '.') then begin - let n0 = decode_char c0 in - let n1 = decode_char c1 in - let n2 = decode_char c2 in - let x0 = (n0 lsl 2) lor (n1 lsr 4) in - let x1 = ((n1 lsl 4) land 0xf0) lor (n2 lsr 2) in - s.[ q ] <- Char.chr x0; - s.[ q+1 ] <- Char.chr x1; - end - else begin - let n0 = decode_char c0 in - let n1 = decode_char c1 in - let n2 = decode_char c2 in - let n3 = decode_char c3 in - let x0 = (n0 lsl 2) lor (n1 lsr 4) in - let x1 = ((n1 lsl 4) land 0xf0) lor (n2 lsr 2) in - let x2 = ((n2 lsl 6) land 0xc0) lor n3 in - s.[ q ] <- Char.chr x0; - s.[ q+1 ] <- Char.chr x1; - s.[ q+2 ] <- Char.chr x2; - end - - end; - - s ;; - - - - let decode ?(pos=0) ?len ?(url_variant=true) ?(accept_spaces=false) s = - let l = match len with None -> String.length s - pos | Some x -> x in - decode_substring s pos l url_variant accept_spaces;; - - let decode_ignore_spaces s = - decode_substring s 0 (String.length s) true true;; - - -end - - - -module QuotedPrintable = struct - - let encode_substring s ~pos ~len = - - if len < 0 or pos < 0 or pos > String.length s then - invalid_arg "Netencoding.QuotedPrintable.encode_substring"; - if pos + len > String.length s then - invalid_arg "Netencoding.QuotedPrintable.encode_substring"; - - let rec count n i = - if i < len then - match String.unsafe_get s (pos+i) with - ('\r'|'\n') -> - count (n+1) (i+1) - | ('\000'..'\031'|'\127'..'\255'| - '!'|'"'|'#'|'$'|'@'|'['|']'|'^'|'\''|'{'|'|'|'}'|'~'|'=') -> - count (n+3) (i+1) - | ' ' -> - (* Protect spaces only if they occur at the end of a line *) - if i+1 < len then - match s.[pos+i+1] with - ('\r'|'\n') -> - count (n+3) (i+1) - | _ -> - count (n+1) (i+1) - else - count (n+3) (i+1) - | _ -> - count (n+1) (i+1) - else - n - in - - let l = count 0 0 in - let t = String.create l in - - let hexdigit = - [| '0'; '1'; '2'; '3'; '4'; '5'; '6'; '7'; - '8'; '9'; 'A'; 'B'; 'C'; 'D'; 'E'; 'F'; |] in - - let k = ref 0 in - - let add_quoted c = - t.[ !k ] <- '='; - t.[ !k+1 ] <- hexdigit.( Char.code c lsr 4 ); - t.[ !k+2 ] <- hexdigit.( Char.code c land 15 ) - in - - for i = 0 to len - 1 do - match String.unsafe_get s i with - ('\r'|'\n') as c -> - String.unsafe_set t !k c; - incr k - | ('\000'..'\031'|'\127'..'\255'| - '!'|'"'|'#'|'$'|'@'|'['|']'|'^'|'\''|'{'|'|'|'}'|'~'|'=') as c -> - add_quoted c; - k := !k + 3 - | ' ' -> - (* Protect spaces only if they occur at the end of a line *) - if i+1 < len then - match s.[pos+i+1] with - ('\r'|'\n') -> - add_quoted ' '; - k := !k + 3; - | _ -> - String.unsafe_set t !k ' '; - incr k - else begin - add_quoted ' '; - k := !k + 3; - end - | c -> - String.unsafe_set t !k c; - incr k - done; - - t ;; - - - let encode ?(pos=0) ?len s = - let l = match len with None -> String.length s - pos | Some x -> x in - encode_substring s pos l;; - - - - let decode_substring s ~pos ~len = - - if len < 0 or pos < 0 or pos > String.length s then - invalid_arg "Netencoding.QuotedPrintable.decode_substring"; - if pos + len > String.length s then - invalid_arg "Netencoding.QuotedPrintable.decode_substring"; - - let decode_hex c = - match c with - '0'..'9' -> Char.code c - 48 - | 'A'..'F' -> Char.code c - 55 - | 'a'..'f' -> Char.code c - 87 - | _ -> - invalid_arg "Netencoding.QuotedPrintable.decode_substring"; - in - - let rec count n i = - if i < len then - match String.unsafe_get s (pos+i) with - '=' -> - if i+1 = len then - (* A '=' at EOF is ignored *) - count n (i+1) - else - if i+1 < len then - match s.[pos+i+1] with - '\r' -> - (* Official soft break *) - if i+2 < len & s.[pos+i+2] = '\n' then - count n (i+3) - else - count n (i+2) - | '\n' -> - (* Inofficial soft break *) - count n (i+2) - | _ -> - if i+2 >= len then - invalid_arg - "Netencoding.QuotedPrintable.decode_substring"; - let _ = decode_hex s.[pos+i+1] in - let _ = decode_hex s.[pos+i+2] in - count (n+1) (i+3) - else - invalid_arg "Netencoding.QuotedPrintable.decode_substring" - | _ -> - count (n+1) (i+1) - else - n - in - - let l = count 0 0 in - let t = String.create l in - let k = ref pos in - let e = pos + len in - let i = ref 0 in - - while !i < l do - match String.unsafe_get s !k with - '=' -> - if !k+1 = e then - (* A '=' at EOF is ignored *) - () - else - if !k+1 < e then - match s.[!k+1] with - '\r' -> - (* Official soft break *) - if !k+2 < e & s.[!k+2] = '\n' then - k := !k + 3 - else - k := !k + 2 - | '\n' -> - (* Inofficial soft break *) - k := !k + 2 - | _ -> - if !k+2 >= e then - invalid_arg - "Netencoding.QuotedPrintable.decode_substring"; - let x1 = decode_hex s.[!k+1] in - let x2 = decode_hex s.[!k+2] in - t.[ !i ] <- Char.chr ((x1 lsl 4) lor x2); - k := !k + 3; - incr i - else - invalid_arg "Netencoding.QuotedPrintable.decode_substring" - | c -> - String.unsafe_set t !i c; - incr k; - incr i - done; - - t ;; - - - let decode ?(pos=0) ?len s = - let l = match len with None -> String.length s - pos | Some x -> x in - decode_substring s pos l;; - -end - - -module Q = struct - - let encode_substring s ~pos ~len = - - if len < 0 or pos < 0 or pos > String.length s then - invalid_arg "Netencoding.Q.encode_substring"; - if pos + len > String.length s then - invalid_arg "Netencoding.Q.encode_substring"; - - let rec count n i = - if i < len then - match String.unsafe_get s (pos+i) with - | ('A'..'Z'|'a'..'z'|'0'..'9') -> - count (n+1) (i+1) - | _ -> - count (n+3) (i+1) - else - n - in - - let l = count 0 0 in - let t = String.create l in - - let hexdigit = - [| '0'; '1'; '2'; '3'; '4'; '5'; '6'; '7'; - '8'; '9'; 'A'; 'B'; 'C'; 'D'; 'E'; 'F'; |] in - - let k = ref 0 in - - let add_quoted c = - t.[ !k ] <- '='; - t.[ !k+1 ] <- hexdigit.( Char.code c lsr 4 ); - t.[ !k+2 ] <- hexdigit.( Char.code c land 15 ) - in - - for i = 0 to len - 1 do - match String.unsafe_get s i with - | ('A'..'Z'|'a'..'z'|'0'..'9') as c -> - String.unsafe_set t !k c; - incr k - | c -> - add_quoted c; - k := !k + 3 - done; - - t ;; - - - let encode ?(pos=0) ?len s = - let l = match len with None -> String.length s - pos | Some x -> x in - encode_substring s pos l;; - - - - let decode_substring s ~pos ~len = - - if len < 0 or pos < 0 or pos > String.length s then - invalid_arg "Netencoding.Q.decode_substring"; - if pos + len > String.length s then - invalid_arg "Netencoding.Q.decode_substring"; - - let decode_hex c = - match c with - '0'..'9' -> Char.code c - 48 - | 'A'..'F' -> Char.code c - 55 - | 'a'..'f' -> Char.code c - 87 - | _ -> - invalid_arg "Netencoding.Q.decode_substring"; - in - - let rec count n i = - if i < len then - match String.unsafe_get s (pos+i) with - '=' -> - if i+2 >= len then - invalid_arg "Netencoding.Q.decode_substring"; - let _ = decode_hex s.[pos+i+1] in - let _ = decode_hex s.[pos+i+2] in - count (n+1) (i+3) - | _ -> (* including '_' *) - count (n+1) (i+1) - else - n - in - - let l = count 0 0 in - let t = String.create l in - let k = ref pos in - let e = pos + len in - let i = ref 0 in - - while !i < l do - match String.unsafe_get s !k with - '=' -> - if !k+2 >= e then - invalid_arg "Netencoding.Q.decode_substring"; - let x1 = decode_hex s.[!k+1] in - let x2 = decode_hex s.[!k+2] in - t.[ !i ] <- Char.chr ((x1 lsl 4) lor x2); - k := !k + 3; - incr i - | '_' -> - String.unsafe_set t !i ' '; - incr k; - incr i - | c -> - String.unsafe_set t !i c; - incr k; - incr i - done; - - t ;; - - - let decode ?(pos=0) ?len s = - let l = match len with None -> String.length s - pos | Some x -> x in - decode_substring s pos l ;; - -end - - -module Url = struct - let hex_digits = - [| '0'; '1'; '2'; '3'; '4'; '5'; '6'; '7'; - '8'; '9'; 'A'; 'B'; 'C'; 'D'; 'E'; 'F' |];; - - let to_hex2 k = - (* Converts k to a 2-digit hex string *) - let s = String.create 2 in - s.[0] <- hex_digits.( (k lsr 4) land 15 ); - s.[1] <- hex_digits.( k land 15 ); - s ;; - - - let of_hex1 c = - match c with - ('0'..'9') -> Char.code c - Char.code '0' - | ('A'..'F') -> Char.code c - Char.code 'A' + 10 - | ('a'..'f') -> Char.code c - Char.code 'a' + 10 - | _ -> - raise Not_found ;; - - - - let url_encoding_re = - Str.regexp "[^A-Za-z0-9$_.!*'(),-]";; - - let url_decoding_re = - Str.regexp "\\+\\|%..\\|%.\\|%";; - - - let encode s = - Str.global_substitute - url_encoding_re - (fun r _ -> - match Str.matched_string r s with - " " -> "+" - | x -> - let k = Char.code(x.[0]) in - "%" ^ to_hex2 k - ) - s ;; - - - let decode s = - let l = String.length s in - Str.global_substitute - url_decoding_re - (fun r _ -> - match Str.matched_string r s with - | "+" -> " " - | _ -> - let i = Str.match_beginning r in - (* Assertion: s.[i] = '%' *) - if i+2 >= l then failwith "Cgi.decode"; - let c1 = s.[i+1] in - let c2 = s.[i+2] in - begin - try - let k1 = of_hex1 c1 in - let k2 = of_hex1 c2 in - String.make 1 (Char.chr((k1 lsl 4) lor k2)) - with - Not_found -> - failwith "Cgi.decode" - end - ) - s ;; - -end - - -module Html = struct - - let eref_re = - Str.regexp - "&\\(#\\([0-9]+\\);\\|\\([a-zA-Z]+\\);\\)" ;; - let unsafe_re = Str.regexp "[<>&\"\000-\008\011-\012\014-\031\127-\255]" ;; - - let etable = - [ "lt", "<"; - "gt", ">"; - "amp", "&"; - "quot", "\""; - (* Note: " is new in HTML-4.0, but it has been widely used - * much earlier. - *) - "nbsp", "\160"; - "iexcl", "\161"; - "cent", "\162"; - "pound", "\163"; - "curren", "\164"; - "yen", "\165"; - "brvbar", "\166"; - "sect", "\167"; - "uml", "\168"; - "copy", "\169"; - "ordf", "\170"; - "laquo", "\171"; - "not", "\172"; - "shy", "\173"; - "reg", "\174"; - "macr", "\175"; - "deg", "\176"; - "plusmn", "\177"; - "sup2", "\178"; - "sup3", "\179"; - "acute", "\180"; - "micro", "\181"; - "para", "\182"; - "middot", "\183"; - "cedil", "\184"; - "sup1", "\185"; - "ordm", "\186"; - "raquo", "\187"; - "frac14", "\188"; - "frac12", "\189"; - "frac34", "\190"; - "iquest", "\191"; - "Agrave", "\192"; - "Aacute", "\193"; - "Acirc", "\194"; - "Atilde", "\195"; - "Auml", "\196"; - "Aring", "\197"; - "AElig", "\198"; - "Ccedil", "\199"; - "Egrave", "\200"; - "Eacute", "\201"; - "Ecirc", "\202"; - "Euml", "\203"; - "Igrave", "\204"; - "Iacute", "\205"; - "Icirc", "\206"; - "Iuml", "\207"; - "ETH", "\208"; - "Ntilde", "\209"; - "Ograve", "\210"; - "Oacute", "\211"; - "Ocirc", "\212"; - "Otilde", "\213"; - "Ouml", "\214"; - "times", "\215"; - "Oslash", "\216"; - "Ugrave", "\217"; - "Uacute", "\218"; - "Ucirc", "\219"; - "Uuml", "\220"; - "Yacute", "\221"; - "THORN", "\222"; - "szlig", "\223"; - "agrave", "\224"; - "aacute", "\225"; - "acirc", "\226"; - "atilde", "\227"; - "auml", "\228"; - "aring", "\229"; - "aelig", "\230"; - "ccedil", "\231"; - "egrave", "\232"; - "eacute", "\233"; - "ecirc", "\234"; - "euml", "\235"; - "igrave", "\236"; - "iacute", "\237"; - "icirc", "\238"; - "iuml", "\239"; - "eth", "\240"; - "ntilde", "\241"; - "ograve", "\242"; - "oacute", "\243"; - "ocirc", "\244"; - "otilde", "\245"; - "ouml", "\246"; - "divide", "\247"; - "oslash", "\248"; - "ugrave", "\249"; - "uacute", "\250"; - "ucirc", "\251"; - "uuml", "\252"; - "yacute", "\253"; - "thorn", "\254"; - "yuml", "\255"; - ] ;; - - let quick_etable = - let ht = Hashtbl.create 50 in - List.iter (fun (name,value) -> Hashtbl.add ht name value) etable; - (* Entities to be decoded, but that must not be encoded: *) - Hashtbl.add ht "apos" "'"; (* used in XML documents *) - ht ;; - - let rev_etable = - let a = Array.create 256 "" in - List.iter (fun (name,value) -> - a.(Char.code(value.[0])) <- "&" ^ name ^ ";") etable; - for i = 0 to 8 do - a.(i) <- "&#" ^ string_of_int i ^ ";" - done; - for i = 11 to 12 do - a.(i) <- "&#" ^ string_of_int i ^ ";" - done; - for i = 14 to 31 do - a.(i) <- "&#" ^ string_of_int i ^ ";" - done; - for i = 127 to 159 do - a.(i) <- "&#" ^ string_of_int i ^ ";" - done; - a ;; - - let decode_to_latin1 s = - Str.global_substitute - eref_re - (fun r _ -> - let t = Str.matched_string r s in - try - let n = int_of_string(Str.matched_group r 2 s) in - if n < 256 then - String.make 1 (Char.chr n) - else - t - with - Not_found -> - try - let name = Str.matched_group r 3 s in - try - Hashtbl.find quick_etable name - with - Not_found -> - t - with - Not_found -> assert false - ) - s ;; - - let encode_from_latin1 s = - Str.global_substitute - unsafe_re - (fun r _ -> - let t = Str.matched_string r s in - let i = Char.code (t.[0]) in - rev_etable.(i) - ) - s ;; -end - - - -(* ====================================================================== - * History: - * - * $Log$ - * Revision 1.1 2000/11/17 09:57:27 lpadovan - * Initial revision - * - * Revision 1.5 2000/06/25 22:34:43 gerd - * Added labels to arguments. - * - * Revision 1.4 2000/06/25 21:15:48 gerd - * Checked thread-safety. - * - * Revision 1.3 2000/03/03 17:03:16 gerd - * Q encoding: CR and LF are quoted. - * - * Revision 1.2 2000/03/03 01:08:29 gerd - * Added Netencoding.Html functions. - * - * Revision 1.1 2000/03/02 01:14:48 gerd - * Initial revision. - * - * - *) diff --git a/helm/DEVEL/pxp/netstring/netencoding.mli b/helm/DEVEL/pxp/netstring/netencoding.mli deleted file mode 100644 index 6466572b3..000000000 --- a/helm/DEVEL/pxp/netstring/netencoding.mli +++ /dev/null @@ -1,271 +0,0 @@ -(* $Id$ - * ---------------------------------------------------------------------- - * - *) - -(**********************************************************************) -(* Several encodings important for the net *) -(**********************************************************************) - - -(**********************************************************************) -(* Base 64 encoding *) -(**********************************************************************) - -(* See RFC 2045 for a description of Base 64 encoding. *) - -(* THREAD-SAFETY: - * All Base64 functions are reentrant and thus thread-safe. - *) - -module Base64 : sig - - val encode : ?pos:int -> ?len:int -> ?linelength:int -> ?crlf:bool -> - string -> string - (* Compute the "base 64" encoding of the given string argument. - * Note that the result is a string that only contains the characters - * a-z, A-Z, 0-9, +, /, =, and optionally spaces, CR and LF characters. - * - * If pos and/or len are passed, only the substring starting at - * pos (default: 0) with length len (default: rest of the string) - * is encoded. - * - * The result is divided up into lines not longer than 'linelength' - * (without counting the line separator); default: do not divide lines. - * If 'linelength' is smaller than 4, no line division is performed. - * If 'linelength' is not divisible by 4, the produced lines are a - * bit shorter than 'linelength'. - * - * If 'crlf' (default: false) the lines are ended by CRLF; otherwise - * they are only ended by LF. - * (You need the crlf option to produce correct MIME messages.) - * - *) - - val url_encode : ?pos:int -> ?len:int -> ?linelength:int -> ?crlf:bool -> - string -> string - (* Same as 'encode' but use slightly different characters that can be - * part of URLs without additional encodings. - * The encoded string consists only of the characters a-z, A-Z, 0-9, - * -, /, . - * 'url_encode' does NOT implement the Base 64 encoding as described - * in the standard! - *) - - val encode_substring : string -> pos:int -> len:int -> linelength:int -> - crlf:bool -> string - (* *** DEPRECATED FUNCTION *** Use 'encode' instead! *** - * - * encode_substring s pos len linelen crlf: - * Encodes the substring at position 'pos' in 's' with length 'len'. - * The result is divided up into lines not longer than 'linelen' (without - * counting the line separator). - * If 'linelen' is smaller than 4, no line division is performed. - * If 'linelen' is not divisible by 4, the produced lines are a - * bit shorter than 'linelen'. - * If 'crlf' the lines are ended by CRLF; otherwise they are only - * ended by LF. - * (You need the crlf option to produce correct MIME messages.) - *) - - val decode : ?pos:int -> ?len:int -> ?url_variant:bool -> - ?accept_spaces:bool -> string -> string - (* Decodes the given string argument. - * - * If pos and/or len are passed, only the substring starting at - * pos (default: 0) with length len (default: rest of the string) - * is decoded. - * - * If url_variant (default: true) is set, the functions also - * accepts the characters '-' and '.' as produced by 'url_encode'. - * - * If accept_spaces (default: false) is set, the function ignores - * white space contained in the string to decode (otherwise the - * function fails if it finds white space). - *) - - val decode_ignore_spaces : string -> string - (* *** DEPRECATED FUNCTION *** Use 'decode' instead! *** - * - * Decodes the string, too, but it is allowed that the string contains - * whitespace characters. - * This function is slower than 'decode'. - *) - - val decode_substring : string -> pos:int -> len:int -> url_variant:bool -> - accept_spaces:bool -> string - (* *** DEPRECATED FUNCTION *** Use 'decode' instead! *** - * - * decode_substring s pos len url spaces: - * Decodes the substring of 's' beginning at 'pos' with length 'len'. - * If 'url', strings created by 'url_encode' are accepted, too. - * If 'spaces', whitespace characters are allowed in the string. - *) -end - -(**********************************************************************) -(* Quoted printable encoding *) -(**********************************************************************) - -(* See RFC 2045. - * This implementation assumes that the encoded string has a text MIME - * type. Because of this, the characters CR and LF are never protected - * by hex tokens; they are copied literally to the output string. - *) - -(* THREAD-SAFETY: - * All QuotedPrintable functions are reentrant and thus thread-safe. - *) - -module QuotedPrintable : - sig - val encode : ?pos:int -> ?len:int -> string -> string - (* Encodes the string and returns it. - * Note line breaks: - * No additional soft line breaks are added. The characters CR - * and LF are not represented as =0D resp. =0A. (But other control - * characters ARE encoded.) - * Note unsafe characters: - * As recommended by RFC 2045, the characters !\"#$@[]^`{|}~ - * are additionally represented as hex tokens. -- " - * - * If pos and/or len are passed, only the substring starting at - * pos (default: 0) with length len (default: rest of the string) - * is encoded. - *) - - val encode_substring : string -> pos:int -> len:int -> string - (* *** DEPRECATED FUNCTION *** Use 'encode' instead! *** - * encode_substring s pos len: - * Encodes the substring of 's' beginning at 'pos' with length 'len'. - *) - - val decode : ?pos:int -> ?len:int -> string -> string - (* Decodes the string and returns it. - * Most format errors cause an Invalid_argument exception. - * Note that soft line breaks can be properly decoded although - * 'encode' will never produce them. - * - * If pos and/or len are passed, only the substring starting at - * pos (default: 0) with length len (default: rest of the string) - * is decoded. - *) - - val decode_substring : string -> pos:int -> len:int -> string - (* *** DEPRECATED FUNCTION *** Use 'decode' instead! *** - * decode_substring s pos len: - * Decodes the substring of 's' beginning at 'pos' with length 'len'. - *) - - end - -(**********************************************************************) -(* Q encoding *) -(**********************************************************************) - -(* See RFC 2047. - * The functions behave similar to those of QuotedPrintable. - *) - -(* THREAD-SAFETY: - * All Q functions are reentrant and thus thread-safe. - *) - -module Q : - sig - val encode : ?pos:int -> ?len:int -> string -> string - (* Note: - * All characters except alphanumeric characters are protected by - * hex tokens. - * In particular, spaces are represented as "=20", not as "_". - *) - - val decode : ?pos:int -> ?len:int -> string -> string - - val encode_substring : string -> pos:int -> len:int -> string - (* *** DEPRECATED FUNCTION *** Use 'encode' instead! *** *) - - val decode_substring : string -> pos:int -> len:int -> string - (* *** DEPRECATED FUNCTION *** Use 'decode' instead! *** *) - end - -(**********************************************************************) -(* B encoding *) -(**********************************************************************) - -(* The B encoding of RFC 2047 is the same as Base64. *) - - -(**********************************************************************) -(* URL-encoding *) -(**********************************************************************) - -(* Encoding/Decoding within URLs: - * - * The following two functions perform the '%'-substitution for - * characters that may otherwise be interpreted as metacharacters. - * - * According to: RFC 1738, RFC 1630 - *) - -(* THREAD-SAFETY: - * The Url functions are thread-safe. - *) - -module Url : - sig - val decode : string -> string - val encode : string -> string - end - - -(**********************************************************************) -(* HTMLization *) -(**********************************************************************) - -(* Encodes characters that need protection by converting them to - * entity references. E.g. "<" is converted to "<". - * As the entities may be named, there is a dependency on the character - * set. Currently, there are only functions for the Latin 1 alphabet. - *) - -(* THREAD-SAFETY: - * The Html functions are thread-safe. - *) - -module Html : - sig - val encode_from_latin1 : string -> string - (* Encodes the characters 0-8, 11-12, 14-31, '<', '>', '"', '&', - * 127-255. If the characters have a name, a named entity is - * preferred over a numeric entity. - *) - val decode_to_latin1 : string -> string - (* Decodes the string. Unknown named entities are left as they - * are (i.e. decode_to_latin1 "&nonsense;" = "&nonsense;"). - * The same applies to numeric entities greater than 255. - *) - end - - -(* ====================================================================== - * History: - * - * $Log$ - * Revision 1.1 2000/11/17 09:57:27 lpadovan - * Initial revision - * - * Revision 1.4 2000/06/25 22:34:43 gerd - * Added labels to arguments. - * - * Revision 1.3 2000/06/25 21:15:48 gerd - * Checked thread-safety. - * - * Revision 1.2 2000/03/03 01:08:29 gerd - * Added Netencoding.Html functions. - * - * Revision 1.1 2000/03/02 01:14:48 gerd - * Initial revision. - * - * - *) diff --git a/helm/DEVEL/pxp/netstring/nethtml.ml b/helm/DEVEL/pxp/netstring/nethtml.ml deleted file mode 100644 index 7f9d983cd..000000000 --- a/helm/DEVEL/pxp/netstring/nethtml.ml +++ /dev/null @@ -1,276 +0,0 @@ -(* $Id$ - * ---------------------------------------------------------------------- - * - *) - -open Nethtml_scanner;; - -type document = - Element of (string * (string*string) list * document list) - | Data of string -;; - - -exception End_of_scan;; - - -let no_end_tag = (* empty HTML elements *) - ref - [ "isindex"; - "base"; - "meta"; - "link"; - "hr"; - "input"; - "img"; - "param"; - "basefont"; - "br"; - "area"; - ] -;; - - -let special_tag = (* other lexical rules *) - ref - [ "script"; - "style"; - ] -;; - - -let rec parse_comment buf = - let t = scan_comment buf in - match t with - Mcomment -> - parse_comment buf - | Eof -> - raise End_of_scan - | _ -> - () -;; - - -let rec parse_doctype buf = - let t = scan_doctype buf in - match t with - Mdoctype -> - parse_doctype buf - | Eof -> - raise End_of_scan - | _ -> - () -;; - - -let parse_document buf = - let current_name = ref "" in - let current_atts = ref [] in - let current_subs = ref [] in - let stack = Stack.create() in - - let parse_atts() = - let rec next_no_space() = - match scan_element buf with - Space _ -> next_no_space() - | t -> t - in - - let rec parse_atts_lookahead next = - match next with - Relement -> [] - | Name n -> - begin match next_no_space() with - Is -> - begin match next_no_space() with - Name v -> - (String.lowercase n, String.uppercase v) :: - parse_atts_lookahead (next_no_space()) - | Literal v -> - (String.lowercase n,v) :: - parse_atts_lookahead (next_no_space()) - | Eof -> - raise End_of_scan - | Relement -> - (* Illegal *) - [] - | _ -> - (* Illegal *) - parse_atts_lookahead (next_no_space()) - end - | Eof -> - raise End_of_scan - | Relement -> - (* <==> *) - [ String.lowercase n, String.lowercase n ] - | next' -> - (* assume <==> *) - ( String.lowercase n, String.lowercase n ) :: - parse_atts_lookahead next' - end - | Eof -> - raise End_of_scan - | _ -> - (* Illegal *) - parse_atts_lookahead (next_no_space()) - in - parse_atts_lookahead (next_no_space()) - in - - let rec parse_special name = - (* Parse until *) - match scan_special buf with - Lelementend n -> - if n = name then - "" - else - " - raise End_of_scan - | Cdata s -> - s ^ parse_special name - | _ -> - (* Illegal *) - parse_special name - in - - let rec skip_element() = - (* Skip until ">" *) - match scan_element buf with - Relement -> - () - | Eof -> - raise End_of_scan - | _ -> - skip_element() - in - - let rec parse_next() = - let t = scan_document buf in - match t with - Lcomment -> - parse_comment buf; - parse_next() - | Ldoctype -> - parse_doctype buf; - parse_next() - | Lelement name -> - let name = String.lowercase name in - if List.mem name !no_end_tag then begin - let atts = parse_atts() in - current_subs := (Element(name, atts, [])) :: !current_subs; - parse_next() - end - else if List.mem name !special_tag then begin - let atts = parse_atts() in - let data = parse_special name in - (* Read until ">" *) - skip_element(); - current_subs := (Element(name, atts, [Data data])) :: !current_subs; - parse_next() - end - else begin - let atts = parse_atts() in - Stack.push (!current_name, !current_atts, !current_subs) stack; - current_name := name; - current_atts := atts; - current_subs := []; - parse_next() - end - | Cdata data -> - current_subs := (Data data) :: !current_subs; - parse_next() - | Lelementend name -> - let name = String.lowercase name in - (* Read until ">" *) - skip_element(); - (* Search the element to close on the stack: *) - let found = ref (name = !current_name) in - Stack.iter - (fun (old_name, _, _) -> - if name = old_name then found := true) - stack; - (* If not found, the end tag is wrong. Simply ignore it. *) - if not !found then - parse_next() - else begin - (* Put the current element on to the stack: *) - Stack.push (!current_name, !current_atts, !current_subs) stack; - (* If found: Remove the elements from the stack, and append - * them to the previous element as sub elements - *) - let rec remove() = - let old_name, old_atts, old_subs = Stack.pop stack in - (* or raise Stack.Empty *) - if old_name = name then - old_name, old_atts, old_subs - else - let older_name, older_atts, older_subs = remove() in - older_name, - older_atts, - (Element (old_name, old_atts, List.rev old_subs) :: older_subs) - in - let old_name, old_atts, old_subs = remove() in - (* Remove one more element: the element containing the element - * currently being closed. - *) - let new_name, new_atts, new_subs = Stack.pop stack in - current_name := new_name; - current_atts := new_atts; - current_subs := (Element (old_name, old_atts, List.rev old_subs)) - :: new_subs; - (* Go on *) - parse_next() - end - | Eof -> - raise End_of_scan - | _ -> - parse_next() - in - try - parse_next(); - List.rev !current_subs - with - End_of_scan -> - (* Close all remaining elements: *) - Stack.push (!current_name, !current_atts, !current_subs) stack; - let rec remove() = - let old_name, old_atts, old_subs = Stack.pop stack in - (* or raise Stack.Empty *) - try - let older_name, older_atts, older_subs = remove() in - older_name, - older_atts, - (Element (old_name, old_atts, List.rev old_subs) :: older_subs) - with - Stack.Empty -> - old_name, old_atts, old_subs - in - let name, atts, subs = remove() in - List.rev subs -;; - - -let parse_string s = - let buf = Lexing.from_string s in - parse_document buf -;; - - -let parse_file fd = - let buf = Lexing.from_channel fd in - parse_document buf -;; - -(* ====================================================================== - * History: - * - * $Log$ - * Revision 1.1 2000/11/17 09:57:28 lpadovan - * Initial revision - * - * Revision 1.1 2000/03/03 01:07:25 gerd - * Initial revision. - * - * - *) diff --git a/helm/DEVEL/pxp/netstring/nethtml.mli b/helm/DEVEL/pxp/netstring/nethtml.mli deleted file mode 100644 index d7af381cc..000000000 --- a/helm/DEVEL/pxp/netstring/nethtml.mli +++ /dev/null @@ -1,72 +0,0 @@ -(* $Id$ - * ---------------------------------------------------------------------- - * - *) - - -(* The type 'document' represents parsed HTML documents. - * Element (name, args, subnodes): is an element node for an element of - * type 'name' (i.e. written ...) with arguments 'args' - * and subnodes 'subnodes' (the material within the element). The arguments - * are simply name/value pairs. Entity references (something like %xy;) - * occuring in the values are NOT resolved. - * Arguments without values (e.g. \n"; -print_string "\n"; -print_string "\n"; - -print_string "

    POST URL-encoded form

    \n"; -print_string "
    \n"; -print_string "\n"; -print_string "\n"; -print_string "
    \n"; - -print_string "

    POST FORM-encoded form

    \n"; -print_string "
    \n"; -print_string "\n"; -print_string "\n"; -print_string "\n"; -print_string "
    \n"; - -print_string "

    File upload

    \n"; -print_string "
    \n"; -print_string "\n"; -print_string "\n"; -print_string "\n"; -print_string "
    \n"; - - - -print_string "\n"; - -flush stdout -;; - - diff --git a/helm/DEVEL/pxp/netstring/tests/test_mimestring.ml b/helm/DEVEL/pxp/netstring/tests/test_mimestring.ml deleted file mode 100644 index db5eac930..000000000 --- a/helm/DEVEL/pxp/netstring/tests/test_mimestring.ml +++ /dev/null @@ -1,589 +0,0 @@ -#require "str";; -#directory "..";; -#load "netstring.cma";; - -open Mimestring;; - -(**********************************************************************) -(* scan_structured_value *) -(**********************************************************************) - -let t001() = - let r = scan_structured_value "user@domain.com" [ '@'; '.' ] [] in - r = [ Atom "user"; Special '@'; Atom "domain"; Special '.'; Atom "com" ] -;; - - -let t002() = - let r = scan_structured_value "user @ domain . com" [ '@'; '.' ] [] in - r = [ Atom "user"; Special '@'; Atom "domain"; Special '.'; Atom "com" ] -;; - - -let t003() = - let r = scan_structured_value "user(Do you know him?)@domain.com" [ '@'; '.' ] - [] in - r = [ Atom "user"; Special '@'; Atom "domain"; Special '.'; Atom "com" ] -;; - - -let t004() = - let r = scan_structured_value "user @ domain . com" [ '@'; '.'; ' ' ] [] in - r = [ Atom "user"; Special ' '; Special '@'; Special ' '; Atom "domain"; - Special ' '; Special '.'; Special ' '; Atom "com" ] -;; - - -let t005() = - let r = scan_structured_value "user(Do you know him?)@domain.com" - ['@'; '.'; '('] [] in - r = [ Atom "user"; Special '('; Atom "Do"; Atom "you"; Atom "know"; - Atom "him?)"; Special '@'; Atom "domain"; Special '.'; Atom "com" ] -;; - - -let t006() = - let r = scan_structured_value "\"My.name\"@domain.com" [ '@'; '.' ] [] in - r = [ QString "My.name"; Special '@'; Atom "domain"; Special '.'; - Atom "com" ] -;; - - -let t007() = - let r = scan_structured_value "\"\\\"()@. \"@domain.com" [ '@'; '.' ] [] in - r = [ QString "\"()@. "; Special '@'; Atom "domain"; Special '.'; - Atom "com" ] -;; - - -let t008() = - let r = scan_structured_value "a(b(c(d)e)f)g" [] [] in - r = [ Atom "a"; Atom "g" ] -;; - - -let t009() = - let r = scan_structured_value "a(b(c(d)e)f" [] [] in - r = [ Atom "a" ] -;; - - -let t010() = - let r = scan_structured_value "a(b\\(c\\(d\\)e)f" [] [] in - r = [ Atom "a"; Atom "f" ] -;; - - -let t011() = - let r = scan_structured_value "a(b(c(d)e)f\\" [] [] in - r = [ Atom "a" ] -;; - - -let t012() = - let r = scan_structured_value "\"abc" [] [] in - r = [ QString "abc" ] -;; - - -let t013() = - let r = scan_structured_value "\"abc\\" [] [] in - r = [ QString "abc\\" ] -;; - - -(* New tests for netstring-0.9: *) - -let t020() = - let r = scan_structured_value "user(Do you know him?)@domain.com" - [ '@'; '.' ] [ Return_comments ] in - r = [ Atom "user"; Comment; Special '@'; Atom "domain"; Special '.'; - Atom "com" ] -;; - -let t021() = - let r = scan_structured_value "user (Do you know him?) @ domain . com" - [ '@'; '.'; ' ' ] [] in - r = [ Atom "user"; Special ' '; Special ' '; Special ' '; Special '@'; - Special ' '; Atom "domain"; - Special ' '; Special '.'; Special ' '; Atom "com" ] -;; - -let t022() = - let r = scan_structured_value "user (Do you know him?) @ domain . com" - [ '@'; '.'; ' ' ] [ Return_comments ] in - r = [ Atom "user"; Special ' '; Comment; Special ' '; Special '@'; - Special ' '; Atom "domain"; - Special ' '; Special '.'; Special ' '; Atom "com" ] -;; - -let t023() = - let r = scan_structured_value "=?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?=" - [] [] in - r = [ Atom "=?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?=" ] -;; - -let t024() = - let r = scan_structured_value "=?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?=" - [ ] [ Recognize_encoded_words ] in - r = [ EncodedWord("ISO-8859-1", "Q", "Keld_J=F8rn_Simonsen") ] -;; - -let t025() = - let r = scan_structured_value - "=?ISO-8859-1?B?SWYgeW91IGNhbiByZWFkIHRoaXMgeW8=?= =?ISO-8859-2?B?dSB1bmRlcnN0YW5kIHRoZSBleGFtcGxlLg==?=" - [] - [ Recognize_encoded_words ] in - r = [ EncodedWord - ("ISO-8859-1", "B", "SWYgeW91IGNhbiByZWFkIHRoaXMgeW8="); - EncodedWord - ("ISO-8859-2", "B", "dSB1bmRlcnN0YW5kIHRoZSBleGFtcGxlLg==") - ] -;; - -(**********************************************************************) -(* s_extended_token *) -(**********************************************************************) - -let scan specials options str = - let scn = create_mime_scanner specials options str in - scan_token_list scn;; - -let t100() = - let r = scan [] [] "Two atoms" in - match r with - [ a1, Atom "Two"; a2, Atom "atoms" ] -> - - (get_pos a1 = 0) && - (get_line a1 = 1) && - (get_column a1 = 0) && - (get_length a1 = 3) && - (separates_adjacent_encoded_words a1 = false) && - - (get_pos a2 = 4) && - (get_line a2 = 1) && - (get_column a2 = 4) && - (get_length a2 = 5) && - (separates_adjacent_encoded_words a2 = false) - - | _ -> - false -;; - - -let t101() = - let r = scan [] [] " Two atoms " in - match r with - [ a1, Atom "Two"; a2, Atom "atoms" ] -> - - (get_pos a1 = 2) && - (get_line a1 = 1) && - (get_column a1 = 2) && - (get_length a1 = 3) && - (separates_adjacent_encoded_words a1 = false) && - - (get_pos a2 = 7) && - (get_line a2 = 1) && - (get_column a2 = 7) && - (get_length a2 = 5) && - (separates_adjacent_encoded_words a2 = false) - - | _ -> - false -;; - - -let t102() = - let r = scan [] [] " Two\n atoms " in - match r with - [ a1, Atom "Two"; a2, Atom "atoms" ] -> - - (get_pos a1 = 2) && - (get_line a1 = 1) && - (get_column a1 = 2) && - (get_length a1 = 3) && - (separates_adjacent_encoded_words a1 = false) && - - (get_pos a2 = 7) && - (get_line a2 = 2) && - (get_column a2 = 1) && - (get_length a2 = 5) && - (separates_adjacent_encoded_words a2 = false) - - | _ -> - false -;; - -let t110() = - let r = scan [] [] "\"Two\" \"qstrings\"" in - match r with - [ a1, QString "Two"; a2, QString "qstrings" ] -> - - (get_pos a1 = 0) && - (get_line a1 = 1) && - (get_column a1 = 0) && - (get_length a1 = 5) && - (separates_adjacent_encoded_words a1 = false) && - - (get_pos a2 = 6) && - (get_line a2 = 1) && - (get_column a2 = 6) && - (get_length a2 = 10) && - (separates_adjacent_encoded_words a2 = false) - - | _ -> - false -;; - -let t111() = - let r = scan [] [] " \"Two\" \"qstrings\" " in - match r with - [ a1, QString "Two"; a2, QString "qstrings" ] -> - - (get_pos a1 = 2) && - (get_line a1 = 1) && - (get_column a1 = 2) && - (get_length a1 = 5) && - (separates_adjacent_encoded_words a1 = false) && - - (get_pos a2 = 9) && - (get_line a2 = 1) && - (get_column a2 = 9) && - (get_length a2 = 10) && - (separates_adjacent_encoded_words a2 = false) - - | _ -> - false -;; - -let t112() = - let r = scan [] [] " \"Two\nlines\" \"and\nqstrings\" " in - match r with - [ a1, QString "Two\nlines"; a2, QString "and\nqstrings" ] -> - - (get_pos a1 = 2) && - (get_line a1 = 1) && - (get_column a1 = 2) && - (get_length a1 = 11) && - (separates_adjacent_encoded_words a1 = false) && - - (get_pos a2 = 15) && - (get_line a2 = 2) && - (get_column a2 = 8) && - (get_length a2 = 14) && - (separates_adjacent_encoded_words a2 = false) - - | _ -> - false -;; - -let t113() = - let r = scan [] [] " \"Two\\\nlines\" \"and\\\nqstrings\" " in - match r with - [ a1, QString "Two\nlines"; a2, QString "and\nqstrings" ] -> - - (get_pos a1 = 2) && - (get_line a1 = 1) && - (get_column a1 = 2) && - (get_length a1 = 12) && - (separates_adjacent_encoded_words a1 = false) && - - (get_pos a2 = 16) && - (get_line a2 = 2) && - (get_column a2 = 8) && - (get_length a2 = 15) && - (separates_adjacent_encoded_words a2 = false) - - | _ -> - false -;; - -let t120() = - (* Domain literals are implemented like quoted strings, so only the - * most complicated test case. - *) - let r = scan [] [] " [Two\\\nlines] [and\\\nliterals] " in - match r with - [ a1, DomainLiteral "Two\nlines"; a2, DomainLiteral "and\nliterals" ] -> - - (get_pos a1 = 2) && - (get_line a1 = 1) && - (get_column a1 = 2) && - (get_length a1 = 12) && - (separates_adjacent_encoded_words a1 = false) && - - (get_pos a2 = 16) && - (get_line a2 = 2) && - (get_column a2 = 8) && - (get_length a2 = 15) && - (separates_adjacent_encoded_words a2 = false) - - | _ -> - false -;; - -let t130() = - let r = scan [] [ Return_comments ] "(Two) (comments)" in - match r with - [ a1, Comment; a2, Comment ] -> - - (get_pos a1 = 0) && - (get_line a1 = 1) && - (get_column a1 = 0) && - (get_length a1 = 5) && - (separates_adjacent_encoded_words a1 = false) && - - (get_pos a2 = 6) && - (get_line a2 = 1) && - (get_column a2 = 6) && - (get_length a2 = 10) && - (separates_adjacent_encoded_words a2 = false) - - | _ -> - false -;; - -let t131() = - let r = scan [] [ Return_comments ] "(Two\nlines) (and\ncomments)" in - match r with - [ a1, Comment; a2, Comment ] -> - - (get_pos a1 = 0) && - (get_line a1 = 1) && - (get_column a1 = 0) && - (get_length a1 = 11) && - (separates_adjacent_encoded_words a1 = false) && - - (get_pos a2 = 12) && - (get_line a2 = 2) && - (get_column a2 = 7) && - (get_length a2 = 14) && - (separates_adjacent_encoded_words a2 = false) - - | _ -> - false -;; - -let t132() = - let r = scan [] [ Return_comments ] "(Two\\\nlines) (and\\\ncomments)" in - match r with - [ a1, Comment; a2, Comment ] -> - - (get_pos a1 = 0) && - (get_line a1 = 1) && - (get_column a1 = 0) && - (get_length a1 = 12) && - (separates_adjacent_encoded_words a1 = false) && - - (get_pos a2 = 13) && - (get_line a2 = 2) && - (get_column a2 = 7) && - (get_length a2 = 15) && - (separates_adjacent_encoded_words a2 = false) - - | _ -> - false -;; - -let t133() = - let r = scan [] [ Return_comments ] "(a\n(b\nc)d\ne(f)) atom" in - match r with - [ a1, Comment; a2, Atom "atom" ] -> - - (get_pos a1 = 0) && - (get_line a1 = 1) && - (get_column a1 = 0) && - (get_length a1 = 15) && - (separates_adjacent_encoded_words a1 = false) && - - (get_pos a2 = 16) && - (get_line a2 = 4) && - (get_column a2 = 6) && - (get_length a2 = 4) && - (separates_adjacent_encoded_words a2 = false) - - | _ -> - false -;; - -let t140() = - let r = scan [] [] "\031\031" in - match r with - [ a1, Control '\031'; a2, Control '\031' ] -> - - (get_pos a1 = 0) && - (get_line a1 = 1) && - (get_column a1 = 0) && - (get_length a1 = 1) && - (separates_adjacent_encoded_words a1 = false) && - - (get_pos a2 = 1) && - (get_line a2 = 1) && - (get_column a2 = 1) && - (get_length a2 = 1) && - (separates_adjacent_encoded_words a2 = false) - - | _ -> - false -;; - -let t150() = - let r = scan [ '\t'; '\n' ] [] " \t\n \n \t" in - match r with - [ a1, Special '\t'; _, Special '\n'; _, Special '\n'; a2, Special '\t'] -> - - (get_pos a1 = 1) && - (get_line a1 = 1) && - (get_column a1 = 1) && - (get_length a1 = 1) && - (separates_adjacent_encoded_words a1 = false) && - - (get_pos a2 = 8) && - (get_line a2 = 3) && - (get_column a2 = 2) && - (get_length a2 = 1) && - (separates_adjacent_encoded_words a2 = false) - - | _ -> - false -;; - -let t160() = - let r = scan [] [ Recognize_encoded_words ] - "=?iso8859-1?q?G=F6rd?= =?iso8859-1?q?G=F6rd?=" in - match r with - [ a1, EncodedWord("ISO8859-1", "Q", "G=F6rd"); - a2, EncodedWord("ISO8859-1", "Q", "G=F6rd"); ] -> - - (get_pos a1 = 0) && - (get_line a1 = 1) && - (get_column a1 = 0) && - (get_length a1 = 22) && - (separates_adjacent_encoded_words a1 = false) && - (get_decoded_word a1 = "Görd") && - (get_charset a1 = "ISO8859-1") && - - (get_pos a2 = 23) && - (get_line a2 = 1) && - (get_column a2 = 23) && - (get_length a2 = 22) && - (separates_adjacent_encoded_words a2 = false) && - (get_decoded_word a2 = "Görd") && - (get_charset a2 = "ISO8859-1") - - | _ -> - false -;; - -let t161() = - let r = scan [ ' ' ] [ Recognize_encoded_words ] - "=?iso8859-1?q?G=F6rd?= =?iso8859-1?q?G=F6rd?=" in - match r with - [ a1, EncodedWord("ISO8859-1", "Q", "G=F6rd"); - sp, Special ' '; - a2, EncodedWord("ISO8859-1", "Q", "G=F6rd"); ] -> - - (get_pos a1 = 0) && - (get_line a1 = 1) && - (get_column a1 = 0) && - (get_length a1 = 22) && - (separates_adjacent_encoded_words a1 = false) && - (get_decoded_word a1 = "Görd") && - (get_charset a1 = "ISO8859-1") && - - (get_pos a2 = 23) && - (get_line a2 = 1) && - (get_column a2 = 23) && - (get_length a2 = 22) && - (separates_adjacent_encoded_words a2 = false) && - (get_decoded_word a2 = "Görd") && - (get_charset a2 = "ISO8859-1") && - - (separates_adjacent_encoded_words sp = true) - - | _ -> - false -;; - -let t162() = - let r = scan [ ' ' ] [ Recognize_encoded_words ] - "=?iso8859-1?q?G=F6rd?= =?iso8859-1?q?G=F6rd?=" in - match r with - [ a1, EncodedWord("ISO8859-1", "Q", "G=F6rd"); - sp1, Special ' '; - sp2, Special ' '; - a2, EncodedWord("ISO8859-1", "Q", "G=F6rd"); ] -> - - (get_pos a1 = 0) && - (get_line a1 = 1) && - (get_column a1 = 0) && - (get_length a1 = 22) && - (separates_adjacent_encoded_words a1 = false) && - (get_decoded_word a1 = "Görd") && - (get_charset a1 = "ISO8859-1") && - - (get_pos a2 = 24) && - (get_line a2 = 1) && - (get_column a2 = 24) && - (get_length a2 = 22) && - (separates_adjacent_encoded_words a2 = false) && - (get_decoded_word a2 = "Görd") && - (get_charset a2 = "ISO8859-1") && - - (separates_adjacent_encoded_words sp1 = true) && - (separates_adjacent_encoded_words sp2 = true) - - | _ -> - false -;; - - - -(**********************************************************************) - -let test f n = - if f() then - print_endline ("Test " ^ n ^ " ok") - else - print_endline ("Test " ^ n ^ " FAILED!!!!"); - flush stdout -;; - -test t001 "001";; -test t002 "002";; -test t003 "003";; -test t004 "004";; -test t005 "005";; -test t006 "006";; -test t007 "007";; -test t008 "008";; -test t009 "009";; -test t010 "010";; -test t011 "011";; -test t012 "012";; -test t013 "013";; - -test t020 "020";; -test t021 "021";; -test t022 "022";; -test t023 "023";; -test t024 "024";; -test t025 "025";; - -test t100 "100";; -test t101 "101";; -test t102 "102";; -test t110 "110";; -test t111 "111";; -test t112 "112";; -test t113 "113";; -test t120 "120";; -test t130 "130";; -test t131 "131";; -test t132 "132";; -test t133 "133";; -test t140 "140";; -test t150 "150";; -test t160 "160";; -test t161 "161";; -test t162 "162";; diff --git a/helm/DEVEL/pxp/netstring/tests/test_netencoding.ml b/helm/DEVEL/pxp/netstring/tests/test_netencoding.ml deleted file mode 100644 index 29673fa5f..000000000 --- a/helm/DEVEL/pxp/netstring/tests/test_netencoding.ml +++ /dev/null @@ -1,223 +0,0 @@ -#require "str";; -#directory "..";; -#load "netstring.cma";; - - -open Netencoding;; - -(**********************************************************************) -(* Base64 *) -(**********************************************************************) - -(* Test strings: - * "", "a", "ab", "abc", "abcd", "abcde", - * "abcdefghijklmnopqrstuvwxyz". - *) - -let t001() = - (* ENCODE. No line breaks. *) - Base64.encode "" = "" & - Base64.encode "a" = "YQ==" & - Base64.encode "ab" = "YWI=" & - Base64.encode "abc" = "YWJj" & - Base64.encode "abcd" = "YWJjZA==" & - Base64.encode "abcde" = "YWJjZGU=" & - Base64.encode "abcdefghijklmnopqrstuvwxyz" = - "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXo=" -;; - - -let t002() = - (* ENCODE. Lines with length of 4, separated by LF *) - let abc = "abcdefghijklmnopqrstuvwxyz" in - Base64.encode_substring abc 0 0 4 false = "" & - Base64.encode_substring abc 0 1 4 false = "YQ==\n" & - Base64.encode_substring abc 0 2 4 false = "YWI=\n" & - Base64.encode_substring abc 0 3 4 false = "YWJj\n" & - Base64.encode_substring abc 0 4 4 false = "YWJj\nZA==\n" & - Base64.encode_substring abc 0 5 4 false = "YWJj\nZGU=\n" & - Base64.encode_substring abc 0 26 4 false = - "YWJj\nZGVm\nZ2hp\namts\nbW5v\ncHFy\nc3R1\ndnd4\neXo=\n" -;; - - -let t003() = - (* ENCODE. Lines with length of 5, separated by LF *) - let abc = "abcdefghijklmnopqrstuvwxyz" in - Base64.encode_substring abc 0 0 5 false = "" & - Base64.encode_substring abc 0 1 5 false = "YQ==\n" & - Base64.encode_substring abc 0 2 5 false = "YWI=\n" & - Base64.encode_substring abc 0 3 5 false = "YWJj\n" & - Base64.encode_substring abc 0 4 5 false = "YWJj\nZA==\n" & - Base64.encode_substring abc 0 5 5 false = "YWJj\nZGU=\n" & - Base64.encode_substring abc 0 26 5 false = - "YWJj\nZGVm\nZ2hp\namts\nbW5v\ncHFy\nc3R1\ndnd4\neXo=\n" -;; - - -let t004() = - (* ENCODE. Lines with length of 7, separated by LF *) - let abc = "abcdefghijklmnopqrstuvwxyz" in - Base64.encode_substring abc 0 0 7 false = "" & - Base64.encode_substring abc 0 1 7 false = "YQ==\n" & - Base64.encode_substring abc 0 2 7 false = "YWI=\n" & - Base64.encode_substring abc 0 3 7 false = "YWJj\n" & - Base64.encode_substring abc 0 4 7 false = "YWJj\nZA==\n" & - Base64.encode_substring abc 0 5 7 false = "YWJj\nZGU=\n" & - Base64.encode_substring abc 0 26 7 false = - "YWJj\nZGVm\nZ2hp\namts\nbW5v\ncHFy\nc3R1\ndnd4\neXo=\n" -;; - - -let t005() = - (* ENCODE. Lines with length of 8, separated by LF *) - let abc = "abcdefghijklmnopqrstuvwxyz" in - Base64.encode_substring abc 0 0 8 false = "" & - Base64.encode_substring abc 0 1 8 false = "YQ==\n" & - Base64.encode_substring abc 0 2 8 false = "YWI=\n" & - Base64.encode_substring abc 0 3 8 false = "YWJj\n" & - Base64.encode_substring abc 0 4 8 false = "YWJjZA==\n" & - Base64.encode_substring abc 0 5 8 false = "YWJjZGU=\n" & - Base64.encode_substring abc 0 26 8 false = - "YWJjZGVm\nZ2hpamts\nbW5vcHFy\nc3R1dnd4\neXo=\n" -;; - - -let t006() = - (* ENCODE. Lines with length of 8, separated by CRLF *) - let abc = "abcdefghijklmnopqrstuvwxyz" in - Base64.encode_substring abc 0 0 8 true = "" & - Base64.encode_substring abc 0 1 8 true = "YQ==\r\n" & - Base64.encode_substring abc 0 2 8 true = "YWI=\r\n" & - Base64.encode_substring abc 0 3 8 true = "YWJj\r\n" & - Base64.encode_substring abc 0 4 8 true = "YWJjZA==\r\n" & - Base64.encode_substring abc 0 5 8 true = "YWJjZGU=\r\n" & - Base64.encode_substring abc 0 26 8 true = - "YWJjZGVm\r\nZ2hpamts\r\nbW5vcHFy\r\nc3R1dnd4\r\neXo=\r\n" -;; - - -let t020() = - (* DECODE. First test without spaces *) - Base64.decode_substring "" 0 0 false false = "" & - Base64.decode_substring "YQ==" 0 4 false false = "a" & - Base64.decode_substring "YWI=" 0 4 false false = "ab" & - Base64.decode_substring "YWJj" 0 4 false false = "abc" & - Base64.decode_substring "YWJjZA==" 0 8 false false = "abcd" & - Base64.decode_substring "YWJjZGU=" 0 8 false false = "abcde" & - Base64.decode_substring - "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXo=" 0 36 false false = - "abcdefghijklmnopqrstuvwxyz" -;; - - -let t021() = - (* DECODE. With spaces *) - Base64.decode_substring " \r\n\t" 0 4 false true = "" & - Base64.decode_substring " Y W J j\n Z G U = " 0 18 false true = "abcde" -;; - - -let t022() = - (* DECODE. With URL characters and spaces *) - Base64.decode_substring " Y W J j\n Z G U = " 0 18 true true = "abcde" & - Base64.decode_substring " Y W J j\n Z G U . " 0 18 true true = "abcde" -;; - -(**********************************************************************) -(* Quoted Printable *) -(**********************************************************************) - -let t100() = - (* ENCODE. *) - QuotedPrintable.encode "a %= 12345 &$[]\"" = "a %=3D 12345 &=24=5B=5D=22" & - QuotedPrintable.encode "\000\001\002" = "=00=01=02" & - QuotedPrintable.encode "abc\r\ndef\nghi" = "abc\r\ndef\nghi" & - QuotedPrintable.encode " abc\r\n def\n ghi" = " abc\r\n def\n ghi" & - QuotedPrintable.encode "abc \r\n def\nghi " = "abc=20\r\n def\nghi=20" -;; - - -let t120() = - (* DECODE. *) - QuotedPrintable.decode "a %=3D 12345 &=24=5B=5D=22" = "a %= 12345 &$[]\"" & - QuotedPrintable.decode "=00=01=02" = "\000\001\002" & - QuotedPrintable.decode "abc\r\ndef\nghi" = "abc\r\ndef\nghi" & - QuotedPrintable.decode " abc\r\n def\n ghi" = " abc\r\n def\n ghi" & - QuotedPrintable.decode "abc=20\r\n def\nghi=20" = "abc \r\n def\nghi " & - QuotedPrintable.decode "abc=\r\n def\nghi=20" = "abc def\nghi " -;; - -(**********************************************************************) -(* Q *) -(**********************************************************************) - -let t200() = - (* ENCODE. *) - Q.encode "a %= 12345 &$[]\"" = "a=20=25=3D=2012345=20=26=24=5B=5D=22" & - Q.encode "\000\001\002\r\n" = "=00=01=02=0D=0A" -;; - - -let t220() = - (* DECODE. *) - Q.decode "a=20=25=3D=2012345=20=26=24=5B=5D=22" = "a %= 12345 &$[]\"" & - Q.decode "=00=01=02=0D=0A" = "\000\001\002\r\n" & - Q.decode "a=20=25=3d=2012345=20=26=24=5b=5d=22" = "a %= 12345 &$[]\"" -;; - -(**********************************************************************) -(* Url *) -(**********************************************************************) - -(* Already tested for Cgi *) - -(**********************************************************************) -(* Html *) -(**********************************************************************) - -let t300() = - Html.encode_from_latin1 "<>&\"abcdefäöÜ\160\025'" = - "<>&"abcdefäöÜ '" -;; - - -let t320() = - Html.decode_to_latin1 - "<>&"abcdefäöÜ " = - "<>&\"abcdefäöÜ\160\025" & - Html.decode_to_latin1 "'" = "'" & - Html.decode_to_latin1 "&nonsense;" = "&nonsense;" & - Html.decode_to_latin1 "Ā" = "Ā" -;; - - -(**********************************************************************) - -let test f n = - if f() then - print_endline ("Test " ^ n ^ " ok") - else - print_endline ("Test " ^ n ^ " FAILED!!!!"); - flush stdout -;; - -test t001 "001"; -test t002 "002"; -test t003 "003"; -test t004 "004"; -test t005 "005"; -test t006 "006"; - -test t020 "020"; -test t021 "021"; -test t022 "022"; - -test t100 "100"; -test t120 "120"; - -test t200 "200"; -test t220 "220"; - -test t300 "300"; -test t320 "320"; diff --git a/helm/DEVEL/pxp/netstring/tests/test_neturl.ml b/helm/DEVEL/pxp/netstring/tests/test_neturl.ml deleted file mode 100644 index 633bfda09..000000000 --- a/helm/DEVEL/pxp/netstring/tests/test_neturl.ml +++ /dev/null @@ -1,969 +0,0 @@ -#directory "..";; -#load "netstring.cma";; - -open Neturl;; - - -let expect_malformed_url f = - try ignore(f()); false with Malformed_URL -> true;; - -let works f = - not (expect_malformed_url f) -;; - -(**********************************************************************) -(* extract_url_scheme *) -(**********************************************************************) - -let t001 () = - extract_url_scheme "a:bc" = "a" && - extract_url_scheme "A:bc" = "a" && - extract_url_scheme "a:b:c" = "a" && - extract_url_scheme "a+b-c:d:e" = "a+b-c" -;; - - -let t002 () = - let test s = - try ignore(extract_url_scheme s); false with Malformed_URL -> true - in - test "a" && - test "a/b:c" && - test "%61:b" && - test "a%3ab" -;; - -(**********************************************************************) -(* url_syntax *) -(**********************************************************************) - -let hashtbl_for_all f h = - let b = ref true in - Hashtbl.iter - (fun k v -> b := !b && f k v) - h; - !b -;; - -let t010 () = - url_syntax_is_valid null_url_syntax && - url_syntax_is_valid ip_url_syntax && - hashtbl_for_all - (fun _ syn -> - url_syntax_is_valid syn - ) - common_url_syntax -;; - -let t011 () = - url_syntax_is_valid (partial_url_syntax null_url_syntax) && - url_syntax_is_valid (partial_url_syntax ip_url_syntax) && - hashtbl_for_all - (fun _ syn -> - url_syntax_is_valid (partial_url_syntax syn) - ) - common_url_syntax -;; - -let t012 () = - let f = fun _ -> true in - let syn = - { url_enable_scheme = Url_part_not_recognized; - url_enable_user = Url_part_required; - url_enable_password = Url_part_allowed; - url_enable_host = Url_part_required; - url_enable_port = Url_part_not_recognized; - url_enable_path = Url_part_required; - url_enable_param = Url_part_not_recognized; - url_enable_query = Url_part_not_recognized; - url_enable_fragment = Url_part_required; - url_enable_other = Url_part_not_recognized; - url_accepts_8bits = false; - url_is_valid = f; - } in - let syn' = partial_url_syntax syn in - - (syn'.url_enable_scheme = Url_part_not_recognized) && - (syn'.url_enable_user = Url_part_allowed) && - (syn'.url_enable_password = Url_part_allowed) && - (syn'.url_enable_host = Url_part_allowed) && - (syn'.url_enable_port = Url_part_not_recognized) && - (syn'.url_enable_path = Url_part_allowed) && - (syn'.url_enable_param = Url_part_not_recognized) && - (syn'.url_enable_query = Url_part_not_recognized) && - (syn'.url_enable_fragment = Url_part_allowed) && - (syn'.url_enable_other = Url_part_not_recognized) && - (syn'.url_is_valid == f) && - - url_syntax_is_valid syn && - url_syntax_is_valid syn' -;; - -(**********************************************************************) -(* make_url *) -(**********************************************************************) - -let t020 () = - (* Basic functionality: *) - let http_syn = Hashtbl.find common_url_syntax "http" in - - let u1 = make_url - (* default: not encoded *) - ~scheme:"http" - ~user:"U" - ~password:"%()~$@" - ~host:"a.b.c" - ~port:81 - ~path:["";"?";""] - http_syn in - - url_provides - ~scheme:true ~user:true ~password:true ~host:true ~port:true ~path:true - u1 && - - not - (url_provides - ~scheme:true ~user:true ~password:true ~host:true ~port:true ~path:true - ~query:true u1) && - - (url_syntax_of_url u1 == http_syn) && - - (url_scheme u1 = "http") && - (url_user u1 = "U") && - (url_password u1 = "%()~$@") && - (url_host u1 = "a.b.c") && - (url_port u1 = 81) && - (url_path u1 = ["";"?";""]) && - - (url_user ~encoded:true u1 = "U") && - (url_password ~encoded:true u1 = "%25()%7E$%40") && - (url_path ~encoded:true u1 = ["";"%3F";""]) && - - string_of_url u1 = "http://U:%25()%7E$%40@a.b.c:81/%3F/" -;; - - -let t021 () = - (* Basic functionality: *) - let http_syn = Hashtbl.find common_url_syntax "http" in - - let u1 = make_url - ~encoded:true - ~scheme:"http" - ~user:"%55" - ~password:"%25()%7e$%40" - ~host:"a.b.c" - ~port:81 - ~path:["";"%3F";""] - http_syn in - - url_provides - ~scheme:true ~user:true ~password:true ~host:true ~port:true ~path:true - u1 && - - not - (url_provides - ~scheme:true ~user:true ~password:true ~host:true ~port:true ~path:true - ~query:true u1) && - - (url_syntax_of_url u1 == http_syn) && - - (url_scheme u1 = "http") && - (url_user u1 = "U") && - (url_password u1 = "%()~$@") && - (url_host u1 = "a.b.c") && - (url_port u1 = 81) && - (url_path u1 = ["";"?";""]) && - - (url_user ~encoded:true u1 = "%55") && - (url_password ~encoded:true u1 = "%25()%7e$%40") && - (url_path ~encoded:true u1 = ["";"%3F";""]) && - - string_of_url u1 = "http://%55:%25()%7e$%40@a.b.c:81/%3F/" -;; - - -(* NEGATIVE TESTS *) - -let t030 () = - (* It is not possible to add a component which is not recognized *) - let http_syn = Hashtbl.find common_url_syntax "http" in - - expect_malformed_url - (fun () -> - make_url - ~scheme:"http" - ~user:"U" - ~password:"%()~$@" - ~host:"a.b.c" - ~port:81 - ~path:["";"?";""] - ~fragment:"abc" - http_syn) -;; - - -let t031 () = - (* It is not possible to put malformed '%'-encodings into the URL *) - let http_syn = Hashtbl.find common_url_syntax "http" in - - works (* reference *) - (fun () -> - make_url - ~encoded:true - ~scheme:"http" - ~user:"U" - ~password:"XX" - ~host:"a.b.c" - ~port:81 - ~path:["";"a";""] - http_syn) && - - expect_malformed_url - (fun () -> - make_url - ~encoded:true - ~scheme:"http" - ~user:"U" - ~password:"%XX" - ~host:"a.b.c" - ~port:81 - ~path:["";"a";""] - http_syn) && - - expect_malformed_url - (fun () -> - make_url - ~encoded:true - ~scheme:"http" - ~user:"U" - ~password:"%X" - ~host:"a.b.c" - ~port:81 - ~path:["";"a";""] - http_syn) && - - expect_malformed_url - (fun () -> - make_url - ~encoded:true - ~scheme:"http" - ~user:"U" - ~password:"%" - ~host:"a.b.c" - ~port:81 - ~path:["";"a";""] - http_syn) -;; - -let t032 () = - (* It is not possible to put unsafe characters into the URL *) - let http_syn = Hashtbl.find common_url_syntax "http" in - - let make c = - make_url - ~encoded:true - ~scheme:"http" - ~user:"U" - ~password:(String.make 1 c) - ~host:"a.b.c" - ~port:81 - ~path:["";"a";""] - http_syn - in - - works (fun () -> make 'a') && (* reference *) - - (* List of unsafe characters taken from RFC1738: *) - expect_malformed_url (fun () -> make '<') && - expect_malformed_url (fun () -> make '>') && - expect_malformed_url (fun () -> make '"') && - expect_malformed_url (fun () -> make '#') && - (* Note: '#' would be considered as reserved if fragments were enabled *) - expect_malformed_url (fun () -> make '%') && - expect_malformed_url (fun () -> make '{') && - expect_malformed_url (fun () -> make '}') && - expect_malformed_url (fun () -> make '|') && - expect_malformed_url (fun () -> make '\\') && - expect_malformed_url (fun () -> make '^') && - expect_malformed_url (fun () -> make '[') && - expect_malformed_url (fun () -> make ']') && - expect_malformed_url (fun () -> make '`') && - expect_malformed_url (fun () -> make '~') && - (* Note: '~' is considered as safe in paths: *) - works - (fun () -> - make_url - ~encoded:true - ~scheme:"http" - ~user:"U" - ~password:"a" - ~host:"a.b.c" - ~port:81 - ~path:["";"~";""] - http_syn) -;; - -let t033 () = - (* It is not possible to put reserved characters into the URL *) - let http_syn = Hashtbl.find common_url_syntax "http" in - - let make_password c = - make_url - ~encoded:true - ~scheme:"http" - ~user:"U" - ~password:(String.make 1 c) - ~host:"a.b.c" - ~port:81 - ~path:["";"a";""] - http_syn - in - let make_path c = - make_url - ~encoded:true - ~scheme:"http" - ~user:"U" - ~password:"a" - ~host:"a.b.c" - ~port:81 - ~path:["";String.make 1 c;""] - http_syn - in - let make_query c = - make_url - ~encoded:true - ~scheme:"http" - ~user:"U" - ~password:"a" - ~host:"a.b.c" - ~port:81 - ~path:["";"a";""] - ~query:(String.make 1 c) - http_syn - in - - (* Note: There is a difference between RFC 1738 and RFC 1808 regarding - * which characters are reserved. RFC 1808 defines a fixed set of characters - * as reserved while RFC 1738 defines the reserved characters depending - * on the scheme. - * This implementation of URLs follows RFC 1738 (because of practical - * reasons). - *) - - works (fun () -> make_password 'a') && (* reference *) - works (fun () -> make_path 'a') && - works (fun () -> make_query 'a') && - - expect_malformed_url (fun () -> make_password ':') && - expect_malformed_url (fun () -> make_password '@') && - expect_malformed_url (fun () -> make_password '/') && - works (fun () -> make_password ';') && - works (fun () -> make_password '?') && - works (fun () -> make_password '=') && - works (fun () -> make_password '&') && - - (* Note: ';' is allowed in path and query because parameters are not - * recognized in HTTP syntax. - *) - - expect_malformed_url (fun () -> make_path '/') && - expect_malformed_url (fun () -> make_path '?') && - works (fun () -> make_path ':') && - works (fun () -> make_path '@') && - works (fun () -> make_path ';') && - works (fun () -> make_path '=') && - works (fun () -> make_path '&') && - - expect_malformed_url (fun () -> make_query '?') && - works (fun () -> make_query '/') && - works (fun () -> make_query ':') && - works (fun () -> make_query '@') && - works (fun () -> make_query ';') && - works (fun () -> make_query '=') && - works (fun () -> make_query '&') -;; - - -let t034 () = - (* It is not possible to create a URL with a password, but without user; - * and neither to create a URL with a port, but without host; - * and neither to create a URL with a user, but without host - *) - - expect_malformed_url - (fun () -> - make_url - ~scheme:"http" - ~password:"a" - ~host:"a.b.c" - ~path:["";"a";""] - ip_url_syntax) && - - expect_malformed_url - (fun () -> - make_url - ~scheme:"http" - ~user:"U" - ~path:["";"a";""] - ip_url_syntax) && - - expect_malformed_url - (fun () -> - make_url - ~scheme:"http" - ~port:81 - ~path:["";"a";""] - ip_url_syntax) -;; - - -let t035 () = - (* It is not possible to create a URL with illegal scheme prefix *) - - (* reference: *) - works - (fun () -> - make_url - ~scheme:"a" - ip_url_syntax) && - - expect_malformed_url - (fun () -> - make_url - ~scheme:":" - ip_url_syntax) && - - expect_malformed_url - (fun () -> - make_url - ~scheme:"a=b" - ip_url_syntax) && - - expect_malformed_url - (fun () -> - make_url - ~scheme:"a%62b" - ip_url_syntax) && - - expect_malformed_url - (fun () -> - make_url - ~scheme:"a&b" - ip_url_syntax) -;; - - -let t036 () = - (* It is not possible to have a path with double slashes *) - - (* reference: *) - works - (fun () -> - make_url - ~path:["";"a";""] - ip_url_syntax) && - - expect_malformed_url - (fun () -> - make_url - ~path:["";""] - ip_url_syntax) && - - expect_malformed_url - (fun () -> - make_url - ~path:["a";"";""] - ip_url_syntax) && - - expect_malformed_url - (fun () -> - make_url - ~path:["";"";"a"] - ip_url_syntax) && - - expect_malformed_url - (fun () -> - make_url - ~path:["a";"";"a"] - ip_url_syntax) -;; - - -let t037 () = - (* It is not possible to have port numbers outside 0..65535 *) - - (* reference: *) - works - (fun () -> - make_url - ~host:"a" - ~port:1 - ip_url_syntax) && - - expect_malformed_url - (fun () -> - make_url - ~host:"a" - ~port:(-1) - ip_url_syntax) && - - expect_malformed_url - (fun () -> - make_url - ~host:"a" - ~port:65536 - ip_url_syntax) -;; - - -let t038 () = - (* Several cases which are not allowed. *) - - expect_malformed_url - (fun () -> - make_url - ~host:"a" - ~path:["a"] - ip_url_syntax - ) && (* illegal: host + relative path *) - - expect_malformed_url - (fun () -> - make_url - ~host:"a" - ~path:[] - ~param:["x"] - ip_url_syntax - ) && (* illegal: host + no path + params *) - - expect_malformed_url - (fun () -> - make_url - ~host:"a" - ~path:[] - ~query:"x" - ip_url_syntax - ) (* illegal: host + no path + query *) -;; - -(**********************************************************************) -(* url_of_string *) -(**********************************************************************) - -let t050 () = - (* absolute URLs with ip_url_syntax *) - let identical s = - string_of_url (url_of_string ip_url_syntax s) = s in - - let fails s = - try ignore(url_of_string ip_url_syntax s); false - with Malformed_URL -> true - in - - identical "http:" && - - identical "http://host" && - identical "http://user@host" && - identical "http://user:password@host" && - identical "http://user@host:99" && - identical "http://user:password@host:99" && - - identical "http://host/" && - identical "http://user@host/" && - identical "http://user:password@host/" && - identical "http://user@host:99/" && - identical "http://user:password@host:99/" && - - identical "http://host/a/b" && - identical "http://user@host/a/b" && - identical "http://user:password@host/a/b" && - identical "http://user@host:99/a/b" && - identical "http://user:password@host:99/a/b" && - - identical "http://host/a/b/" && - identical "http://user@host/a/b/" && - identical "http://user:password@host/a/b/" && - identical "http://user@host:99/a/b/" && - identical "http://user:password@host:99/a/b/" && - - identical "http://host/?a=b&c=d" && - identical "http://user@host/?a=b&c=d" && - identical "http://user:password@host/?a=b&c=d" && - identical "http://user@host:99/?a=b&c=d" && - identical "http://user:password@host:99/?a=b&c=d" && - - fails "http://host?a=b&c=d" && - fails "http://user@host?a=b&c=d" && - fails "http://user:password@host?a=b&c=d" && - fails "http://user@host:99?a=b&c=d" && - fails "http://user:password@host:99?a=b&c=d" && - - identical "http://host/?a=/&c=/" && - identical "http://user@host/?a=/&c=/" && - identical "http://user:password@host/?a=/&c=/" && - identical "http://user@host:99/?a=/&c=/" && - identical "http://user:password@host:99/?a=/&c=/" && - - identical "http://host/;a;b" && - identical "http://user@host/;a;b" && - identical "http://user:password@host/;a;b" && - identical "http://user@host:99/;a;b" && - identical "http://user:password@host:99/;a;b" && - - fails "http://host;a;b" && - fails "http://user@host;a;b" && - fails "http://user:password@host;a;b" && - fails "http://user@host:99;a;b" && - fails "http://user:password@host:99;a;b" && - - identical "http://host/;a;b?a=b&c=d" && - identical "http://user@host/;a;b?a=b&c=d" && - identical "http://user:password@host/;a;b?a=b&c=d" && - identical "http://user@host:99/;a;b?a=b&c=d" && - identical "http://user:password@host:99/;a;b?a=b&c=d" && - - identical "http:#f" && - - identical "http://host#f" && - identical "http://user@host#f" && - identical "http://user:password@host#f" && - identical "http://user@host:99#f" && - identical "http://user:password@host:99#f" && - - identical "http://host/;a;b?a=b&c=d#f" && - identical "http://user@host/;a;b?a=b&c=d#f" && - identical "http://user:password@host/;a;b?a=b&c=d#f" && - identical "http://user@host:99/;a;b?a=b&c=d#f" && - identical "http://user:password@host:99/;a;b?a=b&c=d#f" && - - true -;; - - -let t051 () = - (* relative URLs with ip_url_syntax *) - let identical s = - string_of_url (url_of_string ip_url_syntax s) = s in - - let fails s = - try ignore(url_of_string ip_url_syntax s); false - with Malformed_URL -> true - in - - identical "//host" && - identical "//user@host" && - identical "//user:password@host" && - identical "//user@host:99" && - identical "//user:password@host:99" && - - identical "//host/" && - identical "//user@host/" && - identical "//user:password@host/" && - identical "//user@host:99/" && - identical "//user:password@host:99/" && - - identical "//host#f" && - identical "//user@host#f" && - identical "//user:password@host#f" && - identical "//user@host:99#f" && - identical "//user:password@host:99#f" && - - identical "/" && - identical "/a" && - identical "/a/" && - identical "/a/a" && - - identical "/;a;b" && - identical "/a;a;b" && - identical "/a/;a;b" && - identical "/a/a;a;b" && - - identical "/?a=b&c=d" && - identical "/a?a=b&c=d" && - identical "/a/?a=b&c=d" && - identical "/a/a?a=b&c=d" && - - identical "/;a;b?a=b&c=d" && - identical "/a;a;b?a=b&c=d" && - identical "/a/;a;b?a=b&c=d" && - identical "/a/a;a;b?a=b&c=d" && - - identical "/#f" && - identical "/a#f" && - identical "/a/#f" && - identical "/a/a#f" && - - identical "/;a;b#f" && - identical "/a;a;b#f" && - identical "/a/;a;b#f" && - identical "/a/a;a;b#f" && - - identical "/;a;b?a=b&c=d#f" && - identical "/a;a;b?a=b&c=d#f" && - identical "/a/;a;b?a=b&c=d#f" && - identical "/a/a;a;b?a=b&c=d#f" && - - identical "" && - identical "a" && - identical "a/" && - identical "a/a" && - - identical ";a;b" && - identical "a;a;b" && - identical "a/;a;b" && - identical "a/a;a;b" && - - identical "?a=b&c=d" && - identical "a?a=b&c=d" && - identical "a/?a=b&c=d" && - identical "a/a?a=b&c=d" && - - identical ";a;b?a=b&c=d" && - identical "a;a;b?a=b&c=d" && - identical "a/;a;b?a=b&c=d" && - identical "a/a;a;b?a=b&c=d" && - - identical "#f" && - identical "a#f" && - identical "a/#f" && - identical "a/a#f" && - - identical ";a;b#f" && - identical "a;a;b#f" && - identical "a/;a;b#f" && - identical "a/a;a;b#f" && - - identical ";a;b?a=b&c=d#f" && - identical "a;a;b?a=b&c=d#f" && - identical "a/;a;b?a=b&c=d#f" && - identical "a/a;a;b?a=b&c=d#f" && - - identical "." && - identical "./" && - identical "./a" && - - identical ".;a;b" && - identical "./;a;b" && - identical "./a;a;b" && - - identical ".?a=b&c=d" && - identical "./?a=b&c=d" && - identical "./a?a=b&c=d" && - - identical ".;a;b?a=b&c=d" && - identical "./;a;b?a=b&c=d" && - identical "./a;a;b?a=b&c=d" && - - identical ".#f" && - identical "./#f" && - identical "./a#f" && - - identical ".;a;b#f" && - identical "./;a;b#f" && - identical "./a;a;b#f" && - - identical ".;a;b?a=b&c=d#f" && - identical "./;a;b?a=b&c=d#f" && - identical "./a;a;b?a=b&c=d#f" && - - identical ".." && - identical "../" && - identical "../a" && - - identical "..;a;b" && - identical "../;a;b" && - identical "../a;a;b" && - - identical "..?a=b&c=d" && - identical "../?a=b&c=d" && - identical "../a?a=b&c=d" && - - identical "..;a;b?a=b&c=d" && - identical "../;a;b?a=b&c=d" && - identical "../a;a;b?a=b&c=d" && - - identical "..#f" && - identical "../#f" && - identical "../a#f" && - - identical "..;a;b#f" && - identical "../;a;b#f" && - identical "../a;a;b#f" && - - identical "..;a;b?a=b&c=d#f" && - identical "../;a;b?a=b&c=d#f" && - identical "../a;a;b?a=b&c=d#f" && - - string_of_url - (make_url ~path:["a:b"] ip_url_syntax) = "a%3Ab" && - - string_of_url - (make_url ~encoded:true ~path:["a:b"] ip_url_syntax) = "./a:b" && - - true -;; - - -let t052 () = - (* mailto: URLs *) - let mailto_syn = Hashtbl.find common_url_syntax "mailto" in - - let identical s = - string_of_url (url_of_string mailto_syn s) = s in - - let fails s = - try ignore(url_of_string mailto_syn s); false - with Malformed_URL -> true - in - - identical "mailto:user@host" && - identical "mailto:user@host;?;?" && - fails "mailto:user@host#f" -;; - -(**********************************************************************) -(* split_path/join_path/norm_path: *) -(**********************************************************************) - -let t060 () = - (split_path "" = []) && - (split_path "/" = [ "" ]) && - (split_path "/a" = [ ""; "a" ]) && - (split_path "a" = [ "a" ]) && - (split_path "a/" = [ "a"; "" ]) && - (split_path "/a/" = [ ""; "a"; "" ]) && - (split_path "/a/b" = [ ""; "a"; "b" ]) && - (split_path "/a/b/" = [ ""; "a"; "b"; "" ]) && - (split_path "/a/b/c" = [ ""; "a"; "b"; "c" ]) && - - (join_path [] = "") && - (join_path [ "" ] = "/") && - (join_path [ ""; "a" ] = "/a") && - (join_path [ "a" ] = "a") && - (join_path [ "a"; "" ] = "a/") && - (join_path [ ""; "a"; "" ] = "/a/") && - (join_path [ ""; "a"; "b" ] = "/a/b") && - (join_path [ ""; "a"; "b"; "" ] = "/a/b/") && - (join_path [ ""; "a"; "b"; "c" ] = "/a/b/c") && - - true -;; - - -let t061 () = - (norm_path ["."] = []) && - (norm_path ["."; ""] = []) && - (norm_path ["a"; "."] = ["a"; ""]) && - (norm_path ["a"; "b"; "."] = ["a"; "b"; ""]) && - (norm_path ["a"; "b"; ".."] = ["a"; ""]) && - (norm_path ["a"; "."; "b"; "."] = ["a"; "b"; ""]) && - (norm_path [".."] = [".."; ""]) && - (norm_path [".."; ""] = [".."; ""]) && - (norm_path ["a"; "b"; ".."; "c" ] = ["a"; "c"]) && - (norm_path ["a"; "b"; ".."; "c"; ""] = ["a"; "c"; ""]) && - (norm_path ["";"";"a";"";"b"] = [""; "a"; "b"]) && - (norm_path ["a"; "b"; ""; ".."; "c"; ""] = ["a"; "c"; ""]) && - (norm_path ["a"; ".."] = []) && - (norm_path ["";""] = [""]) && - (norm_path [""] = [""]) && - (norm_path [] = []) && - - true -;; - -(**********************************************************************) -(* apply_relative_url: *) -(**********************************************************************) - -let t070() = - (* Examples taken from RFC 1808 *) - let url = url_of_string ip_url_syntax in - let base = url "http://a/b/c/d;p?q#f" in - let aru = apply_relative_url base in - - (aru (url "g:h") = url "g:h") && - (aru (url "g") = url "http://a/b/c/g") && - (aru (url "./g") = url "http://a/b/c/g") && - (aru (url "g/") = url "http://a/b/c/g/") && - (aru (url "/g") = url "http://a/g") && - (aru (url "//g") = url "http://g") && - (aru (url "?y") = url "http://a/b/c/d;p?y") && - (aru (url "g?y") = url "http://a/b/c/g?y") && - (aru (url "g?y/./x") = url "http://a/b/c/g?y/./x") && - (aru (url "#s") = url "http://a/b/c/d;p?q#s") && - (aru (url "g#s") = url "http://a/b/c/g#s") && - (aru (url "g#s/./x") = url "http://a/b/c/g#s/./x") && - (aru (url "g?y#s") = url "http://a/b/c/g?y#s") && - (aru (url ";x") = url "http://a/b/c/d;x") && - (aru (url "g;x") = url "http://a/b/c/g;x") && - (aru (url "g;x?y#s") = url "http://a/b/c/g;x?y#s") && - (aru (url ".") = url "http://a/b/c/") && - (aru (url "./") = url "http://a/b/c/") && - (aru (url "..") = url "http://a/b/") && - (aru (url "../") = url "http://a/b/") && - (aru (url "../g") = url "http://a/b/g") && - (aru (url "../..") = url "http://a/") && - (aru (url "../../") = url "http://a/") && - (aru (url "../../g") = url "http://a/g") && - - (aru (url "") = url "http://a/b/c/d;p?q#f") && - (aru (url "../../../g") = url "http://a/../g") && - (aru (url "../../../../g") = url "http://a/../../g") && - (aru (url "/./g") = url "http://a/./g") && - (aru (url "/../g") = url "http://a/../g") && - (aru (url "g.") = url "http://a/b/c/g.") && - (aru (url ".g") = url "http://a/b/c/.g") && - (aru (url "g..") = url "http://a/b/c/g..") && - (aru (url "..g") = url "http://a/b/c/..g") && - (aru (url "./../g") = url "http://a/b/g") && - (aru (url "./g/.") = url "http://a/b/c/g/") && - (aru (url "g/./h") = url "http://a/b/c/g/h") && - (aru (url "g/../h") = url "http://a/b/c/h") && - (aru (url "http:g") = url "http:g") && - (aru (url "http:") = url "http:") && - - true -;; - - -(**********************************************************************) - -let test f n = - if f() then - print_endline ("Test " ^ n ^ " ok") - else - print_endline ("Test " ^ n ^ " FAILED!!!!"); - flush stdout -;; - -test t001 "001"; -test t002 "002"; - -test t010 "010"; -test t011 "011"; -test t012 "012"; - -test t020 "020"; -test t021 "021"; - -test t030 "030"; -test t031 "031"; -test t032 "032"; -test t033 "033"; -test t034 "034"; -test t035 "035"; -test t036 "036"; -test t037 "037"; -test t038 "038"; - -test t050 "050"; -test t051 "051"; -test t052 "052"; - -test t060 "060"; -test t061 "061"; - -test t070 "070"; -() -;; diff --git a/helm/DEVEL/pxp/netstring/tests/test_recode.ml b/helm/DEVEL/pxp/netstring/tests/test_recode.ml deleted file mode 100644 index 64a04caae..000000000 --- a/helm/DEVEL/pxp/netstring/tests/test_recode.ml +++ /dev/null @@ -1,169 +0,0 @@ - - -let make_iso enc = - let s = ref "" in - for i = 0 to 255 do - let u = try Netconversion.makechar (enc :> Netconversion.encoding) i - with Not_found -> "" in - s := !s ^ u - done; - !s -;; - -let make_ucs2 start stop = - let s = String.create ((stop - start) * 2) in - for i = 0 to stop-start-1 do - let k = 2 * i in - let c = i + start in - s.[k] <- Char.chr(c lsr 8); - s.[k+1] <- Char.chr(c land 0xff); - done; - s -;; - -let make_ucs4 start stop = - let s = String.create ((stop - start) * 4) in - for i = 0 to stop-start-1 do - let k = 4 * i in - let c = i + start in - s.[k] <- Char.chr(c lsr 24); - s.[k+1] <- Char.chr((c lsr 16) land 0xff); - s.[k+2] <- Char.chr((c lsr 8) land 0xff); - s.[k+3] <- Char.chr(c land 0xff); - done; - s -;; - -let name_of_encoding enc = - match enc with - `Enc_iso88591 -> "ISO_8859-1" - | `Enc_iso88592 -> "ISO_8859-2" - | `Enc_iso88593 -> "ISO_8859-3" - | `Enc_iso88594 -> "ISO_8859-4" - | `Enc_iso88595 -> "ISO_8859-5" - | `Enc_iso88596 -> "ISO_8859-6" - | `Enc_iso88597 -> "ISO_8859-7" - | `Enc_iso88598 -> "ISO_8859-8" - | `Enc_iso88599 -> "ISO_8859-9" - | `Enc_iso885910 -> "ISO_8859-10" - | `Enc_iso885913 -> "ISO_8859-13" - | `Enc_iso885914 -> "ISO_8859-14" - | `Enc_iso885915 -> "ISO_8859-15" - | `Enc_utf8 -> "UTF-8" - | `Enc_ucs4 -> "UCS-4" - | `Enc_ucs2 -> "UCS-2" - | `Enc_utf16 -> "UTF-16" - - (* Note: GNU-iconv assumes big endian byte order *) -;; - -let iconv_recode_string in_enc out_enc in_s = - let in_enc_name = name_of_encoding in_enc in - let out_enc_name = name_of_encoding out_enc in - let out_s = ref "" in - - let out_ch,in_ch = Unix.open_process ("iconv -f " ^ in_enc_name ^ " -t " ^ - out_enc_name) in - (* Write in_s to in_ch in a new thread: *) - ignore - (Thread.create - (fun () -> - output_string in_ch in_s; - close_out in_ch; - ) - () - ); - (* Read the result in the current thread: *) - let buf = String.create 1024 in - let n = ref 1 in - while !n <> 0 do - let n' = input out_ch buf 0 1024 in - out_s := !out_s ^ String.sub buf 0 n'; - n := n' - done; - ignore(Unix.close_process (out_ch,in_ch)); - !out_s -;; - -let test_iso_and_utf8 enc = - let name = name_of_encoding enc in - print_string ("Recode: " ^ name ^ " and UTF-8... "); flush stdout; - let s = make_iso enc in - let s1' = Netconversion.recode_string (enc :> Netconversion.encoding) - `Enc_utf8 s in - let s2' = iconv_recode_string enc `Enc_utf8 s in - assert(s1' = s2'); - let s1 = Netconversion.recode_string `Enc_utf8 - (enc :> Netconversion.encoding) s1' in - let s2 = iconv_recode_string `Enc_utf8 enc s1' in - assert(s1 = s2 && s1 = s); - print_endline "OK"; flush stdout -;; - -let test_utf16_and_utf8_0000_d7ff () = - print_string "Recode: UTF-16-BE and UTF-8, #0000-#D7FF... "; - flush stdout; - let s = make_ucs2 0 0xd800 in - let s1' = Netconversion.recode_string `Enc_utf16_be `Enc_utf8 s in - let s2' = iconv_recode_string `Enc_utf16 `Enc_utf8 s in - assert(s1' = s2'); - let s1 = Netconversion.recode_string `Enc_utf8 `Enc_utf16_be s1' in - let s2 = iconv_recode_string `Enc_utf8 `Enc_utf16 s1' in - assert(s1 = s2 && s1 = s); - print_endline "OK"; flush stdout -;; - -let test_utf16_and_utf8_e000_fffd () = - print_string "Recode: UTF-16-BE and UTF-8, #E000-#FFFD... "; - flush stdout; - let s = make_ucs2 0xe000 0xfffe in - let s1' = Netconversion.recode_string `Enc_utf16_be `Enc_utf8 s in - let s2' = iconv_recode_string `Enc_utf16 `Enc_utf8 s in - assert(s1' = s2'); - let s1 = Netconversion.recode_string `Enc_utf8 `Enc_utf16_be s1' in - let s2 = iconv_recode_string `Enc_utf8 `Enc_utf16 s1' in - assert(s1 = s2 && s1 = s); - print_endline "OK"; flush stdout -;; - -let test_utf16_and_utf8_10000_10FFFF () = - print_string "Recode: UTF-16-BE and UTF-8, #10000-#10FFFF... "; - flush stdout; - for i = 1 to 16 do - let s0 = make_ucs4 (i * 0x10000) (i * 0x10000 + 0x10000) in - let s = iconv_recode_string `Enc_ucs4 `Enc_utf16 s0 in - let s1' = Netconversion.recode_string `Enc_utf16_be `Enc_utf8 s in - let s2' = iconv_recode_string `Enc_utf16 `Enc_utf8 s in - assert(s1' = s2'); - let s1 = Netconversion.recode_string `Enc_utf8 `Enc_utf16_be s1' in - let s2 = iconv_recode_string `Enc_utf8 `Enc_utf16 s1' in - assert(s1 = s2 && s1 = s); - print_string "+"; flush stdout; - done; - print_endline "OK"; flush stdout -;; - - -print_endline "Warning: You need the command 'iconv' to run this test!"; -flush stdout; -test_iso_and_utf8 `Enc_iso88591; -test_iso_and_utf8 `Enc_iso88592; -test_iso_and_utf8 `Enc_iso88593; -test_iso_and_utf8 `Enc_iso88594; -test_iso_and_utf8 `Enc_iso88595; -test_iso_and_utf8 `Enc_iso88596; -test_iso_and_utf8 `Enc_iso88597; -(* test_iso_and_utf8 `Enc_iso88598; *) -test_iso_and_utf8 `Enc_iso88599; -test_iso_and_utf8 `Enc_iso885910; -(* test_iso_and_utf8 `Enc_iso885913; *) -(* test_iso_and_utf8 `Enc_iso885914; *) -(* test_iso_and_utf8 `Enc_iso885915; *) -test_utf16_and_utf8_0000_d7ff(); -test_utf16_and_utf8_e000_fffd(); -(* This test does not work because iconv does not support the surrogate - * representation of UTF-16: - * test_utf16_and_utf8_10000_10FFFF(); - *) -() -;; diff --git a/helm/DEVEL/pxp/netstring/tools/Makefile b/helm/DEVEL/pxp/netstring/tools/Makefile deleted file mode 100644 index b3c148db7..000000000 --- a/helm/DEVEL/pxp/netstring/tools/Makefile +++ /dev/null @@ -1,10 +0,0 @@ -all: - $(MAKE) -C unimap_to_ocaml - -clean: - -CLEAN: clean - $(MAKE) -C unimap_to_ocaml CLEAN - -distclean: clean - $(MAKE) -C unimap_to_ocaml distclean diff --git a/helm/DEVEL/pxp/netstring/tools/unimap_to_ocaml/.cvsignore b/helm/DEVEL/pxp/netstring/tools/unimap_to_ocaml/.cvsignore deleted file mode 100644 index c1fcbc4ae..000000000 --- a/helm/DEVEL/pxp/netstring/tools/unimap_to_ocaml/.cvsignore +++ /dev/null @@ -1,7 +0,0 @@ -*.cmo -*.cmx -*.cmi - -*.o -*.a - diff --git a/helm/DEVEL/pxp/netstring/tools/unimap_to_ocaml/Makefile b/helm/DEVEL/pxp/netstring/tools/unimap_to_ocaml/Makefile deleted file mode 100644 index ed4277389..000000000 --- a/helm/DEVEL/pxp/netstring/tools/unimap_to_ocaml/Makefile +++ /dev/null @@ -1,15 +0,0 @@ -all: unimap_to_ocaml - -unimap_to_ocaml: unimap_to_ocaml.ml - ocamlfind ocamlc -g -package str -linkpkg -custom \ - -o unimap_to_ocaml \ - unimap_to_ocaml.ml - -clean: - rm -f *.cmi *.cmo *.cma *.cmx *.o *.a *.cmxa - -CLEAN: clean - -distclean: clean - rm -f *~ unimap_to_ocaml - diff --git a/helm/DEVEL/pxp/netstring/tools/unimap_to_ocaml/unimap_to_ocaml.ml b/helm/DEVEL/pxp/netstring/tools/unimap_to_ocaml/unimap_to_ocaml.ml deleted file mode 100644 index 14a89e9d9..000000000 --- a/helm/DEVEL/pxp/netstring/tools/unimap_to_ocaml/unimap_to_ocaml.ml +++ /dev/null @@ -1,201 +0,0 @@ -(* $Id$ - * ---------------------------------------------------------------------- - * - *) - -open Printf;; - -let comment_re = Str.regexp "#.*$";; -let space_re = Str.regexp "[ \t\r\n]+";; - -let read_unimap_format_a fname f = - (* Reads a Unicode mapping in format A from a "local" code to Unicode. - * Returns a list of pairs (localcode, unicode). - *) - - let read_unimap_line() = - let s = input_line f in (* may raise End_of_file *) - let s' = Str.global_replace comment_re "" s in - let words = Str.split space_re s' in - match words with - [] -> raise Not_found - | [ localcode; unicode ] -> - int_of_string localcode, int_of_string unicode - | _ -> - failwith ("File " ^ fname ^ ": Do not know what to do with:\n" ^ s') - in - - let rec read_following_lines() = - try - let localcode, unicode = read_unimap_line() in - (* may raise End_of_file, Not_found *) - (localcode, unicode) :: read_following_lines() - with - Not_found -> read_following_lines() - | End_of_file -> [] - in - - read_following_lines() -;; - - -type from_uni_list = - U_nil - | U_single of (int * int) - | U_list of (int * int) list - -type from_unicode = - from_uni_list array;; - (* A hashtable with fixed size (256). A pair (unicode, localcode) is - * stored at the position unicode mod 256 in the array. - *) - - -let make_bijection unimap = - (* unimap: a list of pairs (localcode, unicode) - * returns a pair of arrays (m_to_unicode, m_from_unicode) with: - * - m_to_unicode.(localcode) = Some unicode, - * if the pair (localcode, unicode) exists - * m_to_unicode.(x) = None otherwise - * - m_from_unicode.(unicode lsr 8) = [ ...; (unicode,localcode); ... ] - *) - - let m_to_unicode = Array.create 256 None in - let m_from_unicode = Array.create 256 [] in - - List.iter - (fun (localcode, unicode) -> - assert(localcode < 256); - - (* Update m_to_unicode: *) - if m_to_unicode.(localcode) <> None then - failwith ("Local code point " ^ string_of_int localcode ^ - " mapped twice"); - m_to_unicode.(localcode) <- Some unicode; - - (* Update m_from_unicode: *) - let unilow = unicode land 255 in - if List.mem_assoc unicode (m_from_unicode.(unilow)) then - failwith ("Unicode code point " ^ string_of_int unicode ^ - " mapped twice"); - m_from_unicode.(unilow) <- - m_from_unicode.(unilow) @ [unicode,localcode]; - ) - unimap; - - m_to_unicode, m_from_unicode -;; - - -let to_unimap_as_string to_unimap = - let make_repr x = - match x with - None -> -1 - | Some u -> u - in - Marshal.to_string (Array.map make_repr to_unimap) [ Marshal.No_sharing ] -;; - - -let from_unimap_as_string from_unimap = - let make_repr l = - match l with - [] -> U_nil - | [u,l] -> U_single(u,l) - | _ -> U_list l - in - let m = Array.map make_repr from_unimap in - Marshal.to_string m [ Marshal.No_sharing ] -;; - - -let print_bijection f name m_to_unicode m_from_unicode = - (* Prints on file f this O'Caml code: - * let _to_unicode = ... - * let _from_unicode = ... - *) - fprintf f "let %s_to_unicode = lazy (Marshal.from_string \"%s\" 0 : int array);;\n" - name - (String.escaped (to_unimap_as_string m_to_unicode)); - - fprintf f "let %s_from_unicode = lazy (Marshal.from_string \"%s\" 0 : Netmappings.from_uni_list array);;\n " - name - (String.escaped (from_unimap_as_string m_from_unicode)); -;; - - -let main() = - let files = ref [] in - let outch = ref (lazy stdout) in - Arg.parse - [ "-o", Arg.String (fun s -> outch := lazy (open_out s)), - " Write result to this file"] - (fun s -> files := !files @ [s]) - "usage: unimap_to_ocaml file.unimap ..."; - - (* First read in all unimaps: *) - let unimaps = - List.map - (fun filename -> - let mapname = Str.replace_first (Str.regexp "\.unimap$") "" - (Filename.basename filename) in - let f = open_in filename in - prerr_endline ("Reading " ^ filename); - let unimap = read_unimap_format_a filename f in - close_in f; - mapname, unimap - ) - !files - in - - (* Second compute all bijections: *) - let bijections = - List.map - (fun (mapname, unimap) -> - prerr_endline ("Processing " ^ mapname); - let to_unicode, from_unicode = make_bijection unimap in - mapname, to_unicode, from_unicode - ) - unimaps - in - - let out = Lazy.force !outch in - (* Third output all results: *) - output_string out "(* WARNING! This is a generated file! *)\n"; - - List.iter - (fun (mapname, to_unicode, from_unicode) -> - print_bijection out mapname to_unicode from_unicode) - bijections; - List.iter - (fun (mapname, _, _) -> - fprintf out "Hashtbl.add Netmappings.to_unicode `Enc_%s %s_to_unicode;\n" - mapname mapname; - fprintf out "Hashtbl.add Netmappings.from_unicode `Enc_%s %s_from_unicode;\n" - mapname mapname; - ) - (List.rev bijections); - fprintf out "();;\n"; - - close_out out -;; - - -main();; - -(* ====================================================================== - * History: - * - * $Log$ - * Revision 1.1 2000/11/17 09:57:29 lpadovan - * Initial revision - * - * Revision 1.3 2000/08/29 00:48:52 gerd - * Conversion tables are now stored in marshalled form. - * New type for the conversion table Unicode to 8bit. - * - * Revision 1.2 2000/08/12 23:54:56 gerd - * Initial revision. - * - * - *) diff --git a/helm/DEVEL/pxp/ocaml-findlib-0.4.0-1.i386.rpm b/helm/DEVEL/pxp/ocaml-findlib-0.4.0-1.i386.rpm deleted file mode 100644 index 1877eeaba9fce0e5daefb579f9b430b13023c006..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 190472 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�|B9nRC&Sd6FwrJ9G!fQ%Wtf{DYlre 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�ew6l`A~b0mf$-j>=_wVjhCsoxNUucpCkvIMvulFWD_BjvS}E8NA)fVW zDb&ejD{>Rj7UA3CI=!f~ni3ii1Uya1?Y5bFlh zA<@V!hpV6u0h)5;Ug{MOx?YZI@XTi{&q4&5l(>3kEZ(QhojgDKooYZwKa%ywM(42o zOKQmARUJQyaQH#3*Z|dH*ub}-Aq4h_EyQQAm4)JJkrKXm0gx$>)0+yPkcFso1(^co zLzKxK)h3mEsTzrFs)cG3Xx6o670CoY3PZ^)13i~#Go|9{5nUrhtf$TLlbNR>Cvj8? z6qDY24Dal57Z&Tvne+1(78g$8t~q_?(S-{OaCBU8b_`81G{YnTmkY#rx5Ig1$aQhW zkYn8E33^Pa)HKSHRLK>u%L)h(m@E5@&P9c)1Zb$N~5L6RxO`$*wCrM1(vgyl6b&8%-Oku*qC#Mwf8RQ zC3WWfrL*(I$MM;sgCpJSoQT+^3be)1c$uX^fj=~`TBCDrq3c0O%>+u>PEE7omCL@t zX2$_pF0QTu392;9%a~FvWgx}k+h$Xv2I!032Fq3|VPsAAz@SeCUOBi?EH}&T8k*>( zwtO>N|9S|WX9z>KQw=N0mPyN-C#}-7oO#kuv>!V;#|KwymcHufsA2$ zGrq2vgMeZw`*eJq1!0VVNF!Xn=5wuc5q^XIMGUK-V7Q5;W3MEza}Z#&E(+eI8bo95 zt^veS*fQF{WylreZi_|qSRS7b5Km_S^cNFBqhe%aWrhmsWmxezU3senCZcS8ZiPkY z;tAkMbg;jN!Tu;*Xil|+IT;(yP+@K``>08O$WX0O12q)3qeh@T%0QNW=DUu;`;dOH zMPVKriA+Xw)&YrPZD|kOJ2`ujOYDOb#Mh&ZEVe?rlwT4O1Tp^(Otn$8r>1#An}Ux< z1#M;^qr(ogo`sos;uwH~3y%tk|4JlN zmSgETu*v3}Q<4HObfpRp7=h|aW1W~0RvobLU+&faa&~Ua_2@NTXsKsTTxw4V$={J< zrc=(Obo8HCvYZ~~dV6V%`mAq9QxEmohCVX}^AuI!5KS5Ht2 z+pp;79sBQ{Fx9=X_chA!0J)>RaG?3|x_owj!TF`z$AVFiX^iDWbP-TdWe#F?W)gNT!XH z$>2E^oAt{f`PvjKIac)cH43p7nxqt~vmZ-wm`jX6ELYsImQXzm=(;q&cs4abSwh|8;6kfIL}@9Pmi zyd}_U8^@(fvGiuQnIzQ}gRuvaR0`+OV;_Zo>fVVZ_LehaJxONq2P+*t?`NJb^;rd_&d_twxu;QKid}8POSws^@~4|^W7D; zJ%3!g6n4fRSIn?s6qGO*|4Q%p{6Y2jPsb0 z&>}`CP7<<+IjII~oK3g7I-V<+viNBNKS2}WZc^P5F9>S-wR#wOkt!vxty5BcE}Y`B zrdeRDv96&yp;;d}8Vs69%^%I1HhWz>H__#D(AQX`Rwn*h2J^F7jyHh(z-mzwet(7^ zBHRj3$9ZXIC19>f5T6*aDqlaJ6*e%;0O7BwSyD6Qv6+n~q`Cs8WQ5s(S>)fyTL<7k z@JIdTZ09lT#)w7WGcVHcAvTBJ#n}77~weJ|qCJ8aAkx@jlPk z?A_T|l4I(&r*q4j(Tn_bZDO^lR6S?!KsY#U&zvNoK`E*l3$uqY zq>$?ZM!#9}^W~zpa6b}a0IdmH-QYCgctF?%s^rCn!P$xY^W(Vs&QBOgi#I$`0^u4R z&)(uZ3KhFcgQ>xZeyBm!lq)x~1{k85%$KV?JNnZke2Ndbeu)R3V~lZ|p}&>g#^myc z8%%qW0MWw~>!E2IcT4RGcCXc&!tq*R)e`I|aE@1}6MAnJY{GHF5Yg^;v00Q@8`c{R zOp#}Mt(&Zoe6Y)@2y*^>#0iJ4R;ufjHl}#b&`}2QVq+!S^kHv0 zvlfL4SNm{wQja7^&KE8cEDktsYuKBFJ|X$M!&+L7&f#Y?leBp8l6hhJekYxpAhDW# zVmavE1nISWS;t!Ds2cKT1d5}zXfR}>*TecUur##!vdkrzJ>{7k%Mqjisx-{b^U1#~ zD5>c}Uozfhe1w|q>&1^o-<+wT*`JCc=hfG0tv*m{oK%Dmp$I_tNMR*OZ#-W-NEw}_ zg<2C<%>|v(rgF6)@&LaCn{f(!4C>5CSve@(J&0FLih7{WX|{Xaon~jl_chJ)pk$+& zWG_FHX;&-c!t0umaVadN>~6)Q-(ISwuB4;AwApu-j(Y5R*8=`_hQa6>wxOkxYJ>iD zRbfxMs>=SchFVCY!p;ov_8 z3OzrmHC37`FslM3EfPDu^J)U-8zNF-wFH5xS${o57OS{gA^E2m5quKI6>B@JF?lLU zU|pvQ3rg$32D&x-87n_h*qr_1T1M|=5~_)8;9Ah!ToaeZHRb@(P|NBS2>gS$%Rwot z13zIOxTa8xI}4&lDO?H}l1fCvN`?@~lgG~K#_+8Mf32uk+X@2)ucO0sT?%tPBxF?8 z7}qBx%6cLJOW8q*^*I+8hOq|B(eh~5!&(X48FVq;@&>$EuU?1PXF3+tqF5*gs}unj z!0N#86nqiA*RLHRh1azsNNF*540_4e@M~0O)Rp**taqF+7gTvH5U3FY9vwSbg~5dq zwZA-vtoTPE{8b5z#;5gsa5V%jWW))B!DFDF^%~VGPbS#2)r)o2E@Prh)oQJrg~rl7*R5!BzXQxv+hy{6MM3};nfp+@|r&i z{ft7ZKlCw_LJG>c5$wAe3+UoCp|$8j5uu08e-JXrc{;X4-6?{|0{>AE(?`^I*Fafd zz9p@I{{BWFbPp`TYUMi&nT~pP;JVnU#LS(A@A9lhoI$)GavCBzV#`SAp05F8oiSn* zk-R9GV-UPamN&F(MivzQ>|IhIIxwo{wy6frn@IX03HWpK-D(kQASW{+06|wF@iD`ZX-F7Zo9nmh9?isajbbrJd%FS}h99 zzJE>3F1AgL>v|Pqw(Es%G8ytvoB&s=nqFskH*Qu`G;)FzQl5^kfd`B`65Mpqk$Il1 z=USV3u5GIxF&d9^kdqzBERpGJth&c@3$<%JsqO+c@gv4W0_Q}rphE)fjPY^24#?`B zsS0S5)F>ypcH%g|L}l6bYw_@Ep+U0w!~4`ZYaYk42v&V;TO;X3L-PU_c3U`-3Eg#( z_hHmfOA~#?m}wBl1w|gR<%z~jM}<&B$%@2k7d2C$l4_W=qV8#RTl(*G$Kda+R;3ez z-(%nV^)}g43X3ZU_pf7F=}pHnGqF25mdUpMK#9(Nm1|i#dF6C+=Gjnf4@w(KdX!|# zv|)UD{Ejx|)@V~Err+4w6uTDoOq((}mqP9weM%|@$|Ej%5P=U&=Elaf2~5Y{HWUxN zLf-Keih~YGsj?CVji%zUwX1s~`Y}TXLs`kYQOxpQ4naIFMrCj*3hOJSY7FoqV>Dd~L z@T&p7;z)2;s@4@D4-;qJ^$JD6UswhlZ@D&M=pmC&X~RY!lNfi36Yw-8PJn2PK`>xA z0b}LV>#DXEL^cw@3G`O~;v%7+QSHlcgEv^FKpdrT70=V~1^}y}Cdv$iN3I(@d3)twc`+Q=e*8RV^Ab|GLL4k0=oYRa>wMAke15 z>6%dz(ZCqgr+OJ=`gsJ*BE1RbiUv>=aB{Oz9YQ|@wW$`WE@Zgkj6mZMdnPh&8(LF$ zl9q?tGu}(i;$uJ;+~HzyF~3?Z ztkw_!RUIi6&<6Un!mYuZHj;!^p-3_C$!mfu5@e8|^Bh()D!$czg0sn}uQgDfORgDx zE%I>R#2oyxu|$N10Cqr$zqF&DTU8_3h=zJCYLTk)HQ+n#K`-G&i;DQ^4_FFU>#8s9oS zLlLZxxOGz_RD-pJ3P08;oAILNvbHVhj9;L!Xrif~jF6%&aoc9qUkb?yJuS(iX--W& zx={m%jy_DFawvp7R2um#M!54dgY2@nu%564=6vMM)t9v zcN_tTFyG)J!M0@M*QJJ_sis_Da5LtxK&8l9_=##IjQ1+xEN@}oJa2xbf%ysu!_LNq z*yUvvucffzcs9^JjjDq=MI7FJsFj=hN~uADO2i<~k( zKDRr*@e|{1G4D>PeMopcgg;6eg1RC@MMb0ttLjZ6xb!3-v=LeQEXNU6&byWsk!i+S zizg;$?}#h6MqIJvZimE`DRnA#peg-2&zohjSAvS7D4DJaM~dVEF3TD}9^ygKl!op- zP^3XZj$F?-&c)$5%G26-wlFRn-R2jB8M4>!ZdMVvR;i zKALYTuB0pq4th{nDk9}CItyA=G#hzso>s)Rs5daZs~TFH1{UoCU>>S9qGY5c!= z(KL?Wd%S}^=T>LC9f2aqI4hJcNP@-Lyu2BmSUAI7vOmE9C^pf)rAML*3x`ctd~G~? zjhcGxytD?{im4)z%GWL}&g2Wf73;oq1xMvN?o(QwWaTM^0qEDw`y`6D$=;jw2;2(1 zmBEiKyj}zk1kt!E{-)m7i0=vWv6r#4W__cvTD=Gaws_9JLQ4oO60izs&v=T7AbTs> zQr)Bo*29&v4r6<5Gd(+PG$=Yy+<15B&=;&c=btI+ylIgLqChJIkCF>ZD0-mNbc<=S zxs-zjLpCrlxULbl#Byl!r%4}OE0&Ts2l+%`B!KYifC{Adf+v!irw2ac$Y~GPm>y{ zL1pLrnEJ^ee>5xo*-dqYqu^dNYVO*f6=E0|@CNL!YM~*7JdKRD%n2`Poby1!^wY7y z#!84Ta=MSGM$kjO=C=tjqNd99ux(GD7MVJ&8JP^o>IuJmK4v~vYu2FPK;FQDgPdXv zm&P>iE(IhJo&!v=T&$pHRKgHUyTf%tR|^CjWjyVNQxs8uI?0|hurw3;ajXjz6fg>b z7oP+4cPS_i5c^}mRVv0;M9o0QvHbJUHXvZtQ^9i@{V``*12 z)sxO>cKZhIHX?lAzW&owJ=wOy>8ah(8BMm;8MW{E9Ziubrz;uR>U+jJL496f`4Ad} znQKPF3fNr=8mG*bH8pcbcXUhQ1I(=57P_OUnLXAWP0n^Aovy}c#TU+V;R*&*5Gd-k zQc$UwRJ4@SwE`JG-8zK1GE1mS#*^Gww5*%9j?{}_!q_G+oR>?Crt>4p`9 zlqW3=#GYP_{G(;Xhu;XJkt`>uwmc;Pl`_BiSfzNwxOVI8lM*{1U#%;iwFcSSF*~z( zcMr7+?aprqBrxW&$ioLb4dm`udA< z>sfW}-vT2JGJjdmW*x{0fyb+r;zz<*nVwUoI};X9g5WJ=rtI~qkt4Dm#vpSX_ENb) zca)_A^+4p>E&QqrVN_hL5VM|GRyrely0f%SRqeR91Mi9v5CojT8bXX@<*f5@w@oYV zbs;At+^B1=6E%FFEjQ>V9ssEwL->qq+6u)%Vhb9GV4*ugbM9N6f3?p9BY&sN6=QRXJ zC0h5`L{Fz8^sf|w&!~rl(K(iz$c;OBUbH5{T}{>t!z-?EuenH*`w)&U)aq2iut1P3 z>MYn`yc}3hx3$N1SG?5TinpB@s2=;?t@(X#Mcs~aM=t`eBkxZ4B=62HPw$Sr%d^@- z-tDIQcck8aeH&WHx~G7>)ha*>#+Bw9K5-`){#FUQledqsYnR2I3A-4RbmA)iargwWUGVhuPVH;ns}(Xw5)i#f+F}QL&imHhc_|I0)XV zV63O>LW;wHa*#Jcs#-^H*aR1rA_q_$AJ^4VX5^gBX=aq1ztBiU9Ou^99%DMUNP~9K z@Rh-OgrTu!WJR)u+nckRe1mgVop)=mslYm_=l71E>U_3s$M1BeOP-4SP4jcRlRs=? zX0|;h^9s58OG}^8B)mBos{UA*cJ_pA7U(cojH#uyewY{uGCd@Vn!V$PdTabpCw4q+ zZaU|8O>Fw+vu5|&A$4Xp)0v_;OxApq{+NNvAZJnsLKstBRREwsy@IR~AgVCZ3Mj5@ zLR`h8VeFivp$0v9IoL2ePBS{_!UGlraQ`#KL|F=JK+K?O1t~D;EzXDIu^SkHCDKp8 zQ8UamCOXrd19SoVbS7&!HqT;0`l3f&`lTfG%}chqDXM4D27X+8ld6nnU2j(V0E7FX zR6EOFS?m~gwlhjz<7(%qom0jyOHkkI#mJ--iV8kL8H<>-OSoUn5@LAms48t5TxU?O zf`*jwatewNF(#h&lnlzDvESgjHY*Yqk>!PJ02Sqwk@dpdY7Ryfz8?pq2>Ljo!6N8( zl5eH5-1=Ho>mDV2aSJy9zNL*G7eJ1*<~fZe;_g*~wvb~yWHHGt%A1FLMgCw?Lr+a-RYeSW;h*Eak@734l9 z?ci7vPqj;uH`-7r*3+cXUh$+&>XZ*bI1jx!Sdmr-ej9e9^D8dkyBv2D|I5y80No_) z7L>lLR00qny+Ix_CiTh5JN(G4;YS1!+#!BsCg%%6)30~8Spj>-b6{G%-61EP;pDHZ z!QKff(Rx@vfe_`sr=6c&NT#5q2A!CP$R=*5c*(T9BHY|4p5M#WHhUs&7yOYm?l_v2 zS%qTLqmxonyCQ-$IxKjcjLJgLXVZoV2Nw$T7;mjOHBgR5RexQLe32Bl+TXS1*cSjc zK+h1ly+*OnJL?bmkhI0SXmAuKT`UzF8$4J9kPOXHv}zR7hv)n!DcIH%Lk|GTg!o{N z{aC2wQSO8jV9W0FCG}$6qv%DGR~jNhBU1K(>bq5OB3g0;aNzX-d)#(+!18O=C#^^tM7I|fQw&-ENV(f(0k*-P=6m8#L*i$5 zo)s!>ee~&d}t(7}h6s(uksAq|gpqT}E^u!-mZ}^@FLIte4=>NPHQvn2J?F zI8nq$Kx?P9nrAIcjEBEtNQrA7Jjr}>6atmw|*vjJ2v3+oGD3GQyHlBwyg=tExMr+7b>u0Z-f&3m626M4{z6 z&WR zT?(-ZIA1&q`b$Y{){0>rG`$PNu%cNp5wK`_zS!OJ4L{suoiC+$v9Z|m9+U0%njh_CcGq2NQ-*-um{|1nb zTL=*S`*{?)lzV6KW^Ovz9l4hmKnuCITk+|uR=nL6<4Fry_Hv7k)h6feK<(TjnRW6C zX?L+JV9#XMsmYF%(h*1B(z86;(0YF%|9NlGz_Btw4vHrPghwsa%i01EEJBGWVZDg2 zmbi_&$>=rjIoVDfFbYnPYvS@u7DftLyj}!{>u5uje4}@6i{9fF)h)NhO&rZrQbvP- z;Ta-49~oXziOX62hBojRt4k2sWIPl;8G5=}K8YRhSV9El2QYI-iExFE5`1tv7e}>M zS%6h?bDO8?^wfx$znDx8Nm^yRguo{y{L)Yf_kh4st!I5t4}(s1m|FFyn(JCaw-3wP z`PsrcRO^?DD}``{6Vt|L(4L|?*{((!HK4@H zE#?*0eov75+Vk%9Erhj(3^{pHeXSvNMd-tc2Pylbn(K^z;)I`}A;Hhzo_t;vGwPr4 zo0Ve2f6zZV;?zauKvlY#r)V561$9I!iZ^q~Y=SG4$}@eclg;3156jIG_5$`m`YNIB zILjoSn3b1pjA~9G)tpFtC8_50EFWb`oX&?eO}N!t(jZLu-F^@4ONz8=SJ>5yk{ChN zG+LKjt8uBIXDWw?Nrif|2qC<9>v=#2foC_PL6O`5j26~0`>>Ph8PRMkinzp9RYk!M zKw2=(vT9jAtfSIPC#(|6L)_SDhX{>`CnsASBm|?w`&F!8&>E!nUk+?GeQ`*#!w+hT zDyy)#Tb-vcj`q{BX&OOYz<;+Ud1;HqBw;d>lJmM~L$dFFtO@c7Phe0H61vFZ6zek* zdV;O%q8FeV6+un~!slxiqcyD&){~AZ*GePujD&aTBcI(!s@5|Kdy zf)1+RLX=o)?(OpG_2wEpwtX3wP=|A z?MXVJ(zztKo(Y<8 za~`2CkoZ#u28l#0ps`NW!&Ouslo(afJi&17EtQ4c9>=p|)**O3?yru!*Z2uBO;N&D zSOJzKc5)-+N)+1TTOvT7Xfam7Qh7ra2p;ASLcJIa08L-EHHoS>E3M09 zhas;FeoWvdhLdXHL)9cu5UcTSa#Fq1SeQmdXq2g28;VBN?9pfKK6dlQtN@^VnVmCz})H39MRI;*;0;2m*IH%P#7@ zfzmR_39z#e*{EXZvs#p1>~IvvSXIxra7HA+P@MVr4zNNc)WDOkj^*BkDt&%IHF%ti zx{dU$1!cQCehzm08KTy)Ei8`l^eMWb_!o2L>a#XTj!U4qzxzg`=CWc>8cl7G^e-Mk z@r%Mu)E2V(&oP}f!Zf0RX49Z>T?zplBqkpPI2yVd40x9Xx093#CfLwo1noz(?;}5A z5JBzKv#TU!^zGbtRhVaVQEQDx?ZmNT>+9<|(meCh0YJ@MAv|V--WKOCzyHkQgPA2# zvqMjKIK(U7TD2V3)C)K}E``5MtwNJ;a39Cc+QeRSZ|;zL;og~mE+-Yrefm32bsLX^ zzmHEGKi;L?r_ht#hasc}TG)Mn2MSUW6x*=7H;2XNu}EgGGPa+YZa^k`c-JxGnEdL} zHV&EH2&vi%ImR?JcL)9G)`Zo}>~s>&iJb2)lWqDY&h0VI(d=ZVJL2Hjdd{hB-UP}X zDY;pQjygG%MG7Gk3Zqi`=f`on&rg7h9x3&iAuW&R%B3Q?3Qgcg_?2O_W7!EP85eCS z4--n67vUr146hfLH6W!y`8Jp%+?t$!aRq>N>QR{WNJ53zNgaVg(`r>Z(#1wcd*DH0 zfpQu6{{mn)Y2UR-6%6aSq)Rj<33oX3HPp$bwBgHhTAi~-gn5H^iQqx5(mG%;AreeM z*2ikII^z~-JaB-j{?YZ&PMt_{ruDs9iK=d_V~FhJadZk6dc%(TjS)Q@GRGm0MHKQ7 zP|r&nUfNhV7Qp~ieX!pUSbrWhUgTtm(vOm3qtIi|PPMDn%nCaikaH{NqQGvVR&<12 zR#}W8kGthii++e?TBxGIp*wtgCDsI(FA4=!9%UL~nY7hnAn}t%TE}*ai9%I8$msR! zYrm_Iei}9`{?3@9Dnn^r^cTl$v}JY z>J+|-kt{asU~)PaLLM^m_y&!tgKm$xK+0ix87#gExBKjMhs9gr>57`7fV7cJ9FXQ@ znc(ouVUy5fQPl*n`nWj^S@W2z!4raHz;V*lnqW5yPWl0geFE%6R(CvxO(z);jo)ub zR}Q@TNW;UrOyo=?k?#d}!9iLWZwagr+Y3fjE-;PTA-tRM9<5duYFt937`!67h$#k+N4hauv#@8?zkQLVjuxRxv zkA6mV0Fr-1Vzt_g!RT%8>3oMGNpx|=Ipb9IV12Q6KT3;frpG&q#s(U7j4p*KtOt>? zA=1DZ?R!=<5Uf++@y>`)S=7rm!V0CytOpgOIXWdZSOieJWeY%CCmaKwNzSwq(_Cj@ z5#lg5>do*ZFBl6G3jL#;kE^Ok+y4}NY#1{>APPldy$hX?o`LuyypXKW#U&XZ;r&}E z=&g>~d!Q!RkUgN_wZa#Zpc_1jE1c-q4y9Q?(g~zlBWp8{O~O#?s%*|q>SltT z=EB9rGhnd=lY(N6)sI@bkOD>Gc}MiH9KXZxY9@N|;wAIK^!<{Z6{iSu*DMs@8$Vkt z)84U)IjX}+PkM@DTFf#ssCeuzq<#uLk;ogF7Szr00TwcM%<&SmQITLEZsrOvr_Y~M zVc<3k0-kxJXBeH^S-86n5@Ij9u9@v4gLkc-*oF?Q+n8UZr7WA9?Twr| zIZ;Av46q#-@{dkd_01JIh%a(XIZte3UCwxyM2E%Wj z4j_e_V{k}dRNgVQbLglz29c(ta9c}AqKYTBIK)Yw7$o&_F~SwBfm$k6%Lsec&n|3a zk$VG)d!<=N;YZJJCN_u}&T7aEp9fkR6cCe)w!dgH30f_k5jX11%66wvBA!D9&YV7J zT+bUA$_Zq;;(~>v(ogfiMurAO9jWM$`(-^ZYTfK=)!^l*1+$$~?PSHH@po9>*y(Pv zgNM`Gc~;2r9;L`|yDD@js^armcD~BaV2To9!rN-agSc`CD>vZ-EX0#6UXL2&^~NbB z)dZ5{W%TFxjE6`~8t926HzA(g*71|GZ*)PR;}O#b7G+1X>z+yneQ{@fj=TF40nB`1upOpMLOzV9F>jL%3pAxZoPWIm&rsacAtY}1YjZpTb-?XX{`x8vAy zaW$ydgN=B5R=SX%Yib7@RY{eyZbeJTUh%*R^@L^>;HS}i z9{B0elIaS>n*cptuhvWG#axEuC}9v4F&NCh2(C+$Crl|vA?_J&MySi4Glw)4JHMvJ zmpja1VYwV%-;?9Lt*5RrxW+oSg_lx%E!m}{o-wOv*A~%fRY`LFsH$5o9r_AZ3NH&A zorUUIVL2n8;aG0!T>5G&msG*Nxh*Vjf7yw3H$65>bJxYX>y@Uibeijp3be{ud(fVI zmurvP6LhN!n(D4SE!Ll)W&GeRAZ4eyrj(UPztC#*?D$PEj=(O^kxui;8V7eiC&rG? z_C`x)rgmsPxjlA1qvU*=V8#<3xqVOslp5emI@NtpQ5TW>hUVC0!YNb6D9(!RO#WDI zDrM%l#*`dFTogaBRBog^BR$7mH(S?@!~>}czmZs%VNdH| zY-Og)b+FRyI$%VlT)tXaDXtFSnuvXAjEQLZg>Rbm&_mR!rBfF#pIN%Hc>3JJBM%;P z>XHvUvT%WZT`pGS_vh#Nd$pkW`zs5JXOe}PhVxU4idUaMedR$dlUE?hXBQWt)m zQq}xpix*Kv3HD6S-Ji?7%u9Z*YdrY5F6Turtzcl_+usW->wVs_7$Vf%%=q}&?CkML z^?3}xk^lGosj-;}`t)H>P3ylK7&!Ei&i@Yo-QD|l|IfDmcl4k2{_o^3+}{7zPrNz) z{lss-G5-C^f8L3IjE1p9q;9DYG=in&aJ5(&i2VYDC-s;3gA?&D#^Yavl}3FdwS2`M z52Upy<@*(kKL<7Iz?E95*pN-9FGP#+3;ueXuYhZ~G<}@!X82mHEGe$K5G}1oOH*_F z5qT}{f49t0T zZB(y@6*)NeOEEy^OYt*R8G9V+i52U96{|j8bG%aea-1$y!t@l~EiK`3u~Z6g@GpvA zUYee!Ung{N&59abzEkITY3cZJy0Ptdo9?zc-ry)7R4QRT-fsPMtoi)4^T@b!2YNa+ zk>e9%&es#pT`j09&i}ak<)m{5*QIIqyJ@#+YhnKCk~$`xZ;v~7<*Q3ksK#r`ZLwR> zO0%*wG2=cm;kIqU?c})o>v*jAIrm++f#YrqW6d9Tdpthl-p;zWZmZl@xQ%dMoJsb7 zYAX5NwA;2yc%uOnB>8Sid9&jwGj77hmuALNrXZ!5<8vv+*o25nslNxXD`r#Ll+yM& z_dCKVP!sG9huvGw#?YI}*+lU##fDp~)~a%+;l0>ma8F;3(*>AywFsu^ZjvsForEPg zM|V?PN=dbRX?B9{_yuwVUYh07j&lRTQrMtTn&Gcz=mH}$ImRW<+3zN1xCAbKR{S(6 z-c=GR-9QYmq5|OksCLJs^X2%|c*;Y^r`?B+Pl{r7lX!OK9*u(SR?v39ZnFu(c;rf<+Lwxs<^mS&G9o}P(+Gdb?Q&lFJ1u_kq5Ex2Ea zHKY02RF*r=Ynz`eGtEuMm9P|4@*#MTL@=THiHXFs;;||7<7DD7K2J7acJ*&l$%?i9 za%sxedEE9ZTnU;bwF%k3Vrj}2F>OA@Wr3Iwkl_Bs01g~G=J)hBKC3@{SOdAUG?A+w z^Nx+BY8<9#V!8%Jf{ss3so!U(Olg1n%(+Jg2L}iA-{8Q$0ed$v@HxIt;s1{g92mH3 z;FIw2r{I6|X}|j4OLrYm|KA7S!Rs#$3=cSeuic}1-NHcm+M)Pwq6xWZqpU_vT^n_} zuIWz-#l;Nd>S2jL!H^H+mZNB(`@e6+J`W6hjp*ln;`jZ0{dV>5E#mu6?1Ryu_Xhbn z7=icj{XTx~3H9%6N_pe_yngPV#@eNyd%Ji>KX+W*4~pxM`2HSs^I3Jho6CZKhqw>2 zyw9uWK9f>jyT5(0r}jA|!u@{di9_m}Z*}em2c|_I;rG+(dRW{)2AX(rzY=@@Z;5$= z`yW-;hsE
    >{P{lJ?+UBL4*csH**^}n~m^#IK++#iaA@-_%2oA!C%^c==sBEpltQv=5O8nle=H|vwcWZ;HTgD{LMcee11Rv ze)HAAgCD)AKFs~m_mnoDy>I{K)AtH&HtsvH`TI9t7~1^Y&0ihb{Ef~3^7+?PC7Y-3 z8{Rs1-@w+>_w66~{rRoa_Z`@Jc$j{A@h745o1Y&>`gQUytm_AUNd5o$hxfnq@N2Ls zH}6qz4sSlO|K_I;z37(z@;9kMZoW9Q`KtQ-R`ppm=fROLZ>m~UcfZ`aj=C?)f9c`< z*eO;1C-nz>_mxlM<>e2l|KX=QKRCSkxffm?+^WC!!vCX2^%rSW zr`|pCmvf&v_=CeVszW@gKM6Zv?o$V!gAQ(fZsgU6)i{2y9lvvG{QltPr?`K=({c1( zNFBZBVf3EZ|I#Vy-CNZw!<(n}t3qM?MENg|>(P7p2o$Fq^pG0CKX_zoUX9@9Z|&F^ zUeaT@`Qp~8*IxL%_x%3ncna0! zn@j{5B zr~d$0L<$NmMi$5*-=MTS9H&~Xqbd7*kiU4v20aHAOgQA1!>mEBD+k3AIP1MXtQT@u z8r4#*98@X~7lL{@Y6OKwt`at)W_=}BfOB%+Yrq^lpw6yC?OB=ER6iasRwgGD`()nf z!2ZB zc$Yr^%swjT&+s~=Snj(99^~I)Rx|i{A97kSUH@drzMCJScYk_Fzq@bX^+EgY|262o z`~E@u?pp`x-3x>E-Jcn-@BYYu`)=<%Jlyxr&8PA5pT4UzFaO!MDL#FOc;$Ay{Hu4- zb7{Q1Ebr(c+FN(?ySluSF`oa@f$n&Ic<$jYc>Y&aBOV^2I@-e>x^36x8)E_SxUBtLuBk@83H> zGLgQA!~0cn|M#GMgZBQvR@bb!|0n9YDDGj+e^}iA%UFMZ#kp5~i{1ZT?EXK;?*BY? z|23+vCkAc#-=IE!V#wYf8FZhYRQI!YiSdm6ekyiMC>7GI z*Ec3y6X`}YKtKme7-=zZDXd=)B8UT7T2ZGTxZo{KPW5U^9T+$Vd;Dt$27Vam#bIJM zhQ487;Ai1`B{2R1Ux8){ev_hGgY^5?4$}AE$k%ra((kZthSbLW4!**k82aXcfsYT; zdHct3|1ARpU*>X#hUk5duZM=HoTVZ9eTBcT@U_9e|KlMl|DW;o=ZC1CKOZ6)_g!kq z3MryLw~xwscptrgmaiA~Q8_=wzyB(6asG^TEzGGnEA-JmXd~!d%_dWdFb9~+6=YO1^|2ep-arq2C|1v-KU-<@qH5B`!+ScaIem|t8nith86C= zeqi7R|NbLze{f*n@ALgn!@W9$evY621egDdcaiSlf8zUlSoZ)lde9?UJgCl=8mt5L z?*?DLkFP(%*B|5S$NBmRzJ8LgpXTdl`TECv{Q_VAg0FD+!F8Cg@8IiEzK-$ry?i~( z*RnSGvwozLZe(U`tZRK~Bc?CCTb+2!UAuoBd7_=+f4-)LE>rR~a7GTNJa;6nMj3{EN%44598!p5O0r_?02lS<2tfi1CH{Ct}ZE zwd14PH?t+o#3V6q)u?_gNNom`#q0rT^ru~6ez5|_q7-P+C~52M+$y;ctBY@MBQe_kZc%sQ)()+B{TVMnS-0 z{qW|Cs_8esJY0W^dSu|`UsG?se&3Hb6m{NGueiFN1CCbdKMWe3+da%}N6g5KoQ&cGj zf8c&-T~F#1tnZQ>oc&n)0WSX?PWit)V9LKIy?oWrfzA10=RC|1JEaM)Bn@8hz1C(!gc32JYogeno#e z^cCD6*w~jprQX>5tC((S^TnILI=uN#pird#F~?HOR`;cQtZwJ8`8Oj*t64d#mc%{k z-{%$a`>}mQ?_WE&Z{YRBAH50Jx261=e45_audZLmpY`{;wD_NWv(*!w{^(5@m9OjP zbw%lt|GE8o%Ruk{9UAz0HPrBKfA6;&=i!0mfAGDoGyRE9|H0_rrRHu}&2@k8zghlZ z9Jg1(z##0Wob( zc$+Di{{J?k^LqVt*t_(+-i>cnGa=8Jfq|6$iUQAHy#Cj(zxw)+s_84Q|IO=Pe*FUj zuf6`4uYX+a!Y{u5SFe9`;7jV9d2ZkbRZ~Eh_Ot5Wzf%AHXZ7zh>fdhy69@WRwe{bw z{(X!3cdz=F-KW>tz`#TMSe8&_esCYj9k8E&Z^(XrVjt_{)E)f)I_v%6jJwLu!QZke zYai-rp#T4ouO%)U-v8VD-IE|=tM3l&u}=TL-`82E|8dpGvBAzd{XbM6rVe!0>HqI< zrx!cv^bZPmCnLji-RSgzK?MCsC!PM9;ve683v~K#kIBH_9@FVR5cA_11)Ye{$)Akr zv_Yr;u+V9TF`a%XR^LZr@BdezlNZ1LMC|u}5xf7z*!{1??mrv5|HIh*pT+K9jose` z`YzGmLxXm`!acZWeEe?PKd>+Sb8)|o&=aXw?jsDPg*w}bPJxobifTs4wV^V6;9PhE zwASj^upBPU%(l>;yBc=(XeW)gt6A?i2nP0!+Ak*u>H2{|(o=$61N57q1Q=42REK-D z$^I7Hs|Ec7gQPG0JAD1vAn8YchkyU#AnDEhA^QC&UvoqB-030G!(JXD{pTv^snxX% z_uruE8=`u@kKg-YzW!Z)|Kt4rFAR~M{-X{XqkR2gzWxYbKgQR8z}Fw+>wm}Bf6CXN=j$i=`f0v?mal)z*Dvt(Rle>&zX}1QlkiSf&8X$G z^??JM2ezI9hpCqyJ^(BV`{BH#V5F)z}6E7zW5@%+wjn<>gBhg|J141p8M5<&kDv%_&hAU%@?-biRzcZxz9E4 zM%~0K2RDCx>wft1?_q~t+THEIn++$1^bh9KB)2fW-9IGr}y9d z>%qqHRM)G!hotKjsD!o#Hur4`visF=y1N^wlk8hR3FqSGzL!qn`KTsLb_I)kSS#x6 zx&VbARY!yS^nEGMq`QkflvexZ2lmHmKKM%yt7&Ks$a!nz)SNv`)7|(Moa({mx0ol4 zdNA$XgCG4UOvM1`A?2dj+3wY!u|8^BsKeU42NtvJS(;|<+pMaS*4O4e&O5XUK0}uu zB30T?7^T`bnoqx{b#O2LH>g{?`Gv!(FNf4R9<~GV-TQFyt9`j&kLJOT0<~5n3M>CR z)W^+pP^d)n=tKiThU zi|yWl)`H}MevM8a#$)8;n>G0uI{4f-*v+5pe&dGh`rX*|R|?ec#?#JgsmkMb?>8Hr zcI^SREC-QF3~bKtfBwl~=}QS~mbUZZ-Pn#ly06#mIFMGo)#rmQxZBEyyQ@6)-CrB( ziHhx9qfZL;I$~nceM@Z73W-Jcm4SAPE=XB)=XuecNn3Pot8Y4F_oaP<1LnZk#nrWM za2sRg5bQ&@Kf(S3L#DseeEM$+!Tu)m>9@3#@5|p|KK(20Wc>1LUqYMPJ*vxx)wGN8 z`UxV+hqlfdy52YdWcfKH%TK)a-2ZX#xs4$*YbgS+Y2x8+k>`7Wy*qv1JKB+FaCvD> zp05h>JRjIb8-_cz0mPP8ZD>5J*@CS$WZ*uhyeEbdZtn-w(p0n+~pv?r}H54T<_xsjvxz9g+4+??cs_}EUF&`c#$@KYi z_{;v07v{MGhn>a!MH3$Mr9Ob+D# zEJXV3SEcD@)A)aamfF+CeE+9kAz1>WG(NO-0L~62Jm9SSy4lZP17rBgA6mzb7diy- z0D-~909ppuspOSUZ~oQhr#62-O<(ZsL}=cd92M%n0_T}IHbKQ*>LI3cn zv=Sa**NS1`T7e!VFAi@$sS4TrjhA2i|8z0GV#;vF_gISi2afM4e{=r8=99x%*dZ+J z!mGNlU!=VY!?g(R6I)O1-}-tQ%G8*h*_2rX7nYYECMT1#!<&~ZXY|U?#CFopD?Z`o zU#qPT`e9ge81}WOM5=GzQl}4{POxR>;pUK{8};EN-S|5LsfwF}Kk)DDVjWIyjKf<` z9pW`>*2p8+K=T#SlKpcpe(wXZ?_VIDiCSK2g&x{cEq-~*l5+GnF+Y4OmHq73&}o`R zk>6=4GPN>=9=}9u{p+Eczj8O0BnR~|p7=v8{eH+32S(xL_nO$SfBi9_*)RV8?0pGf zRMpk+doyn)lVp+%BtT?yz(^97FxeACNlbtsU{Mf*pkYV`h-5RFAXutsz%qtZRIIec z8b4{ZE-kLbx`CijrHXZXm!XqVoYX(HLB)Q~AsL$aO*;g+36ZuIn^XVRA-7gUsto`X66mw91c3~g)K=5E=V zjKVZ~rKMb7^?_Z&d~$FJ$Z>^UwALD%q3t{$IgsD@>^xtK;sC4L=nh@x;j6|LxMDnb zlc6=ncpYVX3@t9R2AQ=E{&B*iPC&QIaDEdZ&C>46+4d)mlojL zoA^13l6tO?GnG0mY}_b4oUltidK$dH0E3%NK|iYx(KuJAc}IcRPCN{2ZDce$BO@dI z+^)H)9U7OVwRNzzhxcXqyMf?OW!Il1MT5=w?4!R+p#*v?T`?~r3BtXiTyr^ zN1W@F!(Ct!+$F-Tqn+Px{v{FaJ@Hh1Un1UtzApIvgS%}!{w0Zqj$Cvi-bsGm7w)Us zz~j))hJ%OSc`V_$ll0Tjx7@<-YYV^Vz98@J4CBcx#uI&vGQGsz8XqxHtYmZhKx!Mu z;sy6k54s)9y~+c3`!+tZ%D5Y8<%In;ez}+=-05#lK;1jQqj;Fc+X3)C9=z{|_PQq? z)48~0mZGeT$Fjm0E{w-E9YgTUc%vSPf;&oZe;sGIUyCzj4i?5?Ti3>+i~!I->PEi< z1mAUI7_`nFa>L&a!M#Orx04(C>_(zdCHMt}yoOMCAA&A{&R4NUz8?$jYlZap#bUaR z1aFHq(%&egxkhlW;pve#pzl1f$Y(B^cr^*XH4b>k5#}A}t*tTOXYkj?ID@~CyX?yN z7$Y6}DaseoK-Z#Tj1E)0XZJVtK#yH9X$6x^%G z3isUQ0^MAqmrl?t(Cs6ncL?qU(T00ll;OUOyKVe7{3gL&9%bZRBjg<&g?WBW`Y1=8 z2Cct3jdHvrxR+AftQ6?XqV#11CkS-1gtQ|B_f10jw;h=7WrEK;jChYa3|jXJ?)5yq z!5`BcW_&2eQPKqZxSxc-uL155<|jq@X*AsD>O7Xrc?|TAyx};>O1VY4Gc}zy@>72a z2RWH!uIuYjeq={khjx+?0!pdmH;7ebA&ol(zk7we z$|!t1!EBq6SBgM0S#Up0<$5YC^W;!opgO^f>Q}K}Ag^Rqm!CrY<#!b`{+5JqBK;1) zZdHtRXtLmT>tfdbLb<7iq@LxbcC$r(rMqXjsZB}9zdgxKP0PayV^4BZ1w(r$HwE!} zBR94GOhq}O^(;5FhkX`wXs2IpDp`_a8Y{_7og>LjO_Ah^z#h`EL?eBTq#FuyQRPDT z&5|6|osgdp{;;GQ{T%2r_c6lX6!g6y{CyY~9wYoqliU@Xvn1W&B-LEsG=^6R@!?!^ zy?{>w`3}+k6X^Mgy4?&<5p<24n0uap-$43>I(`dt?-KBK(kBe-YLi}}jz6p7e4*o@ zB{M_7_o;^NKj0rRe7=Am1Knr=cQSW_fG63^?K4!uN77uTx7T@6c$tLHl5oEY^?dd8 z%?w`~Z{Q(@&lAG$w2AG{_(7t#Rl;AD@V6xVZwy}}@Q2%O4o{cx@eJQB$i>ZI?oH7K zUIpO-y;U%83;cPfL=SX(H^m9M_fq)F68@Tm|C!;dg!cMe3b$)!ypMzrm+&kJFOu-- z4Bsu(r%DQMmhd$aeyfE4g5lGW40=y##(WR>9){m1@Z(=J)TcJd9i9pc(uNdb_J5)^ zX<3N!zuB^MO`xd>EfI*qo>umzdtoi%RGXxp8Eg#rYbzQ8fh86Bg*tj=bKMfK$%`nK zAh4`5z@NscXsG8;6!m1zTClr7_896H!sAA);j_fRlw2?gn{)cjU(c*>45D%6+)PVb z*e0_P_%8|DR@T>5`h&VHUD;mtG@w}3N|;? zR4-&>g;V0ji3@Tfnc?Pf7S=cNYGty1NUzlrspP36SlJOCWrtqFhe?0fI{?{09^cHacx= zgZF!YY!mhl;jkwHd>F_VvyE~dz$}#82RNDFbb^;d{A`8qeITD2f?R$%o#d5SygSJM zE`mR!@ZS;sCc$^e{|M#(CBR`Q%L{a(2*O^)#y%JZ0X_ufo^82`GM4-c2%kXm&837- zwP8Lp3C^)$e%!7H%kR5H|9XNT)CTSHxC-0lRl@&D_@|WLaVkeAIAbtnsxWtb6&n4)mc+~{!DgN~oKSc3vCV0CY`*|b5dk8*6@Ye*l z5!`FXdiB+?UV}8mXA$n#FrTFw(qBQag6suN_#g z7$=s?LvXkg>7_d{pA09`Ifwj937-n#Y!J>M{8A^|f=x7dZ{sw244h2`1c!t!h)`VUaPn~Cmo1OiZK=@q{p3M54@CS&_qXeHMdauM{ecp-1^1Mgz5YhVwBe&GrhMKZ{|^X1 zQ z6~P}6+(7V`0LQcO26WD4^Hv=0TRw`z`Rr&M+K>7Y{LfRAZvgkQZ`gROR}6#da79TV zyg%S)F+L$YognCys40q)OZfPBtXC<)3*xbU^Ww37i{i0fwFFnhV|niaSga^p;&HF> zHKlhXAdF2wI>P{_vT>Av^r|WRDuP#2yf%QN6y;uu_aK8dwmEy0;yp!h8^wPe;21^e zNWk*gJqY6n`T!QOdUi7ru0QR;{Z-z^C!fc%=!~xnW9`ra4W^%Mer3$w;$jXMftEV_WNOi z|LBYPe@W1h$lwKReoCZulHkBZq%%4Z_1ne)9IYr9CDJ^eh<4>FDgF|IS5dkafNY-J z0FceU4*_KRq+N-qPxopf>I3dg#QF3+fQ%RZPV~PbdiErQ(Md>mP!g`S=>R7wN=_1v zuaYEMZ<0{o@8TrXr@J%>_2=dh?oUF!yM=_WiAO#w0zN#S%`XIXJ-orBhsW)y#gZOg z9O>O9;CU?AWrK59XeT(&1N(Dp$gbI1g6jybC%A#&MuP1GHxb-Sa4W&x1m7UIpWtDF z#|XlQ6F?WiWP+m!77?69a52Fk!Bqs;5!^`dK7x-C+)8i&qCj20H^F@b4-h;?P}4}? zkD!-e8bKey@dV2V<LUU<$z?!IcEp5L`!aBf>#K)5qbzF6Z8@sO|XDq zDZv>8=Mh{?uz}z*f~yFwBe;>^eFPsPxRu~;f_n*mK=3fZqXZSw19cNjCg>$NnqUsW z@dV2V<LUU<$#Yr02Ru(qq;2RyPye8bM$6C_xwLp(Ya?O>jKHX#~p&&L>zyFi3C( z!8HWe6Kp5=Ai*sJw-Ve5AN)Rs1czY5|BIqSJnqUFJGJ@p<7ZVH;TuE@P z?qAE^l$_a?00n()L{dIe$oIxD}H!)_3*%+%#O z!!q!tT=`Bx^*PNDe|M>S%S`6fK(_Z((7>c~U9E#!6>b`gp`A@`vpz9M9qMH+;{uBy zuL?57uGSJ)YjUefNwuy?SrQkQ;YJH&P)vw;=+ToF`fOXOShp!!XS0@jZHp}T3IeZl zvF&C+(ctL=ZH8U}D`DjE-BEH8CD!&WTU}u~l9=y(#)}6~pQ*0GUCmA|fV#c4%oW-j zdifyPC1ey^zEXprAGDn{-gX0LZsrFqJhIi*dXc;3xY|6Zb*8KJVi$7;9jzC+4%u5T z(!k#y+6Ac(y>`;g4*J~NtXd;T;-+pv+?2P*WvUzj~e=zpD6 z;$$Q7PCjYU(;t**cWC>SYWN+Aoh6!4aXznc{gJ(VVgt2>Del%YpxMF&HS2o3+pVsL zf>sGYaRORnP*|?Lz*6OGjUuX?S?U5&I7+^J!Jg(?t-RhPE(E-9+omRwmRaZw zuJ)1~nxkDLPZ4_4-hsSvNm!@j8?MvAnBq@XLhh-gW8sl>EZ~ur5?83n-D*2na9o%4 zer6qOR^%v}JE5g7aEF;}X4jdE>yz;5e;Q+-DUxLb(^$Hun;8=NWDre~!4z$FcQfs% z$hrz-ZlZN4ODbr>Jc(_!s1x;HJj6vVZaMV=xA9;O43RRo^+=FZPa-O>fXV|X;*1Zs z>$9Zi31iP~k#CY^zNIN1(Cimg?V`ilbUeijkDdZFqw^mQH1<<4%-vbQczh!g+xZ@!|2&M< zr-j$^Qd1Q{>Zh$i+c^pQg$twYoP_-{+toJ7W66CpTy3+xmUDa~bd=UM+XtbZt}8(3 zd^d{#S~q+uHTF2rJ33P)8{P+!Y5JjwAfhTPZx&((9%|W#4 z`oj>eZlB8dEa?#Nh>PY}PQlQW)!$e;`1m*an_rB9pe~?xNNt;AYTINr@?L3~t8IqI zvIVbUOPbee5{B7#2DdkC*?R77TF>26>shJ4ToOr*4h9d-8LZ7hxJ$c z@zBlKmM`$OEDCJ{{zR=ERz2O}(j9JIyfK?}H5$Evt5B~QhP~Wi4%8naO|iCe&=*gV zr*#LeEIiUwcUxH+D@Jnn3Qlch<5{G^a-=A8q!}|9V|ZoVA%~$m#FY;(0R5r18H-um z6nVIadPbMATvxDM(`2Q)DB0$6+lKXMNMW?qM9b|am$hBg7Mkvn zW4T8-fDfLr)CF>5MjMR@3=k@Di}c6q^b5F$K5v$psIN5U+fr&H7b?5?h2J9F)%n(mdt=RR5qA_lu((MfwWLr3In4AT6PrCAiq33oqiV9Nxu4P{vBantqa5vQ%;4?0dr1J_Ni_t`qUIC`P3vR z_*5^HdukdKd#VpgJv9dkJ#{>kd1?_9d8!LaJT(~#Ja=%Y+((0E?Yb?=`pA~QGx{y2#1=`rrBJYGT%@f77Io_Bn=@m6wLaoxmGlzJY= z9Wl;&o{ym;0Ip|a3f-Iiv4-voq%Mm^9V9(|riA~M<4)3D08OP>r6$JEj{zCRN(rAP z;W07hcg5g-R>Xf2qvz@1I#we|9|p9^G6mh3bD~LC$z}LWc6HVD%6Az$HmG}}C}+B` z-nt*0+v{(yJr`xXfp%|{xokH?p)OZ6!^cJ$dR-yz#(41Wr%odb_Dj016`X}auD@{V zI&#r`3{7(yx(73zC<}U@!|=PD`|0I%C|5Ylx(g%d?YU1hLoecS&Cr|pk!FrxM>6#b zG^1>(nxUr=s~Prb^T`UOtq^S0mIyX%>+MFIKiaS?F*bvCx(aptxUQ6H`1{BoW`Rnw zPn)0``ZIukE$L~zL9(*XD+Zk(D@M6iDMq*5BB` zXzkT{*55dsf^zIV>2HX-CEe+7K)l}QZzT6;aeJY^v1TC3e*Zhzz4b_TZx6?s?cNR+ z!q1oVJ1&H=9BqEvZnO};5>Bs$x7e;y&@QJQ4i8Hn72d{!x9!CDuYVxr2YkOwi2snJ z&jA)s#tY%wKtDtX-zC}g1$~hkAsp-?td;af#P&O4(sxn$SWOe~zHl!kylppJ73r&7 ze`J%8|73bgNXKVM`Y4x4_(IjN?aTEgr10w`yj8+)m+%KA{7KVWd8z^rw5$;D*QNM> zR8g){5C2FCKdu@&AKb1mb5{xYC>y?;rsKsnykFJvOF`d5z`-W%G@*a51A0yazlGtY z4zs?38pGqVa2%OQ$20e@pfK^9_^m`o`b5am3R76TS6P!kBE zJb8W|dgUVkQSfXZQ7<(7vhs-kcf*kTaXd0};3RmFnpMT-K^5_*H0$>bJBB$JmZ z_FkSqvkq9Ukov@5RR!|+Mra{r)EH=}@mDhb^Z85+lIhDei}Lfpnm|Qxv7cp|nXP+( z+&*K@%&-c1=kC>zzRFZZ5H7eEzQHS@f>vS@f{n{o-VbY7k1ZOe z-%60nvokt>qjaB<|JMZV4h$de!0-$Qwu9e+;nf7|Dc))a%4>rhjE!xseo5g^5PX{A z{hr>pU%($&p_hh54=~cuy4O z^Ay47Dcws1_fYyjN1^=X*OYFM3*%=Kgkw4z+wfMqP~NV|h3UUb@Ol^0xxiGe3Ih7=fZj&B>ztcenH{=NPc@nG?r@&!F+H zAiw!bfMeM>j7B-ykD^gN`D37SF3R|U-iwpuy$8o&xrY->Cpea1Sq#eIR>YuO^5Phr zcUmd@juJ!$D&+jXDrHDg3T3>hXfleT%MTV zFgMaY$BpufQvl|m+&18KZj{$tP55m9bJ@J&#hX` zA2|H1V5p8T%H-`af0gz z-U*QL;3krzevsfJBtP9J0pkiKIpvH5lrzsxK>p|Q&TK4|0W4OOOUZw_3g@ZiQP>Y2 zQBE|*kP{tEa-sz!Ct6B!qWsi{A1XoG&tQ#Z9t?nSWm*4?{MATy_+x9`QSi0dks*K#u|E^7ZIJGpzec%diFd1$Rp9;cC~{m zyo!2onoYOZdMc@YuA*6F3rdmhWl5X@1RxF!=k*HLH7LKm(K;_B`OpY4HCkg7iWt6$ zT?}xhC|n4ZnUh1?4nD>Td3Jdfw&j?TaN~pgjSxGD3bq`Z-dtq;fGi+S@>{39p_fCi z=?cVq`);9Lho+qS446_l88Vtc#%5_QHQ|O&!q=7D0<|02thLC+Ei}Vrf2ah6Pm-iA zVex^r!_9T*JWKLxl(6Y%HyPjs(vU}}L?f9cE=tK+sZ6`uEs8q`hUei<{ovgl)^FFI zfC*1S$my_tZ;7%-Tt4-{3UKblDI^!Z+&o?%cwmg$+SqYdhSsHoTI0fWhU;{?iQO%O zWAn`5@~y39F5XIEK?*^7z=iUBZayKjD8d}X7I)Zu#P(T=9k^{IQDKF@A4^b zLwZi=XWcgI0(@f|`FC&Ffa`%XO}R&Lb~}_E*-CyHN|JPCDPwllPDpBwOB00O(a{Xs z%}=6i-}9kA2ohK3_pN_n5-LNn&bD%wmB?XeCYzt!WM|q+L}w08ZhQvP^rtP_N+JmW z(2_RO+d9Ne)d<(26;}(h5MV3zLk{+X7MANX6=E6|LOH=gq+lV8K_y6aZ-95Qm9DZ5 zAe<=%oyW zNuC1ixsLNH9jvUAs_Uw1suzs&Hux)-_!kAhmTL#A&83U0YXV-dPy$9~Q@IRADi@>R z$FAPA#=uq0)s1M37Sb^K(`)N_I8w-8+FGGsPDcSgVKUF0%spS~T1c2>Df&?v*^>I%XAdH8PL!S6p4 zg*0C2-u_Lek#48cu)lhvaG!sf)3{Tvqq}`>%hh4ng$}`fv z{CyG*d;cVE+t96CD!4N>v_p6{K|8@O>C}j@_`Ci z*3Ruq4kmkCV22WJ;$19vX!F}`XophwYmx8^C49VugN?Q{MhRq9JX~6Z^|flm0so6s z!#-=iie=6sID+6H)v(POrJ@W7wAy|5NfTA=hhP(<4 z^(w_^pHd3bD6EjuDwH-w(QTc&{-rVo(b2tlTXz8J0QMwf0QYwt_MT-7b_~HYf}Ugy z#>e$e#sK2=M#cc_Pp|8Rj6pC_QO5os*of>e-I0%yWDIg8nE;qjJA^ycS&~e^eCf`g z+l&QKn*Dxl8JK>iUvrR{^i@HS!|2xQg2;s*S)IHV1W8f@B z2p^!L433VU1!olk?lax-+m&-w@DCtgKwkZkcc&h{%h5{*kqJ&Rlc#6P(@NRC6fHz3- zZ;q+aignKv>1B!;6^H?1HN_H>u|}$Ma~(dy z-QW){hF7mAv8^+_tU$Nd3arJll&0lP@Wgh2#0pFz55gsSeM6uQLYC<8 z{Tc3>`lf(xB+tr1VT7Cb6Sb09@teLUz$W3s>O~QxH$=Gwlb}X7 z?~`L&gNOi>z>u^N#1xEZ0jOLBebO{l6i8MON$Nu;n=kuhXIcnd%xtJ(EXum*>iWj2 zCXj3}2~!w-P63U9rGN(*i9D%{CIN>`vk-(J`5=vM-O8ab3z)q`K?vAyz?0BfE(62`(a7OR$mTF;=N~?|m!zZy>1KTYP}v<0Q}V8x`;Go+tm8RJ>0HJJhx@ zWJfWBwW|u-bD|3GoiDIqdtOK3->2}k6n+bZ^ZPI#-G?!FKiOG)hvYlJZVS}!6SBkj z6~zO4`~aiLzF{G~2VYEZ63BIADM}^9TSD+Eir-?#b_kK3#G46nyNKCj7m>lA6WmPp z8egDvdq|E1)<5W%_w9HedVugx2_CoOJ$onNaHC+pWlzMcw-1ZhwLF1 z6D%WmA;Fm%+W&!f5TL$`2!gz^EuZW#vUr;`lwWvKL;FGeevGxlE`qO+-A0g00efqm z8s5_mabUeu9T;yc!CbP3INO2ot0-PQgvJV}}#v0TSRId;;6|k$j3T3gZDBc=^ZQx(Z<`=@@?G>=&^)TVTBlvq4 z%3Zuo_&yiPU%W^7hc1-EI7Ijn7s@|;MmU`JfxJN{;ZY=Cl}qr$D74o$n&b*d-k^x& z3d#tdL2?J>BzI6nat8`zpK3J80pt)IPq2*OEQ0e1)(~7qa23JzlH9>&f=?6N6+sT+ zFu`L4HAx=9OVCHKh~PAW2=0;O6pj#Fi2Jv&sUBS(AS;4AKvr&cR&V72^tTm6d4Ri< z(AETAEN#`$27-QH6TV(3Lqj_A_)Up!k41(phw%tA@*nX2}D);Z6G z?*a96)(LNsJgxM6)(JMS8kC;TI+Ja^JL`may*cZIvxxb&p3gerTz93y3*=`3@iNxw-|7KP^yjDMBseH)eQKZ*KK8zg$0Bz>f)Be#3_Y!pW6!UJyRFBCl{zrs+^h_oa_}ej-)jud56+1?wA| z;9yCQ(KW6REhijk*2I(kKp zK_WNO*;s@}Rk}N8vpA;Hv%%8_>2$_8Av8`KvU=97fupQNfncC+sp%984@U41EYEa8 zmE)_(%r4N6T})jLCl@BR5Iuy03}7?Z$HH7@V}p1&LB2md1K-Yq@XKg_T0uD9ud?rv zYQpPCFXVc{!P*6U*W9b%_vS+cA0zl1g3r-@7v8Ue@2=kh9kyF|jm|~hrg-m@KFLRv z@5giw@&)amJ1Ae+Cc*xl>zz1J?*#VS9>V*nxPKo=I6tRh-@oSq?2mJ!Z2-v!yJ#OD zjq@Ym<7ppXO8a*%Cmc_5!XAS zkm=9yS^s5b7X~sHX0a5IU_oIv`Rg#tI$72N-PPRGIF_-(Sbo4dwy8Q87y~G6Q+1e8 zS?hjhtYq)q~#(o1R z-FMk zXDPL!4CJIEyfMFUq7Z8kZB)+kYV4bm}{-pR=uTCGDx* zLV3hK=r8p_KKTz6`XEN=Z`}{#o=xSqNih2xSSU9Uqq5uv(UJFk8#hT zxKZ8Yn@IJJ5x%az{HC*0oRhhxxA3KqNN#;@9w*Jy`-Q&AruMU2@UGaOLxlNSuM6zt z=SlN-j0K-uM}FP$k`=$H0#9^Tw$Z&TTN0(e&SD(KktK=>flqp>LvPc`^|GpyB8-m; zf%h*J`gs6_Ltl7l>|9KByNv3x0IWDrKVMF?WuBTKjr~f&T_v~!f_tIhwxSs$j9I8N zW6{oPD!V-1V|p0h71H<~F2#p7PmtEaI(J{Rp5=GH`NcZl1M+F9&>{Uk}>AGw7wq~|Ngg?3A&GU{K^9?4&y%dRE5 zn$YKVp}lp!pDVSEzIKT`_z0_)U05q%J^|I3ILbFlXqPj{T|#t91-=&hWwg*QQ#6&7j8kJ3)GgN795!X*W-)LccLf&r)WsQ-_?4}bWeck~}QZdAbeQDkW zo)}7X89`-vQCM?;FQ1X{CnfxG34d6^ACmB2Nchhr{BCN~0%2T1o#&9-MeQ(Hn*T1N z^d5=tVyRu03;a|`aqR*RiEHz0^3&TkTFO6`#?9%>e~^&B+hQ#1r?~pQs7@HW3iYYZ zcL|hE$HhHbG?htD8&9AW*F~U4^y5_hyXzh*E&JRlK+r$X% z3{u|kuEs5(fdQHv>~|-vC1SldNcehTJ(1f&_Ls{xS^4L9AVVrkwuFzB@KF+;D&c2I z_?Z$uNWuq5c%rbjS2o36GQTXbE>ncu(v8re4lPaI>;H z!ki?w|2hd@OJ$MAp1qqg6`$fcXpDrXOZeFmK1{-goPsgu=w|*|EX_5}|KhpkzhR%K zpG&Oxx_5iSmwGuyVLX85*RR;`QT79^FVL2LPHN{TB>WKx|7C>ze0P1b=${<3^Q1D& zl<@CJ_*4m>Ea4>*K0(6Ik??%QdcQ309bNwid&g+$`?$nnZaA6s@ZW7NIURGy$$sC) zMEJ)2_WRbDx3YwJ>rLsK*6JKKN~l+fbe}$(B)%%if4Okxm@AweCkgldMu^a0__E1L2Z&tjcIexrqaS0Bf7`O(5T{~x~U z?5t${bqk{@#(j(74q-lv7kJh!@MRkHWq&%G94PG1(gYcbK@>JZx`P-LA&q!O+)rxP zVbc1ML3=v=7en7{10{c(#XW{d+bNt~N4h&6DDl@Yx)&Dj4`QYMdO_%~K19!X0`%hP zmnEDVi9FyD#=U;8q{sVlguE4tdx{u=U*OkH_fgdm?x;WR#5-Jl+y|sP>py&H-0>E5 za|bliZrpw9<(N!-6-#cXaLyG+ejaL<$yDbAa>r5FWJ=SA-1~b>s z_oXsSBDa1feIDhbM7Rr8g>kM*=h=Ec3Zpnq;SMQF>Z3SGCc^4Y#U{)vZed>4?_y%5 z^Yc1koK*_$45|MQvHn!4?&2OLO}y_D@)$3%-3O z0^g=lJ4FlMMDv96SN)7tUjzCG>v5eR`=ambT^4&?Md-)x5}*E+)-iqlzCfTMj{$vs zkjKG5%I9opt{3m#2MK3}ZUK)G?rHRLCR12Bwf8`3-vpXd2GiO0Y+;`wjuVx5Bvx1x z-1Ob62>BHW-5bHlssK3aA@3H={QJS-*gf&#>^UoQ*fx;f>0-^k3yuV8EruLARm7KyL=^HCn8h-0*N};bRrLm_9^oyi= ziQiv!Uw3xu^XXA(UwwdNcm@jfdz$&h3p~~??ah};Yr{f@>w9CJ#zdm4$8iyj1Zi*a zJo{ekE6H>I`Wtf@%fCU{xmaO8r++v071j$#yXou5ab+3NzQVpeMwrw43TKEO>1-xR zI9u#Xb8la&Q(u~E`_h?XUy>0!kJ?7>pS~8nF4q4Rsl9i1VEfAZb@96=--f(bBJgdI zu-;6OcxHkymk*+P>-qhi<{tgKmQXA@RqX}m$bBNb8 z;k#w1VrXFM?KM%lr@l<6Q(lDg;4=k&8)|X(JiLeV*%LjlvJ3r^-_1F7qEN1XHlIlA z#b80sYYxq?8nvUxA`g|?S3GNv)UNUwVx+TntFw^=D%&7oK7?{z8{s@IP1w)RCV7T-eJXA$}$Qv5$k?Up6A^EDEmDN?wb!WW-{K5z-&0akqwNxwl( zJ6>30MY;JA(*Cv|(G}&pJ4wDf&O*LhYy-JnXAvJPqC8JUK5B$~Y|=N6oAMhhoSEut zVu7$e3KP~HP3V_PdYE(62y{w&DI;+r^MJ0Ck|E4F>c3IBT;1d=@~TPZjQBB5>LYP( z(dUm+X|B+yze^>#>PY7#gO#rObbn#{t~oS5973E)l-Fg#ejpMbIBBn>ukWIK_uL3; zv$)q#g?-?0+80f*Xb1UBf3Xm6v0~OiusYX}&$^$Yy!7*5-M{)9a3asAMF`SJ*7OZq&O&kz@r}~=(GTFw5$WEg5AlIR;DacE4_4j&^Jm$P?sXP}{Sptc6yM(p zX3kTT46~m8jAiZZ>(yF15H6y-EGdxmL}nkK_-J#+g^a9ReO$@nWvk~>_w1bplUBOQ?zd~ z$?tj+IHf;^%v80_P;Svwrm8)S4>?wGg0t)^{f3UvMyO8}j{S5Dvh2G`$&E86Xop*7d zromeq8122fkuinW@2&M$*LZ{V-pPT+s*IVz`kIDXe_dTsmA|pJDd?{XX4D0OP0fu9 zGpYirhOH^^1FOm#yre0Y)KxE2wZl-^eyVm1>vw5&U3Ql0NCw}bsv`v}H7s1I<~pcN zofj-;_=E6%K-2Q3V4zlYFjl=q8=^XhJFhEN9UEASL-YA&G&MQnZZGrw;+|nq7stM_ zu6qt`Z>PTS-T9Sc*3nU0HYSIz_`p5I%SxlQ`99sT`-O(vf zUmyM-u6-wyzPrCj@%!@sl#|XemaU?&>L#4>68~rYb&?M4$^Ypiss|G)e}JN|PNid6d=+&N5Rd&3T=ti!e(TYU_VTa-l7iF z_?93A?2#9<9qVmpqv`eZ0 z<+XXjyODsumhDDTIL>xlsy*2pWQV=9=1}c#AiT8s`ePbKB~3@cc*C+!IHeUy3U&lrun_+dYAfZngglc${K%jQ@{%$ zHEh@AsjX%lEk_mZ^i+y+C!$ z1IRwMuu-*HutP>?IddLG=e%OonS{>y%sC#?T&Ox{bt#~;3W6?Goj^{zOm(gTc)99a zuNQDx1N+DbRP|UuCwu^D3svWX0GF!HrvWZko!D90>S8qt`%?=s=NfdjG3Q2f-cqc( zRzRAys%r~+Z75cwku$Z8%t>k5nG?SywN1rp%z8+3s~WSfOXXsC$NWT%fmYFes>Zqj z-mS(C#>$NfR}Oc(?31dFef-n~z5a#4K%+PH+*G4}v7;gJ{c0@l!r!Q|{8MGK8oQ@U zzOnlu=t(v90Kli!*bactsctvs>jT08J#We@&EL4Fxi(N2Y)TKeZa8!IV4$!|b;ID$ z_Nwk28e48)e(gQg&DrB^)xEMyY1}Yuwf(A_4}kYoH}9YiRX2TWW*74U_*oHB;lr{q z;H_fUMer|expF}NvM6Sy7^e>RNWu&4socl#cJF-awin4@g8y~GIt8O z2NbIbz?}}2#VPAj;DmA>7Oy7E=Z-#V!ZPkiQWJ1oM`u9`>ZM#*UsF?mHNFey@6wgw zA}4I%M24sd?c6a&P1sBYDlAq#z4b64>Qqg2m|E`{@~I z)kOT>k4`r#XW|Uv;?cs0NyO4$t0o@ijvuIrdNqDrtR^iZ_fMJo3UdDsa~~!5&x_T5 zgL%UBYQLN=W$jnW!|qi3P2-MswI9~(9<^VP#&>aDJutLURP2g$Vf2Md+iw+5{h-

    &o07 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 XuDPYLbJ;R{V&eY+JC64LyhRECDf7K} diff --git a/helm/DEVEL/pxp/ocaml-netstring-0.9.3-2.src.rpm b/helm/DEVEL/pxp/ocaml-netstring-0.9.3-2.src.rpm deleted file mode 100644 index 3c20f54f269d18b4e608a38d10e85e23c2e53bd1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 134883 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 Makefile.trick -# Ugly trick: replace "findlib" by "cp" -make -f Makefile.trick install "TRICK=cp -f --target-directory=${DIR_INSTALL}" -# Reference to obsolete CGI and BASE64 packages -for CMD in cgi base64 ; do - cat Makefile | sed "s#[_A-Za-z\(\)\$]* install $CMD #\$(TRICK) #" > Makefile.trick - DIR="${RPM_BUILD_ROOT}/%{dir_sitelib}/${CMD}" - install -m 755 -d "${DIR}" - make -f Makefile.trick "install-${CMD}" "TRICK=cp -f --target-directory=${DIR}" -done - -# Move doc files to root, if needed -for F in %{files_doc} ; do test -f "./doc/${F}" && mv -f "./doc/${F}" . ; done - -%clean -#if test `dirname "${RPM_BUILD_ROOT}"` != "/" ; then rm -rf "${RPM_BUILD_ROOT}" ; fi - -%files -%defattr(-,root,root) -%doc %{files_doc} -/%{dir_sitelib}/%{toolname} -# Reference to obsolete CGI and BASE64 packages -/%{dir_sitelib}/cgi -/%{dir_sitelib}/base64 - -%changelog -* Wed Sep 6 2000 Olivier Montanuy -- attempt to install cgi and base64 modules, for obsolete Makefiles - -* Fri Sep 1 2000 Olivier Montanuy -- created and tested package - diff --git a/helm/DEVEL/pxp/ocaml-pxp-1.0-1.i386.rpm b/helm/DEVEL/pxp/ocaml-pxp-1.0-1.i386.rpm deleted file mode 100644 index 3dac2d9dddd77ad834634eb6532a222909cb81bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 986080 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�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%0DW$vhvSd~TSnk3hCcLn^g5vTPkasz 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%0A-cf?HQ>*y+L6?07Q7Ch%!7(?FO~0* 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�= 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

    8-Yvg+LkN15I%n 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 z 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

    G$ovQf5W>2JY&I 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⪻9?_GsL(5%}6)zXt+mvf(Sg44$6HX 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�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

    5rnzm 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

    &Awd-6==$nam%jDlb!2gB)(>wF+3-* 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 diff --git a/helm/DEVEL/pxp/ocaml-pxp.spec b/helm/DEVEL/pxp/ocaml-pxp.spec deleted file mode 100644 index ee2080d94..000000000 --- a/helm/DEVEL/pxp/ocaml-pxp.spec +++ /dev/null @@ -1,73 +0,0 @@ -%define toolname pxp - -Summary: OCAML PXP XML library -Name: ocaml-%{toolname} -Version: 1.0 -Release: 1 -Copyright: GPL-like -Group: Development/Languages -Source: http://www.ocaml-programming.de/packages/%{toolname}-%{version}.tar.gz -Vendor: Gerd Stolpmann -Url: http://www.ocaml-programming.de/packages/documentation/%{toolname}/ -Prereq: fileutils, ocaml, ocaml-findlib, ocaml-netstring -Requires: fileutils, ocaml, ocaml-netstring - -%define dir_sitelib usr/lib/ocaml/site-lib -%define files_doc LICENSE README INSTALL SPEC EXTENSIONS - -BuildRoot: /tmp/root-%{name} - -%description -PXP is a validating parser for XML-1.0 written entirely in Objective Caml. -PXP stands for Polymorphic XML parser, emphasizes its most useful property: -the API is polymorphic and can be configured such that different objects are -used to store different types of elements. -PXP was formerly known as "Markup". - -%prep -%setup -n %{toolname} -make clean - -%build -make all -make opt - -%install -# Install binary, libs, manuals - -DIR_INSTALL="${RPM_BUILD_ROOT}/%{dir_sitelib}/%{toolname}" -install -m 755 -d "${DIR_INSTALL}" -# Install in non-standard directory -# replace "$(OCAMLFIND) install" or "ocamlfind install" -cat Makefile | sed "s#[_A-Za-z\(\)\$]* install \$(NAME)#\$(TRICK)#" > Makefile.trick -# Ugly trick: replace "findlib" by "cp" -make -f Makefile.trick install "TRICK=cp -f --target-directory=${DIR_INSTALL}" - -# Move doc files to root, if needed -for F in %{files_doc} ; do test -f "./doc/${F}" && mv -f "./doc/${F}" . ; done - -# HTML manual -if test -d doc/manual/html ; then mv doc/manual/html htmlman; else mkdir htmlman ; fi - - -# Create a symbolic link to version-specific HTML manual -%post -cd /usr/doc/HTML/ -if test -L "%{name}" ; then rm -f "%{name}" ; fi -if test ! -e "%{name}" ; then ln -s "../%{name}-%{version}/htmlman" "%{name}" ; fi - -%postun -cd /usr/doc/HTML/ -if test "$1" = "0" -a -L %{name} ; then rm -f %{name} ; fi - -%clean -if test `dirname "${RPM_BUILD_ROOT}"` != "/" ; then rm -rf "${RPM_BUILD_ROOT}" ; fi - -%files -%defattr(-,root,root) -%doc %{files_doc} htmlman examples -/%{dir_sitelib}/%{toolname} - -%changelog -* Fri Sep 1 2000 Olivier Montanuy -- created and tested package diff --git a/helm/DEVEL/pxp/pxp-1.0.tar.gz b/helm/DEVEL/pxp/pxp-1.0.tar.gz deleted file mode 100644 index 9f6e01955aac83a9fbb02ab9d3da420afe169512..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 484568 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%0AhP}uFTImq0Y9#WeEz| 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%0AoWJfARdMluZtW%!B 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%0DIeK@WITz`WU+g>KAzMq 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

    -The &f; library provides a scheme to manage reusable software -components (packages), and includes tools that support this -scheme. Packages are collections of OCaml modules for which -metainformation can be stored. The packages are kept in the filesystem -hierarchy, but with strict directory structure. The library contains -functions to look the directory up that stores a package, to query -metainformation about a package, and to retrieve dependency -information about multiple packages. There is also a tool that allows -the user to enter queries on the command-line. In order to simplify -compilation and linkage, there are new frontends of the various OCaml -compilers that can directly deal with packages. -

    - -

    -Together with the packages metainformation is stored. This includes a -version string, the archives the package consists of, and additional -linker options. Packages can also be dependent on other -packages. There is a query which finds out all predecessors of a list -of packages and sorts them topologically. The new compiler frontends -do this implicitly. -

    - -

    -Metainformation can be conditional, i.e. depend on a set of -predicates. This is mainly used to be able to react on certain -properties of the environment, such as if the bytecode or the native -compiler is invoked, if the application is multi-threaded, and a few -more. If the new compiler frontends are used, most predicates are -found out automatically. -

    - -

    -There is special support for scripts. A new directive, "#require", -loads packages into scripts. Of course, this works only with newly -created toploops which include the &f; library. -

    - - - - Where to get findlib -

    -The manual of &f; is available online. -You can download &f; here. -

    -
    - diff --git a/helm/DEVEL/pxp/pxp/doc/EXTENSIONS b/helm/DEVEL/pxp/pxp/doc/EXTENSIONS deleted file mode 100644 index a95683910..000000000 --- a/helm/DEVEL/pxp/pxp/doc/EXTENSIONS +++ /dev/null @@ -1,50 +0,0 @@ -****************************************************************************** -Extensions of the XML specification -****************************************************************************** - - -============================================================================== -This document -============================================================================== - -This parser has some options extending the XML specification. Here, the options -are explained. - -============================================================================== -Optional declarations instead of mandatory declarations -============================================================================== - -The XML spec demands that elements, notations, and attributes must be declared. -However, there are sometimes situations where a different rule would be better: -If there is a declaration, the actual instance of the element type, notation -reference or attribute must match the pattern of the declaration; but if the -declaration is missing, a reasonable default declaration should be assumed. - -I have an example that seems to be typical: The inclusion of HTML into a meta -language. Imagine you have defined some type of "generator" or other tool -working with HTML fragments, and your document contains two types of elements: -The generating elements (with a name like "gen:xxx"), and the object elements -which are HTML. As HTML is still evolving, you do not want to declare the HTML -elements; the HTML fragments should be treated as well-formed XML fragments. In -contrast to this, the elements of the generator should be declared and -validated because you can more easily detect errors. - -The following two processing instructions can be included into the DTD: - -- - - - References to unknown element types and notations no longer cause an error. - The element may contain everything, but it must be still well-formed. It may - have arbitrary attributes, and every attribute is treated as an #IMPLIED - CDATA attribute. - -- - - - References to unknown attributes inside one of the enumerated elements no - longer cause an error. Such an attribute is treated as an #IMPLIED CDATA - attribute. - If there are several "optional-attribute-declarations" PIs, they are all - interpreted (implicitly merged). - diff --git a/helm/DEVEL/pxp/pxp/doc/EXTENSIONS.xml b/helm/DEVEL/pxp/pxp/doc/EXTENSIONS.xml deleted file mode 100644 index e64d06152..000000000 --- a/helm/DEVEL/pxp/pxp/doc/EXTENSIONS.xml +++ /dev/null @@ -1,62 +0,0 @@ - - -%common; - - -up'> - - -%config; - -]> - - - - - This document -

    This parser has some options extending the XML specification. Here, the -options are explained. -

    -
    - - - Optional declarations instead of mandatory declarations - -

    The XML spec demands that elements, notations, and attributes must be -declared. However, there are sometimes situations where a different rule would -be better: If there is a declaration, the actual instance of the -element type, notation reference or attribute must match the pattern of the -declaration; but if the declaration is missing, a reasonable default declaration -should be assumed.

    - -

    I have an example that seems to be typical: The inclusion of HTML into a -meta language. Imagine you have defined some type of "generator" or other tool -working with HTML fragments, and your document contains two types of elements: -The generating elements (with a name like "gen:xxx"), and the object elements -which are HTML. As HTML is still evolving, you do not want to declare the HTML -elements; the HTML fragments should be treated as well-formed XML fragments. In -contrast to this, the elements of the generator should be declared and -validated because you can more easily detect errors.

    - -

    The following two processing instructions can be included into the DTD:

    -
      -
    • ]]> - References to unknown element types and notations no longer cause an - error. The element may contain everything, but it must be still - well-formed. It may have arbitrary attributes, and every attribute is - treated as an #IMPLIED CDATA attribute.

      -
    • -
    • ]]> - References to unknown attributes inside one of the enumerated elements - no longer cause an error. Such an attribute is treated as an #IMPLIED - CDATA attribute. -

      - -

      If there are several "optional-attribute-declarations" PIs, they are all -interpreted (implicitly merged).

      -
    • -
    -
    -
    diff --git a/helm/DEVEL/pxp/pxp/doc/INSTALL b/helm/DEVEL/pxp/pxp/doc/INSTALL deleted file mode 100644 index 9a49a2217..000000000 --- a/helm/DEVEL/pxp/pxp/doc/INSTALL +++ /dev/null @@ -1,154 +0,0 @@ -****************************************************************************** -INSTALL - PXP, the XML parser for O'Caml -****************************************************************************** - - -============================================================================== -The "pxp" package -============================================================================== - ------------------------------------------------------------------------------- -Prerequisites ------------------------------------------------------------------------------- - -PXP requires that the netstring package [1] is already installed. PXP works -only with O'Caml 3.00 (the support for 2.04 has been dropped). The installation -procedure defined in the Makefile requires findlib [2] to work [3]. - ------------------------------------------------------------------------------- -Configuration ------------------------------------------------------------------------------- - -It is not necessary to configure PXP; but you can switch off the UTF-8 support -by setting the variable - -UTF8_SUPPORT = no - -in Makefile.conf. In this case, the UTF-8 modules are not even compiled. - By -default, the UTF-8 support is enabled. - -Note: Compiling the UTF-8 modules lasts 10 minutes on my 400 Mhz Pentium II; if -this is too long, you can set UTF8_SUPPORT to "no". - ------------------------------------------------------------------------------- -Compilation ------------------------------------------------------------------------------- - -The Makefile defines the following goals: - -- make all - compiles with the bytecode compiler and creates the files pxp_types.cma, - pxp_lex_iso88591.cma, pxp_lex_utf8.cma (*), pxp_engine.cma, and pxp_utf8.cmo - (*). The (*) files are not built if the UTF-8 support is switched off. - -- make opt - compiles with the native compiler and creates the files pxp_types.cmxa, - pxp_lex_iso88591.cmxa, pxp_lex_utf8.cmxa (*), pxp_engine.cmxa, and - pxp_utf8.cmx (*). The (*) files are not built if the UTF-8 support is - switched off. - ------------------------------------------------------------------------------- -Installation ------------------------------------------------------------------------------- - -The Makefile defines the following goals: - -- make install - installs the bytecode archives, the interface definitions, and if present, - the native archives in the default location of findlib as package "pxp" - -- make uninstall - removes the package "pxp" - -- make markup-install - installs the Markup compatibility API as package "markup" - -- make markup-uninstall - removes the package "markup" - ------------------------------------------------------------------------------- -Usage with the help of "findlib" ------------------------------------------------------------------------------- - -You can refer to the parser as the findlib package "pxp": - -ocamlfind ocamlc -package pxp ... - -By default, the UTF-8 support modules will be linked in. If you do not need -them, you may define the predicate "pxp_without_utf8", which causes that the -UTF-8 relevant parts are not linked with your program; the difference in size -is about 1 MB: - -ocamlfind ocamlc -package pxp -predicates pxp_without_utf8 ... - -Note that you can also reduce the size of the resulting executable by -specifying Netstring-related predicates (e.g. netstring_only_iso); see the -documentation of Netstring. - ------------------------------------------------------------------------------- -Linking with the archives directly ------------------------------------------------------------------------------- - -If you need UTF-8 support, you must link your program as follows: - -ocamlc ... pxp_types.cma pxp_lex_iso88591.cma pxp_lex_utf8.cma - pxp_engine.cma pxp_utf8.cmo ... - -If you do not need UTF-8, the following suffices: - -ocamlc ... pxp_types.cma pxp_lex_iso88591.cma pxp_engine.cma ... - - - -============================================================================== -The examples -============================================================================== - -In the "examples" directory you find several applications of PXP. They require -that PXP has been installed using findlib. See the Makefiles in the directories -for descriptions of "make" goals. - -============================================================================== -Trouble shooting -============================================================================== - ------------------------------------------------------------------------------- -Solaris ------------------------------------------------------------------------------- - -The "make" utility of Solaris does not work properly enough; there is a bug in -it that prevents the so-called suffix rules from being recognized. There are -two solutions: - -- Install GNU make and use it instead of Solaris make. This is the recommended - way to solve the problem, as GNU make can process almost every Makefile from - open source projects, and you will never have problems with building - software again. - -- Add the following lines to Makefile.code: - - %.cmx: %.ml - $(OCAMLOPT) -c $< - - %.cmo: %.ml - $(OCAMLC) -c $< - - %.cmi: %.mli - $(OCAMLC) -c $< - - %.ml: %.mll - ocamllex $< - - - - --------------------------- - -[1] see http://www.ocaml-programming.de/packages/documentation/netstring - -[2] see http://www.ocaml-programming.de/packages/documentation/findlib/ - -[3] Findlib is a package manager, see the file ABOUT-FINDLIB. - - - diff --git a/helm/DEVEL/pxp/pxp/doc/INSTALL.xml b/helm/DEVEL/pxp/pxp/doc/INSTALL.xml deleted file mode 100644 index ac7832dbb..000000000 --- a/helm/DEVEL/pxp/pxp/doc/INSTALL.xml +++ /dev/null @@ -1,171 +0,0 @@ - - -%common; - -PXP"> - -]> - - - The "pxp" package - Prerequisites -

    -&m; requires that the netstring package - is already installed. &m; works -only with O'Caml 3.00 (the support for 2.04 has been dropped). -The installation -procedure defined in the Makefile requires findlib to workFindlib is a -package manager, see the file ABOUT-FINDLIB.. -

    -
    - - Configuration -

    -It is not necessary to configure PXP; but you can switch off the UTF-8 -support by setting the variable - - -UTF8_SUPPORT = no - - -in Makefile.conf. In this case, the UTF-8 modules are not even compiled. -- By default, the UTF-8 support is enabled. -

    - -

    -Note: Compiling the UTF-8 modules lasts 10 minutes on my 400 Mhz Pentium II; -if this is too long, you can set UTF8_SUPPORT to "no".

    -
    - - Compilation -

    -The Makefile defines the following goals: -

    -
      -
    • -

      make all

      -

      compiles with the bytecode compiler and creates the files -pxp_types.cma, pxp_lex_iso88591.cma, pxp_lex_utf8.cma (*), pxp_engine.cma, -and pxp_utf8.cmo (*). The (*) files are not built if the UTF-8 support -is switched off.

      -
    • -
    • -

      make opt

      -

      compiles with the native compiler and creates the files -pxp_types.cmxa, pxp_lex_iso88591.cmxa, pxp_lex_utf8.cmxa (*), pxp_engine.cmxa, -and pxp_utf8.cmx (*). The (*) files are not built if the UTF-8 support -is switched off.

      -
    • -
    -
    - - Installation -

    -The Makefile defines the following goals:

    -
      -
    • -

      make install

      -

      installs the bytecode archives, the interface definitions, and if -present, the native archives in the default location of findlib as -package "pxp" -

      -
    • -
    • -

      make uninstall

      -

      removes the package "pxp"

      -
    • -
    • -

      make markup-install

      -

      installs the Markup compatibility API as package "markup"

      -
    • -
    • -

      make markup-uninstall

      -

      removes the package "markup"

      -
    • -
    -
    - - - Usage with the help of "findlib" -

    You can refer to the parser as the findlib package "pxp": - - -ocamlfind ocamlc -package pxp ... - - -By default, the UTF-8 support modules will be linked in. If you do not need -them, you may define the predicate "pxp_without_utf8", which causes that the -UTF-8 relevant parts are not linked with your program; the difference in size -is about 1 MB: - - -ocamlfind ocamlc -package pxp -predicates pxp_without_utf8 ... - - -Note that you can also reduce the size of the resulting executable by -specifying Netstring-related predicates (e.g. netstring_only_iso); see the -documentation of Netstring. -

    -
    - - - Linking with the archives directly -

    If you need UTF-8 support, you must link your program as follows: - - -ocamlc ... pxp_types.cma pxp_lex_iso88591.cma pxp_lex_utf8.cma - pxp_engine.cma pxp_utf8.cmo ... - - -If you do not need UTF-8, the following suffices: - - -ocamlc ... pxp_types.cma pxp_lex_iso88591.cma pxp_engine.cma ... - - -

    -
    - -
    - - The examples -

    -In the "examples" directory you find several applications of &m;. They require -that &m; has been installed using findlib. See the Makefiles in the -directories for descriptions of "make" goals. -

    -
    - - Trouble shooting - Solaris -

    -The "make" utility of Solaris does not work properly enough; there is a bug -in it that prevents the so-called suffix rules from being recognized. There -are two solutions:

    -
      -
    • Install GNU make and use it instead of Solaris make. This is -the recommended way to solve the problem, as GNU make can process almost -every Makefile from open source projects, and you will never have problems -with building software again.

    • -
    • Add the following lines to Makefile.code: - -%.cmx: %.ml - $(OCAMLOPT) -c $< - -%.cmo: %.ml - $(OCAMLC) -c $< - -%.cmi: %.mli - $(OCAMLC) -c $< - -%.ml: %.mll - ocamllex $< - -

    • -
    -
    -
    -
    \ No newline at end of file diff --git a/helm/DEVEL/pxp/pxp/doc/Makefile b/helm/DEVEL/pxp/pxp/doc/Makefile deleted file mode 100644 index 0ed12741c..000000000 --- a/helm/DEVEL/pxp/pxp/doc/Makefile +++ /dev/null @@ -1,43 +0,0 @@ -.PHONY: all -all: README INSTALL ABOUT-FINDLIB SPEC PRERELEASE EXTENSIONS - -README: README.xml common.xml config.xml - readme -text README.xml >README - -INSTALL: INSTALL.xml common.xml config.xml - readme -text INSTALL.xml >INSTALL - -ABOUT-FINDLIB: ABOUT-FINDLIB.xml common.xml config.xml - readme -text ABOUT-FINDLIB.xml >ABOUT-FINDLIB - -SPEC: SPEC.xml common.xml config.xml - readme -text SPEC.xml >SPEC - -EXTENSIONS: EXTENSIONS.xml common.xml config.xml - readme -text EXTENSIONS.xml >EXTENSIONS - -PRERELEASE: PRERELEASE.xml common.xml config.xml - readme -text PRERELEASE.xml >PRERELEASE - -config.xml: - touch config.xml - -common.xml: - ln -s dist-common.xml common.xml - -.PHONY: clean -clean: - -.PHONY: CLEAN -CLEAN: clean - $(MAKE) -C manual CLEAN - -.PHONY: distclean -distclean: clean - rm -f *~ - $(MAKE) -C manual distclean - -.PHONY: symlinks -symlinks: - ln -s ../examples/readme/readme.dtd . - diff --git a/helm/DEVEL/pxp/pxp/doc/PRERELEASE b/helm/DEVEL/pxp/pxp/doc/PRERELEASE deleted file mode 100644 index bc46cd059..000000000 --- a/helm/DEVEL/pxp/pxp/doc/PRERELEASE +++ /dev/null @@ -1,103 +0,0 @@ -****************************************************************************** -README - PXP, the XML parser for O'Caml -****************************************************************************** - - -============================================================================== -Pre-release of PXP, the XML parser for O'Caml -============================================================================== - -PXP is the new, completely revised and partly rewritten validating XML parser -for O'Caml; the old name, "Markup", has been dropped. The current version of -PXP is still a bit experimental because it is not fully tested; however, it is -now stable enough to be used in experimental applications. - -PXP will retain most parts of Markup's API; the name PXP emphasizes the -strengths of the API: it is the Polymorphic XML Parser. The document objects -representing the parsed file have an interesting polymorphism which allows that -the user of the parser can control which kind of objects are actually created. -The current API supports the element type as criterion for object/class -selection; future APIs will extend this concept such that arbitrary criterions -are possible (e.g. you may want to have different classes for different -namespaces). - -The current development goals of PXP are: - -- Full XML-1.0 conformance: The current pre-release is now very close to - strict XML-1.0 conformance. The only bigger difference to the standard is - that PXP sometimes accepts DTDs as legal while the standard forbids them - (non-deterministic content models). - One of the more important improvements since 0.2.10 is the possibility to - represent XML documents internally as UTF-8 strings, not only as ISO-8859-1 - strings. Thanks to Claudio Sacerdoti Coen who contributed a special lexer - preprocessor hiding the details of the UTF-8 encoding in the lexer - definitions. - -- Correctness of validation: The well-formedness and valididity constraints - must be implemented as correct as possible. The last stable release had - already a regression test covering many aspects of XML. The test suite will - be extended. - -- Parsing performance: It should be possible to process large amounts of data - in a reasoable period of time. The last stable release had many stages of - processing that wasted time. - The current pre-release is already 30 per cent faster than 0.2.10. - -- Simplicity of usage: Unlike parsers basing on imperative languages and DOM, - the usage of PXP should be simple, even for complex tasks. The current - parser API has already many advantages over DOM; especially it is well - integrated into the functional and object-oriented language O'Caml. You do - not have to deal with artificial representations like "node lists" while the - programming environment already provides good support for list structures. - The fact that O'Caml allows a functional programming style is interesting - for programs transforming XML trees. - -============================================================================== -Download the PXP pre-release -============================================================================== - -The current pre-release is available under -http://www.ocaml-programming.de/packages/pxp-pre-0.99.8.tar.gz [1]. There is -currently no documentation for this version of the software; it is recommended -to use the Markup manual [2] and compare it with the current module interfaces. - -Please note that this is work in progress; it may still contain bugs and -irregularities. - -The parser works only with OCaml-3. The parser needs the netstring package [3], -at least version 0.9.1. - -I am very interested in your opinion to PXP; please contact me [4]. - -============================================================================== -Author, Credits, Copying -============================================================================== - -PXP has been written by Gerd Stolpmann [5]; it contains contributions by -Claudio Sacerdoti Coen. You may copy it as you like, you may use it even for -commercial purposes as long as the license conditions are respected, see the -file LICENSE coming with the distribution. It allows almost everything. - -============================================================================== -Where to find the stable release -============================================================================== - -Here. [6] - - --------------------------- - -[1] see http://www.ocaml-programming.de/packages/pxp-pre-0.99.8.tar.gz - -[2] see http://www.ocaml-programming.de/packages/documentation/markup/manual - -[3] see http://www.ocaml-programming.de/packages/documentation/netstring - -[4] see mailto:gerd@gerd-stolpmann.de - -[5] see mailto:gerd@gerd-stolpmann.de - -[6] see http://www.ocaml-programming.de/packages/documentation/markup - - - diff --git a/helm/DEVEL/pxp/pxp/doc/PRERELEASE.xml b/helm/DEVEL/pxp/pxp/doc/PRERELEASE.xml deleted file mode 100644 index f155abd96..000000000 --- a/helm/DEVEL/pxp/pxp/doc/PRERELEASE.xml +++ /dev/null @@ -1,116 +0,0 @@ - - -%common; - - -up'> - - -%config; - -]> - - - - Pre-release of PXP, the XML parser for O'Caml - -

    PXP is the new, completely revised and partly rewritten -validating XML parser -for O'Caml; the old name, "Markup", has been dropped. The current version -of PXP is still a bit experimental because it is not fully tested; however, -it is now stable enough to be used in experimental applications. -

    - -

    PXP will retain most parts of Markup's API; the name PXP -emphasizes the strengths of the API: it is the Polymorphic XML Parser. -The document objects representing the parsed file have an interesting -polymorphism which allows that the user of the parser can control -which kind of objects are actually created. The current API supports -the element type as criterion for object/class selection; future APIs will -extend this concept such that arbitrary criterions are possible -(e.g. you may want to have different classes for different namespaces). -

    - -

    The current development goals of PXP are:

    - -
      -
    • Full XML-1.0 conformance: The current pre-release -is now very close to strict XML-1.0 conformance. The only bigger -difference to the standard is that PXP sometimes accepts DTDs as legal -while the standard forbids them (non-deterministic content models).

      - -

      One of the more important improvements since 0.2.10 is the possibility to -represent XML documents internally as UTF-8 strings, not only as ISO-8859-1 -strings. Thanks to Claudio Sacerdoti Coen who contributed a special lexer -preprocessor hiding the details of the UTF-8 encoding in the lexer definitions. -

      -
    • - -
    • Correctness of validation: The well-formedness -and valididity constraints must be implemented as correct as possible. -The last stable release had already a regression test covering many -aspects of XML. The test suite will be extended.

      -
    • - -
    • Parsing performance: It should be possible to -process large amounts of data in a reasoable period of time. The last -stable release had many stages of processing that wasted time.

      - -

      The current pre-release is already 30 per cent faster than -0.2.10.

      -
    • - -
    • Simplicity of usage: Unlike parsers basing on -imperative languages and DOM, the usage of PXP should be simple, even -for complex tasks. The current parser API has already many advantages -over DOM; especially it is well integrated into the functional and -object-oriented language O'Caml. You do not have to deal with -artificial representations like "node lists" while the programming -environment already provides good support for list structures. The -fact that O'Caml allows a functional programming style is interesting -for programs transforming XML trees.

      -
    • -
    -
    - - - Download the PXP pre-release - -

    The current pre-release is available under - -&url.gps-ocaml-download;/pxp-pre-0.99.8.tar.gz. There is currently no -documentation for this version of the software; it is recommended to use the Markup manual and compare it with the current -module interfaces.

    - -

    Please note that this is work in progress; it may still contain bugs -and irregularities.

    - -

    The parser works only with OCaml-3. The parser needs the netstring package, at least version 0.9.1. -

    - -

    I am very interested in your opinion to PXP; please contact me.

    -
    - - - Author, Credits, Copying -

    -PXP has been written by &person.gps;; it contains contributions by -Claudio Sacerdoti Coen. You may copy it as you like, -you may use it even for commercial purposes as long as the license conditions -are respected, see the file LICENSE coming with the distribution. It allows -almost everything. -

    -
    - - - Where to find the stable release -

    Here.

    -
    - -
    - diff --git a/helm/DEVEL/pxp/pxp/doc/README b/helm/DEVEL/pxp/pxp/doc/README deleted file mode 100644 index b7ad5de59..000000000 --- a/helm/DEVEL/pxp/pxp/doc/README +++ /dev/null @@ -1,247 +0,0 @@ -****************************************************************************** -README - PXP, the XML parser for O'Caml -****************************************************************************** - - -============================================================================== -Abstract -============================================================================== - -PXP is a validating parser for XML-1.0 which has been written entirely in -Objective Caml. - -PXP is the new name of the parser formerly known as "Markup". PXP means -"Polymorphic XML parser" and emphasizes its most useful property: that the API -is polymorphic and can be configured such that different objects are used to -store different types of elements. - -============================================================================== -Download -============================================================================== - -You can download PXP as gzip'ed tarball [1]. The parser needs the Netstring [2] -package (0.9.3). Note that PXP requires O'Caml 3.00. - -============================================================================== -User's Manual -============================================================================== - -The manual is included in the distribution both as Postscript document and -bunch of HTML files. An online version can be found here [3]. - -============================================================================== -Author, Credits, Copying -============================================================================== - -PXP has been written by Gerd Stolpmann [4]; it contains contributions by -Claudio Sacerdoti Coen. You may copy it as you like, you may use it even for -commercial purposes as long as the license conditions are respected, see the -file LICENSE coming with the distribution. It allows almost everything. - -Thanks also to Alain Frisch and Haruo Hosoya for discussions and bug reports. - -============================================================================== -Description -============================================================================== - -PXP is a validating XML parser for O'Caml [5]. It strictly complies to the -XML-1.0 [6] standard. - -The parser is simple to call, usually only one statement (function call) is -sufficient to parse an XML document and to represent it as object tree. - -Once the document is parsed, it can be accessed using a class interface. The -interface allows arbitrary access including transformations. One of the -features of the document representation is its polymorphic nature; it is simple -to add custom methods to the document classes. Furthermore, the parser can be -configured such that different XML elements are represented by objects created -from different classes. This is a very powerful feature, because it simplifies -the structure of programs processing XML documents. - -Note that the class interface does not comply to the DOM standard. It was not a -development goal to realize a standard API (industrial developers can this much -better than I); however, the API is powerful enough to be considered as -equivalent with DOM. More important, the interface is compatible with the XML -information model required by many XML-related standards. - ------------------------------------------------------------------------------- -Detailed feature list ------------------------------------------------------------------------------- - -- The XML instance is validated against the DTD; any violation of a validation - constraint leads to the rejection of the instance. The validator has been - carefully implemented, and conforms strictly to the standard. If needed, it - is also possible to run the parser in a well-formedness mode. - -- If possible, the validator applies a deterministic finite automaton to - validate the content models. This ensures that validation can always be - performed in linear time. However, in the case that the content models are - not deterministic, the parser uses a backtracking algorithm which can be - much slower. - It is also possible to reject non-deterministic content - models. - -- In particular, the validator also checks the complicated rules whether - parentheses are properly nested with respect to entities, and whether the - standalone declaration is satisfied. On demand, it is checked whether the - IDREF attributes only refer to existing nodes. - -- Entity references are automatically resolved while the XML text is being - scanned. It is not possible to recognize in the object tree where a - referenced entity begins or ends; the object tree only represents the - logical structure. - -- External entities are loaded using a configurable resolver infrastructure. - It is possible to connect the parser with an arbitrary XML source. - -- The parser can read XML text encoded in a variety of character sets. - Independent of this, it is possible to choose the encoding of the internal - representation of the tree nodes; the parser automatically converts the - input text to this encoding. Currently, the parser supports UTF-8 and - ISO-8859-1 as internal encodings. - -- The interface of the parser has been designed such that it is best - integrated into the language O'Caml. The first goal was simplicity of usage - which is achieved by many convenience methods and functions, and by allowing - the user to select which parts of the XML text are actually represented in - the tree. For example, it is possible to store processing instructions as - tree nodes, but the parser can also be configured such that these - instructions are put into hashtables. The information model is compatible - with the requirements of XML-related standards such as XPath. - -- In particular, the node tree can optionally contain or leave out processing - instructions and comments. It is also possible to generate a "super root" - object which is the parent of the root element. The attributes of elements - are normally not stored as nodes, but it is possible to get them wrapped - into nodes. - -- There is also an interface for DTDs; you can parse and access sequences of - declarations. The declarations are fully represented as recursive O'Caml - values. - ------------------------------------------------------------------------------- -Code examples ------------------------------------------------------------------------------- - -This distribution contains several examples: - -- validate: simply parses a document and prints all error messages - -- readme: Defines a DTD for simple "README"-like documents, and offers - conversion to HTML and text files [7]. - -- xmlforms: This is already a sophisticated application that uses XML as style - sheet language and data storage format. It shows how a Tk user interface can - be configured by an XML style, and how data records can be stored using XML. - ------------------------------------------------------------------------------- -Restrictions and missing features ------------------------------------------------------------------------------- - -The following restrictions apply that are not violations of the standard: - -- The attributes "xml:space", and "xml:lang" are not supported specially. (The - application can do this.) - -- The built-in support for SYSTEM and PUBLIC identifiers is limited to local - file access. There is no support for catalogs. The parser offers a hook to - add missing features. - -- It is currently not possible to check for interoperatibility with SGML. - -The following features are also missing: - -- There is no special support for namespaces. (Perhaps in the next release?) - -- There is no support for XPATH or XSLT. - -However, I hope that these features will be implemented soon, either by myself -or by contributors (who are invited to do so). - ------------------------------------------------------------------------------- -Recent Changes ------------------------------------------------------------------------------- - -- Changed in 1.0: - Support for document order. - -- Changed in 0.99.8: - Several fixes of bugs reported by Haruo Hosoya and Alain Frisch. - The class type "node" has been extended: you can go directly to the next and - previous nodes in the list; you can refer to nodes by position. - There are now some iterators for nodes: find, find_all, find_element, - find_all_elements, map_tree, iter_tree. - Experimental support for viewing attributes as nodes; I hope that helps - Alain writing his XPath evaluator. - The user's manual has been revised and is almost up to date. - -- Changed in 0.99.7: - There are now additional node types T_super_root, T_pinstr and T_comment, - and the parser is able to create the corresponding nodes. - The functions for character set conversion have been moved to the Netstring - package; they are not specific for XML. - -- Changed in 0.99.6: - Implemented a check on deterministic content models. Added an alternate - validator basing on a DFA. - This means that now all mandatory features for - an XML-1.0 parser are implemented! The parser is now substantially complete. - -- Changed in 0.99.5: - The handling of ID and IDREF attributes has changed. The index of nodes - containing an ID attribute is now separated from the document. Optionally - the parser now checks whether the IDREF attributes refer to existing - elements. - The element nodes can optionally store the location in the source XML code. - The method 'write' writes the XML tree in every supported encoding. - (Successor of 'write_compact_as_latin1'.) - Several smaller changes and fixes. - -- Changed in 0.99.4: - The module Pxp_reader has been modernized. The resolver classes are simpler - to use. There is now support for URLs. - The interface of Pxp_yacc has been improved: The type 'source' is now - simpler. The type 'domspec' has gone; the new 'spec' is opaque and performs - better. There are some new parsing modes. - Many smaller changes. - -- Changed in 0.99.3: - The markup_* modules have been renamed to pxp_*. There is a new - compatibility API that tries to be compatible with markup-0.2.10. - The type "encoding" is now a polymorphic variant. - -- Changed in 0.99.2: - Added checks for the constraints about the standalone declaration. - Added regression tests about attribute normalization, attribute checks, - standalone checks. - Fixed some minor errors of the attribute normalization function. - The bytecode/native archives are now separated in a general part, in a - ISO-8859-1-relevant part, and a UTF-8-relevant part. The parser can again be - compiled with ocamlopt. - -- Changed in 0.99.1: - In general, this release is an early pre-release of the next stable version - 1.00. I do not recommend to use it for serious work; it is still very - experimental! - The core of the parser has been rewritten using a self-written parser - generator. - The lexer has been restructured, and can now handle UTF-8 encoded files. - Numerous other changes. - - --------------------------- - -[1] see http://www.ocaml-programming.de/packages/pxp-1.0.tar.gz - -[2] see http://www.ocaml-programming.de/packages/documentation/netstring - -[3] see http://www.ocaml-programming.de/packages/documentation/pxp/manual - -[4] see mailto:gerd@gerd-stolpmann.de - -[5] see http://caml.inria.fr/ - -[6] see http://www.w3.org/TR/1998/REC-xml-19980210.html - -[7] This particular document is an example of this DTD! - - - diff --git a/helm/DEVEL/pxp/pxp/doc/README.xml b/helm/DEVEL/pxp/pxp/doc/README.xml deleted file mode 100644 index 34c7726ad..000000000 --- a/helm/DEVEL/pxp/pxp/doc/README.xml +++ /dev/null @@ -1,423 +0,0 @@ - - - - - - -Gerd Stolpmann'> ---> - - -%common; - - -up'> - - -%config; - -]> - - - - Abstract -

    -PXP is a validating parser for XML-1.0 which has been written -entirely in Objective Caml. -

    - -

    PXP is the new name of the parser formerly known as "Markup". -PXP means "Polymorphic XML parser" and emphasizes its most useful -property: that the API is polymorphic and can be configured such that -different objects are used to store different types of elements.

    -
    - - - Download -

    -You can download PXP as gzip'ed tarball. The parser needs the Netstring package (0.9.3). Note that PXP -requires O'Caml 3.00. -

    -
    - - - User's Manual -

    -The manual is included in the distribution both as Postscript document and -bunch of HTML files. An online version can be found here. -

    -
    - - - Author, Credits, Copying -

    -PXP has been written by &person.gps;; it contains contributions by -Claudio Sacerdoti Coen. You may copy it as you like, -you may use it even for commercial purposes as long as the license conditions -are respected, see the file LICENSE coming with the distribution. It allows -almost everything. -

    - -

    Thanks also to Alain Frisch and Haruo Hosoya for discussions and bug -reports.

    -
    - - - Description -

    -PXP is a validating XML parser for O'Caml. It strictly complies to the -XML-1.0 standard. -

    - -

    The parser is simple to call, usually only one statement (function -call) is sufficient to parse an XML document and to represent it as object -tree.

    - -

    -Once the document is parsed, it can be accessed using a class interface. -The interface allows arbitrary access including transformations. One of -the features of the document representation is its polymorphic nature; -it is simple to add custom methods to the document classes. Furthermore, -the parser can be configured such that different XML elements are represented -by objects created from different classes. This is a very powerful feature, -because it simplifies the structure of programs processing XML documents. -

    - -

    -Note that the class interface does not comply to the DOM standard. It was not a -development goal to realize a standard API (industrial developers can this much -better than I); however, the API is powerful enough to be considered as -equivalent with DOM. More important, the interface is compatible with the -XML information model required by many XML-related standards. -

    - - - Detailed feature list - -
      -
    • The XML instance is validated against the DTD; any violation of -a validation constraint leads to the rejection of the instance. The validator -has been carefully implemented, and conforms strictly to the standard. If -needed, it is also possible to run the parser in a well-formedness mode.

      -
    • -
    • If possible, the validator applies a deterministic finite -automaton to validate the content models. This ensures that validation can -always be performed in linear time. However, in the case that the content -models are not deterministic, the parser uses a backtracking algorithm which -can be much slower. - It is also possible to reject non-deterministic content -models.

      -
    • -
    • In particular, the validator also checks the complicated rules -whether parentheses are properly nested with respect to entities, and whether -the standalone declaration is satisfied. On demand, it is checked whether the -IDREF attributes only refer to existing nodes.

      -
    • -
    • Entity references are automatically resolved while the XML text -is being scanned. It is not possible to recognize in the object tree where a -referenced entity begins or ends; the object tree only represents the logical structure.

      -
    • -
    • External entities are loaded using a configurable resolver -infrastructure. It is possible to connect the parser with an arbitrary XML source.

      -
    • -
    • The parser can read XML text encoded in a variety of character -sets. Independent of this, it is possible to choose the encoding of the -internal representation of the tree nodes; the parser automatically converts -the input text to this encoding. Currently, the parser supports UTF-8 and -ISO-8859-1 as internal encodings.

      -
    • -
    • The interface of the parser has been designed such that it is -best integrated into the language O'Caml. The first goal was simplicity of -usage which is achieved by many convenience methods and functions, and by -allowing the user to select which parts of the XML text are actually -represented in the tree. For example, it is possible to store processing -instructions as tree nodes, but the parser can also be configured such that -these instructions are put into hashtables. The information model is compatible -with the requirements of XML-related standards such as XPath.

      -
    • -
    • In particular, the node tree can optionally contain or leave out -processing instructions and comments. It is also possible to generate a "super -root" object which is the parent of the root element. The attributes of -elements are normally not stored as nodes, but it is possible to get them -wrapped into nodes.

      -
    • -
    • There is also an interface for DTDs; you can parse and access -sequences of declarations. The declarations are fully represented as recursive -O'Caml values. -

      -
    • -
    -
    - - - - Code examples -

    -This distribution contains several examples:

    -
      -
    • -validate: simply parses a -document and prints all error messages -

    • - -
    • -readme: Defines a DTD for simple "README"-like documents, and offers -conversion to HTML and text filesThis particular document is an -example of this DTD!. -

    • - -
    • -xmlforms: This is already a -sophisticated application that uses XML as style sheet language and data -storage format. It shows how a Tk user interface can be configured by an -XML style, and how data records can be stored using XML. -

    • -
    -
    - - - Restrictions and missing features -

    -The following restrictions apply that are not violations of the standard: -

    -
      -
    • -The attributes "xml:space", and "xml:lang" are not supported specially. - (The application can do this.)

    • - -
    • -The built-in support for SYSTEM and PUBLIC identifiers is limited to - local file access. There is no support for catalogs. The parser offers - a hook to add missing features.

    • - -
    • -It is currently not possible to check for interoperatibility with SGML. -

    • -
    - -

    The following features are also missing:

    -
      -
    • There is no special support for namespaces. (Perhaps in the next release?)

      -
    • -
    • There is no support for XPATH or XSLT.

      -
    • -
    -

    However, I hope that these features will be implemented soon, either by -myself or by contributors (who are invited to do so).

    -
    - - - Recent Changes -
      -
    • -

      Changed in 1.0:

      -

      Support for document order.

      -
    • -
    • -

      Changed in 0.99.8:

      -

      Several fixes of bugs reported by Haruo Hosoya and Alain -Frisch.

      -

      The class type "node" has been extended: you can go directly to -the next and previous nodes in the list; you can refer to nodes by -position.

      -

      There are now some iterators for nodes: find, find_all, -find_element, find_all_elements, map_tree, iter_tree.

      -

      Experimental support for viewing attributes as nodes; I hope that -helps Alain writing his XPath evaluator.

      -

      The user's manual has been revised and is almost up to date.

      -
    • -
    • -

      Changed in 0.99.7:

      -

      There are now additional node types T_super_root, T_pinstr and -T_comment, and the parser is able to create the corresponding nodes.

      -

      The functions for character set conversion have been moved to -the Netstring package; they are not specific for XML.

      -
    • -
    • -

      Changed in 0.99.6:

      -

      Implemented a check on deterministic content models. Added -an alternate validator basing on a DFA. - This means that now all mandatory -features for an XML-1.0 parser are implemented! The parser is now substantially -complete.

      -
    • -
    • -

      Changed in 0.99.5:

      -

      The handling of ID and IDREF attributes has changed. The -index of nodes containing an ID attribute is now separated from the document. -Optionally the parser now checks whether the IDREF attributes refer to -existing elements.

      -

      The element nodes can optionally store the location in the -source XML code.

      -

      The method 'write' writes the XML tree in every supported -encoding. (Successor of 'write_compact_as_latin1'.)

      -

      Several smaller changes and fixes.

      -
    • -
    • -

      Changed in 0.99.4:

      -

      The module Pxp_reader has been modernized. The resolver classes -are simpler to use. There is now support for URLs.

      -

      The interface of Pxp_yacc has been improved: The type 'source' -is now simpler. The type 'domspec' has gone; the new 'spec' is opaque and -performs better. There are some new parsing modes.

      -

      Many smaller changes.

      -
    • -
    • -

      Changed in 0.99.3:

      -

      The markup_* modules have been renamed to pxp_*. There is a new -compatibility API that tries to be compatible with markup-0.2.10.

      -

      The type "encoding" is now a polymorphic variant.

      -
    • -
    • -

      Changed in 0.99.2:

      -

      Added checks for the constraints about the standalone -declaration.

      -

      Added regression tests about attribute normalization, -attribute checks, standalone checks.

      -

      Fixed some minor errors of the attribute normalization -function.

      -

      The bytecode/native archives are now separated in -a general part, in a ISO-8859-1-relevant part, and a UTF-8-relevant -part. The parser can again be compiled with ocamlopt.

      -
    • -
    • -

      Changed in 0.99.1:

      -

      In general, this release is an early pre-release of the -next stable version 1.00. I do not recommend to use it for serious -work; it is still very experimental!

      -

      The core of the parser has been rewritten using a self-written -parser generator.

      -

      The lexer has been restructured, and can now handle UTF-8 -encoded files.

      -

      Numerous other changes.

      -
    • - - -
    -
    -
    -
    - diff --git a/helm/DEVEL/pxp/pxp/doc/SPEC b/helm/DEVEL/pxp/pxp/doc/SPEC deleted file mode 100644 index 28e6914ce..000000000 --- a/helm/DEVEL/pxp/pxp/doc/SPEC +++ /dev/null @@ -1,185 +0,0 @@ -****************************************************************************** -Notes on the XML specification -****************************************************************************** - - -============================================================================== -This document -============================================================================== - -There are some points in the XML specification which are ambiguous. The -following notes discuss these points, and describe how this parser behaves. - -============================================================================== -Conditional sections and the token ]]> -============================================================================== - -It is unclear what happens if an ignored section contains the token ]]> at -places where it is normally allowed, i.e. within string literals and comments, -e.g. - - --> ]]> - -On the one hand, the production rule of the XML grammar does not treat such -tokens specially. Following the grammar, already the first ]]> ends the -conditional section - - - -and the other tokens are included into the DTD. - -On the other hand, we can read: "Like the internal and external DTD subsets, a -conditional section may contain one or more complete declarations, comments, -processing instructions, or nested conditional sections, intermingled with -white space" (XML 1.0 spec, section 3.4). Complete declarations and comments -may contain ]]>, so this is contradictory to the grammar. - -The intention of conditional sections is to include or exclude the section -depending on the current replacement text of a parameter entity. Almost always -such sections are used as in - - (or "IGNORE") - - -This means that if it is possible to include a section it must also be legal to -ignore the same section. This is a strong indication that the token ]]> must -not count as section terminator if it occurs in a string literal or comment. - -This parser implements the latter. - -============================================================================== -Conditional sections and the inclusion of parameter entities -============================================================================== - -It is unclear what happens if an ignored section contains a reference to a -parameter entity. In most cases, this is not problematic because nesting of -parameter entities must respect declaration braces. The replacement text of -parameter entities must either contain a whole number of declarations or only -inner material of one declaration. Almost always it does not matter whether -these references are resolved or not (the section is ignored). - -But there is one case which is not explicitly specified: Is it allowed that the -replacement text of an entity contains the end marker ]]> of an ignored -conditional section? Example: - -"> - must be contained in -the same entity as the corresponding of -declarations). So it is possible to conclude that ]]> may be in another entity. - -Of course, there are many arguments not to allow such constructs: The resulting -code is incomprehensive, and parsing takes longer (especially if the entities -are external). I think the best argument against this kind of XML is that the -XML spec is not detailed enough, as it contains no rules where entity -references should be recognized and where not. For example: - -"> -"> - - -Which token ]]> counts? From a logical point of view, the ]]> in the third line -ends the conditional section. As already pointed out, the XML spec permits the -interpretation that ]]> is recognized even in string literals, and this may be -also true if it is "imported" from a separate entity; and so the first ]]> -denotes the end of the section. - -As a practical solution, this parser does not expand parameter entities in -ignored sections. Furthermore, it is also not allowed that the ending ]]> of -ignored or included sections is contained in a different entity than the -starting -%ext; -%ent; - -"ext" contains: - -"> - - - -Here, the reference %ent; would be illegal if the standalone declaration is -strictly interpreted. This parser handles the references %ent; and %ext; -equivalently which means that %ent; is allowed, but the element type "el" is -treated as externally declared. - -General entities can occur within the DTD, but they can only be contained in -the default value of attributes, or in the definition of other general -entities. The latter can be ignored, because the check will be repeated when -the entities are expanded. Though, general entities occuring in default -attribute values are actually checked at the moment when the default is used in -an element instance. - -General entities occuring in the document body are always checked. - -NDATA entities can occur in ENTITY attribute values; either in the element -instance or in the default declaration. Both cases are checked. - diff --git a/helm/DEVEL/pxp/pxp/doc/SPEC.xml b/helm/DEVEL/pxp/pxp/doc/SPEC.xml deleted file mode 100644 index 906f45a79..000000000 --- a/helm/DEVEL/pxp/pxp/doc/SPEC.xml +++ /dev/null @@ -1,226 +0,0 @@ - - -%common; - - -up'> - - -%config; - -]> - - - - - This document -

    There are some points in the XML specification which are ambiguous. -The following notes discuss these points, and describe how this parser -behaves.

    -
    - - - Conditional sections and the token ]]> - -

    It is unclear what happens if an ignored section contains the -token ]]> at places where it is normally allowed, i.e. within string -literals and comments, e.g. - - -<![IGNORE[ <!-- ]]> --> ]]> - - -On the one hand, the production rule of the XML grammar does not treat such -tokens specially. Following the grammar, already the first ]]> ends -the conditional section - - -<![IGNORE[ <!-- ]]> - - -and the other tokens are included into the DTD.

    - -

    On the other hand, we can read: "Like the internal and external DTD subsets, -a conditional section may contain one or more complete declarations, comments, -processing instructions, or nested conditional sections, intermingled with -white space" (XML 1.0 spec, section 3.4). Complete declarations and comments -may contain ]]>, so this is contradictory to the grammar.

    - -

    The intention of conditional sections is to include or exclude the section -depending on the current replacement text of a parameter entity. Almost -always such sections are used as in - - -<!ENTITY % want.a.feature.or.not "INCLUDE"> (or "IGNORE") -<![ %want.a.feature.or.not; [ ... ]]> - - -This means that if it is possible to include a section it must also be -legal to ignore the same section. This is a strong indication that -the token ]]> must not count as section terminator if it occurs -in a string literal or comment.

    - -

    This parser implements the latter.

    - -
    - - - Conditional sections and the inclusion of parameter entities - -

    It is unclear what happens if an ignored section contains a reference -to a parameter entity. In most cases, this is not problematic because -nesting of parameter entities must respect declaration braces. The -replacement text of parameter entities must either contain a whole -number of declarations or only inner material of one declaration. Almost always -it does not matter whether these references are resolved or not -(the section is ignored).

    - -

    But there is one case which is not explicitly specified: Is it allowed -that the replacement text of an entity contains the end marker ]]> -of an ignored conditional section? Example: - - -<!ENTITY % end "]]>"> -<![ IGNORE [ %end; - - -We do not find the statement in the XML spec that the ]]> must be contained -in the same entity as the corresponding <![ (as for the tokens <! and -> of declarations). So it is possible to conclude that ]]> may be in -another entity.

    - -

    Of course, there are many arguments not to allow such constructs: The -resulting code is incomprehensive, and parsing takes longer (especially if the -entities are external). I think the best argument against this kind of XML -is that the XML spec is not detailed enough, as it contains no rules where -entity references should be recognized and where not. For example: - - -<!ENTITY % y "]]>"> -<!ENTITY % x "<!ENTITY z '<![CDATA[some text%y;'>"> -<![ IGNORE [ %x; ]]> - - -Which token ]]> counts? From a logical point of view, the ]]> in the -third line ends the conditional section. As already pointed out, the XML spec -permits the interpretation that ]]> is recognized even in string literals, -and this may be also true if it is "imported" from a separate entity; and so -the first ]]> denotes the end of the section.

    - -

    As a practical solution, this parser does not expand parameter entities -in ignored sections. Furthermore, it is also not allowed that the ending ]]> -of ignored or included sections is contained in a different entity than the -starting <![ token.

    -
    - - - - Standalone documents and attribute normalization - -

    -If a document is declared as stand-alone, a restriction on the effect of -attribute normalization takes effect for attributes declared in external -entities. Normally, the parser knows the type of the attribute from -the ATTLIST declaration, and it can normalize attribute values depending -on their types. For example, an NMTOKEN attribute can be written with -leading or trailing spaces, but the parser returns always the nmtoken -without such added spaces; in contrast to this, a CDATA attribute is -not normalized in this way. For stand-alone document the type information is -not available if the ATTLIST declaration is located in an external -entity. Because of this, the XML spec demands that attribute values must -be written in their normal form in this case, i.e. without additional -spaces. -

    -

    This parser interprets this restriction as follows. Obviously, -the substitution of character and entity references is not considered -as a "change of the value" as a result of the normalization, because -these operations will be performed identically if the ATTLIST declaration -is not available. The same applies to the substitution of TABs, CRs, -and LFs by space characters. Only the removal of spaces depending on -the type of the attribute changes the value if the ATTLIST is not -available. -

    -

    This means in detail: CDATA attributes never violate the -stand-alone status. ID, IDREF, NMTOKEN, ENTITY, NOTATION and enumerator -attributes must not be written with leading and/or trailing spaces. IDREF, -ENTITIES, and NMTOKENS attributes must not be written with extra spaces at the -beginning or at the end of the value, or between the tokens of the list. -

    -

    The whole check is dubious, because the attribute type expresses also a -semantical constraint, not only a syntactical one. At least this parser -distinguishes strictly between single-value and list types, and returns the -attribute values differently; the first are represented as Value s (where s is -a string), the latter are represented as Valuelist [s1; s2; ...; sN]. The -internal representation of the value is dependent on the attribute type, too, -such that even normalized values are processed differently depending on -whether the attribute has list type or not. For this parser, it makes still a -difference whether a value is normalized and processed as if it were CDATA, or -whether the value is processed according to its declared type. -

    -

    The stand-alone check is included to be able to make a statement -whether other, well-formedness parsers can process the document. Of course, -these parsers always process attributes as CDATA, and the stand-alone check -guarantees that these parsers will always see the normalized values. -

    -
    - - - Standalone documents and the restrictions on entity -references -

    -Stand-alone documents must not refer to entities which are declared in an -external entity. This parser applies this rule only: to general and NDATA -entities when they occur in the document body (i.e. not in the DTD); and to -general and NDATA entities occuring in default attribute values declared in the -internal subset of the DTD. -

    -

    -Parameter entities are out of discussion for the stand-alone property. If there -is a parameter entity reference in the internal subset which was declared in an -external entity, it is not available in the same way as the external entity is -not available that contains its declaration. Because of this "equivalence", -parameter entity references are not checked on violations against the -stand-alone declaration. It simply does not matter. - Illustration: -

    - -

    -Main document: - - -%ext; -%ent; -]]> - -"ext" contains: - - "> -]]> -

    - -

    Here, the reference %ent; would be illegal if the standalone -declaration is strictly interpreted. This parser handles the references -%ent; and %ext; equivalently which means that %ent; is allowed, but the -element type "el" is treated as externally declared. -

    - -

    -General entities can occur within the DTD, but they can only be contained in -the default value of attributes, or in the definition of other general -entities. The latter can be ignored, because the check will be repeated when -the entities are expanded. Though, general entities occuring in default -attribute values are actually checked at the moment when the default is -used in an element instance. -

    -

    -General entities occuring in the document body are always checked.

    -

    -NDATA entities can occur in ENTITY attribute values; either in the element -instance or in the default declaration. Both cases are checked. -

    -
    - -
    diff --git a/helm/DEVEL/pxp/pxp/doc/design.txt b/helm/DEVEL/pxp/pxp/doc/design.txt deleted file mode 100644 index bf75d0618..000000000 --- a/helm/DEVEL/pxp/pxp/doc/design.txt +++ /dev/null @@ -1,340 +0,0 @@ ------------------------------------------------- -*- indented-text -*- -Some Notes About the Design: ----------------------------------------------------------------------- - ----------------------------------------------------------------------- -Compilation ----------------------------------------------------------------------- - -Compilation is non-trivial because: - - - The lexer and parser generators ocamlllex resp. ocamlyacc normally - create code such that the parser module precedes the lexer module. - THIS design requires that the lexer layer precedes the entity layer - which precedes the parser layer, because the parsing results modify - the behaviour of the lexer and entity layers. There is no way to get - around this because of the nature of XML. - - So the dependency relation of the lexer and the parser is modified; - in particular the "token" type that is normally defined by the - generated parser is moved to a common prdecessor of both lexer - and parser. - - - Another modification of the standard way of handling parsers is that - the parser is turned into an object. This is necessary because the - whole parser is polymorphic, i.e. there is a type parameter (the - type of the node extension). - -...................................................................... - -First some modules are generated as illustrated by the following -diagram: - - - markup_yacc.mly - | | - \|/ \|/ [ocamlyacc, 1] - V V - markup_yacc.mli markup_yacc.ml - | --> renamed into markup_yacc.ml0 - [awk, 2] \|/ | - V \|/ [sed, 3] - markup_yacc_token.mlf V - | | markup_yacc.ml - markup_lexer_types_ | | - shadow.mli | | | markup_lexer_types_ - \|/ [sed, \|/ | shadow.ml - V 4] V | | - markup_lexer_types.mli | | [sed, 4] - \|/ \|/ - V V - markup_lexer_types.ml - - - markup_yacc_shadow.mli - | - \|/ [replaces, 5] - V - markup_yacc.mli - - - - markup_lexers.mll - | - \|/ [ocamllex, 6] - V - markup_lexers.ml - - -Notes: - - (1) ocamlyacc generates both a module and a module interface. - The module is postprocessed in step (3). The interface cannot - be used, but it contains the definition of the "token" type. - This definition is extracted in step (2). The interface is - completely replaced in step (5) by a different file. - - (2) An "awk" script extracts the definition of the type "token". - "token" is created by ocamlyacc upon the %token directives - in markup_yacc.mly, and normally "token" is defined in - the module generated by ocamlyacc. This turned out not to be - useful as the module dependency must be that the lexer is - an antecedent of the parser and not vice versa (as usually), - so the "token" type is "moved" to the module Markup_lexer_types - which is an antecedent of both the lexer and the parser. - - (3) A "sed" script turns the generated parser into an object. - This is rather simple; some "let" definitions must be rewritten - as "val" definitions, the other "let" definitions as - "method" definitions. The parser object is needed because - the whole parser has a polymorphic type parameter. - - (4) The implementation and definition of Markup_lexer_types are - both generated by inserting the "token" type definition - (in markup_lexer_types.mlf) into two pattern files, - markup_lexer_types_shadow.ml resp. -.mli. The point of insertion - is marked by the string INCLUDE_HERE. - - (5) The generated interface of the Markup_yacc module is replaced - by a hand-written file. - - (6) ocamllex generates the lexer; this process is not patched in any - way. - -...................................................................... - -After the additional modules have been generated, compilation proceeds -in the usual manner. - - ----------------------------------------------------------------------- -Hierarchy of parsing layers: ----------------------------------------------------------------------- - -From top to bottom: - - - Parser: Markup_yacc - + gets input stream from the main entity object - + checks most of the grammar - + creates the DTD object as side-effect - + creates the element tree as side-effect - + creates further entity objects that are entered into the DTD - - Entity layer: Markup_entity - + gets input stream from the lexers, or another entity object - + handles entity references: if a reference is encountered the - input stream is redirected such that the tokens come from the - referenced entity object - + handles conditional sections - - Lexer layer: Markup_lexers - + gets input from lexbuffers created by resolvers - + different lexers for different lexical contexts - + a lexer returns pairs (token,lexid), where token is the scanned - token, and lexid is the name of the lexer that must be used for - the next token - - Resolver layer: Markup_entity - + a resolver creates the lexbuf from some character source - + a resolver recodes the input and handles the encoding scheme - ----------------------------------------------------------------------- -The YACC based parser ----------------------------------------------------------------------- - -ocamlyacc allows it to pass an arbitrary 'next_token' function to the -parsing functions. We always use 'en # next_token()' where 'en' is the -main entity object representing the main file to be parsed. - -The parser is not functional, but uses mainly side-effects to accumulate -the structures that have been recognized. This is very important for the -entity definitions, because once an entity definition has been found there -may be a reference to it which is handled by the entity layer (which is -below the yacc layer). This means that such a definition modifies the -token source of the parser, and this can only be handled by side-effects -(at least in a sensible manner; a purely functional parser would have to -pass unresolved entity references to its caller, which would have to -resolve the reference and to re-parse the whole document!). - -Note that also element definitions profit from the imperative style of -the parser; an element instance can be validated directly once the end -tag has been read in. - ----------------------------------------------------------------------- -The entity layer ----------------------------------------------------------------------- - -The parser gets the tokens from the main entity object. This object -controls the underlying lexing mechanism (see below), and already -interprets the following: - -- Conditional sections (if they are allowed in this entity): - The structures and are - recognized and interpreted. - - This would be hard to realize by the yacc parser, because: - - INCLUDE and IGNORE are not recognized as lexical keywords but as names. - This means that the parser cannot select different rules for them. - - The text after IGNORE requires a different lexical handling. - -- Entity references: &name; and %name; - The named entity is looked up and the input source is redirected to it, i.e. - if the main entity object gets the message 'next_token' this message is - forwarded to the referenced entity. (This entity may choose to forward the - message again to a third entity, and so on.) - - There are some fine points: - - - It is okay that redirection happens at token level, not at character level: - + General entities must always match the 'content' production, and because - of this they must always consist of a whole number of tokens. - + If parameter entities are resolved, the XML specification states that - a space character is inserted before and after the replacement text. - This also means that such entities always consists of a whole number - of tokens. - - - There are some "nesting constraints": - + General entities must match the 'content' production. Because of this, - the special token Begin_entity is inserted before the first token of - the entity, and End_entity is inserted just before the Eof token. The - brace Begin_entity...End_entity is recognized by the yacc parser, but - only in the 'content' production. - + External parameter entities must match 'extSubsetDecl'. Again, - Begin_entity and End_entity tokens embrace the inner token stream. - The brace Begin_entity...End_entity is recognized by the yacc parser - at the appropriate position. - (As general and parameter entities are used in different contexts - (document vs. DTD), both kinds of entities can use the same brace - Begin_entity...End_entity.) - + TODO: - The constraints for internal parameter entities are not yet checked. - - - Recursive references can be detected because entities must be opened - before the 'next_token' method can be invoked. - ----------------------------------------------------------------------- -The lexer layer ----------------------------------------------------------------------- - -There are five main lexers, and a number of auxiliary lexers. The five -main lexers are: - -- Document (function scan_document): - Scans an XML document outside the DTD and outside the element instance. - -- Content (function scan_content): - Scans an element instance, but not within tags. - -- Within_tag (function scan_within_tag): - Scans within <...>, i.e. a tag denoting an element instance. - -- Document_type (function scan_document_type): - Scans after . - -- Declaration (function scan_declaration): - Scans sequences of declarations - -Why several lexers? Because there are different lexical rules in these -five regions of an XML document. - -Every lexer not only produces tokens, but also the name of the next lexer -to use. For example, if the Document lexer scans " - ]> - ∅ - - This is illegal, and the presence of an empty Begin_entity/End_entity pair - helps to recognize this. diff --git a/helm/DEVEL/pxp/pxp/doc/dist-common.xml b/helm/DEVEL/pxp/pxp/doc/dist-common.xml deleted file mode 100644 index d18a1500f..000000000 --- a/helm/DEVEL/pxp/pxp/doc/dist-common.xml +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Gerd Stolpmann'> - - - diff --git a/helm/DEVEL/pxp/pxp/doc/manual/Makefile b/helm/DEVEL/pxp/pxp/doc/manual/Makefile deleted file mode 100644 index 5a3e1ffab..000000000 --- a/helm/DEVEL/pxp/pxp/doc/manual/Makefile +++ /dev/null @@ -1,82 +0,0 @@ -DOCBOOK_HTML = /usr/share/sgml/docbkdsl/html -DOCBOOK_PRINT = /usr/share/sgml/docbkdsl/print -SRC = $(PWD)/src - -.PHONY: html ps - -default: html ps - -html: html/book1.htm html/pic/done - -ps: ps/markup.ps ps/pic/done - - -src/readme.ent: ../../examples/readme/to_html.ml - src/getcode.ml <../../examples/readme/to_html.ml >src/readme.ent - -src/yacc.mli.ent: ../../pxp_yacc.mli - src/getcode.ml <../../pxp_yacc.mli >src/yacc.mli.ent - -src/dtd.mli.ent: ../../pxp_dtd.mli - src/getcode.ml <../../pxp_dtd.mli >src/dtd.mli.ent - -html/book1.htm: src/*.sgml src/readme.ent src/yacc.mli.ent src/dtd.mli.ent - mkdir -p html - cp src/markup.css html; \ - cd html; \ - rm -f *.htm*; \ - jade -t sgml -D$(DOCBOOK_HTML) -D$(SRC) -ihtml markup.sgml; \ - true - touch html/TIMESTAMP - -html/pic/done: src/pic/*.fig - mkdir -p html/pic - l=`cd src/pic; echo *.fig`; \ - for x in $$l; do fig2dev -L gif src/pic/$$x html/pic/`basename $$x .fig`.gif; done - touch html/pic/done - -#man: src/findlib_reference.xml -# mkdir -p man -# cd man; \ -# rm -f *.[0-9]; \ -# db2man <../src/findlib_reference.xml - -ps/markup.tex: src/*.sgml src/readme.ent src/yacc.mli.ent src/dtd.mli.ent - mkdir -p ps - cd ps; \ - jade -t tex -D$(DOCBOOK_PRINT) -D$(SRC) markup.sgml; \ - true - -ps/markup.dvi: ps/markup.tex ps/pic/done - cd ps; \ - jadetex markup.tex; \ - jadetex markup.tex; \ - jadetex markup.tex - -ps/markup.ps: ps/markup.dvi - cd ps; \ - dvips -f markup.ps - -ps/pic/done: src/pic/*.fig - mkdir -p ps/pic - l=`cd src/pic; echo *.fig`; \ - for x in $$l; do fig2dev -L ps -m 0.8 src/pic/$$x ps/pic/`basename $$x .fig`.ps; done - touch ps/pic/done - -.SUFFIXES: .xml .sgml - -.sgml.xml: - sx -xndata $< >$@; true - - - -clean: - rm -rf html man ps - rm -f src/readme.ent - -CLEAN: clean - -distclean: - rm -f src/*~ - rm -f *~ - rm -f ps/*.aux ps/*.dvi ps/*.log ps/*.tex diff --git a/helm/DEVEL/pxp/pxp/doc/manual/html/TIMESTAMP b/helm/DEVEL/pxp/pxp/doc/manual/html/TIMESTAMP deleted file mode 100644 index e69de29bb..000000000 diff --git a/helm/DEVEL/pxp/pxp/doc/manual/html/c1567.html b/helm/DEVEL/pxp/pxp/doc/manual/html/c1567.html deleted file mode 100644 index ab88e87bf..000000000 --- a/helm/DEVEL/pxp/pxp/doc/manual/html/c1567.html +++ /dev/null @@ -1,434 +0,0 @@ -Configuring and calling the parser
    The PXP user's guide
    PrevNext

    Chapter 4. Configuring and calling the parser

    4.1. Overview

    There are the following main functions invoking the parser (in Pxp_yacc): - -

    • parse_document_entity: You want to -parse a complete and closed document consisting of a DTD and the document body; -the body is validated against the DTD. This mode is interesting if you have a -file - -

      <!DOCTYPE root ... [ ... ] > <root> ... </root>
      - -and you can accept any DTD that is included in the file (e.g. because the file -is under your control).

    • parse_wfdocument_entity: You want to -parse a complete and closed document consisting of a DTD and the document body; -but the body is not validated, only checked for well-formedness. This mode is -preferred if validation costs too much time or if the DTD is missing.

    • parse_dtd_entity: You want only to -parse an entity (file) containing the external subset of a DTD. Sometimes it is -interesting to read such a DTD, for example to compare it with the DTD included -in a document, or to apply the next mode:

    • parse_content_entity: You want only to -parse an entity (file) containing a fragment of a document body; this fragment -is validated against the DTD you pass to the function. Especially, the fragment -must not have a <!DOCTYPE> clause, and must directly -begin with an element. The element is validated against the DTD. This mode is -interesting if you want to check documents against a fixed, immutable DTD.

    • parse_wfcontent_entity: This function -also parses a single element without DTD, but does not validate it.

    • extract_dtd_from_document_entity: This -function extracts the DTD from a closed document consisting of a DTD and a -document body. Both the internal and the external subsets are extracted.

    In many cases, parse_document_entity is the preferred mode -to parse a document in a validating way, and -parse_wfdocument_entity is the mode of choice to parse a -file while only checking for well-formedness.

    There are a number of variations of these modes. One important application of a -parser is to check documents of an untrusted source against a fixed DTD. One -solution is to not allow the <!DOCTYPE> clause in -these documents, and treat the document like a fragment (using mode -parse_content_entity). This is very simple, but -inflexible; users of such a system cannot even define additional entities to -abbreviate frequent phrases of their text.

    It may be necessary to have a more intelligent checker. For example, it is also -possible to parse the document to check fully, i.e. with DTD, and to compare -this DTD with the prescribed one. In order to fully parse the document, mode -parse_document_entity is applied, and to get the DTD to -compare with mode parse_dtd_entity can be used.

    There is another very important configurable aspect of the parser: the -so-called resolver. The task of the resolver is to locate the contents of an -(external) entity for a given entity name, and to make the contents accessible -as a character stream. (Furthermore, it also normalizes the character set; -but this is a detail we can ignore here.) Consider you have a file called -"main.xml" containing - -

    <!ENTITY % sub SYSTEM "sub/sub.xml">
    -%sub;
    - -and a file stored in the subdirectory "sub" with name -"sub.xml" containing - -
    <!ENTITY % subsub SYSTEM "subsub/subsub.xml">
    -%subsub;
    - -and a file stored in the subdirectory "subsub" of -"sub" with name "subsub.xml" (the -contents of this file do not matter). Here, the resolver must track that -the second entity subsub is located in the directory -"sub/subsub", i.e. the difficulty is to interpret the -system (file) names of entities relative to the entities containing them, -even if the entities are deeply nested.

    There is not a fixed resolver already doing everything right - resolving entity -names is a task that highly depends on the environment. The XML specification -only demands that SYSTEM entities are interpreted like URLs -(which is not very precise, as there are lots of URL schemes in use), hoping -that this helps overcoming the local peculiarities of the environment; the idea -is that if you do not know your environment you can refer to other entities by -denoting URLs for them. I think that this interpretation of -SYSTEM names may have some applications in the internet, but -it is not the first choice in general. Because of this, the resolver is a -separate module of the parser that can be exchanged by another one if -necessary; more precisely, the parser already defines several resolvers.

    The following resolvers do already exist: - -

    • Resolvers reading from arbitrary input channels. These -can be configured such that a certain ID is associated with the channel; in -this case inner references to external entities can be resolved. There is also -a special resolver that interprets SYSTEM IDs as URLs; this resolver can -process relative SYSTEM names and determine the corresponding absolute URL.

    • A resolver that reads always from a given O'Caml -string. This resolver is not able to resolve further names unless the string is -not associated with any name, i.e. if the document contained in the string -refers to an external entity, this reference cannot be followed in this -case.

    • A resolver for file names. The SYSTEM -name is interpreted as file URL with the slash "/" as separator for -directories. - This resolver is derived from the generic URL resolver.

    - -The interface a resolver must have is documented, so it is possible to write -your own resolver. For example, you could connect the parser with an HTTP -client, and resolve URLs of the HTTP namespace. The resolver classes support -that several independent resolvers are combined to one more powerful resolver; -thus it is possible to combine a self-written resolver with the already -existing resolvers.

    Note that the existing resolvers only interpret SYSTEM -names, not PUBLIC names. If it helps you, it is possible to -define resolvers for PUBLIC names, too; for example, such a -resolver could look up the public name in a hash table, and map it to a system -name which is passed over to the existing resolver for system names. It is -relatively simple to provide such a resolver.


    PrevHomeNext
    Details of the mapping from XML text to the tree representationUpResolvers and sources
    \ No newline at end of file diff --git a/helm/DEVEL/pxp/pxp/doc/manual/html/c36.html b/helm/DEVEL/pxp/pxp/doc/manual/html/c36.html deleted file mode 100644 index d74ecbbca..000000000 --- a/helm/DEVEL/pxp/pxp/doc/manual/html/c36.html +++ /dev/null @@ -1,533 +0,0 @@ -What is XML?
    The PXP user's guide
    PrevNext

    Chapter 1. What is XML?

    1.1. Introduction

    XML (short for Extensible Markup Language) -generalizes the idea that text documents are typically structured in sections, -sub-sections, paragraphs, and so on. The format of the document is not fixed -(as, for example, in HTML), but can be declared by a so-called DTD (document -type definition). The DTD describes only the rules how the document can be -structured, but not how the document can be processed. For example, if you want -to publish a book that uses XML markup, you will need a processor that converts -the XML file into a printable format such as Postscript. On the one hand, the -structure of XML documents is configurable; on the other hand, there is no -longer a canonical interpretation of the elements of the document; for example -one XML DTD might want that paragraphes are delimited by -para tags, and another DTD expects p tags -for the same purpose. As a result, for every DTD a new processor is required.

    Although XML can be used to express structured text documents it is not limited -to this kind of application. For example, XML can also be used to exchange -structured data over a network, or to simply store structured data in -files. Note that XML documents cannot contain arbitrary binary data because -some characters are forbidden; for some applications you need to encode binary -data as text (e.g. the base 64 encoding).

    1.1.1. The "hello world" example

    The following example shows a very simple DTD, and a corresponding document -instance. The document is structured such that it consists of sections, and -that sections consist of paragraphs, and that paragraphs contain plain text:

    <!ELEMENT document (section)+>
    -<!ELEMENT section (paragraph)+>
    -<!ELEMENT paragraph (#PCDATA)>

    The following document is an instance of this DTD:

    <?xml version="1.0" encoding="ISO-8859-1"?>
    -<!DOCTYPE document SYSTEM "simple.dtd">
    -<document>
    -  <section>
    -    <paragraph>This is a paragraph of the first section.</paragraph>
    -    <paragraph>This is another paragraph of the first section.</paragraph>
    -  </section>
    -  <section>
    -    <paragraph>This is the only paragraph of the second section.</paragraph>
    -  </section>
    -</document>

    As in HTML (and, of course, in grand-father SGML), the "pieces" of -the document are delimited by element braces, i.e. such a piece begins with -<name-of-the-type-of-the-piece> and ends with -</name-of-the-type-of-the-piece>, and the pieces are -called elements. Unlike HTML and SGML, both start tags and -end tags (i.e. the delimiters written in angle brackets) can never be left -out. For example, HTML calls the paragraphs simply p, and -because paragraphs never contain paragraphs, a sequence of several paragraphs -can be written as: - -

    <p>First paragraph 
    -<p>Second paragraph
    - -This is not possible in XML; continuing our example above we must always write - -
    <paragraph>First paragraph</paragraph>
    -<paragraph>Second paragraph</paragraph>
    - -The rationale behind that is to (1) simplify the development of XML parsers -(you need not convert the DTD into a deterministic finite automaton which is -required to detect omitted tags), and to (2) make it possible to parse the -document independent of whether the DTD is known or not.

    The first line of our sample document, - -

    <?xml version="1.0" encoding="ISO-8859-1"?>
    - -is the so-called XML declaration. It expresses that the -document follows the conventions of XML version 1.0, and that the document is -encoded using characters from the ISO-8859-1 character set (often known as -"Latin 1", mostly used in Western Europe). Although the XML declaration is not -mandatory, it is good style to include it; everybody sees at the first glance -that the document uses XML markup and not the similar-looking HTML and SGML -markup languages. If you omit the XML declaration, the parser will assume -that the document is encoded as UTF-8 or UTF-16 (there is a rule that makes -it possible to distinguish between UTF-8 and UTF-16 automatically); these -are encodings of Unicode's universal character set. (Note that PXP, unlike its -predecessor "Markup", fully supports Unicode.)

    The second line, - -

    <!DOCTYPE document SYSTEM "simple.dtd">
    - -names the DTD that is going to be used for the rest of the document. In -general, it is possible that the DTD consists of two parts, the so-called -external and the internal subset. "External" means that the DTD exists as a -second file; "internal" means that the DTD is included in the same file. In -this example, there is only an external subset, and the system identifier -"simple.dtd" specifies where the DTD file can be found. System identifiers are -interpreted as URLs; for instance this would be legal: - -
    <!DOCTYPE document SYSTEM "http://host/location/simple.dtd">
    - -Please note that PXP cannot interpret HTTP identifiers by default, but it is -possible to change the interpretation of system identifiers.

    The word immediately following DOCTYPE determines which of -the declared element types (here "document", "section", and "paragraph") is -used for the outermost element, the root element. In this -example it is document because the outermost element is -delimited by <document> and -</document>.

    The DTD consists of three declarations for element types: -document, section, and -paragraph. Such a declaration has two parts: - -

    <!ELEMENT name content-model>
    - -The content model is a regular expression which describes the possible inner -structure of the element. Here, document contains one or -more sections, and a section contains one or more -paragraphs. Note that these two element types are not allowed to contain -arbitrary text. Only the paragraph element type is declared -such that parsed character data (indicated by the symbol -#PCDATA) is permitted.

    See below for a detailed discussion of content models.

    1.1.2. XML parsers and processors

    XML documents are human-readable, but this is not the main purpose of this -language. XML has been designed such that documents can be read by a program -called an XML parser. The parser checks that the document -is well-formatted, and it represents the document as objects of the programming -language. There are two aspects when checking the document: First, the document -must follow some basic syntactic rules, such as that tags are written in angle -brackets, that for every start tag there must be a corresponding end tag and so -on. A document respecting these rules is -well-formed. Second, the document must match the DTD in -which case the document is valid. Many parsers check only -on well-formedness and ignore the DTD; PXP is designed such that it can -even validate the document.

    A parser does not make a sensible application, it only reads XML -documents. The whole application working with XML-formatted data is called an -XML processor. Often XML processors convert documents into -another format, such as HTML or Postscript. Sometimes processors extract data -of the documents and output the processed data again XML-formatted. The parser -can help the application processing the document; for example it can provide -means to access the document in a specific manner. PXP supports an -object-oriented access layer specially.

    1.1.3. Discussion

    As we have seen, there are two levels of description: On the one hand, XML can -define rules about the format of a document (the DTD), on the other hand, XML -expresses structured documents. There are a number of possible applications:

    • XML can be used to express structured texts. Unlike HTML, there is no canonical -interpretation; one would have to write a backend for the DTD that translates -the structured texts into a format that existing browsers, printers -etc. understand. The advantage of a self-defined document format is that it is -possible to design the format in a more problem-oriented way. For example, if -the task is to extract reports from a database, one can use a DTD that reflects -the structure of the report or the database. A possible approach would be to -have an element type for every database table and for every column. Once the -DTD has been designed, the report procedure can be splitted up in a part that -selects the database rows and outputs them as an XML document according to the -DTD, and in a part that translates the document into other formats. Of course, -the latter part can be solved in a generic way, e.g. there may be configurable -backends for all DTDs that follow the approach and have element types for -tables and columns.

      XML plays the role of a configurable intermediate format. The database -extraction function can be written without having to know the details of -typesetting; the backends can be written without having to know the details of -the database.

      Of course, there are traditional solutions. One can define an ad hoc -intermediate text file format. This disadvantage is that there are no names for -the pieces of the format, and that such formats usually lack of documentation -because of this. Another solution would be to have a binary representation, -either as language-dependent or language-independent structure (example of the -latter can be found in RPC implementations). The disadvantage is that it is -harder to view such representations, one has to write pretty printers for this -purpose. It is also more difficult to enter test data; XML is plain text that -can be written using an arbitrary editor (Emacs has even a good XML mode, -PSGML). All these alternatives suffer from a missing structure checker, -i.e. the programs processing these formats usually do not check the input file -or input object in detail; XML parsers check the syntax of the input (the -so-called well-formedness check), and the advanced parsers like PXP even -verify that the structure matches the DTD (the so-called validation).

    • XML can be used as configurable communication language. A fundamental problem -of every communication is that sender and receiver must follow the same -conventions about the language. For data exchange, the question is usually -which data records and fields are available, how they are syntactically -composed, and which values are possible for the various fields. Similar -questions arise for text document exchange. XML does not answer these problems -completely, but it reduces the number of ambiguities for such conventions: The -outlines of the syntax are specified by the DTD (but not necessarily the -details), and XML introduces canonical names for the components of documents -such that it is simpler to describe the rest of the syntax and the semantics -informally.

    • XML is a data storage format. Currently, every software product tends to use -its own way to store data; commercial software often does not describe such -formats, and it is a pain to integrate such software into a bigger project. -XML can help to improve this situation when several applications share the same -syntax of data files. DTDs are then neutral instances that check the format of -data files independent of applications.


    PrevHomeNext
    User's guideUpHighlights of XML
    \ No newline at end of file diff --git a/helm/DEVEL/pxp/pxp/doc/manual/html/c533.html b/helm/DEVEL/pxp/pxp/doc/manual/html/c533.html deleted file mode 100644 index c58e6ff3e..000000000 --- a/helm/DEVEL/pxp/pxp/doc/manual/html/c533.html +++ /dev/null @@ -1,234 +0,0 @@ -Using PXP
    The PXP user's guide
    PrevNext

    Chapter 2. Using PXP

    2.1. Validation

    The parser can be used to validate a document. This means -that all the constraints that must hold for a valid document are actually -checked. Validation is the default mode of PXP, i.e. every document is -validated while it is being parsed.

    In the examples directory of the distribution you find the -pxpvalidate application. It is invoked in the following way: - -

    pxpvalidate [ -wf ] file...
    - -The files mentioned on the command line are validated, and every warning and -every error messages are printed to stderr.

    The -wf switch modifies the behaviour such that a well-formedness parser is -simulated. In this mode, the ELEMENT, ATTLIST, and NOTATION declarations of the -DTD are ignored, and only the ENTITY declarations will take effect. This mode -is intended for documents lacking a DTD. Please note that the parser still -scans the DTD fully and will report all errors in the DTD; such checks are not -required by a well-formedness parser.

    The pxpvalidate application is the simplest sensible program -using PXP, you may consider it as "hello world" program.


    PrevHomeNext
    A complete example: The readme DTDUpHow to parse a document from an application
    \ No newline at end of file diff --git a/helm/DEVEL/pxp/pxp/doc/manual/html/c893.html b/helm/DEVEL/pxp/pxp/doc/manual/html/c893.html deleted file mode 100644 index 0e564fb20..000000000 --- a/helm/DEVEL/pxp/pxp/doc/manual/html/c893.html +++ /dev/null @@ -1,349 +0,0 @@ -The objects representing the document
    The PXP user's guide
    PrevNext

    Chapter 3. The objects representing the document

    This description might be out-of-date. See the module interface files -for updated information.

    3.1. The document class

    class [ 'ext ] document :
    -  Pxp_types.collect_warnings -> 
    -  object
    -    method init_xml_version : string -> unit
    -    method init_root : 'ext node -> unit
    -
    -    method xml_version : string
    -    method xml_standalone : bool
    -    method dtd : dtd
    -    method root : 'ext node
    -
    -    method encoding : Pxp_types.rep_encoding
    -
    -    method add_pinstr : proc_instruction -> unit
    -    method pinstr : string -> proc_instruction list
    -    method pinstr_names : string list
    -
    -    method write : Pxp_types.output_stream -> Pxp_types.encoding -> unit
    -
    -  end
    -;;
    - -The methods beginning with init_ are only for internal use -of the parser.

    • xml_version: returns the version string at the beginning of -the document. For example, "1.0" is returned if the document begins with -<?xml version="1.0"?>.

    • xml_standalone: returns the boolean value of -standalone declaration in the XML declaration. If the -standalone attribute is missing, false is -returned.

    • dtd: returns a reference to the global DTD object.

    • root: returns a reference to the root element.

    • encoding: returns the internal encoding of the -document. This means that all strings of which the document consists are -encoded in this character set.

    • pinstr: returns the processing instructions outside the DTD -and outside the root element. The argument passed to the method names a -target, and the method returns all instructions with this -target. The target is the first word inside <? and -?>.

    • pinstr_names: returns the names of the processing instructions

    • add_pinstr: adds another processing instruction. This method -is used by the parser itself to enter the instructions returned by -pinstr, but you can also enter additional instructions.

    • write: writes the document to the passed stream as XML -text using the passed (external) encoding. The generated text is always valid -XML and can be parsed by PXP; however, the text is badly formatted (this is not -a pretty printer).


    PrevHomeNext
    Example: An HTML backend for the readme -DTDUpThe class type node
    \ No newline at end of file diff --git a/helm/DEVEL/pxp/pxp/doc/manual/html/index.html b/helm/DEVEL/pxp/pxp/doc/manual/html/index.html deleted file mode 100644 index 3c07ff28f..000000000 --- a/helm/DEVEL/pxp/pxp/doc/manual/html/index.html +++ /dev/null @@ -1,330 +0,0 @@ -The PXP user's guide

    The PXP user's guide

    Gerd Stolpmann

    Copyright © 1999, 2000 by Gerd Stolpmann

    PXP is a validating parser for XML-1.0 which has been -written entirely in Objective Caml.

    Download PXP:

    The free PXP library can be downloaded at -http://www.ocaml-programming.de/packages/. This user's guide is included. -Newest releases of PXP will be announced in -The OCaml Link -Database.

    License

    This document, and the described software, "PXP", are copyright by -Gerd Stolpmann.

    Permission is hereby granted, free of charge, to any person obtaining -a copy of this document and the "PXP" software (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 Gerd Stolpmann 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.



      Next
      User's guide
    \ No newline at end of file diff --git a/helm/DEVEL/pxp/pxp/doc/manual/html/markup.css b/helm/DEVEL/pxp/pxp/doc/manual/html/markup.css deleted file mode 100644 index 67dfaecb7..000000000 --- a/helm/DEVEL/pxp/pxp/doc/manual/html/markup.css +++ /dev/null @@ -1,4 +0,0 @@ -.acronym { - font-weight: bold; - color: #c71585 -} diff --git a/helm/DEVEL/pxp/pxp/doc/manual/html/p34.html b/helm/DEVEL/pxp/pxp/doc/manual/html/p34.html deleted file mode 100644 index 9db427d34..000000000 --- a/helm/DEVEL/pxp/pxp/doc/manual/html/p34.html +++ /dev/null @@ -1,167 +0,0 @@ -User's guide
    The PXP user's guide
    PrevNext


    PrevHomeNext
    The PXP user's guide What is XML?
    \ No newline at end of file diff --git a/helm/DEVEL/pxp/pxp/doc/manual/html/pic/done b/helm/DEVEL/pxp/pxp/doc/manual/html/pic/done deleted file mode 100644 index e69de29bb..000000000 diff --git a/helm/DEVEL/pxp/pxp/doc/manual/html/pic/extension_general.gif b/helm/DEVEL/pxp/pxp/doc/manual/html/pic/extension_general.gif deleted file mode 100644 index 6cc260a4e19ac61c777c6af49d45112cd548b2d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2098 zcmV-22+j9LNk%v~VL<`j0HFW?0001ge}Dh~|G&S#EC2ui06_uX00091l#i*)?GK}z zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`(DqVb4KDwoWr^9hYgr_`$T zip^@b+^+Wv4vWX+viV#FsMl+>`@K*H=5)Fmjz7!me0%;M2GBQX2LO1eB}lj!V2JoQ zrN~I=2x;jgIXPH)*?E+yx#>At1RBc6Nvg_YdRmvd8hg`PIJYM%o7=+1OWP>7wg{_B z95=jS=xZA+TGi#`2J%2~PnP+e`H41C)M&i$7vPJS>BF%0V)%#5qv z$&PUS9uFVxsu@06-rQO9z(!iYdjlawGwAN$K8Y2uX-e0S%tQWZ2@-~ruo2qAR~gsw z>jx5J#|Rb$mP}KSK{|@YF0@4VQe(S!9}77Ui8ME7MHz82XftwBr8twb&)311%wG8$IJINXp`mULhB#x1rX$1t zycPSHu_d}o-u791qVzsfm{-rba7y-VnZut7xh9Fe_WtiHk^R_U)6GX)X8svMK&EO%2Fj+^S2o#FQ#fgZaI1qjPv6v5RjKNq^ zY&3$lS8FQX*a{m1{5V-zJZ1#Ik47GOWG~tZsf!v&K8fUuOg>U1lvWxk<&^7O$t93k zYN=S4VtxrGYhs>BW|`xiiKd#dRLN$SX}T#~oNUfXXCijCnP)zGj@hT5f65uCC2(?C zq?3RaipZf?t^wqti~{25qgYBhX&#kY3FoF!W_pOHQC>gT{?$dN&I%>6<(*ROO*=jXt+Po0`=_-g z2IT8dbnH5kwqh~+q_`k>Ys$D{Lf>y&s(Z9SY)-7oG8hP@|nyFNQCaroT_ajZo?P$;@r$ zg5hf-zN3RUdF$KYF+#gBqA82H?9MM(9`A0i zxSb%X&8|E;$zN+?_Z9sPz3R`;bba%}!&(LS^?4WS>AT`Q#P%ns@0|PZLqq?7feIU~ zGq=8L0%XbWartXYljaw_0zs{SL_&eJ7)XTwQOZ3Cu}cmHSRQU@t7HL!8wA<+3~`Cj zBrS5)g3>ZN3}&!|ChSV%hGi-RwNQqp3xo>W=K}QLsaqdJT8&^Zjs9UThWQ~J2oZP% z3BCzItPkv+l66Zw?2z;v5UYX9saEN!T?&(24g&< zcsAHU5B}hW#DE|J6^2G9?&?H6v|}4pX1|I65jnG{Q0O$5!;j=qYm;jjD+u>Ti9Jtz z(Tf@ZSwyoHYVvK1q~QqzILG}&Qd2LR-64l~qq`gtiHN*kCzk^ky_m~$tSFxh>6jBA z=?pMAR27zXwiW*Q@|Qsjktu`Zz3G)=U$V?0n&eTjMn2Pr4vgX?Z4)x-snJf}*kH(( zqMS`~L^SeP%t2&x6v&n3A#`aXLI#D)aKIBSwyYpL%|^kdtR;#kF^oU^d6nW=WhcgT zCbL9%(4)Qcphol#dH&L=oVl#7H_zGUVX8wogn5%(8)axB9SX~Isz#!*`X@nu6Pq-s@RW!7$)^{gUdS)A0G)~UvoMsAIl zRp)A=wT|*#Yh~+%`np5F(p9i|)$3jH+Sb1MHDiQ5mtyy7u*VkGuxM>;Vl6v4%>Grg zhU6?`DO*{@URJaVCGBQS>!7;wX|h9w>s3<;+R(OEuCE;|YELUw+2$6LwWTdfqt#p3 z?v}M21?q2^{-jz?x%9ZkE$)<(`ziNmR0YsYQkkmTQtEnCyW7S zZm@$N4B-e%c)}E}u!S#-;S6hd!yN9ghd&JB5Q})k7sjU$6-i?1S~HoROfe{R)6IFP z(=!z1PJ@C;8W-!at6$ZpQ^)dD=meRkI;KWWA&Q!P76i#l6)A*@Y-EteD#>46GA*0T zI{`yEK}cC+T_giz1r-#&8_udlseDc#pLwZAZS$5vV$}A;nVmhsOHw}s&Nu6M&wTE) cpZ^RK=s*j4(1b3up%0DdL@RpHa3}x(JHpcj2LJ#7 diff --git a/helm/DEVEL/pxp/pxp/doc/manual/html/pic/node_add.gif b/helm/DEVEL/pxp/pxp/doc/manual/html/pic/node_add.gif deleted file mode 100644 index 0091db2a23fc022fe916158104275aafe78f78d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4334 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 cYs|)N?8a{l$8jvjb4AJ2%FMI{*Lx diff --git a/helm/DEVEL/pxp/pxp/doc/manual/html/pic/node_clone.gif b/helm/DEVEL/pxp/pxp/doc/manual/html/pic/node_clone.gif deleted file mode 100644 index 97cd3639e30c63c6d9efd363fd7f3c5bd49fab8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4031 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 diff --git a/helm/DEVEL/pxp/pxp/doc/manual/html/pic/node_delete.gif b/helm/DEVEL/pxp/pxp/doc/manual/html/pic/node_delete.gif deleted file mode 100644 index d521123a7ff695ad03a4ee24deb20e2e238a96fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3459 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 diff --git a/helm/DEVEL/pxp/pxp/doc/manual/html/pic/node_general.gif b/helm/DEVEL/pxp/pxp/doc/manual/html/pic/node_general.gif deleted file mode 100644 index 5f6358cc3606b2abf7871fdbf33089072c866704..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1294 zcmV+p1@ZbvNk%v~VcP(h0HFW?00030|NpEi=0VQayw)Kkk?H{q9&Whn0bd}z{oZiA+tM)He zx_j<^O)%B%-@dD)@_k%s?_i=Y*IEvRH=*0hRnzifBDb+sr=)omA`Iv5yhFLK%x}v~@FUz>#+Apq*yx>Bhy4<3K(}`SQqqavw(>9r0YffUG~q z-bH!^!HKlzfL=uWc*%>LmjSQN{2|mfBU^hS!x3k zcwl+%#Sowm>V@^6feJzh-wzW~SfGO)u8|>Yr__hrf*E)>!G<6v*b<8+KFHyP?ZF6^ ziz1fRR%nmJ6`EQ-n%1ByC{8D13(x_n8jNs}WmjN|nb=~5GfHVph>IOo-kB4lx`kP2pFO2q_5>x*+PP zem?1`tf%^Rsitwz8mXjs*7^mKDs1)&uPD4~{*1803VI@tw)P5bu%(8frjV-+d+V{X zbmQ7KvCiRaXHG=>>v<%Rct$^>gnKT!DQ0^|V#T_%ZfW!m1uTF9jkqr;N%UK1xin05 z(+1m=)CR(Xk_%y1Eq$~J!61>E?;1^=cyS&(F@kIuM@b@aMSpBeF~hKaJjhY6rKqwZ z9jDv!cq*^FNX+kAYRt?W&rCCJJR9Qe0SM-+b8z0X;Zy7 zCx2U*w2_13O}2=E?}&38iwmCk)sZvn-nZX2e@!yx8LN%2-6$6_x#XGCUAWSlgFZUy zsT01o=MZary6O%SS+~Bg!#+FiW|dsK?Ym>FFz~tf2~Th{GJ}aECnXp$~ru#2^ZBh(s)6CJF!m EJ2@YLvj6}9 diff --git a/helm/DEVEL/pxp/pxp/doc/manual/html/pic/node_term.gif b/helm/DEVEL/pxp/pxp/doc/manual/html/pic/node_term.gif deleted file mode 100644 index 5644c91f34530b9aaa488adcb9006bb2e7af2e83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4284 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 diff --git a/helm/DEVEL/pxp/pxp/doc/manual/html/x107.html b/helm/DEVEL/pxp/pxp/doc/manual/html/x107.html deleted file mode 100644 index 102aba218..000000000 --- a/helm/DEVEL/pxp/pxp/doc/manual/html/x107.html +++ /dev/null @@ -1,1694 +0,0 @@ -Highlights of XML

    The PXP user's guide
    PrevChapter 1. What is XML?Next

    1.2. Highlights of XML

    This section explains many of the features of XML, but not all, and some -features not in detail. For a complete description, see the XML -specification.

    1.2.1. The DTD and the instance

    The DTD contains various declarations; in general you can only use a feature if -you have previously declared it. The document instance file may contain the -full DTD, but it is also possible to split the DTD into an internal and an -external subset. A document must begin as follows if the full DTD is included: - -

    <?xml version="1.0" encoding="Your encoding"?>
    -<!DOCTYPE root [
    -  Declarations
    -]>
    - -These declarations are called the internal subset. Note -that the usage of entities and conditional sections is restricted within the -internal subset.

    If the declarations are located in a different file, you can refer to this file -as follows: - -

    <?xml version="1.0" encoding="Your encoding"?>
    -<!DOCTYPE root SYSTEM "file name">
    - -The declarations in the file are called the external -subset. The file name is called the system -identifier. -It is also possible to refer to the file by a so-called -public identifier, but most XML applications won't use -this feature.

    You can also specify both internal and external subsets. In this case, the -declarations of both subsets are mixed, and if there are conflicts, the -declaration of the internal subset overrides those of the external subset with -the same name. This looks as follows: - -

    <?xml version="1.0" encoding="Your encoding"?>
    -<!DOCTYPE root  SYSTEM "file name" [
    -  Declarations
    -]>

    The XML declaration (the string beginning with <?xml and -ending at ?>) should specify the encoding of the -file. Common values are UTF-8, and the ISO-8859 series of character sets. Note -that every file parsed by the XML processor can begin with an XML declaration -and that every file may have its own encoding.

    The name of the root element must be mentioned directly after the -DOCTYPE string. This means that a full document instance -looks like - -

    <?xml version="1.0" encoding="Your encoding"?>
    -<!DOCTYPE root  SYSTEM "file name" [
    -  Declarations
    -]>
    -
    -<root>
    -  inner contents
    -</root>

    1.2.2. Reserved characters

    Some characters are generally reserved to indicate markup such that they cannot -be used for character data. These characters are <, >, and -&. Furthermore, single and double quotes are sometimes reserved. If you -want to include such a character as character, write it as follows: - -

    • &lt; instead of <

    • &gt; instead of >

    • &amp; instead of &

    • &apos; instead of '

    • &quot; instead of "

    - -All other characters are free in the document instance. It is possible to -include a character by its position in the Unicode alphabet: - -
    &#n;
    - -where n is the decimal number of the -character. Alternatively, you can specify the character by its hexadecimal -number: - -
    &#xn;
    - -In the scope of declarations, the character % is no longer free. To include it -as character, you must use the notations &#37; or -&#x25;.

    Note that besides &lt;, &gt;, &amp;, -&apos;, and &quot; there are no predefines character entities. This is -different from HTML which defines a list of characters that can be referenced -by name (e.g. &auml; for ä); however, if you prefer named characters, you -can declare such entities yourself (see below).

    1.2.3. Elements and ELEMENT declarations

    Elements structure the document instance in a hierarchical way. There is a -top-level element, the root element, which contains a -sequence of inner elements and character sections. The inner elements are -structured in the same way. Every element has an element -type. The beginning of the element is indicated by a start -tag, written - -

    <element-type>
    - -and the element continues until the corresponding end tag -is reached: - -
    </element-type>
    - -In XML, it is not allowed to omit start or end tags, even if the DTD would -permit this. Note that there are no special rules how to interpret spaces or -newlines near start or end tags; all spaces and newlines count.

    Every element type must be declared before it can be used. The declaration -consists of two parts: the ELEMENT declaration describes the content model, -i.e. which inner elements are allowed; the ATTLIST declaration describes the -attributes of the element.

    An element can simply allow everything as content. This is written: - -

    <!ELEMENT name ANY>
    - -On the opposite, an element can be forced to be empty; declared by: - -
    <!ELEMENT name EMPTY>
    - -Note that there is an abbreviated notation for empty element instances: -<name/>.

    There are two more sophisticated forms of declarations: so-called -mixed declarations, and regular -expressions. An element with mixed content contains character data -interspersed with inner elements, and the set of allowed inner elements can be -specified. In contrast to this, a regular expression declaration does not allow -character data, but the inner elements can be described by the more powerful -means of regular expressions.

    A declaration for mixed content looks as follows: - -

    <!ELEMENT name (#PCDATA | element1 | ... | elementn )*>
    - -or if you do not want to allow any inner element, simply - -
    <!ELEMENT name (#PCDATA)>

    Example

    If element type q is declared as - -

    <!ELEMENT q (#PCDATA | r | s)*>
    - -this is a legal instance: - -
    <q>This is character data<r></r>with <s></s>inner elements</q>
    - -But this is illegal because t has not been enumerated in the -declaration: - -
    <q>This is character data<r></r>with <t></t>inner elements</q>

    The other form uses a regular expression to describe the possible contents: - -

    <!ELEMENT name regexp>
    - -The following well-known regexp operators are allowed: - -

    • element-name

    • (subexpr1 , ... , subexprn )

    • (subexpr1 | ... | subexprn )

    • subexpr*

    • subexpr+

    • subexpr?

    - -The , operator indicates a sequence of sub-models, the -| operator describes alternative sub-models. The -* indicates zero or more repetitions, and -+ one or more repetitions. Finally, ? can -be used for optional sub-models. As atoms the regexp can contain names of -elements; note that it is not allowed to include #PCDATA.

    The exact syntax of the regular expressions is rather strange. This can be -explained best by a list of constraints: - -

    • The outermost expression must not be -element-name.

      Illegal: -<!ELEMENT x y>; this must be written as -<!ELEMENT x (y)>.

    • For the unary operators subexpr*, -subexpr+, and -subexpr?, the -subexpr must not be again an -unary operator.

      Illegal: -<!ELEMENT x y**>; this must be written as -<!ELEMENT x (y*)*>.

    • Between ) and one of the unary operatory -*, +, or ?, there must -not be whitespace.

      Illegal: -<!ELEMENT x (y|z) *>; this must be written as -<!ELEMENT x (y|z)*>.

    • There is the additional constraint that the -right parenthsis must be contained in the same entity as the left parenthesis; -see the section about parsed entities below.

    Note that there is another restriction on regular expressions which must be -deterministic. This means that the parser must be able to see by looking at the -next token which alternative is actually used, or whether the repetition -stops. The reason for this is simply compatability with SGML (there is no -intrinsic reason for this rule; XML can live without this restriction).

    Example

    The elements are declared as follows: - -

    <!ELEMENT q (r?, (s | t)+)>
    -<!ELEMENT r (#PCDATA)>
    -<!ELEMENT s EMPTY>
    -<!ELEMENT t (q | r)>
    - -This is a legal instance: - -
    <q><r>Some characters</r><s/></q>
    - -(Note: <s/> is an abbreviation for -<s></s>.) - -It would be illegal to leave <s/> out because at -least one instance of s or t must be -present. It would be illegal, too, if characters existed outside the -r element; the only exception is white space. -- This is -legal, too: - -
    <q><s/><t><q><s/></q></t></q>

    1.2.4. Attribute lists and ATTLIST declarations

    Elements may have attributes. These are put into the start tag of an element as -follows: - -

    <element-name attribute1="value1" ... attributen="valuen">
    - -Instead of -"valuek" -it is also possible to use single quotes as in -'valuek'. -Note that you cannot use double quotes literally within the value of the -attribute if double quotes are the delimiters; the same applies to single -quotes. You can generally not use < and & as characters in attribute -values. It is possible to include the paraphrases &lt;, &gt;, -&amp;, &apos;, and &quot; (and any other reference to a general -entity as long as the entity is not defined by an external file) as well as -&#n;.

    Before you can use an attribute you must declare it. An ATTLIST declaration -looks as follows: - -

    <!ATTLIST element-name 
    -          attribute-name attribute-type attribute-default
    -          ...
    -          attribute-name attribute-type attribute-default
    ->
    - -There are a lot of types, but most important are: - -

    • CDATA: Every string is allowed as attribute value.

    • NMTOKEN: Every nametoken is allowed as attribute -value. Nametokens consist (mainly) of letters, digits, ., :, -, _ in arbitrary -order.

    • NMTOKENS: A space-separated list of nametokens is allowed as -attribute value.

    - -The most interesting default declarations are: - -

    • #REQUIRED: The attribute must be specified.

    • #IMPLIED: The attribute can be specified but also can be -left out. The application can find out whether the attribute was present or -not.

    • "value" or -'value': This particular value is -used as default if the attribute is omitted in the element.

    Example

    This is a valid attribute declaration for element type r: - -

    <!ATTLIST r 
    -          x CDATA    #REQUIRED
    -          y NMTOKEN  #IMPLIED
    -          z NMTOKENS "one two three">
    - -This means that x is a required attribute that cannot be -left out, while y and z are optional. The -XML parser indicates the application whether y is present or -not, but if z is missing the default value -"one two three" is returned automatically.

    This is a valid example of these attributes: - -

    <r x="He said: &quot;I don't like quotes!&quot;" y='1'>

    1.2.5. Parsed entities

    Elements describe the logical structure of the document, while -entities determine the physical structure. Entities are -the pieces of text the parser operates on, mostly files and macros. Entities -may be parsed in which case the parser reads the text and -interprets it as XML markup, or unparsed which simply -means that the data of the entity has a foreign format (e.g. a GIF icon).

    If the parsed entity is going to be used as part of the DTD, it -is called a parameter entity. You can declare a parameter -entity with a fixed text as content by: - -

    <!ENTITY % name "value">
    - -Within the DTD, you can refer to this entity, i.e. read -the text of the entity, by: - -
    %name;
    - -Such entities behave like macros, i.e. when they are referred to, the -macro text is inserted and read instead of the original text. - -

    Example

    For example, you can declare two elements with the same content model by: - -

    <!ENTITY % model "a | b | c">
    -<!ELEMENT x (%model;)>
    -<!ELEMENT y (%model;)>

    - -If the contents of the entity are given as string constant, the entity is -called an internal entity. It is also possible to name a -file to be used as content (an external entity): - -
    <!ENTITY % name SYSTEM "file name">
    - -There are some restrictions for parameter entities: - -

    • If the internal parameter entity contains the first token of a declaration -(i.e. <!), it must also contain the last token of the -declaration, i.e. the >. This means that the entity -either contains a whole number of complete declarations, or some text from the -middle of one declaration.

      Illegal: -

      <!ENTITY % e "(a | b | c)>">
      -<!ELEMENT x %e;
      Because <! is contained in the main -entity, and the corresponding > is contained in the -entity e.

    • If the internal parameter entity contains a left paranthesis, it must also -contain the corresponding right paranthesis.

      Illegal: -

      <!ENTITY % e "(a | b | c">
      -<!ELEMENT x %e;)>
      Because ( is contained in the entity -e, and the corresponding ) is -contained in the main entity.

    • When reading text from an entity, the parser automatically inserts one space -character before the entity text and one space character after the entity -text. However, this rule is not applied within the definition of another -entity.

      Legal: -

       
      -<!ENTITY % suffix "gif"> 
      -<!ENTITY iconfile 'icon.%suffix;'>
      Because %suffix; is referenced within -the definition text for iconfile, no additional spaces are -added.

      Illegal: -

      <!ENTITY % suffix "test">
      -<!ELEMENT x.%suffix; ANY>
      -Because %suffix; is referenced outside the definition -text of another entity, the parser replaces %suffix; by -spacetestspace.

      Illegal: -

      <!ENTITY % e "(a | b | c)">
      -<!ELEMENT x %e;*>
      Because there is a whitespace between ) -and *, which is illegal.

    • An external parameter entity must always consist of a whole number of complete -declarations.

    • In the internal subset of the DTD, a reference to a parameter entity (internal -or external) is only allowed at positions where a new declaration can start.

    If the parsed entity is going to be used in the document instance, it is called -a general entity. Such entities can be used as -abbreviations for frequent phrases, or to include external files. Internal -general entities are declared as follows: - -

    <!ENTITY name "value">
    - -External general entities are declared this way: - -
    <!ENTITY name SYSTEM "file name">
    - -References to general entities are written as: - -
    &name;
    - -The main difference between parameter and general entities is that the former -are only recognized in the DTD and that the latter are only recognized in the -document instance. As the DTD is parsed before the document, the parameter -entities are expanded first; for example it is possible to use the content of a -parameter entity as the name of a general entity: -&#38;%name;;[1].

    General entities must respect the element hierarchy. This means that there must -be an end tag for every start tag in the entity value, and that end tags -without corresponding start tags are not allowed.

    Example

    If the author of a document changes sometimes, it is worthwhile to set up a -general entity containing the names of the authors. If the author changes, you -need only to change the definition of the entity, and do not need to check all -occurrences of authors' names: - -

    <!ENTITY authors "Gerd Stolpmann">
    - -In the document text, you can now refer to the author names by writing -&authors;.

    Illegal: -The following two entities are illegal because the elements in the definition -do not nest properly: - -

    <!ENTITY lengthy-tag "<section textcolor='white' background='graphic'>">
    -<!ENTITY nonsense    "<a></b>">

    Earlier in this introduction we explained that there are substitutes for -reserved characters: &lt;, &gt;, &amp;, &apos;, and -&quot;. These are simply predefined general entities; note that they are -the only predefined entities. It is allowed to define these entities again -as long as the meaning is unchanged.

    1.2.6. Notations and unparsed entities

    Unparsed entities have a foreign format and can thus not be read by the XML -parser. Unparsed entities are always external. The format of an unparsed entity -must have been declared, such a format is called a -notation. The entity can then be declared by referring to -this notation. As unparsed entities do not contain XML text, it is not possible -to include them directly into the document; you can only declare attributes -such that names of unparsed entities are acceptable values.

    As you can see, unparsed entities are too complicated in order to have any -purpose. It is almost always better to simply pass the name of the data file as -normal attribute value, and let the application recognize and process the -foreign format.

    Notes

    [1]

    This construct is only -allowed within the definition of another entity; otherwise extra spaces would -be added (as explained above). Such indirection is not recommended.

    Complete example: -

    <!ENTITY % variant "a">      <!-- or "b" -->
    -<!ENTITY text-a "This is text A.">
    -<!ENTITY text-b "This is text B.">
    -<!ENTITY text "&#38;text-%variant;;">
    -You can now write &text; in the document instance, and -depending on the value of variant either -text-a or text-b is inserted.


    PrevHomeNext
    What is XML?UpA complete example: The readme DTD
    \ No newline at end of file diff --git a/helm/DEVEL/pxp/pxp/doc/manual/html/x1439.html b/helm/DEVEL/pxp/pxp/doc/manual/html/x1439.html deleted file mode 100644 index 267730574..000000000 --- a/helm/DEVEL/pxp/pxp/doc/manual/html/x1439.html +++ /dev/null @@ -1,464 +0,0 @@ -The class type extension
    The PXP user's guide
    PrevChapter 3. The objects representing the documentNext

    3.3. The class type extension

    class type [ 'node ] extension =
    -  object ('self)
    -    method clone : 'self
    -      (* "clone" should return an exact deep copy of the object. *)
    -    method node : 'node
    -      (* "node" returns the corresponding node of this extension. This method
    -       * intended to return exactly what previously has been set by "set_node".
    -       *)
    -    method set_node : 'node -> unit
    -      (* "set_node" is invoked once the extension is associated to a new
    -       * node object.
    -       *)
    -  end
    - -This is the type of classes used for node extensions. For every node of the -document tree, there is not only the node object, but also -an extension object. The latter has minimal -functionality; it has only the necessary methods to be attached to the node -object containing the details of the node instance. The extension object is -called extension because its purpose is extensibility.

    For some reasons, it is impossible to derive the -node classes (i.e. element_impl and -data_impl) such that the subclasses can be extended by new -new methods. But -subclassing nodes is a great feature, because it allows the user to provide -different classes for different types of nodes. The extension objects are a -workaround that is as powerful as direct subclassing, the costs are -some notation overhead.

    Figure 3-6. The structure of nodes and extensions

    The picture shows how the nodes and extensions are linked -together. Every node has a reference to its extension, and every extension has -a reference to its node. The methods extension and -node follow these references; a typical phrase is - -

    self # node # attribute "xy"
    - -to get the value of an attribute from a method defined in the extension object; -or - -
    self # node # iter
    -  (fun n -> n # extension # my_method ...)
    - -to iterate over the subnodes and to call my_method of the -corresponding extension objects.

    Note that extension objects do not have references to subnodes -(or "subextensions") themselves; in order to get one of the children of an -extension you must first go to the node object, then get the child node, and -finally reach the extension that is logically the child of the extension you -started with.

    3.3.1. How to define an extension class

    At minimum, you must define the methods -clone, node, and -set_node such that your class is compatible with the type -extension. The method set_node is called -during the initialization of the node, or after a node has been cloned; the -node object invokes set_node on the extension object to tell -it that this node is now the object the extension is linked to. The extension -must return the node object passed as argument of set_node -when the node method is called.

    The clone method must return a copy of the -extension object; at least the object itself must be duplicated, but if -required, the copy should deeply duplicate all objects and values that are -referred by the extension, too. Whether this is required, depends on the -application; clone is invoked by the node object when one of -its cloning methods is called.

    A good starting point for an extension class: - -

    class custom_extension =
    -  object (self)
    -
    -    val mutable node = (None : custom_extension node option)
    -
    -    method clone = {< >} 
    -
    -    method node =
    -      match node with
    -          None ->
    -            assert false
    -        | Some n -> n
    -
    -    method set_node n =
    -      node <- Some n
    -
    -  end
    - -This class is compatible with extension. The purpose of -defining such a class is, of course, adding further methods; and you can do it -without restriction.

    Often, you want not only one extension class. In this case, -it is the simplest way that all your classes (for one kind of document) have -the same type (with respect to the interface; i.e. it does not matter if your -classes differ in the defined private methods and instance variables, but -public methods count). This approach avoids lots of coercions and problems with -type incompatibilities. It is simple to implement: - -

    class custom_extension =
    -  object (self)
    -    val mutable node = (None : custom_extension node option)
    -
    -    method clone = ...      (* see above *)
    -    method node = ...       (* see above *)
    -    method set_node n = ... (* see above *)
    -
    -    method virtual my_method1 : ...
    -    method virtual my_method2 : ...
    -    ... (* etc. *)
    -  end
    -
    -class custom_extension_kind_A =
    -  object (self)
    -    inherit custom_extension
    -
    -    method my_method1 = ...
    -    method my_method2 = ...
    -  end
    -
    -class custom_extension_kind_B =
    -  object (self)
    -    inherit custom_extension
    -
    -    method my_method1 = ...
    -    method my_method2 = ...
    -  end
    - -If a class does not need a method (e.g. because it does not make sense, or it -would violate some important condition), it is possible to define the method -and to always raise an exception when the method is invoked -(e.g. assert false).

    The latter is a strong recommendation: do not try to further -specialize the types of extension objects. It is difficult, sometimes even -impossible, and almost never worth-while.

    3.3.2. How to bind extension classes to element types

    Once you have defined your extension classes, you can bind them -to element types. The simplest case is that you have only one class and that -this class is to be always used. The parsing functions in the module -Pxp_yacc take a spec argument which -can be customized. If your single class has the name c, -this argument should be - -

    let spec =
    -  make_spec_from_alist
    -    ~data_exemplar:            (new data_impl c)
    -    ~default_element_exemplar: (new element_impl c)
    -    ~element_alist:            []
    -    ()
    - -This means that data nodes will be created from the exemplar passed by -~data_exemplar and that all element nodes will be made from the exemplar -specified by ~default_element_exemplar. In ~element_alist, you can -pass that different exemplars are to be used for different element types; but -this is an optional feature. If you do not need it, pass the empty list.

    Remember that an exemplar is a (node, extension) pair that serves as pattern -when new nodes (and the corresponding extension objects) are added to the -document tree. In this case, the exemplar contains c as -extension, and when nodes are created, the exemplar is cloned, and cloning -makes also a copy of c such that all nodes of the document -tree will have a copy of c as extension.

    The ~element_alist argument can bind -specific element types to specific exemplars; as exemplars may be instances of -different classes it is effectively possible to bind element types to -classes. For example, if the element type "p" is implemented by class "c_p", -and "q" is realized by "c_q", you can pass the following value: - -

    let spec =
    -  make_spec_from_alist
    -    ~data_exemplar:            (new data_impl c)
    -    ~default_element_exemplar: (new element_impl c)
    -    ~element_alist:            
    -      [ "p", new element_impl c_p;
    -        "q", new element_impl c_q;
    -      ]
    -    ()
    - -The extension object c is still used for all data nodes and -for all other element types.


    PrevHomeNext
    The class type nodeUpDetails of the mapping from XML text to the tree representation
    \ No newline at end of file diff --git a/helm/DEVEL/pxp/pxp/doc/manual/html/x1496.html b/helm/DEVEL/pxp/pxp/doc/manual/html/x1496.html deleted file mode 100644 index faea39fc6..000000000 --- a/helm/DEVEL/pxp/pxp/doc/manual/html/x1496.html +++ /dev/null @@ -1,442 +0,0 @@ -Details of the mapping from XML text to the tree representation
    The PXP user's guide
    PrevChapter 3. The objects representing the documentNext

    3.4. Details of the mapping from XML text to the tree representation

    3.4.1. The representation of character-free elements

    If an element declaration does not allow the element to -contain character data, the following rules apply.

    If the element must be empty, i.e. it is declared with the -keyword EMPTY, the element instance must be effectively -empty (it must not even contain whitespace characters). The parser guarantees -that a declared EMPTY element does never contain a data -node, even if the data node represents the empty string.

    If the element declaration only permits other elements to occur -within that element but not character data, it is still possible to insert -whitespace characters between the subelements. The parser ignores these -characters, too, and does not create data nodes for them.

    Example. Consider the following element types: - -

    <!ELEMENT x ( #PCDATA | z )* >
    -<!ELEMENT y ( z )* >
    -<!ELEMENT z EMPTY>
    - -Only x may contain character data, the keyword -#PCDATA indicates this. The other types are character-free.

    The XML term - -

    <x><z/> <z/></x>
    - -will be internally represented by an element node for x -with three subnodes: the first z element, a data node -containing the space character, and the second z element. -In contrast to this, the term - -
    <y><z/> <z/></y>
    - -is represented by an element node for y with only -two subnodes, the two z elements. There -is no data node for the space character because spaces are ignored in the -character-free element y.

    3.4.2. The representation of character data

    The XML specification allows all Unicode characters in XML -texts. This parser can be configured such that UTF-8 is used to represent the -characters internally; however, the default character encoding is -ISO-8859-1. (Currently, no other encodings are possible for the internal string -representation; the type Pxp_types.rep_encoding enumerates -the possible encodings. Principially, the parser could use any encoding that is -ASCII-compatible, but there are currently only lexical analyzers for UTF-8 and -ISO-8859-1. It is currently impossible to use UTF-16 or UCS-4 as internal -encodings (or other multibyte encodings which are not ASCII-compatible) unless -major parts of the parser are rewritten - unlikely...)

    The internal encoding may be different from the external encoding (specified -in the XML declaration <?xml ... encoding="..."?>); in -this case the strings are automatically converted to the internal encoding.

    If the internal encoding is ISO-8859-1, it is possible that there are -characters that cannot be represented. In this case, the parser ignores such -characters and prints a warning (to the collect_warning -object that must be passed when the parser is called).

    The XML specification allows lines to be separated by single LF -characters, by CR LF character sequences, or by single CR -characters. Internally, these separators are always converted to single LF -characters.

    The parser guarantees that there are never two adjacent data -nodes; if necessary, data material that would otherwise be represented by -several nodes is collapsed into one node. Note that you can still create node -trees with adjacent data nodes; however, the parser does not return such trees.

    Note that CDATA sections are not represented specially; such -sections are added to the current data material that being collected for the -next data node.

    3.4.3. The representation of entities within documents

    Entities are not represented within -documents! If the parser finds an entity reference in the document -content, the reference is immediately expanded, and the parser reads the -expansion text instead of the reference.

    3.4.4. The representation of attributes

    As attribute -values are composed of Unicode characters, too, the same problems with the -character encoding arise as for character material. Attribute values are -converted to the internal encoding, too; and if there are characters that -cannot be represented, these are dropped, and a warning is printed.

    Attribute values are normalized before they are returned by -methods like attribute. First, any remaining entity -references are expanded; if necessary, expansion is performed recursively. -Second, newline characters (any of LF, CR LF, or CR characters) are converted -to single space characters. Note that especially the latter action is -prescribed by the XML standard (but is not converted -such that it is still possible to include line feeds into attributes).

    3.4.5. The representation of processing instructions

    Processing instructions are parsed to some extent: The first word of the -PI is called the target, and it is stored separated from the rest of the PI: - -

    <?target rest?>
    - -The exact location where a PI occurs is not represented (by default). The -parser puts the PI into the object that represents the embracing construct (an -element, a DTD, or the whole document); that means you can find out which PIs -occur in a certain element, in the DTD, or in the whole document, but you -cannot lookup the exact position within the construct.

    If you require the exact location of PIs, it is possible to -create extra nodes for them. This mode is controled by the option -enable_pinstr_nodes. The additional nodes have the node type -T_pinstr target, and are created -from special exemplars contained in the spec (see -pxp_document.mli).

    3.4.6. The representation of comments

    Normally, comments are not represented; they are dropped by -default. However, if you require them, it is possible to create -T_comment nodes for them. This mode can be specified by the -option enable_comment_nodes. Comment nodes are created from -special exemplars contained in the spec (see -pxp_document.mli). You can access the contents of comments through the -method comment.

    3.4.7. The attributes xml:lang and -xml:space

    These attributes are not supported specially; they are handled -like any other attribute.

    3.4.8. And what about namespaces?

    Currently, there is no special support for namespaces. -However, the parser allows it that the colon occurs in names such that it is -possible to implement namespaces on top of the current API.

    Some future release of PXP will support namespaces as built-in -feature...


    PrevHomeNext
    The class type extensionUpConfiguring and calling the parser
    \ No newline at end of file diff --git a/helm/DEVEL/pxp/pxp/doc/manual/html/x1629.html b/helm/DEVEL/pxp/pxp/doc/manual/html/x1629.html deleted file mode 100644 index 06b1e60ea..000000000 --- a/helm/DEVEL/pxp/pxp/doc/manual/html/x1629.html +++ /dev/null @@ -1,895 +0,0 @@ -Resolvers and sources
    The PXP user's guide
    PrevChapter 4. Configuring and calling the parserNext

    4.2. Resolvers and sources

    4.2.1. Using the built-in resolvers (called sources)

    The type source enumerates the two -possibilities where the document to parse comes from. - -

    type source =
    -    Entity of ((dtd -> Pxp_entity.entity) * Pxp_reader.resolver)
    -  | ExtID of (ext_id * Pxp_reader.resolver)
    - -You normally need not to worry about this type as there are convenience -functions that create source values: - - -

    • from_file s: The document is read from -file s; you may specify absolute or relative path names. -The file name must be encoded as UTF-8 string.

      There is an optional argument ~system_encoding -specifying the character encoding which is used for the names of the file -system. For example, if this encoding is ISO-8859-1 and s is -also a ISO-8859-1 string, you can form the source: - -

      let s_utf8  =  recode_string ~in_enc:`Enc_iso88591 ~out_enc:`Enc_utf8 s in
      -from_file ~system_encoding:`Enc_iso88591 s_utf8

      This source has the advantage that -it is able to resolve inner external entities; i.e. if your document includes -data from another file (using the SYSTEM attribute), this -mode will find that file. However, this mode cannot resolve -PUBLIC identifiers nor SYSTEM identifiers -other than "file:".

    • from_channel ch: The document is read -from the channel ch. In general, this source also supports -file URLs found in the document; however, by default only absolute URLs are -understood. It is possible to associate an ID with the channel such that the -resolver knows how to interpret relative URLs: - -

      from_channel ~id:(System "file:///dir/dir1/") ch
      - -There is also the ~system_encoding argument specifying how file names are -encoded. - The example from above can also be written (but it is no -longer possible to interpret relative URLs because there is no ~id argument, -and computing this argument is relatively complicated because it must -be a valid URL): - -
      let ch = open_in s in
      -let src = from_channel ~system_encoding:`Enc_iso88591 ch in
      -...;
      -close_in ch

    • from_string s: The string -s is the document to parse. This mode is not able to -interpret file names of SYSTEM clauses, nor it can look up -PUBLIC identifiers.

      Normally, the encoding of the string is detected as usual -by analyzing the XML declaration, if any. However, it is also possible to -specify the encoding directly: - -

      let src = from_string ~fixenc:`ISO-8859-2 s

    • ExtID (id, r): The document to parse -is denoted by the identifier id (either a -SYSTEM or PUBLIC clause), and this -identifier is interpreted by the resolver r. Use this mode -if you have written your own resolver.

      Which character sets are possible depends on the passed -resolver r.

    • Entity (get_entity, r): The document -to parse is returned by the function invocation get_entity -dtd, where dtd is the DTD object to use (it may be -empty). Inner external references occuring in this entity are resolved using -the resolver r.

      Which character sets are possible depends on the passed -resolver r.

    4.2.2. The resolver API

    A resolver is an object that can be opened like a file, but you -do not pass the file name to the resolver, but the XML identifier of the entity -to read from (either a SYSTEM or PUBLIC -clause). When opened, the resolver must return the -Lexing.lexbuf that reads the characters. The resolver can -be closed, and it can be cloned. Furthermore, it is possible to tell the -resolver which character set it should assume. - The following from Pxp_reader: - -

    exception Not_competent
    -exception Not_resolvable of exn
    -
    -class type resolver =
    -  object
    -    method init_rep_encoding : rep_encoding -> unit
    -    method init_warner : collect_warnings -> unit
    -    method rep_encoding : rep_encoding
    -    method open_in : ext_id -> Lexing.lexbuf
    -    method close_in : unit
    -    method change_encoding : string -> unit
    -    method clone : resolver
    -    method close_all : unit
    -  end
    - -The resolver object must work as follows:

    • When the parser is called, it tells the resolver the -warner object and the internal encoding by invoking -init_warner and init_rep_encoding. The -resolver should store these values. The method rep_encoding -should return the internal encoding.

    • If the parser wants to read from the resolver, it invokes -the method open_in. Either the resolver succeeds, in which -case the Lexing.lexbuf reading from the file or stream must -be returned, or opening fails. In the latter case the method implementation -should raise an exception (see below).

    • If the parser finishes reading, it calls the -close_in method.

    • If the parser finds a reference to another external -entity in the input stream, it calls clone to get a second -resolver which must be initially closed (not yet connected with an input -stream). The parser then invokes open_in and the other -methods as described.

    • If you already know the character set of the input -stream, you should recode it to the internal encoding, and define the method -change_encoding as an empty method.

    • If you want to support multiple external character sets, -the object must follow a much more complicated protocol. Directly after -open_in has been called, the resolver must return a lexical -buffer that only reads one byte at a time. This is only possible if you create -the lexical buffer with Lexing.from_function; the function -must then always return 1 if the EOF is not yet reached, and 0 if EOF is -reached. If the parser has read the first line of the document, it will invoke -change_encoding to tell the resolver which character set to -assume. From this moment, the object can return more than one byte at once. The -argument of change_encoding is either the parameter of the -"encoding" attribute of the XML declaration, or the empty string if there is -not any XML declaration or if the declaration does not contain an encoding -attribute.

      At the beginning the resolver must only return one -character every time something is read from the lexical buffer. The reason for -this is that you otherwise would not exactly know at which position in the -input stream the character set changes.

      If you want automatic recognition of the character set, -it is up to the resolver object to implement this.

    • If an error occurs, the parser calls the method -close_all for the top-level resolver; this method should -close itself (if not already done) and all clones.

    Exceptions. It is possible to chain resolvers such that when the first resolver is not able -to open the entity, the other resolvers of the chain are tried in turn. The -method open_in should raise the exception -Not_competent to indicate that the next resolver should try -to open the entity. If the resolver is able to handle the ID, but some other -error occurs, the exception Not_resolvable should be raised -to force that the chain breaks. -

    Example: How to define a resolver that is equivalent to -from_string: ...

    4.2.3. Predefined resolver components

    There are some classes in Pxp_reader that define common resolver behaviour. - -

    class resolve_read_this_channel : 
    -    ?id:ext_id -> 
    -    ?fixenc:encoding -> 
    -    ?auto_close:bool -> 
    -    in_channel -> 
    -        resolver
    - -Reads from the passed channel (it may be even a pipe). If the -~id argument is passed to the object, the created resolver -accepts only this ID. Otherwise all IDs are accepted. - Once the resolver has -been cloned, it does not accept any ID. This means that this resolver cannot -handle inner references to external entities. Note that you can combine this -resolver with another resolver that can handle inner references (such as -resolve_as_file); see class 'combine' below. - If you pass the -~fixenc argument, the encoding of the channel is set to the -passed value, regardless of any auto-recognition or any XML declaration. - If -~auto_close = true (which is the default), the channel is -closed after use. If ~auto_close = false, the channel is -left open. -

    class resolve_read_any_channel : 
    -    ?auto_close:bool -> 
    -    channel_of_id:(ext_id -> (in_channel * encoding option)) -> 
    -        resolver
    - -This resolver calls the function ~channel_of_id to open a -new channel for the passed ext_id. This function must either -return the channel and the encoding, or it must fail with Not_competent. The -function must return None as encoding if the default -mechanism to recognize the encoding should be used. It must return -Some e if it is already known that the encoding of the -channel is e. If ~auto_close = true -(which is the default), the channel is closed after use. If -~auto_close = false, the channel is left open.

    class resolve_read_url_channel :
    -    ?base_url:Neturl.url ->
    -    ?auto_close:bool -> 
    -    url_of_id:(ext_id -> Neturl.url) -> 
    -    channel_of_url:(Neturl.url -> (in_channel * encoding option)) -> 
    -        resolver
    - -When this resolver gets an ID to read from, it calls the function -~url_of_id to get the corresponding URL. This URL may be a -relative URL; however, a URL scheme must be used which contains a path. The -resolver converts the URL to an absolute URL if necessary. The second -function, ~channel_of_url, is fed with the absolute URL as -input. This function opens the resource to read from, and returns the channel -and the encoding of the resource.

    Both functions, ~url_of_id and -~channel_of_url, can raise Not_competent to indicate that -the object is not able to read from the specified resource. However, there is a -difference: A Not_competent from ~url_of_id is left as it -is, but a Not_competent from ~channel_of_url is converted to -Not_resolvable. So only ~url_of_id decides which URLs are -accepted by the resolver and which not.

    The function ~channel_of_url must return -None as encoding if the default mechanism to recognize the -encoding should be used. It must return Some e if it is -already known that the encoding of the channel is e.

    If ~auto_close = true (which is the default), the channel is -closed after use. If ~auto_close = false, the channel is -left open.

    Objects of this class contain a base URL relative to which relative URLs are -interpreted. When creating a new object, you can specify the base URL by -passing it as ~base_url argument. When an existing object is -cloned, the base URL of the clone is the URL of the original object. - Note -that the term "base URL" has a strict definition in RFC 1808.

    class resolve_read_this_string : 
    -    ?id:ext_id -> 
    -    ?fixenc:encoding -> 
    -    string -> 
    -        resolver
    - -Reads from the passed string. If the ~id argument is passed -to the object, the created resolver accepts only this ID. Otherwise all IDs are -accepted. - Once the resolver has been cloned, it does not accept any ID. This -means that this resolver cannot handle inner references to external -entities. Note that you can combine this resolver with another resolver that -can handle inner references (such as resolve_as_file); see class 'combine' -below. - If you pass the ~fixenc argument, the encoding of -the string is set to the passed value, regardless of any auto-recognition or -any XML declaration.

    class resolve_read_any_string : 
    -    string_of_id:(ext_id -> (string * encoding option)) -> 
    -        resolver
    - -This resolver calls the function ~string_of_id to get the -string for the passed ext_id. This function must either -return the string and the encoding, or it must fail with Not_competent. The -function must return None as encoding if the default -mechanism to recognize the encoding should be used. It must return -Some e if it is already known that the encoding of the -string is e.

    class resolve_as_file :
    -    ?file_prefix:[ `Not_recognized | `Allowed | `Required ] ->
    -    ?host_prefix:[ `Not_recognized | `Allowed | `Required ] ->
    -    ?system_encoding:encoding ->
    -    ?url_of_id:(ext_id -> Neturl.url) -> 
    -    ?channel_of_url: (Neturl.url -> (in_channel * encoding option)) ->
    -    unit -> 
    -        resolver
    -Reads from the local file system. Every file name is interpreted as -file name of the local file system, and the referred file is read.

    The full form of a file URL is: file://host/path, where -'host' specifies the host system where the file identified 'path' -resides. host = "" or host = "localhost" are accepted; other values -will raise Not_competent. The standard for file URLs is -defined in RFC 1738.

    Option ~file_prefix: Specifies how the "file:" prefix of -file names is handled: -

    • `Not_recognized:The prefix is not -recognized.

    • `Allowed: The prefix is allowed but -not required (the default).

    • `Required: The prefix is -required.

    Option ~host_prefix: Specifies how the "//host" phrase of -file names is handled: -

    • `Not_recognized:The prefix is not -recognized.

    • `Allowed: The prefix is allowed but -not required (the default).

    • `Required: The prefix is -required.

    Option ~system_encoding: Specifies the encoding of file -names of the local file system. Default: UTF-8.

    Options ~url_of_id, ~channel_of_url: Not -for the casual user!

    class combine : 
    -    ?prefer:resolver -> 
    -    resolver list -> 
    -        resolver
    - -Combines several resolver objects. If a concrete entity with an -ext_id is to be opened, the combined resolver tries the -contained resolvers in turn until a resolver accepts opening the entity -(i.e. it does not raise Not_competent on open_in).

    Clones: If the 'clone' method is invoked before 'open_in', all contained -resolvers are cloned separately and again combined. If the 'clone' method is -invoked after 'open_in' (i.e. while the resolver is open), additionally the -clone of the active resolver is flagged as being preferred, i.e. it is tried -first.


    PrevHomeNext
    Configuring and calling the parserUpThe DTD classes
    \ No newline at end of file diff --git a/helm/DEVEL/pxp/pxp/doc/manual/html/x1812.html b/helm/DEVEL/pxp/pxp/doc/manual/html/x1812.html deleted file mode 100644 index 34f09c208..000000000 --- a/helm/DEVEL/pxp/pxp/doc/manual/html/x1812.html +++ /dev/null @@ -1,517 +0,0 @@ -The DTD classes
    The PXP user's guide
    PrevChapter 4. Configuring and calling the parserNext

    4.3. The DTD classes

    Sorry, not yet -written. Perhaps the interface definition of Pxp_dtd expresses the same:

    
(**********************************************************************)
    -(*                                                                    *)
    -(* Pxp_dtd:                                                           *)
    -(*     Object model of document type declarations                     *)
    -(*                                                                    *)
    -(**********************************************************************)
    -
    -(* ======================================================================
    - * OVERVIEW
    - *
    - * class dtd ............... represents the whole DTD, including element
    - *                           declarations, entity declarations, notation
    - *                           declarations, and processing instructions
    - * class dtd_element ....... represents an element declaration consisting
    - *                           of a content model and an attribute list
    - *                           declaration
    - * class dtd_notation ...... represents a notation declaration
    - * class proc_instruction .. represents a processing instruction
    - * ======================================================================
    - *
    - *)
    -
    -
    -class dtd :
    -  (* Creation:
    -   *   new dtd
    -   * creates a new, empty DTD object without any declaration, without a root
    -   * element, without an ID.
    -   *)
    -  Pxp_types.collect_warnings -> 
    -  Pxp_types.rep_encoding ->
    -  object
    -    method root : string option
    -      (* get the name of the root element if present *)
    -
    -    method set_root : string -> unit
    -      (* set the name of the root element. This method can be invoked 
    -       * only once
    -       *)
    -
    -    method id : Pxp_types.dtd_id option
    -      (* get the identifier for this DTD *)
    -
    -    method set_id : Pxp_types.dtd_id -> unit
    -      (* set the identifier. This method can be invoked only once *)
    -
    -    method encoding : Pxp_types.rep_encoding
    -      (* returns the encoding used for character representation *)
    -
    -
    -    method allow_arbitrary : unit
    -      (* After this method has been invoked, the object changes its behaviour:
    -       * - elements and notations that have not been added may be used in an
    -       *   arbitrary way; the methods "element" and "notation" indicate this
    -       *   by raising Undeclared instead of Validation_error.
    -       *)
    -
    -    method disallow_arbitrary : unit
    -
    -    method arbitrary_allowed : bool
    -      (* Returns whether arbitrary contents are allowed or not. *)
    -
    -    method standalone_declaration : bool
    -      (* Whether there is a 'standalone' declaration or not. Strictly 
    -       * speaking, this declaration is not part of the DTD, but it is
    -       * included here because of practical reasons. 
    -       * If not set, this property defaults to 'false'.
    -       *)
    -
    -    method set_standalone_declaration : bool -> unit
    -      (* Sets the 'standalone' declaration. *)
    -
    -
    -    method add_element : dtd_element -> unit
    -      (* add the given element declaration to this DTD. Raises Not_found
    -       * if there is already an element declaration with the same name.
    -       *)
    -
    -    method add_gen_entity : Pxp_entity.entity -> bool -> unit
    -      (* add_gen_entity e extdecl:
    -       * add the entity 'e' as general entity to this DTD (general entities
    -       * are those represented by &name;). If there is already a declaration
    -       * with the same name, the second definition is ignored; as exception from
    -       * this rule, entities with names "lt", "gt", "amp", "quot", and "apos"
    -       * may only be redeclared with a definition that is equivalent to the
    -       * standard definition; otherwise a Validation_error is raised.
    -       *
    -       * 'extdecl': 'true' indicates that the entity declaration occurs in
    -       * an external entity. (Used for the standalone check.)
    -       *)
    -
    -    method add_par_entity : Pxp_entity.entity -> unit
    -      (* add the given entity as parameter entity to this DTD (parameter
    -       * entities are those represented by %name;). If there is already a 
    -       * declaration with the same name, the second definition is ignored.
    -       *)
    -
    -    method add_notation : dtd_notation -> unit
    -      (* add the given notation to this DTD. If there is already a declaration
    -       * with the same name, a Validation_error is raised.
    -       *)
    -
    -    method add_pinstr : proc_instruction -> unit
    -      (* add the given processing instruction to this DTD. *)
    -
    -    method element : string -> dtd_element
    -      (* looks up the element declaration with the given name. Raises 
    -       * Validation_error if the element cannot be found. (If "allow_arbitrary"
    -       * has been invoked before, Unrestricted is raised instead.)
    -       *)
    -
    -    method element_names : string list
    -      (* returns the list of the names of all element declarations. *)
    -
    -    method gen_entity : string -> (Pxp_entity.entity * bool)
    -      (* let e, extdecl = obj # gen_entity n:
    -       * looks up the general entity 'e' with the name 'n'. Raises
    -       * WF_error if the entity cannot be found.
    -       * 'extdecl': indicates whether the entity declaration occured in an 
    -       * external entity.
    -       *)
    -
    -    method gen_entity_names : string list
    -      (* returns the list of all general entity names *)
    -
    -    method par_entity : string -> Pxp_entity.entity
    -      (* looks up the parameter entity with the given name. Raises
    -       * WF_error if the entity cannot be found.
    -       *)
    -
    -    method par_entity_names : string list
    -      (* returns the list of all parameter entity names *)
    -
    -    method notation : string -> dtd_notation
    -      (* looks up the notation declaration with the given name. Raises
    -       * Validation_error if the notation cannot be found. (If "allow_arbitrary"
    -       * has been invoked before, Unrestricted is raised instead.)
    -       *)
    -
    -    method notation_names : string list
    -      (* Returns the list of the names of all added notations *)
    -
    -    method pinstr : string -> proc_instruction list
    -      (* looks up all processing instructions with the given target.
    -       * The "target" is the identifier following "<?".
    -       * Note: It is not possible to find out the exact position of the
    -       * processing instruction.
    -       *)
    -
    -    method pinstr_names : string list
    -      (* Returns the list of the names (targets) of all added pinstrs *)
    -
    -    method validate : unit
    -      (* ensures that the DTD is valid. This method is optimized such that
    -       * actual validation is only performed if DTD has changed.
    -       * If the DTD is invalid, mostly a Validation_error is raised,
    -       * but other exceptions are possible, too.
    -       *)
    -
    -    method only_deterministic_models : unit
    -      (* Succeeds if all regexp content models are deterministic. 
    -       * Otherwise Validation_error.
    -       *)
    -
    -    method write : Pxp_types.output_stream -> Pxp_types.encoding -> bool -> unit
    -      (* write_compact_as_latin1 os enc doctype:
    -       * Writes the DTD as 'enc'-encoded string to 'os'. If 'doctype', a 
    -       * DTD like <!DOCTYPE root [ ... ]> is written. If 'not doctype',
    -       * only the declarations are written (the material within the
    -       * square brackets).
    -       *)
    -
    -    method write_compact_as_latin1 : Pxp_types.output_stream -> bool -> unit
    -      (* DEPRECATED METHOD; included only to keep compatibility with
    -       * older versions of the parser
    -       *)
    -
    -
    -    (*----------------------------------------*)
    -    method invalidate : unit
    -      (* INTERNAL METHOD *)
    -    method warner : Pxp_types.collect_warnings
    -      (* INTERNAL METHOD *)
    -  end
    -
    -
    -
    -(* ---------------------------------------------------------------------- *)
    -
    -and dtd_element : dtd -> string -> 
    -  (* Creation:
    -   *   new dtd_element init_dtd init_name:
    -   * creates a new dtd_element object for init_dtd with init_name.
    -   * The strings are represented in the same encoding as init_dtd.
    -   *)
    -  object
    -
    -    method name : string
    -      (* returns the name of the declared element *)
    -
    -    method externally_declared : bool
    -      (* returns whether the element declaration occurs in an external
    -       * entity.
    -       *)
    -
    -    method content_model : Pxp_types.content_model_type
    -      (* get the content model of this element declaration, or Unspecified *)
    -
    -    method content_dfa : Pxp_dfa.dfa_definition option
    -      (* return the DFA of the content model if there is a DFA, or None.
    -       * A DFA exists only for regexp style content models which are
    -       * deterministic.
    -       *)
    -
    -    method set_cm_and_extdecl : Pxp_types.content_model_type -> bool -> unit
    -      (* set_cm_and_extdecl cm extdecl:
    -       * set the content model to 'cm'. Once the content model is not 
    -       * Unspecified, it cannot be set to a different value again.
    -       * Furthermore, it is set whether the element occurs in an external
    -       * entity ('extdecl').
    -       *)
    -
    -    method encoding : Pxp_types.rep_encoding
    -      (* Return the encoding of the strings *)
    -
    -    method allow_arbitrary : unit
    -      (* After this method has been invoked, the object changes its behaviour:
    -       * - attributes that have not been added may be used in an
    -       *   arbitrary way; the method "attribute" indicates this
    -       *   by raising Undeclared instead of Validation_error.
    -       *)
    -
    -    method disallow_arbitrary : unit
    -
    -    method arbitrary_allowed : bool
    -      (* Returns whether arbitrary attributes are allowed or not. *)
    -
    -    method attribute : string -> 
    -                         Pxp_types.att_type * Pxp_types.att_default
    -      (* get the type and default value of a declared attribute, or raise
    -       * Validation_error if the attribute does not exist.
    -       * If 'arbitrary_allowed', the exception Undeclared is raised instead
    -       * of Validation_error.
    -       *)
    -
    -    method attribute_violates_standalone_declaration : 
    -               string -> string option -> bool
    -      (* attribute_violates_standalone_declaration name v:
    -       * Checks whether the attribute 'name' violates the "standalone"
    -       * declaration if it has value 'v'.
    -       * The method returns true if:
    -       * - The attribute declaration occurs in an external entity, 
    -       * and if one of the two conditions holds:
    -       * - v = None, and there is a default for the attribute value
    -       * - v = Some s, and the type of the attribute is not CDATA,
    -       *   and s changes if normalized according to the rules of the
    -       *   attribute type.
    -       *
    -       * The method raises Validation_error if the attribute does not exist.
    -       * If 'arbitrary_allowed', the exception Undeclared is raised instead
    -       * of Validation_error.
    -       *)
    -
    -    method attribute_names : string list
    -      (* get the list of all declared attributes *)
    -
    -    method names_of_required_attributes : string list
    -      (* get the list of all attributes that are specified as required 
    -       * attributes
    -       *)
    -
    -    method id_attribute_name : string option
    -      (* Returns the name of the attribute with type ID, or None. *)
    -
    -    method idref_attribute_names : string list
    -      (* Returns the names of the attributes with type IDREF or IDREFS. *)
    -
    -    method add_attribute : string -> 
    -                           Pxp_types.att_type -> 
    -			   Pxp_types.att_default -> 
    -			   bool ->
    -			     unit
    -      (* add_attribute name type default extdecl:
    -       * add an attribute declaration for an attribute with the given name,
    -       * type, and default value. If there is more than one declaration for
    -       * an attribute name, the first declaration counts; the other declarations
    -       * are ignored.
    -       * 'extdecl': if true, the attribute declaration occurs in an external
    -       * entity. This property is used to check the "standalone" attribute.
    -       *)
    -
    -    method validate : unit
    -      (* checks whether this element declaration (i.e. the content model and
    -       * all attribute declarations) is valid for the associated DTD.
    -       * Raises mostly Validation_error if the validation fails.
    -       *)
    -
    -    method write : Pxp_types.output_stream -> Pxp_types.encoding -> unit
    -      (* write_compact_as_latin1 os enc:
    -       * Writes the <!ELEMENT ... > declaration to 'os' as 'enc'-encoded string.
    -       *)
    -
    -    method write_compact_as_latin1 : Pxp_types.output_stream -> unit
    -      (* DEPRECATED METHOD; included only to keep compatibility with
    -       * older versions of the parser
    -       *)
    -  end
    -
    -(* ---------------------------------------------------------------------- *)
    -
    -and dtd_notation : string -> Pxp_types.ext_id -> Pxp_types.rep_encoding ->
    -  (* Creation:
    -   *    new dtd_notation a_name an_external_ID init_encoding
    -   * creates a new dtd_notation object with the given name and the given
    -   * external ID.
    -   *)
    -  object
    -    method name : string
    -    method ext_id : Pxp_types.ext_id
    -    method encoding : Pxp_types.rep_encoding
    -
    -    method write : Pxp_types.output_stream -> Pxp_types.encoding -> unit
    -      (* write_compact_as_latin1 os enc:
    -       * Writes the <!NOTATION ... > declaration to 'os' as 'enc'-encoded 
    -       * string.
    -       *)
    -
    -    method write_compact_as_latin1 : Pxp_types.output_stream -> unit
    -      (* DEPRECATED METHOD; included only to keep compatibility with
    -       * older versions of the parser
    -       *)
    -
    -  end
    -
    -(* ---------------------------------------------------------------------- *)
    -
    -and proc_instruction : string -> string -> Pxp_types.rep_encoding ->
    -  (* Creation:
    -   *   new proc_instruction a_target a_value
    -   * creates a new proc_instruction object with the given target string and
    -   * the given value string. 
    -   * Note: A processing instruction is written as <?target value?>. 
    -   *)
    -  object
    -    method target : string
    -    method value : string
    -    method encoding : Pxp_types.rep_encoding
    -
    -    method write : Pxp_types.output_stream -> Pxp_types.encoding -> unit
    -      (* write os enc:
    -       * Writes the <?...?> PI to 'os' as 'enc'-encoded string.
    -       *)
    -
    -    method write_compact_as_latin1 : Pxp_types.output_stream -> unit
    -      (* DEPRECATED METHOD; included only to keep compatibility with
    -       * older versions of the parser
    -       *)
    -
    -    method parse_pxp_option : (string * string * (string * string) list)
    -      (* Parses a PI containing a PXP option. Such PIs are formed like:
    -       *   <?target option-name option-att="value" option-att="value" ... ?>
    -       * The method returns a triple
    -       *   (target, option-name, [option-att, value; ...])
    -       * or raises Error.
    -       *)
    -
    -  end
    -
    -;;


    PrevHomeNext
    Resolvers and sourcesUpInvoking the parser
    \ No newline at end of file diff --git a/helm/DEVEL/pxp/pxp/doc/manual/html/x1818.html b/helm/DEVEL/pxp/pxp/doc/manual/html/x1818.html deleted file mode 100644 index b289a3674..000000000 --- a/helm/DEVEL/pxp/pxp/doc/manual/html/x1818.html +++ /dev/null @@ -1,779 +0,0 @@ -Invoking the parser
    The PXP user's guide
    PrevChapter 4. Configuring and calling the parserNext

    4.4. Invoking the parser

    Here a description of Pxp_yacc.

    4.4.1. Defaults

    The following defaults are available: - -

    val default_config : config
    -val default_extension : ('a node extension) as 'a
    -val default_spec : ('a node extension as 'a) spec

    4.4.2. Parsing functions

    In the following, the term "closed document" refers to -an XML structure like - -

    <!DOCTYPE ... [ declarations ] >
    -<root>
    -...
    -</root>
    - -The term "fragment" refers to an XML structure like - -
    <root>
    -...
    -</root>
    - -i.e. only to one isolated element instance.

    val parse_dtd_entity : config -> source -> dtd
    - -Parses the declarations which are contained in the entity, and returns them as -dtd object.

    val extract_dtd_from_document_entity : config -> source -> dtd
    - -Extracts the DTD from a closed document. Both the internal and the external -subsets are extracted and combined to one dtd object. This -function does not parse the whole document, but only the parts that are -necessary to extract the DTD.

    val parse_document_entity : 
    -    ?transform_dtd:(dtd -> dtd) ->
    -    ?id_index:('ext index) ->
    -    config -> 
    -    source -> 
    -    'ext spec -> 
    -        'ext document
    - -Parses a closed document and validates it against the DTD that is contained in -the document (internal and external subsets). The option -~transform_dtd can be used to transform the DTD in the -document, and to use the transformed DTD for validation. If -~id_index is specified, an index of all ID attributes is -created.

    val parse_wfdocument_entity : 
    -    config -> 
    -    source -> 
    -    'ext spec -> 
    -        'ext document
    - -Parses a closed document, but checks it only on well-formedness.

    val parse_content_entity  : 
    -    ?id_index:('ext index) ->
    -    config ->  
    -    source -> 
    -    dtd -> 
    -    'ext spec -> 
    -        'ext node
    - -Parses a fragment, and validates the element.

    val parse_wfcontent_entity : 
    -    config -> 
    -    source -> 
    -    'ext spec -> 
    -        'ext node
    - -Parses a fragment, but checks it only on well-formedness.

    4.4.3. Configuration options

    type config =
    -    { warner : collect_warnings;
    -      errors_with_line_numbers : bool;
    -      enable_pinstr_nodes : bool;
    -      enable_super_root_node : bool;
    -      enable_comment_nodes : bool;
    -      encoding : rep_encoding;
    -      recognize_standalone_declaration : bool;
    -      store_element_positions : bool;
    -      idref_pass : bool;
    -      validate_by_dfa : bool;
    -      accept_only_deterministic_models : bool;
    -      ...
    -    }
    - -

    • warner:The parser prints -warnings by invoking the method warn for this warner -object. (Default: all warnings are dropped)

    • errors_with_line_numbers:If -true, errors contain line numbers; if false, errors contain only byte -positions. The latter mode is faster. (Default: true)

    • enable_pinstr_nodes:If true, -the parser creates extra nodes for processing instructions. If false, -processing instructions are simply added to the element or document surrounding -the instructions. (Default: false)

    • enable_super_root_node:If -true, the parser creates an extra node which is the parent of the root of the -document tree. This node is called super root; it is an element with type -T_super_root. - If there are processing instructions outside -the root element and outside the DTD, they are added to the super root instead -of the document. - If false, the super root node is not created. (Default: -false)

    • enable_comment_nodes:If true, -the parser creates nodes for comments with type T_comment; -if false, such nodes are not created. (Default: false)

    • encoding:Specifies the -internal encoding of the parser. Most strings are then represented according to -this encoding; however there are some exceptions (especially -ext_id values which are always UTF-8 encoded). -(Default: `Enc_iso88591)

    • recognize_standalone_declaration: If true and if the parser is -validating, the standalone="yes" declaration forces that it -is checked whether the document is a standalone document. - If false, or if the -parser is in well-formedness mode, such declarations are ignored. -(Default: true)

    • store_element_positions: If -true, for every non-data node the source position is stored. If false, the -position information is lost. If available, you can get the positions of nodes -by invoking the position method. -(Default: true)

    • idref_pass:If true and if -there is an ID index, the parser checks whether every IDREF or IDREFS attribute -refer to an existing node; this requires that the parser traverses the whole -doument tree. If false, this check is left out. (Default: false)

    • validate_by_dfa:If true and if -the content model for an element type is deterministic, a deterministic finite -automaton is used to validate whether the element contents match the content -model of the type. If false, or if a DFA is not available, a backtracking -algorithm is used for validation. (Default: true)

    • accept_only_deterministic_models: If true, only deterministic content -models are accepted; if false, any syntactically correct content models can be -processed. (Default: true)

    4.4.4. Which configuration should I use?

    First, I recommend to vary the default configuration instead of -creating a new configuration record. For instance, to set -idref_pass to true, change the default -as in: -

    let config = { default_config with idref_pass = true }
    -The background is that I can add more options to the record in future versions -of the parser without breaking your programs.

    Do I need extra nodes for processing instructions? By default, such nodes are not created. This does not mean that the -processing instructions are lost; however, you cannot find out the exact -location where they occur. For example, the following XML text - -

    <x><?pi1?><y/><?pi2?></x> 
    - -will normally create one element node for x containing -one subnode for y. The processing -instructions are attached to x in a separate hash table; you -can access them using x # pinstr "pi1" and x # -pinstr "pi2", respectively. The information is lost where the -instructions occur within x.

    If the option enable_pinstr_nodes is -turned on, the parser creates extra nodes pi1 and -pi2 such that the subnodes of x are now: - -

    x # sub_nodes = [ pi1; y; pi2 ]
    - -The extra nodes contain the processing instructions in the usual way, i.e. you -can access them using pi1 # pinstr "pi1" and pi2 # -pinstr "pi2", respectively.

    Note that you will need an exemplar for the PI nodes (see -make_spec_from_alist).

    Do I need a super root node? By default, there is no super root node. The -document object refers directly to the node representing the -root element of the document, i.e. - -

    doc # root = r
    - -if r is the root node. This is sometimes inconvenient: (1) -Some algorithms become simpler if every node has a parent, even the root -node. (2) Some standards such as XPath call the "root node" the node whose -child represents the root of the document. (3) The super root node can serve -as a container for processing instructions outside the root element. Because of -these reasons, it is possible to create an extra super root node, whose child -is the root node: - -
    doc # root = sr         &&
    -sr # sub_nodes = [ r ]
    - -When extra nodes are also created for processing instructions, these nodes can -be added to the super root node if they occur outside the root element (reason -(3)), and the order reflects the order in the source text.

    Note that you will need an exemplar for the super root node -(see make_spec_from_alist).

    What is the effect of the UTF-8 encoding? By default, the parser represents strings (with few -exceptions) as ISO-8859-1 strings. These are well-known, and there are tools -and fonts for this encoding.

    However, internationalization may require that you switch over -to UTF-8 encoding. In most environments, the immediate effect will be that you -cannot read strings with character codes >= 160 any longer; your terminal will -only show funny glyph combinations. It is strongly recommended to install -Unicode fonts (GNU Unifont, -Markus Kuhn's fonts) and terminal emulators -that can handle UTF-8 byte sequences. Furthermore, a Unicode editor may -be helpful (such as Yudit). There are -also FAQ by -Markus Kuhn.

    By setting encoding to -`Enc_utf8 all strings originating from the parsed XML -document are represented as UTF-8 strings. This includes not only character -data and attribute values but also element names, attribute names and so on, as -it is possible to use any Unicode letter to form such names. Strictly -speaking, PXP is only XML-compliant if the UTF-8 mode is used; otherwise it -will have difficulties when validating documents containing -non-ISO-8859-1-names.

    This mode does not have any impact on the external -representation of documents. The character set assumed when reading a document -is set in the XML declaration, and character set when writing a document must -be passed to the write method.

    How do I check that nodes exist which are referred by IDREF attributes? First, you must create an index of all occurring ID -attributes: - -

    let index = new hash_index
    - -This index must be passed to the parsing function: - -
    parse_document_entity
    -  ~id_index:(index :> index)
    -  config source spec
    - -Next, you must turn on the idref_pass mode: - -
    let config = { default_config with idref_pass = true }
    - -Note that now the whole document tree will be traversed, and every node will be -checked for IDREF and IDREFS attributes. If the tree is big, this may take some -time.

    What are deterministic content models? These type of models can speed up the validation checks; -furthermore they ensure SGML-compatibility. In particular, a content model is -deterministic if the parser can determine the actually used alternative by -inspecting only the current token. For example, this element has -non-deterministic contents: - -

    <!ELEMENT x ((u,v) | (u,y+) | v)>
    - -If the first element in x is u, the -parser does not know which of the alternatives (u,v) or -(u,y+) will work; the parser must also inspect the second -element to be able to distinguish between the alternatives. Because such -look-ahead (or "guessing") is required, this example is -non-deterministic.

    The XML standard demands that content models must be -deterministic. So it is recommended to turn the option -accept_only_deterministic_models on; however, PXP can also -process non-deterministic models using a backtracking algorithm.

    Deterministic models ensure that validation can be performed in -linear time. In order to get the maximum benefits, PXP also implements a -special validator that profits from deterministic models; this is the -deterministic finite automaton (DFA). This validator is enabled per element -type if the element type has a deterministic model and if the option -validate_by_dfa is turned on.

    In general, I expect that the DFA method is faster than the -backtracking method; especially in the worst case the DFA takes only linear -time. However, if the content model has only few alternatives and the -alternatives do not nest, the backtracking algorithm may be better.


    PrevHomeNext
    The DTD classesUpUpdates
    \ No newline at end of file diff --git a/helm/DEVEL/pxp/pxp/doc/manual/html/x1965.html b/helm/DEVEL/pxp/pxp/doc/manual/html/x1965.html deleted file mode 100644 index 8fc856264..000000000 --- a/helm/DEVEL/pxp/pxp/doc/manual/html/x1965.html +++ /dev/null @@ -1,152 +0,0 @@ -Updates
    The PXP user's guide
    PrevChapter 4. Configuring and calling the parser 

    4.5. Updates

    Some (often later added) features that are otherwise -not explained in the manual but worth to be mentioned.

    • Methods node_position, node_path, nth_node, -previous_node, next_node for nodes: See pxp_document.mli

    • Functions to determine the document order of nodes: -compare, create_ord_index, ord_number, ord_compare: See pxp_document.mli


    PrevHome 
    Invoking the parserUp 
    \ No newline at end of file diff --git a/helm/DEVEL/pxp/pxp/doc/manual/html/x468.html b/helm/DEVEL/pxp/pxp/doc/manual/html/x468.html deleted file mode 100644 index dc9cc1e8c..000000000 --- a/helm/DEVEL/pxp/pxp/doc/manual/html/x468.html +++ /dev/null @@ -1,474 +0,0 @@ -A complete example: The readme DTD
    The PXP user's guide
    PrevChapter 1. What is XML?Next

    1.3. A complete example: The readme DTD

    The reason for readme was that I often wrote two versions -of files such as README and INSTALL which explain aspects of a distributed -software archive; one version was ASCII-formatted, the other was written in -HTML. Maintaining both versions means double amount of work, and changes -of one version may be forgotten in the other version. To improve this situation -I invented the readme DTD which allows me to maintain only -one source written as XML document, and to generate the ASCII and the HTML -version from it.

    In this section, I explain only the DTD. The readme DTD is -contained in the PXP distribution together with the two converters to -produce ASCII and HTML. Another section of this manual describes the HTML -converter.

    The documents have a simple structure: There are up to three levels of nested -sections, paragraphs, item lists, footnotes, hyperlinks, and text emphasis. The -outermost element has usually the type readme, it is -declared by - -

    <!ELEMENT readme (sect1+)>
    -<!ATTLIST readme
    -          title CDATA #REQUIRED>
    - -This means that this element contains one or more sections of the first level -(element type sect1), and that the element has a required -attribute title containing character data (CDATA). Note that -readme elements must not contain text data.

    The three levels of sections are declared as follows: - -

    <!ELEMENT sect1 (title,(sect2|p|ul)+)>
    -
    -<!ELEMENT sect2 (title,(sect3|p|ul)+)>
    -
    -<!ELEMENT sect3 (title,(p|ul)+)>
    - -Every section has a title element as first subelement. After -the title an arbitrary but non-empty sequence of inner sections, paragraphs and -item lists follows. Note that the inner sections must belong to the next higher -section level; sect3 elements must not contain inner -sections because there is no next higher level.

    Obviously, all three declarations allow paragraphs (p) and -item lists (ul). The definition can be simplified at this -point by using a parameter entity: - -

    <!ENTITY % p.like "p|ul">
    -
    -<!ELEMENT sect1 (title,(sect2|%p.like;)+)>
    -
    -<!ELEMENT sect2 (title,(sect3|%p.like;)+)>
    -
    -<!ELEMENT sect3 (title,(%p.like;)+)>
    - -Here, the entity p.like is nothing but a macro abbreviating -the same sequence of declarations; if new elements on the same level as -p and ul are later added, it is -sufficient only to change the entity definition. Note that there are some -restrictions on the usage of entities in this context; most important, entities -containing a left paranthesis must also contain the corresponding right -paranthesis.

    Note that the entity p.like is a -parameter entity, i.e. the ENTITY declaration contains a -percent sign, and the entity is referred to by -%p.like;. This kind of entity must be used to abbreviate -parts of the DTD; the general entities declared without -percent sign and referred to as &name; are not allowed -in this context.

    The title element specifies the title of the section in -which it occurs. The title is given as character data, optionally interspersed -with line breaks (br): - -

    <!ELEMENT title (#PCDATA|br)*>
    - -Compared with the title attribute of -the readme element, this element allows inner markup -(i.e. br) while attribute values do not: It is an error if -an attribute value contains the left angle bracket < literally such that it -is impossible to include inner elements.

    The paragraph element p has a structure similar to -title, but it allows more inner elements: - -

    <!ENTITY % text "br|code|em|footnote|a">
    -
    -<!ELEMENT p (#PCDATA|%text;)*>
    - -Line breaks do not have inner structure, so they are declared as being empty: - -
    <!ELEMENT br EMPTY>
    - -This means that really nothing is allowed within br; you -must always write <br></br> or abbreviated -<br/>.

    Code samples should be marked up by the code tag; emphasized -text can be indicated by em: - -

    <!ELEMENT code (#PCDATA)>
    -
    -<!ELEMENT em (#PCDATA|%text;)*>
    - -That code elements are not allowed to contain further markup -while em elements do is a design decision by the author of -the DTD.

    Unordered lists simply consists of one or more list items, and a list item may -contain paragraph-level material: - -

    <!ELEMENT ul (li+)>
    -
    -<!ELEMENT li (%p.like;)*>
    - -Footnotes are described by the text of the note; this text may contain -text-level markup. There is no mechanism to describe the numbering scheme of -footnotes, or to specify how footnote references are printed. - -
    <!ELEMENT footnote (#PCDATA|%text;)*>
    - -Hyperlinks are written as in HTML. The anchor tag contains the text describing -where the link points to, and the href attribute is the -pointer (as URL). There is no way to describe locations of "hash marks". If the -link refers to another readme document, the attribute -readmeref should be used instead of href. -The reason is that the converted document has usually a different system -identifier (file name), and the link to a converted document must be -converted, too. - -
    <!ELEMENT a (#PCDATA)*>
    -<!ATTLIST a 
    -          href      CDATA #IMPLIED
    -          readmeref CDATA #IMPLIED
    ->
    - -Note that although it is only sensible to specify one of the two attributes, -the DTD has no means to express this restriction.

    So far the DTD. Finally, here is a document for it: - -

    <?xml version="1.0" encoding="ISO-8859-1"?>
    -<!DOCTYPE readme SYSTEM "readme.dtd">
    -<readme title="How to use the readme converters">
    -<sect1>
    -  <title>Usage</title>
    -  <p>
    -    The <em>readme</em> converter is invoked on the command line by:
    -  </p>
    -  <p>
    -    <code>readme [ -text | -html ] input.xml</code>
    -  </p>
    -  <p>
    -    Here a list of options:
    -  </p>
    -  <ul>
    -    <li>
    -      <p><code>-text</code>: specifies that ASCII output should be produced</p>
    -    </li>
    -    <li>
    -      <p><code>-html</code>: specifies that HTML output should be produced</p>
    -    </li>
    -  </ul>
    -  <p>
    -    The input file must be given on the command line. The converted output is
    -    printed to <em>stdout</em>.
    -  </p>
    -</sect1>
    -<sect1>
    -  <title>Author</title>
    -  <p>
    -    The program has been written by
    -    <a href="mailto:Gerd.Stolpmann@darmstadt.netsurf.de">Gerd Stolpmann</a>.
    -  </p>
    -</sect1>
    -</readme>


    PrevHomeNext
    Highlights of XMLUpUsing PXP
    \ No newline at end of file diff --git a/helm/DEVEL/pxp/pxp/doc/manual/html/x550.html b/helm/DEVEL/pxp/pxp/doc/manual/html/x550.html deleted file mode 100644 index f2dcdd79b..000000000 --- a/helm/DEVEL/pxp/pxp/doc/manual/html/x550.html +++ /dev/null @@ -1,765 +0,0 @@ -How to parse a document from an application
    The PXP user's guide
    PrevChapter 2. Using PXPNext

    2.2. How to parse a document from an application

    Let me first give a rough overview of the object model of the parser. The -following items are represented by objects: - -

    • Documents: The document representation is more or less the -anchor for the application; all accesses to the parsed entities start here. It -is described by the class document contained in the module -Pxp_document. You can get some global information, such -as the XML declaration the document begins with, the DTD of the document, -global processing instructions, and most important, the document tree.

    • The contents of documents: The contents have the structure -of a tree: Elements contain other elements and text[1]. - -The common type to represent both kinds of content is node -which is a class type that unifies the properties of elements and character -data. Every node has a list of children (which is empty if the element is empty -or the node represents text); nodes may have attributes; nodes have always text -contents. There are two implementations of node, the class -element_impl for elements, and the class -data_impl for text data. You find these classes and class -types in the module Pxp_document, too.

      Note that attribute lists are represented by non-class values.

    • The node extension: For advanced usage, every node of the -document may have an associated extension which is simply -a second object. This object must have the three methods -clone, node, and -set_node as bare minimum, but you are free to add methods as -you want. This is the preferred way to add functionality to the document -tree[2]. The class type extension is -defined in Pxp_document, too.

    • The DTD: Sometimes it is necessary to access the DTD of a -document; the average application does not need this feature. The class -dtd describes DTDs, and makes it possible to get -representations of element, entity, and notation declarations as well as -processing instructions contained in the DTD. This class, and -dtd_element, dtd_notation, and -proc_instruction can be found in the module -Pxp_dtd. There are a couple of classes representing -different kinds of entities; these can be found in the module -Pxp_entity.

    - -Additionally, the following modules play a role: - -

    • Pxp_yacc: Here the main parsing functions such as -parse_document_entity are located. Some additional types and -functions allow the parser to be configured in a non-standard way.

    • Pxp_types: This is a collection of basic types and -exceptions.

    - -There are some further modules that are needed internally but are not part of -the API.

    Let the document to be parsed be stored in a file called -doc.xml. The parsing process is started by calling the -function - -

    val parse_document_entity : config -> source -> 'ext spec -> 'ext document
    - -defined in the module Pxp_yacc. The first argument -specifies some global properties of the parser; it is recommended to start with -the default_config. The second argument determines where the -document to be parsed comes from; this may be a file, a channel, or an entity -ID. To parse doc.xml, it is sufficient to pass -from_file "doc.xml".

    The third argument passes the object specification to use. Roughly -speaking, it determines which classes implement the node objects of which -element types, and which extensions are to be used. The 'ext -polymorphic variable is the type of the extension. For the moment, let us -simply pass default_spec as this argument, and ignore it.

    So the following expression parses doc.xml: - -

    open Pxp_yacc
    -let d = parse_document_entity default_config (from_file "doc.xml") default_spec
    - -Note that default_config implies that warnings are collected -but not printed. Errors raise one of the exception defined in -Pxp_types; to get readable errors and warnings catch the -exceptions as follows: - -
    class warner =
    -  object 
    -    method warn w =
    -      print_endline ("WARNING: " ^ w)
    -  end
    -;;
    -
    -try
    -  let config = { default_config with warner = new warner } in
    -  let d = parse_document_entity config (from_file "doc.xml") default_spec
    -  in
    -    ...
    -with
    -   e ->
    -     print_endline (Pxp_types.string_of_exn e)
    - -Now d is an object of the document -class. If you want the node tree, you can get the root element by - -
    let root = d # root
    - -and if you would rather like to access the DTD, determine it by - -
    let dtd = d # dtd
    - -As it is more interesting, let us investigate the node tree now. Given the root -element, it is possible to recursively traverse the whole tree. The children of -a node n are returned by the method -sub_nodes, and the type of a node is returned by -node_type. This function traverses the tree, and prints the -type of each node: - -
    let rec print_structure n =
    -  let ntype = n # node_type in
    -  match ntype with
    -    T_element name ->
    -      print_endline ("Element of type " ^ name);
    -      let children = n # sub_nodes in
    -      List.iter print_structure children
    -  | T_data ->
    -      print_endline "Data"
    -  | _ ->
    -      (* Other node types are not possible unless the parser is configured
    -         differently.
    -       *)
    -      assert false
    - -You can call this function by - -
    print_structure root
    - -The type returned by node_type is either T_element -name or T_data. The name of the -element type is the string included in the angle brackets. Note that only -elements have children; data nodes are always leaves of the tree.

    There are some more methods in order to access a parsed node tree: - -

    • n # parent: Returns the parent node, or raises -Not_found if the node is already the root

    • n # root: Returns the root of the node tree.

    • n # attribute a: Returns the value of the attribute with -name a. The method returns a value for every -declared attribute, independently of whether the attribute -instance is defined or not. If the attribute is not declared, -Not_found will be raised. (In well-formedness mode, every -attribute is considered as being implicitly declared with type -CDATA.)

      The following return values are possible: Value s, -Valuelist sl , and Implied_value. -The first two value types indicate that the attribute value is available, -either because there is a definition -a="value" -in the XML text, or because there is a default value (declared in the -DTD). Only if both the instance definition and the default declaration are -missing, the latter value Implied_value will be returned.

      In the DTD, every attribute is typed. There are single-value types (CDATA, ID, -IDREF, ENTITY, NMTOKEN, enumerations), in which case the method passes -Value s back, where s is the normalized -string value of the attribute. The other types (IDREFS, ENTITIES, NMTOKENS) -represent list values, and the parser splits the XML literal into several -tokens and returns these tokens as Valuelist sl.

      Normalization means that entity references (the -&name; tokens) and -character references -(&#number;) are replaced -by the text they represent, and that white space characters are converted into -plain spaces.

    • n # data: Returns the character data contained in the -node. For data nodes, the meaning is obvious as this is the main content of -data nodes. For element nodes, this method returns the concatenated contents of -all inner data nodes.

      Note that entity references included in the text are resolved while they are -being parsed; for example the text "a &lt;&gt; b" will be returned -as "a <> b" by this method. Spaces of data nodes are always -preserved. Newlines are preserved, but always converted to \n characters even -if newlines are encoded as \r\n or \r. Normally you will never see two adjacent -data nodes because the parser collapses all data material at one location into -one node. (However, if you create your own tree or transform the parsed tree, -it is possible to have adjacent data nodes.)

      Note that elements that do not allow #PCDATA as content -will not have data nodes as children. This means that spaces and newlines, the -only character material allowed for such elements, are silently dropped.

    - -For example, if the task is to print all contents of elements with type -"valuable" whose attribute "priority" is "1", this function can help: - -
    let rec print_valuable_prio1 n =
    -  let ntype = n # node_type in
    -  match ntype with
    -    T_element "valuable" when n # attribute "priority" = Value "1" ->
    -      print_endline "Valuable node with priotity 1 found:";
    -      print_endline (n # data)
    -  | (T_element _ | T_data) ->
    -      let children = n # sub_nodes in
    -      List.iter print_valuable_prio1 children
    -  | _ ->
    -      assert false
    - -You can call this function by: - -
    print_valuable_prio1 root
    - -If you like a DSSSL-like style, you can make the function -process_children explicit: - -
    let rec print_valuable_prio1 n =
    -
    -  let process_children n =
    -    let children = n # sub_nodes in
    -    List.iter print_valuable_prio1 children 
    -  in
    -
    -  let ntype = n # node_type in
    -  match ntype with
    -    T_element "valuable" when n # attribute "priority" = Value "1" ->
    -      print_endline "Valuable node with priority 1 found:";
    -      print_endline (n # data)
    -  | (T_element _ | T_data) ->
    -      process_children n
    -  | _ ->
    -      assert false
    - -So far, O'Caml is now a simple "style-sheet language": You can form a big -"match" expression to distinguish between all significant cases, and provide -different reactions on different conditions. But this technique has -limitations; the "match" expression tends to get larger and larger, and it is -difficult to store intermediate values as there is only one big -recursion. Alternatively, it is also possible to represent the various cases as -classes, and to use dynamic method lookup to find the appropiate class. The -next section explains this technique in detail.

    Notes

    [1]

    Elements may -also contain processing instructions. Unlike other document models, PXP -separates processing instructions from the rest of the text and provides a -second interface to access them (method pinstr). However, -there is a parser option (enable_pinstr_nodes) which changes -the behaviour of the parser such that extra nodes for processing instructions -are included into the tree.

    Furthermore, the tree does normally not contain nodes for XML comments; -they are ignored by default. Again, there is an option -(enable_comment_nodes) changing this.

    [2]

    Due to the typing system it is more or less impossible to -derive recursive classes in O'Caml. To get around this, it is common practice -to put the modifiable or extensible part of recursive objects into parallel -objects.


    PrevHomeNext
    Using PXPUpClass-based processing of the node tree
    \ No newline at end of file diff --git a/helm/DEVEL/pxp/pxp/doc/manual/html/x675.html b/helm/DEVEL/pxp/pxp/doc/manual/html/x675.html deleted file mode 100644 index cf3f4737c..000000000 --- a/helm/DEVEL/pxp/pxp/doc/manual/html/x675.html +++ /dev/null @@ -1,538 +0,0 @@ -Class-based processing of the node tree
    The PXP user's guide
    PrevChapter 2. Using PXPNext

    2.3. Class-based processing of the node tree

    By default, the parsed node tree consists of objects of the same class; this is -a good design as long as you want only to access selected parts of the -document. For complex transformations, it may be better to use different -classes for objects describing different element types.

    For example, if the DTD declares the element types a, -b, and c, and if the task is to convert -an arbitrary document into a printable format, the idea is to define for every -element type a separate class that has a method print. The -classes are eltype_a, eltype_b, and -eltype_c, and every class implements -print such that elements of the type corresponding to the -class are converted to the output format.

    The parser supports such a design directly. As it is impossible to derive -recursive classes in O'Caml[1], the specialized element classes cannot be formed by -simply inheriting from the built-in classes of the parser and adding methods -for customized functionality. To get around this limitation, every node of the -document tree is represented by two objects, one called -"the node" and containing the recursive definition of the tree, one called "the -extension". Every node object has a reference to the extension, and the -extension has a reference to the node. The advantage of this model is that it -is now possible to customize the extension without affecting the typing -constraints of the recursive node definition.

    Every extension must have the three methods clone, -node, and set_node. The method -clone creates a deep copy of the extension object and -returns it; node returns the node object for this extension -object; and set_node is used to tell the extension object -which node is associated with it, this method is automatically called when the -node tree is initialized. The following definition is a good starting point -for these methods; usually clone must be further refined -when instance variables are added to the class: - -

    class custom_extension =
    -  object (self)
    -
    -    val mutable node = (None : custom_extension node option)
    -
    -    method clone = {< >} 
    -    method node =
    -      match node with
    -          None ->
    -            assert false
    -        | Some n -> n
    -    method set_node n =
    -      node <- Some n
    -
    -  end
    - -This part of the extension is usually the same for all classes, so it is a good -idea to consider custom_extension as the super-class of the -further class definitions. Continuining the example of above, we can define the -element type classes as follows: - -
    class virtual custom_extension =
    -  object (self)
    -    ... clone, node, set_node defined as above ...
    -
    -    method virtual print : out_channel -> unit
    -  end
    -
    -class eltype_a =
    -  object (self)
    -    inherit custom_extension
    -    method print ch = ...
    -  end
    -
    -class eltype_b =
    -  object (self)
    -    inherit custom_extension
    -    method print ch = ...
    -  end
    -
    -class eltype_c =
    -  object (self)
    -    inherit custom_extension
    -    method print ch = ...
    -  end
    - -The method print can now be implemented for every element -type separately. Note that you get the associated node by invoking - -
    self # node
    - -and you get the extension object of a node n by writing - -
    n # extension
    - -It is guaranteed that - -
    self # node # extension == self
    - -always holds.

    Here are sample definitions of the print -methods: - -

    class eltype_a =
    -  object (self)
    -    inherit custom_extension
    -    method print ch = 
    -      (* Nodes <a>...</a> are only containers: *)
    -      output_string ch "(";
    -      List.iter
    -        (fun n -> n # extension # print ch)
    -        (self # node # sub_nodes);
    -      output_string ch ")";
    -  end
    -
    -class eltype_b =
    -  object (self)
    -    inherit custom_extension
    -    method print ch =
    -      (* Print the value of the CDATA attribute "print": *)
    -      match self # node # attribute "print" with
    -        Value s       -> output_string ch s
    -      | Implied_value -> output_string ch "<missing>"
    -      | Valuelist l   -> assert false   
    -                         (* not possible because the att is CDATA *)
    -  end
    -
    -class eltype_c =
    -  object (self)
    -    inherit custom_extension
    -    method print ch = 
    -      (* Print the contents of this element: *)
    -      output_string ch (self # node # data)
    -  end
    -
    -class null_extension =
    -  object (self)
    -    inherit custom_extension
    -    method print ch = assert false
    -  end

    The remaining task is to configure the parser such that these extension classes -are actually used. Here another problem arises: It is not possible to -dynamically select the class of an object to be created. As workaround, -PXP allows the user to specify exemplar objects for -the various element types; instead of creating the nodes of the tree by -applying the new operator the nodes are produced by -duplicating the exemplars. As object duplication preserves the class of the -object, one can create fresh objects of every class for which previously an -exemplar has been registered.

    Exemplars are meant as objects without contents, the only interesting thing is -that exemplars are instances of a certain class. The creation of an exemplar -for an element node can be done by: - -

    let element_exemplar = new element_impl extension_exemplar
    - -And a data node exemplar is created by: - -
    let data_exemplar = new data_impl extension_exemplar
    - -The classes element_impl and data_impl -are defined in the module Pxp_document. The constructors -initialize the fresh objects as empty objects, i.e. without children, without -data contents, and so on. The extension_exemplar is the -initial extension object the exemplars are associated with.

    Once the exemplars are created and stored somewhere (e.g. in a hash table), you -can take an exemplar and create a concrete instance (with contents) by -duplicating it. As user of the parser you are normally not concerned with this -as this is part of the internal logic of the parser, but as background knowledge -it is worthwhile to mention that the two methods -create_element and create_data actually -perform the duplication of the exemplar for which they are invoked, -additionally apply modifications to the clone, and finally return the new -object. Moreover, the extension object is copied, too, and the new node object -is associated with the fresh extension object. Note that this is the reason why -every extension object must have a clone method.

    The configuration of the set of exemplars is passed to the -parse_document_entity function as third argument. In our -example, this argument can be set up as follows: - -

    let spec =
    -  make_spec_from_alist
    -    ~data_exemplar:            (new data_impl (new null_extension))
    -    ~default_element_exemplar: (new element_impl (new null_extension))
    -    ~element_alist:
    -       [ "a",  new element_impl (new eltype_a);
    -         "b",  new element_impl (new eltype_b);
    -         "c",  new element_impl (new eltype_c);
    -       ]
    -    ()
    - -The ~element_alist function argument defines the mapping -from element types to exemplars as associative list. The argument -~data_exemplar specifies the exemplar for data nodes, and -the ~default_element_exemplar is used whenever the parser -finds an element type for which the associative list does not define an -exemplar.

    The configuration is now complete. You can still use the same parsing -functions, only the initialization is a bit different. For example, call the -parser by: - -

    let d = parse_document_entity default_config (from_file "doc.xml") spec
    - -Note that the resulting document d has a usable type; -especially the print method we added is visible. So you can -print your document by - -
    d # root # extension # print stdout

    This object-oriented approach looks rather complicated; this is mostly caused -by working around some problems of the strict typing system of O'Caml. Some -auxiliary concepts such as extensions were needed, but the practical -consequences are low. In the next section, one of the examples of the -distribution is explained, a converter from readme -documents to HTML.

    Notes

    [1]

    The problem is that the subclass is -usually not a subtype in this case because O'Caml has a contravariant subtyping -rule.


    PrevHomeNext
    How to parse a document from an applicationUpExample: An HTML backend for the readme -DTD
    \ No newline at end of file diff --git a/helm/DEVEL/pxp/pxp/doc/manual/html/x738.html b/helm/DEVEL/pxp/pxp/doc/manual/html/x738.html deleted file mode 100644 index 674180172..000000000 --- a/helm/DEVEL/pxp/pxp/doc/manual/html/x738.html +++ /dev/null @@ -1,1036 +0,0 @@ -Example: An HTML backend for the readme -DTD
    The PXP user's guide
    PrevChapter 2. Using PXPNext

    2.4. Example: An HTML backend for the readme -DTD

    The converter from readme documents to HTML -documents follows strictly the approach to define one class per element -type. The HTML code is similar to the readme source, -because of this most elements can be converted in the following way: Given the -input element - -

    <e>content</e>
    - -the conversion text is the concatenation of a computed prefix, the recursively -converted content, and a computed suffix.

    Only one element type cannot be handled by this scheme: -footnote. Footnotes are collected while they are found in -the input text, and they are printed after the main text has been converted and -printed.

    2.4.1. Header

    open Pxp_types
    -open Pxp_document

    2.4.2. Type declarations

    class type footnote_printer =
    -  object
    -    method footnote_to_html : store_type -> out_channel -> unit
    -  end
    -
    -and store_type =
    -  object
    -    method alloc_footnote : footnote_printer -> int
    -    method print_footnotes : out_channel -> unit
    -  end
    -;;

    2.4.3. Class store

    The store is a container for footnotes. You can add a -footnote by invoking alloc_footnote; the argument is an -object of the class footnote_printer, the method returns the -number of the footnote. The interesting property of a footnote is that it can -be converted to HTML, so a footnote_printer is an object -with a method footnote_to_html. The class -footnote which is defined below has a compatible method -footnote_to_html such that objects created from it can be -used as footnote_printers.

    The other method, print_footnotes prints the footnotes as -definition list, and is typically invoked after the main material of the page -has already been printed. Every item of the list is printed by -footnote_to_html.

    class store =
    -  object (self)
    -
    -    val mutable footnotes = ( [] : (int * footnote_printer) list )
    -    val mutable next_footnote_number = 1
    -
    -    method alloc_footnote n =
    -      let number = next_footnote_number in
    -      next_footnote_number <- number+1;
    -      footnotes <- footnotes @ [ number, n ];
    -      number
    -
    -    method print_footnotes ch =
    -      if footnotes <> [] then begin
    -	output_string ch "<hr align=left noshade=noshade width=\"30%\">\n";
    -	output_string ch "<dl>\n";
    -	List.iter
    -	  (fun (_,n) -> 
    -	     n # footnote_to_html (self : #store_type :> store_type) ch)
    -	  footnotes;
    -	output_string ch "</dl>\n";
    -      end
    -
    -  end
    -;;

    2.4.4. Function escape_html

    This function converts the characters <, >, &, and " to their HTML -representation. For example, -escape_html "<>" = "&lt;&gt;". Other -characters are left unchanged. - -

    let escape_html s =
    -  Str.global_substitute
    -    (Str.regexp "<\\|>\\|&\\|\"")
    -    (fun s ->
    -      match Str.matched_string s with
    -        "<" -> "&lt;"
    -      | ">" -> "&gt;"
    -      | "&" -> "&amp;"
    -      | "\"" -> "&quot;"
    -      | _ -> assert false)
    -    s
    -;;

    2.4.5. Virtual class shared

    This virtual class is the abstract superclass of the extension classes shown -below. It defines the standard methods clone, -node, and set_node, and declares the type -of the virtual method to_html. This method recursively -traverses the whole element tree, and prints the converted HTML code to the -output channel passed as second argument. The first argument is the reference -to the global store object which collects the footnotes. - -

    class virtual shared =
    -  object (self)
    -
    -    (* --- default_ext --- *)
    -
    -    val mutable node = (None : shared node option)
    -
    -    method clone = {< >} 
    -    method node =
    -      match node with
    -          None ->
    -            assert false
    -        | Some n -> n
    -    method set_node n =
    -      node <- Some n
    -
    -    (* --- virtual --- *)
    -
    -    method virtual to_html : store -> out_channel -> unit
    -
    -  end
    -;;

    2.4.6. Class only_data

    This class defines to_html such that the character data of -the current node is converted to HTML. Note that self is an -extension object, self # node is the node object, and -self # node # data returns the character data of the node. - -

    class only_data =
    -  object (self)
    -    inherit shared
    -
    -    method to_html store ch =
    -      output_string ch (escape_html (self # node # data))
    -  end
    -;;

    2.4.7. Class readme

    This class converts elements of type readme to HTML. Such an -element is (by definition) always the root element of the document. First, the -HTML header is printed; the title attribute of the element -determines the title of the HTML page. Some aspects of the HTML page can be -configured by setting certain parameter entities, for example the background -color, the text color, and link colors. After the header, the -body tag, and the headline have been printed, the contents -of the page are converted by invoking to_html on all -children of the current node (which is the root node). Then, the footnotes are -appended to this by telling the global store object to print -the footnotes. Finally, the end tags of the HTML pages are printed.

    This class is an example how to access the value of an attribute: The value is -determined by invoking self # node # attribute "title". As -this attribute has been declared as CDATA and as being required, the value has -always the form Value s where s is the -string value of the attribute.

    You can also see how entity contents can be accessed. A parameter entity object -can be looked up by self # node # dtd # par_entity "name", -and by invoking replacement_text the value of the entity -is returned after inner parameter and character entities have been -processed. Note that you must use gen_entity instead of -par_entity to access general entities.

    class readme =
    -  object (self)
    -    inherit shared
    -
    -    method to_html store ch =
    -      (* output header *)
    -      output_string 
    -	ch "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2 Final//EN\">";
    -      output_string
    -	ch "<!-- WARNING! This is a generated file, do not edit! -->\n";
    -      let title = 
    -	match self # node # attribute "title" with
    -	    Value s -> s
    -	  | _ -> assert false
    -      in
    -      let html_header, _ =
    -	try (self # node # dtd # par_entity "readme:html:header") 
    -            # replacement_text
    -	with WF_error _ -> "", false in
    -      let html_trailer, _ =
    -	try (self # node # dtd # par_entity "readme:html:trailer")
    -            # replacement_text
    -	with WF_error _ -> "", false in
    -      let html_bgcolor, _ =
    -	try (self # node # dtd # par_entity "readme:html:bgcolor")
    -            # replacement_text
    -	with WF_error _ -> "white", false in
    -      let html_textcolor, _ =
    -	try (self # node # dtd # par_entity "readme:html:textcolor")
    -            # replacement_text
    -	with WF_error _ -> "", false in
    -      let html_alinkcolor, _ =
    -	try (self # node # dtd # par_entity "readme:html:alinkcolor")
    -            # replacement_text
    -	with WF_error _ -> "", false in
    -      let html_vlinkcolor, _ =
    -	try (self # node # dtd # par_entity "readme:html:vlinkcolor")
    -            # replacement_text
    -	with WF_error _ -> "", false in
    -      let html_linkcolor, _ =
    -	try (self # node # dtd # par_entity "readme:html:linkcolor")
    -            # replacement_text
    -	with WF_error _ -> "", false in
    -      let html_background, _ =
    -	try (self # node # dtd # par_entity "readme:html:background")
    -            # replacement_text
    -	with WF_error _ -> "", false in
    -
    -      output_string ch "<html><header><title>\n";
    -      output_string ch (escape_html title);
    -      output_string ch "</title></header>\n";
    -      output_string ch "<body ";
    -      List.iter
    -	(fun (name,value) ->
    -	   if value <> "" then 
    -	     output_string ch (name ^ "=\"" ^ escape_html value ^ "\" "))
    -	[ "bgcolor",    html_bgcolor;
    -	  "text",       html_textcolor;
    -	  "link",       html_linkcolor;
    -	  "alink",      html_alinkcolor;
    -	  "vlink",      html_vlinkcolor;
    -	];
    -      output_string ch ">\n";
    -      output_string ch html_header;
    -      output_string ch "<h1>";
    -      output_string ch (escape_html title);
    -      output_string ch "</h1>\n";
    -      (* process main content: *)
    -      List.iter
    -	(fun n -> n # extension # to_html store ch)
    -	(self # node # sub_nodes);
    -      (* now process footnotes *)
    -      store # print_footnotes ch;
    -      (* trailer *)
    -      output_string ch html_trailer;
    -      output_string ch "</html>\n";
    -
    -  end
    -;;

    2.4.8. Classes section, sect1, -sect2, and sect3

    As the conversion process is very similar, the conversion classes of the three -section levels are derived from the more general section -class. The HTML code of the section levels only differs in the type of the -headline, and because of this the classes describing the section levels can be -computed by replacing the class argument the_tag of -section by the HTML name of the headline tag.

    Section elements are converted to HTML by printing a headline and then -converting the contents of the element recursively. More precisely, the first -sub-element is always a title element, and the other -elements are the contents of the section. This structure is declared in the -DTD, and it is guaranteed that the document matches the DTD. Because of this -the title node can be separated from the rest without any checks.

    Both the title node, and the body nodes are then converted to HTML by calling -to_html on them.

    class section the_tag =
    -  object (self)
    -    inherit shared
    -
    -    val tag = the_tag
    -
    -    method to_html store ch =
    -      let sub_nodes = self # node # sub_nodes in
    -      match sub_nodes with
    -	  title_node :: rest ->
    -	    output_string ch ("<" ^ tag ^ ">\n");
    -	    title_node # extension # to_html store ch;
    -	    output_string ch ("\n</" ^ tag ^ ">");
    -	    List.iter
    -	      (fun n -> n # extension # to_html store ch)
    -	      rest
    -	| _ ->
    -	    assert false
    -  end
    -;;
    -
    -class sect1 = section "h1";;
    -class sect2 = section "h3";;
    -class sect3 = section "h4";;

    2.4.9. Classes map_tag, p, -em, ul, li

    Several element types are converted to HTML by simply mapping them to -corresponding HTML element types. The class map_tag -implements this, and the class argument the_target_tag -determines the tag name to map to. The output consists of the start tag, the -recursively converted inner elements, and the end tag. - -

    class map_tag the_target_tag =
    -  object (self)
    -    inherit shared
    -
    -    val target_tag = the_target_tag
    -
    -    method to_html store ch =
    -      output_string ch ("<" ^ target_tag ^ ">\n");
    -      List.iter
    -	(fun n -> n # extension # to_html store ch)
    -	(self # node # sub_nodes);
    -      output_string ch ("\n</" ^ target_tag ^ ">");
    -  end
    -;;
    -
    -class p = map_tag "p";;
    -class em = map_tag "b";;
    -class ul = map_tag "ul";;
    -class li = map_tag "li";;

    2.4.10. Class br

    Element of type br are mapped to the same HTML type. Note -that HTML forbids the end tag of br. - -

    class br =
    -  object (self)
    -    inherit shared
    -
    -    method to_html store ch =
    -      output_string ch "<br>\n";
    -      List.iter
    -	(fun n -> n # extension # to_html store ch)
    -	(self # node # sub_nodes);
    -  end
    -;;

    2.4.11. Class code

    The code type is converted to a pre -section (preformatted text). As the meaning of tabs is unspecified in HTML, -tabs are expanded to spaces. - -

    class code =
    -  object (self)
    -    inherit shared
    -
    -    method to_html store ch =
    -      let data = self # node # data in
    -      (* convert tabs *)
    -      let l = String.length data in
    -      let rec preprocess i column =
    -	(* this is very ineffective but comprehensive: *)
    -	if i < l then
    -	  match data.[i] with
    -	      '\t' ->
    -		let n = 8 - (column mod 8) in
    -		String.make n ' ' ^ preprocess (i+1) (column + n)
    -	    | '\n' ->
    -		"\n" ^ preprocess (i+1) 0
    -	    | c ->
    -		String.make 1 c ^ preprocess (i+1) (column + 1)
    -	else
    -	  ""
    -      in
    -      output_string ch "<p><pre>";
    -      output_string ch (escape_html (preprocess 0 0));
    -      output_string ch "</pre></p>";
    -
    -  end
    -;;

    2.4.12. Class a

    Hyperlinks, expressed by the a element type, are converted -to the HTML a type. If the target of the hyperlink is given -by href, the URL of this attribute can be used -directly. Alternatively, the target can be given by -readmeref in which case the ".html" suffix must be added to -the file name.

    Note that within a only #PCDATA is allowed, so the contents -can be converted directly by applying escape_html to the -character data contents. - -

    class a =
    -  object (self)
    -    inherit shared
    -
    -    method to_html store ch =
    -      output_string ch "<a ";
    -      let href =
    -	match self # node # attribute "href" with
    -	    Value v -> escape_html v
    -	  | Valuelist _ -> assert false
    -	  | Implied_value ->
    -	      begin match self # node # attribute "readmeref" with
    -		  Value v -> escape_html v ^ ".html"
    -		| Valuelist _ -> assert false
    -		| Implied_value ->
    -		    ""
    -	      end
    -      in
    -      if href <> "" then
    -	output_string ch ("href=\""  ^ href ^ "\"");
    -      output_string ch ">";
    -      output_string ch (escape_html (self # node # data));
    -      output_string ch "</a>";
    -	
    -  end
    -;;

    2.4.13. Class footnote

    The footnote class has two methods: -to_html to convert the footnote reference to HTML, and -footnote_to_html to convert the footnote text itself.

    The footnote reference is converted to a local hyperlink; more precisely, to -two anchor tags which are connected with each other. The text anchor points to -the footnote anchor, and the footnote anchor points to the text anchor.

    The footnote must be allocated in the store object. By -allocating the footnote, you get the number of the footnote, and the text of -the footnote is stored until the end of the HTML page is reached when the -footnotes can be printed. The to_html method stores simply -the object itself, such that the footnote_to_html method is -invoked on the same object that encountered the footnote.

    The to_html only allocates the footnote, and prints the -reference anchor, but it does not print nor convert the contents of the -note. This is deferred until the footnotes actually get printed, i.e. the -recursive call of to_html on the sub nodes is done by -footnote_to_html.

    Note that this technique does not work if you make another footnote within a -footnote; the second footnote gets allocated but not printed.

    class footnote =
    -  object (self)
    -    inherit shared
    -
    -    val mutable footnote_number = 0
    -
    -    method to_html store ch =
    -      let number = 
    -	store # alloc_footnote (self : #shared :> footnote_printer) in
    -      let foot_anchor = 
    -	"footnote" ^ string_of_int number in
    -      let text_anchor =
    -	"textnote" ^ string_of_int number in
    -      footnote_number <- number;
    -      output_string ch ( "<a name=\"" ^ text_anchor ^ "\" href=\"#" ^ 
    -			 foot_anchor ^ "\">[" ^ string_of_int number ^ 
    -			 "]</a>" )
    -
    -    method footnote_to_html store ch =
    -      (* prerequisite: we are in a definition list <dl>...</dl> *)
    -      let foot_anchor = 
    -	"footnote" ^ string_of_int footnote_number in
    -      let text_anchor =
    -	"textnote" ^ string_of_int footnote_number in
    -      output_string ch ("<dt><a name=\"" ^ foot_anchor ^ "\" href=\"#" ^ 
    -			text_anchor ^ "\">[" ^ string_of_int footnote_number ^ 
    -			"]</a></dt>\n<dd>");
    -      List.iter
    -	(fun n -> n # extension # to_html store ch)
    -	(self # node # sub_nodes);
    -      output_string ch ("\n</dd>")
    - 
    -  end
    -;;

    2.4.14. The specification of the document model

    This code sets up the hash table that connects element types with the exemplars -of the extension classes that convert the elements to HTML. - -

    open Pxp_yacc
    -
    -let tag_map =
    -  make_spec_from_alist
    -    ~data_exemplar:(new data_impl (new only_data))
    -    ~default_element_exemplar:(new element_impl (new no_markup))
    -    ~element_alist:
    -      [ "readme", (new element_impl (new readme));
    -	"sect1",  (new element_impl (new sect1));
    -	"sect2",  (new element_impl (new sect2));
    -	"sect3",  (new element_impl (new sect3));
    -	"title",  (new element_impl (new no_markup));
    -	"p",      (new element_impl (new p));
    -	"br",     (new element_impl (new br));
    -	"code",   (new element_impl (new code));
    -	"em",     (new element_impl (new em));
    -	"ul",     (new element_impl (new ul));
    -	"li",     (new element_impl (new li));
    -	"footnote", (new element_impl (new footnote : #shared :> shared));
    -	"a",      (new element_impl (new a));
    -      ]
    -    ()
    -;;


    PrevHomeNext
    Class-based processing of the node treeUpThe objects representing the document
    \ No newline at end of file diff --git a/helm/DEVEL/pxp/pxp/doc/manual/html/x939.html b/helm/DEVEL/pxp/pxp/doc/manual/html/x939.html deleted file mode 100644 index cf177f88e..000000000 --- a/helm/DEVEL/pxp/pxp/doc/manual/html/x939.html +++ /dev/null @@ -1,2337 +0,0 @@ -The class type node
    The PXP user's guide
    PrevChapter 3. The objects representing the documentNext

    3.2. The class type node

    From Pxp_document: - -

    type node_type =
    -  T_data
    -| T_element of string
    -| T_super_root
    -| T_pinstr of string
    -| T_comment
    -and some other, reserved types
    -;;
    -
    -class type [ 'ext ] node =
    -  object ('self)
    -    constraint 'ext = 'ext node #extension
    -
    -    (* General observers *)
    -
    -    method extension : 'ext
    -    method dtd : dtd
    -    method parent : 'ext node
    -    method root : 'ext node
    -    method sub_nodes : 'ext node list
    -    method iter_nodes : ('ext node -> unit) -> unit
    -    method iter_nodes_sibl : 
    -           ('ext node option -> 'ext node -> 'ext node option -> unit) -> unit
    -    method node_type : node_type
    -    method encoding : Pxp_types.rep_encoding
    -    method data : string
    -    method position : (string * int * int)
    -    method comment : string option
    -    method pinstr : string -> proc_instruction list
    -    method pinstr_names : string list
    -    method write : Pxp_types.output_stream -> Pxp_types.encoding -> unit
    -
    -    (* Attribute observers *)
    -
    -    method attribute : string -> Pxp_types.att_value
    -    method required_string_attribute : string -> string
    -    method optional_string_attribute : string -> string option
    -    method required_list_attribute : string -> string list
    -    method optional_list_attribute : string -> string list
    -    method attribute_names : string list
    -    method attribute_type : string -> Pxp_types.att_type
    -    method attributes : (string * Pxp_types.att_value) list
    -    method id_attribute_name : string
    -    method id_attribute_value : string
    -    method idref_attribute_names : string
    -
    -    (* Modifying methods *)
    -
    -    method add_node : ?force:bool -> 'ext node -> unit
    -    method add_pinstr : proc_instruction -> unit
    -    method delete : unit
    -    method set_nodes : 'ext node list -> unit
    -    method quick_set_attributes : (string * Pxp_types.att_value) list -> unit
    -    method set_comment : string option -> unit
    -
    -    (* Cloning methods *)
    -
    -    method orphaned_clone : 'self
    -    method orphaned_flat_clone : 'self
    -    method create_element : 
    -              ?position:(string * int * int) ->
    -              dtd -> node_type -> (string * string) list ->
    -                  'ext node
    -    method create_data : dtd -> string -> 'ext node
    -    method keep_always_whitespace_mode : unit
    -
    -    (* Validating methods *)
    -
    -    method local_validate : ?use_dfa:bool -> unit -> unit
    -
    -    (* ... Internal methods are undocumented. *)
    -
    -  end
    -;;
    - -In the module Pxp_types you can find another type -definition that is important in this context: - -
    type Pxp_types.att_value =
    -    Value     of string
    -  | Valuelist of string list
    -  | Implied_value
    -;;

    3.2.1. The structure of document trees

    A node represents either an element or a character data section. There are two -classes implementing the two aspects of nodes: element_impl -and data_impl. The latter class does not implement all -methods because some methods do not make sense for data nodes.

    (Note: PXP also supports a mode which forces that processing instructions and -comments are represented as nodes of the document tree. However, these nodes -are instances of element_impl with node types -T_pinstr and T_comment, -respectively. This mode must be explicitly configured; the basic representation -knows only element and data nodes.)

    The following figure -(A tree with element nodes, data nodes, and attributes) shows an example how -a tree is constructed from element and data nodes. The circular areas -represent element nodes whereas the ovals denote data nodes. Only elements -may have subnodes; data nodes are always leaves of the tree. The subnodes -of an element can be either element or data nodes; in both cases the O'Caml -objects storing the nodes have the class type node.

    Attributes (the clouds in the picture) are not directly -integrated into the tree; there is always an extra link to the attribute -list. This is also true for processing instructions (not shown in the -picture). This means that there are separated access methods for attributes and -processing instructions.

    Figure 3-1. A tree with element nodes, data nodes, and attributes

    Only elements, data sections, attributes and processing -instructions (and comments, if configured) can, directly or indirectly, occur -in the document tree. It is impossible to add entity references to the tree; if -the parser finds such a reference, not the reference as such but the referenced -text (i.e. the tree representing the structured text) is included in the -tree.

    Note that the parser collapses as much data material into one -data node as possible such that there are normally never two adjacent data -nodes. This invariant is enforced even if data material is included by entity -references or CDATA sections, or if a data sequence is interrupted by -comments. So a &amp; b <-- comment --> c <![CDATA[ -<> d]]> is represented by only one data node, for -instance. However, you can create document trees manually which break this -invariant; it is only the way the parser forms the tree.

    Figure 3-2. Nodes are doubly linked trees

    The node tree has links in both directions: Every node has a link to its parent -(if any), and it has links to the subnodes (see -figure Nodes are doubly linked trees). Obviously, -this doubly-linked structure simplifies the navigation in the tree; but has -also some consequences for the possible operations on trees.

    Because every node must have at most one parent node, -operations are illegal if they violate this condition. The following figure -(A node can only be added if it is a root) shows on the left side -that node y is added to x as new subnode -which is allowed because y does not have a parent yet. The -right side of the picture illustrates what would happen if y -had a parent node; this is illegal because y would have two -parents after the operation.

    Figure 3-3. A node can only be added if it is a root

    The "delete" operation simply removes the links between two nodes. In the -picture (A deleted node becomes the root of the subtree) the node -x is deleted from the list of subnodes of -y. After that, x becomes the root of the -subtree starting at this node.

    Figure 3-4. A deleted node becomes the root of the subtree

    It is also possible to make a clone of a subtree; illustrated in -The clone of a subtree. In this case, the -clone is a copy of the original subtree except that it is no longer a -subnode. Because cloning never keeps the connection to the parent, the clones -are called orphaned.

    Figure 3-5. The clone of a subtree

    3.2.2. The methods of the class type node

    General observers - .

    • extension: The reference to the extension object which -belongs to this node (see ...).

    • dtd: Returns a reference to the global DTD. All nodes -of a tree must share the same DTD.

    • parent: Get the father node. Raises -Not_found in the case the node does not have a -parent, i.e. the node is the root.

    • root: Gets the reference to the root node of the tree. -Every node is contained in a tree with a root, so this method always -succeeds. Note that this method searches the root, -which costs time proportional to the length of the path to the root.

    • sub_nodes: Returns references to the children. The returned -list reflects the order of the children. For data nodes, this method returns -the empty list.

    • iter_nodes f: Iterates over the children, and calls -f for every child in turn.

    • iter_nodes_sibl f: Iterates over the children, and calls -f for every child in turn. f gets as -arguments the previous node, the current node, and the next node.

    • node_type: Returns either T_data which -means that the node is a data node, or T_element n -which means that the node is an element of type n. -If configured, possible node types are also T_pinstr t -indicating that the node represents a processing instruction with target -t, and T_comment in which case the node -is a comment.

    • encoding: Returns the encoding of the strings.

    • data: Returns the character data of this node and all -children, concatenated as one string. The encoding of the string is what -the method encoding returns. -- For data nodes, this method simply returns the represented characters. -For elements, the meaning of the method has been extended such that it -returns something useful, i.e. the effectively contained characters, without -markup. (For T_pinstr and T_comment -nodes, the method returns the empty string.)

    • position: If configured, this method returns the position of -the element as triple (entity, line, byteposition). For data nodes, the -position is not stored. If the position is not available the triple -"?", 0, 0 is returned.

    • comment: Returns Some text for comment -nodes, and None for other nodes. The text -is everything between the comment delimiters <-- and --->.

    • pinstr n: Returns all processing instructions that are -directly contained in this element and that have a target -specification of n. The target is the first word after -the <?.

    • pinstr_names: Returns the list of all targets of processing -instructions directly contained in this element.

    • write s enc: Prints the node and all subnodes to the passed -output stream as valid XML text, using the passed external encoding.

    -

    Attribute observers - .

    • attribute n: Returns the value of the attribute with name -n. This method returns a value for every declared -attribute, and it raises Not_found for any undeclared -attribute. Note that it even returns a value if the attribute is actually -missing but is declared as #IMPLIED or has a default -value. - Possible values are: -

      • Implied_value: The attribute has been declared with the -keyword #IMPLIED, and the attribute is missing in the -attribute list of this element.

      • Value s: The attribute has been declared as type -CDATA, as ID, as -IDREF, as ENTITY, or as -NMTOKEN, or as enumeration or notation, and one of the two -conditions holds: (1) The attribute value is present in the attribute list in -which case the value is returned in the string s. (2) The -attribute has been omitted, and the DTD declared the attribute with a default -value. The default value is returned in s. -- Summarized, Value s is returned for non-implied, non-list -attribute values.

      • Valuelist l: The attribute has been declared as type -IDREFS, as ENTITIES, or -as NMTOKENS, and one of the two conditions holds: (1) The -attribute value is present in the attribute list in which case the -space-separated tokens of the value are returned in the string list -l. (2) The attribute has been omitted, and the DTD declared -the attribute with a default value. The default value is returned in -l. -- Summarized, Valuelist l is returned for all list-type -attribute values.

      - -Note that before the attribute value is returned, the value is normalized. This -means that newlines are converted to spaces, and that references to character -entities (i.e. &#n;) and -general entities -(i.e. &name;) are expanded; -if necessary, expansion is performed recursively.

      In well-formedness mode, there is no DTD which could declare an -attribute. Because of this, every occuring attribute is considered as a CDATA -attribute.

    • required_string_attribute n: returns the Value attribute -called n, or the Valuelist attribute as a string where the list elements -are separated by spaces. If the attribute value is implied, or if the -attribute does not exists, the method will fail. - This method is convenient -if you expect a non-implied and non-list attribute value.

    • optional_string_attribute n: returns the Value attribute -called n, or the Valuelist attribute as a string where the list elements -are separated by spaces. If the attribute value is implied, or if the -attribute does not exists, the method returns None. - This method is -convenient if you expect a non-list attribute value including the implied -value.

    • required_list_attribute n: returns the Valuelist attribute -called n, or the Value attribute as a list with a single element. -If the attribute value is implied, or if the -attribute does not exists, the method will fail. - This method is -convenient if you expect a list attribute value.

    • optional_list_attribute n: returns the Valuelist attribute -called n, or the Value attribute as a list with a single element. -If the attribute value is implied, or if the -attribute does not exists, an empty list will be returned. - This method -is convenient if you expect a list attribute value or the implied value.

    • attribute_names: returns the list of all attribute names of -this element. As this is a validating parser, this list is equal to the -list of declared attributes.

    • attribute_type n: returns the type of the attribute called -n. See the module Pxp_types for a -description of the encoding of the types.

    • attributes: returns the list of pairs of names and values -for all attributes of -this element.

    • id_attribute_name: returns the name of the attribute that is -declared with type ID. There is at most one such attribute. The method raises -Not_found if there is no declared ID attribute for the -element type.

    • id_attribute_value: returns the value of the attribute that -is declared with type ID. There is at most one such attribute. The method raises -Not_found if there is no declared ID attribute for the -element type.

    • idref_attribute_names: returns the list of attribute names -that are declared as IDREF or IDREFS.

    -

    Modifying methods - . The following methods are only defined for element nodes (more exactly: -the methods are defined for data nodes, too, but fail always). - -

    • add_node sn: Adds sub node sn to the list -of children. This operation is illustrated in the picture -A node can only be added if it is a root. This method expects that -sn is a root, and it requires that sn and -the current object share the same DTD.

      Because add_node is the method the parser itself uses -to add new nodes to the tree, it performs by default some simple validation -checks: If the content model is a regular expression, it is not allowed to add -data nodes to this node unless the new nodes consist only of whitespace. In -this case, the new data nodes are silently dropped (you can change this by -invoking keep_always_whitespace_mode).

      If the document is flagged as stand-alone, these data nodes only -containing whitespace are even forbidden if the element declaration is -contained in an external entity. This case is detected and rejected.

      If the content model is EMPTY, it is not allowed to -add any data node unless the data node is empty. In this case, the new data -node is silently dropped.

      These checks only apply if there is a DTD. In well-formedness mode, it is -assumed that every element is declared with content model -ANY which prohibits any validation check. Furthermore, you -turn these checks off by passing ~force:true as first -argument.

    • add_pinstr pi: Adds the processing instruction -pi to the list of processing instructions.

    • delete: Deletes this node from the tree. After this -operation, this node is no longer the child of the former father node; and the -node loses the connection to the father as well. This operation is illustrated -by the figure A deleted node becomes the root of the subtree.

    • set_nodes nl: Sets the list of children to -nl. It is required that every member of nl -is a root, and that all members and the current object share the same DTD. -Unlike add_node, no validation checks are performed.

    • quick_set_attributes atts: sets the attributes of this -element to atts. It is not checked -whether atts matches the DTD or not; it is up to the -caller of this method to ensure this. (This method may be useful to transform -the attribute values, i.e. apply a mapping to every attribute.)

    • set_comment text: This method is only applicable to -T_comment nodes; it sets the comment text contained by such -nodes.

    Cloning methods - .

    • orphaned_clone: Returns a clone of the node and the complete -tree below this node (deep clone). The clone does not have a parent (i.e. the -reference to the parent node is not cloned). While -copying the subtree, strings are skipped; it is likely that the original tree -and the copy tree share strings. Extension objects are cloned by invoking -the clone method on the original objects; how much of -the extension objects is cloned depends on the implemention of this method.

      This operation is illustrated by the figure -The clone of a subtree.

    • orphaned_flat_clone: Returns a clone of the node, -but sets the list of sub nodes to [], i.e. the sub nodes are not cloned.

    • -create_element dtd nt al: Returns a flat copy of this node -(which must be an element) with the following modifications: The DTD is set to -dtd; the node type is set to nt, and the -new attribute list is set to al (given as list of -(name,value) pairs). The copy does not have children nor a parent. It does not -contain processing instructions. See -the example below.

      Note that you can specify the position of the new node -by the optional argument ~position.

    • -create_data dtd cdata: Returns a flat copy of this node -(which must be a data node) with the following modifications: The DTD is set to -dtd; the node type is set to T_data; the -attribute list is empty (data nodes never have attributes); the list of -children and PIs is empty, too (same reason). The new node does not have a -parent. The value cdata is the new character content of the -node. See -the example below.

    • keep_always_whitespace_mode: Even data nodes which are -normally dropped because they only contain ignorable whitespace, can added to -this node once this mode is turned on. (This mode is useful to produce -canonical XML.)

    Validating methods - . There is one method which locally validates the node, i.e. checks whether the -subnodes match the content model of this node. - -

    • local_validate: Checks that this node conforms to the -DTD by comparing the type of the subnodes with the content model for this -node. (Applications need not call this method unless they add new nodes -themselves to the tree.)

    3.2.3. The class element_impl

    This class is an implementation of node which -realizes element nodes: - -

    class [ 'ext ] element_impl : 'ext -> [ 'ext ] node

    Constructor. You can create a new instance by - -

    new element_impl extension_object
    - -which creates a special form of empty element which already contains a -reference to the extension_object, but is -otherwise empty. This special form is called an -exemplar. The purpose of exemplars is that they serve as -patterns that can be duplicated and filled with data. The method -create_element is designed to perform this action.

    Example. First, create an exemplar by - -

    let exemplar_ext = ... in
    -let exemplar     = new element_impl exemplar_ext in
    - -The exemplar is not used in node trees, but only as -a pattern when the element nodes are created: - -
    let element = exemplar # create_element dtd (T_element name) attlist 
    - -The element is a copy of exemplar -(even the extension exemplar_ext has been copied) -which ensures that element and its extension are objects -of the same class as the exemplars; note that you need not to pass a -class name or other meta information. The copy is initially connected -with the dtd, it gets a node type, and the attribute list -is filled. The element is now fully functional; it can -be added to another element as child, and it can contain references to -subnodes.

    3.2.4. The class data_impl

    This class is an implementation of node which -should be used for all character data nodes: - -

    class [ 'ext ] data_impl : 'ext -> [ 'ext ] node

    Constructor. You can create a new instance by - -

    new data_impl extension_object
    - -which creates an empty exemplar node which is connected to -extension_object. The node does not contain a -reference to any DTD, and because of this it cannot be added to node trees.

    To get a fully working data node, apply the method -create_data to the exemplar (see example).

    Example. First, create an exemplar by - -

    let exemplar_ext = ... in
    -let exemplar     = new exemplar_ext data_impl in
    - -The exemplar is not used in node trees, but only as -a pattern when the data nodes are created: - -
    let data_node = exemplar # create_data dtd "The characters contained in the data node" 
    - -The data_node is a copy of exemplar. -The copy is initially connected -with the dtd, and it is filled with character material. -The data_node is now fully functional; it can -be added to an element as child.

    3.2.5. The type spec

    The type spec defines a way to handle the details of -creating nodes from exemplars. - -

    type 'ext spec
    -constraint 'ext = 'ext node #extension
    -
    -val make_spec_from_mapping :
    -      ?super_root_exemplar : 'ext node ->
    -      ?comment_exemplar : 'ext node ->
    -      ?default_pinstr_exemplar : 'ext node ->
    -      ?pinstr_mapping : (string, 'ext node) Hashtbl.t ->
    -      data_exemplar: 'ext node ->
    -      default_element_exemplar: 'ext node ->
    -      element_mapping: (string, 'ext node) Hashtbl.t -> 
    -      unit -> 
    -        'ext spec
    -
    -val make_spec_from_alist :
    -      ?super_root_exemplar : 'ext node ->
    -      ?comment_exemplar : 'ext node ->
    -      ?default_pinstr_exemplar : 'ext node ->
    -      ?pinstr_alist : (string * 'ext node) list ->
    -      data_exemplar: 'ext node ->
    -      default_element_exemplar: 'ext node ->
    -      element_alist: (string * 'ext node) list -> 
    -      unit -> 
    -        'ext spec
    - -The two functions make_spec_from_mapping and -make_spec_from_alist create spec -values. Both functions are functionally equivalent and the only difference is -that the first function prefers hashtables and the latter associative lists to -describe mappings from names to exemplars.

    You can specify exemplars for the various kinds of nodes that need to be -generated when an XML document is parsed: - -

    • ~super_root_exemplar: This exemplar -is used to create the super root. This special node is only created if the -corresponding configuration option has been selected; it is the parent node of -the root node which may be convenient if every working node must have a parent.

    • ~comment_exemplar: This exemplar is -used when a comment node must be created. Note that such nodes are only created -if the corresponding configuration option is "on".

    • ~default_pinstr_exemplar: If a node -for a processing instruction must be created, and the instruction is not listed -in the table passed by ~pinstr_mapping or -~pinstr_alist, this exemplar is used. -Again the configuration option must be "on" in order to create such nodes at -all.

    • ~pinstr_mapping or -~pinstr_alist: Map the target names of processing -instructions to exemplars. These mappings are only used when nodes for -processing instructions are created.

    • ~data_exemplar: The exemplar for -ordinary data nodes.

    • ~default_element_exemplar: This -exemplar is used if an element node must be created, but the element type -cannot be found in the tables element_mapping or -element_alist.

    • ~element_mapping or -~element_alist: Map the element types to exemplars. These -mappings are used to create element nodes.

    - -In most cases, you only want to create spec values to pass -them to the parser functions found in Pxp_yacc. However, it -might be useful to apply spec values directly.

    The following functions create various types of nodes by selecting the -corresponding exemplar from the passed spec value, and by -calling create_element or create_data on -the exemplar. - -

    val create_data_node : 
    -      'ext spec -> 
    -      dtd -> 
    -      (* data material: *) string -> 
    -          'ext node
    -
    -val create_element_node : 
    -      ?position:(string * int * int) ->
    -      'ext spec -> 
    -      dtd -> 
    -      (* element type: *) string -> 
    -      (* attributes: *) (string * string) list -> 
    -          'ext node
    -
    -val create_super_root_node :
    -      ?position:(string * int * int) ->
    -      'ext spec -> 
    -       dtd -> 
    -           'ext node
    -
    -val create_comment_node :
    -      ?position:(string * int * int) ->
    -      'ext spec -> 
    -      dtd -> 
    -      (* comment text: *) string -> 
    -          'ext node
    -
    -val create_pinstr_node :
    -      ?position:(string * int * int) ->
    -      'ext spec -> 
    -      dtd -> 
    -      proc_instruction -> 
    -          'ext node

    3.2.6. Examples

    Building trees. Here is the piece of code that creates the tree of -the figure A tree with element nodes, data nodes, and attributes. The extension -object and the DTD are beyond the scope of this example. - -

    let exemplar_ext = ... (* some extension *) in
    -let dtd = ... (* some DTD *) in
    -
    -let element_exemplar = new element_impl exemplar_ext in
    -let data_exemplar    = new data_impl    exemplar_ext in
    -
    -let a1 = element_exemplar # create_element dtd (T_element "a") ["att", "apple"]
    -and b1 = element_exemplar # create_element dtd (T_element "b") []
    -and c1 = element_exemplar # create_element dtd (T_element "c") []
    -and a2 = element_exemplar # create_element dtd (T_element "a") ["att", "orange"]
    -in
    -
    -let cherries = data_exemplar # create_data dtd "Cherries" in
    -let orange   = data_exemplar # create_data dtd "An orange" in
    -
    -a1 # add_node b1;
    -a1 # add_node c1;
    -b1 # add_node a2;
    -b1 # add_node cherries;
    -a2 # add_node orange;
    - -Alternatively, the last block of statements could also be written as: - -
    a1 # set_nodes [b1; c1];
    -b1 # set_nodes [a2; cherries];
    -a2 # set_nodes [orange];
    - -The root of the tree is a1, i.e. it is true that - -
    x # root == a1
    - -for every x from { a1, a2, -b1, c1, cherries, -orange }.

    Furthermore, the following properties hold: - -

      a1 # attribute "att" = Value "apple"
    -& a2 # attribute "att" = Value "orange"
    -
    -& cherries # data = "Cherries"
    -&   orange # data = "An orange"
    -&       a1 # data = "CherriesAn orange"
    -
    -&       a1 # node_type = T_element "a"
    -&       a2 # node_type = T_element "a"
    -&       b1 # node_type = T_element "b"
    -&       c1 # node_type = T_element "c"
    -& cherries # node_type = T_data
    -&   orange # node_type = T_data
    -
    -&       a1 # sub_nodes = [ b1; c1 ]
    -&       a2 # sub_nodes = [ orange ]
    -&       b1 # sub_nodes = [ a2; cherries ]
    -&       c1 # sub_nodes = []
    -& cherries # sub_nodes = []
    -&   orange # sub_nodes = []
    -
    -&       a2 # parent == a1
    -&       b1 # parent == b1
    -&       c1 # parent == a1
    -& cherries # parent == b1
    -&   orange # parent == a2

    Searching nodes. The following function searches all nodes of a tree -for which a certain condition holds: - -

    let rec search p t =
    -  if p t then
    -    t :: search_list p (t # sub_nodes)
    -  else
    -    search_list p (t # sub_nodes)
    -
    -and search_list p l =
    -  match l with
    -    []      -> []
    -  | t :: l' -> (search p t) @ (search_list p l')
    -;;

    For example, if you want to search all elements of a certain -type et, the function search can be -applied as follows: - -

    let search_element_type et t =
    -  search (fun x -> x # node_type = T_element et) t
    -;;

    Getting attribute values. Suppose we have the declaration: - -

    <!ATTLIST e a CDATA #REQUIRED
    -            b CDATA #IMPLIED
    -            c CDATA "12345">
    - -In this case, every element e must have an attribute -a, otherwise the parser would indicate an error. If -the O'Caml variable n holds the node of the tree -corresponding to the element, you can get the value of the attribute -a by - -
    let value_of_a = n # required_string_attribute "a"
    - -which is more or less an abbreviation for - -
    let value_of_a = 
    -  match n # attribute "a" with
    -    Value s -> s
    -  | _       -> assert false
    - -- as the attribute is required, the attribute method always -returns a Value.

    In contrast to this, the attribute b can be -omitted. In this case, the method required_string_attribute -works only if the attribute is there, and the method will fail if the attribute -is missing. To get the value, you can apply the method -optional_string_attribute: - -

    let value_of_b = n # optional_string_attribute "b"
    - -Now, value_of_b is of type string option, -and None represents the omitted attribute. Alternatively, -you could also use attribute: - -
    let value_of_b = 
    -  match n # attribute "b" with
    -    Value s       -> Some s
    -  | Implied_value -> None
    -  | _             -> assert false

    The attribute c behaves much like -a, because it has always a value. If the attribute is -omitted, the default, here "12345", will be returned instead. Because of this, -you can again use required_string_attribute to get the -value.

    The type CDATA is the most general string -type. The types NMTOKEN, ID, -IDREF, ENTITY, and all enumerators and -notations are special forms of string types that restrict the possible -values. From O'Caml, they behave like CDATA, i.e. you can -use the methods required_string_attribute and -optional_string_attribute, too.

    In contrast to this, the types NMTOKENS, -IDREFS, and ENTITIES mean lists of -strings. Suppose we have the declaration: - -

    <!ATTLIST f d NMTOKENS #REQUIRED
    -            e NMTOKENS #IMPLIED>
    - -The type NMTOKENS stands for lists of space-separated -tokens; for example the value "1 abc 23ef" means the list -["1"; "abc"; "23ef"]. (Again, IDREFS -and ENTITIES have more restricted values.) To get the -value of attribute d, one can use - -
    let value_of_d = n # required_list_attribute "d"
    - -or - -
    let value_of_d = 
    -  match n # attribute "d" with
    -    Valuelist l -> l
    -  | _           -> assert false
    - -As d is required, the attribute cannot be omitted, and -the attribute method returns always a -Valuelist.

    For optional attributes like e, apply - -

    let value_of_e = n # optional_list_attribute "e"
    - -or - -
    let value_of_e = 
    -  match n # attribute "e" with
    -    Valuelist l   -> l
    -  | Implied_value -> []
    -  | _             -> assert false
    - -Here, the case that the attribute is missing counts like the empty list.

    3.2.7. Iterators

    There are also several iterators in Pxp_document; please see -the mli file for details. You can find examples for them in the -"simple_transformation" directory. - -

    val find : ?deeply:bool -> 
    -           f:('ext node -> bool) -> 'ext node -> 'ext node
    -
    -val find_all : ?deeply:bool ->
    -               f:('ext node -> bool) -> 'ext node -> 'ext node list
    -
    -val find_element : ?deeply:bool ->
    -                   string -> 'ext node -> 'ext node
    -
    -val find_all_elements : ?deeply:bool ->
    -                        string -> 'ext node -> 'ext node list
    -
    -exception Skip
    -val map_tree :  pre:('exta node -> 'extb node) ->
    -               ?post:('extb node -> 'extb node) ->
    -               'exta node -> 
    -                   'extb node
    -
    -
    -val map_tree_sibl : 
    -        pre: ('exta node option -> 'exta node -> 'exta node option -> 
    -                  'extb node) ->
    -       ?post:('extb node option -> 'extb node -> 'extb node option -> 
    -                  'extb node) ->
    -       'exta node -> 
    -           'extb node
    -
    -val iter_tree : ?pre:('ext node -> unit) ->
    -                ?post:('ext node -> unit) ->
    -                'ext node -> 
    -                    unit
    -
    -val iter_tree_sibl :
    -       ?pre: ('ext node option -> 'ext node -> 'ext node option -> unit) ->
    -       ?post:('ext node option -> 'ext node -> 'ext node option -> unit) ->
    -       'ext node -> 
    -           unit


    PrevHomeNext
    The objects representing the documentUpThe class type extension
    \ No newline at end of file diff --git a/helm/DEVEL/pxp/pxp/doc/manual/ps/markup.ps b/helm/DEVEL/pxp/pxp/doc/manual/ps/markup.ps deleted file mode 100644 index 3a98c7964..000000000 --- a/helm/DEVEL/pxp/pxp/doc/manual/ps/markup.ps +++ /dev/null @@ -1,8866 +0,0 @@ -%!PS-Adobe-2.0 -%%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software -%%Pages: 96 -%%PageOrder: Ascend -%%BoundingBox: 0 0 596 842 -%%DocumentFonts: Helvetica-Bold Times-Roman Times-Bold Times-Italic -%%+ Courier Courier-Oblique Helvetica-BoldOblique Courier-Bold -%%DocumentPaperSizes: a4 -%%EndComments -%DVIPSWebPage: (www.radicaleye.com) -%DVIPSCommandLine: dvips -f -%DVIPSParameters: dpi=600, compressed -%DVIPSSource: TeX output 2000.08.30:1757 -%%BeginProcSet: texc.pro -%! -/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S -N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 -mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 -0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ -landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize -mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ -matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round -exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ -statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] -N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin -/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array -/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 -array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N -df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A -definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get -}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} -B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr -1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3 -1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx -0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx -sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{ -rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp -gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B -/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{ -/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{ -A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy -get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse} -ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp -fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17 -{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add -chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{ -1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop} -forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn -/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put -}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ -bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A -mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ -SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ -userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X -1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 -index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N -/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ -/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) -(LaserWriter 16/600)]{A length product length le{A length product exch 0 -exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse -end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask -grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} -imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round -exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto -fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p -delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} -B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ -p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S -rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end - -%%EndProcSet -%%BeginProcSet: 8r.enc -% @@psencodingfile@{ -% author = "S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry", -% version = "0.6", -% date = "1 July 1998", -% filename = "8r.enc", -% email = "tex-fonts@@tug.org", -% docstring = "Encoding for TrueType or Type 1 fonts -% to be used with TeX." -% @} -% -% Idea is to have all the characters normally included in Type 1 fonts -% available for typesetting. This is effectively the characters in Adobe -% Standard Encoding + ISO Latin 1 + extra characters from Lucida. -% -% Character code assignments were made as follows: -% -% (1) the Windows ANSI characters are almost all in their Windows ANSI -% positions, because some Windows users cannot easily reencode the -% fonts, and it makes no difference on other systems. The only Windows -% ANSI characters not available are those that make no sense for -% typesetting -- rubout (127 decimal), nobreakspace (160), softhyphen -% (173). quotesingle and grave are moved just because it's such an -% irritation not having them in TeX positions. -% -% (2) Remaining characters are assigned arbitrarily to the lower part -% of the range, avoiding 0, 10 and 13 in case we meet dumb software. -% -% (3) Y&Y Lucida Bright includes some extra text characters; in the -% hopes that other PostScript fonts, perhaps created for public -% consumption, will include them, they are included starting at 0x12. -% -% (4) Remaining positions left undefined are for use in (hopefully) -% upward-compatible revisions, if someday more characters are generally -% available. -% -% (5) hyphen appears twice for compatibility with both -% ASCII and Windows. -% -/TeXBase1Encoding [ -% 0x00 (encoded characters from Adobe Standard not in Windows 3.1) - /.notdef /dotaccent /fi /fl - /fraction /hungarumlaut /Lslash /lslash - /ogonek /ring /.notdef - /breve /minus /.notdef -% These are the only two remaining unencoded characters, so may as -% well include them. - /Zcaron /zcaron -% 0x10 - /caron /dotlessi -% (unusual TeX characters available in, e.g., Lucida Bright) - /dotlessj /ff /ffi /ffl - /.notdef /.notdef /.notdef /.notdef - /.notdef /.notdef /.notdef /.notdef - % very contentious; it's so painful not having quoteleft and quoteright - % at 96 and 145 that we move the things normally found there to here. - /grave /quotesingle -% 0x20 (ASCII begins) - /space /exclam /quotedbl /numbersign - /dollar /percent /ampersand /quoteright - /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash -% 0x30 - /zero /one /two /three /four /five /six /seven - /eight /nine /colon /semicolon /less /equal /greater /question -% 0x40 - /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O -% 0x50 - /P /Q /R /S /T /U /V /W - /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore -% 0x60 - /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o -% 0x70 - /p /q /r /s /t /u /v /w - /x /y /z /braceleft /bar /braceright /asciitilde - /.notdef % rubout; ASCII ends -% 0x80 - /.notdef /.notdef /quotesinglbase /florin - /quotedblbase /ellipsis /dagger /daggerdbl - /circumflex /perthousand /Scaron /guilsinglleft - /OE /.notdef /.notdef /.notdef -% 0x90 - /.notdef /.notdef /.notdef /quotedblleft - /quotedblright /bullet /endash /emdash - /tilde /trademark /scaron /guilsinglright - /oe /.notdef /.notdef /Ydieresis -% 0xA0 - /.notdef % nobreakspace - /exclamdown /cent /sterling - /currency /yen /brokenbar /section - /dieresis /copyright /ordfeminine /guillemotleft - /logicalnot - /hyphen % Y&Y (also at 45); Windows' softhyphen - /registered - /macron -% 0xD0 - /degree /plusminus /twosuperior /threesuperior - /acute /mu /paragraph /periodcentered - /cedilla /onesuperior /ordmasculine /guillemotright - /onequarter /onehalf /threequarters /questiondown -% 0xC0 - /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla - /Egrave /Eacute /Ecircumflex /Edieresis - /Igrave /Iacute /Icircumflex /Idieresis -% 0xD0 - /Eth /Ntilde /Ograve /Oacute - /Ocircumflex /Otilde /Odieresis /multiply - /Oslash /Ugrave /Uacute /Ucircumflex - /Udieresis /Yacute /Thorn /germandbls -% 0xE0 - /agrave /aacute /acircumflex /atilde - /adieresis /aring /ae /ccedilla - /egrave /eacute /ecircumflex /edieresis - /igrave /iacute /icircumflex /idieresis -% 0xF0 - /eth /ntilde /ograve /oacute - /ocircumflex /otilde /odieresis /divide - /oslash /ugrave /uacute /ucircumflex - /udieresis /yacute /thorn /ydieresis -] def - -%%EndProcSet -%%BeginProcSet: texps.pro -%! -TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 -index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll -exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]/Metrics -exch def dict begin Encoding{exch dup type/integertype ne{pop pop 1 sub -dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def} -ifelse}forall Metrics/Metrics currentdict end def[2 index currentdict -end definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{ -dup sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 -roll mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def -dup[exch{dup CharStrings exch known not{pop/.notdef/Encoding true def} -if}forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def} -def end - -%%EndProcSet -%%BeginProcSet: special.pro -%! -TeXDict begin/SDict 200 dict N SDict begin/@SpecialDefaults{/hs 612 N -/vs 792 N/ho 0 N/vo 0 N/hsc 1 N/vsc 1 N/ang 0 N/CLIP 0 N/rwiSeen false N -/rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N -/@hscale{@scaleunit div/hsc X}B/@vscale{@scaleunit div/vsc X}B/@hsize{ -/hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho -X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B -/@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{ -/urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known -{userdict/md get type/dicttype eq{userdict begin md length 10 add md -maxlength ge{/md md dup length 20 add dict copy def}if end md begin -/letter{}N/note{}N/legal{}N/od{txpose 1 0 mtx defaultmatrix dtransform S -atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{ -itransform lineto}}{6 -2 roll transform 6 -2 roll transform 6 -2 roll -transform{itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll -curveto}}{{closepath}}pathforall newpath counttomark array astore/gc xdf -pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack} -if}N/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 --1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 -get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip -yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub -neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{ -noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop -90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get -neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr -1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr -2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 --1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S -TR}if}N/cp{pop pop showpage pm restore}N end}if}if}N/normalscale{ -Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale -}if 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState -save N userdict maxlength dict begin/magscale true def normalscale -currentpoint TR/psf$ury psfts/psf$urx psfts/psf$lly psfts/psf$llx psfts -/psf$y psfts/psf$x psfts currentpoint/psf$cy X/psf$cx X/psf$sx psf$x -psf$urx psf$llx sub div N/psf$sy psf$y psf$ury psf$lly sub div N psf$sx -psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub -TR/showpage{}N/erasepage{}N/copypage{}N/p 3 def @MacSetUp}N/doclip{ -psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2 -roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath -moveto}N/endTexFig{end psf$SavedState restore}N/@beginspecial{SDict -begin/SpecialSave save N gsave normalscale currentpoint TR -@SpecialDefaults count/ocount X/dcount countdictstack N}N/@setspecial{ -CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto -closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx -sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR -}{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse -CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury -lineto closepath clip}if/showpage{}N/erasepage{}N/copypage{}N newpath}N -/@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{end} -repeat grestore SpecialSave restore end}N/@defspecial{SDict begin}N -/@fedspecial{end}B/li{lineto}B/rl{rlineto}B/rc{rcurveto}B/np{/SaveX -currentpoint/SaveY X N 1 setlinecap newpath}N/st{stroke SaveX SaveY -moveto}N/fil{fill SaveX SaveY moveto}N/ellipse{/endangle X/startangle X -/yrad X/xrad X/savematrix matrix currentmatrix N TR xrad yrad scale 0 0 -1 startangle endangle arc savematrix setmatrix}N end - -%%EndProcSet -%%BeginProcSet: color.pro -%! -TeXDict begin/setcmykcolor where{pop}{/setcmykcolor{dup 10 eq{pop -setrgbcolor}{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll -}repeat setrgbcolor pop}ifelse}B}ifelse/TeXcolorcmyk{setcmykcolor}def -/TeXcolorrgb{setrgbcolor}def/TeXcolorgrey{setgray}def/TeXcolorgray{ -setgray}def/TeXcolorhsb{sethsbcolor}def/currentcmykcolor where{pop}{ -/currentcmykcolor{currentrgbcolor 10}B}ifelse/DC{exch dup userdict exch -known{pop pop}{X}ifelse}B/GreenYellow{0.15 0 0.69 0 setcmykcolor}DC -/Yellow{0 0 1 0 setcmykcolor}DC/Goldenrod{0 0.10 0.84 0 setcmykcolor}DC -/Dandelion{0 0.29 0.84 0 setcmykcolor}DC/Apricot{0 0.32 0.52 0 -setcmykcolor}DC/Peach{0 0.50 0.70 0 setcmykcolor}DC/Melon{0 0.46 0.50 0 -setcmykcolor}DC/YellowOrange{0 0.42 1 0 setcmykcolor}DC/Orange{0 0.61 -0.87 0 setcmykcolor}DC/BurntOrange{0 0.51 1 0 setcmykcolor}DC -/Bittersweet{0 0.75 1 0.24 setcmykcolor}DC/RedOrange{0 0.77 0.87 0 -setcmykcolor}DC/Mahogany{0 0.85 0.87 0.35 setcmykcolor}DC/Maroon{0 0.87 -0.68 0.32 setcmykcolor}DC/BrickRed{0 0.89 0.94 0.28 setcmykcolor}DC/Red{ -0 1 1 0 setcmykcolor}DC/OrangeRed{0 1 0.50 0 setcmykcolor}DC/RubineRed{ -0 1 0.13 0 setcmykcolor}DC/WildStrawberry{0 0.96 0.39 0 setcmykcolor}DC -/Salmon{0 0.53 0.38 0 setcmykcolor}DC/CarnationPink{0 0.63 0 0 -setcmykcolor}DC/Magenta{0 1 0 0 setcmykcolor}DC/VioletRed{0 0.81 0 0 -setcmykcolor}DC/Rhodamine{0 0.82 0 0 setcmykcolor}DC/Mulberry{0.34 0.90 -0 0.02 setcmykcolor}DC/RedViolet{0.07 0.90 0 0.34 setcmykcolor}DC -/Fuchsia{0.47 0.91 0 0.08 setcmykcolor}DC/Lavender{0 0.48 0 0 -setcmykcolor}DC/Thistle{0.12 0.59 0 0 setcmykcolor}DC/Orchid{0.32 0.64 0 -0 setcmykcolor}DC/DarkOrchid{0.40 0.80 0.20 0 setcmykcolor}DC/Purple{ -0.45 0.86 0 0 setcmykcolor}DC/Plum{0.50 1 0 0 setcmykcolor}DC/Violet{ -0.79 0.88 0 0 setcmykcolor}DC/RoyalPurple{0.75 0.90 0 0 setcmykcolor}DC -/BlueViolet{0.86 0.91 0 0.04 setcmykcolor}DC/Periwinkle{0.57 0.55 0 0 -setcmykcolor}DC/CadetBlue{0.62 0.57 0.23 0 setcmykcolor}DC -/CornflowerBlue{0.65 0.13 0 0 setcmykcolor}DC/MidnightBlue{0.98 0.13 0 -0.43 setcmykcolor}DC/NavyBlue{0.94 0.54 0 0 setcmykcolor}DC/RoyalBlue{1 -0.50 0 0 setcmykcolor}DC/Blue{1 1 0 0 setcmykcolor}DC/Cerulean{0.94 0.11 -0 0 setcmykcolor}DC/Cyan{1 0 0 0 setcmykcolor}DC/ProcessBlue{0.96 0 0 0 -setcmykcolor}DC/SkyBlue{0.62 0 0.12 0 setcmykcolor}DC/Turquoise{0.85 0 -0.20 0 setcmykcolor}DC/TealBlue{0.86 0 0.34 0.02 setcmykcolor}DC -/Aquamarine{0.82 0 0.30 0 setcmykcolor}DC/BlueGreen{0.85 0 0.33 0 -setcmykcolor}DC/Emerald{1 0 0.50 0 setcmykcolor}DC/JungleGreen{0.99 0 -0.52 0 setcmykcolor}DC/SeaGreen{0.69 0 0.50 0 setcmykcolor}DC/Green{1 0 -1 0 setcmykcolor}DC/ForestGreen{0.91 0 0.88 0.12 setcmykcolor}DC -/PineGreen{0.92 0 0.59 0.25 setcmykcolor}DC/LimeGreen{0.50 0 1 0 -setcmykcolor}DC/YellowGreen{0.44 0 0.74 0 setcmykcolor}DC/SpringGreen{ -0.26 0 0.76 0 setcmykcolor}DC/OliveGreen{0.64 0 0.95 0.40 setcmykcolor} -DC/RawSienna{0 0.72 1 0.45 setcmykcolor}DC/Sepia{0 0.83 1 0.70 -setcmykcolor}DC/Brown{0 0.81 1 0.60 setcmykcolor}DC/Tan{0.14 0.42 0.56 0 -setcmykcolor}DC/Gray{0 0 0 0.50 setcmykcolor}DC/Black{0 0 0 1 -setcmykcolor}DC/White{0 0 0 0 setcmykcolor}DC end - -%%EndProcSet -TeXDict begin 39158280 55380996 1000 600 600 () @start -/Fa 106[21 149[{TeXBase1Encoding ReEncodeFont}1 59.7758 -/Times-Roman rf /Fb 135[77 2[77 77 77 3[77 77 77 3[77 -3[77 77 77 99[{TeXBase1Encoding ReEncodeFont}11 129.116 -/Courier-Bold rf /Fc 134[65 65 2[65 65 65 65 1[65 65 -65 65 65 2[65 65 65 65 65 65 65 65 65 1[65 36[65 6[65 -65 65 49[{TeXBase1Encoding ReEncodeFont}25 107.597 /Courier-Bold -rf /Fd 141[56 4[128 7[80 88 2[80 97[{TeXBase1Encoding ReEncodeFont}5 -143.462 /Helvetica-BoldOblique rf /Fe 147[21 4[37 1[33 -3[37 23[25 14[25 58[{TeXBase1Encoding ReEncodeFont}6 -74.7198 /Times-Italic rf /Ff 204[25 25 25 49[{ -TeXBase1Encoding ReEncodeFont}3 49.8132 /Times-Roman -rf -%DVIPSBitmapFont: Fg cmmi8 8 2 -/Fg 2 63 df60 -D<12E012F812FEEA3F80EA0FE0EA03F8EA00FEEB3F80EB0FE0EB03F8EB00FC143FEC0FC0 -EC07F0EC01FCEC007FED1FC0ED07F0ED01FCED007FEE1FC01607161FEE7F00ED01FCED07 -F0ED1FC0037FC7FCEC01FCEC07F0EC0FC0023FC8FC14FCEB03F8EB0FE0EB3F8001FEC9FC -EA03F8EA0FE0EA3F8000FECAFC12F812E02A2B7AA537>62 D E -%EndDVIPSBitmapFont -/Fh 131[40 1[40 40 40 40 40 40 40 40 40 40 40 40 40 40 -40 40 1[40 40 40 1[40 40 40 40 40 1[40 5[40 3[40 40 40 -40 40 40 40 40 40 40 40 1[40 40 40 1[40 40 40 40 40 1[40 -40 40 40 40 40 1[40 4[40 1[40 1[40 40 40 40 40 40 40 -40 40 40 40 1[40 40 40 33[{TeXBase1Encoding ReEncodeFont}69 -67.2479 /Courier rf /Fi 105[37 28[37 37 54 37 37 21 29 -25 37 37 37 37 58 21 37 1[21 37 37 25 33 37 33 37 33 -7[54 54 3[46 5[54 66 46 2[25 2[42 2[50 50 54 5[21 21 -11[19 1[19 2[25 25 25 4[30 31[42 2[{TeXBase1Encoding ReEncodeFont}45 -74.7198 /Times-Roman rf /Fj 135[55 7[61 2[89 28 6[55 -3[55 27[66 69[{TeXBase1Encoding ReEncodeFont}7 99.6264 -/Helvetica-Bold rf /Fk 145[27 2[27 57[27 49[{ -TeXBase1Encoding ReEncodeFont}3 44.8318 /Courier-Oblique -rf /Fl 135[50 3[50 50 3[50 50 3[50 50 3[50 1[50 50 2[50 -95[{TeXBase1Encoding ReEncodeFont}11 83.022 /Courier-Oblique -rf -%DVIPSBitmapFont: Fm cmmi10 10 2 -/Fm 2 63 df60 -D<126012FCB4FCEA7FC0EA1FF0EA07FCEA01FF38007FC0EB1FF0EB07FCEB01FF9038007F -C0EC1FF0EC07FCEC01FF9138007FC0ED1FF0ED07FCED01FF9238007FC0EE1FF0EE07FCEE -01FF9338007F80EF1FC0A2EF7F80933801FF00EE07FCEE1FF0EE7FC04B48C7FCED07FCED -1FF0ED7FC04A48C8FCEC07FCEC1FF0EC7FC04948C9FCEB07FCEB1FF0EB7FC04848CAFCEA -07FCEA3FF0EA7FC048CBFC12FC1270323279AD41>62 D E -%EndDVIPSBitmapFont -/Fn 134[45 45 1[45 45 45 45 45 1[45 45 45 45 45 1[45 -45 45 45 45 45 45 45 45 45 1[45 5[45 2[45 8[45 5[45 2[45 -45 1[45 19[45 45 44[{TeXBase1Encoding ReEncodeFont}32 -74.7198 /Courier-Oblique rf -%DVIPSBitmapFont: Fo cmmi9 9 2 -/Fo 2 63 df<171C177EEE01FEEE07FCEE1FF0EE7FC0923801FF00ED07FCED1FF0ED7FC0 -4A48C7FCEC07FCEC1FF0EC7FC04948C8FCEB07FCEB1FF0EB7FC04848C9FCEA07FCEA1FF0 -EA7FC048CAFCA2EA7FC0EA1FF0EA07FCEA01FF38007FC0EB1FF0EB07FCEB01FF9038007F -C0EC1FF0EC07FCEC01FF9138007FC0ED1FF0ED07FCED01FF9238007FC0EE1FF0EE07FCEE -01FEEE007E171C2F2E7AA93C>60 D<127012FCB4FCEA7FC0EA1FF0EA07FCEA01FF38007F -C0EB1FF0EB07FCEB01FF9038007FC0EC1FF0EC07FCEC01FF9138007FC0ED1FF0ED07FCED -01FF9238007FC0EE1FF0EE07FCEE01FEA2EE07FCEE1FF0EE7FC0923801FF00ED07FCED1F -F0ED7FC04A48C7FCEC07FCEC1FF0EC7FC04948C8FCEB07FCEB1FF0EB7FC04848C9FCEA07 -FCEA1FF0EA7FC048CAFC12FC12702F2E7AA93C>62 D E -%EndDVIPSBitmapFont -/Fp 134[66 66 93 66 73 40 66 47 1[73 73 73 106 33 2[33 -73 73 40 66 73 66 73 66 8[80 113 80 86 73 80 86 1[80 -1[86 100 73 2[33 86 1[73 80 86 86 1[86 1[73 5[66 66 66 -66 66 66 66 66 66 66 1[33 40 33 2[40 40 5[57 31[73 2[{ -TeXBase1Encoding ReEncodeFont}58 119.552 /Helvetica-Bold -rf /Fq 129[45 45 45 45 45 45 45 45 45 45 45 45 45 45 -45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 -45 45 45 45 1[45 45 45 45 45 45 45 45 45 45 45 45 45 -45 45 1[45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 -45 45 45 45 1[45 45 45 45 45 45 45 45 45 45 45 45 45 -45 45 45 45 1[45 45 45 33[{TeXBase1Encoding ReEncodeFont}90 -74.7198 /Courier rf /Fr 134[37 37 55 37 42 23 32 32 1[42 -42 42 60 23 37 23 23 42 42 23 37 42 37 42 42 1[42 6[51 -69 1[60 46 42 2[51 1[55 69 46 2[28 3[51 60 55 1[51 1[42 -4[28 42 42 42 42 42 42 42 42 42 42 1[21 28 21 2[28 28 -6[28 30[42 2[{TeXBase1Encoding ReEncodeFont}58 83.022 -/Times-Italic rf /Fs 138[105 57 96 67 1[105 105 105 153 -48 1[48 48 105 105 57 96 105 96 105 96 8[115 163 1[124 -105 3[115 2[143 105 5[105 2[124 3[105 10[96 96 96 96 -2[48 43[105 2[{TeXBase1Encoding ReEncodeFont}35 172.154 -/Helvetica-Bold rf /Ft 106[23 29 29 25[33 33 48 33 33 -18 26 22 1[33 33 33 52 18 33 18 18 33 33 22 29 33 29 -33 29 8[48 3[41 37 2[37 6[22 1[48 12[18 10[18 17 1[17 -2[22 22 5[27 31[37 2[{TeXBase1Encoding ReEncodeFont}41 -66.4176 /Times-Roman rf /Fu 134[42 42 60 42 46 28 32 -37 1[46 42 46 69 23 46 1[23 46 42 28 37 46 37 46 42 9[83 -60 60 55 46 60 3[60 78 55 2[32 65 65 51 55 60 60 55 60 -1[42 6[42 1[42 42 42 42 42 42 2[21 28 21 4[28 39[{ -TeXBase1Encoding ReEncodeFont}53 83.022 /Times-Bold rf -/Fv 27[37 58[63 42[45 40 1[40 37 42 42 60 42 42 23 32 -28 42 42 42 42 65 23 42 23 23 42 42 28 37 42 37 42 37 -28 42 1[28 23 28 1[60 60 78 60 60 51 46 55 60 46 60 60 -74 51 60 1[28 60 60 46 51 60 55 55 60 1[37 47 47 47 23 -23 42 42 42 42 42 42 42 42 42 42 23 21 28 21 2[28 28 -28 65 69 1[42 34 28 29[46 46 2[{TeXBase1Encoding ReEncodeFont}90 -83.022 /Times-Roman rf /Fw 136[65 1[51 1[46 32 2[51 51 -1[23 2[23 51 51 1[46 51 2[46 8[55 3[51 3[55 11[60 9[28 -18[23 39[{TeXBase1Encoding ReEncodeFont}19 83.022 /Helvetica-Bold -rf /Fx 134[80 80 112 80 88 48 80 56 1[88 88 88 128 40 -80 1[40 88 88 48 80 88 80 88 80 8[96 1[96 104 88 96 104 -2[112 104 120 88 2[40 104 112 1[96 104 104 1[104 6[48 -4[80 80 80 80 80 2[40 48 45[{TeXBase1Encoding ReEncodeFont}48 -143.462 /Helvetica-Bold rf /Fy 138[126 1[115 80 8[57 -126 126 1[115 126 11[138 2[149 126 3[138 6[57 26[57 6[57 -39[{TeXBase1Encoding ReEncodeFont}15 206.584 /Helvetica-Bold -rf end -%%EndProlog -%%BeginSetup -%%Feature: *Resolution 600dpi -TeXDict begin -%%BeginPaperSize: a4 -a4 -%%EndPaperSize - -%%EndSetup -%%Page: 1 1 -1 0 bop Black Black 890 647 a Fy(The)58 b(PXP)f(user')-12 -b(s)58 b(guide)1384 2594 y Fx(Ger)m(d)39 b(Stolpmann)p -Black Black eop -%%Page: 2 2 -2 1 bop Black Black -2 579 a Fw(The)22 b(PXP)j(user')-5 -b(s)23 b(guide)-2 687 y Fv(by)d(Gerd)f(Stolpmann)-2 903 -y(Cop)o(yright)f(\251)j(1999,)e(2000)g(by)g(Gerd)h(Stolpmann)-2 -1135 y(PXP)h(is)g(a)g(v)n(alidating)d(parser)i(for)f(XML-1.0)g(which)h -(has)g(been)g(written)g(entirely)f(in)h(Objecti)n(v)o(e)g(Caml.)-2 -1285 y Fw(Do)o(wnload)h(PXP:)j Fv(The)c(free)g(PXP)h(library)e(can)h -(be)g(do)n(wnloaded)d(at)k(http://www)-5 b(.ocaml-programming)o(.de)o -(/pack)o(age)o(s/.)15 b(This)-2 1393 y(user')-5 b(s)20 -b(guide)f(is)j(included.)c(Ne)n(west)j(releases)f(of)g(PXP)h(will)g(be) -f(announced)e(in)i(The)g(OCaml)g(Link)g(Database)-2 1500 -y(\(http://www)-5 b(.npc.de/ocaml/linkdb)o(/\).)-2 1899 -y Fu(License)-2 2090 y Ft(This)16 b(document,)j(and)e(the)h(described)h -(softw)o(are,)f("PXP",)e(are)i(cop)o(yright)i(by)d(Gerd)g(Stolpmann.)-2 -2198 y(Permission)h(is)e(hereby)j(granted,)f(free)g(of)f(char)o(ge,)h -(to)f(an)o(y)h(person)f(obtaining)j(a)d(cop)o(y)h(of)f(this)h(document) -g(and)g(the)f("PXP")g(softw)o(are)i(\(the)f("Softw)o(are"\),)g(to)f -(deal)i(in)-2 2306 y(the)f(Softw)o(are)g(without)h(restriction,)g -(including)h(without)e(limitation)i(the)e(rights)g(to)f(use,)g(cop)o(y) -l(,)g(modify)l(,)g(mer)o(ge,)g(publish,)h(distrib)o(ute,)h(sublicense,) -g(and/or)f(sell)-2 2414 y(copies)g(of)f(the)h(Softw)o(are,)g(and)g(to)f -(permit)h(persons)f(to)h(whom)e(the)i(Softw)o(are)h(is)e(furnished)h -(to)f(do)g(so,)g(subject)h(to)g(the)f(follo)n(wing)j(conditions:)-2 -2522 y(The)d(abo)o(v)o(e)h(cop)o(yright)h(notice)g(and)f(this)f -(permission)h(notice)h(shall)f(be)g(included)h(in)e(all)h(copies)h(or)e -(substantial)i(portions)g(of)e(the)g(Softw)o(are.)-2 -2630 y(The)g(Softw)o(are)h(is)f(pro)o(vided)i(\223as)e(is\224,)g -(without)i(w)o(arranty)g(of)e(an)o(y)g(kind,)h(e)o(xpress)f(or)g -(implied,)i(including)g(b)o(ut)e(not)h(limited)h(to)e(the)h(w)o -(arranties)h(of)e(merchantability)l(,)-2 2737 y(\002tness)g(for)g(a)g -(particular)j(purpose)e(and)g(noninfringement.)i(In)d(no)g(e)n(v)o(ent) -h(shall)h(Gerd)e(Stolpmann)h(be)g(liable)h(for)e(an)o(y)g(claim,)h -(damages)g(or)f(other)h(liability)l(,)i(whether)-2 2845 -y(in)d(an)g(action)i(of)e(contract,)i(tort)f(or)f(otherwise,)i(arising) -f(from,)e(out)i(of)f(or)g(in)g(connection)j(with)e(the)f(Softw)o(are)i -(or)e(the)h(use)f(or)g(other)h(dealings)h(in)e(the)h(softw)o(are.)p -Black Black eop -%%Page: 3 3 -3 2 bop Black Black -2 621 a Fs(T)-14 b(ab)n(le)48 b(of)g(Contents)396 -815 y Fu(I.)21 b(User')m(s)g(guide)p Black 4 w(.)p Black -Black -1 w(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black 4 w(6)596 -943 y Fv(1.)f(What)g(is)h(XML?)p Black 4 w(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black 4 w(7)795 1051 -y(1.1.)e(Introduction)p Black 14 w(.)p Black Black -1 -w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black 4 w(7)994 1159 -y(1.1.1.)g(The)g("hello)h(w)o(orld")g(e)o(xample)p Black -13 w(.)p Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black 4 w(7)994 1267 y(1.1.2.)f(XML)h(parsers)g(and)f -(processors)p Black 3 w(.)p Black Black -2 w(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black 4 w(9)994 1375 y(1.1.3.)g(Discussion)p -Black 9 w(.)p Black Black -1 w(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -4 w(9)795 1483 y(1.2.)g(Highlights)g(of)h(XML)p Black -10 w(.)p Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black 4 w(11)994 -1591 y(1.2.1.)f(The)g(DTD)i(and)e(the)i(instance)p Black -15 w(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black 4 w(11)994 1699 y(1.2.2.)e(Reserv)o(ed)g(characters)p -Black 19 w(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black 4 w(12)994 1807 y(1.2.3.)g(Elements)g(and)h -(ELEMENT)f(declarations)p Black 7 w(.)p Black Black -2 -w(.)p Black Black(.)p Black Black(.)p Black Black -1 -w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black 4 w(13)994 -1915 y(1.2.4.)g(Attrib)n(ute)g(lists)j(and)e(A)-9 b(TTLIST)19 -b(declarations)p Black 6 w(.)p Black Black -2 w(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black 4 w(15)994 2023 y(1.2.5.)g(P)o(arsed)g(entities)p -Black 18 w(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black 4 w(16)994 2131 y(1.2.6.)g(Notations)g(and)h -(unparsed)e(entities)p Black 14 w(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black 4 w(19)795 2238 y(1.3.)h(A)i(complete)e(e)o(xample:)g -(The)h Fr(r)m(eadme)f Fv(DTD)p Black 3 w(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black 4 w(20)596 2346 y(2.)h(Using)g(PXP)p Black -6 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black 4 w(24)795 2454 y(2.1.)f(V)-9 b(alidation)p -Black 3 w(.)p Black Black -2 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black 4 w(24)795 -2562 y(2.2.)19 b(Ho)n(w)h(to)g(parse)g(a)h(document)d(from)h(an)h -(application)p Black 10 w(.)p Black Black -2 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black 4 w(24)795 -2670 y(2.3.)f(Class-based)h(processing)f(of)h(the)g(node)g(tree)p -Black 8 w(.)p Black Black -1 w(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black 4 w(29)795 -2778 y(2.4.)f(Example:)g(An)h(HTML)g(back)o(end)f(for)g(the)i -Fr(r)m(eadme)e Fv(DTD)p Black 3 w(.)p Black Black -1 -w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black 4 w(33)994 2886 y(2.4.1.)g(Header)p -Black 9 w(.)p Black Black -2 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black 4 w(33)994 2994 y(2.4.2.)g(T)-7 b(ype)19 -b(declarations)p Black 14 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black 4 w(33)994 3102 y(2.4.3.)g(Class)i Fq(store)p Black -11 w Fv(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black 4 w(34)994 3210 y(2.4.4.)e(Function)g -Fq(escape_html)p Black Fv(.)p Black Black -2 w(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -4 w(35)994 3318 y(2.4.5.)g(V)-5 b(irtual)20 b(class)h -Fq(shared)p Black 4 w Fv(.)p Black Black -2 w(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black 4 w(35)994 3426 y(2.4.6.)e(Class)i -Fq(only_data)p Black 17 w Fv(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black 4 w(36)994 -3534 y(2.4.7.)e(Class)i Fq(readme)p Black 8 w Fv(.)p -Black Black -1 w(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black 4 w(36)994 3642 y(2.4.8.)e(Classes)i -Fq(section)p Fv(,)f Fq(sect1)p Fv(,)f Fq(sect2)p Fv(,)h(and)g -Fq(sect3)p Black 13 w Fv(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black 4 w(39)994 3749 y(2.4.9.)f(Classes)i -Fq(map_tag)p Fv(,)f Fq(p)p Fv(,)g Fq(em)p Fv(,)g Fq(ul)p -Fv(,)g Fq(li)p Black 16 w Fv(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black 4 w(39)994 -3857 y(2.4.10.)e(Class)k Fq(br)p Black Fv(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black 4 w(40)994 3965 y(2.4.11.)c(Class)k -Fq(code)p Black 13 w Fv(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black 4 w(40)994 4073 y(2.4.12.)c(Class)k -Fq(a)p Black 4 w Fv(.)p Black Black -1 w(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black 4 w(41)994 -4181 y(2.4.13.)c(Class)k Fq(footnote)p Black 1 w Fv(.)p -Black Black -2 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black 4 w(42)994 4289 -y(2.4.14.)c(The)i(speci\002cation)f(of)h(the)g(document)f(model)p -Black 12 w(.)p Black Black -2 w(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black 4 w(43)596 4397 y(3.)h(The)f(objects)h -(representing)e(the)j(document)p Black 4 w(.)p Black -Black -3 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -4 w(46)795 4505 y(3.1.)e(The)h Fq(document)f Fv(class)p -Black 7 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black 4 w(46)795 4613 y(3.2.)g(The)h(class)h(type)f -Fq(node)p Black 2 w Fv(.)p Black Black -2 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -4 w(47)994 4721 y(3.2.1.)f(The)g(structure)h(of)g(document)e(trees)p -Black 3 w(.)p Black Black -1 w(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black 4 w(49)994 -4829 y(3.2.2.)h(The)g(methods)h(of)f(the)i(class)g(type)f -Fq(node)p Black 13 w Fv(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black 4 w(52)p Black 3842 -5278 a Fr(3)p Black eop -%%Page: 4 4 -4 3 bop Black Black 994 579 a Fv(3.2.3.)19 b(The)g(class)j -Fq(element_impl)p Black 2 w Fv(.)p Black Black -3 w(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black 4 w(56)994 687 y(3.2.4.)d(The)g(class)j Fq(data_impl)p -Black 12 w Fv(.)p Black Black -2 w(.)p Black Black -1 -w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black 4 w(57)994 -795 y(3.2.5.)d(The)g(type)h Fq(spec)p Black 5 w Fv(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black 4 w(58)994 903 y(3.2.6.)f(Examples)p Black -5 w(.)p Black Black -3 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black 4 w(60)994 -1011 y(3.2.7.)g(Iterators)p Black 12 w(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black 4 w(64)795 1119 y(3.3.)g(The)h(class)h(type)f Fq(extension)p -Black 6 w Fv(.)p Black Black -2 w(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black 4 w(65)994 1226 y(3.3.1.)f(Ho)n(w)h(to)g(de\002ne) -g(an)g(e)o(xtension)f(class)p Black 13 w(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black 4 w(66)994 1334 -y(3.3.2.)g(Ho)n(w)h(to)g(bind)f(e)o(xtension)g(classes)i(to)g(element)e -(types)p Black 10 w(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -4 w(68)795 1442 y(3.4.)g(Details)i(of)f(the)g(mapping)e(from)i(XML)g -(te)o(xt)g(to)g(the)g(tree)h(representation)p Black 13 -w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black 4 w(69)994 -1550 y(3.4.1.)e(The)g(representation)g(of)g(character)n(-free)f -(elements)p Black 9 w(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -4 w(69)994 1658 y(3.4.2.)h(The)g(representation)g(of)g(character)g -(data)p Black 10 w(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black 4 w(70)994 1766 -y(3.4.3.)g(The)g(representation)g(of)g(entities)i(within)f(documents)p -Black 12 w(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black 4 w(70)994 1874 y(3.4.4.)f(The)g(representation)g -(of)g(attrib)n(utes)p Black 20 w(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black 4 w(71)994 1982 y(3.4.5.)g(The)g(representation)g(of)g -(processing)g(instructions)p Black(.)p Black Black -1 -w(.)p Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black 4 w(71)994 2090 y(3.4.6.)g(The)g -(representation)g(of)g(comments)p Black 7 w(.)p Black -Black -1 w(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black 4 w(71)994 2198 y(3.4.7.)g(The)g(attrib)n(utes)i -Fq(xml:lang)e Fv(and)h Fq(xml:space)p Black 10 w Fv(.)p -Black Black -2 w(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black 4 w(72)994 2306 y(3.4.8.)f(And)g(what)h(about)g(namespaces?)p -Black 12 w(.)p Black Black -2 w(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black 4 w(72)596 -2414 y(4.)g(Con\002guring)e(and)h(calling)h(the)g(parser)p -Black 11 w(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black 4 w(73)795 2522 y(4.1.)f(Ov)o(ervie)n(w)p -Black 19 w(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black 4 w(73)795 -2630 y(4.2.)g(Resolv)o(ers)h(and)g(sources)p Black 2 -w(.)p Black Black -1 w(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black 4 w(75)994 2737 -y(4.2.1.)f(Using)h(the)g(b)n(uilt-in)f(resolv)o(ers)h(\(called)f -(sources\))p Black 5 w(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -4 w(75)994 2845 y(4.2.2.)g(The)g(resolv)o(er)g(API)p -Black 11 w(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black 4 w(76)994 2953 y(4.2.3.)g(Prede\002ned)f(resolv)o(er)h -(components)p Black 13 w(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black 4 w(78)795 3061 -y(4.3.)g(The)h(DTD)g(classes)p Black 1 w(.)p Black Black -1 w(.)p Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black 4 w(81)795 -3169 y(4.4.)f(In)m(v)n(oking)f(the)i(parser)p Black 14 -w(.)p Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black 4 w(89)994 -3277 y(4.4.1.)f(Def)o(aults)p Black 10 w(.)p Black Black --1 w(.)p Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black 4 w(89)994 3385 y(4.4.2.)g(P)o(arsing)g(functions)p -Black 4 w(.)p Black Black -3 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black 4 w(90)994 3493 y(4.4.3.)g(Con\002guration)f(options)p -Black 19 w(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black 4 w(91)994 3601 y(4.4.4.)h(Which)h -(con\002guration)d(should)i(I)i(use?)p Black 18 w(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -4 w(93)795 3709 y(4.5.)e(Updates)p Black 10 w(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black 4 w(95)p Black 3842 5278 a -Fr(4)p Black eop -%%Page: 5 5 -5 4 bop Black Black -2 621 a Fs(List)48 b(of)g(Figures)396 -815 y Fv(3-1.)19 b(A)i(tree)f(with)h(element)e(nodes,)h(data)g(nodes,)f -(and)g(attrib)n(utes)p Black 18 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black 4 w(49)396 923 y(3-2.)g(Nodes)h(are)g(doubly)f(link)o -(ed)g(trees)p Black 15 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black 4 w(50)396 -1031 y(3-3.)g(A)i(node)e(can)h(only)g(be)g(added)f(if)h(it)h(is)g(a)g -(root)p Black 5 w(.)p Black Black -1 w(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black 4 w(51)396 1139 y(3-4.)e(A)i(deleted)f(node)f -(becomes)g(the)h(root)g(of)g(the)g(subtree)p Black 3 -w(.)p Black Black -1 w(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -4 w(51)396 1247 y(3-5.)f(The)h(clone)g(of)g(a)g(subtree)p -Black 18 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black 4 w(52)396 1355 y(3-6.)f(The)h(structure)g -(of)f(nodes)h(and)g(e)o(xtensions)p Black 18 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black -1 w(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black Black(.)p Black Black(.)p Black Black(.)p Black -Black -1 w(.)p Black Black(.)p Black Black(.)p Black -Black(.)p Black Black -1 w(.)p Black Black(.)p Black -Black(.)p Black Black(.)p Black Black -1 w(.)p Black -Black(.)p Black Black(.)p Black Black(.)p Black Black --1 w(.)p Black Black(.)p Black Black(.)p Black Black(.)p -Black Black -1 w(.)p Black Black(.)p Black Black(.)p -Black Black(.)p Black Black(.)p Black Black -1 w(.)p -Black 4 w(65)p Black 3842 5278 a Fr(5)p Black eop -%%Page: 6 6 -6 5 bop Black Black 1241 647 a Fy(I.)58 b(User')-12 b(s)57 -b(guide)p Black Black eop -%%Page: 7 7 -7 6 bop Black Black -2 621 a Fs(Chapter)48 b(1.)f(What)h(is)f(XML?)-2 -1055 y Fx(1.1.)39 b(Intr)m(oduction)396 1235 y Fv(XML)20 -b(\(short)g(for)f Fr(Extensible)h(Markup)g(Langua)o(g)o(e)p -Fv(\))e(generalizes)h(the)h(idea)g(that)g(te)o(xt)g(documents)f(are)h -(typically)396 1343 y(structured)f(in)h(sections,)g(sub-sections,)f -(paragraphs,)f(and)i(so)g(on.)g(The)g(format)f(of)h(the)g(document)e -(is)j(not)f(\002x)o(ed)g(\(as,)396 1451 y(for)g(e)o(xample,)e(in)j -(HTML\),)e(b)n(ut)h(can)g(be)g(declared)f(by)h(a)h(so-called)e(DTD)i -(\(document)c(type)j(de\002nition\).)f(The)g(DTD)396 -1559 y(describes)h(only)f(the)i(rules)f(ho)n(w)f(the)i(document)d(can)i -(be)g(structured,)e(b)n(ut)j(not)e(ho)n(w)h(the)g(document)e(can)i(be) -396 1667 y(processed.)f(F)o(or)h(e)o(xample,)e(if)j(you)e(w)o(ant)i(to) -f(publish)f(a)i(book)e(that)h(uses)h(XML)f(markup,)e(you)h(will)i(need) -f(a)g(processor)396 1775 y(that)h(con)m(v)o(erts)d(the)i(XML)g(\002le)h -(into)f(a)h(printable)e(format)g(such)h(as)h(Postscript.)f(On)g(the)g -(one)g(hand,)f(the)h(structure)f(of)396 1883 y(XML)h(documents)f(is)i -(con\002gurable;)d(on)i(the)g(other)f(hand,)g(there)h(is)h(no)f(longer) -f(a)h(canonical)f(interpretation)f(of)i(the)396 1991 -y(elements)g(of)g(the)g(document;)f(for)g(e)o(xample)g(one)h(XML)g(DTD) -g(might)g(w)o(ant)g(that)g(paragraphes)e(are)i(delimited)g(by)396 -2099 y Fq(para)g Fv(tags,)h(and)e(another)g(DTD)h(e)o(xpects)g -Fq(p)g Fv(tags)h(for)e(the)i(same)f(purpose.)e(As)j(a)g(result,)f(for)g -(e)n(v)o(ery)e(DTD)j(a)f(ne)n(w)396 2206 y(processor)f(is)i(required.) -396 2356 y(Although)e(XML)h(can)g(be)g(used)g(to)g(e)o(xpress)g -(structured)f(te)o(xt)h(documents)e(it)j(is)g(not)f(limited)g(to)g -(this)h(kind)e(of)396 2464 y(application.)g(F)o(or)h(e)o(xample,)e(XML) -i(can)g(also)h(be)f(used)g(to)g(e)o(xchange)e(structured)h(data)h(o)o -(v)o(er)f(a)h(netw)o(ork,)f(or)h(to)396 2572 y(simply)g(store)g -(structured)f(data)h(in)g(\002les.)h(Note)f(that)h(XML)f(documents)e -(cannot)i(contain)f(arbitrary)f(binary)h(data)396 2680 -y(because)g(some)g(characters)g(are)g(forbidden;)e(for)i(some)g -(applications)g(you)f(need)h(to)h(encode)e(binary)g(data)h(as)h(te)o -(xt)g(\(e.g.)396 2788 y(the)g(base)h(64)f(encoding\).)-2 -3116 y Fp(1.1.1.)35 b(The)f("hello)g(w)n(orld")e(e)n(xample)396 -3283 y Fv(The)20 b(follo)n(wing)f(e)o(xample)f(sho)n(ws)j(a)f(v)o(ery)f -(simple)i(DTD,)f(and)f(a)i(corresponding)c(document)h(instance.)h(The) -396 3391 y(document)f(is)k(structured)c(such)i(that)h(it)f(consists)h -(of)f(sections,)g(and)g(that)g(sections)g(consist)h(of)f(paragraphs,)d -(and)j(that)396 3499 y(paragraphs)e(contain)h(plain)h(te)o(xt:)396 -3679 y Fq()396 -3777 y()396 3874 -y()396 4065 y Fv(The)20 -b(follo)n(wing)f(document)f(is)j(an)f(instance)g(of)g(this)h(DTD:)396 -4245 y Fq()396 -4342 y()396 -4439 y()486 4536 y(
    )576 4633 y(This)e(is) -i(a)h(paragraph)e(of)i(the)f(first)g(section.)576 -4731 y(This)e(is)i(another)g(paragraph)f(of)i(the)f(first)g -(section.)486 4828 y(
    )p Black 3839 -5278 a Fr(7)p Black eop -%%Page: 8 8 -8 7 bop Black 3028 67 a Fr(Chapter)19 b(1.)h(What)h(is)g(XML?)p -Black 486 579 a Fq(
    )576 676 y(This)42 -b(is)i(the)h(only)f(paragraph)f(of)i(the)f(second)g -(section.)486 773 y(
    )396 870 y(
    )396 -1061 y Fv(As)21 b(in)g(HTML)f(\(and,)f(of)h(course,)f(in)h(grand-f)o -(ather)d(SGML\),)j(the)g("pieces")g(of)g(the)g(document)f(are)h -(delimited)f(by)396 1169 y(element)h(braces,)f(i.e.)i(such)f(a)g(piece) -g(be)o(gins)f(with)i Fo(<)p Fq(name-of-the-type-of-the-piece)p -Fo(>)15 b Fv(and)20 b(ends)g(with)396 1277 y Fo(<)p Fq -(/name-of-the-type-of-the-piece)p Fo(>)p Fv(,)15 b(and)20 -b(the)g(pieces)g(are)g(called)g Fr(elements)p Fv(.)g(Unlik)o(e)g(HTML)g -(and)396 1385 y(SGML,)g(both)g(start)g(tags)h(and)f(end)f(tags)i -(\(i.e.)f(the)g(delimiters)g(written)g(in)g(angle)g(brack)o(ets\))f -(can)h(ne)n(v)o(er)f(be)h(left)g(out.)396 1493 y(F)o(or)g(e)o(xample,)f -(HTML)h(calls)h(the)f(paragraphs)e(simply)i Fq(p)p Fv(,)g(and)f -(because)h(paragraphs)e(ne)n(v)o(er)h(contain)g(paragraphs,)f(a)396 -1601 y(sequence)h(of)h(se)n(v)o(eral)g(paragraphs)e(can)i(be)g(written) -g(as:)396 1781 y Fq(

    First)44 b(paragraph)396 1878 -y(

    Second)g(paragraph)396 2069 y Fv(This)21 b(is)g(not)f(possible)g -(in)g(XML;)g(continuing)e(our)i(e)o(xample)e(abo)o(v)o(e)h(we)h(must)h -(al)o(w)o(ays)f(write)396 2249 y Fq(First)42 -b(paragraph)396 2346 y(Second)g -(paragraph)396 2537 y Fv(The)20 b(rationale)f(behind)g -(that)h(is)i(to)e(\(1\))f(simplify)h(the)g(de)n(v)o(elopment)d(of)j -(XML)h(parsers)f(\(you)e(need)i(not)g(con)m(v)o(ert)e(the)396 -2645 y(DTD)j(into)f(a)g(deterministic)f(\002nite)i(automaton)d(which)i -(is)h(required)d(to)j(detect)f(omitted)f(tags\),)h(and)g(to)g(\(2\))g -(mak)o(e)f(it)396 2753 y(possible)h(to)h(parse)e(the)i(document)d -(independent)f(of)j(whether)f(the)i(DTD)f(is)h(kno)n(wn)e(or)h(not.)396 -2903 y(The)g(\002rst)h(line)f(of)g(our)g(sample)g(document,)396 -3083 y Fq()396 -3274 y Fv(is)21 b(the)e(so-called)g Fr(XML)h(declar)o(ation)p -Fv(.)d(It)j(e)o(xpresses)e(that)i(the)f(document)f(follo)n(ws)h(the)g -(con)m(v)o(entions)e(of)i(XML)g(v)o(ersion)396 3382 y(1.0,)h(and)f -(that)h(the)h(document)d(is)j(encoded)d(using)i(characters)f(from)g -(the)i(ISO-8859-1)c(character)i(set)i(\(often)e(kno)n(wn)396 -3490 y(as)i("Latin)e(1",)g(mostly)h(used)f(in)h(W)-7 -b(estern)20 b(Europe\).)d(Although)h(the)i(XML)g(declaration)e(is)i -(not)g(mandatory)-5 b(,)16 b(it)21 b(is)f(good)396 3598 -y(style)h(to)f(include)f(it;)i(e)n(v)o(erybody)c(sees)k(at)g(the)f -(\002rst)h(glance)f(that)g(the)g(document)e(uses)j(XML)f(markup)f(and)g -(not)h(the)396 3706 y(similar)n(-looking)e(HTML)i(and)g(SGML)g(markup)f -(languages.)f(If)i(you)g(omit)g(the)g(XML)g(declaration,)e(the)j -(parser)e(will)396 3813 y(assume)h(that)h(the)f(document)e(is)j -(encoded)e(as)i(UTF-8)e(or)h(UTF-16)f(\(there)h(is)h(a)g(rule)e(that)i -(mak)o(es)f(it)h(possible)f(to)396 3921 y(distinguish)f(between)h -(UTF-8)g(and)f(UTF-16)g(automatically\);)g(these)h(are)g(encodings)f -(of)h(Unicode')-5 b(s)19 b(uni)n(v)o(ersal)396 4029 y(character)g(set.) -i(\(Note)f(that)g(PXP,)h(unlik)o(e)e(its)i(predecessor)e("Markup",)f -(fully)i(supports)f(Unicode.\))396 4179 y(The)h(second)f(line,)396 -4359 y Fq()396 -4550 y Fv(names)20 b(the)g(DTD)h(that)f(is)h(going)e(to)h(be)g(used)g -(for)g(the)g(rest)h(of)f(the)g(document.)e(In)i(general,)f(it)i(is)g -(possible)f(that)g(the)396 4658 y(DTD)h(consists)f(of)g(tw)o(o)h -(parts,)f(the)g(so-called)f(e)o(xternal)g(and)h(the)g(internal)f -(subset.)h("External")f(means)h(that)g(the)h(DTD)396 -4766 y(e)o(xists)g(as)g(a)f(second)g(\002le;)h("internal")e(means)h -(that)g(the)g(DTD)h(is)g(included)d(in)j(the)f(same)g(\002le.)h(In)f -(this)g(e)o(xample,)f(there)p Black 3842 5278 a Fr(8)p -Black eop -%%Page: 9 9 -9 8 bop Black 3028 67 a Fr(Chapter)19 b(1.)h(What)h(is)g(XML?)p -Black 396 579 a Fv(is)g(only)f(an)g(e)o(xternal)f(subset,)h(and)g(the)g -(system)g(identi\002er)g("simple.dtd")e(speci\002es)j(where)f(the)g -(DTD)g(\002le)h(can)f(be)396 687 y(found.)e(System)j(identi\002ers)f -(are)g(interpreted)e(as)j(URLs;)g(for)f(instance)g(this)g(w)o(ould)g -(be)g(le)o(gal:)396 867 y Fq()396 1058 y Fv(Please)21 -b(note)f(that)g(PXP)h(cannot)e(interpret)g(HTTP)i(identi\002ers)e(by)h -(def)o(ault,)f(b)n(ut)i(it)g(is)g(possible)f(to)g(change)f(the)396 -1166 y(interpretation)f(of)i(system)h(identi\002ers.)396 -1315 y(The)f(w)o(ord)g(immediately)f(follo)n(wing)f Fq(DOCTYPE)i -Fv(determines)f(which)g(of)h(the)g(declared)f(element)h(types)g(\(here) -396 1423 y("document",)e("section",)h(and)h("paragraph"\))d(is)k(used)f -(for)g(the)g(outermost)f(element,)g(the)h Fr(r)l(oot)h(element)q -Fv(.)f(In)g(this)396 1531 y(e)o(xample)f(it)i(is)g Fq(document)f -Fv(because)f(the)h(outermost)f(element)h(is)h(delimited)e(by)h -Fo(<)p Fq(document)p Fo(>)f Fv(and)396 1639 y Fo(<)p -Fq(/document)p Fo(>)p Fv(.)396 1789 y(The)h(DTD)g(consists)h(of)f -(three)g(declarations)f(for)g(element)h(types:)g Fq(document)p -Fv(,)f Fq(section)p Fv(,)g(and)h Fq(paragraph)p Fv(.)f(Such)396 -1896 y(a)i(declaration)d(has)j(tw)o(o)f(parts:)396 2077 -y Fo(<)p Fq(!ELEMENT)43 b Fn(name)i(content-model)p Fo(>)396 -2268 y Fv(The)20 b(content)f(model)h(is)h(a)f(re)o(gular)f(e)o -(xpression)g(which)g(describes)h(the)g(possible)g(inner)f(structure)h -(of)g(the)g(element.)396 2376 y(Here,)g Fq(document)f -Fv(contains)h(one)g(or)g(more)f(sections,)h(and)g(a)g -Fq(section)g Fv(contains)f(one)h(or)g(more)f(paragraphs.)f(Note)396 -2483 y(that)j(these)f(tw)o(o)g(element)g(types)g(are)g(not)g(allo)n -(wed)f(to)i(contain)e(arbitrary)g(te)o(xt.)g(Only)h(the)g -Fq(paragraph)g Fv(element)f(type)396 2591 y(is)i(declared)e(such)h -(that)h(parsed)e(character)g(data)h(\(indicated)f(by)h(the)g(symbol)f -Fq(#PCDATA)p Fv(\))g(is)i(permitted.)396 2741 y(See)g(belo)n(w)e(for)h -(a)h(detailed)e(discussion)h(of)g(content)f(models.)-2 -3110 y Fp(1.1.2.)35 b(XML)e(par)n(ser)n(s)h(and)g(pr)n(ocessor)n(s)396 -3278 y Fv(XML)20 b(documents)f(are)h(human-readable,)c(b)n(ut)21 -b(this)f(is)h(not)f(the)h(main)e(purpose)g(of)h(this)h(language.)d(XML) -i(has)g(been)396 3386 y(designed)f(such)h(that)g(documents)f(can)h(be)g -(read)g(by)f(a)i(program)d(called)i(an)g Fr(XML)h(par)o(ser)r -Fv(.)f(The)g(parser)g(checks)f(that)396 3494 y(the)h(document)f(is)i -(well-formatted,)d(and)h(it)i(represents)f(the)g(document)e(as)j -(objects)f(of)g(the)g(programming)d(language.)396 3602 -y(There)j(are)g(tw)o(o)g(aspects)h(when)e(checking)g(the)h(document:)e -(First,)j(the)f(document)e(must)j(follo)n(w)e(some)h(basic)396 -3710 y(syntactic)g(rules,)g(such)g(as)h(that)f(tags)h(are)f(written)g -(in)g(angle)g(brack)o(ets,)f(that)h(for)g(e)n(v)o(ery)f(start)h(tag)h -(there)e(must)i(be)f(a)396 3818 y(corresponding)d(end)j(tag)g(and)f(so) -i(on.)f(A)g(document)e(respecting)h(these)i(rules)f(is)h -Fr(well-formed)r Fv(.)f(Second,)f(the)396 3926 y(document)f(must)j -(match)e(the)i(DTD)f(in)g(which)g(case)h(the)f(document)e(is)j -Fr(valid)r Fv(.)f(Man)o(y)f(parsers)h(check)f(only)h(on)396 -4034 y(well-formedness)e(and)i(ignore)f(the)h(DTD;)h(PXP)g(is)g -(designed)e(such)g(that)i(it)g(can)f(e)n(v)o(en)f(v)n(alidate)g(the)i -(document.)396 4183 y(A)g(parser)f(does)f(not)h(mak)o(e)g(a)h(sensible) -f(application,)e(it)j(only)f(reads)g(XML)g(documents.)e(The)i(whole)g -(application)396 4291 y(w)o(orking)f(with)h(XML-formatted)e(data)i(is)h -(called)f(an)g Fr(XML)h(pr)l(ocessor)r Fv(.)f(Often)g(XML)g(processors) -f(con)m(v)o(ert)396 4399 y(documents)g(into)h(another)e(format,)h(such) -h(as)h(HTML)f(or)g(Postscript.)g(Sometimes)g(processors)f(e)o(xtract)g -(data)h(of)g(the)396 4507 y(documents)f(and)g(output)g(the)i(processed) -e(data)h(again)f(XML-formatted.)e(The)j(parser)g(can)g(help)f(the)i -(application)396 4615 y(processing)e(the)h(document;)f(for)g(e)o -(xample)g(it)i(can)f(pro)o(vide)e(means)i(to)g(access)h(the)f(document) -e(in)j(a)f(speci\002c)h(manner)-5 b(.)396 4723 y(PXP)21 -b(supports)e(an)i(object-oriented)c(access)k(layer)e(specially)-5 -b(.)p Black 3842 5278 a Fr(9)p Black eop -%%Page: 10 10 -10 9 bop Black 3028 67 a Fr(Chapter)19 b(1.)h(What)h(is)g(XML?)p -Black -2 583 a Fp(1.1.3.)35 b(Discussion)396 751 y Fv(As)21 -b(we)g(ha)n(v)o(e)e(seen,)h(there)g(are)g(tw)o(o)h(le)n(v)o(els)f(of)g -(description:)f(On)h(the)g(one)g(hand,)f(XML)h(can)g(de\002ne)f(rules)i -(about)e(the)396 859 y(format)g(of)h(a)h(document)d(\(the)i(DTD\),)g -(on)f(the)i(other)e(hand,)g(XML)h(e)o(xpresses)g(structured)f -(documents.)f(There)h(are)h(a)396 967 y(number)f(of)h(possible)f -(applications:)p Black 396 1199 a Ft(\225)p Black 60 -w Fv(XML)i(can)f(be)g(used)g(to)g(e)o(xpress)f(structured)g(te)o(xts.)h -(Unlik)o(e)g(HTML,)g(there)g(is)h(no)e(canonical)g(interpretation;)g -(one)479 1307 y(w)o(ould)h(ha)n(v)o(e)f(to)i(write)f(a)h(back)o(end)d -(for)i(the)g(DTD)g(that)h(translates)f(the)g(structured)f(te)o(xts)h -(into)g(a)h(format)e(that)479 1415 y(e)o(xisting)h(bro)n(wsers,)f -(printers)g(etc.)i(understand.)c(The)j(adv)n(antage)e(of)i(a)h -(self-de\002ned)e(document)f(format)h(is)i(that)f(it)479 -1523 y(is)h(possible)f(to)h(design)e(the)h(format)f(in)i(a)f(more)g -(problem-oriented)c(w)o(ay)-5 b(.)20 b(F)o(or)f(e)o(xample,)g(if)h(the) -h(task)f(is)h(to)g(e)o(xtract)479 1631 y(reports)f(from)f(a)h -(database,)g(one)f(can)h(use)h(a)f(DTD)h(that)f(re\003ects)h(the)f -(structure)f(of)h(the)g(report)f(or)h(the)g(database.)g(A)479 -1739 y(possible)g(approach)e(w)o(ould)i(be)g(to)g(ha)n(v)o(e)g(an)g -(element)f(type)h(for)g(e)n(v)o(ery)f(database)g(table)h(and)g(for)g(e) -n(v)o(ery)e(column.)479 1847 y(Once)i(the)g(DTD)h(has)f(been)g -(designed,)e(the)j(report)e(procedure)e(can)j(be)g(splitted)h(up)e(in)i -(a)f(part)g(that)h(selects)g(the)479 1955 y(database)f(ro)n(ws)g(and)g -(outputs)f(them)h(as)h(an)f(XML)g(document)e(according)g(to)j(the)f -(DTD,)g(and)g(in)g(a)g(part)g(that)479 2063 y(translates)h(the)f -(document)e(into)i(other)f(formats.)g(Of)i(course,)e(the)h(latter)h -(part)e(can)h(be)h(solv)o(ed)e(in)h(a)h(generic)e(w)o(ay)-5 -b(,)479 2170 y(e.g.)20 b(there)g(may)f(be)h(con\002gurable)e(back)o -(ends)h(for)h(all)g(DTDs)h(that)f(follo)n(w)g(the)g(approach)e(and)i -(ha)n(v)o(e)f(element)h(types)479 2278 y(for)g(tables)g(and)g(columns.) -479 2428 y(XML)h(plays)f(the)g(role)g(of)g(a)g(con\002gurable)e -(intermediate)h(format.)g(The)g(database)h(e)o(xtraction)e(function)h -(can)h(be)479 2536 y(written)g(without)g(ha)n(ving)f(to)h(kno)n(w)f -(the)h(details)h(of)f(typesetting;)f(the)h(back)o(ends)f(can)h(be)g -(written)g(without)g(ha)n(ving)479 2644 y(to)h(kno)n(w)e(the)h(details) -h(of)e(the)i(database.)479 2793 y(Of)g(course,)e(there)h(are)g -(traditional)f(solutions.)g(One)h(can)g(de\002ne)g(an)g(ad)g(hoc)g -(intermediate)e(te)o(xt)j(\002le)f(format.)f(This)479 -2901 y(disadv)n(antage)f(is)k(that)e(there)g(are)g(no)f(names)h(for)g -(the)g(pieces)g(of)g(the)g(format,)f(and)h(that)g(such)g(formats)g -(usually)f(lack)479 3009 y(of)h(documentation)d(because)j(of)g(this.)g -(Another)f(solution)g(w)o(ould)h(be)g(to)g(ha)n(v)o(e)g(a)h(binary)e -(representation,)e(either)j(as)479 3117 y(language-dependent)c(or)k -(language-independent)14 b(structure)20 b(\(e)o(xample)e(of)i(the)g -(latter)h(can)f(be)g(found)e(in)j(RPC)479 3225 y(implementations\).)d -(The)i(disadv)n(antage)e(is)j(that)f(it)h(is)g(harder)e(to)i(vie)n(w)f -(such)g(representations,)e(one)h(has)i(to)f(write)479 -3333 y(pretty)g(printers)f(for)h(this)g(purpose.)f(It)h(is)h(also)g -(more)e(dif)n(\002cult)h(to)g(enter)g(test)h(data;)f(XML)g(is)h(plain)f -(te)o(xt)g(that)h(can)f(be)479 3441 y(written)g(using)g(an)g(arbitrary) -f(editor)g(\(Emacs)h(has)g(e)n(v)o(en)f(a)i(good)e(XML)h(mode,)f -(PSGML\).)h(All)h(these)f(alternati)n(v)o(es)479 3549 -y(suf)n(fer)g(from)f(a)h(missing)g(structure)g(check)o(er)m(,)e(i.e.)i -(the)h(programs)d(processing)h(these)h(formats)f(usually)h(do)g(not)479 -3657 y(check)g(the)g(input)f(\002le)i(or)f(input)g(object)f(in)i -(detail;)f(XML)g(parsers)g(check)f(the)h(syntax)g(of)g(the)g(input)g -(\(the)f(so-called)479 3765 y(well-formedness)f(check\),)h(and)h(the)g -(adv)n(anced)e(parsers)i(lik)o(e)g(PXP)h(e)n(v)o(en)f(v)o(erify)e(that) -j(the)f(structure)f(matches)h(the)479 3872 y(DTD)h(\(the)f(so-called)f -(v)n(alidation\).)p Black 396 4022 a Ft(\225)p Black -60 w Fv(XML)i(can)f(be)g(used)g(as)g(con\002gurable)e(communication)g -(language.)g(A)i(fundamental)e(problem)h(of)h(e)n(v)o(ery)479 -4130 y(communication)e(is)j(that)f(sender)f(and)h(recei)n(v)o(er)f -(must)h(follo)n(w)g(the)g(same)g(con)m(v)o(entions)e(about)h(the)h -(language.)e(F)o(or)479 4238 y(data)i(e)o(xchange,)e(the)i(question)f -(is)j(usually)d(which)h(data)g(records)f(and)h(\002elds)g(are)g(a)n(v)n -(ailable,)g(ho)n(w)g(the)o(y)f(are)479 4346 y(syntactically)h -(composed,)e(and)i(which)f(v)n(alues)h(are)g(possible)g(for)g(the)g(v)n -(arious)f(\002elds.)h(Similar)h(questions)e(arise)479 -4454 y(for)h(te)o(xt)g(document)e(e)o(xchange.)g(XML)i(does)g(not)g -(answer)g(these)g(problems)f(completely)-5 b(,)18 b(b)n(ut)i(it)h -(reduces)e(the)479 4562 y(number)g(of)h(ambiguities)f(for)g(such)h(con) -m(v)o(entions:)e(The)i(outlines)f(of)h(the)g(syntax)g(are)g -(speci\002ed)g(by)g(the)g(DTD)g(\(b)n(ut)479 4669 y(not)g(necessarily)g -(the)g(details\),)g(and)g(XML)g(introduces)e(canonical)h(names)h(for)g -(the)g(components)e(of)i(documents)479 4777 y(such)g(that)h(it)f(is)i -(simpler)d(to)i(describe)e(the)h(rest)h(of)f(the)g(syntax)g(and)f(the)h -(semantics)h(informally)-5 b(.)p Black 3800 5278 a Fr(10)p -Black eop -%%Page: 11 11 -11 10 bop Black 3028 67 a Fr(Chapter)19 b(1.)h(What)h(is)g(XML?)p -Black Black 396 579 a Ft(\225)p Black 60 w Fv(XML)f(is)g(a)g(data)f -(storage)g(format.)f(Currently)-5 b(,)17 b(e)n(v)o(ery)h(softw)o(are)h -(product)f(tends)h(to)h(use)f(its)i(o)n(wn)d(w)o(ay)i(to)f(store)h -(data;)479 687 y(commercial)f(softw)o(are)h(often)f(does)h(not)g -(describe)f(such)h(formats,)f(and)h(it)h(is)g(a)g(pain)e(to)i(inte)o -(grate)e(such)h(softw)o(are)479 795 y(into)g(a)g(bigger)f(project.)f -(XML)i(can)g(help)f(to)h(impro)o(v)o(e)e(this)j(situation)e(when)g(se)n -(v)o(eral)g(applications)g(share)h(the)g(same)479 903 -y(syntax)g(of)g(data)g(\002les.)h(DTDs)f(are)g(then)g(neutral)g -(instances)g(that)g(check)f(the)h(format)g(of)f(data)i(\002les)g -(independent)c(of)479 1011 y(applications.)-2 1512 y -Fx(1.2.)39 b(Highlights)e(of)i(XML)396 1692 y Fv(This)21 -b(section)f(e)o(xplains)f(man)o(y)g(of)h(the)g(features)f(of)h(XML,)g -(b)n(ut)h(not)e(all,)i(and)f(some)g(features)f(not)h(in)g(detail.)g(F)o -(or)g(a)396 1800 y(complete)f(description,)g(see)i(the)f(XML)g -(speci\002cation)396 1908 y(\(http://www)-5 b(.w3.or)o -(g/TR/1998/REC-xml-)o(19)o(98)o(02)o(10)o(.htm)o(l\).)-2 -2236 y Fp(1.2.1.)35 b(The)f(DTD)g(and)g(the)f(instance)396 -2404 y Fv(The)20 b(DTD)g(contains)g(v)n(arious)f(declarations;)g(in)h -(general)f(you)h(can)g(only)f(use)i(a)f(feature)f(if)i(you)e(ha)n(v)o -(e)h(pre)n(viously)396 2512 y(declared)f(it.)i(The)f(document)e -(instance)i(\002le)h(may)e(contain)g(the)i(full)f(DTD,)g(b)n(ut)g(it)h -(is)g(also)g(possible)f(to)g(split)h(the)f(DTD)396 2619 -y(into)g(an)g(internal)g(and)f(an)h(e)o(xternal)f(subset.)h(A)h -(document)d(must)j(be)o(gin)e(as)h(follo)n(ws)g(if)h(the)f(full)g(DTD)g -(is)h(included:)396 2800 y Fo(<)p Fq(?xml)44 b(version="1.0")f -(encoding=")p Fn(Your)f(encoding)t Fq("?)p Fo(>)396 2897 -y(<)p Fq(!DOCTYPE)h Fn(root)i Fq([)486 2994 y Fn(Declarations)396 -3091 y Fq(])p Fo(>)396 3282 y Fv(These)20 b(declarations)f(are)h -(called)g(the)h Fr(internal)e(subset)q Fv(.)i(Note)f(that)g(the)g -(usage)g(of)g(entities)h(and)e(conditional)g(sections)396 -3390 y(is)i(restricted)f(within)g(the)g(internal)g(subset.)396 -3539 y(If)g(the)h(declarations)d(are)j(located)e(in)h(a)h(dif)n(ferent) -e(\002le,)h(you)f(can)h(refer)g(to)g(this)h(\002le)g(as)g(follo)n(ws:) -396 3720 y Fo(<)p Fq(?xml)44 b(version="1.0")f(encoding=")p -Fn(Your)f(encoding)t Fq("?)p Fo(>)396 3817 y(<)p Fq(!DOCTYPE)h -Fn(root)i Fq(SYSTEM)e(")p Fn(file)h(name)p Fq(")p Fo(>)396 -4008 y Fv(The)20 b(declarations)f(in)h(the)h(\002le)f(are)h(called)f -(the)g Fr(e)n(xternal)g(subset)q Fv(.)g(The)g(\002le)h(name)f(is)h -(called)f(the)g Fr(system)h(identi\002er)r Fv(.)e(It)396 -4116 y(is)i(also)g(possible)f(to)g(refer)g(to)g(the)g(\002le)h(by)f(a)g -(so-called)g Fr(public)f(identi\002er)r Fv(,)g(b)n(ut)i(most)f(XML)g -(applications)f(w)o(on')o(t)g(use)396 4223 y(this)i(feature.)396 -4373 y(Y)-9 b(ou)20 b(can)g(also)g(specify)g(both)f(internal)h(and)f(e) -o(xternal)g(subsets.)i(In)e(this)i(case,)g(the)f(declarations)f(of)h -(both)f(subsets)i(are)396 4481 y(mix)o(ed,)e(and)h(if)g(there)g(are)g -(con\003icts,)g(the)g(declaration)f(of)h(the)g(internal)f(subset)i(o)o -(v)o(errides)d(those)i(of)g(the)g(e)o(xternal)396 4589 -y(subset)h(with)f(the)g(same)h(name.)e(This)h(looks)g(as)h(follo)n(ws:) -396 4769 y Fo(<)p Fq(?xml)44 b(version="1.0")f(encoding=")p -Fn(Your)f(encoding)t Fq("?)p Fo(>)396 4866 y(<)p Fq(!DOCTYPE)h -Fn(root)89 b Fq(SYSTEM)44 b(")p Fn(file)g(name)p Fq(")g([)p -Black 3800 5278 a Fr(11)p Black eop -%%Page: 12 12 -12 11 bop Black 3028 67 a Fr(Chapter)19 b(1.)h(What)h(is)g(XML?)p -Black 486 579 a Fn(Declarations)396 676 y Fq(])p Fo(>)396 -909 y Fv(The)f(XML)g(declaration)f(\(the)h(string)g(be)o(ginning)d -(with)k Fo(<)p Fq(?xml)e Fv(and)h(ending)f(at)i Fq(?)p -Fo(>)p Fv(\))f(should)f(specify)g(the)h(encoding)396 -1016 y(of)g(the)g(\002le.)h(Common)e(v)n(alues)h(are)g(UTF-8,)f(and)h -(the)g(ISO-8859)e(series)j(of)f(character)f(sets.)i(Note)f(that)g(e)n -(v)o(ery)f(\002le)396 1124 y(parsed)h(by)f(the)i(XML)f(processor)f(can) -h(be)o(gin)f(with)h(an)g(XML)h(declaration)d(and)i(that)g(e)n(v)o(ery)f -(\002le)i(may)e(ha)n(v)o(e)h(its)h(o)n(wn)396 1232 y(encoding.)396 -1382 y(The)f(name)g(of)g(the)g(root)f(element)h(must)g(be)g(mentioned)f -(directly)g(after)h(the)g Fq(DOCTYPE)g Fv(string.)f(This)i(means)e -(that)i(a)396 1490 y(full)f(document)f(instance)g(looks)h(lik)o(e)396 -1670 y Fo(<)p Fq(?xml)44 b(version="1.0")f(encoding=")p -Fn(Your)f(encoding)t Fq("?)p Fo(>)396 1767 y(<)p Fq(!DOCTYPE)h -Fn(root)89 b Fq(SYSTEM)44 b(")p Fn(file)g(name)p Fq(")g([)486 -1864 y Fn(Declarations)396 1961 y Fq(])p Fo(>)396 2156 -y(<)p Fn(root)p Fo(>)486 2253 y Fn(inner)g(contents)396 -2350 y Fo(<)p Fq(/)p Fn(root)p Fo(>)-2 2802 y Fp(1.2.2.)35 -b(Reser)q(ved)h(c)o(haracter)n(s)396 2970 y Fv(Some)20 -b(characters)f(are)i(generally)d(reserv)o(ed)h(to)h(indicate)g(markup)e -(such)i(that)g(the)o(y)g(cannot)f(be)h(used)g(for)g(character)396 -3078 y(data.)g(These)g(characters)f(are)h Fm(<)p Fv(,)h -Fm(>)p Fv(,)f(and)f(&.)h(Furthermore,)e(single)i(and)g(double)e(quotes) -i(are)g(sometimes)g(reserv)o(ed.)396 3186 y(If)g(you)g(w)o(ant)g(to)g -(include)f(such)h(a)h(character)e(as)i(character)m(,)d(write)j(it)f(as) -h(follo)n(ws:)p Black 396 3473 a Ft(\225)p Black 60 w -Fq(<)f Fv(instead)g(of)g Fm(<)p Black 396 3581 a Ft(\225)p -Black 60 w Fq(>)g Fv(instead)g(of)g Fm(>)p Black 396 -3689 a Ft(\225)p Black 60 w Fq(&)g Fv(instead)g(of)g(&)p -Black 396 3797 a Ft(\225)p Black 60 w Fq(')g Fv(instead)g(of)g(')p -Black 396 3905 a Ft(\225)p Black 60 w Fq(")g Fv(instead)g(of)g(") -396 4054 y(All)h(other)e(characters)h(are)g(free)g(in)g(the)g(document) -e(instance.)i(It)g(is)i(possible)d(to)i(include)e(a)i(character)e(by)g -(its)j(position)396 4162 y(in)f(the)f(Unicode)f(alphabet:)396 -4342 y Fq(&#)p Fn(n)p Fq(;)396 4533 y Fv(where)h Fl(n)g -Fv(is)i(the)e(decimal)f(number)g(of)h(the)g(character)-5 -b(.)19 b(Alternati)n(v)o(ely)-5 b(,)18 b(you)h(can)h(specify)g(the)g -(character)f(by)h(its)396 4641 y(he)o(xadecimal)e(number:)396 -4822 y Fq(&#x)p Fn(n)p Fq(;)p Black 3800 5278 a Fr(12)p -Black eop -%%Page: 13 13 -13 12 bop Black 3028 67 a Fr(Chapter)19 b(1.)h(What)h(is)g(XML?)p -Black 396 579 a Fv(In)f(the)g(scope)g(of)g(declarations,)f(the)h -(character)f(\045)i(is)g(no)f(longer)f(free.)g(T)-7 b(o)20 -b(include)g(it)h(as)f(character)m(,)f(you)g(must)h(use)396 -687 y(the)g(notations)g Fq(%)g Fv(or)f Fq(%)p -Fv(.)396 836 y(Note)h(that)h(besides)f(<,)g(>,)g(&,)f -(',)g(and)h(")f(there)h(are)g(no)g(prede\002nes)f(character)g -(entities.)h(This)396 944 y(is)h(dif)n(ferent)e(from)g(HTML)h(which)g -(de\002nes)g(a)g(list)i(of)d(characters)h(that)g(can)g(be)g(referenced) -e(by)i(name)f(\(e.g.)h(ä)396 1052 y(for)g(\344\);)g(ho)n(we)n(v)o -(er)m(,)e(if)i(you)g(prefer)e(named)i(characters,)f(you)g(can)h -(declare)f(such)h(entities)h(yourself)e(\(see)h(belo)n(w\).)-2 -1422 y Fp(1.2.3.)35 b(Elements)g(and)f(ELEMENT)e(dec)n(larations)396 -1589 y Fv(Elements)20 b(structure)f(the)h(document)f(instance)g(in)i(a) -f(hierarchical)f(w)o(ay)-5 b(.)20 b(There)f(is)i(a)g(top-le)n(v)o(el)d -(element,)i(the)g Fr(r)l(oot)396 1697 y(element)q Fv(,)g(which)g -(contains)g(a)g(sequence)f(of)h(inner)g(elements)f(and)h(character)f -(sections.)h(The)g(inner)f(elements)h(are)396 1805 y(structured)f(in)h -(the)f(same)h(w)o(ay)-5 b(.)20 b(Ev)o(ery)e(element)h(has)h(an)g -Fr(element)f(type)p Fv(.)h(The)f(be)o(ginning)f(of)h(the)h(element)f -(is)i(indicated)396 1913 y(by)f(a)h Fr(start)g(ta)o(g)p -Fv(,)e(written)396 2093 y Fo(<)p Fn(element-type)p Fo(>)396 -2284 y Fv(and)h(the)g(element)g(continues)f(until)h(the)g -(corresponding)d Fr(end)i(ta)o(g)h Fv(is)h(reached:)396 -2465 y Fo(<)p Fq(/)p Fn(element-type)p Fo(>)396 2655 -y Fv(In)f(XML,)f(it)i(is)f(not)g(allo)n(wed)f(to)h(omit)f(start)i(or)e -(end)g(tags,)h(e)n(v)o(en)f(if)h(the)g(DTD)g(w)o(ould)f(permit)g(this.) -h(Note)g(that)g(there)f(are)396 2763 y(no)h(special)g(rules)g(ho)n(w)g -(to)g(interpret)g(spaces)g(or)g(ne)n(wlines)g(near)f(start)i(or)f(end)g -(tags;)g(all)h(spaces)f(and)g(ne)n(wlines)g(count.)396 -2913 y(Ev)o(ery)f(element)h(type)f(must)i(be)f(declared)f(before)f(it)j -(can)f(be)g(used.)g(The)g(declaration)f(consists)h(of)g(tw)o(o)h -(parts:)f(the)396 3021 y(ELEMENT)f(declaration)f(describes)h(the)h -(content)f(model,)f(i.e.)i(which)f(inner)g(elements)g(are)h(allo)n -(wed;)f(the)h(A)-9 b(TTLIST)396 3129 y(declaration)19 -b(describes)h(the)g(attrib)n(utes)g(of)g(the)g(element.)396 -3278 y(An)g(element)g(can)g(simply)g(allo)n(w)g(e)n(v)o(erything)e(as)i -(content.)f(This)i(is)g(written:)396 3458 y Fo(<)p Fq(!ELEMENT)43 -b Fn(name)i Fq(ANY)p Fo(>)396 3649 y Fv(On)20 b(the)h(opposite,)e(an)h -(element)f(can)h(be)g(forced)f(to)i(be)f(empty;)f(declared)g(by:)396 -3829 y Fo(<)p Fq(!ELEMENT)43 b Fn(name)i Fq(EMPTY)p Fo(>)396 -4020 y Fv(Note)20 b(that)h(there)e(is)j(an)e(abbre)n(viated)e(notation) -h(for)g(empty)g(element)h(instances:)g Fo(<)p Fn(name)p -Fq(/)p Fo(>)p Fv(.)396 4170 y(There)g(are)g(tw)o(o)g(more)g -(sophisticated)f(forms)g(of)h(declarations:)f(so-called)h -Fr(mixed)g(declar)o(ations)p Fv(,)e(and)i Fr(r)m(e)m(gular)396 -4278 y(e)n(xpr)m(essions)p Fv(.)g(An)h(element)e(with)i(mix)o(ed)e -(content)g(contains)g(character)g(data)h(interspersed)f(with)i(inner)e -(elements,)396 4386 y(and)h(the)g(set)h(of)f(allo)n(wed)g(inner)f -(elements)h(can)g(be)g(speci\002ed.)g(In)f(contrast)h(to)g(this,)h(a)g -(re)o(gular)d(e)o(xpression)396 4494 y(declaration)h(does)h(not)g(allo) -n(w)g(character)f(data,)h(b)n(ut)g(the)g(inner)f(elements)h(can)g(be)g -(described)f(by)h(the)g(more)g(po)n(werful)396 4601 y(means)g(of)g(re)o -(gular)f(e)o(xpressions.)396 4751 y(A)i(declaration)e(for)g(mix)o(ed)g -(content)g(looks)h(as)h(follo)n(ws:)p Black 3800 5278 -a Fr(13)p Black eop -%%Page: 14 14 -14 13 bop Black 3028 67 a Fr(Chapter)19 b(1.)h(What)h(is)g(XML?)p -Black 396 579 a Fo(<)p Fq(!ELEMENT)43 b Fn(name)i Fq(\(#PCDATA)e(|)i -Fn(element)1892 609 y Fk(1)1962 579 y Fq(|)g(...)f(|)h -Fn(element)2636 609 y Fk(n)2707 579 y Fq(\)*)p Fo(>)396 -770 y Fv(or)20 b(if)h(you)e(do)h(not)g(w)o(ant)g(to)g(allo)n(w)g(an)o -(y)g(inner)f(element,)h(simply)396 950 y Fo(<)p Fq(!ELEMENT)43 -b Fn(name)i Fq(\(#PCDATA\))p Fo(>)396 1279 y Fj(Example)479 -1426 y Fi(If)19 b(element)g(type)g Fh(q)g Fi(is)g(declared)h(as)479 -1596 y Fh()479 -1776 y Fi(this)19 b(is)f(a)h(le)o(gal)g(instance:)479 -1947 y Fh(This)43 b(is)e(character)j(datawith)h(inner) -g(elements)479 2127 y Fi(But)19 b(this)g(is)f(ille)o(gal)g(because) -i Fh(t)f Fi(has)h(not)f(been)g(enumerated)i(in)e(the)g(declaration:)479 -2297 y Fh(This)43 b(is)e(character)j(datawith)h(inner) -g(elements)396 2571 y Fv(The)20 b(other)f(form)h(uses)g(a)h(re)o -(gular)e(e)o(xpression)f(to)j(describe)e(the)h(possible)g(contents:)396 -2752 y Fo(<)p Fq(!ELEMENT)43 b Fn(name)i(regexp)p Fo(>)396 -2942 y Fv(The)20 b(follo)n(wing)f(well-kno)n(wn)f(re)o(ge)o(xp)g -(operators)h(are)h(allo)n(wed:)p Black 396 3299 a Ft(\225)p -Black 60 w Fn(element-name)p Black 396 3407 a Ft(\225)p -Black 60 w Fq(\()p Fn(subexpr)839 3437 y Fk(1)910 3407 -y Fq(,)g Fv(...)g Fq(,)45 b Fn(subexpr)1463 3437 y Fk(n)1533 -3407 y Fq(\))p Black 396 3515 a Ft(\225)p Black 60 w -Fq(\()p Fn(subexpr)839 3545 y Fk(1)910 3515 y Fq(|)20 -b Fv(...)g Fq(|)45 b Fn(subexpr)1463 3545 y Fk(n)1533 -3515 y Fq(\))p Black 396 3623 a Ft(\225)p Black 60 w -Fn(subexpr)s Fq(*)p Black 396 3731 a Ft(\225)p Black -60 w Fn(subexpr)s Fq(+)p Black 396 3839 a Ft(\225)p Black -60 w Fn(subexpr)s Fq(?)396 3989 y Fv(The)20 b Fq(,)h -Fv(operator)d(indicates)i(a)h(sequence)e(of)h(sub-models,)e(the)i -Fq(|)h Fv(operator)d(describes)i(alternati)n(v)o(e)f(sub-models.)f(The) -396 4096 y Fq(*)j Fv(indicates)f(zero)f(or)h(more)g(repetitions,)f(and) -g Fq(+)i Fv(one)f(or)f(more)h(repetitions.)f(Finally)-5 -b(,)19 b Fq(?)i Fv(can)f(be)g(used)g(for)f(optional)396 -4204 y(sub-models.)g(As)i(atoms)f(the)g(re)o(ge)o(xp)e(can)i(contain)f -(names)h(of)g(elements;)g(note)g(that)g(it)h(is)g(not)f(allo)n(wed)f -(to)i(include)396 4312 y Fq(#PCDATA)p Fv(.)396 4462 y(The)f(e)o(xact)g -(syntax)f(of)h(the)g(re)o(gular)f(e)o(xpressions)g(is)i(rather)e -(strange.)h(This)g(can)g(be)g(e)o(xplained)f(best)h(by)g(a)g(list)i(of) -396 4570 y(constraints:)p Black 396 4802 a Ft(\225)p -Black 60 w Fv(The)e(outermost)f(e)o(xpression)g(must)h(not)g(be)g -Fn(element-name)p Fv(.)p Black 3800 5278 a Fr(14)p Black -eop -%%Page: 15 15 -15 14 bop Black 3028 67 a Fr(Chapter)19 b(1.)h(What)h(is)g(XML?)p -Black 479 579 a(Ille)m(gal:)e Fq()p -Fv(;)21 b(this)f(must)h(be)f(written)g(as)h Fq()p Fv(.)p Black 396 728 a Ft(\225)p Black -60 w Fv(F)o(or)20 b(the)g(unary)f(operators)g Fn(subexpr)s -Fq(*)p Fv(,)g Fn(subexpr)s Fq(+)p Fv(,)g(and)g Fn(subexpr)s -Fq(?)p Fv(,)g(the)h Fn(subexpr)i Fv(must)f(not)f(be)g(again)f(an)479 -836 y(unary)g(operator)-5 b(.)479 986 y Fr(Ille)m(gal:)19 -b Fq()p Fv(;)20 b(this)h(must)f(be)g(written)g -(as)h Fq()p Fv(.)p Black 396 -1135 a Ft(\225)p Black 60 w Fv(Between)21 b Fq(\))f Fv(and)g(one)f(of)h -(the)h(unary)d(operatory)g Fq(*)p Fv(,)j Fq(+)p Fv(,)f(or)g -Fq(?)p Fv(,)g(there)g(must)g(not)g(be)g(whitespace.)479 -1285 y Fr(Ille)m(gal:)f Fq()p -Fv(;)21 b(this)f(must)h(be)f(written)g(as)h Fq()p Fv(.)p Black 396 1434 a Ft(\225)p Black -60 w Fv(There)20 b(is)h(the)f(additional)f(constraint)g(that)h(the)h -(right)e(parenthsis)g(must)i(be)f(contained)e(in)j(the)f(same)g(entity) -g(as)h(the)479 1542 y(left)g(parenthesis;)e(see)i(the)f(section)g -(about)f(parsed)h(entities)g(belo)n(w)-5 b(.)396 1733 -y(Note)20 b(that)g(there)g(is)h(another)e(restriction)g(on)h(re)o -(gular)e(e)o(xpressions)h(which)h(must)g(be)g(deterministic.)f(This)h -(means)g(that)396 1841 y(the)g(parser)g(must)g(be)g(able)g(to)h(see)g -(by)e(looking)g(at)i(the)f(ne)o(xt)f(tok)o(en)h(which)f(alternati)n(v)o -(e)g(is)i(actually)f(used,)g(or)f(whether)396 1949 y(the)h(repetition)f -(stops.)i(The)f(reason)f(for)g(this)i(is)g(simply)f(compatability)f -(with)h(SGML)g(\(there)g(is)h(no)f(intrinsic)f(reason)396 -2057 y(for)h(this)h(rule;)e(XML)i(can)f(li)n(v)o(e)g(without)f(this)i -(restriction\).)396 2302 y Fj(Example)479 2449 y Fi(The)e(elements)g -(are)g(declared)h(as)f(follo)n(ws:)479 2620 y Fh()479 2707 y()479 2795 y()479 2882 -y()479 3062 y Fi(This)19 -b(is)f(a)h(le)o(gal)g(instance:)479 3233 y Fh(Some)44 -b(characters<)q(/q>)479 3413 y Fi(\(Note:)19 -b Fg(<)p Fh(s/)p Fg(>)g Fi(is)g(an)g(abbre)n(viation)h(for)f -Fg(<)p Fh(s)p Fg(><)p Fh(/s)p Fg(>)p Fi(.\))g(It)f(w)o(ould)i(be)f -(ille)o(gal)f(to)h(lea)o(v)o(e)g Fh()h Fi(out)f(because)h(at)f -(least)f(one)479 3510 y(instance)i(of)f Fh(s)g Fi(or)g -Fh(t)g Fi(must)g(be)g(present.)g(It)f(w)o(ould)i(be)f(ille)o(gal,)f -(too,)h(if)f(characters)i(e)o(xisted)f(outside)h(the)e -Fh(r)i Fi(element;)f(the)g(only)479 3607 y(e)o(xception)h(is)f(white)g -(space.)g(\226)g(This)f(is)h(le)o(gal,)f(too:)479 3778 -y Fh(<)q(/q>)q()-2 4230 -y Fp(1.2.4.)35 b(Attrib)n(ute)e(lists)h(and)g(A)-11 b(TTLIST)34 -b(dec)n(larations)396 4398 y Fv(Elements)20 b(may)g(ha)n(v)o(e)f -(attrib)n(utes.)h(These)g(are)g(put)g(into)g(the)g(start)h(tag)f(of)g -(an)g(element)g(as)h(follo)n(ws:)396 4578 y Fo(<)p Fn(element-name)43 -b(attribute)1444 4608 y Fk(1)1469 4578 y Fq(=")p Fn(value)1784 -4608 y Fk(1)1810 4578 y Fq(")i(...)f Fn(attribute)2484 -4608 y Fk(n)2509 4578 y Fq(=")p Fn(value)2824 4608 y -Fk(n)2850 4578 y Fq(")p Fo(>)396 4769 y Fv(Instead)20 -b(of)g Fq(")p Fn(value)1017 4799 y Fk(k)1043 4769 y Fq(")g -Fv(it)h(is)g(also)g(possible)f(to)g(use)g(single)g(quotes)g(as)h(in)f -Fq(')p Fn(value)2817 4799 y Fk(k)2843 4769 y Fq(')p Fv(.)g(Note)h(that) -f(you)f(cannot)g(use)396 4877 y(double)g(quotes)h(literally)g(within)g -(the)g(v)n(alue)f(of)h(the)g(attrib)n(ute)g(if)h(double)d(quotes)i(are) -g(the)g(delimiters;)g(the)g(same)p Black 3800 5278 a -Fr(15)p Black eop -%%Page: 16 16 -16 15 bop Black 3028 67 a Fr(Chapter)19 b(1.)h(What)h(is)g(XML?)p -Black 396 579 a Fv(applies)f(to)h(single)f(quotes.)f(Y)-9 -b(ou)20 b(can)g(generally)e(not)i(use)g Fm(<)h Fv(and)e(&)i(as)g -(characters)e(in)h(attrib)n(ute)g(v)n(alues.)g(It)g(is)396 -687 y(possible)g(to)h(include)e(the)h(paraphrases)e(<,)j(>,)f -(&,)f(',)g(and)h(")f(\(and)g(an)o(y)g(other)h(reference)e -(to)j(a)396 795 y(general)e(entity)h(as)h(long)f(as)g(the)h(entity)f -(is)h(not)e(de\002ned)h(by)f(an)i(e)o(xternal)d(\002le\))j(as)g(well)g -(as)g(&#)p Fl(n)p Fv(;.)396 944 y(Before)f(you)f(can)h(use)h(an)f -(attrib)n(ute)g(you)f(must)h(declare)g(it.)g(An)g(A)-9 -b(TTLIST)20 b(declaration)e(looks)i(as)h(follo)n(ws:)396 -1124 y Fo(<)p Fq(!ATTLIST)43 b Fn(element-name)845 1222 -y(attribute-name)f(attribute-type)h(attribute-default)845 -1319 y Fq(...)845 1416 y Fn(attribute-name)f(attribute-type)h -(attribute-default)396 1513 y Fo(>)396 1704 y Fv(There)20 -b(are)g(a)g(lot)h(of)f(types,)f(b)n(ut)i(most)f(important)f(are:)p -Black 396 2061 a Ft(\225)p Black 60 w Fq(CDATA)p Fv(:)h(Ev)o(ery)f -(string)h(is)h(allo)n(wed)f(as)g(attrib)n(ute)g(v)n(alue.)p -Black 396 2169 a Ft(\225)p Black 60 w Fq(NMTOKEN)p Fv(:)g(Ev)o(ery)f -(nametok)o(en)f(is)j(allo)n(wed)f(as)g(attrib)n(ute)g(v)n(alue.)g -(Nametok)o(ens)f(consist)h(\(mainly\))f(of)g(letters,)479 -2277 y(digits,)h(.,)h(:,)f(-,)g(_)h(in)f(arbitrary)f(order)-5 -b(.)p Black 396 2385 a Ft(\225)p Black 60 w Fq(NMTOKENS)p -Fv(:)20 b(A)g(space-separated)f(list)i(of)f(nametok)o(ens)e(is)k(allo)n -(wed)d(as)i(attrib)n(ute)f(v)n(alue.)396 2534 y(The)g(most)g -(interesting)g(def)o(ault)f(declarations)g(are:)p Black -396 2767 a Ft(\225)p Black 60 w Fq(#REQUIRED)p Fv(:)h(The)f(attrib)n -(ute)h(must)g(be)h(speci\002ed.)p Black 396 2874 a Ft(\225)p -Black 60 w Fq(#IMPLIED)p Fv(:)e(The)h(attrib)n(ute)f(can)g(be)h -(speci\002ed)f(b)n(ut)h(also)g(can)f(be)h(left)g(out.)f(The)g -(application)g(can)g(\002nd)g(out)h(whether)479 2982 -y(the)g(attrib)n(ute)g(w)o(as)h(present)f(or)g(not.)p -Black 396 3090 a Ft(\225)p Black 60 w Fq(")p Fn(value)p -Fq(")g Fv(or)f Fq(')p Fn(value)p Fq(')p Fv(:)h(This)g(particular)e(v)n -(alue)i(is)g(used)g(as)h(def)o(ault)e(if)h(the)g(attrib)n(ute)g(is)g -(omitted)g(in)g(the)g(element.)396 3378 y Fj(Example)479 -3525 y Fi(This)f(is)f(a)h(v)n(alid)g(attrib)o(ute)g(declaration)g(for)g -(element)g(type)h Fh(r)p Fi(:)479 3695 y Fh()479 4137 y Fi(This)19 b(means)g(that)g Fh(x)g -Fi(is)g(a)g(required)g(attrib)o(ute)f(that)h(cannot)h(be)f(left)g(out,) -f(while)h Fh(y)g Fi(and)h Fh(z)f Fi(are)g(optional.)g(The)g(XML)g -(parser)479 4235 y(indicates)h(the)f(application)g(whether)h -Fh(y)f Fi(is)f(present)i(or)f(not,)f(b)o(ut)h(if)f Fh(z)h -Fi(is)g(missing)g(the)g(def)o(ault)h(v)n(alue)f("one)h(tw)o(o)f(three") -h(is)479 4332 y(returned)g(automatically)-5 b(.)479 4470 -y(This)19 b(is)f(a)h(v)n(alid)g(e)o(xample)h(of)f(these)g(attrib)o -(utes:)479 4641 y Fh()p Black 3798 5278 a Fr(16)p -Black eop -%%Page: 17 17 -17 16 bop Black 3028 67 a Fr(Chapter)19 b(1.)h(What)h(is)g(XML?)p -Black -2 583 a Fp(1.2.5.)35 b(P)l(ar)n(sed)g(entities)396 -751 y Fv(Elements)20 b(describe)f(the)i(logical)e(structure)h(of)g(the) -g(document,)e(while)i Fr(entities)g Fv(determine)f(the)h(physical)g -(structure.)396 859 y(Entities)h(are)f(the)g(pieces)g(of)g(te)o(xt)g -(the)g(parser)g(operates)f(on,)h(mostly)g(\002les)h(and)f(macros.)f -(Entities)h(may)g(be)g Fr(par)o(sed)i Fv(in)396 967 y(which)e(case)h -(the)f(parser)f(reads)h(the)g(te)o(xt)h(and)e(interprets)g(it)i(as)g -(XML)g(markup,)d(or)i Fr(unpar)o(sed)h Fv(which)e(simply)h(means)396 -1075 y(that)h(the)f(data)g(of)g(the)g(entity)g(has)g(a)h(foreign)d -(format)h(\(e.g.)h(a)g(GIF)h(icon\).)396 1224 y(If)f(the)g(parsed)f -(entity)g(is)i(going)e(to)h(be)g(used)f(as)i(part)e(of)h(the)g(DTD,)g -(it)g(is)h(called)f(a)g Fr(par)o(ameter)f(entity)p Fv(.)h(Y)-9 -b(ou)19 b(can)h(declare)396 1332 y(a)h(parameter)e(entity)g(with)i(a)f -(\002x)o(ed)g(te)o(xt)g(as)h(content)e(by:)396 1512 y -Fo(<)p Fq(!ENTITY)44 b(\045)g Fn(name)g Fq(")p Fn(value)p -Fq(")p Fo(>)396 1703 y Fv(W)m(ithin)20 b(the)h(DTD,)f(you)f(can)h -Fr(r)m(efer)h(to)f Fv(this)h(entity)-5 b(,)19 b(i.e.)i(read)e(the)h(te) -o(xt)g(of)g(the)h(entity)-5 b(,)19 b(by:)396 1883 y Fq(\045)p -Fn(name)p Fq(;)396 2074 y Fv(Such)h(entities)h(beha)n(v)o(e)e(lik)o(e)h -(macros,)f(i.e.)i(when)e(the)o(y)h(are)g(referred)e(to,)i(the)g(macro)g -(te)o(xt)g(is)h(inserted)e(and)h(read)396 2182 y(instead)g(of)g(the)g -(original)f(te)o(xt.)396 2478 y Fj(Example)479 2625 y -Fi(F)o(or)g(e)o(xample,)g(you)h(can)f(declare)h(tw)o(o)f(elements)g -(with)f(the)h(same)h(content)f(model)h(by:)479 2795 y -Fh()479 -2882 y()479 2970 y()396 3202 y Fv(If)20 b(the)h(contents)e(of)h(the)g -(entity)g(are)g(gi)n(v)o(en)f(as)i(string)f(constant,)f(the)h(entity)g -(is)h(called)f(an)g Fr(internal)g Fv(entity)-5 b(.)19 -b(It)i(is)g(also)396 3310 y(possible)f(to)h(name)e(a)i(\002le)g(to)f -(be)g(used)g(as)h(content)e(\(an)h Fr(e)n(xternal)g Fv(entity\):)396 -3490 y Fo(<)p Fq(!ENTITY)44 b(\045)g Fn(name)g Fq(SYSTEM)g(")p -Fn(file)g(name)p Fq(")p Fo(>)396 3681 y Fv(There)20 b(are)g(some)g -(restrictions)f(for)h(parameter)f(entities:)p Black 396 -4038 a Ft(\225)p Black 60 w Fv(If)h(the)h(internal)e(parameter)g -(entity)g(contains)h(the)g(\002rst)h(tok)o(en)e(of)h(a)h(declaration)e -(\(i.e.)g Fo(<)p Fq(!)p Fv(\),)h(it)h(must)f(also)h(contain)479 -4146 y(the)f(last)i(tok)o(en)d(of)h(the)g(declaration,)e(i.e.)j(the)f -Fo(>)p Fv(.)g(This)g(means)g(that)h(the)f(entity)g(either)g(contains)f -(a)i(whole)e(number)479 4254 y(of)h(complete)f(declarations,)g(or)h -(some)g(te)o(xt)g(from)f(the)h(middle)g(of)g(one)f(declaration.)479 -4404 y Fr(Ille)m(gal:)479 4542 y Fq(">)479 4639 y()j Fv(is)h(contained)e(in)h(the)h(entity)e Fq(e)p -Fv(.)p Black 3797 5278 a Fr(17)p Black eop -%%Page: 18 18 -18 17 bop Black 3028 67 a Fr(Chapter)19 b(1.)h(What)h(is)g(XML?)p -Black Black 396 579 a Ft(\225)p Black 60 w Fv(If)f(the)h(internal)e -(parameter)g(entity)g(contains)h(a)h(left)f(paranthesis,)f(it)i(must)f -(also)h(contain)e(the)h(corresponding)d(right)479 687 -y(paranthesis.)479 836 y Fr(Ille)m(gal:)479 975 y Fq()479 1072 y()479 1222 y Fv(Because)21 b Fq(\()f Fv(is)h(contained)e(in)h -(the)g(entity)g Fq(e)p Fv(,)h(and)e(the)i(corresponding)16 -b Fq(\))21 b Fv(is)g(contained)e(in)h(the)g(main)g(entity)-5 -b(.)p Black 396 1371 a Ft(\225)p Black 60 w Fv(When)20 -b(reading)e(te)o(xt)i(from)f(an)g(entity)-5 b(,)19 b(the)h(parser)f -(automatically)f(inserts)i(one)g(space)f(character)g(before)f(the)i -(entity)479 1479 y(te)o(xt)g(and)g(one)g(space)g(character)f(after)h -(the)g(entity)g(te)o(xt.)f(Ho)n(we)n(v)o(er)m(,)f(this)j(rule)f(is)h -(not)f(applied)f(within)h(the)g(de\002nition)479 1587 -y(of)g(another)f(entity)-5 b(.)479 1736 y Fr(Le)m(gal:)479 -1875 y Fq()479 1972 -y()479 2121 -y Fv(Because)21 b Fq(\045suffix;)e Fv(is)i(referenced)d(within)i(the)g -(de\002nition)f(te)o(xt)h(for)g Fq(iconfile)p Fv(,)f(no)h(additional)f -(spaces)h(are)479 2229 y(added.)479 2379 y Fr(Ille)m(gal:)479 -2517 y Fq()479 2615 -y()479 2764 y Fv(Because)21 -b Fq(\045suffix;)e Fv(is)i(referenced)d(outside)i(the)g(de\002nition)f -(te)o(xt)h(of)g(another)f(entity)-5 b(,)19 b(the)h(parser)g(replaces) -479 2872 y Fq(\045suffix;)g Fv(by)f Fn(space)p Fq(test)p -Fn(space)p Fv(.)479 3021 y Fr(Ille)m(gal:)479 3160 y -Fq()479 -3257 y()479 3407 y Fv(Because)21 -b(there)e(is)j(a)e(whitespace)g(between)f Fq(\))i Fv(and)e -Fq(*)p Fv(,)i(which)e(is)i(ille)o(gal.)p Black 396 3556 -a Ft(\225)p Black 60 w Fv(An)f(e)o(xternal)f(parameter)g(entity)h(must) -g(al)o(w)o(ays)h(consist)f(of)g(a)h(whole)e(number)g(of)h(complete)f -(declarations.)p Black 396 3664 a Ft(\225)p Black 60 -w Fv(In)h(the)g(internal)g(subset)g(of)g(the)g(DTD,)g(a)h(reference)d -(to)j(a)f(parameter)f(entity)h(\(internal)f(or)h(e)o(xternal\))e(is)k -(only)479 3772 y(allo)n(wed)e(at)h(positions)e(where)h(a)g(ne)n(w)g -(declaration)f(can)h(start.)396 3963 y(If)g(the)f(parsed)g(entity)g(is) -h(going)e(to)i(be)f(used)g(in)h(the)f(document)e(instance,)i(it)h(is)h -(called)e(a)h Fr(g)o(ener)o(al)e(entity)p Fv(.)h(Such)g(entities)396 -4071 y(can)h(be)g(used)g(as)h(abbre)n(viations)d(for)i(frequent)e -(phrases,)i(or)g(to)g(include)f(e)o(xternal)g(\002les.)i(Internal)e -(general)g(entities)i(are)396 4179 y(declared)e(as)i(follo)n(ws:)396 -4359 y Fo(<)p Fq(!ENTITY)44 b Fn(name)g Fq(")p Fn(value)p -Fq(")p Fo(>)396 4550 y Fv(External)19 b(general)g(entities)i(are)f -(declared)f(this)i(w)o(ay:)396 4730 y Fo(<)p Fq(!ENTITY)44 -b Fn(name)g Fq(SYSTEM)g(")p Fn(file)g(name)p Fq(")p Fo(>)p -Black 3800 5278 a Fr(18)p Black eop -%%Page: 19 19 -19 18 bop Black 3028 67 a Fr(Chapter)19 b(1.)h(What)h(is)g(XML?)p -Black 396 579 a Fv(References)f(to)g(general)f(entities)i(are)f -(written)g(as:)396 759 y Fq(&)p Fn(name)p Fq(;)396 950 -y Fv(The)g(main)g(dif)n(ference)e(between)h(parameter)g(and)h(general)f -(entities)h(is)i(that)e(the)g(former)f(are)h(only)f(recognized)f(in)j -(the)396 1058 y(DTD)g(and)e(that)i(the)f(latter)g(are)g(only)g -(recognized)e(in)i(the)g(document)e(instance.)i(As)h(the)f(DTD)g(is)i -(parsed)d(before)g(the)396 1166 y(document,)f(the)i(parameter)f -(entities)i(are)f(e)o(xpanded)d(\002rst;)k(for)f(e)o(xample)f(it)i(is)g -(possible)f(to)g(use)h(the)f(content)f(of)h(a)396 1274 -y(parameter)f(entity)h(as)h(the)f(name)g(of)f(a)i(general)e(entity:)h -Fq(&\045name;;)2557 1241 y Ff(1)2580 1274 y Fv(.)396 -1423 y(General)g(entities)g(must)h(respect)e(the)i(element)e(hierarchy) --5 b(.)17 b(This)k(means)f(that)g(there)g(must)g(be)g(an)g(end)g(tag)g -(for)g(e)n(v)o(ery)396 1531 y(start)h(tag)f(in)h(the)f(entity)g(v)n -(alue,)f(and)h(that)g(end)f(tags)i(without)e(corresponding)e(start)k -(tags)f(are)g(not)g(allo)n(wed.)396 1777 y Fj(Example)479 -1924 y Fi(If)f(the)f(author)i(of)f(a)f(document)j(changes)f(sometimes,) -f(it)f(is)g(w)o(orthwhile)h(to)g(set)f(up)i(a)e(general)i(entity)e -(containing)i(the)f(names)479 2021 y(of)g(the)g(authors.)h(If)e(the)h -(author)h(changes,)g(you)f(need)h(only)g(to)e(change)j(the)e -(de\002nition)g(of)g(the)g(entity)-5 b(,)18 b(and)i(do)f(not)h(need)f -(to)479 2118 y(check)h(all)f(occurrences)h(of)f(authors')h(names:)479 -2289 y Fh()479 -2469 y Fi(In)19 b(the)g(document)i(te)o(xt,)d(you)i(can)f(no)n(w)h -(refer)e(to)h(the)g(author)h(names)f(by)h(writing)e Fh(&authors;)p -Fi(.)479 2607 y Fe(Ille)m(gal:)h Fi(The)g(follo)n(wing)g(tw)o(o)g -(entities)g(are)g(ille)o(gal)f(because)i(the)f(elements)g(in)g(the)g -(de\002nition)g(do)g(not)h(nest)f(properly:)479 2778 -y Fh()q(">)479 2865 y(">)396 3139 y Fv(Earlier)20 b(in)g(this)h(introduction)d(we)i -(e)o(xplained)e(that)j(there)e(are)i(substitutes)f(for)g(reserv)o(ed)e -(characters:)i(<,)g(>,)396 3247 y(&,)f(',)h(and)f -(".)g(These)h(are)g(simply)g(prede\002ned)e(general)h(entities;)i -(note)f(that)g(the)o(y)g(are)g(the)g(only)396 3355 y(prede\002ned)e -(entities.)j(It)f(is)h(allo)n(wed)f(to)g(de\002ne)g(these)g(entities)h -(again)e(as)i(long)e(as)i(the)f(meaning)f(is)i(unchanged.)-2 -3725 y Fp(1.2.6.)35 b(Notations)g(and)e(unpar)n(sed)i(entities)396 -3892 y Fv(Unparsed)19 b(entities)i(ha)n(v)o(e)e(a)i(foreign)d(format)i -(and)f(can)h(thus)g(not)g(be)g(read)g(by)g(the)g(XML)g(parser)-5 -b(.)20 b(Unparsed)f(entities)396 4000 y(are)h(al)o(w)o(ays)h(e)o -(xternal.)e(The)h(format)f(of)h(an)g(unparsed)e(entity)i(must)g(ha)n(v) -o(e)g(been)f(declared,)g(such)h(a)h(format)e(is)i(called)f(a)396 -4108 y Fr(notation)p Fv(.)f(The)g(entity)h(can)g(then)g(be)g(declared)f -(by)h(referring)e(to)i(this)h(notation.)e(As)i(unparsed)d(entities)j -(do)f(not)396 4216 y(contain)f(XML)i(te)o(xt,)e(it)i(is)h(not)d -(possible)h(to)h(include)e(them)h(directly)f(into)h(the)g(document;)e -(you)i(can)g(only)f(declare)396 4324 y(attrib)n(utes)h(such)g(that)h -(names)e(of)h(unparsed)f(entities)h(are)h(acceptable)e(v)n(alues.)396 -4474 y(As)i(you)f(can)g(see,)g(unparsed)f(entities)h(are)g(too)g -(complicated)f(in)h(order)f(to)h(ha)n(v)o(e)g(an)o(y)f(purpose.)g(It)h -(is)h(almost)f(al)o(w)o(ays)396 4581 y(better)g(to)g(simply)g(pass)h -(the)f(name)g(of)g(the)g(data)g(\002le)h(as)g(normal)e(attrib)n(ute)g -(v)n(alue,)h(and)f(let)i(the)f(application)f(recognize)396 -4689 y(and)h(process)g(the)g(foreign)e(format.)p Black -3800 5278 a Fr(19)p Black eop -%%Page: 20 20 -20 19 bop Black 3028 67 a Fr(Chapter)19 b(1.)h(What)h(is)g(XML?)p -Black -2 597 a Fx(1.3.)39 b(A)g(complete)f(e)n(xample:)g(The)h -Fd(readme)k Fx(DTD)396 777 y Fv(The)20 b(reason)g(for)f -Fr(r)m(eadme)h Fv(w)o(as)h(that)f(I)g(often)g(wrote)g(tw)o(o)g(v)o -(ersions)f(of)h(\002les)h(such)f(as)h(README)g(and)e(INST)-8 -b(ALL)396 885 y(which)20 b(e)o(xplain)f(aspects)h(of)g(a)h(distrib)n -(uted)e(softw)o(are)h(archi)n(v)o(e;)f(one)g(v)o(ersion)g(w)o(as)i -(ASCII-formatted,)d(the)i(other)g(w)o(as)396 993 y(written)g(in)h -(HTML.)e(Maintaining)g(both)g(v)o(ersions)h(means)f(double)g(amount)g -(of)h(w)o(ork,)f(and)h(changes)f(of)h(one)f(v)o(ersion)396 -1101 y(may)h(be)g(for)o(gotten)e(in)i(the)g(other)f(v)o(ersion.)g(T)-7 -b(o)20 b(impro)o(v)o(e)e(this)j(situation)e(I)i(in)m(v)o(ented)d(the)i -Fr(r)m(eadme)g Fv(DTD)g(which)f(allo)n(ws)396 1209 y(me)h(to)h -(maintain)e(only)h(one)f(source)h(written)g(as)g(XML)h(document,)d(and) -h(to)i(generate)e(the)h(ASCII)g(and)g(the)g(HTML)396 -1317 y(v)o(ersion)f(from)g(it.)396 1466 y(In)h(this)h(section,)f(I)g(e) -o(xplain)f(only)g(the)i(DTD.)f(The)f Fr(r)m(eadme)h Fv(DTD)h(is)g -(contained)d(in)j(the)f(PXP)h(distrib)n(ution)e(together)396 -1574 y(with)i(the)f(tw)o(o)g(con)m(v)o(erters)e(to)j(produce)d(ASCII)i -(and)g(HTML.)g(Another)e(section)i(of)g(this)h(manual)e(describes)h -(the)396 1682 y(HTML)g(con)m(v)o(erter)-5 b(.)396 1831 -y(The)20 b(documents)f(ha)n(v)o(e)g(a)i(simple)f(structure:)f(There)h -(are)g(up)g(to)g(three)g(le)n(v)o(els)g(of)g(nested)g(sections,)g -(paragraphs,)d(item)396 1939 y(lists,)22 b(footnotes,)c(hyperlinks,)g -(and)h(te)o(xt)h(emphasis.)g(The)g(outermost)f(element)g(has)i(usually) -e(the)h(type)g Fq(readme)p Fv(,)g(it)h(is)396 2047 y(declared)e(by)396 -2228 y Fq()396 2325 -y()396 -2613 y Fv(This)21 b(means)f(that)g(this)h(element)e(contains)h(one)f -(or)h(more)f(sections)i(of)f(the)g(\002rst)h(le)n(v)o(el)f(\(element)f -(type)h Fq(sect1)p Fv(\),)f(and)396 2721 y(that)i(the)f(element)f(has)i -(a)f(required)f(attrib)n(ute)h Fq(title)f Fv(containing)g(character)g -(data)h(\(CD)m(A)-9 b(T)h(A\).)19 b(Note)h(that)h Fq(readme)396 -2829 y Fv(elements)f(must)g(not)g(contain)f(te)o(xt)h(data.)396 -2978 y(The)g(three)g(le)n(v)o(els)g(of)g(sections)g(are)g(declared)f -(as)i(follo)n(ws:)396 3158 y Fq()396 3352 y()396 3547 y()396 3738 y Fv(Ev)o(ery)19 b(section)h(has)g(a)h -Fq(title)f Fv(element)g(as)g(\002rst)h(subelement.)e(After)h(the)g -(title)h(an)f(arbitrary)f(b)n(ut)h(non-empty)396 3846 -y(sequence)f(of)h(inner)g(sections,)g(paragraphs)e(and)h(item)i(lists)g -(follo)n(ws.)f(Note)g(that)g(the)g(inner)g(sections)g(must)g(belong)f -(to)396 3954 y(the)h(ne)o(xt)g(higher)f(section)h(le)n(v)o(el;)g -Fq(sect3)g Fv(elements)f(must)i(not)f(contain)f(inner)g(sections)h -(because)g(there)g(is)h(no)e(ne)o(xt)396 4061 y(higher)g(le)n(v)o(el.) -396 4211 y(Ob)o(viously)-5 b(,)18 b(all)j(three)f(declarations)e(allo)n -(w)j(paragraphs)d(\()p Fq(p)p Fv(\))h(and)h(item)g(lists)i(\()p -Fq(ul)p Fv(\).)e(The)f(de\002nition)g(can)h(be)396 4319 -y(simpli\002ed)g(at)h(this)g(point)e(by)h(using)f(a)i(parameter)e -(entity:)396 4499 y Fq()396 -4693 y()p -Black 3800 5278 a Fr(20)p Black eop -%%Page: 21 21 -21 20 bop Black 3028 67 a Fr(Chapter)19 b(1.)h(What)h(is)g(XML?)p -Black 396 579 a Fq()396 773 y()396 964 y Fv(Here,)20 b(the)g(entity)g -Fq(p.like)g Fv(is)h(nothing)e(b)n(ut)h(a)g(macro)g(abbre)n(viating)d -(the)j(same)h(sequence)e(of)h(declarations;)f(if)h(ne)n(w)396 -1072 y(elements)f(on)h(the)f(same)h(le)n(v)o(el)f(as)h -Fq(p)g Fv(and)f Fq(ul)h Fv(are)f(later)h(added,)e(it)i(is)h(suf)n -(\002cient)e(only)f(to)i(change)e(the)i(entity)f(de\002nition.)396 -1180 y(Note)h(that)h(there)e(are)i(some)f(restrictions)f(on)h(the)g -(usage)g(of)g(entities)h(in)f(this)h(conte)o(xt;)e(most)h(important,)e -(entities)396 1288 y(containing)h(a)h(left)h(paranthesis)e(must)h(also) -h(contain)e(the)h(corresponding)d(right)i(paranthesis.)396 -1437 y(Note)h(that)h(the)f(entity)g Fq(p.like)g Fv(is)h(a)f -Fr(par)o(ameter)i Fv(entity)-5 b(,)19 b(i.e.)h(the)g(ENTITY)g -(declaration)e(contains)i(a)g(percent)f(sign,)396 1545 -y(and)h(the)g(entity)g(is)h(referred)e(to)h(by)g Fq(\045p.like;)p -Fv(.)f(This)h(kind)g(of)f(entity)h(must)h(be)f(used)g(to)g(abbre)n -(viate)e(parts)j(of)f(the)396 1653 y(DTD;)g(the)g Fr(g)o(ener)o(al)f -Fv(entities)h(declared)e(without)h(percent)g(sign)h(and)f(referred)f -(to)i(as)g Fq(&name;)f Fv(are)h(not)f(allo)n(wed)g(in)h(this)396 -1761 y(conte)o(xt.)396 1911 y(The)g Fq(title)g Fv(element)g -(speci\002es)g(the)h(title)f(of)g(the)h(section)f(in)g(which)g(it)g -(occurs.)g(The)f(title)i(is)h(gi)n(v)o(en)c(as)j(character)396 -2019 y(data,)f(optionally)f(interspersed)f(with)j(line)f(breaks)g(\()p -Fq(br)p Fv(\):)396 2199 y Fq() -396 2390 y Fv(Compared)19 b(with)h(the)g Fq(title)g Fr(attrib)n(ute)g -Fv(of)g(the)h Fq(readme)e Fv(element,)h(this)g(element)g(allo)n(ws)g -(inner)g(markup)e(\(i.e.)i Fq(br)p Fv(\))396 2498 y(while)g(attrib)n -(ute)g(v)n(alues)g(do)g(not:)g(It)g(is)h(an)g(error)e(if)h(an)g(attrib) -n(ute)g(v)n(alue)g(contains)f(the)h(left)h(angle)e(brack)o(et)g -Fm(<)i Fv(literally)396 2605 y(such)f(that)g(it)h(is)h(impossible)d(to) -h(include)g(inner)f(elements.)396 2755 y(The)h(paragraph)e(element)h -Fq(p)i Fv(has)f(a)h(structure)e(similar)i(to)f Fq(title)p -Fv(,)g(b)n(ut)g(it)h(allo)n(ws)f(more)g(inner)f(elements:)396 -2935 y Fq()396 -3129 y()396 3320 -y Fv(Line)20 b(breaks)g(do)f(not)h(ha)n(v)o(e)g(inner)f(structure,)g -(so)i(the)o(y)e(are)h(declared)f(as)i(being)e(empty:)396 -3500 y Fq()396 3691 y Fv(This)21 -b(means)f(that)g(really)g(nothing)e(is)j(allo)n(wed)f(within)g -Fq(br)p Fv(;)g(you)f(must)i(al)o(w)o(ays)f(write)h Fq(

    )e -Fv(or)h(abbre)n(viated)396 3799 y Fq(
    )p Fv(.)396 -3949 y(Code)g(samples)h(should)e(be)h(mark)o(ed)f(up)h(by)f(the)h -Fq(code)h Fv(tag;)f(emphasized)f(te)o(xt)h(can)g(be)g(indicated)f(by)h -Fq(em)p Fv(:)396 4129 y Fq()396 -4323 y()396 4514 -y Fv(That)20 b Fq(code)g Fv(elements)g(are)g(not)g(allo)n(wed)g(to)g -(contain)f(further)g(markup)f(while)i Fq(em)h Fv(elements)f(do)g(is)h -(a)f(design)g(decision)396 4622 y(by)g(the)g(author)f(of)h(the)g(DTD.) -396 4772 y(Unordered)e(lists)k(simply)d(consists)i(of)f(one)g(or)g -(more)f(list)i(items,)g(and)e(a)i(list)g(item)g(may)e(contain)g -(paragraph-le)n(v)o(el)396 4879 y(material:)p Black 3800 -5278 a Fr(21)p Black eop -%%Page: 22 22 -22 21 bop Black 3028 67 a Fr(Chapter)19 b(1.)h(What)h(is)g(XML?)p -Black 396 579 a Fq()396 773 -y()396 964 y Fv(F)o(ootnotes)19 -b(are)h(described)f(by)h(the)g(te)o(xt)g(of)g(the)g(note;)g(this)h(te)o -(xt)f(may)g(contain)f(te)o(xt-le)n(v)o(el)g(markup.)f(There)h(is)i(no) -396 1072 y(mechanism)e(to)i(describe)e(the)h(numbering)e(scheme)h(of)h -(footnotes,)f(or)h(to)g(specify)g(ho)n(w)f(footnote)g(references)f(are) -396 1180 y(printed.)396 1360 y Fq()396 1551 y Fv(Hyperlinks)19 -b(are)h(written)g(as)h(in)f(HTML.)g(The)g(anchor)f(tag)h(contains)f -(the)h(te)o(xt)g(describing)f(where)h(the)g(link)g(points)g(to,)396 -1659 y(and)g(the)g Fq(href)g Fv(attrib)n(ute)g(is)h(the)f(pointer)f -(\(as)i(URL\).)f(There)f(is)j(no)d(w)o(ay)i(to)f(describe)f(locations)h -(of)g("hash)g(marks".)f(If)396 1767 y(the)h(link)g(refers)g(to)g -(another)f Fr(r)m(eadme)h Fv(document,)e(the)i(attrib)n(ute)g -Fq(readmeref)f Fv(should)g(be)h(used)g(instead)g(of)g -Fq(href)p Fv(.)396 1875 y(The)g(reason)g(is)h(that)f(the)g(con)m(v)o -(erted)e(document)g(has)i(usually)g(a)h(dif)n(ferent)d(system)i -(identi\002er)g(\(\002le)h(name\),)d(and)i(the)396 1983 -y(link)g(to)h(a)f(con)m(v)o(erted)e(document)g(must)i(be)g(con)m(v)o -(erted,)e(too.)396 2163 y Fq()396 -2260 y()396 -2742 y Fv(Note)20 b(that)h(although)d(it)j(is)g(only)e(sensible)i(to)f -(specify)g(one)f(of)h(the)g(tw)o(o)h(attrib)n(utes,)f(the)g(DTD)g(has)h -(no)e(means)h(to)396 2850 y(e)o(xpress)g(this)g(restriction.)396 -3000 y(So)h(f)o(ar)f(the)g(DTD.)g(Finally)-5 b(,)19 b(here)h(is)h(a)g -(document)d(for)i(it:)396 3180 y Fq()396 3277 y()396 3374 y()396 3471 y()486 3569 y -(Usage)486 3666 y(

    )576 3763 y(The)g(readme)e -(converter)i(is)g(invoked)g(on)g(the)h(command)e(line)h(by:)486 -3860 y(

    )486 3957 y(

    )576 4054 y(readme)e([)j(-text)f(|)h -(-html)f(])g(input.xml)486 4151 y(

    )486 4248 -y(

    )576 4346 y(Here)g(a)g(list)h(of)f(options:)486 -4443 y(

    )486 4540 y(
      )576 4637 y(
    • )665 4734 -y(

      -)396 4831 y(text:)f(specifies)g(that)i(ASCII)f -(output)f(should)h(be)h(produced

      )p Black 3800 5278 -a Fr(22)p Black eop -%%Page: 23 23 -23 22 bop Black 3028 67 a Fr(Chapter)19 b(1.)h(What)h(is)g(XML?)p -Black 576 579 a Fq(
    • )576 676 y(
    • )665 773 y(

      -)396 -870 y(html:)43 b(specifies)g(that)i(HTML)f(output)g(should)f(be) -i(produced

      )576 967 y(
    • )486 1065 y(
    )486 1162 -y(

    )576 1259 y(The)f(input)g(file)g(must)g(be)h(given)f(on)g(the)h -(command)e(line.)h(The)h(converted)e(output)h(is)576 -1356 y(printed)f(to)i(stdout.)486 1453 y(

    )396 -1550 y()396 1647 y()486 1745 y(Author)486 -1842 y(

    )576 1939 y(The)f(program)g(has)g(been)g(written)g(by)576 -2036 y(Ge) -o(rd)39 b(Stolpmann.)486 2133 y(

    )396 2230 y(
    )396 -2327 y()-2 2746 y Fx(Notes)p Black 396 2926 -a Fv(1.)p Black 70 w(This)20 b(construct)g(is)h(only)e(allo)n(wed)h -(within)g(the)g(de\002nition)f(of)h(another)e(entity;)i(otherwise)g(e)o -(xtra)f(spaces)i(w)o(ould)529 3034 y(be)f(added)f(\(as)i(e)o(xplained)d -(abo)o(v)o(e\).)g(Such)i(indirection)e(is)j(not)f(recommended.)529 -3172 y Fi(Complete)f(e)o(xample:)529 3343 y Fh()243 b()529 -3430 y()529 -3518 y()529 -3605 y()529 -3785 y Fi(Y)-8 b(ou)19 b(can)h(no)n(w)f(write)f Fh(&text;)j -Fi(in)e(the)g(document)h(instance,)f(and)h(depending)h(on)e(the)g(v)n -(alue)g(of)g Fh(variant)i Fi(either)e Fh(text-a)i Fi(or)529 -3882 y Fh(text-b)g Fi(is)d(inserted.)p Black 3800 5278 -a Fr(23)p Black eop -%%Page: 24 24 -24 23 bop Black Black -2 621 a Fs(Chapter)48 b(2.)f(Using)i(PXP)-2 -1055 y Fx(2.1.)39 b(V)-9 b(alidation)396 1235 y Fv(The)20 -b(parser)g(can)g(be)g(used)g(to)g Fr(validate)f Fv(a)i(document.)d -(This)i(means)g(that)g(all)h(the)f(constraints)g(that)g(must)g(hold)g -(for)f(a)396 1343 y(v)n(alid)h(document)e(are)i(actually)g(check)o(ed.) -f(V)-9 b(alidation)19 b(is)i(the)f(def)o(ault)f(mode)h(of)g(PXP,)g -(i.e.)h(e)n(v)o(ery)d(document)h(is)396 1451 y(v)n(alidated)g(while)i -(it)f(is)i(being)d(parsed.)396 1600 y(In)h(the)g Fq(examples)g -Fv(directory)e(of)i(the)g(distrib)n(ution)f(you)h(\002nd)g(the)g -Fq(pxpvalidate)f Fv(application.)f(It)j(is)g(in)m(v)n(ok)o(ed)d(in)j -(the)396 1708 y(follo)n(wing)e(w)o(ay:)396 1888 y Fq(pxpvalidate)43 -b([)i(-wf)f(])h Fn(file)p Fq(...)396 2079 y Fv(The)20 -b(\002les)h(mentioned)e(on)g(the)i(command)d(line)i(are)g(v)n -(alidated,)f(and)h(e)n(v)o(ery)e(w)o(arning)h(and)h(e)n(v)o(ery)f -(error)g(messages)h(are)396 2187 y(printed)f(to)i(stderr)-5 -b(.)396 2337 y(The)20 b(-wf)g(switch)h(modi\002es)e(the)i(beha)n(viour) -d(such)i(that)g(a)h(well-formedness)d(parser)h(is)i(simulated.)f(In)g -(this)g(mode,)f(the)396 2445 y(ELEMENT)-6 b(,)19 b(A)-9 -b(TTLIST)j(,)19 b(and)g(NO)m(T)-8 b(A)f(TION)20 b(declarations)f(of)h -(the)g(DTD)g(are)g(ignored,)e(and)i(only)f(the)i(ENTITY)396 -2553 y(declarations)e(will)i(tak)o(e)f(ef)n(fect.)g(This)g(mode)f(is)i -(intended)e(for)h(documents)e(lacking)h(a)i(DTD.)f(Please)h(note)f -(that)g(the)396 2661 y(parser)g(still)h(scans)g(the)f(DTD)g(fully)g -(and)g(will)h(report)e(all)h(errors)g(in)g(the)g(DTD;)h(such)f(checks)f -(are)h(not)g(required)f(by)g(a)396 2769 y(well-formedness)f(parser)-5 -b(.)396 2918 y(The)20 b Fq(pxpvalidate)f Fv(application)g(is)i(the)f -(simplest)h(sensible)f(program)e(using)i(PXP,)g(you)g(may)f(consider)g -(it)i(as)396 3026 y("hello)f(w)o(orld")f(program.)-2 -3445 y Fx(2.2.)39 b(Ho)n(w)g(to)g(par)n(se)f(a)i(document)d(fr)m(om)i -(an)g(application)396 3624 y Fv(Let)21 b(me)f(\002rst)h(gi)n(v)o(e)e(a) -i(rough)d(o)o(v)o(ervie)n(w)g(of)i(the)h(object)e(model)g(of)h(the)h -(parser)-5 b(.)19 b(The)h(follo)n(wing)f(items)h(are)h(represented)396 -3732 y(by)f(objects:)p Black 396 4055 a Ft(\225)p Black -60 w Fr(Documents:)f Fv(The)h(document)e(representation)g(is)j(more)e -(or)h(less)h(the)f(anchor)f(for)g(the)h(application;)f(all)i(accesses)g -(to)479 4163 y(the)f(parsed)g(entities)h(start)f(here.)g(It)g(is)h -(described)e(by)h(the)g(class)h Fq(document)f Fv(contained)e(in)j(the)f -(module)479 4271 y Fq(Pxp_document)p Fv(.)f(Y)-9 b(ou)19 -b(can)h(get)h(some)f(global)f(information,)e(such)j(as)h(the)f(XML)h -(declaration)d(the)j(document)479 4379 y(be)o(gins)f(with,)g(the)g(DTD) -g(of)g(the)g(document,)e(global)i(processing)e(instructions,)h(and)h -(most)g(important,)f(the)479 4487 y(document)f(tree.)p -Black 396 4595 a Ft(\225)p Black 60 w Fr(The)j(contents)e(of)h -(documents:)f Fv(The)h(contents)f(ha)n(v)o(e)h(the)g(structure)f(of)h -(a)h(tree:)f(Elements)g(contain)f(other)g(elements)479 -4703 y(and)h(te)o(xt)744 4670 y Ff(1)768 4703 y Fv(.)h(The)e(common)g -(type)h(to)g(represent)f(both)g(kinds)h(of)g(content)f(is)i -Fq(node)f Fv(which)g(is)h(a)g(class)g(type)e(that)479 -4811 y(uni\002es)h(the)h(properties)d(of)i(elements)g(and)g(character)f -(data.)h(Ev)o(ery)e(node)i(has)g(a)h(list)g(of)f(children)f(\(which)g -(is)i(empty)p Black 3800 5278 a Fr(24)p Black eop -%%Page: 25 25 -25 24 bop Black 3136 67 a Fr(Chapter)20 b(2.)g(Using)g(PXP)p -Black 479 579 a Fv(if)h(the)f(element)g(is)h(empty)e(or)h(the)g(node)f -(represents)h(te)o(xt\);)f(nodes)h(may)g(ha)n(v)o(e)f(attrib)n(utes;)h -(nodes)g(ha)n(v)o(e)f(al)o(w)o(ays)i(te)o(xt)479 687 -y(contents.)d(There)g(are)g(tw)o(o)h(implementations)e(of)h -Fq(node)p Fv(,)h(the)f(class)i Fq(element_impl)d Fv(for)h(elements,)g -(and)g(the)h(class)479 795 y Fq(data_impl)h Fv(for)f(te)o(xt)h(data.)g -(Y)-9 b(ou)20 b(\002nd)f(these)i(classes)g(and)f(class)h(types)f(in)g -(the)g(module)f Fq(Pxp_document)p Fv(,)g(too.)479 944 -y(Note)h(that)h(attrib)n(ute)f(lists)h(are)f(represented)f(by)g -(non-class)h(v)n(alues.)p Black 396 1094 a Ft(\225)p -Black 60 w Fr(The)h(node)e(e)n(xtension:)g Fv(F)o(or)h(adv)n(anced)e -(usage,)i(e)n(v)o(ery)e(node)i(of)f(the)i(document)d(may)i(ha)n(v)o(e)f -(an)h(associated)479 1202 y Fr(e)n(xtension)g Fv(which)g(is)h(simply)f -(a)g(second)f(object.)h(This)g(object)g(must)g(ha)n(v)o(e)g(the)g -(three)g(methods)f Fq(clone)p Fv(,)g Fq(node)p Fv(,)h(and)479 -1310 y Fq(set_node)f Fv(as)h(bare)f(minimum,)e(b)n(ut)j(you)e(are)i -(free)e(to)i(add)f(methods)f(as)i(you)f(w)o(ant.)g(This)g(is)i(the)e -(preferred)e(w)o(ay)j(to)479 1417 y(add)g(functionality)e(to)i(the)h -(document)d(tree)1746 1384 y Ff(2)1770 1417 y Fv(.)j(The)e(class)j -(type)d Fq(extension)h Fv(is)h(de\002ned)e(in)h Fq(Pxp_document)p -Fv(,)f(too.)p Black 396 1525 a Ft(\225)p Black 60 w Fr(The)i(DTD:)f -Fv(Sometimes)g(it)h(is)g(necessary)e(to)i(access)f(the)h(DTD)f(of)g(a)h -(document;)d(the)i(a)n(v)o(erage)f(application)g(does)479 -1633 y(not)h(need)g(this)g(feature.)f(The)h(class)h Fq(dtd)g -Fv(describes)e(DTDs,)i(and)e(mak)o(es)h(it)h(possible)f(to)h(get)f -(representations)e(of)479 1741 y(element,)i(entity)-5 -b(,)19 b(and)h(notation)e(declarations)h(as)i(well)g(as)g(processing)e -(instructions)g(contained)f(in)j(the)f(DTD.)479 1849 -y(This)g(class,)g(and)f Fq(dtd_element)p Fv(,)g Fq(dtd_notation)p -Fv(,)e(and)i Fq(proc_instruction)f Fv(can)h(be)h(found)e(in)i(the)f -(module)479 1957 y Fq(Pxp_dtd)p Fv(.)h(There)f(are)h(a)h(couple)e(of)h -(classes)h(representing)d(dif)n(ferent)h(kinds)g(of)h(entities;)h -(these)f(can)g(be)g(found)f(in)479 2065 y(the)h(module)f -Fq(Pxp_entity)p Fv(.)396 2214 y(Additionally)-5 b(,)18 -b(the)i(follo)n(wing)f(modules)g(play)h(a)g(role:)p Black -396 2447 a Ft(\225)p Black 60 w Fr(Pxp_yacc:)e Fv(Here)i(the)h(main)e -(parsing)h(functions)e(such)i(as)h Fq(parse_document_entity)c -Fv(are)k(located.)e(Some)479 2555 y(additional)g(types)h(and)g -(functions)f(allo)n(w)h(the)g(parser)f(to)i(be)f(con\002gured)e(in)i(a) -h(non-standard)c(w)o(ay)-5 b(.)p Black 396 2663 a Ft(\225)p -Black 60 w Fr(Pxp_types:)19 b Fv(This)h(is)h(a)g(collection)e(of)h -(basic)g(types)g(and)g(e)o(xceptions.)396 2812 y(There)g(are)g(some)g -(further)e(modules)i(that)g(are)g(needed)f(internally)g(b)n(ut)h(are)g -(not)g(part)g(of)g(the)g(API.)396 2962 y(Let)h(the)f(document)e(to)i -(be)h(parsed)e(be)h(stored)g(in)g(a)h(\002le)g(called)f -Fq(doc.xml)p Fv(.)f(The)h(parsing)f(process)h(is)h(started)f(by)396 -3070 y(calling)g(the)g(function)396 3250 y Fq(val)45 -b(parse_document_entity)c(:)k(config)e(->)i(source)f(->)g('ext)g(spec)h -(->)f('ext)g(document)396 3441 y Fv(de\002ned)19 b(in)i(the)f(module)f -Fq(Pxp_yacc)p Fv(.)g(The)h(\002rst)h(ar)o(gument)d(speci\002es)i(some)g -(global)g(properties)e(of)i(the)g(parser;)g(it)h(is)396 -3549 y(recommended)c(to)j(start)g(with)g(the)g Fq(default_config)p -Fv(.)e(The)h(second)g(ar)o(gument)e(determines)i(where)g(the)h -(document)396 3657 y(to)h(be)f(parsed)f(comes)h(from;)f(this)i(may)f -(be)g(a)g(\002le,)h(a)g(channel,)d(or)i(an)g(entity)g(ID.)g(T)-7 -b(o)21 b(parse)f Fq(doc.xml)p Fv(,)f(it)i(is)g(suf)n(\002cient)396 -3764 y(to)g(pass)f Fq(from_file)44 b("doc.xml")p Fv(.)396 -3914 y(The)20 b(third)g(ar)o(gument)e(passes)i(the)h(object)e -(speci\002cation)h(to)g(use.)g(Roughly)f(speaking,)g(it)i(determines)e -(which)g(classes)396 4022 y(implement)g(the)h(node)g(objects)f(of)h -(which)g(element)g(types,)f(and)h(which)g(e)o(xtensions)f(are)h(to)g -(be)g(used.)g(The)g Fq('ext)396 4130 y Fv(polymorphic)d(v)n(ariable)i -(is)j(the)e(type)f(of)h(the)h(e)o(xtension.)d(F)o(or)i(the)g(moment,)f -(let)i(us)f(simply)g(pass)h Fq(default_spec)d Fv(as)396 -4238 y(this)j(ar)o(gument,)d(and)h(ignore)g(it.)396 4387 -y(So)i(the)f(follo)n(wing)e(e)o(xpression)h(parses)h -Fq(doc.xml)p Fv(:)396 4567 y Fq(open)44 b(Pxp_yacc)396 -4664 y(let)h(d)f(=)h(parse_document_entity)c(default_config)i -(\(from_file)g("doc.xml"\))g(de-)396 4762 y(fault_spec)p -Black 3800 5278 a Fr(25)p Black eop -%%Page: 26 26 -26 25 bop Black 3136 67 a Fr(Chapter)20 b(2.)g(Using)g(PXP)p -Black 396 579 a Fv(Note)g(that)h Fq(default_config)d -Fv(implies)i(that)h(w)o(arnings)e(are)h(collected)g(b)n(ut)g(not)g -(printed.)e(Errors)h(raise)i(one)f(of)g(the)396 687 y(e)o(xception)f -(de\002ned)g(in)h Fq(Pxp_types)p Fv(;)f(to)i(get)f(readable)f(errors)g -(and)h(w)o(arnings)f(catch)h(the)g(e)o(xceptions)f(as)i(follo)n(ws:)396 -867 y Fq(class)44 b(warner)g(=)486 964 y(object)576 1061 -y(method)f(warn)i(w)f(=)665 1158 y(print_endline)f(\("WARNING:)g(")i(^) -f(w\))486 1256 y(end)396 1353 y(;;)396 1547 y(try)486 -1644 y(let)g(config)g(=)h({)f(default_config)f(with)h(warner)g(=)h(new) -f(warner)g(})g(in)486 1741 y(let)g(d)h(=)g(parse_document_entity)c -(config)j(\(from_file)f("doc.xml"\))g(default_spec)486 -1838 y(in)576 1935 y(...)396 2033 y(with)531 2130 y(e)h(->)620 -2227 y(print_endline)f(\(Pxp_types.string_of_exn)e(e\))396 -2418 y Fv(No)n(w)20 b Fq(d)h Fv(is)g(an)f(object)g(of)g(the)g -Fq(document)f Fv(class.)i(If)f(you)g(w)o(ant)g(the)g(node)f(tree,)h -(you)g(can)g(get)g(the)g(root)f(element)h(by)396 2598 -y Fq(let)45 b(root)f(=)g(d)h(#)g(root)396 2789 y Fv(and)20 -b(if)g(you)g(w)o(ould)f(rather)h(lik)o(e)g(to)g(access)h(the)f(DTD,)g -(determine)f(it)i(by)396 2969 y Fq(let)45 b(dtd)f(=)h(d)f(#)h(dtd)396 -3160 y Fv(As)21 b(it)g(is)g(more)f(interesting,)f(let)h(us)h(in)m(v)o -(estigate)e(the)h(node)f(tree)h(no)n(w)-5 b(.)19 b(Gi)n(v)o(en)g(the)i -(root)e(element,)g(it)i(is)h(possible)d(to)396 3268 y(recursi)n(v)o -(ely)f(tra)n(v)o(erse)h(the)h(whole)f(tree.)g(The)g(children)g(of)g(a)h -(node)f Fq(n)h Fv(are)f(returned)f(by)h(the)h(method)e -Fq(sub_nodes)p Fv(,)g(and)396 3376 y(the)i(type)g(of)g(a)h(node)e(is)i -(returned)d(by)i Fq(node_type)p Fv(.)f(This)i(function)d(tra)n(v)o -(erses)i(the)g(tree,)g(and)g(prints)g(the)g(type)f(of)h(each)396 -3484 y(node:)396 3664 y Fq(let)45 b(rec)f(print_structure)e(n)j(=)486 -3761 y(let)f(ntype)g(=)h(n)g(#)f(node_type)g(in)486 3858 -y(match)g(ntype)g(with)576 3955 y(T_element)f(name)h(->)665 -4053 y(print_endline)f(\("Element)g(of)i(type)f(")h(^)f(name\);)665 -4150 y(let)h(children)e(=)i(n)f(#)h(sub_nodes)e(in)665 -4247 y(List.iter)h(print_structure)e(children)486 4344 -y(|)j(T_data)e(->)665 4441 y(print_endline)g("Data")486 -4538 y(|)i(_)f(->)665 4635 y(\(*)h(Other)f(node)g(types)g(are)g(not)h -(possible)e(unless)h(the)g(parser)g(is)h(configured)800 -4733 y(differently.)710 4830 y(*\))p Black 3798 5278 -a Fr(26)p Black eop -%%Page: 27 27 -27 26 bop Black 3136 67 a Fr(Chapter)20 b(2.)g(Using)g(PXP)p -Black 665 579 a Fq(assert)44 b(false)396 770 y Fv(Y)-9 -b(ou)20 b(can)g(call)g(this)h(function)e(by)396 950 y -Fq(print_structure)43 b(root)396 1141 y Fv(The)20 b(type)g(returned)e -(by)i Fq(node_type)f Fv(is)i(either)f Fq(T_element)43 -b(name)21 b Fv(or)e Fq(T_data)p Fv(.)h(The)g Fq(name)g -Fv(of)g(the)g(element)g(type)396 1249 y(is)h(the)g(string)e(included)g -(in)i(the)f(angle)f(brack)o(ets.)h(Note)g(that)g(only)f(elements)h(ha)n -(v)o(e)g(children;)f(data)h(nodes)f(are)h(al)o(w)o(ays)396 -1357 y(lea)n(v)o(es)h(of)e(the)i(tree.)396 1506 y(There)f(are)g(some)g -(more)f(methods)g(in)i(order)e(to)h(access)h(a)f(parsed)g(node)f(tree:) -p Black 396 1739 a Ft(\225)p Black 60 w Fq(n)45 b(#)g(parent)p -Fv(:)19 b(Returns)h(the)h(parent)e(node,)g(or)h(raises)h -Fq(Not_found)e Fv(if)h(the)g(node)g(is)h(already)e(the)h(root)p -Black 396 1847 a Ft(\225)p Black 60 w Fq(n)45 b(#)g(root)p -Fv(:)20 b(Returns)g(the)g(root)g(of)f(the)i(node)e(tree.)p -Black 396 1955 a Ft(\225)p Black 60 w Fq(n)45 b(#)g(attribute)e(a)p -Fv(:)21 b(Returns)f(the)g(v)n(alue)f(of)h(the)g(attrib)n(ute)g(with)h -(name)e Fq(a)p Fv(.)i(The)e(method)g(returns)h(a)g(v)n(alue)g(for)479 -2063 y(e)n(v)o(ery)f Fr(declar)m(ed)j Fv(attrib)n(ute,)d(independently) -e(of)j(whether)f(the)i(attrib)n(ute)e(instance)h(is)h(de\002ned)e(or)h -(not.)g(If)g(the)479 2170 y(attrib)n(ute)g(is)h(not)f(declared,)f -Fq(Not_found)g Fv(will)i(be)f(raised.)g(\(In)f(well-formedness)f(mode,) -h(e)n(v)o(ery)g(attrib)n(ute)h(is)479 2278 y(considered)f(as)i(being)e -(implicitly)h(declared)e(with)j(type)f Fq(CDATA)p Fv(.\))479 -2428 y(The)g(follo)n(wing)f(return)g(v)n(alues)g(are)i(possible:)f -Fq(Value)44 b(s)p Fv(,)20 b Fq(Valuelist)43 b(sl)21 b -Fv(,)f(and)g Fq(Implied_value)p Fv(.)e(The)i(\002rst)479 -2536 y(tw)o(o)h(v)n(alue)e(types)h(indicate)g(that)g(the)g(attrib)n -(ute)g(v)n(alue)g(is)h(a)n(v)n(ailable,)e(either)h(because)g(there)f -(is)i(a)g(de\002nition)479 2644 y Fn(a)p Fq(=")p Fn(value)p -Fq(")f Fv(in)g(the)g(XML)g(te)o(xt,)g(or)g(because)g(there)f(is)i(a)g -(def)o(ault)e(v)n(alue)h(\(declared)f(in)h(the)g(DTD\).)g(Only)g(if)g -(both)479 2752 y(the)g(instance)g(de\002nition)f(and)h(the)g(def)o -(ault)g(declaration)e(are)i(missing,)g(the)h(latter)f(v)n(alue)f -Fq(Implied_value)g Fv(will)479 2860 y(be)h(returned.)479 -3009 y(In)g(the)g(DTD,)h(e)n(v)o(ery)d(attrib)n(ute)i(is)h(typed.)e -(There)h(are)g(single-v)n(alue)e(types)i(\(CD)m(A)-9 -b(T)h(A,)20 b(ID,)g(IDREF)-7 b(,)21 b(ENTITY)-11 b(,)479 -3117 y(NMT)o(OKEN,)19 b(enumerations\),)f(in)i(which)g(case)g(the)h -(method)d(passes)j Fq(Value)44 b(s)21 b Fv(back,)e(where)h -Fq(s)g Fv(is)h(the)479 3225 y(normalized)e(string)g(v)n(alue)h(of)g -(the)g(attrib)n(ute.)g(The)f(other)h(types)g(\(IDREFS,)g(ENTITIES,)f -(NMT)o(OKENS\))479 3333 y(represent)g(list)j(v)n(alues,)d(and)h(the)g -(parser)g(splits)h(the)f(XML)g(literal)h(into)e(se)n(v)o(eral)h(tok)o -(ens)g(and)f(returns)h(these)g(tok)o(ens)479 3441 y(as)h -Fq(Valuelist)44 b(sl)p Fv(.)479 3590 y(Normalization)19 -b(means)h(that)g(entity)g(references)e(\(the)i Fq(&)p -Fn(name)p Fq(;)g Fv(tok)o(ens\))f(and)h(character)f(references)479 -3698 y(\()p Fq(&#)p Fn(number)s Fq(;)p Fv(\))g(are)h(replaced)f(by)g -(the)i(te)o(xt)f(the)o(y)f(represent,)g(and)h(that)g(white)g(space)g -(characters)f(are)i(con)m(v)o(erted)479 3806 y(into)f(plain)g(spaces.)p -Black 396 3955 a Ft(\225)p Black 60 w Fq(n)45 b(#)g(data)p -Fv(:)20 b(Returns)g(the)g(character)f(data)h(contained)f(in)h(the)g -(node.)f(F)o(or)h(data)g(nodes,)f(the)h(meaning)f(is)i(ob)o(vious)479 -4063 y(as)g(this)g(is)g(the)f(main)g(content)f(of)h(data)g(nodes.)f(F)o -(or)h(element)g(nodes,)f(this)i(method)e(returns)g(the)h(concatenated) -479 4171 y(contents)g(of)g(all)g(inner)g(data)g(nodes.)479 -4321 y(Note)g(that)h(entity)f(references)e(included)h(in)h(the)h(te)o -(xt)f(are)g(resolv)o(ed)f(while)h(the)o(y)f(are)h(being)g(parsed;)f -(for)h(e)o(xample)479 4429 y(the)g(te)o(xt)h("a)f(<>)g(b")g(will) -h(be)f(returned)e(as)j("a)g(<>)f(b")g(by)g(this)h(method.)d(Spaces)j -(of)f(data)g(nodes)f(are)h(al)o(w)o(ays)479 4537 y(preserv)o(ed.)e(Ne)n -(wlines)j(are)f(preserv)o(ed,)e(b)n(ut)i(al)o(w)o(ays)g(con)m(v)o -(erted)e(to)i(\\n)h(characters)e(e)n(v)o(en)g(if)i(ne)n(wlines)e(are)i -(encoded)479 4644 y(as)g(\\r\\n)f(or)g(\\r)-5 b(.)21 -b(Normally)e(you)g(will)i(ne)n(v)o(er)e(see)i(tw)o(o)f(adjacent)f(data) -i(nodes)e(because)h(the)g(parser)f(collapses)h(all)h(data)479 -4752 y(material)f(at)h(one)e(location)h(into)g(one)f(node.)g(\(Ho)n(we) -n(v)o(er)m(,)f(if)i(you)g(create)g(your)f(o)n(wn)g(tree)h(or)g -(transform)f(the)h(parsed)479 4860 y(tree,)g(it)h(is)g(possible)f(to)h -(ha)n(v)o(e)e(adjacent)h(data)g(nodes.\))p Black 3797 -5278 a Fr(27)p Black eop -%%Page: 28 28 -28 27 bop Black 3136 67 a Fr(Chapter)20 b(2.)g(Using)g(PXP)p -Black 479 579 a Fv(Note)g(that)h(elements)f(that)g(do)g -Fr(not)h Fv(allo)n(w)f(#PCD)m(A)-9 b(T)h(A)20 b(as)h(content)e(will)i -(not)f(ha)n(v)o(e)g(data)g(nodes)f(as)i(children.)e(This)479 -687 y(means)h(that)g(spaces)h(and)f(ne)n(wlines,)f(the)h(only)g -(character)f(material)g(allo)n(wed)h(for)g(such)f(elements,)h(are)g -(silently)479 795 y(dropped.)396 986 y(F)o(or)g(e)o(xample,)e(if)i(the) -f(task)h(is)h(to)f(print)f(all)h(contents)f(of)g(elements)h(with)f -(type)h("v)n(aluable")e(whose)h(attrib)n(ute)g("priority")396 -1094 y(is)i("1",)f(this)h(function)d(can)i(help:)396 -1274 y Fq(let)45 b(rec)f(print_valuable_prio1)d(n)k(=)486 -1371 y(let)f(ntype)g(=)h(n)g(#)f(node_type)g(in)486 1468 -y(match)g(ntype)g(with)576 1565 y(T_element)f("valuable")g(when)h(n)h -(#)g(attribute)e("priority")g(=)i(Value)f("1")g(->)665 -1662 y(print_endline)f("Valuable)g(node)h(with)h(priotity)e(1)i -(found:";)665 1759 y(print_endline)e(\(n)h(#)h(data\))486 -1857 y(|)g(\(T_element)e(_)h(|)h(T_data\))f(->)665 1954 -y(let)h(children)e(=)i(n)f(#)h(sub_nodes)e(in)665 2051 -y(List.iter)h(print_valuable_prio1)d(children)486 2148 -y(|)k(_)f(->)665 2245 y(assert)g(false)396 2436 y Fv(Y)-9 -b(ou)20 b(can)g(call)g(this)h(function)e(by:)396 2616 -y Fq(print_valuable_prio1)42 b(root)396 2807 y Fv(If)20 -b(you)g(lik)o(e)g(a)h(DSSSL-lik)o(e)f(style,)g(you)g(can)g(mak)o(e)f -(the)h(function)f Fq(process_children)f Fv(e)o(xplicit:)396 -2987 y Fq(let)45 b(rec)f(print_valuable_prio1)d(n)k(=)486 -3182 y(let)f(process_children)e(n)j(=)576 3279 y(let)f(children)f(=)i -(n)g(#)f(sub_nodes)g(in)576 3376 y(List.iter)f(print_valuable_prio1)e -(children)486 3473 y(in)486 3667 y(let)j(ntype)g(=)h(n)g(#)f(node_type) -g(in)486 3764 y(match)g(ntype)g(with)576 3862 y(T_element)f("valuable") -g(when)h(n)h(#)g(attribute)e("priority")g(=)i(Value)f("1")g(->)665 -3959 y(print_endline)f("Valuable)g(node)h(with)h(priority)e(1)i -(found:";)665 4056 y(print_endline)e(\(n)h(#)h(data\))486 -4153 y(|)g(\(T_element)e(_)h(|)h(T_data\))f(->)665 4250 -y(process_children)e(n)486 4347 y(|)j(_)f(->)665 4444 -y(assert)g(false)396 4635 y Fv(So)21 b(f)o(ar)m(,)e(O'Caml)h(is)i(no)n -(w)d(a)i(simple)f("style-sheet)g(language":)e(Y)-9 b(ou)20 -b(can)g(form)f(a)h(big)g("match")g(e)o(xpression)e(to)396 -4743 y(distinguish)h(between)h(all)h(signi\002cant)e(cases,)i(and)f -(pro)o(vide)e(dif)n(ferent)g(reactions)i(on)g(dif)n(ferent)e -(conditions.)h(But)h(this)396 4851 y(technique)f(has)h(limitations;)g -(the)h("match")e(e)o(xpression)g(tends)h(to)g(get)g(lar)o(ger)f(and)h -(lar)o(ger)m(,)e(and)i(it)g(is)i(dif)n(\002cult)d(to)i(store)p -Black 3800 5278 a Fr(28)p Black eop -%%Page: 29 29 -29 28 bop Black 3136 67 a Fr(Chapter)20 b(2.)g(Using)g(PXP)p -Black 396 579 a Fv(intermediate)f(v)n(alues)h(as)h(there)e(is)j(only)d -(one)h(big)f(recursion.)g(Alternati)n(v)o(ely)-5 b(,)18 -b(it)j(is)g(also)f(possible)g(to)h(represent)e(the)396 -687 y(v)n(arious)g(cases)i(as)g(classes,)g(and)f(to)g(use)h(dynamic)d -(method)h(lookup)g(to)h(\002nd)g(the)g(appropiate)e(class.)j(The)f(ne)o -(xt)f(section)396 795 y(e)o(xplains)g(this)i(technique)e(in)h(detail.) --2 1213 y Fx(2.3.)39 b(Class-based)e(pr)m(ocessing)g(of)j(the)f(node)f -(tree)396 1393 y Fv(By)21 b(def)o(ault,)e(the)h(parsed)g(node)f(tree)h -(consists)h(of)f(objects)g(of)g(the)g(same)g(class;)h(this)g(is)g(a)g -(good)e(design)g(as)i(long)e(as)i(you)396 1501 y(w)o(ant)g(only)e(to)h -(access)h(selected)f(parts)g(of)g(the)h(document.)c(F)o(or)j(comple)o -(x)f(transformations,)e(it)k(may)f(be)g(better)g(to)g(use)396 -1609 y(dif)n(ferent)f(classes)i(for)f(objects)g(describing)e(dif)n -(ferent)h(element)g(types.)396 1758 y(F)o(or)h(e)o(xample,)f(if)h(the)g -(DTD)h(declares)e(the)i(element)e(types)h Fq(a)p Fv(,)h -Fq(b)p Fv(,)f(and)g Fq(c)p Fv(,)g(and)g(if)g(the)g(task)h(is)g(to)f -(con)m(v)o(ert)e(an)j(arbitrary)396 1866 y(document)d(into)i(a)h -(printable)e(format,)g(the)h(idea)g(is)h(to)f(de\002ne)g(for)g(e)n(v)o -(ery)f(element)g(type)h(a)g(separate)g(class)h(that)g(has)f(a)396 -1974 y(method)f Fq(print)p Fv(.)h(The)g(classes)h(are)f -Fq(eltype_a)p Fv(,)f Fq(eltype_b)p Fv(,)g(and)h Fq(eltype_c)p -Fv(,)f(and)h(e)n(v)o(ery)f(class)i(implements)396 2082 -y Fq(print)f Fv(such)g(that)g(elements)g(of)g(the)g(type)g -(corresponding)d(to)j(the)g(class)i(are)e(con)m(v)o(erted)d(to)k(the)f -(output)f(format.)396 2232 y(The)h(parser)g(supports)f(such)h(a)g -(design)g(directly)-5 b(.)19 b(As)i(it)g(is)g(impossible)e(to)i(deri)n -(v)o(e)d(recursi)n(v)o(e)h(classes)i(in)g(O'Caml)3703 -2198 y Ff(3)3727 2232 y Fv(,)g(the)396 2340 y(specialized)f(element)f -(classes)j(cannot)d(be)h(formed)f(by)g(simply)h(inheriting)f(from)g -(the)h(b)n(uilt-in)g(classes)h(of)f(the)g(parser)396 -2447 y(and)g(adding)f(methods)g(for)g(customized)g(functionality)-5 -b(.)18 b(T)-7 b(o)20 b(get)g(around)f(this)h(limitation,)g(e)n(v)o(ery) -f(node)g(of)h(the)396 2555 y(document)e(tree)j(is)g(represented)d(by)i -Fr(two)h Fv(objects,)e(one)h(called)g("the)g(node")f(and)h(containing)e -(the)i(recursi)n(v)o(e)396 2663 y(de\002nition)f(of)h(the)g(tree,)g -(one)g(called)g("the)g(e)o(xtension".)e(Ev)o(ery)h(node)g(object)h(has) -g(a)h(reference)e(to)h(the)g(e)o(xtension,)f(and)396 -2771 y(the)h(e)o(xtension)f(has)i(a)f(reference)f(to)h(the)g(node.)f -(The)h(adv)n(antage)e(of)i(this)h(model)e(is)i(that)g(it)g(is)g(no)n(w) -e(possible)h(to)396 2879 y(customize)g(the)g(e)o(xtension)f(without)g -(af)n(fecting)g(the)h(typing)f(constraints)g(of)h(the)h(recursi)n(v)o -(e)d(node)h(de\002nition.)396 3029 y(Ev)o(ery)g(e)o(xtension)g(must)h -(ha)n(v)o(e)g(the)g(three)g(methods)f Fq(clone)p Fv(,)g -Fq(node)p Fv(,)h(and)g Fq(set_node)p Fv(.)f(The)h(method)f -Fq(clone)h Fv(creates)396 3137 y(a)h(deep)e(cop)o(y)h(of)g(the)g(e)o -(xtension)f(object)g(and)h(returns)f(it;)i Fq(node)f -Fv(returns)g(the)g(node)f(object)h(for)f(this)i(e)o(xtension)e(object;) -396 3244 y(and)h Fq(set_node)f Fv(is)i(used)f(to)h(tell)g(the)f(e)o -(xtension)f(object)g(which)h(node)f(is)i(associated)f(with)g(it,)h -(this)g(method)e(is)396 3352 y(automatically)g(called)h(when)g(the)g -(node)f(tree)h(is)h(initialized.)f(The)g(follo)n(wing)e(de\002nition)h -(is)i(a)g(good)e(starting)h(point)396 3460 y(for)g(these)g(methods;)f -(usually)h Fq(clone)g Fv(must)g(be)g(further)f(re\002ned)g(when)h -(instance)g(v)n(ariables)f(are)h(added)f(to)h(the)h(class:)396 -3640 y Fq(class)44 b(custom_extension)e(=)486 3738 y(object)i(\(self\)) -576 3932 y(val)g(mutable)g(node)g(=)g(\(None)g(:)h(custom_extension)d -(node)i(option\))576 4126 y(method)f(clone)h(=)h({<)g(>})576 -4223 y(method)e(node)i(=)665 4320 y(match)f(node)g(with)845 -4418 y(None)g(->)934 4515 y(assert)g(false)755 4612 y(|)h(Some)f(n)g -(->)h(n)576 4709 y(method)e(set_node)h(n)h(=)665 4806 -y(node)f(<-)h(Some)f(n)p Black 3800 5278 a Fr(29)p Black -eop -%%Page: 30 30 -30 29 bop Black 3136 67 a Fr(Chapter)20 b(2.)g(Using)g(PXP)p -Black 486 676 a Fq(end)396 867 y Fv(This)h(part)e(of)h(the)h(e)o -(xtension)d(is)j(usually)f(the)g(same)h(for)e(all)i(classes,)g(so)g(it) -g(is)g(a)f(good)f(idea)h(to)g(consider)396 975 y Fq(custom_extension)e -Fv(as)j(the)f(super)n(-class)g(of)g(the)h(further)d(class)j -(de\002nitions.)e(Continuining)f(the)j(e)o(xample)d(of)396 -1083 y(abo)o(v)o(e,)h(we)h(can)g(de\002ne)g(the)g(element)g(type)f -(classes)j(as)e(follo)n(ws:)396 1263 y Fq(class)44 b(virtual)g -(custom_extension)e(=)486 1360 y(object)i(\(self\))576 -1457 y(...)g(clone,)g(node,)g(set_node)f(defined)h(as)g(above)g(...)576 -1652 y(method)f(virtual)h(print)g(:)h(out_channel)e(->)h(unit)486 -1749 y(end)396 1943 y(class)g(eltype_a)g(=)486 2040 y(object)g -(\(self\))576 2137 y(inherit)f(custom_extension)576 2234 -y(method)g(print)h(ch)h(=)g(...)486 2332 y(end)396 2526 -y(class)f(eltype_b)g(=)486 2623 y(object)g(\(self\))576 -2720 y(inherit)f(custom_extension)576 2817 y(method)g(print)h(ch)h(=)g -(...)486 2914 y(end)396 3109 y(class)f(eltype_c)g(=)486 -3206 y(object)g(\(self\))576 3303 y(inherit)f(custom_extension)576 -3400 y(method)g(print)h(ch)h(=)g(...)486 3497 y(end)396 -3688 y Fv(The)20 b(method)f Fq(print)h Fv(can)g(no)n(w)f(be)i -(implemented)d(for)h(e)n(v)o(ery)g(element)h(type)g(separately)-5 -b(.)18 b(Note)i(that)h(you)e(get)h(the)396 3796 y(associated)g(node)f -(by)h(in)m(v)n(oking)396 3976 y Fq(self)44 b(#)h(node)396 -4167 y Fv(and)20 b(you)f(get)h(the)h(e)o(xtension)d(object)i(of)g(a)h -(node)e Fq(n)h Fv(by)g(writing)396 4347 y Fq(n)45 b(#)g(extension)396 -4538 y Fv(It)21 b(is)g(guaranteed)d(that)396 4718 y Fq(self)44 -b(#)h(node)f(#)h(extension)e(==)i(self)p Black 3800 5278 -a Fr(30)p Black eop -%%Page: 31 31 -31 30 bop Black 3136 67 a Fr(Chapter)20 b(2.)g(Using)g(PXP)p -Black 396 579 a Fv(al)o(w)o(ays)h(holds.)396 728 y(Here)f(are)g(sample) -g(de\002nitions)g(of)g(the)g Fq(print)g Fv(methods:)396 -909 y Fq(class)44 b(eltype_a)g(=)486 1006 y(object)g(\(self\))576 -1103 y(inherit)f(custom_extension)576 1200 y(method)g(print)h(ch)h(=) -665 1297 y(\(*)g(Nodes)f(...)f(are)h(only)g(containers:)f(*\)) -665 1394 y(output_string)g(ch)h("\(";)665 1491 y(List.iter)755 -1588 y(\(fun)g(n)h(->)f(n)h(#)g(extension)e(#)i(print)f(ch\))755 -1686 y(\(self)g(#)h(node)f(#)g(sub_nodes\);)665 1783 -y(output_string)f(ch)h("\)";)486 1880 y(end)396 2074 -y(class)g(eltype_b)g(=)486 2171 y(object)g(\(self\))576 -2268 y(inherit)f(custom_extension)576 2366 y(method)g(print)h(ch)h(=) -665 2463 y(\(*)g(Print)f(the)g(value)g(of)h(the)f(CDATA)g(attribute)f -("print":)h(*\))665 2560 y(match)g(self)g(#)h(node)f(#)h(attribute)e -("print")h(with)755 2657 y(Value)g(s)314 b(->)44 b(output_string)f(ch)h -(s)665 2754 y(|)h(Implied_value)e(->)h(output_string)f(ch)h -("")665 2851 y(|)h(Valuelist)e(l)135 b(->)44 -b(assert)g(false)1517 2948 y(\(*)h(not)f(possible)f(because)h(the)g -(att)h(is)f(CDATA)g(*\))486 3045 y(end)396 3240 y(class)g(eltype_c)g(=) -486 3337 y(object)g(\(self\))576 3434 y(inherit)f(custom_extension)576 -3531 y(method)g(print)h(ch)h(=)665 3628 y(\(*)g(Print)f(the)g(contents) -g(of)g(this)g(element:)g(*\))665 3725 y(output_string)f(ch)h(\(self)g -(#)h(node)f(#)h(data\))486 3823 y(end)396 4017 y(class)f -(null_extension)f(=)486 4114 y(object)h(\(self\))576 -4211 y(inherit)f(custom_extension)576 4308 y(method)g(print)h(ch)h(=)g -(assert)e(false)486 4405 y(end)396 4638 y Fv(The)20 b(remaining)f(task) -h(is)h(to)g(con\002gure)d(the)i(parser)g(such)g(that)g(these)g(e)o -(xtension)f(classes)i(are)f(actually)g(used.)g(Here)396 -4746 y(another)f(problem)f(arises:)j(It)g(is)g(not)f(possible)g(to)g -(dynamically)e(select)j(the)f(class)h(of)f(an)g(object)g(to)g(be)h -(created.)e(As)396 4854 y(w)o(orkaround,)e(PXP)k(allo)n(ws)g(the)f -(user)g(to)g(specify)g Fr(e)n(xemplar)g(objects)g Fv(for)f(the)h(v)n -(arious)g(element)f(types;)h(instead)g(of)p Black 3800 -5278 a Fr(31)p Black eop -%%Page: 32 32 -32 31 bop Black 3136 67 a Fr(Chapter)20 b(2.)g(Using)g(PXP)p -Black 396 579 a Fv(creating)f(the)i(nodes)e(of)h(the)g(tree)g(by)g -(applying)f(the)h Fq(new)g Fv(operator)e(the)j(nodes)e(are)h(produced)e -(by)i(duplicating)e(the)396 687 y(e)o(x)o(emplars.)h(As)h(object)g -(duplication)f(preserv)o(es)g(the)h(class)h(of)f(the)g(object,)f(one)h -(can)g(create)g(fresh)g(objects)g(of)g(e)n(v)o(ery)396 -795 y(class)h(for)f(which)g(pre)n(viously)e(an)i(e)o(x)o(emplar)e(has)j -(been)e(re)o(gistered.)396 944 y(Ex)o(emplars)g(are)h(meant)g(as)h -(objects)f(without)f(contents,)g(the)h(only)g(interesting)f(thing)g(is) -j(that)e(e)o(x)o(emplars)e(are)396 1052 y(instances)i(of)g(a)h(certain) -f(class.)g(The)g(creation)f(of)h(an)h(e)o(x)o(emplar)d(for)h(an)h -(element)g(node)f(can)h(be)g(done)f(by:)396 1232 y Fq(let)45 -b(element_exemplar)d(=)i(new)h(element_impl)e(extension_exemplar)396 -1423 y Fv(And)20 b(a)h(data)f(node)f(e)o(x)o(emplar)f(is)j(created)f -(by:)396 1603 y Fq(let)45 b(data_exemplar)d(=)j(new)f(data_impl)g -(extension_exemplar)396 1794 y Fv(The)20 b(classes)h -Fq(element_impl)e Fv(and)h Fq(data_impl)f Fv(are)h(de\002ned)f(in)i -(the)f(module)f Fq(Pxp_document)p Fv(.)f(The)396 1902 -y(constructors)h(initialize)h(the)g(fresh)g(objects)g(as)h(empty)e -(objects,)h(i.e.)g(without)g(children,)e(without)i(data)g(contents,)f -(and)396 2010 y(so)i(on.)e(The)h Fq(extension_exemplar)e -Fv(is)j(the)f(initial)h(e)o(xtension)e(object)g(the)h(e)o(x)o(emplars)f -(are)h(associated)g(with.)396 2160 y(Once)g(the)g(e)o(x)o(emplars)f -(are)h(created)f(and)h(stored)g(some)n(where)f(\(e.g.)g(in)h(a)h(hash)f -(table\),)f(you)h(can)g(tak)o(e)g(an)g(e)o(x)o(emplar)396 -2268 y(and)g(create)g(a)g(concrete)f(instance)h(\(with)g(contents\))f -(by)h(duplicating)e(it.)j(As)g(user)f(of)g(the)g(parser)g(you)f(are)h -(normally)396 2376 y(not)g(concerned)e(with)i(this)h(as)g(this)g(is)g -(part)f(of)g(the)g(internal)f(logic)h(of)g(the)g(parser)m(,)f(b)n(ut)h -(as)h(background)c(kno)n(wledge)h(it)396 2483 y(is)j(w)o(orthwhile)e -(to)i(mention)e(that)h(the)g(tw)o(o)h(methods)e Fq(create_element)f -Fv(and)i Fq(create_data)f Fv(actually)g(perform)396 2591 -y(the)h(duplication)f(of)g(the)i(e)o(x)o(emplar)d(for)h(which)h(the)o -(y)f(are)h(in)m(v)n(ok)o(ed,)e(additionally)g(apply)i(modi\002cations)e -(to)j(the)f(clone,)396 2699 y(and)g(\002nally)g(return)f(the)h(ne)n(w)g -(object.)f(Moreo)o(v)o(er)m(,)f(the)i(e)o(xtension)e(object)i(is)h -(copied,)e(too,)h(and)f(the)i(ne)n(w)f(node)f(object)396 -2807 y(is)i(associated)f(with)g(the)g(fresh)g(e)o(xtension)e(object.)i -(Note)g(that)g(this)g(is)h(the)f(reason)g(why)f(e)n(v)o(ery)g(e)o -(xtension)f(object)i(must)396 2915 y(ha)n(v)o(e)g(a)g -Fq(clone)g Fv(method.)396 3065 y(The)g(con\002guration)e(of)i(the)g -(set)h(of)f(e)o(x)o(emplars)e(is)j(passed)f(to)h(the)f -Fq(parse_document_entity)d Fv(function)i(as)i(third)396 -3173 y(ar)o(gument.)d(In)i(our)f(e)o(xample,)g(this)h(ar)o(gument)e -(can)i(be)g(set)h(up)f(as)h(follo)n(ws:)396 3353 y Fq(let)45 -b(spec)f(=)486 3450 y(make_spec_from_alist)576 3547 y(~data_exemplar:) -535 b(\(new)44 b(data_impl)g(\(new)g(null_extension\)\))576 -3644 y(~default_element_exemplar:)c(\(new)k(element_impl)f(\(new)h -(null_extension\)\))576 3741 y(~element_alist:)710 3838 -y([)h("a",)89 b(new)44 b(element_impl)f(\(new)h(eltype_a\);)800 -3935 y("b",)89 b(new)44 b(element_impl)f(\(new)h(eltype_b\);)800 -4033 y("c",)89 b(new)44 b(element_impl)f(\(new)h(eltype_c\);)710 -4130 y(])576 4227 y(\(\))396 4418 y Fv(The)20 b Fq(~element_alist)f -Fv(function)f(ar)o(gument)g(de\002nes)i(the)g(mapping)e(from)h(element) -h(types)g(to)g(e)o(x)o(emplars)f(as)396 4526 y(associati)n(v)o(e)h -(list.)h(The)f(ar)o(gument)e Fq(~data_exemplar)g Fv(speci\002es)j(the)f -(e)o(x)o(emplar)e(for)i(data)g(nodes,)f(and)h(the)396 -4634 y Fq(~default_element_exemplar)d Fv(is)k(used)f(whene)n(v)o(er)e -(the)i(parser)g(\002nds)g(an)g(element)g(type)f(for)h(which)g(the)396 -4742 y(associati)n(v)o(e)g(list)h(does)f(not)g(de\002ne)g(an)g(e)o(x)o -(emplar)-5 b(.)p Black 3800 5278 a Fr(32)p Black eop -%%Page: 33 33 -33 32 bop Black 3136 67 a Fr(Chapter)20 b(2.)g(Using)g(PXP)p -Black 396 579 a Fv(The)g(con\002guration)e(is)j(no)n(w)e(complete.)g(Y) --9 b(ou)20 b(can)g(still)h(use)g(the)f(same)g(parsing)f(functions,)g -(only)g(the)h(initialization)g(is)396 687 y(a)h(bit)f(dif)n(ferent.)f -(F)o(or)g(e)o(xample,)g(call)i(the)f(parser)f(by:)396 -867 y Fq(let)45 b(d)f(=)h(parse_document_entity)c(default_config)i -(\(from_file)g("doc.xml"\))g(spec)396 1058 y Fv(Note)20 -b(that)h(the)f(resulting)f(document)f Fq(d)j Fv(has)f(a)h(usable)f -(type;)g(especially)f(the)i Fq(print)f Fv(method)e(we)j(added)e(is)i -(visible.)396 1166 y(So)g(you)e(can)h(print)g(your)e(document)h(by)396 -1346 y Fq(d)45 b(#)g(root)f(#)g(extension)g(#)g(print)g(stdout)396 -1578 y Fv(This)21 b(object-oriented)c(approach)h(looks)i(rather)f -(complicated;)g(this)h(is)i(mostly)d(caused)h(by)g(w)o(orking)e(around) -h(some)396 1686 y(problems)g(of)h(the)g(strict)h(typing)e(system)h(of)g -(O'Caml.)g(Some)g(auxiliary)f(concepts)g(such)h(as)h(e)o(xtensions)e -(were)396 1794 y(needed,)g(b)n(ut)h(the)g(practical)g(consequences)e -(are)i(lo)n(w)-5 b(.)20 b(In)g(the)g(ne)o(xt)f(section,)h(one)g(of)g -(the)g(e)o(xamples)f(of)h(the)396 1902 y(distrib)n(ution)f(is)i(e)o -(xplained,)d(a)j(con)m(v)o(erter)d(from)h Fr(r)m(eadme)h -Fv(documents)e(to)i(HTML.)-2 2321 y Fx(2.4.)39 b(Example:)f(An)h(HTML)f -(bac)m(kend)g(f)m(or)h(the)g Fd(readme)44 b Fx(DTD)396 -2501 y Fv(The)20 b(con)m(v)o(erter)e(from)h Fr(r)m(eadme)h -Fv(documents)e(to)i(HTML)g(documents)f(follo)n(ws)h(strictly)g(the)g -(approach)e(to)j(de\002ne)e(one)396 2609 y(class)i(per)f(element)g -(type.)f(The)h(HTML)g(code)g(is)h(similar)f(to)g(the)h -Fr(r)m(eadme)e Fv(source,)g(because)h(of)g(this)h(most)f(elements)396 -2716 y(can)g(be)g(con)m(v)o(erted)e(in)i(the)g(follo)n(wing)f(w)o(ay:)h -(Gi)n(v)o(en)g(the)g(input)f(element)396 2897 y Fq(content)396 -3088 y Fv(the)h(con)m(v)o(ersion)e(te)o(xt)i(is)h(the)f(concatenation)e -(of)i(a)h(computed)d(pre\002x,)h(the)h(recursi)n(v)o(ely)f(con)m(v)o -(erted)e(content,)i(and)h(a)396 3195 y(computed)e(suf)n(\002x.)396 -3345 y(Only)i(one)g(element)f(type)h(cannot)f(be)h(handled)f(by)h(this) -g(scheme:)g Fq(footnote)p Fv(.)f(F)o(ootnotes)g(are)h(collected)g -(while)g(the)o(y)396 3453 y(are)g(found)f(in)h(the)g(input)g(te)o(xt,)g -(and)f(the)o(y)h(are)g(printed)f(after)h(the)g(main)g(te)o(xt)g(has)g -(been)g(con)m(v)o(erted)d(and)j(printed.)-2 3781 y Fp(2.4.1.)35 -b(Header)396 4021 y Fq(open)44 b(Pxp_types)396 4118 y(open)g -(Pxp_document)-2 4571 y Fp(2.4.2.)35 b(T)-7 b(ype)34 -b(dec)n(larations)396 4811 y Fq(class)44 b(type)g(footnote_printer)f(=) -p Black 3800 5278 a Fr(33)p Black eop -%%Page: 34 34 -34 33 bop Black 3136 67 a Fr(Chapter)20 b(2.)g(Using)g(PXP)p -Black 486 579 a Fq(object)576 676 y(method)43 b(footnote_to_html)g(:)h -(store_type)f(-)p Fo(>)i Fq(out_channel)e(-)p Fo(>)h -Fq(unit)486 773 y(end)396 967 y(and)h(store_type)e(=)486 -1065 y(object)576 1162 y(method)g(alloc_footnote)g(:)i -(footnote_printer)d(-)p Fo(>)i Fq(int)576 1259 y(method)f -(print_footnotes)g(:)h(out_channel)f(-)p Fo(>)i Fq(unit)486 -1356 y(end)396 1453 y(;;)-2 1906 y Fp(2.4.3.)35 b(Class)g -Fc(store)396 2073 y Fv(The)20 b Fq(store)g Fv(is)h(a)g(container)d(for) -i(footnotes.)f(Y)-9 b(ou)19 b(can)h(add)g(a)g(footnote)f(by)h(in)m(v)n -(oking)e Fq(alloc_footnote)p Fv(;)g(the)396 2181 y(ar)o(gument)g(is)j -(an)f(object)g(of)g(the)g(class)h Fq(footnote_printer)p -Fv(,)d(the)i(method)f(returns)g(the)i(number)d(of)i(the)g(footnote.)396 -2289 y(The)g(interesting)f(property)f(of)i(a)h(footnote)d(is)k(that)e -(it)h(can)f(be)g(con)m(v)o(erted)d(to)k(HTML,)e(so)i(a)g -Fq(footnote_printer)d Fv(is)396 2397 y(an)i(object)g(with)g(a)h(method) -e Fq(footnote_to_html)p Fv(.)f(The)i(class)h Fq(footnote)e -Fv(which)h(is)h(de\002ned)e(belo)n(w)h(has)g(a)396 2505 -y(compatible)f(method)g Fq(footnote_to_html)f Fv(such)i(that)g(objects) -g(created)f(from)h(it)h(can)f(be)g(used)g(as)396 2613 -y Fq(footnote_printer)p Fv(s.)396 2763 y(The)g(other)f(method,)g -Fq(print_footnotes)f Fv(prints)i(the)g(footnotes)f(as)i(de\002nition)e -(list,)i(and)f(is)h(typically)e(in)m(v)n(ok)o(ed)396 -2870 y(after)h(the)g(main)g(material)g(of)g(the)g(page)g(has)g(already) -f(been)h(printed.)e(Ev)o(ery)h(item)h(of)g(the)h(list)g(is)g(printed)e -(by)396 2978 y Fq(footnote_to_html)p Fv(.)396 3200 y -Fq(class)44 b(store)g(=)486 3297 y(object)g(\(self\))576 -3491 y(val)g(mutable)g(footnotes)f(=)i(\()f([])h(:)f(\(int)h(*)f -(footnote_printer\))e(list)i(\))576 3589 y(val)g(mutable)g -(next_footnote_number)d(=)k(1)576 3783 y(method)e(alloc_footnote)g(n)i -(=)665 3880 y(let)g(number)e(=)i(next_footnote_number)d(in)665 -3977 y(next_footnote_number)g Fo(<)p Fq(-)i(number+1;)665 -4074 y(footnotes)g Fo(<)p Fq(-)g(footnotes)f(@)i([)g(number,)e(n)i(];) -665 4171 y(number)576 4366 y(method)e(print_footnotes)g(ch)h(=)665 -4463 y(if)h(footnotes)e Fo(<>)h Fq([])h(then)f(begin)396 -4560 y(output_string)f(ch)h(")p Fo(<)p Fq(hr)g(align=left)g -(noshade=noshade)e(width=\\"30\045\\")p Fo(>)p Fq(\\n";)396 -4657 y(output_string)h(ch)h(")p Fo(<)p Fq(dl)p Fo(>)p -Fq(\\n";)396 4754 y(List.iter)486 4851 y(\(fun)g(\(_,n\))g(-)p -Fo(>)p Black 3800 5278 a Fr(34)p Black eop -%%Page: 35 35 -35 34 bop Black 3136 67 a Fr(Chapter)20 b(2.)g(Using)g(PXP)p -Black 620 579 a Fq(n)45 b(#)g(footnote_to_html)d(\(self)i(:)h -(#store_type)e(:)p Fo(>)h Fq(store_type\))f(ch\))486 -676 y(footnotes;)396 773 y(output_string)g(ch)h(")p Fo(<)p -Fq(/dl)p Fo(>)p Fq(\\n";)665 870 y(end)486 1065 y(end)396 -1162 y(;;)-2 1614 y Fp(2.4.4.)35 b(Function)f Fc(escape_html)396 -1782 y Fv(This)21 b(function)d(con)m(v)o(erts)h(the)h(characters)f -Fm(<)p Fv(,)h Fm(>)p Fv(,)g(&,)g(and)g(")h(to)f(their)g(HTML)g -(representation.)e(F)o(or)h(e)o(xample,)396 1890 y Fq(escape_html)43 -b(")p Fo(<>)p Fq(")h(=)h("<>")p Fv(.)19 b(Other)g(characters)h -(are)g(left)g(unchanged.)396 2070 y Fq(let)45 b(escape_html)e(s)h(=)486 -2167 y(Str.global_substitute)576 2264 y(\(Str.regexp)f(")p -Fo(<)p Fq(\\\\|)p Fo(>)p Fq(\\\\|&\\\\|\\""\))576 2362 -y(\(fun)h(s)g(-)p Fo(>)665 2459 y Fq(match)g(Str.matched_string)e(s)j -(with)755 2556 y(")p Fo(<)p Fq(")f(-)p Fo(>)h Fq("<")665 -2653 y(|)g(")p Fo(>)p Fq(")f(-)p Fo(>)h Fq(">")665 -2750 y(|)g("&")f(-)p Fo(>)h Fq("&")665 2847 y(|)g("\\"")f(-)p -Fo(>)g Fq(""")665 2944 y(|)h(_)g(-)p Fo(>)f Fq(assert)g(false\)) -576 3042 y(s)396 3139 y(;;)-2 3591 y Fp(2.4.5.)35 b(Vir)r(tual)f(c)n -(lass)h Fc(shared)396 3759 y Fv(This)21 b(virtual)e(class)i(is)g(the)g -(abstract)f(superclass)g(of)f(the)i(e)o(xtension)d(classes)k(sho)n(wn)d -(belo)n(w)-5 b(.)19 b(It)i(de\002nes)f(the)g(standard)396 -3867 y(methods)f Fq(clone)p Fv(,)h Fq(node)p Fv(,)g(and)g -Fq(set_node)p Fv(,)f(and)g(declares)h(the)g(type)g(of)g(the)g(virtual)g -(method)e Fq(to_html)p Fv(.)i(This)396 3975 y(method)f(recursi)n(v)o -(ely)f(tra)n(v)o(erses)i(the)g(whole)g(element)g(tree,)g(and)f(prints)h -(the)g(con)m(v)o(erted)e(HTML)i(code)f(to)i(the)f(output)396 -4083 y(channel)f(passed)h(as)h(second)f(ar)o(gument.)d(The)j(\002rst)h -(ar)o(gument)d(is)j(the)f(reference)f(to)h(the)g(global)f -Fq(store)h Fv(object)g(which)396 4191 y(collects)h(the)f(footnotes.)396 -4371 y Fq(class)44 b(virtual)g(shared)g(=)486 4468 y(object)g(\(self\)) -576 4662 y(\(*)g(--)h(default_ext)e(--)h(*\))576 4857 -y(val)g(mutable)g(node)g(=)g(\(None)g(:)h(shared)f(node)g(option\))p -Black 3800 5278 a Fr(35)p Black eop -%%Page: 36 36 -36 35 bop Black 3136 67 a Fr(Chapter)20 b(2.)g(Using)g(PXP)p -Black 576 676 a Fq(method)43 b(clone)h(=)h({)p Fo(<)f(>)p -Fq(})576 773 y(method)f(node)i(=)665 870 y(match)f(node)g(with)845 -967 y(None)g(-)p Fo(>)934 1065 y Fq(assert)g(false)755 -1162 y(|)h(Some)f(n)g(-)p Fo(>)h Fq(n)576 1259 y(method)e(set_node)h(n) -h(=)665 1356 y(node)f Fo(<)p Fq(-)h(Some)f(n)576 1550 -y(\(*)g(--)h(virtual)e(--)i(*\))576 1745 y(method)e(virtual)h(to_html)g -(:)g(store)g(-)p Fo(>)h Fq(out_channel)e(-)p Fo(>)h Fq(unit)486 -1939 y(end)396 2036 y(;;)-2 2489 y Fp(2.4.6.)35 b(Class)g -Fc(only_data)396 2656 y Fv(This)21 b(class)g(de\002nes)f -Fq(to_html)f Fv(such)h(that)h(the)f(character)f(data)h(of)g(the)g -(current)f(node)g(is)i(con)m(v)o(erted)d(to)i(HTML.)g(Note)396 -2764 y(that)h Fq(self)f Fv(is)h(an)f(e)o(xtension)f(object,)g -Fq(self)44 b(#)h(node)20 b Fv(is)h(the)f(node)f(object,)h(and)f -Fq(self)45 b(#)f(node)g(#)h(data)20 b Fv(returns)396 -2872 y(the)g(character)f(data)h(of)g(the)h(node.)396 -3052 y Fq(class)44 b(only_data)g(=)486 3149 y(object)g(\(self\))576 -3247 y(inherit)f(shared)576 3441 y(method)g(to_html)h(store)g(ch)h(=) -665 3538 y(output_string)e(ch)h(\(escape_html)f(\(self)h(#)h(node)f(#)h -(data\)\))486 3635 y(end)396 3732 y(;;)-2 4185 y Fp(2.4.7.)35 -b(Class)g Fc(readme)396 4353 y Fv(This)21 b(class)g(con)m(v)o(erts)d -(elements)i(of)g(type)g Fq(readme)g Fv(to)g(HTML.)g(Such)f(an)h -(element)g(is)h(\(by)f(de\002nition\))e(al)o(w)o(ays)j(the)396 -4461 y(root)f(element)f(of)h(the)g(document.)e(First,)j(the)f(HTML)g -(header)f(is)j(printed;)d(the)h Fq(title)g Fv(attrib)n(ute)f(of)h(the)h -(element)396 4568 y(determines)e(the)i(title)f(of)g(the)h(HTML)f(page.) -f(Some)h(aspects)g(of)g(the)g(HTML)g(page)g(can)g(be)g(con\002gured)e -(by)h(setting)396 4676 y(certain)h(parameter)f(entities,)h(for)g(e)o -(xample)e(the)i(background)d(color)m(,)i(the)h(te)o(xt)g(color)m(,)f -(and)h(link)g(colors.)f(After)h(the)396 4784 y(header)m(,)f(the)h -Fq(body)g Fv(tag,)g(and)g(the)g(headline)f(ha)n(v)o(e)g(been)h -(printed,)f(the)h(contents)f(of)h(the)g(page)g(are)g(con)m(v)o(erted)e -(by)p Black 3798 5278 a Fr(36)p Black eop -%%Page: 37 37 -37 36 bop Black 3136 67 a Fr(Chapter)20 b(2.)g(Using)g(PXP)p -Black 396 579 a Fv(in)m(v)n(oking)e Fq(to_html)i Fv(on)g(all)g -(children)f(of)h(the)g(current)f(node)g(\(which)h(is)h(the)f(root)f -(node\).)g(Then,)g(the)h(footnotes)f(are)396 687 y(appended)f(to)j -(this)f(by)g(telling)g(the)g(global)f Fq(store)h Fv(object)g(to)g -(print)g(the)g(footnotes.)f(Finally)-5 b(,)19 b(the)h(end)g(tags)g(of)g -(the)396 795 y(HTML)g(pages)g(are)g(printed.)396 944 -y(This)h(class)g(is)g(an)f(e)o(xample)f(ho)n(w)g(to)i(access)g(the)f(v) -n(alue)f(of)h(an)g(attrib)n(ute:)g(The)g(v)n(alue)g(is)h(determined)d -(by)i(in)m(v)n(oking)396 1052 y Fq(self)44 b(#)h(node)f(#)h(attribute)e -("title")p Fv(.)20 b(As)h(this)f(attrib)n(ute)g(has)g(been)g(declared)f -(as)i(CD)m(A)-9 b(T)h(A)20 b(and)g(as)h(being)396 1160 -y(required,)d(the)j(v)n(alue)e(has)i(al)o(w)o(ays)f(the)g(form)g -Fq(Value)44 b(s)20 b Fv(where)g Fq(s)g Fv(is)h(the)g(string)e(v)n(alue) -h(of)g(the)g(attrib)n(ute.)396 1310 y(Y)-9 b(ou)20 b(can)g(also)g(see)h -(ho)n(w)f(entity)g(contents)f(can)h(be)g(accessed.)g(A)h(parameter)e -(entity)g(object)h(can)g(be)g(look)o(ed)f(up)h(by)396 -1417 y Fq(self)44 b(#)h(node)f(#)h(dtd)f(#)h(par_entity)e("name")p -Fv(,)20 b(and)f(by)h(in)m(v)n(oking)e Fq(replacement_text)g -Fv(the)i(v)n(alue)g(of)396 1525 y(the)g(entity)g(is)h(returned)e(after) -h(inner)f(parameter)g(and)g(character)g(entities)i(ha)n(v)o(e)f(been)f -(processed.)g(Note)h(that)g(you)396 1633 y(must)g(use)h -Fq(gen_entity)e Fv(instead)h(of)g Fq(par_entity)f Fv(to)h(access)h -(general)e(entities.)396 1855 y Fq(class)44 b(readme)g(=)486 -1952 y(object)g(\(self\))576 2049 y(inherit)f(shared)576 -2244 y(method)g(to_html)h(store)g(ch)h(=)665 2341 y(\(*)g(output)f -(header)f(*\))665 2438 y(output_string)396 2535 y(ch)i(")p -Fo(<)p Fq(!DOCTYPE)e(HTML)h(PUBLIC)g(\\"-//W3C//DTD)e(HTML)j(3.2)f -(Final//EN\\")p Fo(>)p Fq(";)665 2632 y(output_string)396 -2729 y(ch)h(")p Fo(<)p Fq(!-)f(WARNING!)f(This)h(is)h(a)g(generated)e -(file,)h(do)g(not)h(edit!)f(-)p Fo(>)p Fq(\\n";)665 2826 -y(let)h(title)f(=)396 2923 y(match)g(self)g(#)h(node)f(#)h(attribute)e -("title")h(with)576 3021 y(Value)g(s)g(-)p Fo(>)h Fq(s)486 -3118 y(|)g(_)f(-)p Fo(>)h Fq(assert)e(false)665 3215 -y(in)665 3312 y(let)i(html_header,)d(_)j(=)396 3409 y(try)g(\(self)f(#) -g(node)g(#)h(dtd)f(#)h(par_entity)e("readme:html:header"\))934 -3506 y(#)i(replacement_text)396 3603 y(with)f(WF_error)g(_)h(-)p -Fo(>)f Fq("",)g(false)g(in)665 3701 y(let)h(html_trailer,)d(_)j(=)396 -3798 y(try)g(\(self)f(#)g(node)g(#)h(dtd)f(#)h(par_entity)e -("readme:html:trailer"\))934 3895 y(#)i(replacement_text)396 -3992 y(with)f(WF_error)g(_)h(-)p Fo(>)f Fq("",)g(false)g(in)665 -4089 y(let)h(html_bgcolor,)d(_)j(=)396 4186 y(try)g(\(self)f(#)g(node)g -(#)h(dtd)f(#)h(par_entity)e("readme:html:bgcolor"\))934 -4283 y(#)i(replacement_text)396 4380 y(with)f(WF_error)g(_)h(-)p -Fo(>)f Fq("white",)f(false)h(in)665 4478 y(let)h(html_textcolor,)d(_)j -(=)396 4575 y(try)g(\(self)f(#)g(node)g(#)h(dtd)f(#)h(par_entity)e -("readme:html:textcolor"\))934 4672 y(#)i(replacement_text)396 -4769 y(with)f(WF_error)g(_)h(-)p Fo(>)f Fq("",)g(false)g(in)665 -4866 y(let)h(html_alinkcolor,)d(_)i(=)p Black 3797 5278 -a Fr(37)p Black eop -%%Page: 38 38 -38 37 bop Black 3136 67 a Fr(Chapter)20 b(2.)g(Using)g(PXP)p -Black 396 579 a Fq(try)45 b(\(self)f(#)g(node)g(#)h(dtd)f(#)h -(par_entity)e("readme:html:alinkcolor"\))934 676 y(#)i -(replacement_text)396 773 y(with)f(WF_error)g(_)h(-)p -Fo(>)f Fq("",)g(false)g(in)665 870 y(let)h(html_vlinkcolor,)d(_)i(=)396 -967 y(try)h(\(self)f(#)g(node)g(#)h(dtd)f(#)h(par_entity)e -("readme:html:vlinkcolor"\))934 1065 y(#)i(replacement_text)396 -1162 y(with)f(WF_error)g(_)h(-)p Fo(>)f Fq("",)g(false)g(in)665 -1259 y(let)h(html_linkcolor,)d(_)j(=)396 1356 y(try)g(\(self)f(#)g -(node)g(#)h(dtd)f(#)h(par_entity)e("readme:html:linkcolor"\))934 -1453 y(#)i(replacement_text)396 1550 y(with)f(WF_error)g(_)h(-)p -Fo(>)f Fq("",)g(false)g(in)665 1647 y(let)h(html_background,)d(_)i(=) -396 1745 y(try)h(\(self)f(#)g(node)g(#)h(dtd)f(#)h(par_entity)e -("readme:html:background"\))934 1842 y(#)i(replacement_text)396 -1939 y(with)f(WF_error)g(_)h(-)p Fo(>)f Fq("",)g(false)g(in)665 -2133 y(output_string)f(ch)h(")p Fo(<)p Fq(html)p Fo(><)p -Fq(header)p Fo(><)p Fq(title)p Fo(>)p Fq(\\n";)665 2230 -y(output_string)f(ch)h(\(escape_html)f(title\);)665 2327 -y(output_string)g(ch)h(")p Fo(<)p Fq(/title)p Fo(><)p -Fq(/header)p Fo(>)p Fq(\\n";)665 2424 y(output_string)f(ch)h(")p -Fo(<)p Fq(body)g(";)665 2522 y(List.iter)396 2619 y(\(fun)g -(\(name,value\))f(-)p Fo(>)531 2716 y Fq(if)h(value)g -Fo(<>)h Fq("")f(then)620 2813 y(output_string)f(ch)i(\(name)f(^)g -("=\\"")g(^)h(escape_html)e(value)h(^)h("\\")f("\)\))396 -2910 y([)h("bgcolor",)178 b(html_bgcolor;)486 3007 y("text",)313 -b(html_textcolor;)486 3104 y("link",)g(html_linkcolor;)486 -3202 y("alink",)268 b(html_alinkcolor;)486 3299 y("vlink",)g -(html_vlinkcolor;)396 3396 y(];)665 3493 y(output_string)43 -b(ch)h(")p Fo(>)p Fq(\\n";)665 3590 y(output_string)f(ch)h -(html_header;)665 3687 y(output_string)f(ch)h(")p Fo(<)p -Fq(h1)p Fo(>)p Fq(";)665 3784 y(output_string)f(ch)h(\(escape_html)f -(title\);)665 3882 y(output_string)g(ch)h(")p Fo(<)p -Fq(/h1)p Fo(>)p Fq(\\n";)665 3979 y(\(*)h(process)e(main)i(content:)e -(*\))665 4076 y(List.iter)396 4173 y(\(fun)h(n)h(-)p -Fo(>)f Fq(n)h(#)g(extension)e(#)i(to_html)e(store)h(ch\))396 -4270 y(\(self)g(#)h(node)f(#)h(sub_nodes\);)665 4367 -y(\(*)g(now)f(process)g(footnotes)f(*\))665 4464 y(store)h(#)h -(print_footnotes)d(ch;)665 4561 y(\(*)j(trailer)e(*\))665 -4659 y(output_string)g(ch)h(html_trailer;)665 4756 y(output_string)f -(ch)h(")p Fo(<)p Fq(/html)p Fo(>)p Fq(\\n";)p Black 3800 -5278 a Fr(38)p Black eop -%%Page: 39 39 -39 38 bop Black 3136 67 a Fr(Chapter)20 b(2.)g(Using)g(PXP)p -Black 486 579 a Fq(end)396 676 y(;;)-2 1129 y Fp(2.4.8.)35 -b(Classes)h Fc(section)p Fp(,)31 b Fc(sect1)p Fp(,)g -Fc(sect2)p Fp(,)g(and)j Fc(sect3)396 1296 y Fv(As)21 -b(the)f(con)m(v)o(ersion)e(process)i(is)h(v)o(ery)e(similar)m(,)h(the)g -(con)m(v)o(ersion)d(classes)22 b(of)e(the)g(three)g(section)f(le)n(v)o -(els)i(are)f(deri)n(v)o(ed)396 1404 y(from)f(the)i(more)e(general)g -Fq(section)h Fv(class.)h(The)e(HTML)h(code)g(of)g(the)g(section)g(le)n -(v)o(els)g(only)f(dif)n(fers)h(in)g(the)g(type)g(of)396 -1512 y(the)g(headline,)f(and)h(because)f(of)h(this)h(the)f(classes)i -(describing)c(the)i(section)g(le)n(v)o(els)g(can)g(be)h(computed)d(by)i -(replacing)396 1620 y(the)g(class)i(ar)o(gument)17 b -Fq(the_tag)j Fv(of)g Fq(section)g Fv(by)f(the)i(HTML)e(name)h(of)g(the) -g(headline)f(tag.)396 1770 y(Section)h(elements)g(are)g(con)m(v)o -(erted)e(to)i(HTML)g(by)g(printing)e(a)j(headline)e(and)h(then)f(con)m -(v)o(erting)f(the)i(contents)f(of)h(the)396 1878 y(element)g(recursi)n -(v)o(ely)-5 b(.)18 b(More)h(precisely)-5 b(,)19 b(the)h(\002rst)h -(sub-element)e(is)i(al)o(w)o(ays)f(a)h Fq(title)f Fv(element,)f(and)h -(the)g(other)396 1985 y(elements)g(are)g(the)g(contents)g(of)g(the)g -(section.)g(This)g(structure)f(is)j(declared)c(in)j(the)f(DTD,)g(and)g -(it)h(is)g(guaranteed)d(that)396 2093 y(the)i(document)f(matches)g(the) -i(DTD.)f(Because)g(of)g(this)h(the)f(title)h(node)e(can)h(be)g -(separated)f(from)g(the)h(rest)h(without)f(an)o(y)396 -2201 y(checks.)396 2351 y(Both)g(the)h(title)g(node,)e(and)g(the)h -(body)f(nodes)h(are)g(then)f(con)m(v)o(erted)f(to)i(HTML)g(by)g -(calling)g Fq(to_html)f Fv(on)h(them.)396 2572 y Fq(class)44 -b(section)g(the_tag)g(=)486 2670 y(object)g(\(self\))576 -2767 y(inherit)f(shared)576 2961 y(val)h(tag)g(=)h(the_tag)576 -3155 y(method)e(to_html)h(store)g(ch)h(=)665 3252 y(let)g(sub_nodes)e -(=)i(self)f(#)g(node)h(#)f(sub_nodes)g(in)665 3350 y(match)g(sub_nodes) -g(with)486 3447 y(title_node)f(::)i(rest)f(-)p Fo(>)576 -3544 y Fq(output_string)e(ch)j(\(")p Fo(<)p Fq(")f(^)g(tag)h(^)f(")p -Fo(>)p Fq(\\n"\);)576 3641 y(title_node)f(#)h(extension)g(#)g(to_html)g -(store)g(ch;)576 3738 y(output_string)e(ch)j(\("\\n)p -Fo(<)p Fq(/")e(^)i(tag)f(^)h(")p Fo(>)p Fq("\);)576 3835 -y(List.iter)665 3932 y(\(fun)f(n)h(-)p Fo(>)f Fq(n)h(#)g(extension)e(#) -i(to_html)e(store)h(ch\))665 4029 y(rest)396 4127 y(|)h(_)g(-)p -Fo(>)576 4224 y Fq(assert)e(false)486 4321 y(end)396 -4418 y(;;)396 4612 y(class)h(sect1)g(=)h(section)f("h1";;)396 -4709 y(class)g(sect2)g(=)h(section)f("h3";;)396 4807 -y(class)g(sect3)g(=)h(section)f("h4";;)p Black 3800 5278 -a Fr(39)p Black eop -%%Page: 40 40 -40 39 bop Black 3136 67 a Fr(Chapter)20 b(2.)g(Using)g(PXP)p -Black -2 583 a Fp(2.4.9.)35 b(Classes)h Fc(map_tag)p -Fp(,)31 b Fc(p)p Fp(,)i Fc(em)p Fp(,)f Fc(ul)p Fp(,)h -Fc(li)396 751 y Fv(Se)n(v)o(eral)20 b(element)f(types)h(are)g(con)m(v)o -(erted)e(to)i(HTML)g(by)g(simply)g(mapping)e(them)i(to)g(corresponding) -d(HTML)396 859 y(element)j(types.)g(The)f(class)j Fq(map_tag)d -Fv(implements)g(this,)i(and)f(the)g(class)h(ar)o(gument)d -Fq(the_target_tag)396 967 y Fv(determines)h(the)i(tag)f(name)f(to)i -(map)e(to.)h(The)g(output)f(consists)i(of)f(the)g(start)h(tag,)f(the)g -(recursi)n(v)o(ely)e(con)m(v)o(erted)g(inner)396 1075 -y(elements,)i(and)g(the)g(end)f(tag.)396 1255 y Fq(class)44 -b(map_tag)g(the_target_tag)e(=)486 1352 y(object)i(\(self\))576 -1449 y(inherit)f(shared)576 1643 y(val)h(target_tag)f(=)i -(the_target_tag)576 1838 y(method)e(to_html)h(store)g(ch)h(=)665 -1935 y(output_string)e(ch)h(\(")p Fo(<)p Fq(")g(^)h(target_tag)e(^)i(") -p Fo(>)p Fq(\\n"\);)665 2032 y(List.iter)396 2129 y(\(fun)f(n)h(-)p -Fo(>)f Fq(n)h(#)g(extension)e(#)i(to_html)e(store)h(ch\))396 -2226 y(\(self)g(#)h(node)f(#)h(sub_nodes\);)665 2323 -y(output_string)e(ch)h(\("\\n)p Fo(<)p Fq(/")g(^)h(target_tag)e(^)h(")p -Fo(>)p Fq("\);)486 2420 y(end)396 2518 y(;;)396 2712 -y(class)g(p)h(=)g(map_tag)e("p";;)396 2809 y(class)h(em)h(=)f(map_tag)g -("b";;)396 2906 y(class)g(ul)h(=)f(map_tag)g("ul";;)396 -3003 y(class)g(li)h(=)f(map_tag)g("li";;)-2 3456 y Fp(2.4.10.)36 -b(Class)f Fc(br)396 3624 y Fv(Element)20 b(of)g(type)f -Fq(br)i Fv(are)f(mapped)f(to)h(the)g(same)g(HTML)g(type.)g(Note)g(that) -g(HTML)g(forbids)f(the)h(end)g(tag)g(of)g Fq(br)p Fv(.)396 -3804 y Fq(class)44 b(br)h(=)486 3901 y(object)f(\(self\))576 -3998 y(inherit)f(shared)576 4192 y(method)g(to_html)h(store)g(ch)h(=) -665 4289 y(output_string)e(ch)h(")p Fo(<)p Fq(br)p Fo(>)p -Fq(\\n";)665 4387 y(List.iter)396 4484 y(\(fun)g(n)h(-)p -Fo(>)f Fq(n)h(#)g(extension)e(#)i(to_html)e(store)h(ch\))396 -4581 y(\(self)g(#)h(node)f(#)h(sub_nodes\);)486 4678 -y(end)396 4775 y(;;)p Black 3800 5278 a Fr(40)p Black -eop -%%Page: 41 41 -41 40 bop Black 3136 67 a Fr(Chapter)20 b(2.)g(Using)g(PXP)p -Black -2 583 a Fp(2.4.11.)36 b(Class)f Fc(code)396 751 -y Fv(The)20 b Fq(code)g Fv(type)g(is)h(con)m(v)o(erted)d(to)i(a)h -Fq(pre)f Fv(section)g(\(preformatted)d(te)o(xt\).)i(As)i(the)g(meaning) -d(of)i(tabs)h(is)g(unspeci\002ed)e(in)396 859 y(HTML,)h(tabs)g(are)h(e) -o(xpanded)c(to)k(spaces.)396 1039 y Fq(class)44 b(code)g(=)486 -1136 y(object)g(\(self\))576 1233 y(inherit)f(shared)576 -1427 y(method)g(to_html)h(store)g(ch)h(=)665 1525 y(let)g(data)f(=)g -(self)h(#)f(node)g(#)h(data)f(in)665 1622 y(\(*)h(convert)e(tabs)i(*\)) -665 1719 y(let)g(l)f(=)h(String.length)e(data)h(in)665 -1816 y(let)h(rec)f(preprocess)f(i)i(column)f(=)396 1913 -y(\(*)h(this)f(is)g(very)h(ineffective)e(but)h(comprehensive:)e(*\))396 -2010 y(if)j(i)f Fo(<)h Fq(l)g(then)486 2107 y(match)f(data.[i])f(with) -665 2205 y('\\t')h(-)p Fo(>)396 2302 y Fq(let)h(n)f(=)h(8)g(-)f -(\(column)g(mod)g(8\))h(in)396 2399 y(String.make)e(n)i(')g(')f(^)h -(preprocess)e(\(i+1\))h(\(column)g(+)g(n\))576 2496 y(|)g('\\n')g(-)p -Fo(>)396 2593 y Fq("\\n")g(^)h(preprocess)e(\(i+1\))h(0)576 -2690 y(|)g(c)h(-)p Fo(>)396 2787 y Fq(String.make)e(1)i(c)g(^)f -(preprocess)f(\(i+1\))h(\(column)g(+)h(1\))396 2884 y(else)486 -2982 y("")665 3079 y(in)665 3176 y(output_string)e(ch)h(")p -Fo(<)p Fq(p)p Fo(><)p Fq(pre)p Fo(>)p Fq(";)665 3273 -y(output_string)f(ch)h(\(escape_html)f(\(preprocess)g(0)i(0\)\);)665 -3370 y(output_string)e(ch)h(")p Fo(<)p Fq(/pre)p Fo(><)p -Fq(/p)p Fo(>)p Fq(";)486 3564 y(end)396 3662 y(;;)-2 -4114 y Fp(2.4.12.)36 b(Class)f Fc(a)396 4282 y Fv(Hyperlinks,)19 -b(e)o(xpressed)g(by)g(the)i Fq(a)f Fv(element)g(type,)f(are)h(con)m(v)o -(erted)e(to)i(the)g(HTML)g Fq(a)h Fv(type.)e(If)i(the)f(tar)o(get)f(of) -h(the)396 4390 y(hyperlink)e(is)j(gi)n(v)o(en)d(by)i -Fq(href)p Fv(,)g(the)g(URL)g(of)g(this)g(attrib)n(ute)g(can)g(be)g -(used)g(directly)-5 b(.)18 b(Alternati)n(v)o(ely)-5 b(,)18 -b(the)i(tar)o(get)f(can)h(be)396 4498 y(gi)n(v)o(en)f(by)h -Fq(readmeref)f Fv(in)i(which)e(case)i(the)f(".html")g(suf)n(\002x)f -(must)i(be)f(added)f(to)h(the)g(\002le)h(name.)396 4647 -y(Note)f(that)h(within)f Fq(a)g Fv(only)g(#PCD)m(A)-9 -b(T)h(A)20 b(is)h(allo)n(wed,)e(so)i(the)f(contents)f(can)h(be)g(con)m -(v)o(erted)e(directly)h(by)h(applying)396 4755 y Fq(escape_html)f -Fv(to)i(the)f(character)f(data)h(contents.)p Black 3800 -5278 a Fr(41)p Black eop -%%Page: 42 42 -42 41 bop Black 3136 67 a Fr(Chapter)20 b(2.)g(Using)g(PXP)p -Black 396 579 a Fq(class)44 b(a)h(=)486 676 y(object)f(\(self\))576 -773 y(inherit)f(shared)576 967 y(method)g(to_html)h(store)g(ch)h(=)665 -1065 y(output_string)e(ch)h(")p Fo(<)p Fq(a)h(";)665 -1162 y(let)g(href)f(=)396 1259 y(match)g(self)g(#)h(node)f(#)h -(attribute)e("href")h(with)576 1356 y(Value)g(v)g(-)p -Fo(>)h Fq(escape_html)e(v)486 1453 y(|)i(Valuelist)e(_)i(-)p -Fo(>)f Fq(assert)g(false)486 1550 y(|)h(Implied_value)d(-)p -Fo(>)665 1647 y Fq(begin)i(match)g(self)g(#)h(node)f(#)h(attribute)e -("readmeref")g(with)486 1745 y(Value)h(v)h(-)p Fo(>)f -Fq(escape_html)f(v)i(^)f(".html")396 1842 y(|)h(Valuelist)e(_)i(-)p -Fo(>)f Fq(assert)g(false)396 1939 y(|)h(Implied_value)e(-)p -Fo(>)576 2036 y Fq("")665 2133 y(end)665 2230 y(in)665 -2327 y(if)i(href)f Fo(<>)g Fq("")h(then)396 2424 y(output_string)e(ch)h -(\("href=\\"")88 b(^)45 b(href)f(^)h("\\""\);)665 2522 -y(output_string)e(ch)h(")p Fo(>)p Fq(";)665 2619 y(output_string)f(ch)h -(\(escape_html)f(\(self)h(#)h(node)f(#)h(data\)\);)665 -2716 y(output_string)e(ch)h(")p Fo(<)p Fq(/a)p Fo(>)p -Fq(";)486 2910 y(end)396 3007 y(;;)-2 3460 y Fp(2.4.13.)36 -b(Class)f Fc(footnote)396 3628 y Fv(The)20 b Fq(footnote)g -Fv(class)h(has)f(tw)o(o)h(methods:)e Fq(to_html)g Fv(to)i(con)m(v)o -(ert)d(the)i(footnote)f(reference)f(to)i(HTML,)g(and)396 -3736 y Fq(footnote_to_html)e Fv(to)j(con)m(v)o(ert)d(the)i(footnote)f -(te)o(xt)h(itself.)396 3885 y(The)g(footnote)f(reference)f(is)j(con)m -(v)o(erted)d(to)i(a)h(local)f(hyperlink;)e(more)h(precisely)-5 -b(,)19 b(to)h(tw)o(o)h(anchor)d(tags)j(which)e(are)396 -3993 y(connected)g(with)h(each)g(other)-5 b(.)19 b(The)h(te)o(xt)g -(anchor)f(points)h(to)g(the)g(footnote)f(anchor)m(,)f(and)h(the)i -(footnote)d(anchor)h(points)396 4101 y(to)i(the)f(te)o(xt)g(anchor)-5 -b(.)396 4250 y(The)20 b(footnote)f(must)h(be)g(allocated)f(in)i(the)f -Fq(store)g Fv(object.)f(By)i(allocating)e(the)h(footnote,)f(you)g(get)h -(the)g(number)f(of)396 4358 y(the)h(footnote,)f(and)g(the)i(te)o(xt)f -(of)f(the)i(footnote)d(is)j(stored)f(until)g(the)g(end)g(of)g(the)g -(HTML)g(page)f(is)j(reached)c(when)i(the)396 4466 y(footnotes)f(can)h -(be)g(printed.)f(The)h Fq(to_html)f Fv(method)g(stores)i(simply)e(the)i -(object)e(itself,)i(such)f(that)g(the)396 4574 y Fq(footnote_to_html)e -Fv(method)h(is)i(in)m(v)n(ok)o(ed)e(on)g(the)i(same)f(object)g(that)g -(encountered)d(the)k(footnote.)p Black 3800 5278 a Fr(42)p -Black eop -%%Page: 43 43 -43 42 bop Black 3136 67 a Fr(Chapter)20 b(2.)g(Using)g(PXP)p -Black 396 579 a Fv(The)g Fq(to_html)g Fv(only)f(allocates)h(the)h -(footnote,)d(and)h(prints)h(the)g(reference)f(anchor)m(,)f(b)n(ut)i(it) -h(does)f(not)g(print)g(nor)396 687 y(con)m(v)o(ert)e(the)j(contents)e -(of)h(the)g(note.)g(This)g(is)h(deferred)d(until)j(the)f(footnotes)e -(actually)i(get)g(printed,)f(i.e.)h(the)g(recursi)n(v)o(e)396 -795 y(call)h(of)f Fq(to_html)f Fv(on)h(the)g(sub)g(nodes)g(is)h(done)e -(by)h Fq(footnote_to_html)p Fv(.)396 944 y(Note)g(that)h(this)f -(technique)f(does)h(not)g(w)o(ork)f(if)i(you)e(mak)o(e)h(another)f -(footnote)f(within)i(a)h(footnote;)d(the)i(second)396 -1052 y(footnote)f(gets)h(allocated)g(b)n(ut)g(not)g(printed.)396 -1274 y Fq(class)44 b(footnote)g(=)486 1371 y(object)g(\(self\))576 -1468 y(inherit)f(shared)576 1662 y(val)h(mutable)g(footnote_number)e(=) -j(0)576 1857 y(method)e(to_html)h(store)g(ch)h(=)665 -1954 y(let)g(number)e(=)396 2051 y(store)h(#)h(alloc_footnote)d(\(self) -i(:)h(#shared)f(:)p Fo(>)g Fq(footnote_printer\))e(in)665 -2148 y(let)j(foot_anchor)e(=)396 2245 y("footnote")g(^)i(string_of_int) -e(number)h(in)665 2342 y(let)h(text_anchor)e(=)396 2439 -y("textnote")g(^)i(string_of_int)e(number)h(in)665 2537 -y(footnote_number)f Fo(<)p Fq(-)h(number;)665 2634 y(output_string)f -(ch)h(\()h(")p Fo(<)p Fq(a)f(name=\\"")g(^)g(text_anchor)f(^)i("\\")f -(href=\\"#")g(^)441 2731 y(foot_anchor)f(^)i("\\")p Fo(>)p -Fq([")e(^)i(string_of_int)e(number)h(^)441 2828 y("])p -Fo(<)p Fq(/a)p Fo(>)p Fq(")g(\))576 3022 y(method)f(footnote_to_html)g -(store)h(ch)g(=)665 3119 y(\(*)h(prerequisite:)d(we)j(are)f(in)h(a)f -(definition)g(list)g Fo(<)p Fq(dl)p Fo(>)p Fq(...)p Fo(<)p -Fq(/dl)p Fo(>)e Fq(*\))665 3217 y(let)j(foot_anchor)e(=)396 -3314 y("footnote")g(^)i(string_of_int)e(footnote_number)f(in)665 -3411 y(let)j(text_anchor)e(=)396 3508 y("textnote")g(^)i(string_of_int) -e(footnote_number)f(in)665 3605 y(output_string)h(ch)h(\(")p -Fo(<)p Fq(dt)p Fo(><)p Fq(a)g(name=\\"")f(^)i(foot_anchor)e(^)h("\\")h -(href=\\"#")e(^)396 3702 y(text_anchor)g(^)i("\\")p Fo(>)p -Fq([")f(^)g(string_of_int)f(footnote_number)f(^)396 3799 -y("])p Fo(<)p Fq(/a)p Fo(><)p Fq(/dt)p Fo(>)p Fq(\\n)p -Fo(<)p Fq(dd)p Fo(>)p Fq("\);)665 3896 y(List.iter)396 -3994 y(\(fun)i(n)h(-)p Fo(>)f Fq(n)h(#)g(extension)e(#)i(to_html)e -(store)h(ch\))396 4091 y(\(self)g(#)h(node)f(#)h(sub_nodes\);)665 -4188 y(output_string)e(ch)h(\("\\n)p Fo(<)p Fq(/dd)p -Fo(>)p Fq("\))486 4382 y(end)396 4479 y(;;)p Black 3800 -5278 a Fr(43)p Black eop -%%Page: 44 44 -44 43 bop Black 3136 67 a Fr(Chapter)20 b(2.)g(Using)g(PXP)p -Black -2 583 a Fp(2.4.14.)36 b(The)d(speci\002cation)j(of)e(the)f -(document)i(model)396 751 y Fv(This)21 b(code)e(sets)i(up)f(the)g(hash) -g(table)g(that)h(connects)e(element)h(types)g(with)g(the)g(e)o(x)o -(emplars)f(of)h(the)g(e)o(xtension)f(classes)396 859 -y(that)i(con)m(v)o(ert)d(the)i(elements)g(to)g(HTML.)396 -1039 y Fq(open)44 b(Pxp_yacc)396 1233 y(let)h(tag_map)e(=)486 -1330 y(make_spec_from_alist)576 1427 y(~data_exemplar:\(new)e -(data_impl)j(\(new)g(only_data\)\))576 1525 y -(~default_element_exemplar:\(new)39 b(element_impl)k(\(new)h -(no_markup\)\))576 1622 y(~element_alist:)665 1719 y([)h("readme",)e -(\(new)h(element_impl)f(\(new)h(readme\)\);)396 1816 -y("sect1",)89 b(\(new)44 b(element_impl)f(\(new)h(sect1\)\);)396 -1913 y("sect2",)89 b(\(new)44 b(element_impl)f(\(new)h(sect2\)\);)396 -2010 y("sect3",)89 b(\(new)44 b(element_impl)f(\(new)h(sect3\)\);)396 -2107 y("title",)89 b(\(new)44 b(element_impl)f(\(new)h(no_markup\)\);) -396 2205 y("p",)269 b(\(new)44 b(element_impl)f(\(new)h(p\)\);)396 -2302 y("br",)224 b(\(new)44 b(element_impl)f(\(new)h(br\)\);)396 -2399 y("code",)134 b(\(new)44 b(element_impl)f(\(new)h(code\)\);)396 -2496 y("em",)224 b(\(new)44 b(element_impl)f(\(new)h(em\)\);)396 -2593 y("ul",)224 b(\(new)44 b(element_impl)f(\(new)h(ul\)\);)396 -2690 y("li",)224 b(\(new)44 b(element_impl)f(\(new)h(li\)\);)396 -2787 y("footnote",)f(\(new)h(element_impl)f(\(new)h(footnote)g(:)h -(#shared)e(:)p Fo(>)i Fq(shared\)\);)396 2884 y("a",)269 -b(\(new)44 b(element_impl)f(\(new)h(a\)\);)665 2982 y(])576 -3079 y(\(\))396 3176 y(;;)-2 3678 y Fx(Notes)p Black -396 3857 a Fv(1.)p Black 70 w(Elements)20 b(may)g(also)g(contain)f -(processing)g(instructions.)g(Unlik)o(e)h(other)f(document)g(models,)g -(PXP)i(separates)529 3965 y(processing)e(instructions)g(from)g(the)i -(rest)f(of)g(the)g(te)o(xt)g(and)g(pro)o(vides)e(a)j(second)e(interf)o -(ace)h(to)g(access)h(them)529 4073 y(\(method)e Fq(pinstr)p -Fv(\).)g(Ho)n(we)n(v)o(er)m(,)f(there)h(is)j(a)e(parser)g(option)f(\()p -Fq(enable_pinstr_nodes)p Fv(\))e(which)i(changes)g(the)529 -4181 y(beha)n(viour)f(of)i(the)g(parser)g(such)g(that)g(e)o(xtra)g -(nodes)f(for)h(processing)e(instructions)i(are)g(included)e(into)i(the) -h(tree.)529 4320 y Fi(Furthermore,)e(the)g(tree)g(does)g(normally)h -(not)f(contain)h(nodes)g(for)e(XML)h(comments;)h(the)o(y)f(are)g -(ignored)h(by)f(def)o(ault.)g(Again,)529 4417 y(there)g(is)g(an)g -(option)h(\()p Fh(enable_comment_nodes)p Fi(\))25 b(changing)c(this.)p -Black 396 4566 a Fv(2.)p Black 70 w(Due)f(to)h(the)f(typing)f(system)h -(it)h(is)g(more)e(or)h(less)i(impossible)d(to)i(deri)n(v)o(e)d(recursi) -n(v)o(e)h(classes)i(in)g(O'Caml.)f(T)-7 b(o)20 b(get)529 -4674 y(around)e(this,)j(it)g(is)g(common)d(practice)i(to)g(put)g(the)g -(modi\002able)f(or)h(e)o(xtensible)f(part)h(of)g(recursi)n(v)o(e)f -(objects)h(into)529 4782 y(parallel)g(objects.)p Black -3800 5278 a Fr(44)p Black eop -%%Page: 45 45 -45 44 bop Black 3136 67 a Fr(Chapter)20 b(2.)g(Using)g(PXP)p -Black Black 396 579 a Fv(3.)p Black 70 w(The)g(problem)e(is)k(that)e -(the)g(subclass)h(is)g(usually)e(not)h(a)h(subtype)e(in)h(this)h(case)f -(because)g(O'Caml)g(has)h(a)529 687 y(contra)n(v)n(ariant)d(subtyping)g -(rule.)p Black 3800 5278 a Fr(45)p Black eop -%%Page: 46 46 -46 45 bop Black Black -2 621 a Fs(Chapter)48 b(3.)f(The)h(objects)g -(representing)g(the)-2 845 y(document)396 1093 y Fr(This)21 -b(description)e(might)h(be)g(out-of-date)o(.)e(See)i(the)g(module)f -(interface)h(\002les)g(for)h(updated)d(information.)-2 -1470 y Fx(3.1.)39 b(The)g Fb(document)44 b Fx(c)m(lass)396 -1722 y Fq(class)g([)h('ext)f(])h(document)e(:)486 1819 -y(Pxp_types.collect_warnings)d(->)486 1916 y(object)576 -2013 y(method)j(init_xml_version)g(:)h(string)g(->)h(unit)576 -2111 y(method)e(init_root)h(:)g('ext)h(node)f(->)g(unit)576 -2305 y(method)f(xml_version)g(:)i(string)576 2402 y(method)e -(xml_standalone)g(:)i(bool)576 2499 y(method)e(dtd)i(:)f(dtd)576 -2596 y(method)f(root)i(:)f('ext)g(node)576 2791 y(method)f(encoding)h -(:)h(Pxp_types.rep_encoding)576 2985 y(method)e(add_pinstr)h(:)g -(proc_instruction)e(->)j(unit)576 3082 y(method)e(pinstr)h(:)h(string)f -(->)g(proc_instruction)e(list)576 3179 y(method)h(pinstr_names)g(:)i -(string)f(list)576 3373 y(method)f(write)h(:)h(Pxp_types.output_stream) -c(->)k(Pxp_types.encoding)c(->)k(unit)486 3568 y(end)396 -3665 y(;;)396 3856 y Fv(The)20 b(methods)f(be)o(ginning)f(with)i -Fq(init_)g Fv(are)g(only)g(for)f(internal)h(use)g(of)g(the)g(parser)-5 -b(.)p Black 396 4088 a Ft(\225)p Black 60 w Fq(xml_version)p -Fv(:)19 b(returns)h(the)g(v)o(ersion)f(string)h(at)g(the)g(be)o -(ginning)e(of)i(the)g(document.)e(F)o(or)i(e)o(xample,)f("1.0")g(is)479 -4196 y(returned)g(if)h(the)g(document)f(be)o(gins)g(with)h -Fo(<)p Fq(?xml)44 b(version="1.0"?)p Fo(>)p Fv(.)p Black -396 4304 a Ft(\225)p Black 60 w Fq(xml_standalone)p Fv(:)19 -b(returns)g(the)h(boolean)f(v)n(alue)g(of)h Fq(standalone)f -Fv(declaration)g(in)h(the)h(XML)f(declaration.)e(If)479 -4412 y(the)i Fq(standalone)g Fv(attrib)n(ute)f(is)i(missing,)f -Fq(false)g Fv(is)h(returned.)p Black 396 4520 a Ft(\225)p -Black 60 w Fq(dtd)p Fv(:)g(returns)e(a)i(reference)d(to)i(the)h(global) -e(DTD)h(object.)p Black 396 4628 a Ft(\225)p Black 60 -w Fq(root)p Fv(:)g(returns)g(a)g(reference)f(to)h(the)g(root)g -(element.)p Black 396 4736 a Ft(\225)p Black 60 w Fq(encoding)p -Fv(:)g(returns)f(the)h(internal)g(encoding)e(of)i(the)g(document.)e -(This)i(means)g(that)g(all)h(strings)f(of)g(which)g(the)479 -4844 y(document)e(consists)j(are)f(encoded)f(in)h(this)h(character)e -(set.)p Black 3798 5278 a Fr(46)p Black eop -%%Page: 47 47 -47 46 bop Black 2225 67 a Fr(Chapter)20 b(3.)g(The)g(objects)g(r)m(epr) -m(esenting)g(the)g(document)p Black Black 396 579 a Ft(\225)p -Black 60 w Fq(pinstr)p Fv(:)g(returns)f(the)i(processing)d -(instructions)i(outside)f(the)h(DTD)h(and)e(outside)h(the)g(root)g -(element.)f(The)479 687 y(ar)o(gument)f(passed)i(to)h(the)f(method)f -(names)g(a)i Fr(tar)m(g)o(et)q Fv(,)g(and)e(the)h(method)f(returns)g -(all)i(instructions)e(with)i(this)g(tar)o(get.)479 795 -y(The)f(tar)o(get)f(is)j(the)e(\002rst)h(w)o(ord)e(inside)h -Fo(<)p Fq(?)h Fv(and)e Fq(?)p Fo(>)p Fv(.)p Black 396 -903 a Ft(\225)p Black 60 w Fq(pinstr_names)p Fv(:)g(returns)g(the)i -(names)e(of)h(the)h(processing)d(instructions)p Black -396 1011 a Ft(\225)p Black 60 w Fq(add_pinstr)p Fv(:)h(adds)h(another)f -(processing)g(instruction.)f(This)j(method)e(is)i(used)f(by)f(the)h -(parser)g(itself)h(to)f(enter)g(the)479 1119 y(instructions)f(returned) -g(by)h Fq(pinstr)p Fv(,)f(b)n(ut)h(you)g(can)g(also)g(enter)g -(additional)f(instructions.)p Black 396 1226 a Ft(\225)p -Black 60 w Fq(write)p Fv(:)h(writes)h(the)f(document)e(to)j(the)f -(passed)g(stream)g(as)h(XML)f(te)o(xt)g(using)g(the)g(passed)g(\(e)o -(xternal\))e(encoding.)479 1334 y(The)i(generated)f(te)o(xt)h(is)h(al)o -(w)o(ays)f(v)n(alid)g(XML)g(and)g(can)g(be)g(parsed)g(by)f(PXP;)i(ho)n -(we)n(v)o(er)m(,)d(the)i(te)o(xt)g(is)h(badly)479 1442 -y(formatted)e(\(this)h(is)h(not)f(a)h(pretty)e(printer\).)-2 -1861 y Fx(3.2.)39 b(The)g(c)m(lass)g(type)g Fb(node)396 -2041 y Fv(From)20 b Fq(Pxp_document)p Fv(:)396 2221 y -Fq(type)44 b(node_type)g(=)486 2318 y(T_data)396 2415 -y(|)h(T_element)e(of)i(string)396 2512 y(|)g(T_super_root)396 -2609 y(|)g(T_pinstr)e(of)i(string)396 2706 y(|)g(T_comment)396 -2804 y Fn(and)g(some)f(other,)g(reserved)f(types)396 -2901 y Fq(;;)396 3095 y(class)h(type)g([)h('ext)f(])h(node)f(=)486 -3192 y(object)g(\('self\))576 3289 y(constraint)f('ext)h(=)h('ext)f -(node)g(#extension)576 3484 y(\(*)g Fn(General)g(observers)f -Fq(*\))576 3678 y(method)g(extension)h(:)g('ext)576 3775 -y(method)f(dtd)i(:)f(dtd)576 3872 y(method)f(parent)h(:)h('ext)f(node) -576 3969 y(method)f(root)i(:)f('ext)g(node)576 4066 y(method)f -(sub_nodes)h(:)g('ext)h(node)f(list)576 4164 y(method)f(iter_nodes)h(:) -g(\('ext)g(node)g(-)p Fo(>)h Fq(unit\))f(-)p Fo(>)g Fq(unit)576 -4261 y(method)f(iter_nodes_sibl)g(:)889 4358 y(\('ext)h(node)h(option)e -(-)p Fo(>)i Fq('ext)f(node)g(-)p Fo(>)g Fq('ext)h(node)f(option)g(-)p -Fo(>)g Fq(unit\))g(-)396 4455 y Fo(>)h Fq(unit)576 4552 -y(method)e(node_type)h(:)g(node_type)576 4649 y(method)f(encoding)h(:)h -(Pxp_types.rep_encoding)576 4746 y(method)e(data)i(:)f(string)576 -4843 y(method)f(position)h(:)h(\(string)e(*)i(int)f(*)h(int\))p -Black 3797 5278 a Fr(47)p Black eop -%%Page: 48 48 -48 47 bop Black 2225 67 a Fr(Chapter)20 b(3.)g(The)g(objects)g(r)m(epr) -m(esenting)g(the)g(document)p Black 576 579 a Fq(method)43 -b(comment)h(:)h(string)f(option)576 676 y(method)f(pinstr)h(:)h(string) -f(-)p Fo(>)g Fq(proc_instruction)e(list)576 773 y(method)h -(pinstr_names)g(:)i(string)f(list)576 870 y(method)f(write)h(:)h -(Pxp_types.output_stream)c(->)k(Pxp_types.encoding)c(->)k(unit)576 -1065 y(\(*)f Fn(Attribute)f(observers)h Fq(*\))576 1259 -y(method)f(attribute)h(:)g(string)g(-)p Fo(>)h Fq(Pxp_types.att_value) -576 1356 y(method)e(required_string_attribute)e(:)k(string)f(-)p -Fo(>)g Fq(string)576 1453 y(method)f(optional_string_attribute)e(:)k -(string)f(-)p Fo(>)g Fq(string)g(option)576 1550 y(method)f -(required_list_attribute)e(:)k(string)f(-)p Fo(>)g Fq(string)g(list)576 -1647 y(method)f(optional_list_attribute)e(:)k(string)f(-)p -Fo(>)g Fq(string)g(list)576 1745 y(method)f(attribute_names)g(:)h -(string)g(list)576 1842 y(method)f(attribute_type)g(:)i(string)e(-)p -Fo(>)i Fq(Pxp_types.att_type)576 1939 y(method)e(attributes)h(:)g -(\(string)g(*)h(Pxp_types.att_value\))c(list)576 2036 -y(method)i(id_attribute_name)f(:)j(string)576 2133 y(method)e -(id_attribute_value)f(:)j(string)576 2230 y(method)e -(idref_attribute_names)f(:)i(string)576 2424 y(\(*)g -Fn(Modifying)f(methods)h Fq(*\))576 2619 y(method)f(add_node)h(:)h -(?force:bool)e(-)p Fo(>)h Fq('ext)g(node)g(-)p Fo(>)h -Fq(unit)576 2716 y(method)e(add_pinstr)h(:)g(proc_instruction)e(-)p -Fo(>)j Fq(unit)576 2813 y(method)e(delete)h(:)h(unit)576 -2910 y(method)e(set_nodes)h(:)g('ext)h(node)f(list)g(-)p -Fo(>)g Fq(unit)576 3007 y(method)f(quick_set_attributes)f(:)j(\(string) -e(*)i(Pxp_types.att_value\))c(list)j(-)p Fo(>)h Fq(unit)576 -3104 y(method)e(set_comment)g(:)i(string)f(option)g(-)p -Fo(>)g Fq(unit)576 3299 y(\(*)g Fn(Cloning)g(methods)f -Fq(*\))576 3493 y(method)g(orphaned_clone)g(:)i('self)576 -3590 y(method)e(orphaned_flat_clone)f(:)j('self)576 3687 -y(method)e(create_element)g(:)1024 3784 y(?position:\(string)f(*)j(int) -f(*)h(int\))f(-)p Fo(>)1024 3882 y Fq(dtd)g(-)p Fo(>)h -Fq(node_type)e(-)p Fo(>)h Fq(\(string)g(*)h(string\))e(list)h(-)p -Fo(>)1203 3979 y Fq('ext)g(node)576 4076 y(method)f(create_data)g(:)i -(dtd)f(-)p Fo(>)h Fq(string)f(-)p Fo(>)g Fq('ext)g(node)576 -4173 y(method)f(keep_always_whitespace_mode)e(:)j(unit)576 -4367 y(\(*)g Fn(Validating)f(methods)h Fq(*\))576 4561 -y(method)f(local_validate)g(:)i(?use_dfa:bool)d(->)j(unit)f(->)g(unit) -576 4756 y(\(*)g(...)g(Internal)g(methods)g(are)g(undocumented.)f(*\))p -Black 3800 5278 a Fr(48)p Black eop -%%Page: 49 49 -49 48 bop Black 2225 67 a Fr(Chapter)20 b(3.)g(The)g(objects)g(r)m(epr) -m(esenting)g(the)g(document)p Black 486 579 a Fq(end)396 -676 y(;;)396 867 y Fv(In)g(the)g(module)f Fq(Pxp_types)g -Fv(you)h(can)g(\002nd)g(another)e(type)i(de\002nition)f(that)h(is)i -(important)c(in)j(this)f(conte)o(xt:)396 1047 y Fq(type)44 -b(Pxp_types.att_value)e(=)576 1144 y(Value)223 b(of)44 -b(string)486 1241 y(|)h(Valuelist)e(of)h(string)g(list)486 -1339 y(|)h(Implied_value)396 1436 y(;;)-2 1847 y Fp(3.2.1.)35 -b(The)f(structure)f(of)g(document)i(trees)396 2015 y -Fv(A)21 b(node)e(represents)g(either)h(an)g(element)g(or)g(a)g -(character)f(data)h(section.)g(There)g(are)g(tw)o(o)g(classes)h -(implementing)d(the)396 2122 y(tw)o(o)j(aspects)f(of)g(nodes:)g -Fq(element_impl)e Fv(and)i Fq(data_impl)p Fv(.)f(The)h(latter)g(class)h -(does)f(not)g(implement)f(all)i(methods)396 2230 y(because)f(some)g -(methods)f(do)h(not)g(mak)o(e)f(sense)i(for)e(data)h(nodes.)396 -2380 y(\(Note:)g(PXP)h(also)g(supports)e(a)h(mode)g(which)f(forces)h -(that)g(processing)f(instructions)g(and)h(comments)f(are)396 -2488 y(represented)g(as)i(nodes)e(of)h(the)g(document)e(tree.)i(Ho)n -(we)n(v)o(er)m(,)e(these)j(nodes)e(are)h(instances)g(of)g -Fq(element_impl)f Fv(with)396 2596 y(node)g(types)h Fq(T_pinstr)g -Fv(and)f Fq(T_comment)p Fv(,)g(respecti)n(v)o(ely)-5 -b(.)18 b(This)j(mode)e(must)h(be)g(e)o(xplicitly)g(con\002gured;)d(the) -k(basic)396 2704 y(representation)d(kno)n(ws)i(only)f(element)h(and)f -(data)h(nodes.\))396 2853 y(The)g(follo)n(wing)f(\002gure)g(\()p -Fr(A)h(tr)m(ee)h(with)g(element)f(nodes,)f(data)g(nodes,)h(and)f -(attrib)n(utes)p Fv(\))h(sho)n(ws)g(an)g(e)o(xample)f(ho)n(w)h(a)396 -2961 y(tree)g(is)i(constructed)c(from)h(element)h(and)f(data)i(nodes.)e -(The)h(circular)f(areas)h(represent)f(element)h(nodes)f(whereas)h(the) -396 3069 y(o)o(v)n(als)f(denote)f(data)i(nodes.)e(Only)h(elements)g -(may)g(ha)n(v)o(e)g(subnodes;)f(data)h(nodes)g(are)g(al)o(w)o(ays)h -(lea)n(v)o(es)f(of)h(the)f(tree.)g(The)396 3177 y(subnodes)g(of)h(an)g -(element)g(can)g(be)g(either)g(element)f(or)h(data)g(nodes;)g(in)g -(both)f(cases)i(the)g(O'Caml)f(objects)g(storing)f(the)396 -3285 y(nodes)h(ha)n(v)o(e)f(the)i(class)g(type)e Fq(node)p -Fv(.)396 3434 y(Attrib)n(utes)h(\(the)g(clouds)g(in)g(the)g(picture\))f -(are)h(not)g(directly)g(inte)o(grated)e(into)i(the)g(tree;)h(there)e -(is)i(al)o(w)o(ays)g(an)f(e)o(xtra)g(link)396 3542 y(to)h(the)f(attrib) -n(ute)g(list.)h(This)f(is)h(also)g(true)f(for)f(processing)g -(instructions)g(\(not)h(sho)n(wn)f(in)h(the)h(picture\).)d(This)j -(means)396 3650 y(that)g(there)e(are)h(separated)g(access)g(methods)g -(for)f(attrib)n(utes)h(and)g(processing)f(instructions.)p -Black 3800 5278 a Fr(49)p Black eop -%%Page: 50 50 -50 49 bop Black 2225 67 a Fr(Chapter)20 b(3.)g(The)g(objects)g(r)m(epr) -m(esenting)g(the)g(document)p Black 396 579 a Fu(Figur)o(e)g(3-1.)f(A)i -(tr)o(ee)e(with)i(element)f(nodes,)h(data)e(nodes,)i(and)f(attrib)n -(utes)396 2578 y - currentpoint currentpoint translate 1 1 scale neg exch neg exch translate - 396 2578 a @beginspecial 0 @llx 0 @lly -329 @urx 218 @ury 3290 @rwi @setspecial -%%BeginDocument: pic/node_term.ps -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: src/pic/node_term.fig -%%Creator: fig2dev Version 3.2 Patchlevel 1 -%%CreationDate: Sun Aug 27 02:05:42 2000 -%%For: gerd@ice (Gerd Stolpmann) -%%Orientation: Portrait -%%BoundingBox: 0 0 329 218 -%%Pages: 0 -%%BeginSetup -%%EndSetup -%%Magnification: 0.8000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save --1.0 251.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def -/reencdict 12 dict def /ReEncode { reencdict begin -/newcodesandnames exch def /newfontname exch def /basefontname exch def -/basefontdict basefontname findfont def /newfont basefontdict maxlength dict def -basefontdict { exch dup /FID ne { dup /Encoding eq -{ exch dup length array copy newfont 3 1 roll put } -{ exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall -newfont /FontName newfontname put newcodesandnames aload pop -128 1 255 { newfont /Encoding get exch /.notdef put } for -newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat -newfontname newfont definefont pop end } def -/isovec [ -8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde -8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis -8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron -8#220 /dotlessi 8#230 /oe 8#231 /OE -8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling -8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis -8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot -8#255 /endash 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus -8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph -8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine -8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf -8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute -8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring -8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute -8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute -8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve -8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply -8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex -8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave -8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring -8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute -8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute -8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve -8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide -8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex -8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def -/Helvetica-Bold /Helvetica-Bold-iso isovec ReEncode -/Helvetica /Helvetica-iso isovec ReEncode -/Helvetica-Oblique /Helvetica-Oblique-iso isovec ReEncode - /DrawEllipse { - /endangle exch def - /startangle exch def - /yrad exch def - /xrad exch def - /y exch def - /x exch def - /savematrix mtrx currentmatrix def - x y tr xrad yrad sc 0 0 1 startangle endangle arc - closepath - savematrix setmatrix - } def - -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def -%%EndProlog - -$F2psBegin -10 setmiterlimit -n -1000 5962 m -1000 -1000 l 7537 -1000 l 7537 5962 l cp clip - 0.05039 0.05039 sc -% Polyline -7.500 slw -n 1770 2700 m 1665 2700 1665 3045 105 arcto 4 {pop} repeat - 1665 3150 2730 3150 105 arcto 4 {pop} repeat - 2835 3150 2835 2805 105 arcto 4 {pop} repeat - 2835 2700 1770 2700 105 arcto 4 {pop} repeat - cp gs col7 0.75 shd ef gr gs col0 s gr -% Ellipse -n 2250 1125 225 225 0 360 DrawEllipse gs col7 0.75 shd ef gr gs col0 s gr - -% Ellipse -n 1575 2025 225 225 0 360 DrawEllipse gs col7 0.75 shd ef gr gs col0 s gr - -% Ellipse -n 2925 2025 225 225 0 360 DrawEllipse gs col7 0.75 shd ef gr gs col0 s gr - -% Ellipse -n 900 2925 242 242 0 360 DrawEllipse gs col7 0.75 shd ef gr gs col0 s gr - -% Polyline -n 420 3825 m 315 3825 315 4170 105 arcto 4 {pop} repeat - 315 4275 1380 4275 105 arcto 4 {pop} repeat - 1485 4275 1485 3930 105 arcto 4 {pop} repeat - 1485 3825 420 3825 105 arcto 4 {pop} repeat - cp gs col7 0.75 shd ef gr gs col0 s gr -% Polyline -n 2085 1275 m 1582 1807 l gs col0 s gr -% Polyline -n 2407 1297 m 2940 1800 l gs col0 s gr -% Polyline -n 1417 2190 m 900 2692 l gs col0 s gr -% Polyline -n 1740 2190 m 2257 2700 l gs col0 s gr -% Polyline -n 892 3180 m 892 3825 l gs col0 s gr -% Polyline -n 45 675 m 6525 675 l 6525 4950 l 45 4950 l cp gs col0 s gr -% Polyline -n 2250 3600 m 2263 3597 l 2277 3594 l 2293 3592 l 2309 3589 l 2326 3586 l - 2344 3583 l 2362 3580 l 2381 3578 l 2399 3575 l 2418 3572 l - 2436 3569 l 2454 3566 l 2471 3563 l 2488 3561 l 2504 3558 l - 2520 3555 l 2537 3552 l 2555 3548 l 2571 3545 l 2588 3541 l - 2604 3537 l 2621 3533 l 2637 3528 l 2653 3524 l 2669 3520 l - 2684 3517 l 2700 3514 l 2715 3512 l 2730 3510 l 2745 3510 l - 2762 3511 l 2777 3512 l 2793 3514 l 2807 3517 l 2821 3520 l - 2835 3524 l 2849 3528 l 2863 3532 l 2877 3537 l 2893 3542 l - 2908 3548 l 2925 3555 l 2938 3561 l 2951 3568 l 2965 3575 l - 2978 3584 l 2992 3593 l 3007 3602 l 3021 3612 l 3035 3623 l - 3050 3633 l 3064 3643 l 3079 3652 l 3093 3661 l 3108 3670 l - 3122 3677 l 3136 3684 l 3150 3690 l 3166 3696 l 3182 3701 l - 3198 3706 l 3214 3710 l 3230 3713 l 3246 3716 l 3263 3719 l - 3279 3721 l 3295 3724 l 3311 3726 l 3327 3729 l 3343 3731 l - 3359 3733 l 3375 3735 l 3391 3736 l 3407 3737 l 3423 3738 l - 3439 3738 l 3455 3738 l 3471 3738 l 3488 3737 l 3504 3737 l - 3520 3736 l 3536 3736 l 3552 3735 l 3568 3735 l 3584 3735 l - 3600 3735 l 3616 3735 l 3632 3735 l 3648 3734 l 3663 3734 l - 3678 3733 l 3693 3732 l 3708 3731 l 3723 3730 l 3739 3729 l - 3755 3729 l 3771 3729 l 3788 3730 l 3806 3732 l 3825 3735 l - 3840 3738 l 3856 3741 l 3874 3745 l 3892 3749 l 3911 3753 l - 3931 3757 l 3951 3762 l 3972 3767 l 3993 3772 l 4014 3777 l - 4034 3782 l 4054 3787 l 4072 3793 l 4089 3799 l 4105 3805 l - 4119 3811 l 4130 3818 l 4140 3825 l 4150 3835 l 4157 3846 l - 4161 3858 l 4163 3870 l 4164 3883 l 4163 3897 l 4161 3911 l - 4159 3925 l 4156 3939 l 4154 3952 l 4151 3966 l 4148 3979 l - 4144 3992 l 4140 4005 l 4135 4018 l 4128 4031 l 4121 4045 l - 4112 4058 l 4104 4073 l 4095 4087 l 4085 4101 l 4075 4116 l - 4065 4129 l 4055 4143 l 4043 4155 l 4032 4166 l 4019 4176 l - 4005 4185 l 3992 4192 l 3978 4197 l 3963 4202 l 3947 4206 l - 3930 4210 l 3913 4213 l 3896 4216 l 3878 4218 l 3861 4220 l - 3843 4222 l 3825 4224 l 3807 4226 l 3789 4228 l 3771 4229 l - 3753 4230 l 3735 4230 l 3717 4230 l 3698 4228 l 3678 4226 l - 3659 4224 l 3639 4220 l 3619 4216 l 3598 4212 l 3578 4208 l - 3557 4203 l 3536 4199 l 3516 4195 l 3496 4191 l 3477 4189 l - 3457 4187 l 3438 4185 l 3420 4185 l 3402 4185 l 3384 4186 l - 3367 4188 l 3350 4190 l 3333 4193 l 3317 4196 l 3301 4200 l - 3285 4203 l 3269 4207 l 3253 4211 l 3237 4214 l 3220 4218 l - 3203 4221 l 3186 4224 l 3168 4227 l 3150 4230 l 3132 4233 l - 3113 4236 l 3094 4239 l 3074 4242 l 3055 4246 l 3035 4249 l - 3015 4253 l 2995 4257 l 2974 4260 l 2954 4264 l 2934 4267 l - 2914 4270 l 2894 4272 l 2874 4274 l 2855 4275 l 2835 4275 l - 2815 4275 l 2795 4274 l 2775 4272 l 2755 4270 l 2734 4268 l - 2713 4265 l 2692 4262 l 2671 4259 l 2650 4256 l 2630 4252 l - 2609 4249 l 2590 4245 l 2571 4242 l 2553 4238 l 2536 4234 l - 2520 4230 l 2503 4225 l 2487 4219 l 2473 4213 l 2460 4207 l - 2448 4200 l 2437 4192 l 2426 4185 l 2415 4178 l 2404 4170 l - 2393 4163 l 2380 4157 l 2368 4151 l 2354 4145 l 2340 4140 l - 2325 4135 l 2310 4131 l 2294 4128 l 2277 4125 l 2260 4122 l - 2243 4120 l 2225 4118 l 2208 4115 l 2191 4113 l 2174 4110 l - 2158 4107 l 2143 4104 l 2128 4100 l 2115 4095 l 2101 4089 l - 2087 4083 l 2074 4076 l 2061 4070 l 2049 4063 l 2037 4056 l - 2025 4049 l 2014 4042 l 2004 4034 l 1995 4025 l 1987 4016 l - 1980 4005 l 1975 3993 l 1972 3980 l 1971 3965 l 1970 3949 l - 1971 3932 l 1972 3915 l 1973 3898 l 1974 3881 l 1976 3865 l - 1977 3850 l 1978 3837 l 1980 3825 l 1983 3812 l 1986 3801 l - 1990 3792 l 1994 3784 l 1998 3776 l 2003 3768 l 2008 3761 l - 2013 3752 l 2019 3744 l 2025 3735 l 2032 3726 l 2040 3717 l - 2048 3707 l 2057 3698 l 2066 3688 l 2075 3678 l 2084 3669 l - 2094 3660 l 2104 3652 l 2115 3645 l 2127 3639 l 2138 3633 l - 2150 3628 l 2162 3624 l 2174 3620 l 2186 3617 l 2200 3613 l - 2214 3609 l 2231 3604 l cp gs col0 s gr -% Polyline -n 3645 1080 m 3660 1077 l 3677 1074 l 3694 1071 l 3713 1068 l 3733 1065 l - 3754 1063 l 3775 1060 l 3798 1058 l 3820 1056 l 3843 1053 l - 3866 1051 l 3889 1049 l 3912 1047 l 3934 1045 l 3955 1043 l - 3976 1041 l 3996 1039 l 4015 1038 l 4033 1036 l 4050 1035 l - 4071 1034 l 4090 1033 l 4109 1032 l 4127 1032 l 4144 1031 l - 4161 1031 l 4177 1031 l 4193 1031 l 4209 1031 l 4225 1031 l - 4241 1031 l 4257 1032 l 4273 1032 l 4289 1033 l 4304 1034 l - 4320 1035 l 4337 1037 l 4354 1039 l 4371 1041 l 4387 1044 l - 4403 1047 l 4419 1050 l 4435 1053 l 4450 1057 l 4466 1060 l - 4481 1063 l 4497 1067 l 4513 1071 l 4529 1075 l 4545 1080 l - 4561 1085 l 4577 1091 l 4592 1097 l 4607 1103 l 4622 1110 l - 4637 1118 l 4651 1125 l 4666 1132 l 4681 1140 l 4697 1147 l - 4713 1153 l 4731 1159 l 4750 1165 l 4770 1170 l 4787 1174 l - 4804 1177 l 4823 1180 l 4842 1182 l 4863 1184 l 4884 1186 l - 4906 1188 l 4928 1189 l 4950 1190 l 4972 1192 l 4994 1193 l - 5016 1195 l 5037 1197 l 5058 1200 l 5077 1203 l 5096 1206 l - 5113 1210 l 5130 1215 l 5148 1221 l 5165 1228 l 5181 1235 l - 5197 1242 l 5212 1250 l 5228 1259 l 5243 1267 l 5257 1276 l - 5272 1285 l 5286 1294 l 5299 1303 l 5312 1312 l 5324 1322 l - 5336 1331 l 5346 1340 l 5355 1350 l 5365 1363 l 5373 1378 l - 5380 1392 l 5386 1408 l 5390 1424 l 5394 1440 l 5398 1456 l - 5401 1472 l 5402 1488 l 5403 1502 l 5403 1517 l 5400 1530 l - 5395 1543 l 5389 1555 l 5381 1568 l 5372 1580 l 5363 1592 l - 5354 1604 l 5343 1616 l 5331 1627 l 5318 1638 l 5303 1648 l - 5286 1657 l 5265 1665 l 5251 1669 l 5235 1673 l 5219 1677 l - 5201 1680 l 5182 1683 l 5162 1685 l 5141 1688 l 5119 1690 l - 5097 1692 l 5075 1694 l 5053 1696 l 5030 1697 l 5008 1699 l - 4986 1701 l 4964 1703 l 4943 1704 l 4921 1706 l 4901 1707 l - 4880 1709 l 4860 1710 l 4840 1711 l 4819 1712 l 4799 1713 l - 4779 1713 l 4758 1713 l 4738 1714 l 4717 1714 l 4697 1714 l - 4676 1714 l 4655 1714 l 4635 1714 l 4614 1714 l 4594 1714 l - 4573 1714 l 4553 1713 l 4533 1713 l 4513 1713 l 4494 1712 l - 4474 1711 l 4455 1710 l 4434 1709 l 4413 1707 l 4392 1705 l - 4372 1703 l 4351 1701 l 4331 1698 l 4311 1695 l 4291 1692 l - 4271 1690 l 4251 1687 l 4231 1684 l 4211 1681 l 4191 1678 l - 4172 1675 l 4152 1673 l 4133 1670 l 4114 1668 l 4095 1665 l - 4074 1662 l 4053 1659 l 4033 1657 l 4012 1654 l 3992 1651 l - 3972 1648 l 3951 1645 l 3931 1643 l 3911 1640 l 3891 1637 l - 3872 1634 l 3852 1631 l 3833 1628 l 3815 1626 l 3797 1623 l - 3780 1620 l 3761 1617 l 3743 1614 l 3725 1611 l 3708 1608 l - 3692 1605 l 3675 1602 l 3659 1600 l 3643 1597 l 3627 1594 l - 3612 1591 l 3597 1587 l 3582 1584 l 3568 1580 l 3555 1575 l - 3541 1569 l 3527 1563 l 3514 1556 l 3501 1550 l 3489 1543 l - 3477 1536 l 3465 1529 l 3454 1522 l 3444 1514 l 3435 1505 l - 3427 1496 l 3420 1485 l 3415 1473 l 3412 1460 l 3411 1445 l - 3410 1430 l 3411 1414 l 3412 1397 l 3413 1380 l 3414 1364 l - 3416 1348 l 3417 1333 l 3418 1318 l 3420 1305 l 3423 1290 l - 3425 1275 l 3428 1261 l 3431 1247 l 3434 1233 l 3437 1220 l - 3442 1207 l 3447 1194 l 3455 1182 l 3465 1170 l 3474 1162 l - 3483 1155 l 3493 1148 l 3504 1141 l 3515 1134 l 3526 1127 l - 3538 1121 l 3550 1114 l 3563 1108 l 3577 1102 l 3591 1096 l - 3607 1090 l 3625 1085 l cp gs col0 s gr -% Polyline -n 2475 1215 m 2477 1217 l 2482 1221 l 2491 1229 l 2503 1239 l 2517 1252 l - 2534 1267 l 2552 1282 l 2570 1296 l 2588 1310 l 2605 1322 l - 2621 1332 l 2638 1342 l 2655 1350 l 2669 1356 l 2684 1362 l - 2700 1368 l 2717 1374 l 2734 1380 l 2752 1386 l 2770 1392 l - 2789 1398 l 2808 1403 l 2827 1409 l 2846 1415 l 2865 1420 l - 2884 1425 l 2902 1429 l 2920 1433 l 2937 1436 l 2954 1438 l - 2970 1440 l 2988 1441 l 3006 1441 l 3024 1440 l 3041 1439 l - 3059 1437 l 3076 1434 l 3094 1431 l 3111 1428 l 3129 1425 l - 3146 1421 l 3162 1417 l 3179 1414 l 3195 1409 l 3211 1405 l - 3226 1400 l 3240 1395 l 3256 1388 l 3271 1380 l 3287 1370 l - 3304 1358 l 3322 1344 l 3340 1329 l 3359 1314 l 3376 1299 l - 3391 1286 l 3404 1275 l 3412 1267 l 3418 1262 l 3420 1260 l gs col0 s gr -% Polyline -n 1125 3060 m 1126 3063 l 1127 3068 l 1129 3078 l 1132 3093 l 1136 3112 l - 1141 3135 l 1146 3162 l 1153 3190 l 1159 3219 l 1166 3248 l - 1173 3275 l 1180 3301 l 1187 3324 l 1193 3345 l 1200 3364 l - 1207 3381 l 1215 3397 l 1224 3414 l 1234 3429 l 1245 3444 l - 1256 3459 l 1267 3473 l 1279 3486 l 1291 3499 l 1304 3512 l - 1316 3525 l 1329 3537 l 1342 3550 l 1355 3562 l 1368 3574 l - 1382 3585 l 1396 3596 l 1410 3607 l 1425 3617 l 1441 3626 l - 1457 3635 l 1473 3644 l 1490 3653 l 1507 3661 l 1524 3669 l - 1542 3677 l 1559 3685 l 1577 3692 l 1595 3700 l 1613 3706 l - 1631 3713 l 1649 3718 l 1668 3723 l 1687 3727 l 1704 3730 l - 1723 3732 l 1743 3733 l 1764 3734 l 1788 3734 l 1814 3733 l - 1841 3732 l 1869 3731 l 1898 3729 l 1926 3727 l 1952 3725 l - 1975 3724 l 1993 3722 l 2008 3721 l 2017 3721 l 2022 3720 l - 2025 3720 l gs col0 s gr -/Helvetica-iso ff 180.00 scf sf -3600 1260 m -gs 1 -1 sc (attributes:) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -3600 1485 m -gs 1 -1 sc ("att" -> Value "apple") col0 sh gr -/Helvetica-iso ff 180.00 scf sf -2250 3780 m -gs 1 -1 sc (attributes:) col0 sh gr -/Helvetica-Oblique-iso ff 180.00 scf sf -390 4725 m -gs 1 -1 sc (An orangeCherries) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -2250 4005 m -gs 1 -1 sc ("att" -> Value "orange") col0 sh gr -/Helvetica-Bold-iso ff 180.00 scf sf -1815 3015 m -gs 1 -1 sc ("Cherries") col0 sh gr -/Helvetica-Bold-iso ff 180.00 scf sf -375 4125 m -gs 1 -1 sc ("An orange") col0 sh gr -/Helvetica-Bold-iso ff 180.00 scf sf -750 2985 m -gs 1 -1 sc () col0 sh gr -/Helvetica-Bold-iso ff 180.00 scf sf -1410 2085 m -gs 1 -1 sc () col0 sh gr -/Helvetica-Bold-iso ff 180.00 scf sf -2790 2070 m -gs 1 -1 sc () col0 sh gr -/Helvetica-Bold-iso ff 180.00 scf sf -2100 1200 m -gs 1 -1 sc () col0 sh gr -$F2psEnd -rs - -%%EndDocument - @endspecial 396 2578 a - currentpoint currentpoint translate 1 1 div 1 1 div scale neg exch -neg exch translate - 396 2578 a 357 x Fv(Only)g(elements,)g(data)g -(sections,)g(attrib)n(utes)g(and)g(processing)e(instructions)i(\(and)f -(comments,)g(if)h(con\002gured\))e(can,)396 3043 y(directly)i(or)g -(indirectly)-5 b(,)18 b(occur)h(in)h(the)h(document)d(tree.)i(It)g(is)h -(impossible)f(to)g(add)g(entity)g(references)f(to)h(the)g(tree;)g(if) -396 3151 y(the)g(parser)g(\002nds)g(such)g(a)h(reference,)d(not)i(the)g -(reference)f(as)i(such)f(b)n(ut)g(the)g(referenced)e(te)o(xt)i(\(i.e.)g -(the)g(tree)396 3259 y(representing)e(the)j(structured)d(te)o(xt\))i -(is)h(included)e(in)h(the)g(tree.)396 3409 y(Note)g(that)h(the)f -(parser)f(collapses)i(as)g(much)e(data)h(material)g(into)g(one)f(data)h -(node)f(as)i(possible)f(such)g(that)g(there)g(are)396 -3517 y(normally)f(ne)n(v)o(er)g(tw)o(o)h(adjacent)f(data)i(nodes.)e -(This)h(in)m(v)n(ariant)f(is)i(enforced)d(e)n(v)o(en)h(if)i(data)f -(material)f(is)j(included)c(by)396 3625 y(entity)i(references)f(or)h -(CD)m(A)-9 b(T)h(A)20 b(sections,)g(or)g(if)h(a)f(data)g(sequence)f(is) -j(interrupted)c(by)h(comments.)g(So)i Fq(a)44 b(&)g(b)396 -3732 y Fo(<)p Fq(-)h(comment)e(-)p Fo(>)i Fq(c)f Fo(<)p -Fq(![CDATA[)g Fo(<>)g Fq(d]])p Fo(>)20 b Fv(is)h(represented)d(by)i -(only)g(one)f(data)h(node,)f(for)h(instance.)396 3840 -y(Ho)n(we)n(v)o(er)m(,)e(you)i(can)g(create)g(document)e(trees)i -(manually)f(which)h(break)f(this)i(in)m(v)n(ariant;)d(it)j(is)g(only)f -(the)g(w)o(ay)g(the)396 3948 y(parser)g(forms)f(the)h(tree.)p -Black 3800 5278 a Fr(50)p Black eop -%%Page: 51 51 -51 50 bop Black 2225 67 a Fr(Chapter)20 b(3.)g(The)g(objects)g(r)m(epr) -m(esenting)g(the)g(document)p Black 396 579 a Fu(Figur)o(e)g(3-2.)f -(Nodes)h(ar)o(e)g(doubly)g(link)o(ed)i(tr)o(ees)396 1537 -y - currentpoint currentpoint translate 1 1 scale neg exch neg exch translate - 396 1537 a @beginspecial 0 @llx 0 @lly 138 @urx 93 -@ury 1380 @rwi @setspecial -%%BeginDocument: pic/node_general.ps -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: src/pic/node_general.fig -%%Creator: fig2dev Version 3.2 Patchlevel 1 -%%CreationDate: Sun Aug 27 02:05:42 2000 -%%For: gerd@ice (Gerd Stolpmann) -%%Orientation: Portrait -%%BoundingBox: 0 0 138 93 -%%Pages: 0 -%%BeginSetup -%%EndSetup -%%Magnification: 0.8000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save --22.0 126.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def - /DrawEllipse { - /endangle exch def - /startangle exch def - /yrad exch def - /xrad exch def - /y exch def - /x exch def - /savematrix mtrx currentmatrix def - x y tr xrad yrad sc 0 0 1 startangle endangle arc - closepath - savematrix setmatrix - } def - -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def -%%EndProlog - -$F2psBegin -10 setmiterlimit -n -1000 3487 m -1000 -1000 l 4162 -1000 l 4162 3487 l cp clip - 0.05039 0.05039 sc -7.500 slw -% Ellipse -n 2025 2025 229 229 0 360 DrawEllipse gs col7 0.75 shd ef gr gs col0 s gr - -% Ellipse -n 1350 2025 225 225 0 360 DrawEllipse gs col7 0.75 shd ef gr gs col0 s gr - -% Ellipse -n 2700 2025 225 225 0 360 DrawEllipse gs col7 0.75 shd ef gr gs col0 s gr - -% Ellipse -n 2025 1125 225 225 0 360 DrawEllipse gs col7 0.75 shd ef gr gs col0 s gr - -% Polyline -gs clippath -1743 1345 m 1845 1275 l 1788 1385 l 1877 1284 l 1832 1244 l cp -clip -n 1380 1800 m 1845 1275 l gs col7 0.75 shd ef gr gs col0 s gr gr - -% arrowhead -n 1743 1345 m 1845 1275 l 1788 1385 l 1765 1365 l 1743 1345 l cp gs col7 1.00 shd ef gr col0 s -% Polyline -gs clippath -1384 1745 m 1282 1815 l 1339 1705 l 1250 1807 l 1295 1846 l cp -clip -n 1815 1207 m 1282 1815 l gs col7 0.75 shd ef gr gs col0 s gr gr - -% arrowhead -n 1384 1745 m 1282 1815 l 1339 1705 l 1361 1725 l 1384 1745 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -2025 1470 m 2055 1350 l 2085 1470 l 2085 1335 l 2025 1335 l cp -clip -n 2055 1792 m 2055 1350 l gs col7 0.75 shd ef gr gs col0 s gr gr - -% arrowhead -n 2025 1470 m 2055 1350 l 2085 1470 l 2055 1470 l 2025 1470 l cp gs col7 1.00 shd ef gr col0 s -% Polyline -gs clippath -2010 1687 m 1980 1807 l 1950 1687 l 1950 1822 l 2010 1822 l cp -clip -n 1980 1350 m 1980 1807 l gs col7 0.75 shd ef gr gs col0 s gr gr - -% arrowhead -n 2010 1687 m 1980 1807 l 1950 1687 l 1980 1687 l 2010 1687 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -2511 1750 m 2550 1867 l 2461 1782 l 2533 1896 l 2583 1864 l cp -clip -n 2190 1297 m 2550 1867 l gs col7 0.75 shd ef gr gs col0 s gr gr - -% arrowhead -n 2511 1750 m 2550 1867 l 2461 1782 l 2486 1766 l 2511 1750 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -2262 1353 m 2220 1237 l 2312 1320 l 2237 1208 l 2187 1241 l cp -clip -n 2602 1807 m 2220 1237 l gs col7 0.75 shd ef gr gs col0 s gr gr - -% arrowhead -n 2262 1353 m 2220 1237 l 2312 1320 l 2287 1337 l 2262 1353 l cp gs col7 1.00 shd ef gr col0 s -% Polyline -n 450 675 m 3150 675 l 3150 2475 l 450 2475 l cp gs col0 s gr -/Courier ff 150.00 scf sf -2377 1342 m -gs 1 -1 sc (parent) col0 sh gr -/Courier ff 150.00 scf sf -645 1628 m -gs 1 -1 sc (sub_nodes) col0 sh gr -$F2psEnd -rs - -%%EndDocument - @endspecial 396 1537 a - currentpoint currentpoint translate 1 1 div 1 1 div scale neg exch -neg exch translate - 396 1537 a 357 x Fv(The)e(node)f(tree)h(has)h -(links)f(in)g(both)g(directions:)f(Ev)o(ery)g(node)g(has)h(a)h(link)f -(to)g(its)i(parent)d(\(if)h(an)o(y\),)f(and)g(it)i(has)g(links)f(to)396 -2002 y(the)g(subnodes)f(\(see)i(\002gure)e Fr(Nodes)h(ar)m(e)h(doubly)d -(link)o(ed)i(tr)m(ees)p Fv(\).)h(Ob)o(viously)-5 b(,)18 -b(this)i(doubly-link)o(ed)d(structure)396 2110 y(simpli\002es)k(the)f -(na)n(vigation)e(in)j(the)f(tree;)g(b)n(ut)g(has)h(also)f(some)g -(consequences)f(for)g(the)h(possible)g(operations)f(on)h(trees.)396 -2259 y(Because)h(e)n(v)o(ery)d(node)i(must)g(ha)n(v)o(e)f(at)i(most)f -Fr(one)g Fv(parent)f(node,)g(operations)g(are)h(ille)o(gal)g(if)g(the)o -(y)f(violate)h(this)396 2367 y(condition.)e(The)i(follo)n(wing)f -(\002gure)g(\()p Fr(A)h(node)g(can)f(only)h(be)g(added)f(if)i(it)g(is)g -(a)f(r)l(oot)q Fv(\))g(sho)n(ws)h(on)e(the)i(left)f(side)h(that)f(node) -396 2475 y Fq(y)h Fv(is)g(added)e(to)h Fq(x)h Fv(as)g(ne)n(w)f(subnode) -e(which)i(is)h(allo)n(wed)f(because)f Fq(y)i Fv(does)f(not)g(ha)n(v)o -(e)f(a)i(parent)e(yet.)h(The)g(right)f(side)i(of)396 -2583 y(the)f(picture)g(illustrates)g(what)h(w)o(ould)e(happen)g(if)h -Fq(y)h Fv(had)e(a)i(parent)e(node;)g(this)i(is)g(ille)o(gal)f(because)f -Fq(y)i Fv(w)o(ould)e(ha)n(v)o(e)h(tw)o(o)396 2691 y(parents)g(after)g -(the)g(operation.)396 2923 y Fu(Figur)o(e)g(3-3.)f(A)i(node)f(can)g -(only)g(be)h(added)g(if)f(it)h(is)g(a)f(r)o(oot)396 4165 -y - currentpoint currentpoint translate 1 1 scale neg exch neg exch translate - 396 4165 a @beginspecial 0 @llx 0 @lly 422 @urx 127 -@ury 4220 @rwi @setspecial -%%BeginDocument: pic/node_add.ps -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: src/pic/node_add.fig -%%Creator: fig2dev Version 3.2 Patchlevel 1 -%%CreationDate: Sun Aug 27 02:05:42 2000 -%%For: gerd@ice (Gerd Stolpmann) -%%Orientation: Portrait -%%BoundingBox: 0 0 422 127 -%%Pages: 0 -%%BeginSetup -%%EndSetup -%%Magnification: 0.8000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save --33.0 171.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def - /DrawEllipse { - /endangle exch def - /startangle exch def - /yrad exch def - /xrad exch def - /y exch def - /x exch def - /savematrix mtrx currentmatrix def - x y tr xrad yrad sc 0 0 1 startangle endangle arc - closepath - savematrix setmatrix - } def - -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def -%%EndProlog - -$F2psBegin -10 setmiterlimit -n -1000 4387 m -1000 -1000 l 10012 -1000 l 10012 4387 l cp clip - 0.05039 0.05039 sc -7.500 slw -% Ellipse -n 6141 1350 242 229 0 360 DrawEllipse gs col7 0.75 shd ef gr gs col0 s gr - -% Ellipse -n 6141 2250 242 229 0 360 DrawEllipse gs col7 0.75 shd ef gr gs col0 s gr - -% Ellipse -n 5426 2250 242 229 0 360 DrawEllipse gs col7 0.75 shd ef gr gs col0 s gr - -% Ellipse -n 6856 2250 242 229 0 360 DrawEllipse gs col7 0.75 shd ef gr gs col0 s gr - -% Ellipse -n 7571 2925 242 229 0 360 DrawEllipse gs col7 0.75 shd ef gr gs col0 s gr - -% Ellipse -n 8524 2925 242 229 0 360 DrawEllipse gs col7 0.75 shd ef gr gs col0 s gr - -% Ellipse -n 8047 2250 242 229 0 360 DrawEllipse gs col7 0.75 shd ef gr gs col0 s gr - -% Ellipse -n 1866 1350 242 229 0 360 DrawEllipse gs col7 0.75 shd ef gr gs col0 s gr - -% Ellipse -n 1866 2250 242 229 0 360 DrawEllipse gs col7 0.75 shd ef gr gs col0 s gr - -% Ellipse -n 1151 2250 242 229 0 360 DrawEllipse gs col7 0.75 shd ef gr gs col0 s gr - -% Ellipse -n 2581 2250 242 229 0 360 DrawEllipse gs col7 0.75 shd ef gr gs col0 s gr - -% Ellipse -n 3296 2925 242 229 0 360 DrawEllipse gs col7 0.75 shd ef gr gs col0 s gr - -% Ellipse -n 4249 2925 242 229 0 360 DrawEllipse gs col7 0.75 shd ef gr gs col0 s gr - -% Ellipse -n 3772 2250 242 229 0 360 DrawEllipse gs col7 0.75 shd ef gr gs col0 s gr - -% Ellipse -n 8325 1350 242 229 0 360 DrawEllipse gs col7 0.75 shd ef gr gs col0 s gr - -% Polyline -gs clippath -5507 1945 m 5402 2017 l 5460 1904 l 5369 2008 l 5415 2049 l cp -clip -n 5910 1440 m 5402 2017 l gs col7 0.75 shd ef gr gs col0 s gr gr - -% arrowhead -n 5507 1945 m 5402 2017 l 5460 1904 l 5484 1924 l 5507 1945 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -6134 1902 m 6101 2025 l 6072 1901 l 6070 2039 l 6132 2041 l cp -clip -n 6109 1590 m 6101 2025 l gs col7 0.75 shd ef gr gs col0 s gr gr - -% arrowhead -n 6134 1902 m 6101 2025 l 6072 1901 l 6103 1901 l 6134 1902 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -6649 1952 m 6697 2070 l 6599 1989 l 6681 2100 l 6731 2064 l cp -clip -n 6307 1537 m 6697 2070 l gs col7 0.75 shd ef gr gs col0 s gr gr - -% arrowhead -n 6649 1952 m 6697 2070 l 6599 1989 l 6624 1970 l 6649 1952 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -7696 2606 m 7602 2692 l 7645 2572 l 7568 2687 l 7619 2722 l cp -clip -n 7832 2347 m 7602 2692 l gs col7 0.75 shd ef gr gs col0 s gr gr - -% arrowhead -n 7696 2606 m 7602 2692 l 7645 2572 l 7671 2589 l 7696 2606 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -8306 2632 m 8349 2752 l 8255 2666 l 8332 2782 l 8383 2747 l cp -clip -n 8150 2452 m 8349 2752 l gs col7 0.75 shd ef gr gs col0 s gr gr - -% arrowhead -n 8306 2632 m 8349 2752 l 8255 2666 l 8281 2649 l 8306 2632 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -5853 1564 m 5958 1492 l 5899 1605 l 5991 1501 l 5945 1460 l cp -clip -n 5490 2017 m 5958 1492 l gs col7 0.75 shd ef gr gs col0 s gr gr - -% arrowhead -n 5853 1564 m 5958 1492 l 5899 1605 l 5876 1584 l 5853 1564 l cp gs col7 1.00 shd ef gr col0 s -% Polyline -gs clippath -6140 1698 m 6173 1575 l 6201 1699 l 6204 1561 l 6142 1559 l cp -clip -n 6164 2010 m 6173 1575 l gs col7 0.75 shd ef gr gs col0 s gr gr - -% arrowhead -n 6140 1698 m 6173 1575 l 6201 1699 l 6170 1699 l 6140 1698 l cp gs col7 1.00 shd ef gr col0 s -% Polyline -gs clippath -6404 1588 m 6355 1470 l 6454 1551 l 6371 1440 l 6321 1476 l cp -clip -n 6768 2025 m 6355 1470 l gs col7 0.75 shd ef gr gs col0 s gr gr - -% arrowhead -n 6404 1588 m 6355 1470 l 6454 1551 l 6429 1569 l 6404 1588 l cp gs col7 1.00 shd ef gr col0 s -% Polyline -gs clippath -7784 2499 m 7880 2415 l 7835 2534 l 7914 2420 l 7863 2385 l cp -clip -n 7673 2715 m 7880 2415 l gs col7 0.75 shd ef gr gs col0 s gr gr - -% arrowhead -n 7784 2499 m 7880 2415 l 7835 2534 l 7810 2517 l 7784 2499 l cp gs col7 1.00 shd ef gr col0 s -% Polyline -gs clippath -8263 2535 m 8222 2415 l 8315 2502 l 8240 2386 l 8188 2419 l cp -clip -n 8412 2707 m 8222 2415 l gs col7 0.75 shd ef gr gs col0 s gr gr - -% arrowhead -n 8263 2535 m 8222 2415 l 8315 2502 l 8289 2519 l 8263 2535 l cp gs col7 1.00 shd ef gr col0 s -% Polyline -gs clippath -1232 1945 m 1127 2017 l 1185 1904 l 1094 2008 l 1140 2049 l cp -clip -n 1635 1440 m 1127 2017 l gs col7 0.75 shd ef gr gs col0 s gr gr - -% arrowhead -n 1232 1945 m 1127 2017 l 1185 1904 l 1209 1924 l 1232 1945 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -1859 1902 m 1826 2025 l 1797 1901 l 1795 2039 l 1857 2041 l cp -clip -n 1834 1590 m 1826 2025 l gs col7 0.75 shd ef gr gs col0 s gr gr - -% arrowhead -n 1859 1902 m 1826 2025 l 1797 1901 l 1828 1902 l 1859 1902 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -2374 1952 m 2422 2070 l 2324 1989 l 2406 2100 l 2456 2064 l cp -clip -n 2032 1537 m 2422 2070 l gs col7 0.75 shd ef gr gs col0 s gr gr - -% arrowhead -n 2374 1952 m 2422 2070 l 2324 1989 l 2349 1970 l 2374 1952 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -3421 2606 m 3327 2692 l 3370 2572 l 3293 2687 l 3344 2722 l cp -clip -n 3557 2347 m 3327 2692 l gs col7 0.75 shd ef gr gs col0 s gr gr - -% arrowhead -n 3421 2606 m 3327 2692 l 3370 2572 l 3396 2589 l 3421 2606 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -4031 2632 m 4074 2752 l 3980 2666 l 4057 2782 l 4108 2747 l cp -clip -n 3875 2452 m 4074 2752 l gs col7 0.75 shd ef gr gs col0 s gr gr - -% arrowhead -n 4031 2632 m 4074 2752 l 3980 2666 l 4006 2649 l 4031 2632 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -1578 1564 m 1683 1492 l 1624 1605 l 1716 1501 l 1670 1460 l cp -clip -n 1215 2017 m 1683 1492 l gs col7 0.75 shd ef gr gs col0 s gr gr - -% arrowhead -n 1578 1564 m 1683 1492 l 1624 1605 l 1601 1584 l 1578 1564 l cp gs col7 1.00 shd ef gr col0 s -% Polyline -gs clippath -1865 1698 m 1898 1575 l 1926 1699 l 1929 1561 l 1867 1559 l cp -clip -n 1889 2010 m 1898 1575 l gs col7 0.75 shd ef gr gs col0 s gr gr - -% arrowhead -n 1865 1698 m 1898 1575 l 1926 1699 l 1895 1698 l 1865 1698 l cp gs col7 1.00 shd ef gr col0 s -% Polyline -gs clippath -2129 1588 m 2080 1470 l 2179 1551 l 2096 1440 l 2046 1476 l cp -clip -n 2493 2025 m 2080 1470 l gs col7 0.75 shd ef gr gs col0 s gr gr - -% arrowhead -n 2129 1588 m 2080 1470 l 2179 1551 l 2154 1569 l 2129 1588 l cp gs col7 1.00 shd ef gr col0 s -% Polyline -gs clippath -3509 2499 m 3605 2415 l 3560 2534 l 3639 2420 l 3588 2385 l cp -clip -n 3398 2715 m 3605 2415 l gs col7 0.75 shd ef gr gs col0 s gr gr - -% arrowhead -n 3509 2499 m 3605 2415 l 3560 2534 l 3535 2517 l 3509 2499 l cp gs col7 1.00 shd ef gr col0 s -% Polyline -gs clippath -3988 2535 m 3947 2415 l 4040 2502 l 3965 2386 l 3913 2419 l cp -clip -n 4137 2707 m 3947 2415 l gs col7 0.75 shd ef gr gs col0 s gr gr - -% arrowhead -n 3988 2535 m 3947 2415 l 4040 2502 l 4014 2519 l 3988 2535 l cp gs col7 1.00 shd ef gr col0 s -% Polyline - [60] 0 sd -n 6387 1372 m 8023 2017 l gs col7 0.75 shd ef gr gs col0 s gr [] 0 sd -% Polyline -n 4950 900 m 9000 900 l 9000 3375 l 4950 3375 l cp gs col0 s gr -% Polyline - [60] 0 sd -n 2112 1372 m 3748 2017 l gs col7 0.75 shd ef gr gs col0 s gr [] 0 sd -% Polyline -n 675 900 m 4725 900 l 4725 3375 l 675 3375 l cp gs col0 s gr -% Polyline -gs clippath -8119 1904 m 8055 2010 l 8061 1886 l 8022 2016 l 8079 2033 l cp -clip -n 8197 1545 m 8055 2010 l gs col0 s gr gr - -% arrowhead -n 8119 1904 m 8055 2010 l 8061 1886 l 8090 1895 l 8119 1904 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -8214 1695 m 8280 1590 l 8271 1713 l 8313 1585 l 8256 1566 l cp -clip -n 8137 2025 m 8280 1590 l gs col0 s gr gr - -% arrowhead -n 8214 1695 m 8280 1590 l 8271 1713 l 8243 1704 l 8214 1695 l cp gs col7 1.00 shd ef gr col0 s -% Polyline -30.000 slw -gs clippath -7687 2205 m 7502 2333 l 7594 2129 l 7410 2351 l 7503 2428 l cp -clip -n 7875 1500 m 7620 1965 l 7845 1920 l 7485 2355 l gs col0 s gr gr - -% arrowhead -15.000 slw -n 7687 2205 m 7502 2333 l 7594 2129 l 7618 2195 l 7687 2205 l cp gs 0.00 setgray ef gr col0 s -/Courier-Bold ff 195.00 scf sf -6094 1379 m -gs 1 -1 sc (x) col0 sh gr -/Courier-Bold ff 195.00 scf sf -7991 2265 m -gs 1 -1 sc (y) col0 sh gr -/Courier-Bold ff 195.00 scf sf -1819 1379 m -gs 1 -1 sc (x) col0 sh gr -/Courier-Bold ff 195.00 scf sf -3716 2265 m -gs 1 -1 sc (y) col0 sh gr -/Courier ff 180.00 scf sf -6459 1335 m -gs 1 -1 sc (x # add_node y) col0 sh gr -/Courier ff 180.00 scf sf -2214 1365 m -gs 1 -1 sc (x # add_node y) col0 sh gr -$F2psEnd -rs - -%%EndDocument - @endspecial 396 4165 a - currentpoint currentpoint translate 1 1 div 1 1 div scale neg exch -neg exch translate - 396 4165 a 357 x Fv(The)g("delete")g(operation) -e(simply)i(remo)o(v)o(es)f(the)h(links)g(between)f(tw)o(o)i(nodes.)e -(In)h(the)g(picture)f(\()p Fr(A)i(deleted)e(node)396 -4629 y(becomes)h(the)g(r)l(oot)g(of)h(the)f(subtr)m(ee)p -Fv(\))g(the)g(node)f Fq(x)i Fv(is)g(deleted)e(from)h(the)g(list)h(of)f -(subnodes)f(of)h Fq(y)p Fv(.)g(After)g(that,)g Fq(x)396 -4737 y Fv(becomes)g(the)g(root)f(of)h(the)g(subtree)g(starting)g(at)g -(this)h(node.)p Black 3800 5278 a Fr(51)p Black eop -%%Page: 52 52 -52 51 bop Black 2225 67 a Fr(Chapter)20 b(3.)g(The)g(objects)g(r)m(epr) -m(esenting)g(the)g(document)p Black 396 579 a Fu(Figur)o(e)g(3-4.)f(A)i -(deleted)f(node)g(becomes)h(the)f(r)o(oot)f(of)h(the)g(subtr)o(ee)396 -1912 y - currentpoint currentpoint translate 1 1 scale neg exch neg exch translate - 396 1912 a @beginspecial 0 @llx 0 @lly 388 @urx -138 @ury 3880 @rwi @setspecial -%%BeginDocument: pic/node_delete.ps -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: src/pic/node_delete.fig -%%Creator: fig2dev Version 3.2 Patchlevel 1 -%%CreationDate: Sun Aug 27 02:05:42 2000 -%%For: gerd@ice (Gerd Stolpmann) -%%Orientation: Portrait -%%BoundingBox: 0 0 388 138 -%%Pages: 0 -%%BeginSetup -%%EndSetup -%%Magnification: 0.8000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save --78.0 205.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def - /DrawEllipse { - /endangle exch def - /startangle exch def - /yrad exch def - /xrad exch def - /y exch def - /x exch def - /savematrix mtrx currentmatrix def - x y tr xrad yrad sc 0 0 1 startangle endangle arc - closepath - savematrix setmatrix - } def - -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def -%%EndProlog - -$F2psBegin -10 setmiterlimit -n -1000 5062 m -1000 -1000 l 10237 -1000 l 10237 5062 l cp clip - 0.05039 0.05039 sc -7.500 slw -% Ellipse -n 2700 2700 229 229 0 360 DrawEllipse gs col7 0.50 shd ef gr gs col0 s gr - -% Ellipse -n 2250 3600 229 229 0 360 DrawEllipse gs col7 0.50 shd ef gr gs col0 s gr - -% Ellipse -n 3150 3600 229 229 0 360 DrawEllipse gs col7 0.50 shd ef gr gs col0 s gr - -% Polyline -gs clippath -2322 3272 m 2235 3360 l 2271 3242 l 2202 3358 l 2253 3388 l cp -clip -n 2535 2857 m 2235 3360 l gs col0 s gr gr - -% arrowhead -n 2322 3272 m 2235 3360 l 2271 3242 l 2296 3257 l 2322 3272 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -2978 3298 m 3000 3420 l 2924 3323 l 2979 3446 l 3034 3421 l cp -clip -n 2782 2932 m 3000 3420 l gs col0 s gr gr - -% arrowhead -n 2978 3298 m 3000 3420 l 2924 3323 l 2951 3310 l 2978 3298 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -2500 2998 m 2587 2910 l 2552 3029 l 2620 2912 l 2569 2882 l cp -clip -n 2317 3367 m 2587 2910 l gs col0 s gr gr - -% arrowhead -n 2500 2998 m 2587 2910 l 2552 3029 l 2526 3013 l 2500 2998 l cp gs col7 1.00 shd ef gr col0 s -% Polyline -gs clippath -2864 3009 m 2842 2887 l 2918 2984 l 2863 2861 l 2808 2886 l cp -clip -n 3060 3375 m 2842 2887 l gs col0 s gr gr - -% arrowhead -n 2864 3009 m 2842 2887 l 2918 2984 l 2891 2997 l 2864 3009 l cp gs col7 1.00 shd ef gr col0 s -% Ellipse -n 2700 1800 229 229 0 360 DrawEllipse gs col7 0.75 shd ef gr gs col0 s gr - -% Ellipse -n 2025 2700 229 229 0 360 DrawEllipse gs col7 0.75 shd ef gr gs col0 s gr - -% Ellipse -n 3375 2700 229 229 0 360 DrawEllipse gs col7 0.75 shd ef gr gs col0 s gr - -% Ellipse -n 6345 1800 229 229 0 360 DrawEllipse gs col7 0.75 shd ef gr gs col0 s gr - -% Ellipse -n 5670 2700 229 229 0 360 DrawEllipse gs col7 0.75 shd ef gr gs col0 s gr - -% Ellipse -n 7020 2700 229 229 0 360 DrawEllipse gs col7 0.75 shd ef gr gs col0 s gr - -% Ellipse -n 8325 1800 229 229 0 360 DrawEllipse gs col7 0.50 shd ef gr gs col0 s gr - -% Ellipse -n 7875 2700 229 229 0 360 DrawEllipse gs col7 0.50 shd ef gr gs col0 s gr - -% Ellipse -n 8775 2700 229 229 0 360 DrawEllipse gs col7 0.50 shd ef gr gs col0 s gr - -% Polyline -gs clippath -2707 2152 m 2737 2032 l 2767 2152 l 2767 2017 l 2707 2017 l cp -clip -n 2737 2460 m 2737 2032 l gs col0 s gr gr - -% arrowhead -n 2707 2152 m 2737 2032 l 2767 2152 l 2737 2152 l 2707 2152 l cp gs col7 1.00 shd ef gr col0 s -% Polyline -gs clippath -2692 2347 m 2662 2467 l 2632 2347 l 2632 2482 l 2692 2482 l cp -clip -n 2662 2032 m 2662 2467 l gs col0 s gr gr - -% arrowhead -n 2692 2347 m 2662 2467 l 2632 2347 l 2662 2347 l 2692 2347 l cp gs 0.00 setgray ef gr col0 s -% Polyline -1 slj -60.000 slw -n 4050 2610 m 4725 2610 l gs col0 s gr -% Polyline -n 4050 2745 m 4725 2745 l gs col0 s gr -% Polyline -1 slc -n 4500 2385 m 4950 2655 l 4500 2970 l gs col0 s gr -% Polyline -0 slj -0 slc -7.500 slw -gs clippath -2125 2394 m 2025 2467 l 2078 2355 l 1992 2459 l 2039 2498 l cp -clip -n 2490 1905 m 2025 2467 l gs col0 s gr gr - -% arrowhead -n 2125 2394 m 2025 2467 l 2078 2355 l 2101 2375 l 2125 2394 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -3158 2426 m 3202 2542 l 3109 2461 l 3186 2571 l 3235 2537 l cp -clip -n 2827 2002 m 3202 2542 l gs col0 s gr gr - -% arrowhead -n 3158 2426 m 3202 2542 l 3109 2461 l 3134 2443 l 3158 2426 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -2436 2039 m 2535 1965 l 2482 2077 l 2568 1972 l 2521 1934 l cp -clip -n 2115 2475 m 2535 1965 l gs col0 s gr gr - -% arrowhead -n 2436 2039 m 2535 1965 l 2482 2077 l 2459 2058 l 2436 2039 l cp gs col7 1.00 shd ef gr col0 s -% Polyline -gs clippath -2916 2073 m 2872 1957 l 2965 2038 l 2888 1928 l 2839 1962 l cp -clip -n 3255 2505 m 2872 1957 l gs col0 s gr gr - -% arrowhead -n 2916 2073 m 2872 1957 l 2965 2038 l 2941 2055 l 2916 2073 l cp gs col7 1.00 shd ef gr col0 s -% Polyline -gs clippath -5770 2394 m 5670 2467 l 5723 2355 l 5637 2459 l 5684 2498 l cp -clip -n 6135 1905 m 5670 2467 l gs col0 s gr gr - -% arrowhead -n 5770 2394 m 5670 2467 l 5723 2355 l 5746 2375 l 5770 2394 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -6803 2426 m 6847 2542 l 6754 2461 l 6831 2571 l 6880 2537 l cp -clip -n 6472 2002 m 6847 2542 l gs col0 s gr gr - -% arrowhead -n 6803 2426 m 6847 2542 l 6754 2461 l 6779 2443 l 6803 2426 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -6081 2039 m 6180 1965 l 6127 2077 l 6213 1972 l 6166 1934 l cp -clip -n 5760 2475 m 6180 1965 l gs col0 s gr gr - -% arrowhead -n 6081 2039 m 6180 1965 l 6127 2077 l 6104 2058 l 6081 2039 l cp gs col7 1.00 shd ef gr col0 s -% Polyline -gs clippath -6561 2073 m 6517 1957 l 6610 2038 l 6533 1928 l 6484 1962 l cp -clip -n 6900 2505 m 6517 1957 l gs col0 s gr gr - -% arrowhead -n 6561 2073 m 6517 1957 l 6610 2038 l 6586 2055 l 6561 2073 l cp gs col7 1.00 shd ef gr col0 s -% Polyline -gs clippath -7947 2372 m 7860 2460 l 7896 2342 l 7827 2458 l 7878 2488 l cp -clip -n 8160 1957 m 7860 2460 l gs col0 s gr gr - -% arrowhead -n 7947 2372 m 7860 2460 l 7896 2342 l 7921 2357 l 7947 2372 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -8603 2398 m 8625 2520 l 8549 2423 l 8604 2546 l 8659 2521 l cp -clip -n 8407 2032 m 8625 2520 l gs col0 s gr gr - -% arrowhead -n 8603 2398 m 8625 2520 l 8549 2423 l 8576 2410 l 8603 2398 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -8125 2098 m 8212 2010 l 8177 2129 l 8245 2012 l 8194 1982 l cp -clip -n 7942 2467 m 8212 2010 l gs col0 s gr gr - -% arrowhead -n 8125 2098 m 8212 2010 l 8177 2129 l 8151 2113 l 8125 2098 l cp gs col7 1.00 shd ef gr col0 s -% Polyline -gs clippath -8489 2109 m 8467 1987 l 8543 2084 l 8488 1961 l 8433 1986 l cp -clip -n 8685 2475 m 8467 1987 l gs col0 s gr gr - -% arrowhead -n 8489 2109 m 8467 1987 l 8543 2084 l 8516 2097 l 8489 2109 l cp gs col7 1.00 shd ef gr col0 s -/Courier ff 180.00 scf sf -3960 2250 m -gs 1 -1 sc (x # delete) col0 sh gr -% Polyline -1 slj -1 slc -45.000 slw -n 2595 2362 m 2820 2137 l gs col0 s gr -% Polyline -n 2595 2137 m 2820 2362 l gs col0 s gr -% Polyline -0 slj -0 slc -7.500 slw -n 1575 1350 m 9225 1350 l 9225 4050 l 1575 4050 l cp gs col0 s gr -/Courier-Bold ff 180.00 scf sf -2640 2752 m -gs 1 -1 sc (x) col0 sh gr -/Courier-Bold ff 180.00 scf sf -8280 1845 m -gs 1 -1 sc (x) col0 sh gr -/Courier-Bold ff 180.00 scf sf -2655 1845 m -gs 1 -1 sc (y) col0 sh gr -/Courier-Bold ff 180.00 scf sf -6300 1845 m -gs 1 -1 sc (y) col0 sh gr -$F2psEnd -rs - -%%EndDocument - @endspecial 396 1912 a - currentpoint currentpoint translate 1 1 div 1 1 div scale neg exch -neg exch translate - 396 1912 a 357 x Fv(It)g(is)h(also)e(possible)h -(to)f(mak)o(e)h(a)g(clone)e(of)i(a)g(subtree;)f(illustrated)g(in)h -Fr(The)f(clone)g(of)h(a)f(subtr)m(ee)p Fv(.)h(In)f(this)h(case,)g(the)f -(clone)396 2377 y(is)i(a)g(cop)o(y)e(of)h(the)g(original)f(subtree)h(e) -o(xcept)f(that)h(it)h(is)h(no)d(longer)g(a)i(subnode.)d(Because)i -(cloning)f(ne)n(v)o(er)g(k)o(eeps)h(the)396 2485 y(connection)e(to)j -(the)f(parent,)f(the)h(clones)g(are)g(called)g Fr(orphaned)r -Fv(.)396 2717 y Fu(Figur)o(e)g(3-5.)f(The)i(clone)f(of)g(a)g(subtr)o -(ee)396 4050 y - currentpoint currentpoint translate 1 1 scale neg exch neg exch translate - 396 4050 a @beginspecial 0 @llx 0 @lly -388 @urx 138 @ury 3880 @rwi @setspecial -%%BeginDocument: pic/node_clone.ps -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: src/pic/node_clone.fig -%%Creator: fig2dev Version 3.2 Patchlevel 1 -%%CreationDate: Sun Aug 27 02:05:42 2000 -%%For: gerd@ice (Gerd Stolpmann) -%%Orientation: Portrait -%%BoundingBox: 0 0 388 138 -%%Pages: 0 -%%BeginSetup -%%EndSetup -%%Magnification: 0.8000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save --78.0 205.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def - /DrawEllipse { - /endangle exch def - /startangle exch def - /yrad exch def - /xrad exch def - /y exch def - /x exch def - /savematrix mtrx currentmatrix def - x y tr xrad yrad sc 0 0 1 startangle endangle arc - closepath - savematrix setmatrix - } def - -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def -%%EndProlog - -$F2psBegin -10 setmiterlimit -n -1000 5062 m -1000 -1000 l 10237 -1000 l 10237 5062 l cp clip - 0.05039 0.05039 sc -7.500 slw -% Ellipse -n 2700 1800 229 229 0 360 DrawEllipse gs col7 0.75 shd ef gr gs col0 s gr - -% Ellipse -n 2025 2700 229 229 0 360 DrawEllipse gs col7 0.75 shd ef gr gs col0 s gr - -% Ellipse -n 3375 2700 229 229 0 360 DrawEllipse gs col7 0.75 shd ef gr gs col0 s gr - -% Ellipse -n 6345 1800 229 229 0 360 DrawEllipse gs col7 0.75 shd ef gr gs col0 s gr - -% Ellipse -n 5670 2700 229 229 0 360 DrawEllipse gs col7 0.75 shd ef gr gs col0 s gr - -% Ellipse -n 7020 2700 229 229 0 360 DrawEllipse gs col7 0.75 shd ef gr gs col0 s gr - -% Ellipse -n 8325 1800 229 229 0 360 DrawEllipse gs col7 0.50 shd ef gr gs col0 s gr - -% Ellipse -n 7875 2700 229 229 0 360 DrawEllipse gs col7 0.50 shd ef gr gs col0 s gr - -% Ellipse -n 8775 2700 229 229 0 360 DrawEllipse gs col7 0.50 shd ef gr gs col0 s gr - -% Ellipse -n 6345 2700 229 229 0 360 DrawEllipse gs col7 0.50 shd ef gr gs col0 s gr - -% Ellipse -n 5895 3600 229 229 0 360 DrawEllipse gs col7 0.50 shd ef gr gs col0 s gr - -% Ellipse -n 6795 3600 229 229 0 360 DrawEllipse gs col7 0.50 shd ef gr gs col0 s gr - -% Ellipse -n 2700 2700 229 229 0 360 DrawEllipse gs col7 0.50 shd ef gr gs col0 s gr - -% Ellipse -n 2250 3600 229 229 0 360 DrawEllipse gs col7 0.50 shd ef gr gs col0 s gr - -% Ellipse -n 3150 3600 229 229 0 360 DrawEllipse gs col7 0.50 shd ef gr gs col0 s gr - -% Polyline -1 slj -60.000 slw -n 4050 2610 m 4725 2610 l gs col0 s gr -% Polyline -n 4050 2745 m 4725 2745 l gs col0 s gr -% Polyline -1 slc -n 4500 2385 m 4950 2655 l 4500 2970 l gs col0 s gr -% Polyline -0 slj -0 slc -7.500 slw -gs clippath -2125 2394 m 2025 2467 l 2078 2355 l 1992 2459 l 2039 2498 l cp -clip -n 2490 1905 m 2025 2467 l gs col0 s gr gr - -% arrowhead -n 2125 2394 m 2025 2467 l 2078 2355 l 2101 2375 l 2125 2394 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -3158 2426 m 3202 2542 l 3109 2461 l 3186 2571 l 3235 2537 l cp -clip -n 2827 2002 m 3202 2542 l gs col0 s gr gr - -% arrowhead -n 3158 2426 m 3202 2542 l 3109 2461 l 3134 2443 l 3158 2426 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -2436 2039 m 2535 1965 l 2482 2077 l 2568 1972 l 2521 1934 l cp -clip -n 2115 2475 m 2535 1965 l gs col0 s gr gr - -% arrowhead -n 2436 2039 m 2535 1965 l 2482 2077 l 2459 2058 l 2436 2039 l cp gs col7 1.00 shd ef gr col0 s -% Polyline -gs clippath -2916 2073 m 2872 1957 l 2965 2038 l 2888 1928 l 2839 1962 l cp -clip -n 3255 2505 m 2872 1957 l gs col0 s gr gr - -% arrowhead -n 2916 2073 m 2872 1957 l 2965 2038 l 2941 2055 l 2916 2073 l cp gs col7 1.00 shd ef gr col0 s -% Polyline -gs clippath -5770 2394 m 5670 2467 l 5723 2355 l 5637 2459 l 5684 2498 l cp -clip -n 6135 1905 m 5670 2467 l gs col0 s gr gr - -% arrowhead -n 5770 2394 m 5670 2467 l 5723 2355 l 5746 2375 l 5770 2394 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -6803 2426 m 6847 2542 l 6754 2461 l 6831 2571 l 6880 2537 l cp -clip -n 6472 2002 m 6847 2542 l gs col0 s gr gr - -% arrowhead -n 6803 2426 m 6847 2542 l 6754 2461 l 6779 2443 l 6803 2426 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -6081 2039 m 6180 1965 l 6127 2077 l 6213 1972 l 6166 1934 l cp -clip -n 5760 2475 m 6180 1965 l gs col0 s gr gr - -% arrowhead -n 6081 2039 m 6180 1965 l 6127 2077 l 6104 2058 l 6081 2039 l cp gs col7 1.00 shd ef gr col0 s -% Polyline -gs clippath -6561 2073 m 6517 1957 l 6610 2038 l 6533 1928 l 6484 1962 l cp -clip -n 6900 2505 m 6517 1957 l gs col0 s gr gr - -% arrowhead -n 6561 2073 m 6517 1957 l 6610 2038 l 6586 2055 l 6561 2073 l cp gs col7 1.00 shd ef gr col0 s -% Polyline -gs clippath -7947 2372 m 7860 2460 l 7896 2342 l 7827 2458 l 7878 2488 l cp -clip -n 8160 1957 m 7860 2460 l gs col0 s gr gr - -% arrowhead -n 7947 2372 m 7860 2460 l 7896 2342 l 7921 2357 l 7947 2372 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -8603 2398 m 8625 2520 l 8549 2423 l 8604 2546 l 8659 2521 l cp -clip -n 8407 2032 m 8625 2520 l gs col0 s gr gr - -% arrowhead -n 8603 2398 m 8625 2520 l 8549 2423 l 8576 2410 l 8603 2398 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -8125 2098 m 8212 2010 l 8177 2129 l 8245 2012 l 8194 1982 l cp -clip -n 7942 2467 m 8212 2010 l gs col0 s gr gr - -% arrowhead -n 8125 2098 m 8212 2010 l 8177 2129 l 8151 2113 l 8125 2098 l cp gs col7 1.00 shd ef gr col0 s -% Polyline -gs clippath -8489 2109 m 8467 1987 l 8543 2084 l 8488 1961 l 8433 1986 l cp -clip -n 8685 2475 m 8467 1987 l gs col0 s gr gr - -% arrowhead -n 8489 2109 m 8467 1987 l 8543 2084 l 8516 2097 l 8489 2109 l cp gs col7 1.00 shd ef gr col0 s -% Polyline -gs clippath -6352 2152 m 6382 2032 l 6412 2152 l 6412 2017 l 6352 2017 l cp -clip -n 6382 2460 m 6382 2032 l gs col0 s gr gr - -% arrowhead -n 6352 2152 m 6382 2032 l 6412 2152 l 6382 2152 l 6352 2152 l cp gs col7 1.00 shd ef gr col0 s -% Polyline -gs clippath -6337 2347 m 6307 2467 l 6277 2347 l 6277 2482 l 6337 2482 l cp -clip -n 6307 2032 m 6307 2467 l gs col0 s gr gr - -% arrowhead -n 6337 2347 m 6307 2467 l 6277 2347 l 6307 2347 l 6337 2347 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -5967 3272 m 5880 3360 l 5916 3242 l 5847 3358 l 5898 3388 l cp -clip -n 6180 2857 m 5880 3360 l gs col0 s gr gr - -% arrowhead -n 5967 3272 m 5880 3360 l 5916 3242 l 5941 3257 l 5967 3272 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -6623 3298 m 6645 3420 l 6569 3323 l 6624 3446 l 6679 3421 l cp -clip -n 6427 2932 m 6645 3420 l gs col0 s gr gr - -% arrowhead -n 6623 3298 m 6645 3420 l 6569 3323 l 6596 3310 l 6623 3298 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -6145 2998 m 6232 2910 l 6197 3029 l 6265 2912 l 6214 2882 l cp -clip -n 5962 3367 m 6232 2910 l gs col0 s gr gr - -% arrowhead -n 6145 2998 m 6232 2910 l 6197 3029 l 6171 3013 l 6145 2998 l cp gs col7 1.00 shd ef gr col0 s -% Polyline -gs clippath -6509 3009 m 6487 2887 l 6563 2984 l 6508 2861 l 6453 2886 l cp -clip -n 6705 3375 m 6487 2887 l gs col0 s gr gr - -% arrowhead -n 6509 3009 m 6487 2887 l 6563 2984 l 6536 2997 l 6509 3009 l cp gs col7 1.00 shd ef gr col0 s -% Polyline -gs clippath -2707 2152 m 2737 2032 l 2767 2152 l 2767 2017 l 2707 2017 l cp -clip -n 2737 2460 m 2737 2032 l gs col0 s gr gr - -% arrowhead -n 2707 2152 m 2737 2032 l 2767 2152 l 2737 2152 l 2707 2152 l cp gs col7 1.00 shd ef gr col0 s -% Polyline -gs clippath -2692 2347 m 2662 2467 l 2632 2347 l 2632 2482 l 2692 2482 l cp -clip -n 2662 2032 m 2662 2467 l gs col0 s gr gr - -% arrowhead -n 2692 2347 m 2662 2467 l 2632 2347 l 2662 2347 l 2692 2347 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -2322 3272 m 2235 3360 l 2271 3242 l 2202 3358 l 2253 3388 l cp -clip -n 2535 2857 m 2235 3360 l gs col0 s gr gr - -% arrowhead -n 2322 3272 m 2235 3360 l 2271 3242 l 2296 3257 l 2322 3272 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -2978 3298 m 3000 3420 l 2924 3323 l 2979 3446 l 3034 3421 l cp -clip -n 2782 2932 m 3000 3420 l gs col0 s gr gr - -% arrowhead -n 2978 3298 m 3000 3420 l 2924 3323 l 2951 3310 l 2978 3298 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -2500 2998 m 2587 2910 l 2552 3029 l 2620 2912 l 2569 2882 l cp -clip -n 2317 3367 m 2587 2910 l gs col0 s gr gr - -% arrowhead -n 2500 2998 m 2587 2910 l 2552 3029 l 2526 3013 l 2500 2998 l cp gs col7 1.00 shd ef gr col0 s -% Polyline -gs clippath -2864 3009 m 2842 2887 l 2918 2984 l 2863 2861 l 2808 2886 l cp -clip -n 3060 3375 m 2842 2887 l gs col0 s gr gr - -% arrowhead -n 2864 3009 m 2842 2887 l 2918 2984 l 2891 2997 l 2864 3009 l cp gs col7 1.00 shd ef gr col0 s -% Polyline -n 1575 1350 m 9225 1350 l 9225 4050 l 1575 4050 l cp gs col0 s gr -/Courier-Bold ff 180.00 scf sf -2655 1845 m -gs 1 -1 sc (y) col0 sh gr -/Courier-Bold ff 180.00 scf sf -6300 1845 m -gs 1 -1 sc (y) col0 sh gr -/Courier-Bold ff 180.00 scf sf -6285 2752 m -gs 1 -1 sc (x) col0 sh gr -/Courier-Bold ff 180.00 scf sf -2640 2752 m -gs 1 -1 sc (x) col0 sh gr -/Courier ff 180.00 scf sf -3690 2025 m -gs 1 -1 sc (let x' =) col0 sh gr -/Courier ff 180.00 scf sf -3690 2205 m -gs 1 -1 sc (x # orphaned_clone) col0 sh gr -/Courier-Bold ff 180.00 scf sf -8235 1845 m -gs 1 -1 sc (x') col0 sh gr -$F2psEnd -rs - -%%EndDocument - @endspecial 396 4050 a - currentpoint currentpoint translate 1 1 div 1 1 div scale neg exch -neg exch translate - 396 4050 a -2 4627 a Fp(3.2.2.)35 -b(The)f(methods)g(of)f(the)h(c)n(lass)h(type)f Fc(node)p -Black 3800 5278 a Fr(52)p Black eop -%%Page: 53 53 -53 52 bop Black 2225 67 a Fr(Chapter)20 b(3.)g(The)g(objects)g(r)m(epr) -m(esenting)g(the)g(document)p Black 396 579 a Fu(General)g(obser)o(v)o -(ers)g(.)p Black 396 866 a Ft(\225)p Black 60 w Fq(extension)p -Fv(:)g(The)f(reference)g(to)h(the)h(e)o(xtension)d(object)i(which)g -(belongs)f(to)h(this)h(node)e(\(see)h(...\).)p Black -396 974 a Ft(\225)p Black 60 w Fq(dtd)p Fv(:)h(Returns)f(a)g(reference) -f(to)h(the)g(global)g(DTD.)g(All)h(nodes)e(of)h(a)h(tree)f(must)g -(share)g(the)g(same)h(DTD.)p Black 396 1082 a Ft(\225)p -Black 60 w Fq(parent)p Fv(:)f(Get)h(the)f(f)o(ather)f(node.)g(Raises)j -Fq(Not_found)d Fv(in)i(the)f(case)g(the)h(node)e(does)h(not)f(ha)n(v)o -(e)h(a)h(parent,)e(i.e.)h(the)479 1190 y(node)f(is)j(the)e(root.)p -Black 396 1298 a Ft(\225)p Black 60 w Fq(root)p Fv(:)g(Gets)h(the)g -(reference)d(to)i(the)h(root)e(node)g(of)h(the)g(tree.)g(Ev)o(ery)f -(node)g(is)i(contained)e(in)h(a)h(tree)f(with)h(a)f(root,)f(so)479 -1406 y(this)h(method)f(al)o(w)o(ays)h(succeeds.)e(Note)i(that)g(this)g -(method)e Fr(sear)m(c)o(hes)h Fv(the)h(root,)e(which)h(costs)h(time)g -(proportional)d(to)479 1514 y(the)j(length)g(of)g(the)g(path)g(to)g -(the)g(root.)p Black 396 1622 a Ft(\225)p Black 60 w -Fq(sub_nodes)p Fv(:)g(Returns)g(references)e(to)j(the)f(children.)f -(The)g(returned)g(list)i(re\003ects)g(the)f(order)f(of)h(the)g -(children.)e(F)o(or)479 1730 y(data)i(nodes,)g(this)g(method)f(returns) -g(the)i(empty)e(list.)p Black 396 1838 a Ft(\225)p Black -60 w Fq(iter_nodes)43 b(f)p Fv(:)21 b(Iterates)f(o)o(v)o(er)f(the)h -(children,)f(and)g(calls)i Fq(f)g Fv(for)e(e)n(v)o(ery)g(child)h(in)g -(turn.)p Black 396 1945 a Ft(\225)p Black 60 w Fq(iter_nodes_sibl)43 -b(f)p Fv(:)20 b(Iterates)g(o)o(v)o(er)f(the)h(children,)f(and)h(calls)g -Fq(f)h Fv(for)f(e)n(v)o(ery)e(child)i(in)h(turn.)e Fq(f)h -Fv(gets)h(as)479 2053 y(ar)o(guments)d(the)j(pre)n(vious)d(node,)h(the) -h(current)f(node,)g(and)h(the)g(ne)o(xt)f(node.)p Black -396 2161 a Ft(\225)p Black 60 w Fq(node_type)p Fv(:)h(Returns)g(either) -f Fq(T_data)h Fv(which)g(means)g(that)g(the)g(node)f(is)i(a)g(data)f -(node,)f(or)h Fq(T_element)43 b(n)479 2269 y Fv(which)20 -b(means)g(that)g(the)g(node)f(is)j(an)e(element)f(of)h(type)g -Fq(n)p Fv(.)g(If)g(con\002gured,)e(possible)i(node)f(types)h(are)g -(also)479 2377 y Fq(T_pinstr)44 b(t)20 b Fv(indicating)f(that)h(the)h -(node)e(represents)g(a)i(processing)e(instruction)g(with)h(tar)o(get)f -Fq(t)p Fv(,)i(and)479 2485 y Fq(T_comment)f Fv(in)g(which)g(case)g(the) -g(node)g(is)h(a)f(comment.)p Black 396 2593 a Ft(\225)p -Black 60 w Fq(encoding)p Fv(:)g(Returns)g(the)g(encoding)e(of)i(the)g -(strings.)p Black 396 2701 a Ft(\225)p Black 60 w Fq(data)p -Fv(:)g(Returns)g(the)h(character)e(data)h(of)g(this)g(node)f(and)h(all) -h(children,)d(concatenated)h(as)i(one)e(string.)h(The)479 -2809 y(encoding)e(of)i(the)h(string)e(is)j(what)e(the)g(method)f -Fq(encoding)g Fv(returns.)g(-)i(F)o(or)e(data)h(nodes,)g(this)g(method) -f(simply)479 2917 y(returns)h(the)g(represented)e(characters.)h(F)o(or) -h(elements,)g(the)g(meaning)f(of)g(the)i(method)d(has)j(been)e(e)o -(xtended)g(such)479 3025 y(that)i(it)f(returns)g(something)e(useful,)i -(i.e.)g(the)g(ef)n(fecti)n(v)o(ely)f(contained)f(characters,)h(without) -h(markup.)e(\(F)o(or)479 3133 y Fq(T_pinstr)i Fv(and)f -Fq(T_comment)h Fv(nodes,)f(the)h(method)f(returns)g(the)h(empty)g -(string.\))p Black 396 3241 a Ft(\225)p Black 60 w Fq(position)p -Fv(:)g(If)g(con\002gured,)d(this)k(method)e(returns)g(the)h(position)g -(of)g(the)g(element)g(as)g(triple)g(\(entity)-5 b(,)19 -b(line,)479 3349 y(byteposition\).)f(F)o(or)i(data)g(nodes,)f(the)h -(position)g(is)h(not)f(stored.)f(If)h(the)g(position)g(is)h(not)f(a)n -(v)n(ailable)f(the)i(triple)f Fq("?",)479 3456 y(0,)45 -b(0)20 b Fv(is)h(returned.)p Black 396 3564 a Ft(\225)p -Black 60 w Fq(comment)p Fv(:)f(Returns)g Fq(Some)44 b(text)20 -b Fv(for)f(comment)g(nodes,)g(and)g Fq(None)h Fv(for)g(other)f(nodes.)g -(The)h Fq(text)f Fv(is)i(e)n(v)o(erything)479 3672 y(between)f(the)g -(comment)f(delimiters)g Fo(<)p Fq(-)i Fv(and)e Fq(-)p -Fo(>)p Fv(.)p Black 396 3780 a Ft(\225)p Black 60 w Fq(pinstr)44 -b(n)p Fv(:)21 b(Returns)f(all)h(processing)d(instructions)i(that)g(are) -g(directly)f(contained)g(in)h(this)h(element)e(and)h(that)g(ha)n(v)o(e) -479 3888 y(a)h Fr(tar)m(g)o(et)h Fv(speci\002cation)d(of)h -Fq(n)p Fv(.)g(The)g(tar)o(get)f(is)j(the)e(\002rst)h(w)o(ord)e(after)h -(the)g Fo(<)p Fq(?)p Fv(.)p Black 396 3996 a Ft(\225)p -Black 60 w Fq(pinstr_names)p Fv(:)f(Returns)h(the)g(list)i(of)e(all)g -(tar)o(gets)g(of)g(processing)f(instructions)g(directly)g(contained)g -(in)h(this)479 4104 y(element.)p Black 396 4212 a Ft(\225)p -Black 60 w Fq(write)44 b(s)h(enc)p Fv(:)20 b(Prints)h(the)f(node)f(and) -h(all)h(subnodes)d(to)j(the)f(passed)g(output)f(stream)h(as)h(v)n(alid) -f(XML)g(te)o(xt,)g(using)479 4320 y(the)g(passed)h(e)o(xternal)e -(encoding.)396 4511 y Fu(Attrib)n(ute)h(obser)o(v)o(ers)h(.)p -Black 396 4743 a Ft(\225)p Black 60 w Fq(attribute)44 -b(n)p Fv(:)20 b(Returns)g(the)h(v)n(alue)e(of)h(the)g(attrib)n(ute)g -(with)g(name)g Fq(n)p Fv(.)g(This)h(method)d(returns)i(a)g(v)n(alue)g -(for)f(e)n(v)o(ery)479 4851 y(declared)g(attrib)n(ute,)h(and)f(it)i -(raises)g Fq(Not_found)e Fv(for)h(an)o(y)f(undeclared)f(attrib)n(ute.)i -(Note)g(that)g(it)h(e)n(v)o(en)e(returns)h(a)p Black -3800 5278 a Fr(53)p Black eop -%%Page: 54 54 -54 53 bop Black 2225 67 a Fr(Chapter)20 b(3.)g(The)g(objects)g(r)m(epr) -m(esenting)g(the)g(document)p Black 479 579 a Fv(v)n(alue)g(if)g(the)g -(attrib)n(ute)g(is)h(actually)f(missing)g(b)n(ut)g(is)h(declared)e(as)i -Fq(#IMPLIED)f Fv(or)g(has)g(a)h(def)o(ault)e(v)n(alue.)g(-)i(Possible) -479 687 y(v)n(alues)f(are:)p Black 479 919 a Fa(\225)p -Black 62 w Fq(Implied_value)p Fv(:)f(The)h(attrib)n(ute)g(has)g(been)g -(declared)e(with)j(the)f(k)o(e)o(yw)o(ord)e Fq(#IMPLIED)p -Fv(,)i(and)f(the)h(attrib)n(ute)g(is)562 1027 y(missing)g(in)h(the)f -(attrib)n(ute)g(list)h(of)f(this)h(element.)p Black 479 -1135 a Fa(\225)p Black 62 w Fq(Value)44 b(s)p Fv(:)21 -b(The)f(attrib)n(ute)g(has)g(been)g(declared)e(as)j(type)f -Fq(CDATA)p Fv(,)g(as)h Fq(ID)p Fv(,)f(as)h Fq(IDREF)p -Fv(,)e(as)i Fq(ENTITY)p Fv(,)f(or)g(as)562 1243 y Fq(NMTOKEN)p -Fv(,)g(or)g(as)g(enumeration)e(or)i(notation,)f(and)g(one)h(of)g(the)g -(tw)o(o)h(conditions)d(holds:)i(\(1\))g(The)g(attrib)n(ute)562 -1351 y(v)n(alue)g(is)h(present)e(in)i(the)f(attrib)n(ute)g(list)h(in)f -(which)g(case)h(the)f(v)n(alue)f(is)j(returned)c(in)i(the)h(string)e -Fq(s)p Fv(.)i(\(2\))e(The)562 1459 y(attrib)n(ute)h(has)h(been)e -(omitted,)g(and)h(the)g(DTD)g(declared)f(the)i(attrib)n(ute)e(with)i(a) -f(def)o(ault)g(v)n(alue.)f(The)h(def)o(ault)562 1567 -y(v)n(alue)f(is)i(returned)d(in)i Fq(s)p Fv(.)g(-)g(Summarized,)d -Fq(Value)44 b(s)20 b Fv(is)h(returned)d(for)h(non-implied,)e(non-list)i -(attrib)n(ute)g(v)n(alues.)p Black 479 1675 a Fa(\225)p -Black 62 w Fq(Valuelist)44 b(l)p Fv(:)20 b(The)g(attrib)n(ute)g(has)g -(been)g(declared)f(as)i(type)e Fq(IDREFS)p Fv(,)h(as)h -Fq(ENTITIES)p Fv(,)e(or)h(as)h Fq(NMTOKENS)p Fv(,)562 -1783 y(and)f(one)g(of)f(the)i(tw)o(o)f(conditions)f(holds:)h(\(1\))f -(The)h(attrib)n(ute)g(v)n(alue)f(is)i(present)f(in)g(the)h(attrib)n -(ute)e(list)j(in)e(which)562 1891 y(case)h(the)f(space-separated)e(tok) -o(ens)i(of)g(the)g(v)n(alue)g(are)g(returned)e(in)j(the)f(string)g -(list)h Fq(l)p Fv(.)f(\(2\))g(The)g(attrib)n(ute)g(has)562 -1999 y(been)g(omitted,)f(and)h(the)g(DTD)g(declared)f(the)h(attrib)n -(ute)g(with)h(a)f(def)o(ault)g(v)n(alue.)f(The)h(def)o(ault)f(v)n(alue) -h(is)h(returned)562 2107 y(in)g Fq(l)p Fv(.)f(-)g(Summarized,)f -Fq(Valuelist)43 b(l)20 b Fv(is)i(returned)c(for)i(all)g(list-type)g -(attrib)n(ute)g(v)n(alues.)396 2256 y(Note)g(that)h(before)d(the)j -(attrib)n(ute)f(v)n(alue)f(is)i(returned,)d(the)i(v)n(alue)g(is)h -(normalized.)d(This)j(means)e(that)i(ne)n(wlines)e(are)479 -2364 y(con)m(v)o(erted)f(to)i(spaces,)g(and)g(that)g(references)f(to)h -(character)f(entities)i(\(i.e.)f Fq(&#)p Fn(n)p Fq(;)p -Fv(\))g(and)f(general)g(entities)i(\(i.e.)479 2472 y -Fq(&)p Fn(name)p Fq(;)p Fv(\))f(are)g(e)o(xpanded;)e(if)i(necessary)-5 -b(,)19 b(e)o(xpansion)f(is)j(performed)d(recursi)n(v)o(ely)-5 -b(.)479 2621 y(In)20 b(well-formedness)e(mode,)h(there)h(is)h(no)f(DTD) -g(which)g(could)f(declare)h(an)g(attrib)n(ute.)f(Because)i(of)f(this,)g -(e)n(v)o(ery)479 2729 y(occuring)f(attrib)n(ute)g(is)i(considered)e(as) -i(a)f(CD)m(A)-9 b(T)h(A)21 b(attrib)n(ute.)p Black 396 -2879 a Ft(\225)p Black 60 w Fq(required_string_attribute)41 -b(n)p Fv(:)21 b(returns)e(the)h(V)-9 b(alue)20 b(attrib)n(ute)g(called) -g(n,)g(or)g(the)g(V)-9 b(aluelist)20 b(attrib)n(ute)g(as)h(a)479 -2987 y(string)f(where)g(the)g(list)h(elements)f(are)g(separated)f(by)h -(spaces.)g(If)h(the)f(attrib)n(ute)g(v)n(alue)f(is)i(implied,)e(or)h -(if)h(the)479 3094 y(attrib)n(ute)f(does)g(not)g(e)o(xists,)g(the)g -(method)f(will)i(f)o(ail.)g(-)f(This)g(method)f(is)i(con)m(v)o(enient)d -(if)i(you)g(e)o(xpect)f(a)h(non-implied)479 3202 y(and)g(non-list)f -(attrib)n(ute)h(v)n(alue.)p Black 396 3310 a Ft(\225)p -Black 60 w Fq(optional_string_attribute)41 b(n)p Fv(:)21 -b(returns)e(the)h(V)-9 b(alue)20 b(attrib)n(ute)g(called)g(n,)g(or)g -(the)g(V)-9 b(aluelist)20 b(attrib)n(ute)g(as)h(a)479 -3418 y(string)f(where)g(the)g(list)h(elements)f(are)g(separated)f(by)h -(spaces.)g(If)h(the)f(attrib)n(ute)g(v)n(alue)f(is)i(implied,)e(or)h -(if)h(the)479 3526 y(attrib)n(ute)f(does)g(not)g(e)o(xists,)g(the)g -(method)f(returns)h(None.)f(-)h(This)h(method)e(is)i(con)m(v)o(enient)c -(if)k(you)e(e)o(xpect)g(a)i(non-list)479 3634 y(attrib)n(ute)f(v)n -(alue)g(including)e(the)i(implied)g(v)n(alue.)p Black -396 3742 a Ft(\225)p Black 60 w Fq(required_list_attribute)41 -b(n)p Fv(:)20 b(returns)f(the)g(V)-9 b(aluelist)20 b(attrib)n(ute)f -(called)g(n,)g(or)g(the)h(V)-9 b(alue)19 b(attrib)n(ute)g(as)h(a)g -(list)479 3850 y(with)h(a)f(single)g(element.)g(If)g(the)g(attrib)n -(ute)g(v)n(alue)f(is)i(implied,)f(or)g(if)g(the)g(attrib)n(ute)g(does)g -(not)g(e)o(xists,)g(the)g(method)479 3958 y(will)h(f)o(ail.)g(-)f(This) -g(method)f(is)i(con)m(v)o(enient)d(if)i(you)g(e)o(xpect)f(a)h(list)i -(attrib)n(ute)d(v)n(alue.)p Black 396 4066 a Ft(\225)p -Black 60 w Fq(optional_list_attribute)41 b(n)p Fv(:)20 -b(returns)f(the)g(V)-9 b(aluelist)20 b(attrib)n(ute)f(called)g(n,)g(or) -g(the)h(V)-9 b(alue)19 b(attrib)n(ute)g(as)h(a)g(list)479 -4174 y(with)h(a)f(single)g(element.)g(If)g(the)g(attrib)n(ute)g(v)n -(alue)f(is)i(implied,)f(or)g(if)g(the)g(attrib)n(ute)g(does)g(not)g(e)o -(xists,)g(an)g(empty)g(list)479 4282 y(will)h(be)f(returned.)e(-)j -(This)f(method)f(is)i(con)m(v)o(enient)d(if)i(you)f(e)o(xpect)h(a)g -(list)i(attrib)n(ute)d(v)n(alue)h(or)g(the)g(implied)f(v)n(alue.)p -Black 396 4390 a Ft(\225)p Black 60 w Fq(attribute_names)p -Fv(:)g(returns)g(the)h(list)h(of)f(all)h(attrib)n(ute)f(names)g(of)g -(this)g(element.)g(As)h(this)f(is)i(a)e(v)n(alidating)479 -4498 y(parser)m(,)f(this)i(list)g(is)g(equal)f(to)g(the)h(list)g(of)f -(declared)f(attrib)n(utes.)p Black 396 4605 a Ft(\225)p -Black 60 w Fq(attribute_type)43 b(n)p Fv(:)20 b(returns)g(the)g(type)g -(of)g(the)g(attrib)n(ute)g(called)g Fq(n)p Fv(.)g(See)h(the)f(module)f -Fq(Pxp_types)g Fv(for)g(a)479 4713 y(description)g(of)h(the)g(encoding) -e(of)i(the)g(types.)p Black 396 4821 a Ft(\225)p Black -60 w Fq(attributes)p Fv(:)f(returns)h(the)g(list)h(of)f(pairs)g(of)g -(names)g(and)g(v)n(alues)g(for)f(all)i(attrib)n(utes)f(of)g(this)h -(element.)p Black 3800 5278 a Fr(54)p Black eop -%%Page: 55 55 -55 54 bop Black 2225 67 a Fr(Chapter)20 b(3.)g(The)g(objects)g(r)m(epr) -m(esenting)g(the)g(document)p Black Black 396 579 a Ft(\225)p -Black 60 w Fq(id_attribute_name)p Fv(:)e(returns)h(the)i(name)e(of)h -(the)g(attrib)n(ute)g(that)g(is)h(declared)e(with)h(type)g(ID.)g(There) -f(is)i(at)g(most)479 687 y(one)f(such)g(attrib)n(ute.)f(The)h(method)f -(raises)i Fq(Not_found)e Fv(if)i(there)e(is)i(no)f(declared)f(ID)i -(attrib)n(ute)e(for)h(the)g(element)479 795 y(type.)p -Black 396 903 a Ft(\225)p Black 60 w Fq(id_attribute_value)p -Fv(:)e(returns)h(the)i(v)n(alue)e(of)h(the)g(attrib)n(ute)g(that)g(is)h -(declared)e(with)i(type)e(ID.)i(There)e(is)i(at)479 1011 -y(most)g(one)e(such)h(attrib)n(ute.)g(The)g(method)e(raises)j -Fq(Not_found)e Fv(if)i(there)f(is)h(no)e(declared)g(ID)i(attrib)n(ute)f -(for)f(the)479 1119 y(element)h(type.)p Black 396 1226 -a Ft(\225)p Black 60 w Fq(idref_attribute_names)p Fv(:)d(returns)h(the) -h(list)i(of)e(attrib)n(ute)f(names)h(that)h(are)f(declared)f(as)i -(IDREF)f(or)g(IDREFS.)396 1417 y Fu(Modifying)h(methods)h(.)f -Fv(The)g(follo)n(wing)f(methods)g(are)h(only)f(de\002ned)g(for)h -(element)f(nodes)h(\(more)f(e)o(xactly:)g(the)396 1525 -y(methods)g(are)i(de\002ned)e(for)g(data)h(nodes,)f(too,)h(b)n(ut)g(f)o -(ail)h(al)o(w)o(ays\).)p Black 396 1758 a Ft(\225)p Black -60 w Fq(add_node)44 b(sn)p Fv(:)20 b(Adds)g(sub)g(node)g -Fq(sn)g Fv(to)g(the)g(list)i(of)e(children.)e(This)j(operation)d(is)j -(illustrated)f(in)g(the)g(picture)g Fr(A)479 1866 y(node)f(can)h(only)g -(be)g(added)f(if)h(it)h(is)h(a)e(r)l(oot)q Fv(.)g(This)h(method)e(e)o -(xpects)g(that)h Fq(sn)h Fv(is)g(a)g(root,)e(and)g(it)i(requires)f -(that)g Fq(sn)g Fv(and)479 1974 y(the)g(current)f(object)h(share)g(the) -g(same)h(DTD.)479 2123 y(Because)g Fq(add_node)e Fv(is)i(the)f(method)f -(the)h(parser)g(itself)h(uses)g(to)f(add)g(ne)n(w)g(nodes)f(to)h(the)h -(tree,)e(it)i(performs)e(by)479 2231 y(def)o(ault)h(some)g(simple)g(v)n -(alidation)f(checks:)g(If)h(the)h(content)e(model)g(is)i(a)g(re)o -(gular)e(e)o(xpression,)f(it)j(is)g(not)f(allo)n(wed)f(to)479 -2339 y(add)h(data)g(nodes)f(to)i(this)g(node)e(unless)h(the)g(ne)n(w)g -(nodes)g(consist)g(only)f(of)h(whitespace.)g(In)g(this)g(case,)h(the)f -(ne)n(w)g(data)479 2447 y(nodes)g(are)g(silently)g(dropped)e(\(you)h -(can)h(change)f(this)h(by)g(in)m(v)n(oking)e Fq -(keep_always_whitespace_mode)p Fv(\).)479 2596 y(If)i(the)h(document)d -(is)j(\003agged)e(as)i(stand-alone,)d(these)j(data)f(nodes)f(only)g -(containing)g(whitespace)g(are)h(e)n(v)o(en)479 2704 -y(forbidden)e(if)i(the)h(element)e(declaration)g(is)i(contained)d(in)j -(an)f(e)o(xternal)f(entity)-5 b(.)19 b(This)h(case)h(is)g(detected)f -(and)479 2812 y(rejected.)479 2962 y(If)g(the)h(content)e(model)g(is)i -Fq(EMPTY)p Fv(,)f(it)h(is)g(not)f(allo)n(wed)f(to)i(add)e(an)o(y)h -(data)g(node)f(unless)h(the)g(data)g(node)g(is)h(empty)-5 -b(.)18 b(In)479 3070 y(this)j(case,)f(the)h(ne)n(w)f(data)g(node)f(is)i -(silently)f(dropped.)479 3219 y(These)g(checks)g(only)f(apply)h(if)g -(there)g(is)h(a)f(DTD.)h(In)f(well-formedness)e(mode,)h(it)i(is)g -(assumed)e(that)i(e)n(v)o(ery)d(element)479 3327 y(is)j(declared)e -(with)i(content)e(model)g Fq(ANY)h Fv(which)g(prohibits)f(an)o(y)g(v)n -(alidation)g(check.)g(Furthermore,)f(you)h(turn)h(these)479 -3435 y(checks)g(of)n(f)f(by)h(passing)g Fq(~force:true)f -Fv(as)i(\002rst)g(ar)o(gument.)p Black 396 3584 a Ft(\225)p -Black 60 w Fq(add_pinstr)43 b(pi)p Fv(:)21 b(Adds)f(the)g(processing)f -(instruction)g Fq(pi)h Fv(to)h(the)f(list)h(of)f(processing)f -(instructions.)p Black 396 3692 a Ft(\225)p Black 60 -w Fq(delete)p Fv(:)h(Deletes)h(this)g(node)e(from)g(the)h(tree.)g -(After)g(this)h(operation,)d(this)i(node)g(is)h(no)f(longer)e(the)j -(child)e(of)h(the)479 3800 y(former)f(f)o(ather)g(node;)f(and)i(the)g -(node)e(loses)j(the)e(connection)f(to)i(the)g(f)o(ather)f(as)h(well.)h -(This)e(operation)f(is)j(illustrated)479 3908 y(by)f(the)g(\002gure)g -Fr(A)g(deleted)g(node)f(becomes)g(the)i(r)l(oot)f(of)g(the)h(subtr)m -(ee)p Fv(.)p Black 396 4016 a Ft(\225)p Black 60 w Fq(set_nodes)44 -b(nl)p Fv(:)20 b(Sets)h(the)f(list)i(of)e(children)e(to)j -Fq(nl)p Fv(.)f(It)g(is)i(required)c(that)i(e)n(v)o(ery)f(member)g(of)h -Fq(nl)g Fv(is)h(a)g(root,)e(and)479 4124 y(that)i(all)f(members)f(and)h -(the)g(current)f(object)h(share)g(the)g(same)g(DTD.)g(Unlik)o(e)g -Fq(add_node)p Fv(,)g(no)f(v)n(alidation)g(checks)479 -4232 y(are)h(performed.)p Black 396 4340 a Ft(\225)p -Black 60 w Fq(quick_set_attributes)42 b(atts)p Fv(:)20 -b(sets)h(the)f(attrib)n(utes)h(of)e(this)i(element)f(to)g -Fq(atts)p Fv(.)g(It)g(is)i Fr(not)f Fv(check)o(ed)479 -4448 y(whether)e Fq(atts)i Fv(matches)e(the)i(DTD)f(or)g(not;)g(it)h -(is)g(up)f(to)g(the)g(caller)g(of)g(this)h(method)e(to)h(ensure)g -(this.)g(\(This)479 4556 y(method)f(may)h(be)g(useful)g(to)g(transform) -e(the)j(attrib)n(ute)f(v)n(alues,)f(i.e.)h(apply)f(a)i(mapping)d(to)j -(e)n(v)o(ery)e(attrib)n(ute.\))p Black 396 4664 a Ft(\225)p -Black 60 w Fq(set_comment)43 b(text)p Fv(:)20 b(This)h(method)e(is)i -(only)e(applicable)g(to)h Fq(T_comment)g Fv(nodes;)f(it)i(sets)g(the)g -(comment)d(te)o(xt)479 4772 y(contained)h(by)h(such)g(nodes.)p -Black 3800 5278 a Fr(55)p Black eop -%%Page: 56 56 -56 55 bop Black 2225 67 a Fr(Chapter)20 b(3.)g(The)g(objects)g(r)m(epr) -m(esenting)g(the)g(document)p Black 396 579 a Fu(Cloning)g(methods)h(.) -p Black 396 811 a Ft(\225)p Black 60 w Fq(orphaned_clone)p -Fv(:)e(Returns)h(a)g(clone)g(of)g(the)g(node)f(and)h(the)g(complete)f -(tree)h(belo)n(w)g(this)h(node)e(\(deep)g(clone\).)479 -919 y(The)h(clone)g(does)g(not)g(ha)n(v)o(e)f(a)i(parent)e(\(i.e.)h -(the)g(reference)f(to)h(the)g(parent)f(node)g(is)j Fr(not)f -Fv(cloned\).)d(While)j(cop)o(ying)479 1027 y(the)f(subtree,)g(strings)g -(are)g(skipped;)f(it)i(is)g(lik)o(ely)f(that)h(the)f(original)f(tree)h -(and)g(the)g(cop)o(y)f(tree)h(share)g(strings.)479 1135 -y(Extension)f(objects)h(are)g(cloned)f(by)h(in)m(v)n(oking)e(the)i -Fq(clone)g Fv(method)f(on)h(the)g(original)f(objects;)h(ho)n(w)g(much)f -(of)h(the)479 1243 y(e)o(xtension)f(objects)h(is)h(cloned)e(depends)g -(on)h(the)g(implemention)e(of)i(this)h(method.)479 1393 -y(This)g(operation)d(is)j(illustrated)f(by)g(the)g(\002gure)f -Fr(The)i(clone)e(of)i(a)f(subtr)m(ee)p Fv(.)p Black 396 -1542 a Ft(\225)p Black 60 w Fq(orphaned_flat_clone)p -Fv(:)e(Returns)i(a)h(clone)e(of)h(the)g(node,)f(b)n(ut)h(sets)i(the)e -(list)h(of)f(sub)g(nodes)g(to)g([],)g(i.e.)g(the)g(sub)479 -1650 y(nodes)g(are)g(not)g(cloned.)p Black 396 1758 a -Ft(\225)p Black 81 w Fq(create_element)42 b(dtd)i(nt)h(al)p -Fv(:)20 b(Returns)f(a)i(\003at)f(cop)o(y)f(of)g(this)i(node)d(\(which)h -(must)h(be)f(an)h(element\))f(with)h(the)479 1866 y(follo)n(wing)f -(modi\002cations:)g(The)h(DTD)g(is)h(set)g(to)f Fq(dtd)p -Fv(;)h(the)f(node)f(type)h(is)h(set)g(to)f Fq(nt)p Fv(,)g(and)g(the)g -(ne)n(w)g(attrib)n(ute)g(list)h(is)479 1974 y(set)g(to)f -Fq(al)g Fv(\(gi)n(v)o(en)e(as)i(list)h(of)f(\(name,v)n(alue\))d -(pairs\).)i(The)g(cop)o(y)g(does)h(not)f(ha)n(v)o(e)g(children)g(nor)g -(a)h(parent.)f(It)h(does)f(not)479 2082 y(contain)g(processing)g -(instructions.)g(See)i(the)f(e)o(xample)f(belo)n(w.)479 -2231 y(Note)h(that)h(you)e(can)h(specify)g(the)g(position)f(of)h(the)g -(ne)n(w)g(node)f(by)h(the)g(optional)f(ar)o(gument)f -Fq(~position)p Fv(.)p Black 396 2380 a Ft(\225)p Black -81 w Fq(create_data)43 b(dtd)h(cdata)p Fv(:)20 b(Returns)g(a)h(\003at)g -(cop)o(y)e(of)h(this)h(node)e(\(which)g(must)h(be)h(a)f(data)g(node\))f -(with)h(the)479 2488 y(follo)n(wing)f(modi\002cations:)g(The)h(DTD)g -(is)h(set)g(to)f Fq(dtd)p Fv(;)h(the)f(node)f(type)h(is)h(set)g(to)f -Fq(T_data)p Fv(;)g(the)g(attrib)n(ute)g(list)h(is)479 -2596 y(empty)f(\(data)f(nodes)h(ne)n(v)o(er)f(ha)n(v)o(e)g(attrib)n -(utes\);)h(the)g(list)h(of)f(children)f(and)h(PIs)h(is)g(empty)-5 -b(,)19 b(too)g(\(same)h(reason\).)f(The)479 2704 y(ne)n(w)h(node)f -(does)h(not)g(ha)n(v)o(e)g(a)g(parent.)f(The)h(v)n(alue)g -Fq(cdata)g Fv(is)h(the)f(ne)n(w)g(character)f(content)g(of)h(the)g -(node.)f(See)i(the)479 2812 y(e)o(xample)e(belo)n(w.)p -Black 396 2920 a Ft(\225)p Black 60 w Fq(keep_always_whitespace_mode)p -Fv(:)e(Ev)o(en)i(data)h(nodes)f(which)h(are)g(normally)f(dropped)e -(because)j(the)o(y)f(only)479 3028 y(contain)g(ignorable)f(whitespace,) -h(can)h(added)e(to)i(this)h(node)d(once)h(this)i(mode)e(is)h(turned)f -(on.)g(\(This)h(mode)f(is)h(useful)479 3136 y(to)h(produce)d(canonical) -h(XML.\))396 3327 y Fu(V)-8 b(alidating)20 b(methods)h(.)f -Fv(There)f(is)j(one)d(method)g(which)h(locally)f(v)n(alidates)h(the)g -(node,)f(i.e.)i(checks)e(whether)g(the)396 3435 y(subnodes)g(match)h -(the)g(content)f(model)g(of)h(this)h(node.)p Black 396 -3667 a Ft(\225)p Black 60 w Fq(local_validate)p Fv(:)e(Checks)h(that)g -(this)h(node)e(conforms)f(to)j(the)f(DTD)g(by)g(comparing)e(the)i(type) -g(of)g(the)479 3775 y(subnodes)e(with)i(the)g(content)e(model)h(for)g -(this)h(node.)e(\(Applications)g(need)h(not)g(call)h(this)h(method)d -(unless)h(the)o(y)g(add)479 3883 y(ne)n(w)h(nodes)g(themselv)o(es)f(to) -i(the)f(tree.\))-2 4294 y Fp(3.2.3.)35 b(The)f(c)n(lass)h -Fc(element_impl)396 4462 y Fv(This)21 b(class)g(is)g(an)f -(implementation)e(of)i Fq(node)g Fv(which)g(realizes)g(element)g -(nodes:)396 4642 y Fq(class)44 b([)h('ext)f(])h(element_impl)e(:)h -('ext)g(->)h([)g('ext)f(])g(node)396 4875 y Fu(Constructor)-8 -b(.)19 b Fv(Y)-9 b(ou)20 b(can)g(create)f(a)i(ne)n(w)f(instance)g(by)p -Black 3798 5278 a Fr(56)p Black eop -%%Page: 57 57 -57 56 bop Black 2225 67 a Fr(Chapter)20 b(3.)g(The)g(objects)g(r)m(epr) -m(esenting)g(the)g(document)p Black 396 579 a Fq(new)45 -b(element_impl)d Fn(extension_object)396 770 y Fv(which)20 -b(creates)g(a)h(special)f(form)f(of)h(empty)f(element)h(which)g -(already)f(contains)g(a)i(reference)d(to)j(the)396 878 -y Fl(extension_object)p Fv(,)d(b)n(ut)i(is)h(otherwise)f(empty)-5 -b(.)18 b(This)j(special)f(form)f(is)i(called)f(an)g Fr(e)n(xemplar)r -Fv(.)g(The)g(purpose)f(of)396 986 y(e)o(x)o(emplars)g(is)i(that)f(the)o -(y)g(serv)o(e)f(as)i(patterns)f(that)g(can)g(be)g(duplicated)f(and)g -(\002lled)i(with)f(data.)g(The)g(method)396 1094 y Fq(create_element)f -Fv(is)i(designed)e(to)h(perform)e(this)j(action.)396 -1243 y Fu(Example.)f Fv(First,)h(create)f(an)g(e)o(x)o(emplar)e(by)396 -1423 y Fq(let)45 b(exemplar_ext)d(=)j(...)f(in)396 1520 -y(let)h(exemplar)222 b(=)45 b(new)f(element_impl)f(exemplar_ext)g(in) -396 1711 y Fv(The)20 b Fq(exemplar)g Fv(is)h(not)f(used)f(in)i(node)e -(trees,)h(b)n(ut)g(only)g(as)h(a)f(pattern)g(when)f(the)h(element)g -(nodes)f(are)i(created:)396 1891 y Fq(let)45 b(element)e(=)i(exemplar)e -(#)i(create_element)e(dtd)h(\(T_element)f(name\))h(attlist)396 -2082 y Fv(The)20 b Fq(element)g Fv(is)h(a)f(cop)o(y)g(of)g -Fq(exemplar)f Fv(\(e)n(v)o(en)g(the)h(e)o(xtension)f -Fq(exemplar_ext)g Fv(has)h(been)g(copied\))e(which)396 -2190 y(ensures)h(that)h Fq(element)f Fv(and)g(its)i(e)o(xtension)d(are) -i(objects)f(of)h(the)f(same)h(class)h(as)f(the)g(e)o(x)o(emplars;)e -(note)h(that)h(you)e(need)396 2298 y(not)i(to)g(pass)h(a)g(class)g -(name)f(or)f(other)h(meta)g(information.)d(The)j(cop)o(y)g(is)h -(initially)f(connected)e(with)j(the)f Fq(dtd)p Fv(,)g(it)h(gets)f(a)396 -2406 y(node)f(type,)h(and)g(the)g(attrib)n(ute)g(list)h(is)g(\002lled.) -f(The)g Fq(element)g Fv(is)h(no)n(w)e(fully)h(functional;)e(it)j(can)f -(be)g(added)f(to)i(another)396 2514 y(element)f(as)h(child,)e(and)h(it) -h(can)f(contain)f(references)g(to)h(subnodes.)-2 2884 -y Fp(3.2.4.)35 b(The)f(c)n(lass)h Fc(data_impl)396 3051 -y Fv(This)21 b(class)g(is)g(an)f(implementation)e(of)i -Fq(node)g Fv(which)g(should)f(be)h(used)g(for)f(all)i(character)e(data) -h(nodes:)396 3232 y Fq(class)44 b([)h('ext)f(])h(data_impl)e(:)i('ext)f -(->)g([)h('ext)f(])h(node)396 3464 y Fu(Constructor)-8 -b(.)19 b Fv(Y)-9 b(ou)20 b(can)g(create)f(a)i(ne)n(w)f(instance)g(by) -396 3644 y Fq(new)45 b(data_impl)e Fn(extension_object)396 -3835 y Fv(which)20 b(creates)g(an)g(empty)g(e)o(x)o(emplar)e(node)h -(which)h(is)h(connected)d(to)i Fl(extension_object)p -Fv(.)e(The)i(node)f(does)396 3943 y(not)h(contain)f(a)i(reference)d(to) -j(an)o(y)e(DTD,)h(and)g(because)f(of)h(this)h(it)g(cannot)e(be)h(added) -f(to)i(node)e(trees.)396 4093 y(T)-7 b(o)21 b(get)f(a)g(fully)g(w)o -(orking)f(data)h(node,)f(apply)g(the)h(method)f Fq(create_data)g -Fv(to)h(the)g(e)o(x)o(emplar)f(\(see)h(e)o(xample\).)396 -4242 y Fu(Example.)g Fv(First,)h(create)f(an)g(e)o(x)o(emplar)e(by)396 -4422 y Fq(let)45 b(exemplar_ext)d(=)j(...)f(in)396 4519 -y(let)h(exemplar)222 b(=)45 b(new)f(exemplar_ext)f(data_impl)h(in)396 -4710 y Fv(The)20 b Fq(exemplar)g Fv(is)h(not)f(used)f(in)i(node)e -(trees,)h(b)n(ut)g(only)g(as)h(a)f(pattern)g(when)f(the)h(data)g(nodes) -g(are)g(created:)p Black 3797 5278 a Fr(57)p Black eop -%%Page: 58 58 -58 57 bop Black 2225 67 a Fr(Chapter)20 b(3.)g(The)g(objects)g(r)m(epr) -m(esenting)g(the)g(document)p Black 396 579 a Fq(let)45 -b(data_node)e(=)i(exemplar)e(#)i(create_data)e(dtd)h("The)g(characters) -f(con-)396 676 y(tained)h(in)h(the)f(data)g(node")396 -867 y Fv(The)20 b Fq(data_node)f Fv(is)i(a)g(cop)o(y)e(of)h -Fq(exemplar)p Fv(.)g(The)f(cop)o(y)h(is)h(initially)f(connected)e(with) -j(the)f Fq(dtd)p Fv(,)g(and)f(it)i(is)h(\002lled)396 -975 y(with)f(character)e(material.)g(The)h Fq(data_node)f -Fv(is)i(no)n(w)f(fully)g(functional;)e(it)j(can)f(be)g(added)f(to)h(an) -h(element)e(as)i(child.)-2 1345 y Fp(3.2.5.)35 b(The)f(type)g -Fc(spec)396 1512 y Fv(The)20 b(type)g Fq(spec)g Fv(de\002nes)g(a)g(w)o -(ay)h(to)f(handle)f(the)h(details)h(of)f(creating)f(nodes)g(from)h(e)o -(x)o(emplars.)396 1692 y Fq(type)44 b('ext)h(spec)396 -1790 y(constraint)e('ext)i(=)f('ext)g(node)h(#extension)396 -1984 y(val)g(make_spec_from_mapping)c(:)665 2081 y -(?super_root_exemplar)h(:)i('ext)h(node)f(->)665 2178 -y(?comment_exemplar)e(:)j('ext)f(node)g(->)665 2275 y -(?default_pinstr_exemplar)d(:)k('ext)f(node)g(->)665 -2372 y(?pinstr_mapping)f(:)h(\(string,)g('ext)g(node\))g(Hashtbl.t)f -(->)665 2469 y(data_exemplar:)g('ext)h(node)g(->)665 -2567 y(default_element_exemplar:)d('ext)j(node)g(->)665 -2664 y(element_mapping:)e(\(string,)i('ext)g(node\))g(Hashtbl.t)f(->) -665 2761 y(unit)h(->)755 2858 y('ext)g(spec)396 3052 -y(val)h(make_spec_from_alist)c(:)665 3149 y(?super_root_exemplar)h(:)i -('ext)h(node)f(->)665 3247 y(?comment_exemplar)e(:)j('ext)f(node)g(->) -665 3344 y(?default_pinstr_exemplar)d(:)k('ext)f(node)g(->)665 -3441 y(?pinstr_alist)f(:)i(\(string)e(*)i('ext)f(node\))g(list)g(->)665 -3538 y(data_exemplar:)f('ext)h(node)g(->)665 3635 y -(default_element_exemplar:)d('ext)j(node)g(->)665 3732 -y(element_alist:)f(\(string)g(*)i('ext)f(node\))g(list)g(->)665 -3829 y(unit)g(->)755 3927 y('ext)g(spec)396 4117 y Fv(The)20 -b(tw)o(o)h(functions)d Fq(make_spec_from_mapping)f Fv(and)j -Fq(make_spec_from_alist)d Fv(create)j Fq(spec)g Fv(v)n(alues.)396 -4225 y(Both)g(functions)f(are)h(functionally)e(equi)n(v)n(alent)h(and)g -(the)i(only)e(dif)n(ference)f(is)j(that)g(the)f(\002rst)h(function)d -(prefers)396 4333 y(hashtables)i(and)g(the)g(latter)g(associati)n(v)o -(e)g(lists)h(to)g(describe)e(mappings)g(from)g(names)h(to)g(e)o(x)o -(emplars.)396 4483 y(Y)-9 b(ou)20 b(can)g(specify)f(e)o(x)o(emplars)g -(for)g(the)i(v)n(arious)e(kinds)g(of)h(nodes)g(that)g(need)g(to)g(be)g -(generated)e(when)i(an)g(XML)396 4591 y(document)e(is)k(parsed:)p -Black 3800 5278 a Fr(58)p Black eop -%%Page: 59 59 -59 58 bop Black 2225 67 a Fr(Chapter)20 b(3.)g(The)g(objects)g(r)m(epr) -m(esenting)g(the)g(document)p Black Black 396 579 a Ft(\225)p -Black 60 w Fq(~super_root_exemplar)p Fv(:)e(This)i(e)o(x)o(emplar)e(is) -j(used)f(to)h(create)f(the)g(super)f(root.)h(This)g(special)g(node)g -(is)h(only)479 687 y(created)f(if)g(the)g(corresponding)d -(con\002guration)h(option)h(has)h(been)g(selected;)g(it)h(is)g(the)f -(parent)f(node)g(of)h(the)h(root)479 795 y(node)e(which)h(may)g(be)g -(con)m(v)o(enient)d(if)k(e)n(v)o(ery)e(w)o(orking)f(node)i(must)g(ha)n -(v)o(e)f(a)i(parent.)p Black 396 903 a Ft(\225)p Black -60 w Fq(~comment_exemplar)p Fv(:)d(This)j(e)o(x)o(emplar)d(is)j(used)f -(when)f(a)i(comment)e(node)g(must)h(be)g(created.)g(Note)g(that)g(such) -479 1011 y(nodes)g(are)g(only)f(created)h(if)g(the)g(corresponding)d -(con\002guration)h(option)h(is)i("on".)p Black 396 1119 -a Ft(\225)p Black 60 w Fq(~default_pinstr_exemplar)p -Fv(:)c(If)j(a)h(node)e(for)g(a)i(processing)e(instruction)g(must)h(be)g -(created,)f(and)h(the)479 1226 y(instruction)f(is)i(not)f(listed)h(in)f -(the)g(table)h(passed)f(by)f Fq(~pinstr_mapping)g Fv(or)h -Fq(~pinstr_alist)p Fv(,)e(this)j(e)o(x)o(emplar)479 1334 -y(is)g(used.)f(Again)f(the)i(con\002guration)c(option)i(must)h(be)g -("on")g(in)g(order)f(to)i(create)e(such)h(nodes)g(at)h(all.)p -Black 396 1442 a Ft(\225)p Black 60 w Fq(~pinstr_mapping)e -Fv(or)g Fq(~pinstr_alist)p Fv(:)g(Map)h(the)g(tar)o(get)g(names)f(of)h -(processing)f(instructions)g(to)479 1550 y(e)o(x)o(emplars.)g(These)h -(mappings)e(are)i(only)g(used)g(when)f(nodes)h(for)f(processing)g -(instructions)g(are)h(created.)p Black 396 1658 a Ft(\225)p -Black 60 w Fq(~data_exemplar)p Fv(:)f(The)h(e)o(x)o(emplar)e(for)h -(ordinary)f(data)i(nodes.)p Black 396 1766 a Ft(\225)p -Black 60 w Fq(~default_element_exemplar)p Fv(:)d(This)j(e)o(x)o(emplar) -e(is)k(used)e(if)g(an)g(element)g(node)f(must)h(be)g(created,)f(b)n(ut) -i(the)479 1874 y(element)f(type)g(cannot)f(be)h(found)e(in)j(the)f -(tables)g Fq(element_mapping)e Fv(or)i Fq(element_alist)p -Fv(.)p Black 396 1982 a Ft(\225)p Black 60 w Fq(~element_mapping)e -Fv(or)i Fq(~element_alist)p Fv(:)f(Map)h(the)g(element)f(types)h(to)h -(e)o(x)o(emplars.)d(These)i(mappings)f(are)479 2090 y(used)h(to)h -(create)e(element)h(nodes.)396 2239 y(In)g(most)g(cases,)h(you)e(only)h -(w)o(ant)g(to)g(create)g Fq(spec)g Fv(v)n(alues)g(to)h(pass)f(them)g -(to)g(the)h(parser)e(functions)g(found)f(in)396 2347 -y Fq(Pxp_yacc)p Fv(.)h(Ho)n(we)n(v)o(er)m(,)f(it)j(might)f(be)g(useful) -g(to)g(apply)f Fq(spec)h Fv(v)n(alues)g(directly)-5 b(.)396 -2497 y(The)20 b(follo)n(wing)f(functions)f(create)i(v)n(arious)f(types) -h(of)g(nodes)g(by)g(selecting)f(the)i(corresponding)16 -b(e)o(x)o(emplar)j(from)g(the)396 2605 y(passed)h Fq(spec)g -Fv(v)n(alue,)g(and)f(by)h(calling)g Fq(create_element)e -Fv(or)i Fq(create_data)f Fv(on)h(the)g(e)o(x)o(emplar)-5 -b(.)396 2785 y Fq(val)45 b(create_data_node)d(:)665 2882 -y('ext)i(spec)h(->)665 2979 y(dtd)g(->)665 3076 y(\(*)g(data)f -(material:)f(*\))i(string)f(->)845 3173 y('ext)g(node)396 -3368 y(val)h(create_element_node)c(:)665 3465 y(?position:\(string)h(*) -j(int)f(*)h(int\))f(->)665 3562 y('ext)g(spec)h(->)665 -3659 y(dtd)g(->)665 3756 y(\(*)g(element)e(type:)h(*\))h(string)f(->) -665 3853 y(\(*)h(attributes:)e(*\))h(\(string)g(*)h(string\))e(list)h -(->)845 3950 y('ext)g(node)396 4145 y(val)h(create_super_root_node)c(:) -665 4242 y(?position:\(string)h(*)j(int)f(*)h(int\))f(->)665 -4339 y('ext)g(spec)h(->)710 4436 y(dtd)f(->)889 4533 -y('ext)h(node)396 4728 y(val)g(create_comment_node)c(:)665 -4825 y(?position:\(string)h(*)j(int)f(*)h(int\))f(->)p -Black 3800 5278 a Fr(59)p Black eop -%%Page: 60 60 -60 59 bop Black 2225 67 a Fr(Chapter)20 b(3.)g(The)g(objects)g(r)m(epr) -m(esenting)g(the)g(document)p Black 665 579 a Fq('ext)44 -b(spec)h(->)665 676 y(dtd)g(->)665 773 y(\(*)g(comment)e(text:)h(*\))h -(string)f(->)845 870 y('ext)g(node)396 1065 y(val)h(create_pinstr_node) -c(:)665 1162 y(?position:\(string)h(*)j(int)f(*)h(int\))f(->)665 -1259 y('ext)g(spec)h(->)665 1356 y(dtd)g(->)665 1453 -y(proc_instruction)d(->)845 1550 y('ext)i(node)-2 2003 -y Fp(3.2.6.)35 b(Examples)396 2171 y Fu(Building)22 b(tr)o(ees.)d -Fv(Here)h(is)h(the)g(piece)e(of)h(code)g(that)g(creates)g(the)h(tree)f -(of)g(the)g(\002gure)f Fr(A)i(tr)m(ee)g(with)f(element)g(nodes,)396 -2279 y(data)g(nodes,)f(and)g(attrib)n(utes)p Fv(.)h(The)g(e)o(xtension) -f(object)h(and)f(the)h(DTD)h(are)f(be)o(yond)e(the)i(scope)g(of)g(this) -g(e)o(xample.)396 2459 y Fq(let)45 b(exemplar_ext)d(=)j(...)f(\(*)h -(some)f(extension)f(*\))i(in)396 2556 y(let)g(dtd)f(=)h(...)f(\(*)g -(some)h(DTD)f(*\))g(in)396 2750 y(let)h(element_exemplar)d(=)i(new)h -(element_impl)e(exemplar_ext)f(in)396 2847 y(let)j(data_exemplar)177 -b(=)44 b(new)h(data_impl)178 b(exemplar_ext)42 b(in)396 -3042 y(let)j(a1)f(=)h(element_exemplar)d(#)j(cre-)396 -3139 y(ate_element)e(dtd)i(\(T_element)e("a"\))h(["att",)g("apple"])396 -3236 y(and)h(b1)f(=)h(element_exemplar)d(#)j(create_element)d(dtd)i -(\(T_element)g("b"\))g([])396 3333 y(and)h(c1)f(=)h(element_exemplar)d -(#)j(create_element)d(dtd)i(\(T_element)g("c"\))g([])396 -3430 y(and)h(a2)f(=)h(element_exemplar)d(#)j(cre-)396 -3527 y(ate_element)e(dtd)i(\(T_element)e("a"\))h(["att",)g("orange"]) -396 3624 y(in)396 3819 y(let)h(cherries)e(=)i(data_exemplar)d(#)j -(create_data)e(dtd)h("Cherries")g(in)396 3916 y(let)h(orange)133 -b(=)45 b(data_exemplar)d(#)j(create_data)e(dtd)h("An)h(orange")e(in)396 -4110 y(a1)i(#)f(add_node)g(b1;)396 4207 y(a1)h(#)f(add_node)g(c1;)396 -4304 y(b1)h(#)f(add_node)g(a2;)396 4401 y(b1)h(#)f(add_node)g -(cherries;)396 4499 y(a2)h(#)f(add_node)g(orange;)396 -4689 y Fv(Alternati)n(v)o(ely)-5 b(,)18 b(the)i(last)h(block)f(of)g -(statements)g(could)f(also)i(be)f(written)g(as:)396 4870 -y Fq(a1)45 b(#)f(set_nodes)g([b1;)g(c1];)p Black 3800 -5278 a Fr(60)p Black eop -%%Page: 61 61 -61 60 bop Black 2225 67 a Fr(Chapter)20 b(3.)g(The)g(objects)g(r)m(epr) -m(esenting)g(the)g(document)p Black 396 579 a Fq(b1)45 -b(#)f(set_nodes)g([a2;)g(cherries];)396 676 y(a2)h(#)f(set_nodes)g -([orange];)396 867 y Fv(The)20 b(root)g(of)g(the)g(tree)g(is)h -Fq(a1)p Fv(,)f(i.e.)g(it)h(is)g(true)f(that)396 1047 -y Fq(x)45 b(#)g(root)f(==)g(a1)396 1238 y Fv(for)20 b(e)n(v)o(ery)f(x)h -(from)f({)i Fq(a1)p Fv(,)f Fq(a2)p Fv(,)g Fq(b1)p Fv(,)g -Fq(c1)p Fv(,)g Fq(cherries)p Fv(,)g Fq(orange)f Fv(}.)396 -1388 y(Furthermore,)f(the)i(follo)n(wing)f(properties)f(hold:)486 -1568 y Fq(a1)44 b(#)h(attribute)e("att")h(=)h(Value)f("apple")396 -1665 y(&)h(a2)f(#)h(attribute)e("att")h(=)h(Value)f("orange")396 -1859 y(&)h(cherries)e(#)i(data)f(=)h("Cherries")396 1956 -y(&)135 b(orange)43 b(#)i(data)f(=)h("An)f(orange")396 -2053 y(&)314 b(a1)44 b(#)h(data)f(=)h("CherriesAn)e(orange")396 -2248 y(&)314 b(a1)44 b(#)h(node_type)e(=)i(T_element)e("a")396 -2345 y(&)314 b(a2)44 b(#)h(node_type)e(=)i(T_element)e("a")396 -2442 y(&)314 b(b1)44 b(#)h(node_type)e(=)i(T_element)e("b")396 -2539 y(&)314 b(c1)44 b(#)h(node_type)e(=)i(T_element)e("c")396 -2636 y(&)i(cherries)e(#)i(node_type)e(=)i(T_data)396 -2733 y(&)135 b(orange)43 b(#)i(node_type)e(=)i(T_data)396 -2928 y(&)314 b(a1)44 b(#)h(sub_nodes)e(=)i([)g(b1;)f(c1)h(])396 -3025 y(&)314 b(a2)44 b(#)h(sub_nodes)e(=)i([)g(orange)f(])396 -3122 y(&)314 b(b1)44 b(#)h(sub_nodes)e(=)i([)g(a2;)f(cherries)g(])396 -3219 y(&)314 b(c1)44 b(#)h(sub_nodes)e(=)i([])396 3316 -y(&)g(cherries)e(#)i(sub_nodes)e(=)i([])396 3413 y(&)135 -b(orange)43 b(#)i(sub_nodes)e(=)i([])396 3608 y(&)314 -b(a2)44 b(#)h(parent)f(==)g(a1)396 3705 y(&)314 b(b1)44 -b(#)h(parent)f(==)g(b1)396 3802 y(&)314 b(c1)44 b(#)h(parent)f(==)g(a1) -396 3899 y(&)h(cherries)e(#)i(parent)f(==)g(b1)396 3996 -y(&)135 b(orange)43 b(#)i(parent)f(==)g(a2)396 4229 y -Fu(Sear)o(ching)19 b(nodes.)g Fv(The)g(follo)n(wing)e(function)h -(searches)h(all)g(nodes)g(of)g(a)g(tree)h(for)e(which)h(a)g(certain)g -(condition)e(holds:)396 4409 y Fq(let)45 b(rec)f(search)g(p)g(t)h(=)486 -4506 y(if)f(p)h(t)g(then)576 4603 y(t)f(::)h(search_list)e(p)h(\(t)h(#) -g(sub_nodes\))486 4700 y(else)576 4797 y(search_list)e(p)h(\(t)h(#)f -(sub_nodes\))p Black 3800 5278 a Fr(61)p Black eop -%%Page: 62 62 -62 61 bop Black 2225 67 a Fr(Chapter)20 b(3.)g(The)g(objects)g(r)m(epr) -m(esenting)g(the)g(document)p Black 396 676 a Fq(and)45 -b(search_list)e(p)h(l)h(=)486 773 y(match)f(l)h(with)576 -870 y([])268 b(-)p Fo(>)45 b Fq([])486 967 y(|)g(t)f(::)h(l')f(-)p -Fo(>)h Fq(\(search)e(p)i(t\))f(@)h(\(search_list)e(p)i(l'\))396 -1065 y(;;)396 1297 y Fv(F)o(or)20 b(e)o(xample,)f(if)h(you)f(w)o(ant)i -(to)f(search)g(all)h(elements)f(of)f(a)i(certain)f(type)f -Fq(et)p Fv(,)i(the)f(function)e Fq(search)i Fv(can)g(be)g(applied)396 -1405 y(as)h(follo)n(ws:)396 1585 y Fq(let)45 b(search_element_type)c -(et)k(t)f(=)486 1682 y(search)g(\(fun)g(x)h(-)p Fo(>)f -Fq(x)h(#)f(node_type)g(=)g(T_element)g(et\))g(t)396 1779 -y(;;)396 2012 y Fu(Getting)20 b(attrib)n(ute)f(v)o(alues.)h -Fv(Suppose)f(we)i(ha)n(v)o(e)f(the)g(declaration:)396 -2192 y Fq()396 -2577 y Fv(In)20 b(this)h(case,)f(e)n(v)o(ery)f(element)h -Fq(e)g Fv(must)h(ha)n(v)o(e)e(an)h(attrib)n(ute)g Fq(a)p -Fv(,)g(otherwise)g(the)g(parser)g(w)o(ould)f(indicate)h(an)g(error)-5 -b(.)19 b(If)h(the)396 2685 y(O'Caml)h(v)n(ariable)e Fq(n)h -Fv(holds)g(the)g(node)f(of)h(the)g(tree)h(corresponding)16 -b(to)21 b(the)f(element,)f(you)g(can)h(get)h(the)f(v)n(alue)f(of)h(the) -396 2793 y(attrib)n(ute)g Fq(a)h Fv(by)396 2973 y Fq(let)45 -b(value_of_a)e(=)h(n)h(#)g(required_string_attribute)40 -b("a")396 3164 y Fv(which)20 b(is)h(more)e(or)h(less)i(an)e(abbre)n -(viation)d(for)396 3344 y Fq(let)45 b(value_of_a)e(=)486 -3442 y(match)h(n)h(#)f(attribute)g("a")g(with)576 3539 -y(Value)g(s)g(->)h(s)486 3636 y(|)g(_)313 b(->)45 b(assert)f(false)396 -3827 y Fv(-)21 b(as)g(the)f(attrib)n(ute)g(is)h(required,)d(the)i -Fq(attribute)f Fv(method)g(al)o(w)o(ays)i(returns)e(a)i -Fq(Value)p Fv(.)396 3976 y(In)f(contrast)g(to)g(this,)h(the)f(attrib)n -(ute)g Fq(b)g Fv(can)g(be)g(omitted.)g(In)f(this)i(case,)g(the)f -(method)396 4084 y Fq(required_string_attribute)d Fv(w)o(orks)j(only)f -(if)h(the)h(attrib)n(ute)f(is)h(there,)e(and)h(the)g(method)f(will)i(f) -o(ail)f(if)h(the)396 4192 y(attrib)n(ute)f(is)h(missing.)f(T)-7 -b(o)20 b(get)h(the)f(v)n(alue,)f(you)g(can)h(apply)g(the)g(method)f -Fq(optional_string_attribute)p Fv(:)396 4372 y Fq(let)45 -b(value_of_b)e(=)h(n)h(#)g(optional_string_attribute)40 -b("b")396 4563 y Fv(No)n(w)-5 b(,)20 b Fq(value_of_b)f -Fv(is)i(of)f(type)g Fq(string)43 b(option)p Fv(,)20 b(and)f -Fq(None)i Fv(represents)e(the)h(omitted)g(attrib)n(ute.)f(Alternati)n -(v)o(ely)-5 b(,)396 4671 y(you)20 b(could)f(also)h(use)h -Fq(attribute)p Fv(:)396 4851 y Fq(let)45 b(value_of_b)e(=)p -Black 3800 5278 a Fr(62)p Black eop -%%Page: 63 63 -63 62 bop Black 2225 67 a Fr(Chapter)20 b(3.)g(The)g(objects)g(r)m(epr) -m(esenting)g(the)g(document)p Black 486 579 a Fq(match)44 -b(n)h(#)f(attribute)g("b")g(with)576 676 y(Value)g(s)313 -b(->)45 b(Some)f(s)486 773 y(|)h(Implied_value)d(->)j(None)486 -870 y(|)g(_)582 b(->)45 b(assert)f(false)396 1103 y Fv(The)20 -b(attrib)n(ute)g Fq(c)h Fv(beha)n(v)o(es)e(much)g(lik)o(e)h -Fq(a)p Fv(,)h(because)e(it)i(has)g(al)o(w)o(ays)f(a)h(v)n(alue.)e(If)h -(the)g(attrib)n(ute)g(is)h(omitted,)f(the)g(def)o(ault,)396 -1211 y(here)g("12345",)e(will)j(be)f(returned)e(instead.)i(Because)g -(of)g(this,)h(you)e(can)h(again)f(use)396 1319 y Fq -(required_string_attribute)e Fv(to)j(get)g(the)h(v)n(alue.)396 -1468 y(The)f(type)g Fq(CDATA)g Fv(is)h(the)f(most)g(general)f(string)h -(type.)g(The)g(types)g Fq(NMTOKEN)p Fv(,)f Fq(ID)p Fv(,)h -Fq(IDREF)p Fv(,)g Fq(ENTITY)p Fv(,)f(and)h(all)396 1576 -y(enumerators)e(and)i(notations)f(are)h(special)h(forms)e(of)h(string)g -(types)g(that)g(restrict)g(the)h(possible)f(v)n(alues.)f(From)396 -1684 y(O'Caml,)h(the)o(y)g(beha)n(v)o(e)f(lik)o(e)h Fq(CDATA)p -Fv(,)g(i.e.)g(you)f(can)h(use)h(the)f(methods)f Fq -(required_string_attribute)e Fv(and)396 1792 y Fq -(optional_string_attribute)p Fv(,)g(too.)396 1941 y(In)j(contrast)g(to) -g(this,)h(the)f(types)g Fq(NMTOKENS)p Fv(,)f Fq(IDREFS)p -Fv(,)g(and)h Fq(ENTITIES)g Fv(mean)f(lists)j(of)e(strings.)g(Suppose)f -(we)h(ha)n(v)o(e)396 2049 y(the)g(declaration:)396 2229 -y Fq()396 2517 y Fv(The)20 -b(type)g Fq(NMTOKENS)f Fv(stands)i(for)e(lists)j(of)e(space-separated)e -(tok)o(ens;)i(for)f(e)o(xample)g(the)h(v)n(alue)g Fq("1)44 -b(abc)h(23ef")396 2625 y Fv(means)20 b(the)g(list)i Fq(["1";)44 -b("abc";)f("23ef"])p Fv(.)20 b(\(Again,)e Fq(IDREFS)i -Fv(and)g Fq(ENTITIES)f Fv(ha)n(v)o(e)h(more)f(restricted)h(v)n -(alues.\))396 2733 y(T)-7 b(o)21 b(get)f(the)g(v)n(alue)g(of)f(attrib)n -(ute)h Fq(d)p Fv(,)h(one)e(can)h(use)396 2913 y Fq(let)45 -b(value_of_d)e(=)h(n)h(#)g(required_list_attribute)c("d")396 -3104 y Fv(or)396 3285 y Fq(let)k(value_of_d)e(=)486 3382 -y(match)h(n)h(#)f(attribute)g("d")g(with)576 3479 y(Valuelist)f(l)i(->) -f(l)486 3576 y(|)h(_)493 b(->)44 b(assert)g(false)396 -3767 y Fv(As)21 b Fq(d)g Fv(is)g(required,)d(the)i(attrib)n(ute)g -(cannot)f(be)h(omitted,)g(and)f(the)h Fq(attribute)g -Fv(method)e(returns)i(al)o(w)o(ays)g(a)396 3875 y Fq(Valuelist)p -Fv(.)396 4024 y(F)o(or)g(optional)f(attrib)n(utes)h(lik)o(e)h -Fq(e)p Fv(,)f(apply)396 4204 y Fq(let)45 b(value_of_e)e(=)h(n)h(#)g -(optional_list_attribute)c("e")396 4395 y Fv(or)396 4576 -y Fq(let)k(value_of_e)e(=)486 4673 y(match)h(n)h(#)f(attribute)g("e")g -(with)576 4770 y(Valuelist)f(l)134 b(->)45 b(l)486 4867 -y(|)g(Implied_value)d(->)j([])p Black 3800 5278 a Fr(63)p -Black eop -%%Page: 64 64 -64 63 bop Black 2225 67 a Fr(Chapter)20 b(3.)g(The)g(objects)g(r)m(epr) -m(esenting)g(the)g(document)p Black 486 579 a Fq(|)45 -b(_)582 b(->)45 b(assert)f(false)396 770 y Fv(Here,)20 -b(the)g(case)h(that)f(the)g(attrib)n(ute)g(is)h(missing)f(counts)g(lik) -o(e)g(the)h(empty)e(list.)-2 1139 y Fp(3.2.7.)35 b(Iterator)n(s)396 -1307 y Fv(There)20 b(are)g(also)g(se)n(v)o(eral)g(iterators)g(in)g -(Pxp_document;)d(please)j(see)h(the)f(mli)h(\002le)f(for)g(details.)g -(Y)-9 b(ou)20 b(can)g(\002nd)396 1415 y(e)o(xamples)f(for)h(them)g(in)g -(the)g("simple_transformation")d(directory)-5 b(.)396 -1595 y Fq(val)45 b(find)f(:)g(?deeply:bool)f(->)889 1692 -y(f:\('ext)h(node)g(->)h(bool\))f(->)g('ext)g(node)h(->)f('ext)g(node) -396 1887 y(val)h(find_all)e(:)i(?deeply:bool)e(->)1069 -1984 y(f:\('ext)g(node)i(->)f(bool\))g(->)h('ext)f(node)g(->)g('ext)h -(node)f(list)396 2178 y(val)h(find_element)d(:)j(?deeply:bool)e(->)1248 -2275 y(string)h(->)g('ext)h(node)f(->)g('ext)g(node)396 -2469 y(val)h(find_all_elements)d(:)i(?deeply:bool)f(->)1472 -2567 y(string)h(->)h('ext)f(node)g(->)g('ext)h(node)f(list)396 -2761 y(exception)g(Skip)396 2858 y(val)h(map_tree)e(:)90 -b(pre:\('exta)43 b(node)h(->)g('extb)g(node\))g(->)1069 -2955 y(?post:\('extb)f(node)h(->)g('extb)g(node\))g(->)1069 -3052 y('exta)g(node)g(->)1248 3149 y('extb)g(node)396 -3441 y(val)h(map_tree_sibl)d(:)755 3538 y(pre:)i(\('exta)g(node)g -(option)g(->)g('exta)g(node)h(->)f('exta)g(node)g(option)g(->)1203 -3635 y('extb)g(node\))g(->)710 3732 y(?post:\('extb)f(node)h(option)g -(->)g('extb)g(node)h(->)f('extb)g(node)g(option)g(->)1203 -3829 y('extb)g(node\))g(->)710 3927 y('exta)g(node)g(->)889 -4024 y('extb)g(node)396 4218 y(val)h(iter_tree)e(:)i(?pre:\('ext)e -(node)h(->)g(unit\))g(->)1114 4315 y(?post:\('ext)f(node)h(->)g(unit\)) -g(->)1114 4412 y('ext)g(node)g(->)1293 4509 y(unit)396 -4704 y(val)h(iter_tree_sibl)d(:)710 4801 y(?pre:)i(\('ext)g(node)g -(option)g(->)h('ext)f(node)g(->)g('ext)h(node)f(option)g(->)g(unit\))g -(->)p Black 3800 5278 a Fr(64)p Black eop -%%Page: 65 65 -65 64 bop Black 2225 67 a Fr(Chapter)20 b(3.)g(The)g(objects)g(r)m(epr) -m(esenting)g(the)g(document)p Black 710 579 a Fq(?post:\('ext)43 -b(node)h(option)g(->)h('ext)f(node)g(->)g('ext)h(node)f(option)g(->)g -(unit\))g(->)710 676 y('ext)g(node)g(->)889 773 y(unit)-2 -1358 y Fx(3.3.)39 b(The)g(c)m(lass)g(type)g Fb(extension)396 -1610 y Fq(class)44 b(type)g([)h('node)f(])h(extension)e(=)486 -1707 y(object)h(\('self\))576 1804 y(method)f(clone)h(:)h('self)665 -1901 y(\(*)g("clone")e(should)h(return)g(an)h(exact)f(deep)g(copy)g(of) -g(the)h(object.)e(*\))576 1998 y(method)g(node)i(:)f('node)665 -2095 y(\(*)h("node")f(returns)f(the)i(corresponding)d(node)i(of)h(this) -f(extension.)f(This)h(method)710 2193 y(*)h(intended)e(to)i(return)f -(exactly)f(what)h(previ-)396 2290 y(ously)g(has)h(been)f(set)g(by)h -("set_node".)710 2387 y(*\))576 2484 y(method)e(set_node)h(:)h('node)f -(->)g(unit)665 2581 y(\(*)h("set_node")e(is)h(invoked)g(once)g(the)h -(extension)e(is)h(associated)g(to)g(a)h(new)710 2678 -y(*)g(node)f(object.)710 2775 y(*\))486 2873 y(end)396 -3063 y Fv(This)21 b(is)g(the)f(type)g(of)g(classes)h(used)f(for)f(node) -h(e)o(xtensions.)e(F)o(or)i(e)n(v)o(ery)f(node)g(of)h(the)g(document)e -(tree,)i(there)g(is)h(not)396 3171 y(only)f(the)g Fq(node)g -Fv(object,)f(b)n(ut)h(also)g(an)g Fq(extension)f Fv(object.)h(The)f -(latter)i(has)f(minimal)f(functionality;)f(it)j(has)f(only)g(the)396 -3279 y(necessary)g(methods)f(to)h(be)g(attached)g(to)g(the)g(node)f -(object)h(containing)e(the)j(details)f(of)g(the)g(node)f(instance.)h -(The)396 3387 y(e)o(xtension)f(object)h(is)h(called)f(e)o(xtension)f -(because)g(its)i(purpose)e(is)i(e)o(xtensibility)-5 b(.)396 -3537 y(F)o(or)20 b(some)g(reasons,)g(it)h(is)g(impossible)e(to)i(deri)n -(v)o(e)d(the)j Fq(node)f Fv(classes)h(\(i.e.)f Fq(element_impl)f -Fv(and)g Fq(data_impl)p Fv(\))g(such)396 3645 y(that)i(the)f -(subclasses)g(can)g(be)g(e)o(xtended)f(by)g(ne)n(w)h(ne)n(w)g(methods.) -f(But)i(subclassing)f(nodes)f(is)i(a)g(great)f(feature,)396 -3753 y(because)g(it)h(allo)n(ws)f(the)g(user)g(to)h(pro)o(vide)d(dif)n -(ferent)g(classes)k(for)d(dif)n(ferent)g(types)h(of)g(nodes.)f(The)h(e) -o(xtension)f(objects)396 3860 y(are)h(a)h(w)o(orkaround)c(that)j(is)i -(as)e(po)n(werful)f(as)i(direct)f(subclassing,)f(the)h(costs)h(are)f -(some)g(notation)f(o)o(v)o(erhead.)p Black 3800 5278 -a Fr(65)p Black eop -%%Page: 66 66 -66 65 bop Black 2225 67 a Fr(Chapter)20 b(3.)g(The)g(objects)g(r)m(epr) -m(esenting)g(the)g(document)p Black 396 579 a Fu(Figur)o(e)g(3-6.)f -(The)i(structur)o(e)f(of)g(nodes)g(and)h(extensions)396 -1928 y - currentpoint currentpoint translate 1 1 scale neg exch neg exch translate - 396 1928 a @beginspecial 0 @llx 0 @lly 206 @urx -140 @ury 2060 @rwi @setspecial -%%BeginDocument: pic/extension_general.ps -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: src/pic/extension_general.fig -%%Creator: fig2dev Version 3.2 Patchlevel 1 -%%CreationDate: Sun Aug 27 02:05:42 2000 -%%For: gerd@ice (Gerd Stolpmann) -%%Orientation: Portrait -%%BoundingBox: 0 0 206 140 -%%Pages: 0 -%%BeginSetup -%%EndSetup -%%Magnification: 0.8000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save --22.0 205.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def - /DrawEllipse { - /endangle exch def - /startangle exch def - /yrad exch def - /xrad exch def - /y exch def - /x exch def - /savematrix mtrx currentmatrix def - x y tr xrad yrad sc 0 0 1 startangle endangle arc - closepath - savematrix setmatrix - } def - -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def -%%EndProlog - -$F2psBegin -10 setmiterlimit -n -1000 5050 m -1000 -1000 l 5514 -1000 l 5514 5050 l cp clip - 0.05039 0.05039 sc -7.500 slw -% Ellipse -n 1575 2250 229 229 0 360 DrawEllipse gs col7 0.75 shd ef gr gs col0 s gr - -% Ellipse -n 1575 3375 225 225 0 360 DrawEllipse gs col7 0.75 shd ef gr gs col0 s gr - -% Ellipse -n 675 3375 229 229 0 360 DrawEllipse gs col7 0.75 shd ef gr gs col0 s gr - -% Ellipse -n 2475 3375 229 229 0 360 DrawEllipse gs col7 0.75 shd ef gr gs col0 s gr - -% Ellipse -n 3600 2475 180 180 0 360 DrawEllipse gs col7 0.50 shd ef gr gs col0 s gr - -% Ellipse -n 2880 2475 180 180 0 360 DrawEllipse gs col7 0.50 shd ef gr gs col0 s gr - -% Ellipse -n 4320 2475 186 186 0 360 DrawEllipse gs col7 0.50 shd ef gr gs col0 s gr - -% Ellipse -n 3600 1485 186 186 0 360 DrawEllipse gs col7 0.50 shd ef gr gs col0 s gr - -% Polyline -n 675 3150 m 1395 2385 l gs col0 s gr -% Polyline -n 1575 2475 m 1575 3150 l gs col0 s gr -% Polyline -n 1755 2385 m 2475 3150 l gs col0 s gr -% Polyline - [60] 0 sd -gs clippath -3288 1467 m 3412 1462 l 3305 1524 l 3435 1487 l 3418 1429 l cp -clip -n 1537 2010 m 3412 1462 l gs col0 s gr gr - [] 0 sd -% arrowhead -n 3288 1467 m 3412 1462 l 3305 1524 l col0 s -% Polyline - [60] 0 sd -gs clippath -1796 2042 m 1672 2047 l 1779 1984 l 1649 2022 l 1666 2080 l cp -clip -n 3412 1537 m 1672 2047 l gs col0 s gr gr - [] 0 sd -% arrowhead -n 1796 2042 m 1672 2047 l 1779 1984 l col0 s -% Polyline - [60] 0 sd -gs clippath -2584 2524 m 2707 2512 l 2604 2581 l 2731 2535 l 2711 2479 l cp -933 3183 m 810 3195 l 913 3126 l 786 3172 l 806 3228 l cp -clip -n 810 3195 m 2707 2512 l gs col0 s gr gr - [] 0 sd -% arrowhead -n 933 3183 m 810 3195 l 913 3126 l col0 s -% arrowhead -n 2584 2524 m 2707 2512 l 2604 2581 l col0 s -% Polyline - [60] 0 sd -gs clippath -3319 2594 m 3442 2580 l 3340 2650 l 3467 2603 l 3446 2547 l cp -1863 3203 m 1740 3217 l 1842 3147 l 1715 3194 l 1736 3250 l cp -clip -n 1740 3217 m 3442 2580 l gs col0 s gr gr - [] 0 sd -% arrowhead -n 1863 3203 m 1740 3217 l 1842 3147 l col0 s -% arrowhead -n 3319 2594 m 3442 2580 l 3340 2650 l col0 s -% Polyline - [60] 0 sd -gs clippath -4054 2626 m 4177 2610 l 4076 2682 l 4202 2632 l 4180 2577 l cp -2763 3194 m 2640 3210 l 2741 3138 l 2615 3188 l 2637 3243 l cp -clip -n 2640 3210 m 4177 2610 l gs col0 s gr gr - [] 0 sd -% arrowhead -n 2763 3194 m 2640 3210 l 2741 3138 l col0 s -% arrowhead -n 4054 2626 m 4177 2610 l 4076 2682 l col0 s -/Courier-Bold ff 180.00 scf sf -3555 1530 m -gs 1 -1 sc (x) col0 sh gr -/Courier-Bold ff 180.00 scf sf -1530 2295 m -gs 1 -1 sc (n) col0 sh gr -/Courier ff 180.00 scf sf -1658 1950 m -gs 1 -1 sc 17.0 rot (n # extension) col0 sh gr -/Courier ff 180.00 scf sf -2475 1950 m -gs 1 -1 sc 17.0 rot (x # node) col0 sh gr -/Helvetica ff 180.00 scf sf -1020 4050 m -gs 1 -1 sc (The node tree) col0 sh gr -/Helvetica ff 180.00 scf sf -3225 3285 m -gs 1 -1 sc (The extensions) col0 sh gr -$F2psEnd -rs - -%%EndDocument - @endspecial 396 1928 a - currentpoint currentpoint translate 1 1 div 1 1 div scale neg exch -neg exch translate - 396 1928 a 357 x Fv(The)f(picture)f(sho)n(ws)i -(ho)n(w)e(the)i(nodes)e(and)h(e)o(xtensions)f(are)h(link)o(ed)f -(together)-5 b(.)19 b(Ev)o(ery)g(node)g(has)i(a)f(reference)f(to)h(its) -396 2393 y(e)o(xtension,)f(and)g(e)n(v)o(ery)g(e)o(xtension)g(has)h(a)h -(reference)d(to)j(its)g(node.)e(The)h(methods)f Fq(extension)g -Fv(and)h Fq(node)g Fv(follo)n(w)396 2501 y(these)h(references;)e(a)h -(typical)g(phrase)f(is)396 2681 y Fq(self)44 b(#)h(node)f(#)h -(attribute)e("xy")396 2872 y Fv(to)21 b(get)f(the)g(v)n(alue)g(of)f(an) -i(attrib)n(ute)e(from)h(a)g(method)f(de\002ned)g(in)h(the)h(e)o -(xtension)d(object;)i(or)396 3053 y Fq(self)44 b(#)h(node)f(#)h(iter) -486 3150 y(\(fun)f(n)h(-)p Fo(>)f Fq(n)h(#)f(extension)g(#)g(my_method) -g(...\))396 3341 y Fv(to)21 b(iterate)f(o)o(v)o(er)f(the)h(subnodes)f -(and)g(to)i(call)f Fq(my_method)f Fv(of)h(the)h(corresponding)16 -b(e)o(xtension)j(objects.)396 3490 y(Note)h(that)h(e)o(xtension)d -(objects)i(do)g(not)g(ha)n(v)o(e)g(references)e(to)j(subnodes)e(\(or)g -("sube)o(xtensions"\))f(themselv)o(es;)h(in)i(order)396 -3598 y(to)g(get)f(one)f(of)h(the)h(children)d(of)i(an)g(e)o(xtension)f -(you)g(must)i(\002rst)g(go)e(to)i(the)f(node)f(object,)h(then)f(get)h -(the)h(child)e(node,)396 3706 y(and)h(\002nally)g(reach)f(the)i(e)o -(xtension)d(that)j(is)g(logically)e(the)h(child)g(of)g(the)g(e)o -(xtension)f(you)g(started)h(with.)-2 4034 y Fp(3.3.1.)35 -b(Ho)n(w)f(to)f(de\002ne)h(an)g(e)n(xtension)i(c)n(lass)396 -4202 y Fv(At)21 b(minimum,)e(you)g(must)h(de\002ne)g(the)g(methods)f -Fq(clone)p Fv(,)h Fq(node)p Fv(,)g(and)f Fq(set_node)h -Fv(such)f(that)i(your)e(class)i(is)396 4310 y(compatible)e(with)h(the)h -(type)e Fq(extension)p Fv(.)g(The)h(method)f Fq(set_node)g -Fv(is)i(called)f(during)f(the)h(initialization)g(of)g(the)396 -4418 y(node,)f(or)h(after)g(a)h(node)e(has)h(been)g(cloned;)f(the)h -(node)f(object)h(in)m(v)n(ok)o(es)f Fq(set_node)g Fv(on)h(the)g(e)o -(xtension)f(object)h(to)g(tell)396 4526 y(it)h(that)f(this)h(node)e(is) -i(no)n(w)f(the)g(object)g(the)g(e)o(xtension)f(is)i(link)o(ed)f(to.)g -(The)f(e)o(xtension)g(must)h(return)f(the)i(node)e(object)396 -4633 y(passed)h(as)h(ar)o(gument)d(of)i Fq(set_node)f -Fv(when)h(the)g Fq(node)g Fv(method)f(is)i(called.)p -Black 3798 5278 a Fr(66)p Black eop -%%Page: 67 67 -67 66 bop Black 2225 67 a Fr(Chapter)20 b(3.)g(The)g(objects)g(r)m(epr) -m(esenting)g(the)g(document)p Black 396 579 a Fv(The)g -Fq(clone)g Fv(method)f(must)h(return)f(a)i(cop)o(y)e(of)h(the)g(e)o -(xtension)f(object;)h(at)g(least)h(the)f(object)g(itself)h(must)f(be) -396 687 y(duplicated,)f(b)n(ut)h(if)g(required,)e(the)j(cop)o(y)e -(should)g(deeply)g(duplicate)g(all)i(objects)f(and)g(v)n(alues)g(that)g -(are)g(referred)e(by)396 795 y(the)i(e)o(xtension,)f(too.)h(Whether)f -(this)i(is)g(required,)d(depends)h(on)h(the)g(application;)f -Fq(clone)h Fv(is)h(in)m(v)n(ok)o(ed)d(by)i(the)g(node)396 -903 y(object)g(when)g(one)f(of)h(its)h(cloning)e(methods)g(is)i -(called.)396 1052 y(A)g(good)e(starting)h(point)f(for)h(an)g(e)o -(xtension)e(class:)396 1232 y Fq(class)44 b(custom_extension)e(=)486 -1329 y(object)i(\(self\))576 1524 y(val)g(mutable)g(node)g(=)g(\(None)g -(:)h(custom_extension)d(node)i(option\))576 1718 y(method)f(clone)h(=)h -({<)g(>})576 1912 y(method)e(node)i(=)665 2009 y(match)f(node)g(with) -845 2107 y(None)g(->)934 2204 y(assert)g(false)755 2301 -y(|)h(Some)f(n)g(->)h(n)576 2495 y(method)e(set_node)h(n)h(=)665 -2592 y(node)f(<-)h(Some)f(n)486 2786 y(end)396 2977 y -Fv(This)21 b(class)g(is)g(compatible)e(with)h Fq(extension)p -Fv(.)f(The)h(purpose)e(of)i(de\002ning)f(such)h(a)h(class)g(is,)g(of)f -(course,)f(adding)396 3085 y(further)g(methods;)g(and)h(you)f(can)h(do) -g(it)h(without)e(restriction.)396 3235 y(Often,)h(you)f(w)o(ant)h(not)g -(only)g(one)f(e)o(xtension)g(class.)i(In)f(this)h(case,)f(it)h(is)g -(the)f(simplest)h(w)o(ay)f(that)g(all)h(your)e(classes)i(\(for)396 -3343 y(one)f(kind)f(of)h(document\))e(ha)n(v)o(e)i(the)g(same)g(type)g -(\(with)g(respect)g(to)g(the)g(interf)o(ace;)g(i.e.)g(it)h(does)f(not)g -(matter)g(if)g(your)396 3451 y(classes)i(dif)n(fer)d(in)h(the)g -(de\002ned)f(pri)n(v)n(ate)h(methods)f(and)g(instance)h(v)n(ariables,)f -(b)n(ut)h(public)g(methods)f(count\).)f(This)396 3559 -y(approach)g(a)n(v)n(oids)i(lots)h(of)f(coercions)f(and)h(problems)e -(with)j(type)f(incompatibilities.)e(It)j(is)g(simple)f(to)g(implement:) -396 3739 y Fq(class)44 b(custom_extension)e(=)486 3836 -y(object)i(\(self\))576 3933 y(val)g(mutable)g(node)g(=)g(\(None)g(:)h -(custom_extension)d(node)i(option\))576 4127 y(method)f(clone)h(=)h -(...)269 b(\(*)44 b(see)g(above)g(*\))576 4224 y(method)f(node)i(=)f -(...)314 b(\(*)44 b(see)g(above)g(*\))576 4322 y(method)f(set_node)h(n) -h(=)f(...)h(\(*)f(see)g(above)g(*\))576 4516 y(method)f(virtual)h -(my_method1)f(:)i(...)576 4613 y(method)e(virtual)h(my_method2)f(:)i -(...)576 4710 y(...)f(\(*)g(etc.)h(*\))486 4807 y(end)p -Black 3797 5278 a Fr(67)p Black eop -%%Page: 68 68 -68 67 bop Black 2225 67 a Fr(Chapter)20 b(3.)g(The)g(objects)g(r)m(epr) -m(esenting)g(the)g(document)p Black 396 676 a Fq(class)44 -b(custom_extension_kind_A)d(=)486 773 y(object)j(\(self\))576 -870 y(inherit)f(custom_extension)576 1065 y(method)g(my_method1)h(=)g -(...)576 1162 y(method)f(my_method2)h(=)g(...)486 1259 -y(end)396 1453 y(class)g(custom_extension_kind_B)d(=)486 -1550 y(object)j(\(self\))576 1647 y(inherit)f(custom_extension)576 -1842 y(method)g(my_method1)h(=)g(...)576 1939 y(method)f(my_method2)h -(=)g(...)486 2036 y(end)396 2227 y Fv(If)20 b(a)h(class)g(does)f(not)g -(need)f(a)i(method)e(\(e.g.)g(because)h(it)h(does)e(not)h(mak)o(e)g -(sense,)g(or)g(it)h(w)o(ould)f(violate)f(some)396 2335 -y(important)g(condition\),)f(it)j(is)g(possible)f(to)g(de\002ne)g(the)g -(method)f(and)g(to)i(al)o(w)o(ays)f(raise)h(an)f(e)o(xception)e(when)i -(the)396 2443 y(method)f(is)i(in)m(v)n(ok)o(ed)e(\(e.g.)g -Fq(assert)44 b(false)p Fv(\).)396 2592 y(The)20 b(latter)g(is)i(a)e -(strong)g(recommendation:)c(do)k(not)g(try)g(to)g(further)f(specialize) -h(the)g(types)g(of)g(e)o(xtension)f(objects.)h(It)g(is)396 -2700 y(dif)n(\002cult,)g(sometimes)g(e)n(v)o(en)f(impossible,)g(and)h -(almost)g(ne)n(v)o(er)f(w)o(orth-while.)-2 3070 y Fp(3.3.2.)35 -b(Ho)n(w)f(to)f(bind)h(e)n(xtension)h(c)n(lasses)h(to)d(element)i -(types)396 3237 y Fv(Once)20 b(you)f(ha)n(v)o(e)h(de\002ned)f(your)g(e) -o(xtension)g(classes,)i(you)e(can)h(bind)g(them)f(to)i(element)e -(types.)h(The)g(simplest)h(case)f(is)396 3345 y(that)h(you)e(ha)n(v)o -(e)g(only)h(one)f(class)j(and)d(that)i(this)f(class)h(is)h(to)e(be)g -(al)o(w)o(ays)h(used.)e(The)h(parsing)f(functions)g(in)h(the)h(module) -396 3453 y Fq(Pxp_yacc)f Fv(tak)o(e)g(a)h Fq(spec)f Fv(ar)o(gument)d -(which)j(can)g(be)g(customized.)f(If)h(your)f(single)h(class)h(has)g -(the)f(name)f Fq(c)p Fv(,)i(this)396 3561 y(ar)o(gument)d(should)h(be) -396 3741 y Fq(let)45 b(spec)f(=)486 3839 y(make_spec_from_alist)576 -3936 y(~data_exemplar:)535 b(\(new)44 b(data_impl)g(c\))576 -4033 y(~default_element_exemplar:)c(\(new)k(element_impl)f(c\))576 -4130 y(~element_alist:)535 b([])576 4227 y(\(\))396 4418 -y Fv(This)21 b(means)f(that)g(data)g(nodes)f(will)i(be)f(created)g -(from)f(the)h(e)o(x)o(emplar)e(passed)i(by)g(~data_e)o(x)o(emplar)d -(and)j(that)g(all)396 4526 y(element)g(nodes)f(will)i(be)f(made)g(from) -f(the)h(e)o(x)o(emplar)e(speci\002ed)i(by)g(~def)o(ault_element_e)o(x)o -(emplar)-5 b(.)15 b(In)396 4634 y(~element_alist,)k(you)h(can)g(pass)g -(that)h(dif)n(ferent)d(e)o(x)o(emplars)h(are)h(to)g(be)g(used)g(for)g -(dif)n(ferent)e(element)i(types;)g(b)n(ut)g(this)396 -4742 y(is)h(an)g(optional)d(feature.)h(If)h(you)g(do)g(not)f(need)h -(it,)h(pass)f(the)g(empty)g(list.)p Black 3800 5278 a -Fr(68)p Black eop -%%Page: 69 69 -69 68 bop Black 2225 67 a Fr(Chapter)20 b(3.)g(The)g(objects)g(r)m(epr) -m(esenting)g(the)g(document)p Black 396 579 a Fv(Remember)f(that)i(an)f -(e)o(x)o(emplar)e(is)j(a)g(\(node,)d(e)o(xtension\))h(pair)g(that)i -(serv)o(es)f(as)h(pattern)e(when)h(ne)n(w)g(nodes)f(\(and)g(the)396 -687 y(corresponding)e(e)o(xtension)i(objects\))g(are)h(added)f(to)i -(the)f(document)e(tree.)i(In)g(this)h(case,)f(the)g(e)o(x)o(emplar)f -(contains)g Fq(c)i Fv(as)396 795 y(e)o(xtension,)e(and)g(when)h(nodes)f -(are)i(created,)e(the)h(e)o(x)o(emplar)e(is)j(cloned,)e(and)h(cloning)f -(mak)o(es)h(also)g(a)h(cop)o(y)e(of)h Fq(c)h Fv(such)396 -903 y(that)g(all)f(nodes)g(of)g(the)g(document)e(tree)i(will)h(ha)n(v)o -(e)f(a)g(cop)o(y)g(of)g Fq(c)g Fv(as)h(e)o(xtension.)396 -1052 y(The)f Fq(~element_alist)f Fv(ar)o(gument)e(can)j(bind)g -(speci\002c)g(element)g(types)g(to)g(speci\002c)g(e)o(x)o(emplars;)f -(as)i(e)o(x)o(emplars)396 1160 y(may)f(be)g(instances)g(of)g(dif)n -(ferent)f(classes)i(it)g(is)g(ef)n(fecti)n(v)o(ely)d(possible)i(to)h -(bind)e(element)h(types)g(to)g(classes.)h(F)o(or)396 -1268 y(e)o(xample,)e(if)h(the)g(element)g(type)g("p")g(is)h -(implemented)d(by)i(class)h("c_p",)e(and)h("q")g(is)h(realized)f(by)f -("c_q",)h(you)f(can)396 1376 y(pass)i(the)f(follo)n(wing)f(v)n(alue:) -396 1556 y Fq(let)45 b(spec)f(=)486 1653 y(make_spec_from_alist)576 -1750 y(~data_exemplar:)535 b(\(new)44 b(data_impl)g(c\))576 -1847 y(~default_element_exemplar:)c(\(new)k(element_impl)f(c\))576 -1945 y(~element_alist:)665 2042 y([)i("p",)f(new)g(element_impl)f(c_p;) -755 2139 y("q",)h(new)g(element_impl)f(c_q;)665 2236 -y(])576 2333 y(\(\))396 2524 y Fv(The)20 b(e)o(xtension)f(object)h -Fq(c)g Fv(is)h(still)h(used)e(for)f(all)i(data)f(nodes)f(and)h(for)g -(all)g(other)g(element)f(types.)-2 3026 y Fx(3.4.)39 -b(Details)f(of)i(the)f(mapping)e(fr)m(om)i(XML)g(te)n(xt)g(to)g(the)g -(tree)-2 3212 y(representation)-2 3540 y Fp(3.4.1.)c(The)f -(representation)h(of)e(c)o(haracter)n(-free)h(elements)396 -3708 y Fv(If)20 b(an)g(element)g(declaration)f(does)h(not)f(allo)n(w)i -(the)f(element)f(to)i(contain)e(character)g(data,)h(the)g(follo)n(wing) -e(rules)j(apply)-5 b(.)396 3858 y(If)20 b(the)h(element)e(must)h(be)g -(empty)-5 b(,)19 b(i.e.)h(it)h(is)g(declared)e(with)i(the)f(k)o(e)o(yw) -o(ord)e Fq(EMPTY)p Fv(,)i(the)g(element)g(instance)g(must)g(be)396 -3965 y(ef)n(fecti)n(v)o(ely)f(empty)g(\(it)h(must)h(not)f(e)n(v)o(en)f -(contain)g(whitespace)h(characters\).)e(The)i(parser)g(guarantees)e -(that)j(a)f(declared)396 4073 y Fq(EMPTY)g Fv(element)g(does)g(ne)n(v)o -(er)f(contain)g(a)h(data)g(node,)f(e)n(v)o(en)g(if)i(the)f(data)g(node) -f(represents)h(the)g(empty)f(string.)396 4223 y(If)h(the)h(element)e -(declaration)g(only)g(permits)h(other)f(elements)h(to)h(occur)e(within) -h(that)g(element)g(b)n(ut)g(not)g(character)396 4331 -y(data,)g(it)h(is)g(still)g(possible)f(to)h(insert)f(whitespace)g -(characters)f(between)g(the)h(subelements.)f(The)h(parser)g(ignores)f -(these)396 4439 y(characters,)g(too,)h(and)g(does)f(not)h(create)g -(data)g(nodes)g(for)f(them.)396 4588 y Fu(Example.)h -Fv(Consider)g(the)g(follo)n(wing)f(element)g(types:)396 -4768 y Fq()396 -4865 y()p Black 3800 -5278 a Fr(69)p Black eop -%%Page: 70 70 -70 69 bop Black 2225 67 a Fr(Chapter)20 b(3.)g(The)g(objects)g(r)m(epr) -m(esenting)g(the)g(document)p Black 396 579 a Fq()396 770 y Fv(Only)20 b Fq(x)h Fv(may)e(contain)h -(character)e(data,)i(the)h(k)o(e)o(yw)o(ord)d Fq(#PCDATA)h -Fv(indicates)h(this.)h(The)f(other)f(types)h(are)396 -878 y(character)n(-free.)396 1027 y(The)g(XML)g(term)396 -1207 y Fq()44 b()396 1398 y Fv(will)21 -b(be)f(internally)f(represented)g(by)g(an)i(element)e(node)g(for)h -Fq(x)g Fv(with)h(three)f(subnodes:)e(the)j(\002rst)g -Fq(z)f Fv(element,)g(a)g(data)396 1506 y(node)f(containing)g(the)h -(space)g(character)m(,)e(and)i(the)g(second)g Fq(z)g -Fv(element.)g(In)f(contrast)h(to)g(this,)h(the)f(term)396 -1686 y Fq()44 b()396 1877 y Fv(is)21 b(represented)e(by) -h(an)g(element)f(node)g(for)h Fq(y)h Fv(with)f(only)f -Fr(two)i Fv(subnodes,)e(the)h(tw)o(o)g Fq(z)h Fv(elements.)e(There)h -(is)h(no)f(data)396 1985 y(node)f(for)h(the)g(space)g(character)f -(because)h(spaces)g(are)g(ignored)f(in)h(the)g(character)n(-free)e -(element)i Fq(y)p Fv(.)-2 2355 y Fp(3.4.2.)35 b(The)f(representation)h -(of)e(c)o(haracter)h(data)396 2523 y Fv(The)20 b(XML)g(speci\002cation) -g(allo)n(ws)g(all)h(Unicode)e(characters)g(in)i(XML)f(te)o(xts.)g(This) -g(parser)g(can)g(be)g(con\002gured)e(such)396 2631 y(that)j(UTF-8)e(is) -i(used)f(to)h(represent)e(the)h(characters)f(internally;)g(ho)n(we)n(v) -o(er)m(,)f(the)i(def)o(ault)g(character)e(encoding)h(is)396 -2738 y(ISO-8859-1.)e(\(Currently)-5 b(,)18 b(no)i(other)f(encodings)g -(are)h(possible)g(for)f(the)i(internal)e(string)h(representation;)e -(the)i(type)396 2846 y Fq(Pxp_types.rep_encoding)d Fv(enumerates)i(the) -h(possible)g(encodings.)e(Principially)-5 b(,)19 b(the)h(parser)g -(could)f(use)h(an)o(y)396 2954 y(encoding)e(that)j(is)g -(ASCII-compatible,)d(b)n(ut)i(there)g(are)g(currently)e(only)i(le)o -(xical)f(analyzers)h(for)f(UTF-8)h(and)396 3062 y(ISO-8859-1.)d(It)k -(is)g(currently)d(impossible)i(to)g(use)h(UTF-16)e(or)h(UCS-4)g(as)h -(internal)f(encodings)e(\(or)i(other)f(multibyte)396 -3170 y(encodings)g(which)g(are)h(not)g(ASCII-compatible\))e(unless)i -(major)g(parts)g(of)g(the)g(parser)g(are)g(re)n(written)f(-)i(unlik)o -(ely)-5 b(...\))396 3320 y(The)20 b(internal)g(encoding)e(may)h(be)h -(dif)n(ferent)f(from)g(the)h(e)o(xternal)f(encoding)f(\(speci\002ed)i -(in)g(the)g(XML)h(declaration)396 3428 y Fo(<)p Fq(?xml)44 -b(...)g(encoding="..."?)p Fo(>)p Fv(\);)18 b(in)j(this)f(case)h(the)f -(strings)g(are)g(automatically)f(con)m(v)o(erted)f(to)i(the)g(internal) -396 3535 y(encoding.)396 3685 y(If)g(the)h(internal)e(encoding)f(is)j -(ISO-8859-1,)c(it)k(is)g(possible)f(that)g(there)g(are)g(characters)g -(that)g(cannot)f(be)h(represented.)396 3793 y(In)g(this)h(case,)f(the)g -(parser)g(ignores)f(such)h(characters)f(and)h(prints)g(a)h(w)o(arning)e -(\(to)h(the)g Fq(collect_warning)e Fv(object)396 3901 -y(that)j(must)f(be)g(passed)g(when)g(the)g(parser)f(is)i(called\).)396 -4050 y(The)f(XML)g(speci\002cation)g(allo)n(ws)g(lines)h(to)f(be)g -(separated)g(by)f(single)h(LF)h(characters,)e(by)h(CR)h(LF)g(character) -396 4158 y(sequences,)e(or)h(by)g(single)g(CR)i(characters.)d -(Internally)-5 b(,)18 b(these)i(separators)f(are)h(al)o(w)o(ays)h(con)m -(v)o(erted)d(to)i(single)g(LF)396 4266 y(characters.)396 -4416 y(The)g(parser)g(guarantees)e(that)j(there)e(are)i(ne)n(v)o(er)d -(tw)o(o)j(adjacent)e(data)h(nodes;)g(if)g(necessary)-5 -b(,)19 b(data)h(material)g(that)g(w)o(ould)396 4523 y(otherwise)g(be)g -(represented)e(by)i(se)n(v)o(eral)g(nodes)f(is)i(collapsed)f(into)f -(one)h(node.)f(Note)h(that)g(you)g(can)g(still)h(create)f(node)396 -4631 y(trees)h(with)f(adjacent)g(data)g(nodes;)f(ho)n(we)n(v)o(er)m(,)f -(the)i(parser)g(does)f(not)h(return)f(such)h(trees.)p -Black 3800 5278 a Fr(70)p Black eop -%%Page: 71 71 -71 70 bop Black 2225 67 a Fr(Chapter)20 b(3.)g(The)g(objects)g(r)m(epr) -m(esenting)g(the)g(document)p Black 396 579 a Fv(Note)g(that)h(CD)m(A) --9 b(T)h(A)20 b(sections)g(are)g(not)g(represented)f(specially;)h(such) -g(sections)g(are)g(added)f(to)h(the)h(current)d(data)396 -687 y(material)i(that)g(being)g(collected)f(for)h(the)g(ne)o(xt)f(data) -h(node.)-2 1056 y Fp(3.4.3.)35 b(The)f(representation)h(of)e(entities)h -(within)g(documents)396 1224 y Fr(Entities)21 b(ar)m(e)f(not)g(r)m(epr) -m(esented)f(within)i(documents!)d Fv(If)i(the)h(parser)e(\002nds)h(an)h -(entity)e(reference)g(in)h(the)g(document)396 1332 y(content,)f(the)h -(reference)f(is)i(immediately)e(e)o(xpanded,)e(and)j(the)g(parser)g -(reads)g(the)g(e)o(xpansion)e(te)o(xt)i(instead)g(of)g(the)396 -1440 y(reference.)-2 1810 y Fp(3.4.4.)35 b(The)f(representation)h(of)e -(attrib)n(utes)396 1977 y Fv(As)21 b(attrib)n(ute)f(v)n(alues)g(are)g -(composed)e(of)i(Unicode)f(characters,)g(too,)h(the)g(same)h(problems)d -(with)j(the)f(character)396 2085 y(encoding)e(arise)j(as)g(for)e -(character)g(material.)h(Attrib)n(ute)g(v)n(alues)g(are)g(con)m(v)o -(erted)d(to)k(the)f(internal)f(encoding,)f(too;)i(and)396 -2193 y(if)h(there)e(are)i(characters)e(that)h(cannot)f(be)h -(represented,)e(these)j(are)f(dropped,)e(and)h(a)i(w)o(arning)e(is)i -(printed.)396 2343 y(Attrib)n(ute)f(v)n(alues)g(are)g(normalized)e -(before)h(the)o(y)h(are)g(returned)e(by)i(methods)f(lik)o(e)h -Fq(attribute)p Fv(.)f(First,)i(an)o(y)396 2451 y(remaining)e(entity)h -(references)e(are)i(e)o(xpanded;)e(if)j(necessary)-5 -b(,)19 b(e)o(xpansion)f(is)j(performed)c(recursi)n(v)o(ely)-5 -b(.)18 b(Second,)396 2558 y(ne)n(wline)i(characters)f(\(an)o(y)g(of)h -(LF)-7 b(,)21 b(CR)g(LF)-7 b(,)21 b(or)f(CR)h(characters\))e(are)h(con) -m(v)o(erted)e(to)i(single)g(space)h(characters.)e(Note)396 -2666 y(that)i(especially)e(the)i(latter)f(action)g(is)h(prescribed)d -(by)i(the)g(XML)g(standard)f(\(b)n(ut)41 b(is)21 b(not)f(con)m(v)o -(erted)e(such)i(that)g(it)h(is)396 2774 y(still)h(possible)e(to)g -(include)f(line)h(feeds)g(into)g(attrib)n(utes\).)-2 -3144 y Fp(3.4.5.)35 b(The)f(representation)h(of)e(pr)n(ocessing)h -(instructions)396 3312 y Fv(Processing)20 b(instructions)f(are)h -(parsed)g(to)g(some)g(e)o(xtent:)f(The)h(\002rst)h(w)o(ord)f(of)g(the)g -(PI)g(is)i(called)e(the)g(tar)o(get,)f(and)g(it)i(is)396 -3420 y(stored)f(separated)f(from)g(the)i(rest)f(of)g(the)g(PI:)396 -3600 y Fq()396 3791 y Fv(The)20 b(e)o(xact)g -(location)f(where)h(a)g(PI)h(occurs)e(is)i(not)f(represented)f(\(by)g -(def)o(ault\).)g(The)h(parser)f(puts)i(the)f(PI)g(into)g(the)396 -3899 y(object)g(that)g(represents)g(the)g(embracing)e(construct)h(\(an) -h(element,)f(a)i(DTD,)f(or)g(the)g(whole)g(document\);)e(that)i(means) -396 4007 y(you)g(can)g(\002nd)f(out)h(which)g(PIs)h(occur)e(in)h(a)h -(certain)f(element,)f(in)h(the)h(DTD,)f(or)g(in)g(the)g(whole)g -(document,)e(b)n(ut)i(you)396 4114 y(cannot)f(lookup)g(the)h(e)o(xact)g -(position)f(within)h(the)g(construct.)396 4264 y(If)g(you)g(require)e -(the)j(e)o(xact)e(location)h(of)g(PIs,)g(it)h(is)g(possible)f(to)g -(create)g(e)o(xtra)g(nodes)f(for)h(them.)f(This)i(mode)e(is)396 -4372 y(controled)g(by)g(the)i(option)e Fq(enable_pinstr_nodes)p -Fv(.)e(The)j(additional)f(nodes)g(ha)n(v)o(e)h(the)g(node)f(type)h -Fq(T_pinstr)396 4480 y Fn(target)p Fv(,)g(and)f(are)i(created)e(from)g -(special)h(e)o(x)o(emplars)f(contained)f(in)j(the)f Fq(spec)g -Fv(\(see)g(pxp_document.mli\).)p Black 3800 5278 a Fr(71)p -Black eop -%%Page: 72 72 -72 71 bop Black 2225 67 a Fr(Chapter)20 b(3.)g(The)g(objects)g(r)m(epr) -m(esenting)g(the)g(document)p Black -2 583 a Fp(3.4.6.)35 -b(The)f(representation)h(of)e(comments)396 751 y Fv(Normally)-5 -b(,)19 b(comments)g(are)h(not)g(represented;)e(the)o(y)i(are)g(dropped) -e(by)h(def)o(ault.)h(Ho)n(we)n(v)o(er)m(,)e(if)i(you)f(require)g(them,) -h(it)h(is)396 859 y(possible)f(to)h(create)e Fq(T_comment)h -Fv(nodes)f(for)h(them.)f(This)i(mode)e(can)h(be)g(speci\002ed)g(by)g -(the)g(option)396 967 y Fq(enable_comment_nodes)p Fv(.)d(Comment)j -(nodes)f(are)h(created)g(from)f(special)h(e)o(x)o(emplars)f(contained)f -(in)j(the)f Fq(spec)396 1075 y Fv(\(see)h(pxp_document.mli\).)15 -b(Y)-9 b(ou)19 b(can)h(access)h(the)f(contents)g(of)g(comments)f -(through)f(the)i(method)f Fq(comment)p Fv(.)-2 1444 y -Fp(3.4.7.)35 b(The)f(attrib)n(utes)f Fc(xml:lang)d Fp(and)k -Fc(xml:space)396 1612 y Fv(These)20 b(attrib)n(utes)g(are)g(not)g -(supported)f(specially;)h(the)o(y)f(are)h(handled)f(lik)o(e)h(an)o(y)g -(other)f(attrib)n(ute.)-2 1982 y Fp(3.4.8.)35 b(And)f(what)f(about)h -(namespaces?)396 2149 y Fv(Currently)-5 b(,)19 b(there)g(is)i(no)f -(special)h(support)d(for)i(namespaces.)f(Ho)n(we)n(v)o(er)m(,)f(the)i -(parser)g(allo)n(ws)g(it)h(that)f(the)h(colon)e(occurs)396 -2257 y(in)i(names)e(such)h(that)h(it)g(is)g(possible)f(to)g(implement)f -(namespaces)g(on)h(top)g(of)g(the)g(current)f(API.)396 -2407 y(Some)h(future)f(release)h(of)g(PXP)h(will)g(support)e -(namespaces)g(as)i(b)n(uilt-in)f(feature...)p Black 3800 -5278 a Fr(72)p Black eop -%%Page: 73 73 -73 72 bop Black Black -2 621 a Fs(Chapter)48 b(4.)f(Con\002guring)j -(and)e(calling)f(the)h(par)m(ser)-2 1055 y Fx(4.1.)39 -b(Over)q(vie)n(w)396 1235 y Fv(There)20 b(are)g(the)g(follo)n(wing)f -(main)g(functions)g(in)m(v)n(oking)f(the)i(parser)g(\(in)g(Pxp_yacc\):) -p Black 396 1558 a Ft(\225)p Black 60 w Fr(par)o(se_document_entity:)d -Fv(Y)-9 b(ou)19 b(w)o(ant)i(to)f(parse)g(a)g(complete)g(and)f(closed)h -(document)e(consisting)i(of)g(a)g(DTD)h(and)479 1666 -y(the)f(document)f(body;)g(the)h(body)f(is)i(v)n(alidated)e(against)g -(the)h(DTD.)h(This)f(mode)f(is)i(interesting)f(if)g(you)f(ha)n(v)o(e)h -(a)h(\002le)479 1835 y Fq()f -()g(...)h()396 1984 y Fv(and)20 b(you)f(can)h(accept)g(an) -o(y)f(DTD)i(that)f(is)h(included)e(in)h(the)g(\002le)h(\(e.g.)f -(because)f(the)h(\002le)h(is)g(under)e(your)g(control\).)p -Black 396 2092 a Ft(\225)p Black 60 w Fr(par)o(se_wfdocument_entity:)e -Fv(Y)-9 b(ou)20 b(w)o(ant)g(to)g(parse)g(a)h(complete)e(and)h(closed)f -(document)g(consisting)g(of)h(a)h(DTD)479 2200 y(and)f(the)g(document)e -(body;)h(b)n(ut)h(the)h(body)d(is)k(not)d(v)n(alidated,)g(only)h(check) -o(ed)e(for)i(well-formedness.)e(This)i(mode)f(is)479 -2308 y(preferred)f(if)j(v)n(alidation)d(costs)j(too)f(much)f(time)i(or) -f(if)g(the)g(DTD)h(is)g(missing.)p Black 396 2416 a Ft(\225)p -Black 60 w Fr(par)o(se_dtd_entity:)d Fv(Y)-9 b(ou)20 -b(w)o(ant)g(only)f(to)i(parse)e(an)i(entity)e(\(\002le\))i(containing)d -(the)i(e)o(xternal)f(subset)h(of)g(a)h(DTD.)479 2524 -y(Sometimes)f(it)h(is)g(interesting)e(to)i(read)e(such)h(a)h(DTD,)f -(for)g(e)o(xample)e(to)j(compare)d(it)j(with)g(the)f(DTD)g(included)f -(in)h(a)479 2632 y(document,)e(or)i(to)g(apply)g(the)g(ne)o(xt)f(mode:) -p Black 396 2740 a Ft(\225)p Black 60 w Fr(par)o(se_content_entity:)e -Fv(Y)-9 b(ou)20 b(w)o(ant)g(only)g(to)g(parse)g(an)g(entity)g -(\(\002le\))g(containing)e(a)j(fragment)d(of)i(a)h(document)479 -2848 y(body;)e(this)i(fragment)d(is)j(v)n(alidated)f(against)f(the)h -(DTD)h(you)e(pass)i(to)f(the)g(function.)e(Especially)-5 -b(,)19 b(the)i(fragment)479 2956 y(must)g(not)e(ha)n(v)o(e)h(a)65 -b Fo(<)p Fq(!DOCTYPE)p Fo(>)19 b Fv(clause,)h(and)g(must)g(directly)g -(be)o(gin)f(with)h(an)g(element.)f(The)h(element)g(is)479 -3064 y(v)n(alidated)f(against)h(the)g(DTD.)g(This)h(mode)e(is)i -(interesting)e(if)i(you)e(w)o(ant)h(to)h(check)e(documents)f(against)i -(a)h(\002x)o(ed,)479 3172 y(immutable)e(DTD.)p Black -396 3280 a Ft(\225)p Black 60 w Fr(par)o(se_wfcontent_entity:)f -Fv(This)i(function)f(also)h(parses)g(a)h(single)f(element)g(without)f -(DTD,)h(b)n(ut)g(does)g(not)g(v)n(alidate)479 3388 y(it.)p -Black 396 3495 a Ft(\225)p Black 60 w Fr(e)n(xtr)o(act_dtd_fr)l -(om_document_entity:)15 b Fv(This)20 b(function)f(e)o(xtracts)g(the)i -(DTD)f(from)f(a)i(closed)f(document)479 3603 y(consisting)g(of)g(a)g -(DTD)h(and)e(a)i(document)d(body)-5 b(.)18 b(Both)j(the)f(internal)f -(and)h(the)g(e)o(xternal)f(subsets)h(are)h(e)o(xtracted.)396 -3794 y(In)f(man)o(y)f(cases,)i Fq(parse_document_entity)c -Fv(is)k(the)f(preferred)e(mode)i(to)g(parse)g(a)g(document)f(in)h(a)h -(v)n(alidating)396 3902 y(w)o(ay)-5 b(,)20 b(and)g Fq -(parse_wfdocument_entity)c Fv(is)22 b(the)e(mode)f(of)h(choice)f(to)i -(parse)f(a)g(\002le)h(while)f(only)g(checking)e(for)396 -4010 y(well-formedness.)396 4160 y(There)i(are)g(a)g(number)f(of)h(v)n -(ariations)f(of)h(these)g(modes.)f(One)h(important)f(application)g(of)h -(a)g(parser)g(is)h(to)f(check)396 4268 y(documents)f(of)h(an)g -(untrusted)f(source)g(against)h(a)g(\002x)o(ed)g(DTD.)g(One)g(solution) -f(is)i(to)g(not)f(allo)n(w)g(the)g Fo(<)p Fq(!DOCTYPE)p -Fo(>)396 4375 y Fv(clause)g(in)h(these)f(documents,)e(and)i(treat)g -(the)h(document)d(lik)o(e)i(a)h(fragment)d(\(using)i(mode)f -Fr(par)o(se_content_entity)p Fv(\).)396 4483 y(This)i(is)g(v)o(ery)e -(simple,)h(b)n(ut)g(in\003e)o(xible;)f(users)i(of)e(such)h(a)h(system)f -(cannot)f(e)n(v)o(en)h(de\002ne)f(additional)g(entities)i(to)396 -4591 y(abbre)n(viate)e(frequent)f(phrases)i(of)g(their)g(te)o(xt.)396 -4741 y(It)h(may)e(be)i(necessary)e(to)h(ha)n(v)o(e)g(a)h(more)e -(intelligent)g(check)o(er)-5 b(.)20 b(F)o(or)g(e)o(xample,)e(it)j(is)g -(also)g(possible)e(to)i(parse)f(the)396 4849 y(document)e(to)j(check)e -(fully)-5 b(,)19 b(i.e.)h(with)h(DTD,)f(and)f(to)i(compare)d(this)j -(DTD)f(with)h(the)f(prescribed)f(one.)g(In)h(order)f(to)p -Black 3800 5278 a Fr(73)p Black eop -%%Page: 74 74 -74 73 bop Black 2348 67 a Fr(Chapter)20 b(4.)g(Con\002guring)e(and)i -(calling)f(the)h(par)o(ser)p Black 396 579 a Fv(fully)g(parse)g(the)g -(document,)e(mode)h Fr(par)o(se_document_entity)e Fv(is)k(applied,)e -(and)h(to)g(get)g(the)g(DTD)h(to)f(compare)f(with)396 -687 y(mode)g Fr(par)o(se_dtd_entity)f Fv(can)i(be)h(used.)396 -836 y(There)f(is)h(another)d(v)o(ery)i(important)e(con\002gurable)g -(aspect)i(of)g(the)g(parser:)g(the)g(so-called)g(resolv)o(er)-5 -b(.)19 b(The)h(task)g(of)g(the)396 944 y(resolv)o(er)f(is)i(to)g -(locate)f(the)g(contents)f(of)h(an)g(\(e)o(xternal\))f(entity)g(for)h -(a)h(gi)n(v)o(en)e(entity)g(name,)h(and)f(to)i(mak)o(e)e(the)i -(contents)396 1052 y(accessible)g(as)f(a)h(character)e(stream.)h -(\(Furthermore,)d(it)k(also)f(normalizes)g(the)g(character)f(set;)i(b)n -(ut)f(this)h(is)g(a)f(detail)h(we)396 1160 y(can)f(ignore)f(here.\))g -(Consider)h(you)f(ha)n(v)o(e)h(a)g(\002le)h(called)f -Fq("main.xml")f Fv(containing)396 1340 y Fq()396 1437 y(\045sub;)396 -1628 y Fv(and)20 b(a)h(\002le)f(stored)g(in)g(the)h(subdirectory)c -Fq("sub")j Fv(with)h(name)e Fq("sub.xml")g Fv(containing)396 -1808 y Fq() -396 1906 y(\045subsub;)396 2097 y Fv(and)20 b(a)g(\002le)h(stored)e(in) -h(the)g(subdirectory)d Fq("subsub")j Fv(of)f Fq("sub")h -Fv(with)g(name)f Fq("subsub.xml")g Fv(\(the)g(contents)h(of)f(this)396 -2204 y(\002le)i(do)f(not)g(matter\).)f(Here,)h(the)g(resolv)o(er)f -(must)h(track)g(that)g(the)g(second)g(entity)g Fq(subsub)f -Fv(is)i(located)f(in)g(the)h(directory)396 2312 y Fq("sub/subsub")p -Fv(,)e(i.e.)h(the)g(dif)n(\002culty)f(is)i(to)g(interpret)e(the)h -(system)g(\(\002le\))h(names)e(of)h(entities)h(relati)n(v)o(e)e(to)i -(the)f(entities)396 2420 y(containing)f(them,)g(e)n(v)o(en)g(if)i(the)f -(entities)h(are)f(deeply)f(nested.)396 2570 y(There)h(is)h(not)f(a)g -(\002x)o(ed)g(resolv)o(er)f(already)g(doing)g(e)n(v)o(erything)e(right) -j(-)g(resolving)f(entity)h(names)g(is)h(a)f(task)h(that)f(highly)396 -2678 y(depends)f(on)h(the)g(en)m(vironment.)d(The)j(XML)g -(speci\002cation)f(only)h(demands)f(that)h Fq(SYSTEM)g -Fv(entities)g(are)g(interpreted)396 2786 y(lik)o(e)h(URLs)g(\(which)e -(is)i(not)f(v)o(ery)f(precise,)h(as)h(there)e(are)i(lots)f(of)g(URL)h -(schemes)f(in)g(use\),)g(hoping)f(that)h(this)h(helps)396 -2894 y(o)o(v)o(ercoming)c(the)j(local)g(peculiarities)g(of)g(the)g(en)m -(vironment;)d(the)k(idea)f(is)h(that)f(if)h(you)e(do)h(not)f(kno)n(w)h -(your)396 3001 y(en)m(vironment)d(you)j(can)g(refer)f(to)h(other)g -(entities)g(by)g(denoting)e(URLs)k(for)d(them.)h(I)g(think)g(that)g -(this)h(interpretation)d(of)396 3109 y Fq(SYSTEM)i Fv(names)g(may)g(ha) -n(v)o(e)f(some)h(applications)f(in)i(the)f(internet,)f(b)n(ut)h(it)h -(is)g(not)f(the)g(\002rst)h(choice)f(in)g(general.)396 -3217 y(Because)h(of)f(this,)g(the)g(resolv)o(er)f(is)i(a)g(separate)f -(module)e(of)i(the)h(parser)e(that)h(can)g(be)h(e)o(xchanged)c(by)j -(another)f(one)g(if)396 3325 y(necessary;)h(more)f(precisely)-5 -b(,)19 b(the)h(parser)g(already)f(de\002nes)h(se)n(v)o(eral)f(resolv)o -(ers.)396 3475 y(The)h(follo)n(wing)f(resolv)o(ers)g(do)h(already)f(e)o -(xist:)p Black 396 3707 a Ft(\225)p Black 60 w Fv(Resolv)o(ers)h -(reading)f(from)g(arbitrary)g(input)g(channels.)g(These)h(can)g(be)g -(con\002gured)e(such)i(that)g(a)h(certain)f(ID)g(is)479 -3815 y(associated)g(with)h(the)f(channel;)f(in)h(this)h(case)g(inner)e -(references)g(to)h(e)o(xternal)f(entities)i(can)f(be)g(resolv)o(ed.)e -(There)i(is)479 3923 y(also)h(a)f(special)h(resolv)o(er)e(that)h -(interprets)f(SYSTEM)i(IDs)f(as)h(URLs;)g(this)g(resolv)o(er)e(can)h -(process)g(relati)n(v)o(e)479 4031 y(SYSTEM)h(names)e(and)h(determine)f -(the)h(corresponding)d(absolute)i(URL.)p Black 396 4139 -a Ft(\225)p Black 60 w Fv(A)i(resolv)o(er)e(that)h(reads)g(al)o(w)o -(ays)h(from)e(a)i(gi)n(v)o(en)d(O'Caml)j(string.)e(This)i(resolv)o(er)e -(is)i(not)f(able)g(to)g(resolv)o(e)f(further)479 4247 -y(names)h(unless)g(the)h(string)f(is)h(not)f(associated)g(with)g(an)o -(y)f(name,)h(i.e.)g(if)g(the)g(document)f(contained)f(in)j(the)f -(string)479 4355 y(refers)g(to)g(an)g(e)o(xternal)f(entity)-5 -b(,)20 b(this)g(reference)f(cannot)g(be)h(follo)n(wed)f(in)h(this)h -(case.)p Black 396 4463 a Ft(\225)p Black 60 w Fv(A)g(resolv)o(er)e -(for)g(\002le)i(names.)f(The)g Fq(SYSTEM)g Fv(name)f(is)i(interpreted)e -(as)i(\002le)f(URL)h(with)g(the)f(slash)h("/")f(as)h(separator)479 -4571 y(for)f(directories.)f(-)h(This)h(resolv)o(er)d(is)k(deri)n(v)o -(ed)c(from)h(the)h(generic)f(URL)i(resolv)o(er)-5 b(.)396 -4720 y(The)20 b(interf)o(ace)f(a)i(resolv)o(er)e(must)h(ha)n(v)o(e)g -(is)h(documented,)c(so)k(it)g(is)g(possible)f(to)g(write)g(your)f(o)n -(wn)h(resolv)o(er)-5 b(.)19 b(F)o(or)396 4828 y(e)o(xample,)g(you)g -(could)g(connect)g(the)h(parser)g(with)g(an)h(HTTP)f(client,)g(and)f -(resolv)o(e)h(URLs)h(of)f(the)g(HTTP)g(namespace.)p Black -3800 5278 a Fr(74)p Black eop -%%Page: 75 75 -75 74 bop Black 2348 67 a Fr(Chapter)20 b(4.)g(Con\002guring)e(and)i -(calling)f(the)h(par)o(ser)p Black 396 579 a Fv(The)g(resolv)o(er)f -(classes)i(support)e(that)h(se)n(v)o(eral)g(independent)e(resolv)o(ers) -h(are)h(combined)e(to)i(one)g(more)f(po)n(werful)396 -687 y(resolv)o(er;)g(thus)h(it)h(is)g(possible)f(to)h(combine)d(a)j -(self-written)e(resolv)o(er)g(with)i(the)f(already)f(e)o(xisting)g -(resolv)o(ers.)396 836 y(Note)h(that)h(the)f(e)o(xisting)f(resolv)o -(ers)h(only)f(interpret)g Fq(SYSTEM)h Fv(names,)f(not)h -Fq(PUBLIC)g Fv(names.)g(If)g(it)h(helps)f(you,)f(it)h(is)396 -944 y(possible)g(to)f(de\002ne)h(resolv)o(ers)e(for)h -Fq(PUBLIC)h Fv(names,)f(too;)g(for)g(e)o(xample,)f(such)i(a)g(resolv)o -(er)e(could)h(look)g(up)g(the)h(public)396 1052 y(name)g(in)g(a)h(hash) -f(table,)g(and)f(map)h(it)h(to)f(a)h(system)f(name)g(which)g(is)h -(passed)f(o)o(v)o(er)f(to)h(the)g(e)o(xisting)g(resolv)o(er)e(for)396 -1160 y(system)j(names.)e(It)i(is)g(relati)n(v)o(ely)e(simple)h(to)g -(pro)o(vide)f(such)g(a)i(resolv)o(er)-5 b(.)-2 1579 y -Fx(4.2.)39 b(Resolver)n(s)e(and)i(sour)m(ces)-2 1907 -y Fp(4.2.1.)c(Using)f(the)g(b)n(uilt-in)f(resolver)n(s)i(\(called)g -(sour)n(ces\))396 2075 y Fv(The)20 b(type)g Fq(source)g -Fv(enumerates)e(the)j(tw)o(o)f(possibilities)h(where)e(the)h(document)f -(to)h(parse)g(comes)g(from.)396 2255 y Fq(type)44 b(source)g(=)576 -2352 y(Entity)f(of)i(\(\(dtd)f(-)p Fo(>)g Fq(Pxp_entity.entity\))e(*)j -(Pxp_reader.resolver\))486 2449 y(|)g(ExtID)f(of)g(\(ext_id)g(*)g -(Pxp_reader.resolver\))396 2640 y Fv(Y)-9 b(ou)20 b(normally)e(need)i -(not)g(to)g(w)o(orry)f(about)h(this)g(type)g(as)h(there)f(are)g(con)m -(v)o(enience)d(functions)i(that)h(create)g Fq(source)396 -2748 y Fv(v)n(alues:)p Black 396 3105 a Ft(\225)p Black -60 w Fq(from_file)44 b(s)p Fv(:)20 b(The)g(document)e(is)j(read)f(from) -f(\002le)i Fq(s)p Fv(;)g(you)e(may)h(specify)f(absolute)h(or)g(relati)n -(v)o(e)f(path)h(names.)479 3213 y(The)g(\002le)h(name)f(must)g(be)g -(encoded)e(as)j(UTF-8)f(string.)479 3362 y(There)g(is)h(an)f(optional)f -(ar)o(gument)f Fq(~system_encoding)g Fv(specifying)g(the)j(character)d -(encoding)h(which)g(is)i(used)479 3470 y(for)f(the)g(names)g(of)g(the)g -(\002le)h(system.)f(F)o(or)g(e)o(xample,)e(if)j(this)g(encoding)d(is)j -(ISO-8859-1)c(and)j Fq(s)g Fv(is)i(also)e(a)479 3578 -y(ISO-8859-1)e(string,)h(you)h(can)g(form)f(the)h(source:)479 -3717 y Fq(let)45 b(s_utf8)88 b(=)i(recode_string)42 b -(~in_enc:`Enc_iso88591)g(~out_enc:`Enc_utf8)g(s)i(in)479 -3814 y(from_file)g(~system_encoding:`Enc_iso88591)39 -b(s_utf8)479 4005 y Fv(This)21 b Fq(source)e Fv(has)i(the)f(adv)n -(antage)e(that)j(it)f(is)i(able)e(to)g(resolv)o(e)f(inner)h(e)o -(xternal)f(entities;)h(i.e.)g(if)h(your)e(document)479 -4113 y(includes)g(data)g(from)g(another)f(\002le)i(\(using)f(the)g -Fq(SYSTEM)g Fv(attrib)n(ute\),)g(this)g(mode)g(will)h(\002nd)f(that)h -(\002le.)g(Ho)n(we)n(v)o(er)m(,)d(this)479 4221 y(mode)j(cannot)f -(resolv)o(e)g Fq(PUBLIC)h Fv(identi\002ers)f(nor)h Fq(SYSTEM)g -Fv(identi\002ers)f(other)h(than)g("\002le:".)p Black -396 4370 a Ft(\225)p Black 60 w Fq(from_channel)43 b(ch)p -Fv(:)21 b(The)e(document)g(is)i(read)e(from)h(the)g(channel)f -Fq(ch)p Fv(.)h(In)g(general,)f(this)h(source)g(also)g(supports)479 -4478 y(\002le)h(URLs)g(found)e(in)h(the)g(document;)f(ho)n(we)n(v)o(er) -m(,)e(by)j(def)o(ault)f(only)h(absolute)f(URLs)i(are)f(understood.)e -(It)i(is)479 4586 y(possible)g(to)h(associate)f(an)g(ID)g(with)h(the)f -(channel)f(such)h(that)g(the)g(resolv)o(er)f(kno)n(ws)h(ho)n(w)f(to)i -(interpret)e(relati)n(v)o(e)479 4694 y(URLs:)479 4832 -y Fq(from_channel)43 b(~id:\(System)g("file:///dir/dir1/"\))f(ch)p -Black 3800 5278 a Fr(75)p Black eop -%%Page: 76 76 -76 75 bop Black 2348 67 a Fr(Chapter)20 b(4.)g(Con\002guring)e(and)i -(calling)f(the)h(par)o(ser)p Black 396 579 a Fv(There)g(is)h(also)f -(the)g(~system_encoding)e(ar)o(gument)f(specifying)i(ho)n(w)h(\002le)h -(names)e(are)i(encoded.)d(-)i(The)g(e)o(xample)479 687 -y(from)f(abo)o(v)o(e)g(can)h(also)g(be)h(written)f(\(b)n(ut)f(it)i(is)g -(no)f(longer)f(possible)h(to)g(interpret)f(relati)n(v)o(e)h(URLs)h -(because)e(there)h(is)479 795 y(no)g(~id)g(ar)o(gument,)e(and)i -(computing)d(this)k(ar)o(gument)d(is)j(relati)n(v)o(ely)e(complicated)g -(because)g(it)i(must)f(be)h(a)f(v)n(alid)479 903 y(URL\):)479 -1041 y Fq(let)45 b(ch)f(=)h(open_in)e(s)i(in)479 1138 -y(let)g(src)f(=)h(from_channel)d(~system_encoding:`Enc_iso88591)e(ch)45 -b(in)479 1236 y(...;)479 1333 y(close_in)f(ch)p Black -396 1482 a Ft(\225)p Black 60 w Fq(from_string)f(s)p -Fv(:)21 b(The)f(string)g Fq(s)g Fv(is)h(the)g(document)d(to)i(parse.)g -(This)g(mode)f(is)j(not)d(able)h(to)h(interpret)e(\002le)i(names)479 -1590 y(of)f Fq(SYSTEM)g Fv(clauses,)g(nor)g(it)h(can)f(look)f(up)h -Fq(PUBLIC)f Fv(identi\002ers.)479 1740 y(Normally)-5 -b(,)19 b(the)h(encoding)e(of)i(the)g(string)g(is)h(detected)e(as)i -(usual)f(by)g(analyzing)f(the)h(XML)g(declaration,)e(if)j(an)o(y)-5 -b(.)479 1847 y(Ho)n(we)n(v)o(er)m(,)18 b(it)j(is)g(also)g(possible)f -(to)g(specify)g(the)g(encoding)e(directly:)479 1986 y -Fq(let)45 b(src)f(=)h(from_string)e(~fixenc:`ISO-8859-2)e(s)p -Black 396 2177 a Ft(\225)p Black 60 w Fq(ExtID)j(\(id,)g(r\))p -Fv(:)21 b(The)f(document)e(to)i(parse)g(is)h(denoted)e(by)h(the)g -(identi\002er)g Fq(id)g Fv(\(either)f(a)i Fq(SYSTEM)f -Fv(or)g Fq(PUBLIC)479 2285 y Fv(clause\),)g(and)g(this)g(identi\002er)g -(is)h(interpreted)d(by)i(the)g(resolv)o(er)f Fq(r)p Fv(.)i(Use)f(this)h -(mode)e(if)i(you)e(ha)n(v)o(e)h(written)g(your)f(o)n(wn)479 -2393 y(resolv)o(er)-5 b(.)479 2542 y(Which)20 b(character)f(sets)j(are) -e(possible)g(depends)e(on)i(the)g(passed)h(resolv)o(er)d -Fq(r)p Fv(.)p Black 396 2692 a Ft(\225)p Black 60 w Fq(Entity)44 -b(\(get_entity,)f(r\))p Fv(:)20 b(The)g(document)e(to)j(parse)f(is)h -(returned)d(by)i(the)g(function)f(in)m(v)n(ocation)479 -2800 y Fq(get_entity)43 b(dtd)p Fv(,)20 b(where)g Fq(dtd)g -Fv(is)h(the)g(DTD)f(object)g(to)g(use)g(\(it)h(may)f(be)g(empty\).)f -(Inner)f(e)o(xternal)h(references)479 2908 y(occuring)g(in)h(this)h -(entity)e(are)i(resolv)o(ed)d(using)i(the)g(resolv)o(er)f -Fq(r)p Fv(.)479 3057 y(Which)h(character)f(sets)j(are)e(possible)g -(depends)e(on)i(the)g(passed)h(resolv)o(er)d Fq(r)p Fv(.)-2 -3510 y Fp(4.2.2.)35 b(The)f(resolver)g(API)396 3677 y -Fv(A)21 b(resolv)o(er)e(is)i(an)f(object)g(that)g(can)g(be)g(opened)e -(lik)o(e)j(a)f(\002le,)h(b)n(ut)f(you)f(do)h(not)g(pass)g(the)h(\002le) -f(name)g(to)g(the)g(resolv)o(er)m(,)f(b)n(ut)396 3785 -y(the)h(XML)h(identi\002er)e(of)h(the)g(entity)g(to)h(read)e(from)g -(\(either)h(a)g Fq(SYSTEM)g Fv(or)g Fq(PUBLIC)g Fv(clause\).)f(When)h -(opened,)f(the)396 3893 y(resolv)o(er)g(must)h(return)f(the)i -Fq(Lexing.lexbuf)d Fv(that)i(reads)g(the)h(characters.)e(The)g(resolv)o -(er)g(can)h(be)h(closed,)e(and)h(it)396 4001 y(can)g(be)g(cloned.)f -(Furthermore,)f(it)j(is)g(possible)f(to)g(tell)h(the)f(resolv)o(er)f -(which)h(character)f(set)i(it)g(should)e(assume.)h(-)g(The)396 -4109 y(follo)n(wing)f(from)g(Pxp_reader:)396 4289 y Fq(exception)44 -b(Not_competent)396 4386 y(exception)g(Not_resolvable)e(of)j(exn)396 -4581 y(class)f(type)g(resolver)g(=)486 4678 y(object)576 -4775 y(method)f(init_rep_encoding)f(:)j(rep_encoding)e(->)h(unit)576 -4872 y(method)f(init_warner)g(:)i(collect_warnings)d(->)j(unit)p -Black 3798 5278 a Fr(76)p Black eop -%%Page: 77 77 -77 76 bop Black 2348 67 a Fr(Chapter)20 b(4.)g(Con\002guring)e(and)i -(calling)f(the)h(par)o(ser)p Black 576 579 a Fq(method)43 -b(rep_encoding)g(:)i(rep_encoding)576 676 y(method)e(open_in)h(:)h -(ext_id)f(->)g(Lexing.lexbuf)576 773 y(method)f(close_in)h(:)h(unit)576 -870 y(method)e(change_encoding)g(:)h(string)g(->)h(unit)576 -967 y(method)e(clone)h(:)h(resolver)576 1065 y(method)e(close_all)h(:)g -(unit)486 1162 y(end)396 1353 y Fv(The)20 b(resolv)o(er)f(object)h -(must)g(w)o(ork)f(as)i(follo)n(ws:)p Black 396 1627 a -Ft(\225)p Black 60 w Fv(When)f(the)h(parser)e(is)i(called,)f(it)h -(tells)g(the)f(resolv)o(er)f(the)h(w)o(arner)g(object)f(and)h(the)g -(internal)g(encoding)e(by)i(in)m(v)n(oking)479 1735 y -Fq(init_warner)f Fv(and)h Fq(init_rep_encoding)p Fv(.)d(The)j(resolv)o -(er)f(should)g(store)i(these)f(v)n(alues.)f(The)h(method)479 -1843 y Fq(rep_encoding)f Fv(should)g(return)g(the)h(internal)g -(encoding.)p Black 396 1950 a Ft(\225)p Black 60 w Fv(If)g(the)h -(parser)e(w)o(ants)i(to)f(read)g(from)f(the)h(resolv)o(er)m(,)e(it)j -(in)m(v)n(ok)o(es)f(the)g(method)f Fq(open_in)p Fv(.)g(Either)h(the)g -(resolv)o(er)479 2058 y(succeeds,)g(in)g(which)g(case)g(the)h -Fq(Lexing.lexbuf)d Fv(reading)h(from)g(the)h(\002le)h(or)f(stream)g -(must)g(be)h(returned,)d(or)479 2166 y(opening)h(f)o(ails.)h(In)g(the)g -(latter)h(case)f(the)h(method)d(implementation)g(should)h(raise)i(an)f -(e)o(xception)e(\(see)j(belo)n(w\).)p Black 396 2274 -a Ft(\225)p Black 60 w Fv(If)f(the)h(parser)e(\002nishes)i(reading,)d -(it)j(calls)g(the)f Fq(close_in)g Fv(method.)p Black -396 2382 a Ft(\225)p Black 60 w Fv(If)g(the)h(parser)e(\002nds)h(a)h -(reference)d(to)j(another)e(e)o(xternal)f(entity)i(in)h(the)f(input)f -(stream,)h(it)h(calls)g Fq(clone)f Fv(to)g(get)h(a)479 -2490 y(second)f(resolv)o(er)f(which)g(must)h(be)h(initially)f(closed)g -(\(not)f(yet)h(connected)f(with)h(an)g(input)f(stream\).)h(The)g -(parser)479 2598 y(then)g(in)m(v)n(ok)o(es)f Fq(open_in)h -Fv(and)f(the)i(other)e(methods)g(as)i(described.)p Black -396 2706 a Ft(\225)p Black 60 w Fv(If)f(you)g(already)f(kno)n(w)g(the)h -(character)f(set)i(of)f(the)g(input)g(stream,)f(you)h(should)f(recode)g -(it)i(to)f(the)g(internal)479 2814 y(encoding,)e(and)i(de\002ne)f(the)i -(method)d Fq(change_encoding)h Fv(as)i(an)f(empty)f(method.)p -Black 396 2922 a Ft(\225)p Black 60 w Fv(If)h(you)g(w)o(ant)g(to)g -(support)f(multiple)h(e)o(xternal)f(character)g(sets,)i(the)f(object)f -(must)i(follo)n(w)e(a)i(much)e(more)479 3030 y(complicated)g(protocol.) -f(Directly)i(after)g Fq(open_in)f Fv(has)i(been)e(called,)h(the)g -(resolv)o(er)f(must)h(return)f(a)i(le)o(xical)f(b)n(uf)n(fer)479 -3138 y(that)h(only)e(reads)h(one)g(byte)f(at)i(a)g(time.)f(This)g(is)h -(only)f(possible)f(if)i(you)e(create)h(the)g(le)o(xical)g(b)n(uf)n(fer) -f(with)479 3246 y Fq(Lexing.from_function)p Fv(;)e(the)j(function)d -(must)j(then)f(al)o(w)o(ays)h(return)e(1)i(if)f(the)h(EOF)g(is)g(not)f -(yet)h(reached,)e(and)h(0)479 3354 y(if)i(EOF)f(is)h(reached.)e(If)h -(the)g(parser)g(has)g(read)g(the)g(\002rst)h(line)f(of)g(the)h -(document,)c(it)k(will)g(in)m(v)n(ok)o(e)479 3461 y Fq(change_encoding) -e Fv(to)h(tell)h(the)f(resolv)o(er)f(which)h(character)e(set)j(to)g -(assume.)f(From)f(this)i(moment,)e(the)h(object)479 3569 -y(can)g(return)f(more)h(than)f(one)h(byte)g(at)g(once.)g(The)g(ar)o -(gument)d(of)j Fq(change_encoding)f Fv(is)i(either)e(the)i(parameter)d -(of)479 3677 y(the)i("encoding")e(attrib)n(ute)i(of)g(the)g(XML)h -(declaration,)d(or)i(the)g(empty)f(string)h(if)h(there)e(is)j(not)d(an) -o(y)h(XML)479 3785 y(declaration)f(or)h(if)g(the)h(declaration)d(does)i -(not)g(contain)f(an)h(encoding)e(attrib)n(ute.)479 3935 -y(At)j(the)f(be)o(ginning)e(the)i(resolv)o(er)f(must)h(only)g(return)f -(one)g(character)g(e)n(v)o(ery)g(time)h(something)f(is)i(read)f(from)f -(the)479 4043 y(le)o(xical)h(b)n(uf)n(fer)-5 b(.)19 b(The)h(reason)f -(for)h(this)h(is)g(that)f(you)f(otherwise)h(w)o(ould)f(not)h(e)o -(xactly)g(kno)n(w)f(at)h(which)g(position)f(in)479 4151 -y(the)h(input)g(stream)g(the)g(character)f(set)i(changes.)479 -4300 y(If)f(you)g(w)o(ant)g(automatic)f(recognition)f(of)i(the)g -(character)f(set,)i(it)g(is)g(up)f(to)g(the)g(resolv)o(er)f(object)h -(to)g(implement)f(this.)p Black 396 4449 a Ft(\225)p -Black 60 w Fv(If)h(an)g(error)g(occurs,)f(the)h(parser)g(calls)g(the)h -(method)d Fq(close_all)i Fv(for)f(the)h(top-le)n(v)o(el)f(resolv)o(er;) -g(this)i(method)479 4557 y(should)e(close)i(itself)g(\(if)f(not)g -(already)f(done\))f(and)i(all)h(clones.)396 4748 y Fu(Exceptions.)f -Fv(It)h(is)g(possible)f(to)g(chain)g(resolv)o(ers)f(such)h(that)g(when) -g(the)g(\002rst)h(resolv)o(er)e(is)i(not)f(able)g(to)g(open)f(the)396 -4856 y(entity)-5 b(,)20 b(the)g(other)f(resolv)o(ers)g(of)h(the)g -(chain)g(are)g(tried)g(in)g(turn.)g(The)g(method)e Fq(open_in)i -Fv(should)f(raise)i(the)f(e)o(xception)p Black 3797 5278 -a Fr(77)p Black eop -%%Page: 78 78 -78 77 bop Black 2348 67 a Fr(Chapter)20 b(4.)g(Con\002guring)e(and)i -(calling)f(the)h(par)o(ser)p Black 396 579 a Fq(Not_competent)f -Fv(to)h(indicate)g(that)g(the)g(ne)o(xt)g(resolv)o(er)f(should)g(try)h -(to)g(open)f(the)i(entity)-5 b(.)19 b(If)h(the)g(resolv)o(er)f(is)i -(able)f(to)396 687 y(handle)f(the)i(ID,)f(b)n(ut)g(some)g(other)f -(error)g(occurs,)g(the)i(e)o(xception)d Fq(Not_resolvable)g -Fv(should)i(be)g(raised)g(to)g(force)396 795 y(that)h(the)f(chain)f -(breaks.)396 944 y(Example:)g(Ho)n(w)h(to)h(de\002ne)e(a)i(resolv)o(er) -e(that)h(is)h(equi)n(v)n(alent)e(to)h(from_string:)e(...)-2 -1314 y Fp(4.2.3.)35 b(Prede\002ned)f(resolver)h(components)396 -1482 y Fv(There)20 b(are)g(some)g(classes)h(in)f(Pxp_reader)e(that)j -(de\002ne)e(common)g(resolv)o(er)f(beha)n(viour)-5 b(.)396 -1662 y Fq(class)44 b(resolve_read_this_channel)d(:)576 -1759 y(?id:ext_id)i(->)576 1856 y(?fixenc:encoding)f(->)576 -1953 y(?auto_close:bool)g(->)576 2050 y(in_channel)h(->)755 -2147 y(resolver)396 2338 y Fv(Reads)21 b(from)e(the)h(passed)g(channel) -f(\(it)i(may)f(be)g(e)n(v)o(en)f(a)i(pipe\).)e(If)h(the)g -Fq(~id)g Fv(ar)o(gument)e(is)j(passed)f(to)h(the)f(object,)f(the)396 -2446 y(created)h(resolv)o(er)f(accepts)h(only)f(this)i(ID.)f(Otherwise) -g(all)h(IDs)f(are)g(accepted.)f(-)i(Once)f(the)g(resolv)o(er)f(has)h -(been)396 2554 y(cloned,)f(it)h(does)g(not)f(accept)h(an)o(y)f(ID.)g -(This)h(means)g(that)g(this)g(resolv)o(er)e(cannot)h(handle)g(inner)g -(references)f(to)i(e)o(xternal)396 2662 y(entities.)h(Note)f(that)g -(you)f(can)h(combine)f(this)i(resolv)o(er)e(with)h(another)f(resolv)o -(er)g(that)h(can)g(handle)f(inner)g(references)396 2770 -y(\(such)h(as)h(resolv)o(e_as_\002le\);)d(see)j(class)g('combine')d -(belo)n(w)-5 b(.)19 b(-)h(If)g(you)g(pass)g(the)h Fq(~fixenc)e -Fv(ar)o(gument,)f(the)i(encoding)396 2878 y(of)g(the)g(channel)f(is)i -(set)g(to)g(the)f(passed)g(v)n(alue,)f(re)o(gardless)g(of)h(an)o(y)f -(auto-recognition)e(or)j(an)o(y)f(XML)h(declaration.)f(-)h(If)396 -2986 y Fq(~auto_close)43 b(=)i(true)20 b Fv(\(which)f(is)i(the)g(def)o -(ault\),)e(the)h(channel)f(is)i(closed)f(after)g(use.)g(If)g -Fq(~auto_close)43 b(=)396 3094 y(false)p Fv(,)20 b(the)g(channel)f(is)i -(left)g(open.)396 3315 y Fq(class)44 b(resolve_read_any_channel)d(:)576 -3413 y(?auto_close:bool)h(->)576 3510 y(channel_of_id:\(ext_id)f(->)j -(\(in_channel)f(*)i(encoding)f(option\)\))f(->)755 3607 -y(resolver)396 3798 y Fv(This)21 b(resolv)o(er)e(calls)h(the)h -(function)d Fq(~channel_of_id)h Fv(to)h(open)f(a)i(ne)n(w)f(channel)f -(for)g(the)h(passed)g Fq(ext_id)p Fv(.)g(This)396 3906 -y(function)f(must)h(either)g(return)f(the)h(channel)f(and)h(the)g -(encoding,)e(or)i(it)g(must)h(f)o(ail)f(with)h(Not_competent.)c(The)396 -4014 y(function)i(must)h(return)f Fq(None)h Fv(as)h(encoding)d(if)j -(the)f(def)o(ault)f(mechanism)g(to)h(recognize)f(the)h(encoding)e -(should)h(be)396 4122 y(used.)g(It)i(must)e(return)g -Fq(Some)44 b(e)20 b Fv(if)g(it)h(is)f(already)f(kno)n(wn)f(that)i(the)g -(encoding)d(of)j(the)f(channel)g(is)i Fq(e)p Fv(.)e(If)h -Fq(~auto_close)396 4230 y(=)45 b(true)19 b Fv(\(which)g(is)h(the)f(def) -o(ault\),)f(the)i(channel)e(is)i(closed)f(after)g(use.)h(If)f -Fq(~auto_close)43 b(=)h(false)p Fv(,)19 b(the)h(channel)e(is)396 -4337 y(left)j(open.)396 4559 y Fq(class)44 b(resolve_read_url_channel)d -(:)576 4656 y(?base_url:Neturl.url)g(->)576 4753 y(?auto_close:bool)h -(->)576 4851 y(url_of_id:\(ext_id)g(->)i(Neturl.url\))f(->)p -Black 3800 5278 a Fr(78)p Black eop -%%Page: 79 79 -79 78 bop Black 2348 67 a Fr(Chapter)20 b(4.)g(Con\002guring)e(and)i -(calling)f(the)h(par)o(ser)p Black 576 579 a Fq -(channel_of_url:\(Neturl.url)40 b(->)45 b(\(in_channel)e(*)h(encoding)g -(option\)\))f(->)755 676 y(resolver)396 867 y Fv(When)20 -b(this)h(resolv)o(er)e(gets)h(an)h(ID)f(to)g(read)g(from,)f(it)i(calls) -g(the)f(function)e Fq(~url_of_id)h Fv(to)i(get)f(the)g(corresponding) -396 975 y(URL.)h(This)f(URL)h(may)f(be)g(a)g(relati)n(v)o(e)g(URL;)h -(ho)n(we)n(v)o(er)m(,)c(a)k(URL)g(scheme)f(must)g(be)g(used)g(which)f -(contains)h(a)h(path.)396 1083 y(The)f(resolv)o(er)f(con)m(v)o(erts)g -(the)h(URL)h(to)f(an)g(absolute)f(URL)i(if)g(necessary)-5 -b(.)19 b(The)g(second)h(function,)396 1191 y Fq(~channel_of_url)p -Fv(,)e(is)j(fed)f(with)h(the)f(absolute)f(URL)i(as)g(input.)e(This)h -(function)f(opens)g(the)i(resource)e(to)h(read)396 1299 -y(from,)f(and)h(returns)f(the)h(channel)f(and)h(the)g(encoding)e(of)i -(the)g(resource.)396 1448 y(Both)g(functions,)f Fq(~url_of_id)g -Fv(and)h Fq(~channel_of_url)p Fv(,)e(can)i(raise)g(Not_competent)e(to)i -(indicate)g(that)g(the)396 1556 y(object)g(is)h(not)f(able)g(to)g(read) -g(from)f(the)h(speci\002ed)g(resource.)f(Ho)n(we)n(v)o(er)m(,)f(there)i -(is)h(a)f(dif)n(ference:)f(A)h(Not_competent)396 1664 -y(from)f Fq(~url_of_id)g Fv(is)j(left)e(as)h(it)g(is,)g(b)n(ut)f(a)h -(Not_competent)c(from)i Fq(~channel_of_url)g Fv(is)i(con)m(v)o(erted)c -(to)396 1772 y(Not_resolv)n(able.)h(So)i(only)g Fq(~url_of_id)f -Fv(decides)h(which)f(URLs)i(are)f(accepted)g(by)f(the)i(resolv)o(er)e -(and)g(which)h(not.)396 1921 y(The)g(function)f Fq(~channel_of_url)f -Fv(must)i(return)f Fq(None)h Fv(as)h(encoding)d(if)j(the)f(def)o(ault)f -(mechanism)g(to)i(recognize)396 2029 y(the)f(encoding)f(should)g(be)h -(used.)g(It)g(must)g(return)f Fq(Some)44 b(e)21 b Fv(if)g(it)f(is)i -(already)d(kno)n(wn)f(that)j(the)f(encoding)e(of)i(the)396 -2137 y(channel)f(is)i Fq(e)p Fv(.)396 2287 y(If)f Fq(~auto_close)43 -b(=)i(true)20 b Fv(\(which)f(is)i(the)g(def)o(ault\),)e(the)h(channel)f -(is)i(closed)f(after)g(use.)g(If)g Fq(~auto_close)43 -b(=)396 2395 y(false)p Fv(,)20 b(the)g(channel)f(is)i(left)g(open.)396 -2544 y(Objects)f(of)g(this)g(class)h(contain)e(a)h(base)g(URL)g(relati) -n(v)o(e)f(to)h(which)g(relati)n(v)o(e)f(URLs)h(are)g(interpreted.)e -(When)i(creating)e(a)396 2652 y(ne)n(w)i(object,)g(you)f(can)h(specify) -f(the)i(base)f(URL)h(by)f(passing)f(it)i(as)g Fq(~base_url)e -Fv(ar)o(gument.)f(When)i(an)g(e)o(xisting)396 2760 y(object)g(is)h -(cloned,)e(the)h(base)g(URL)h(of)f(the)g(clone)g(is)h(the)f(URL)h(of)f -(the)g(original)f(object.)h(-)g(Note)g(that)g(the)h(term)f("base)396 -2868 y(URL")h(has)f(a)h(strict)g(de\002nition)e(in)h(RFC)i(1808.)396 -3089 y Fq(class)44 b(resolve_read_this_string)d(:)576 -3187 y(?id:ext_id)i(->)576 3284 y(?fixenc:encoding)f(->)576 -3381 y(string)h(->)755 3478 y(resolver)396 3669 y Fv(Reads)21 -b(from)e(the)h(passed)g(string.)g(If)g(the)g Fq(~id)h -Fv(ar)o(gument)c(is)k(passed)g(to)f(the)g(object,)g(the)g(created)f -(resolv)o(er)g(accepts)396 3777 y(only)h(this)g(ID.)g(Otherwise)g(all)h -(IDs)g(are)f(accepted.)f(-)h(Once)g(the)g(resolv)o(er)f(has)i(been)e -(cloned,)g(it)i(does)f(not)g(accept)g(an)o(y)396 3885 -y(ID.)g(This)h(means)f(that)g(this)h(resolv)o(er)e(cannot)g(handle)g -(inner)g(references)g(to)h(e)o(xternal)f(entities.)i(Note)f(that)g(you) -f(can)396 3993 y(combine)g(this)i(resolv)o(er)e(with)h(another)f -(resolv)o(er)g(that)h(can)g(handle)f(inner)g(references)g(\(such)h(as)h -(resolv)o(e_as_\002le\);)396 4101 y(see)g(class)g('combine')d(belo)n(w) --5 b(.)19 b(-)i(If)f(you)f(pass)i(the)f Fq(~fixenc)f -Fv(ar)o(gument,)f(the)i(encoding)e(of)i(the)g(string)g(is)h(set)g(to)g -(the)396 4209 y(passed)f(v)n(alue,)g(re)o(gardless)e(of)i(an)o(y)g -(auto-recognition)c(or)k(an)o(y)f(XML)i(declaration.)396 -4430 y Fq(class)44 b(resolve_read_any_string)d(:)576 -4527 y(string_of_id:\(ext_id)g(->)k(\(string)e(*)i(encoding)e -(option\)\))h(->)755 4625 y(resolver)p Black 3800 5278 -a Fr(79)p Black eop -%%Page: 80 80 -80 79 bop Black 2348 67 a Fr(Chapter)20 b(4.)g(Con\002guring)e(and)i -(calling)f(the)h(par)o(ser)p Black 396 579 a Fv(This)h(resolv)o(er)e -(calls)h(the)h(function)d Fq(~string_of_id)h Fv(to)h(get)g(the)g -(string)g(for)g(the)g(passed)g Fq(ext_id)p Fv(.)g(This)g(function)396 -687 y(must)g(either)g(return)f(the)i(string)e(and)h(the)g(encoding,)e -(or)i(it)h(must)f(f)o(ail)h(with)f(Not_competent.)e(The)h(function)g -(must)396 795 y(return)g Fq(None)h Fv(as)h(encoding)d(if)j(the)f(def)o -(ault)g(mechanism)e(to)j(recognize)d(the)i(encoding)f(should)g(be)h -(used.)g(It)g(must)396 903 y(return)f Fq(Some)44 b(e)21 -b Fv(if)g(it)f(is)i(already)d(kno)n(wn)f(that)j(the)f(encoding)e(of)i -(the)g(string)g(is)h Fq(e)p Fv(.)396 1124 y Fq(class)44 -b(resolve_as_file)f(:)576 1222 y(?file_prefix:[)f(`Not_recognized)g(|)j -(`Allowed)f(|)g(`Required)g(])g(->)576 1319 y(?host_prefix:[)e -(`Not_recognized)g(|)j(`Allowed)f(|)g(`Required)g(])g(->)576 -1416 y(?system_encoding:encoding)c(->)576 1513 y(?url_of_id:\(ext_id)h -(->)k(Neturl.url\))e(->)576 1610 y(?channel_of_url:)f(\(Neturl.url)h -(->)h(\(in_channel)f(*)i(encoding)e(option\)\))h(->)576 -1707 y(unit)g(->)755 1804 y(resolver)396 1995 y Fv(Reads)21 -b(from)e(the)h(local)g(\002le)h(system.)f(Ev)o(ery)f(\002le)i(name)f -(is)h(interpreted)d(as)j(\002le)g(name)f(of)f(the)i(local)f(\002le)h -(system,)f(and)396 2103 y(the)g(referred)f(\002le)i(is)g(read.)396 -2253 y(The)f(full)g(form)f(of)h(a)h(\002le)g(URL)g(is:)g -(\002le://host/path,)e(where)h('host')f(speci\002es)i(the)f(host)g -(system)g(where)g(the)g(\002le)396 2361 y(identi\002ed)g('path')f -(resides.)h(host)g(=)g("")h(or)f(host)g(=)h("localhost")e(are)h -(accepted;)f(other)h(v)n(alues)f(will)i(raise)396 2468 -y(Not_competent.)d(The)i(standard)f(for)g(\002le)i(URLs)g(is)g -(de\002ned)e(in)i(RFC)g(1738.)396 2618 y(Option)f Fq(~file_prefix)p -Fv(:)e(Speci\002es)j(ho)n(w)f(the)g("\002le:")h(pre\002x)e(of)h(\002le) -h(names)f(is)h(handled:)p Black 396 2850 a Ft(\225)p -Black 60 w Fq(`Not_recognized:)p Fv(The)c(pre\002x)j(is)h(not)f -(recognized.)p Black 396 2958 a Ft(\225)p Black 60 w -Fq(`Allowed:)g Fv(The)f(pre\002x)h(is)h(allo)n(wed)e(b)n(ut)i(not)f -(required)e(\(the)i(def)o(ault\).)p Black 396 3066 a -Ft(\225)p Black 60 w Fq(`Required:)f Fv(The)h(pre\002x)g(is)h -(required.)396 3257 y(Option)f Fq(~host_prefix:)e Fv(Speci\002es)j(ho)n -(w)e(the)i("//host")f(phrase)f(of)h(\002le)h(names)f(is)h(handled:)p -Black 396 3490 a Ft(\225)p Black 60 w Fq(`Not_recognized:)p -Fv(The)c(pre\002x)j(is)h(not)f(recognized.)p Black 396 -3598 a Ft(\225)p Black 60 w Fq(`Allowed:)g Fv(The)f(pre\002x)h(is)h -(allo)n(wed)e(b)n(ut)i(not)f(required)e(\(the)i(def)o(ault\).)p -Black 396 3706 a Ft(\225)p Black 60 w Fq(`Required:)f -Fv(The)h(pre\002x)g(is)h(required.)396 3896 y(Option)f -Fq(~system_encoding:)e Fv(Speci\002es)i(the)g(encoding)e(of)i(\002le)h -(names)f(of)g(the)g(local)g(\002le)h(system.)f(Def)o(ault:)396 -4004 y(UTF-8.)396 4154 y(Options)g Fq(~url_of_id)p Fv(,)f -Fq(~channel_of_url)p Fv(:)f(Not)i(for)g(the)g(casual)g(user!)396 -4376 y Fq(class)44 b(combine)g(:)576 4473 y(?prefer:resolver)e(->)576 -4570 y(resolver)h(list)h(->)755 4667 y(resolver)p Black -3800 5278 a Fr(80)p Black eop -%%Page: 81 81 -81 80 bop Black 2348 67 a Fr(Chapter)20 b(4.)g(Con\002guring)e(and)i -(calling)f(the)h(par)o(ser)p Black 396 579 a Fv(Combines)g(se)n(v)o -(eral)f(resolv)o(er)g(objects.)h(If)g(a)h(concrete)e(entity)g(with)i -(an)f Fq(ext_id)g Fv(is)h(to)f(be)g(opened,)f(the)h(combined)396 -687 y(resolv)o(er)f(tries)i(the)f(contained)f(resolv)o(ers)g(in)h(turn) -g(until)g(a)g(resolv)o(er)f(accepts)h(opening)f(the)h(entity)g(\(i.e.)g -(it)g(does)g(not)396 795 y(raise)h(Not_competent)c(on)j(open_in\).)396 -944 y(Clones:)h(If)f(the)g('clone')f(method)g(is)i(in)m(v)n(ok)o(ed)d -(before)h('open_in',)e(all)k(contained)e(resolv)o(ers)g(are)h(cloned)f -(separately)396 1052 y(and)h(again)f(combined.)f(If)i(the)g('clone')f -(method)g(is)i(in)m(v)n(ok)o(ed)e(after)g('open_in')f(\(i.e.)i(while)g -(the)g(resolv)o(er)f(is)i(open\),)396 1160 y(additionally)e(the)h -(clone)f(of)h(the)h(acti)n(v)o(e)e(resolv)o(er)g(is)i(\003agged)f(as)g -(being)g(preferred,)d(i.e.)k(it)f(is)i(tried)e(\002rst.)-2 -1662 y Fx(4.3.)39 b(The)g(DTD)g(c)m(lasses)396 1841 y -Fr(Sorry)-5 b(,)21 b(not)f(yet)g(written.)h(P)-7 b(erhaps)20 -b(the)g(interface)g(de\002nition)e(of)j(Pxp_dtd)d(e)n(xpr)m(esses)j -(the)f(same:)396 2063 y Fq(\(****************************************)o -(******)o(******)o(******)o(******)o(*****)o(*\))396 -2160 y(\(*)3048 b(*\))396 2257 y(\(*)45 b(Pxp_dtd:)2643 -b(*\))396 2354 y(\(*)224 b(Object)44 b(model)g(of)g(document)g(type)g -(declarations)939 b(*\))396 2452 y(\(*)3048 b(*\))396 -2549 y(\(****************************************)o(******)o(******)o -(******)o(******)o(*****)o(*\))396 2743 y(\(*)45 b -(======================================)o(======)o(======)o(======)o -(======)o(=====)o(===)441 2840 y(*)g(OVERVIEW)441 2937 -y(*)441 3034 y(*)g(class)f(dtd)g(...............)e(represents)i(the)g -(whole)g(DTD,)g(including)f(element)441 3132 y(*)1210 -b(declarations,)43 b(entity)h(declarations,)f(notation)441 -3229 y(*)1210 b(declarations,)43 b(and)h(processing)g(instructions)441 -3326 y(*)h(class)f(dtd_element)f(.......)g(represents)h(an)g(element)g -(declaration)f(consisting)441 3423 y(*)1210 b(of)45 b(a)g(content)e -(model)h(and)h(an)f(attribute)f(list)441 3520 y(*)1210 -b(declaration)441 3617 y(*)45 b(class)f(dtd_notation)f(......)g -(represents)h(a)g(notation)g(declaration)441 3714 y(*)h(class)f -(proc_instruction)e(..)i(represents)g(a)g(processing)f(instruction)441 -3811 y(*)i(======================================)o(======)o(======)o -(======)o(======)o(=====)o(===)441 3909 y(*)441 4006 -y(*\))396 4297 y(class)f(dtd)h(:)486 4394 y(\(*)f(Creation:)531 -4491 y(*)134 b(new)44 b(dtd)531 4589 y(*)g(creates)g(a)h(new,)f(empty)g -(DTD)g(object)g(without)g(any)g(declaration,)f(without)g(a)i(root)531 -4686 y(*)f(element,)g(without)g(an)g(ID.)531 4783 y(*\))p -Black 3800 5278 a Fr(81)p Black eop -%%Page: 82 82 -82 81 bop Black 2348 67 a Fr(Chapter)20 b(4.)g(Con\002guring)e(and)i -(calling)f(the)h(par)o(ser)p Black 486 579 a Fq -(Pxp_types.collect_warnings)40 b(-)p Fo(>)486 676 y Fq -(Pxp_types.rep_encoding)h(-)p Fo(>)486 773 y Fq(object)576 -870 y(method)i(root)i(:)f(string)g(option)665 967 y(\(*)h(get)f(the)g -(name)h(of)f(the)g(root)h(element)e(if)i(present)e(*\))576 -1162 y(method)g(set_root)h(:)h(string)e(-)p Fo(>)i Fq(unit)665 -1259 y(\(*)g(set)f(the)g(name)h(of)f(the)g(root)h(element.)e(This)h -(method)g(can)g(be)h(invoked)710 1356 y(*)g(only)f(once)710 -1453 y(*\))576 1647 y(method)f(id)i(:)g(Pxp_types.dtd_id)d(option)665 -1745 y(\(*)j(get)f(the)g(identifier)g(for)g(this)g(DTD)g(*\))576 -1939 y(method)f(set_id)h(:)h(Pxp_types.dtd_id)d(-)p Fo(>)i -Fq(unit)665 2036 y(\(*)h(set)f(the)g(identifier.)f(This)i(method)e(can) -i(be)f(invoked)g(only)g(once)g(*\))576 2230 y(method)f(encoding)h(:)h -(Pxp_types.rep_encoding)665 2327 y(\(*)g(returns)e(the)i(encoding)e -(used)h(for)h(character)e(representation)g(*\))576 2619 -y(method)g(allow_arbitrary)g(:)h(unit)665 2716 y(\(*)h(After)f(this)g -(method)g(has)g(been)g(invoked,)g(the)g(ob-)396 2813 -y(ject)g(changes)g(its)g(behaviour:)710 2910 y(*)h(-)f(elements)g(and)g -(notations)g(that)g(have)g(not)g(been)g(added)g(may)h(be)f(used)g(in)h -(an)710 3007 y(*)134 b(arbitrary)44 b(way;)g(the)g(methods)g("element") -f(and)i("notation")e(indicate)g(this)710 3104 y(*)134 -b(by)45 b(raising)f(Undeclared)f(instead)g(of)i(Validation_error.)710 -3202 y(*\))576 3396 y(method)e(disallow_arbitrary)f(:)j(unit)576 -3590 y(method)e(arbitrary_allowed)f(:)j(bool)665 3687 -y(\(*)g(Returns)e(whether)h(arbitrary)f(contents)h(are)g(allowed)g(or)g -(not.)h(*\))576 3882 y(method)e(standalone_declaration)f(:)i(bool)665 -3979 y(\(*)h(Whether)e(there)h(is)h(a)g('standalone')d(declaration)h -(or)i(not.)f(Strictly)710 4076 y(*)h(speaking,)e(this)h(declaration)f -(is)i(not)f(part)g(of)h(the)f(DTD,)g(but)h(it)f(is)710 -4173 y(*)h(included)e(here)h(because)g(of)h(practical)e(reasons.)710 -4270 y(*)i(If)f(not)h(set,)f(this)g(property)f(defaults)h(to)g -('false'.)710 4367 y(*\))576 4561 y(method)f -(set_standalone_declaration)e(:)k(bool)f(-)p Fo(>)g Fq(unit)665 -4659 y(\(*)h(Sets)f(the)g('standalone')f(declaration.)g(*\))p -Black 3800 5278 a Fr(82)p Black eop -%%Page: 83 83 -83 82 bop Black 2348 67 a Fr(Chapter)20 b(4.)g(Con\002guring)e(and)i -(calling)f(the)h(par)o(ser)p Black 576 579 a Fq(method)43 -b(add_element)g(:)i(dtd_element)e(-)p Fo(>)h Fq(unit)665 -676 y(\(*)h(add)f(the)g(given)g(element)g(declaration)f(to)i(this)f -(DTD.)g(Raises)g(Not_found)710 773 y(*)h(if)f(there)g(is)h(already)e -(an)i(element)f(declaration)f(with)h(the)g(same)g(name.)710 -870 y(*\))576 1065 y(method)f(add_gen_entity)g(:)i(Pxp_entity.entity)d -(-)p Fo(>)i Fq(bool)g(-)p Fo(>)g Fq(unit)665 1162 y(\(*)h -(add_gen_entity)d(e)j(extdecl:)710 1259 y(*)g(add)f(the)g(entity)g('e') -h(as)f(general)g(entity)g(to)g(this)g(DTD)h(\(general)e(entities)710 -1356 y(*)i(are)f(those)g(represented)f(by)i(&name;\).)e(If)i(there)f -(is)g(already)g(a)g(declaration)710 1453 y(*)h(with)f(the)g(same)g -(name,)g(the)h(second)f(definition)f(is)h(ignored;)g(as)g(excep-)396 -1550 y(tion)g(from)710 1647 y(*)h(this)f(rule,)g(entities)f(with)i -(names)f("lt",)g("gt",)g("amp",)f("quot",)h(and)g("apos")710 -1745 y(*)h(may)f(only)g(be)h(redeclared)e(with)h(a)h(definition)e(that) -h(is)h(equivalent)e(to)h(the)710 1842 y(*)h(standard)e(definition;)g -(otherwise)h(a)g(Validation_error)e(is)j(raised.)710 -1939 y(*)710 2036 y(*)g('extdecl':)e('true')h(indicates)f(that)h(the)h -(entity)e(declaration)g(occurs)h(in)710 2133 y(*)h(an)f(external)g -(entity.)f(\(Used)h(for)h(the)f(standalone)f(check.\))710 -2230 y(*\))576 2424 y(method)g(add_par_entity)g(:)i(Pxp_entity.entity)d -(-)p Fo(>)i Fq(unit)665 2522 y(\(*)h(add)f(the)g(given)g(entity)g(as)h -(parameter)e(entity)h(to)g(this)h(DTD)f(\(parameter)710 -2619 y(*)h(entities)e(are)i(those)f(represented)f(by)h(\045name;\).)g -(If)g(there)g(is)h(already)e(a)710 2716 y(*)i(declaration)e(with)h(the) -g(same)g(name,)g(the)h(second)f(definition)f(is)h(ignored.)710 -2813 y(*\))576 3007 y(method)f(add_notation)g(:)i(dtd_notation)e(-)p -Fo(>)h Fq(unit)665 3104 y(\(*)h(add)f(the)g(given)g(notation)g(to)g -(this)h(DTD.)f(If)g(there)g(is)h(al-)396 3202 y(ready)f(a)h -(declaration)710 3299 y(*)g(with)f(the)g(same)g(name,)g(a)h -(Validation_error)d(is)j(raised.)710 3396 y(*\))576 3590 -y(method)e(add_pinstr)h(:)g(proc_instruction)e(-)p Fo(>)j -Fq(unit)665 3687 y(\(*)g(add)f(the)g(given)g(processing)g(instruction)f -(to)h(this)g(DTD.)g(*\))576 3882 y(method)f(element)h(:)h(string)f(-)p -Fo(>)g Fq(dtd_element)665 3979 y(\(*)h(looks)f(up)g(the)h(element)e -(declaration)g(with)h(the)h(given)f(name.)g(Raises)710 -4076 y(*)h(Validation_error)d(if)i(the)h(element)e(can-)396 -4173 y(not)i(be)f(found.)g(\(If)g("allow_arbitrary")710 -4270 y(*)h(has)f(been)g(invoked)g(before,)g(Unrestricted)e(is)j(raised) -f(instead.\))710 4367 y(*\))576 4561 y(method)f(element_names)g(:)i -(string)f(list)665 4659 y(\(*)h(returns)e(the)i(list)f(of)g(the)h -(names)f(of)g(all)h(element)e(declarations.)g(*\))576 -4853 y(method)g(gen_entity)h(:)g(string)g(-)p Fo(>)g -Fq(\(Pxp_entity.entity)e(*)j(bool\))p Black 3800 5278 -a Fr(83)p Black eop -%%Page: 84 84 -84 83 bop Black 2348 67 a Fr(Chapter)20 b(4.)g(Con\002guring)e(and)i -(calling)f(the)h(par)o(ser)p Black 665 579 a Fq(\(*)45 -b(let)f(e,)h(extdecl)e(=)i(obj)f(#)h(gen_entity)e(n:)710 -676 y(*)i(looks)f(up)g(the)h(general)e(entity)h('e')g(with)h(the)f -(name)g('n'.)g(Raises)710 773 y(*)h(WF_error)e(if)i(the)f(entity)g -(cannot)g(be)g(found.)710 870 y(*)h('extdecl':)e(indicates)g(whether)h -(the)g(entity)g(declaration)f(occured)h(in)g(an)710 967 -y(*)h(external)e(entity.)710 1065 y(*\))576 1259 y(method)g -(gen_entity_names)g(:)h(string)g(list)665 1356 y(\(*)h(returns)e(the)i -(list)f(of)g(all)h(general)e(entity)h(names)g(*\))576 -1550 y(method)f(par_entity)h(:)g(string)g(-)p Fo(>)g -Fq(Pxp_entity.entity)665 1647 y(\(*)h(looks)f(up)g(the)h(parameter)e -(entity)h(with)g(the)g(given)g(name.)g(Raises)710 1745 -y(*)h(WF_error)e(if)i(the)f(entity)g(cannot)g(be)g(found.)710 -1842 y(*\))576 2036 y(method)f(par_entity_names)g(:)h(string)g(list)665 -2133 y(\(*)h(returns)e(the)i(list)f(of)g(all)h(parameter)e(entity)h -(names)g(*\))576 2327 y(method)f(notation)h(:)h(string)e(-)p -Fo(>)i Fq(dtd_notation)665 2424 y(\(*)g(looks)f(up)g(the)h(notation)e -(declaration)g(with)h(the)h(given)f(name.)g(Raises)710 -2522 y(*)h(Validation_error)d(if)i(the)h(notation)e(can-)396 -2619 y(not)i(be)f(found.)g(\(If)g("allow_arbitrary")710 -2716 y(*)h(has)f(been)g(invoked)g(before,)g(Unrestricted)e(is)j(raised) -f(instead.\))710 2813 y(*\))576 3007 y(method)f(notation_names)g(:)i -(string)e(list)665 3104 y(\(*)i(Returns)e(the)i(list)f(of)g(the)h -(names)f(of)g(all)h(added)f(notations)f(*\))576 3299 -y(method)g(pinstr)h(:)h(string)f(-)p Fo(>)g Fq(proc_instruction)e(list) -665 3396 y(\(*)j(looks)f(up)g(all)h(processing)e(instructions)g(with)h -(the)g(given)g(target.)710 3493 y(*)h(The)f("target")g(is)g(the)g -(identifier)g(following)f(")p Fo(<)p Fq(?".)710 3590 -y(*)i(Note:)f(It)g(is)h(not)f(possible)g(to)g(find)g(out)h(the)f(exact) -g(position)f(of)i(the)710 3687 y(*)g(processing)e(instruction.)710 -3784 y(*\))576 3979 y(method)g(pinstr_names)g(:)i(string)f(list)665 -4076 y(\(*)h(Returns)e(the)i(list)f(of)g(the)h(names)f(\(targets\))f -(of)i(all)f(added)g(pinstrs)f(*\))576 4270 y(method)g(validate)h(:)h -(unit)665 4367 y(\(*)g(ensures)e(that)i(the)f(DTD)g(is)h(valid.)f(This) -g(method)g(is)g(optimized)f(such)h(that)710 4464 y(*)h(actual)f -(validation)f(is)h(only)g(performed)g(if)g(DTD)h(has)f(changed.)710 -4561 y(*)h(If)f(the)h(DTD)f(is)g(invalid,)g(mostly)g(a)g -(Validation_error)f(is)h(raised,)710 4659 y(*)h(but)f(other)g -(exceptions)f(are)i(possible,)e(too.)710 4756 y(*\))p -Black 3800 5278 a Fr(84)p Black eop -%%Page: 85 85 -85 84 bop Black 2348 67 a Fr(Chapter)20 b(4.)g(Con\002guring)e(and)i -(calling)f(the)h(par)o(ser)p Black 576 579 a Fq(method)43 -b(only_deterministic_models)e(:)k(unit)665 676 y(\(*)g(Succeeds)e(if)i -(all)f(regexp)g(content)g(models)f(are)i(deterministic.)710 -773 y(*)g(Otherwise)e(Validation_error.)710 870 y(*\))576 -1065 y(method)g(write)h(:)h(Pxp_types.output_stream)c(-)p -Fo(>)j Fq(Pxp_types.encoding)e(-)p Fo(>)j Fq(bool)f(-)396 -1162 y Fo(>)h Fq(unit)665 1259 y(\(*)g(write_compact_as_latin1)c(os)j -(enc)h(doctype:)710 1356 y(*)g(Writes)f(the)g(DTD)g(as)h('enc'-encoded) -d(string)i(to)h('os'.)f(If)g('doctype',)f(a)710 1453 -y(*)i(DTD)f(like)g Fo(<)p Fq(!DOCTYPE)f(root)i([)f(...)h(])p -Fo(>)f Fq(is)g(written.)g(If)g('not)h(doctype',)710 1550 -y(*)g(only)f(the)g(declarations)f(are)h(written)g(\(the)g(material)g -(within)g(the)710 1647 y(*)h(square)f(brackets\).)710 -1745 y(*\))576 1939 y(method)f(write_compact_as_latin1)e(:)k -(Pxp_types.output_stream)c(-)p Fo(>)j Fq(bool)h(-)p Fo(>)f -Fq(unit)665 2036 y(\(*)h(DEPRECATED)e(METHOD;)h(included)f(only)h(to)h -(keep)f(compatibility)f(with)710 2133 y(*)i(older)f(versions)f(of)i -(the)f(parser)710 2230 y(*\))576 2522 y -(\(*---------------------------*\))576 2619 y(method)f(invalidate)h(:)g -(unit)665 2716 y(\(*)h(INTERNAL)e(METHOD)h(*\))576 2813 -y(method)f(warner)h(:)h(Pxp_types.collect_warnings)665 -2910 y(\(*)g(INTERNAL)e(METHOD)h(*\))486 3007 y(end)396 -3396 y(\(*)h(--------------------------------------)o(------)o(---)39 -b(*\))396 3590 y(and)45 b(dtd_element)e(:)h(dtd)h(-)p -Fo(>)f Fq(string)g(-)p Fo(>)486 3687 y Fq(\(*)g(Creation:)531 -3784 y(*)134 b(new)44 b(dtd_element)f(init_dtd)h(init_name:)531 -3882 y(*)g(creates)g(a)h(new)f(dtd_element)f(object)h(for)g(init_dtd)g -(with)g(init_name.)531 3979 y(*)g(The)h(strings)e(are)i(represented)e -(in)h(the)h(same)f(encoding)f(as)i(init_dtd.)531 4076 -y(*\))486 4173 y(object)576 4367 y(method)e(name)i(:)f(string)665 -4464 y(\(*)h(returns)e(the)i(name)f(of)g(the)h(declared)e(element)h -(*\))576 4659 y(method)f(externally_declared)f(:)j(bool)665 -4756 y(\(*)g(returns)e(whether)h(the)g(element)g(declaration)f(occurs)h -(in)g(an)h(external)710 4853 y(*)g(entity.)p Black 3800 -5278 a Fr(85)p Black eop -%%Page: 86 86 -86 85 bop Black 2348 67 a Fr(Chapter)20 b(4.)g(Con\002guring)e(and)i -(calling)f(the)h(par)o(ser)p Black 710 579 a Fq(*\))576 -773 y(method)43 b(content_model)g(:)i(Pxp_types.content_model_type)665 -870 y(\(*)g(get)f(the)g(content)g(model)g(of)h(this)f(element)f -(declaration,)g(or)i(Unspecified)e(*\))576 1065 y(method)g(content_dfa) -g(:)i(Pxp_dfa.dfa_definition)c(option)665 1162 y(\(*)k(return)f(the)g -(DFA)g(of)h(the)f(content)g(model)g(if)g(there)g(is)h(a)f(DFA,)h(or)f -(None.)710 1259 y(*)h(A)f(DFA)h(exists)f(only)g(for)g(regexp)g(style)g -(content)g(models)f(which)h(are)710 1356 y(*)h(deterministic.)710 -1453 y(*\))576 1647 y(method)e(set_cm_and_extdecl)f(:)j -(Pxp_types.content_model_type)40 b(-)p Fo(>)k Fq(bool)h(-)p -Fo(>)f Fq(unit)665 1745 y(\(*)h(set_cm_and_extdecl)d(cm)i(extdecl:)710 -1842 y(*)h(set)f(the)g(content)g(model)g(to)h('cm'.)f(Once)g(the)g -(content)g(model)g(is)g(not)710 1939 y(*)h(Unspecified,)e(it)h(cannot)g -(be)g(set)h(to)f(a)h(different)e(value)h(again.)710 2036 -y(*)h(Furthermore,)e(it)h(is)h(set)f(whether)g(the)g(element)g(occurs)f -(in)i(an)f(external)710 2133 y(*)h(entity)f(\('extdecl'\).)710 -2230 y(*\))576 2424 y(method)f(encoding)h(:)h(Pxp_types.rep_encoding) -665 2522 y(\(*)g(Return)f(the)g(encoding)f(of)i(the)f(strings)g(*\))576 -2716 y(method)f(allow_arbitrary)g(:)h(unit)665 2813 y(\(*)h(After)f -(this)g(method)g(has)g(been)g(invoked,)g(the)g(ob-)396 -2910 y(ject)g(changes)g(its)g(behaviour:)710 3007 y(*)h(-)f(attributes) -g(that)g(have)g(not)g(been)g(added)g(may)h(be)f(used)g(in)h(an)710 -3104 y(*)134 b(arbitrary)44 b(way;)g(the)g(method)g("attribute")f -(indicates)g(this)710 3202 y(*)134 b(by)45 b(raising)f(Undeclared)f -(instead)g(of)i(Validation_error.)710 3299 y(*\))576 -3493 y(method)e(disallow_arbitrary)f(:)j(unit)576 3687 -y(method)e(arbitrary_allowed)f(:)j(bool)665 3784 y(\(*)g(Returns)e -(whether)h(arbitrary)f(attributes)h(are)g(allowed)g(or)g(not.)g(*\))576 -3979 y(method)f(attribute)h(:)g(string)g(-)p Fo(>)1517 -4076 y Fq(Pxp_types.att_type)e(*)j(Pxp_types.att_default)665 -4173 y(\(*)g(get)f(the)g(type)h(and)f(default)g(value)g(of)g(a)h -(declared)e(attribute,)g(or)i(raise)710 4270 y(*)g(Validation_error)d -(if)i(the)h(attribute)e(does)h(not)h(exist.)710 4367 -y(*)g(If)f('arbitrary_allowed',)e(the)i(exception)f(Undeclared)h(is)g -(raised)g(instead)710 4464 y(*)h(of)f(Validation_error.)710 -4561 y(*\))576 4756 y(method)f -(attribute_violates_standalone_declaration)38 b(:)1069 -4853 y(string)44 b(-)p Fo(>)g Fq(string)g(option)g(-)p -Fo(>)g Fq(bool)p Black 3798 5278 a Fr(86)p Black eop -%%Page: 87 87 -87 86 bop Black 2348 67 a Fr(Chapter)20 b(4.)g(Con\002guring)e(and)i -(calling)f(the)h(par)o(ser)p Black 665 579 a Fq(\(*)45 -b(attribute_violates_standalone_declarat)o(ion)39 b(name)44 -b(v:)710 676 y(*)h(Checks)f(whether)f(the)i(attribute)e('name')h -(violates)f(the)i("standalone")710 773 y(*)g(declaration)e(if)h(it)h -(has)f(value)g('v'.)710 870 y(*)h(The)f(method)g(returns)g(true)g(if:) -710 967 y(*)h(-)f(The)h(attribute)e(declaration)g(occurs)h(in)g(an)h -(external)e(entity,)710 1065 y(*)i(and)f(if)h(one)f(of)g(the)h(two)f -(conditions)f(holds:)710 1162 y(*)i(-)f(v)h(=)g(None,)f(and)g(there)g -(is)h(a)f(default)g(for)g(the)h(attribute)e(value)710 -1259 y(*)i(-)f(v)h(=)g(Some)f(s,)g(and)h(the)f(type)g(of)h(the)f -(attribute)f(is)i(not)f(CDATA,)710 1356 y(*)134 b(and)45 -b(s)f(changes)g(if)h(normalized)e(according)g(to)i(the)f(rules)g(of)g -(the)710 1453 y(*)134 b(attribute)44 b(type.)710 1550 -y(*)710 1647 y(*)h(The)f(method)g(raises)g(Validation_error)e(if)i(the) -h(attribute)e(does)h(not)g(exist.)710 1745 y(*)h(If)f -('arbitrary_allowed',)e(the)i(exception)f(Undeclared)h(is)g(raised)g -(instead)710 1842 y(*)h(of)f(Validation_error.)710 1939 -y(*\))576 2133 y(method)f(attribute_names)g(:)h(string)g(list)665 -2230 y(\(*)h(get)f(the)g(list)h(of)f(all)g(declared)g(attributes)f(*\)) -576 2424 y(method)g(names_of_required_attributes)e(:)j(string)g(list) -665 2522 y(\(*)h(get)f(the)g(list)h(of)f(all)g(attributes)g(that)g(are) -g(specified)f(as)i(required)710 2619 y(*)g(attributes)710 -2716 y(*\))576 2910 y(method)e(id_attribute_name)f(:)j(string)f(option) -665 3007 y(\(*)h(Returns)e(the)i(name)f(of)g(the)h(attribute)e(with)h -(type)g(ID,)h(or)f(None.)g(*\))576 3202 y(method)f -(idref_attribute_names)f(:)i(string)g(list)665 3299 y(\(*)h(Returns)e -(the)i(names)f(of)g(the)h(attributes)e(with)h(type)g(IDREF)g(or)h -(IDREFS.)e(*\))576 3493 y(method)g(add_attribute)g(:)i(string)f(-)p -Fo(>)1607 3590 y Fq(Pxp_types.att_type)e(-)p Fo(>)531 -3687 y Fq(Pxp_types.att_default)f(-)p Fo(>)531 3784 y -Fq(bool)j(-)p Fo(>)620 3882 y Fq(unit)665 3979 y(\(*)h(add_attribute)d -(name)j(type)f(default)f(extdecl:)710 4076 y(*)i(add)f(an)h(attribute)e -(declaration)g(for)h(an)h(attribute)e(with)h(the)h(given)e(name,)710 -4173 y(*)i(type,)f(and)g(default)g(value.)g(If)g(there)g(is)h(more)f -(than)g(one)g(declaration)f(for)710 4270 y(*)i(an)f(attribute)g(name,)g -(the)g(first)g(declara-)396 4367 y(tion)g(counts;)g(the)g(other)g -(declarations)710 4464 y(*)h(are)f(ignored.)710 4561 -y(*)h('extdecl':)e(if)h(true,)g(the)h(attribute)e(declaration)g(occurs) -h(in)g(an)h(external)710 4659 y(*)g(entity.)e(This)i(property)e(is)i -(used)f(to)g(check)g(the)h("standalone")d(attribute.)710 -4756 y(*\))p Black 3797 5278 a Fr(87)p Black eop -%%Page: 88 88 -88 87 bop Black 2348 67 a Fr(Chapter)20 b(4.)g(Con\002guring)e(and)i -(calling)f(the)h(par)o(ser)p Black 576 579 a Fq(method)43 -b(validate)h(:)h(unit)665 676 y(\(*)g(checks)f(whether)f(this)h -(element)g(declaration)f(\(i.e.)h(the)g(content)g(model)g(and)710 -773 y(*)h(all)f(attribute)f(declarations\))g(is)i(valid)f(for)g(the)g -(associated)f(DTD.)710 870 y(*)i(Raises)f(mostly)f(Validation_error)g -(if)h(the)g(validation)g(fails.)710 967 y(*\))576 1162 -y(method)f(write)h(:)h(Pxp_types.output_stream)c(-)p -Fo(>)j Fq(Pxp_types.encoding)e(-)p Fo(>)j Fq(unit)665 -1259 y(\(*)g(write_compact_as_latin1)c(os)j(enc:)710 -1356 y(*)h(Writes)f(the)g Fo(<)p Fq(!ELEMENT)f(...)h -Fo(>)h Fq(declaration)e(to)h('os')h(as)f('enc'-)396 1453 -y(encoded)g(string.)710 1550 y(*\))576 1745 y(method)f -(write_compact_as_latin1)e(:)k(Pxp_types.output_stream)c(-)p -Fo(>)j Fq(unit)665 1842 y(\(*)h(DEPRECATED)e(METHOD;)h(included)f(only) -h(to)h(keep)f(compatibility)f(with)710 1939 y(*)i(older)f(versions)f -(of)i(the)f(parser)710 2036 y(*\))486 2133 y(end)396 -2327 y(\(*)h(--------------------------------------)o(------)o(---)39 -b(*\))396 2522 y(and)45 b(dtd_notation)d(:)j(string)f(-)p -Fo(>)g Fq(Pxp_types.ext_id)e(-)p Fo(>)j Fq(Pxp_types.rep_encoding)c(-)p -Fo(>)486 2619 y Fq(\(*)j(Creation:)531 2716 y(*)179 b(new)44 -b(dtd_notation)f(a_name)h(an_external_ID)e(init_encoding)531 -2813 y(*)i(creates)g(a)h(new)f(dtd_notation)f(object)h(with)g(the)g -(given)g(name)g(and)h(the)f(given)531 2910 y(*)g(external)g(ID.)531 -3007 y(*\))486 3104 y(object)576 3202 y(method)f(name)i(:)f(string)576 -3299 y(method)f(ext_id)h(:)h(Pxp_types.ext_id)576 3396 -y(method)e(encoding)h(:)h(Pxp_types.rep_encoding)576 -3590 y(method)e(write)h(:)h(Pxp_types.output_stream)c(-)p -Fo(>)j Fq(Pxp_types.encoding)e(-)p Fo(>)j Fq(unit)665 -3687 y(\(*)g(write_compact_as_latin1)c(os)j(enc:)710 -3784 y(*)h(Writes)f(the)g Fo(<)p Fq(!NOTATION)f(...)h -Fo(>)h Fq(declaration)e(to)h('os')g(as)h('enc'-encoded)710 -3882 y(*)g(string.)710 3979 y(*\))576 4173 y(method)e -(write_compact_as_latin1)e(:)k(Pxp_types.output_stream)c(-)p -Fo(>)j Fq(unit)665 4270 y(\(*)h(DEPRECATED)e(METHOD;)h(included)f(only) -h(to)h(keep)f(compatibility)f(with)710 4367 y(*)i(older)f(versions)f -(of)i(the)f(parser)710 4464 y(*\))486 4659 y(end)396 -4853 y(\(*)h(--------------------------------------)o(------)o(---)39 -b(*\))p Black 3800 5278 a Fr(88)p Black eop -%%Page: 89 89 -89 88 bop Black 2348 67 a Fr(Chapter)20 b(4.)g(Con\002guring)e(and)i -(calling)f(the)h(par)o(ser)p Black 396 676 a Fq(and)45 -b(proc_instruction)d(:)i(string)g(-)p Fo(>)h Fq(string)e(-)p -Fo(>)i Fq(Pxp_types.rep_encoding)c(-)p Fo(>)486 773 y -Fq(\(*)j(Creation:)531 870 y(*)134 b(new)44 b(proc_instruction)f -(a_target)g(a_value)531 967 y(*)h(creates)g(a)h(new)f(proc_instruction) -e(object)i(with)g(the)h(given)f(target)f(string)h(and)531 -1065 y(*)g(the)h(given)f(value)g(string.)531 1162 y(*)g(Note:)g(A)h -(processing)e(instruction)g(is)i(written)e(as)i Fo(<)p -Fq(?target)e(value?)p Fo(>)p Fq(.)531 1259 y(*\))486 -1356 y(object)576 1453 y(method)g(target)h(:)h(string)576 -1550 y(method)e(value)h(:)h(string)576 1647 y(method)e(encoding)h(:)h -(Pxp_types.rep_encoding)576 1842 y(method)e(write)h(:)h -(Pxp_types.output_stream)c(-)p Fo(>)j Fq(Pxp_types.encoding)e(-)p -Fo(>)j Fq(unit)665 1939 y(\(*)g(write)f(os)g(enc:)710 -2036 y(*)h(Writes)f(the)g Fo(<)p Fq(?...?)p Fo(>)f Fq(PI)i(to)f('os')h -(as)f('enc'-encoded)f(string.)710 2133 y(*\))576 2327 -y(method)g(write_compact_as_latin1)e(:)k(Pxp_types.output_stream)c(-)p -Fo(>)j Fq(unit)665 2424 y(\(*)h(DEPRECATED)e(METHOD;)h(included)f(only) -h(to)h(keep)f(compatibility)f(with)710 2522 y(*)i(older)f(versions)f -(of)i(the)f(parser)710 2619 y(*\))576 2813 y(method)f(parse_pxp_option) -g(:)h(\(string)g(*)h(string)e(*)i(\(string)f(*)g(string\))g(list\))665 -2910 y(\(*)h(Parses)f(a)g(PI)h(containing)e(a)i(PXP)f(option.)g(Such)g -(PIs)g(are)g(formed)g(like:)710 3007 y(*)134 b Fo(<)p -Fq(?target)44 b(option-name)f(option-att="value")f(option-att="value")f -(...)k(?)p Fo(>)710 3104 y Fq(*)g(The)f(method)g(returns)g(a)g(triple) -710 3202 y(*)134 b(\(target,)44 b(option-name,)f([option-att,)g(value;) -g(...]\))710 3299 y(*)i(or)f(raises)g(Error.)710 3396 -y(*\))486 3590 y(end)396 3784 y(;;)-2 4286 y Fx(4.4.)39 -b(In)-6 b(v)l(oking)38 b(the)h(par)n(ser)396 4466 y Fv(Here)20 -b(a)h(description)e(of)h(Pxp_yacc.)-2 4794 y Fp(4.4.1.)35 -b(Defaults)p Black 3800 5278 a Fr(89)p Black eop -%%Page: 90 90 -90 89 bop Black 2348 67 a Fr(Chapter)20 b(4.)g(Con\002guring)e(and)i -(calling)f(the)h(par)o(ser)p Black 396 579 a Fv(The)g(follo)n(wing)f -(def)o(aults)g(are)i(a)n(v)n(ailable:)396 759 y Fq(val)45 -b(default_config)d(:)j(config)396 856 y(val)g(default_extension)d(:)i -(\('a)h(node)f(extension\))f(as)h('a)396 953 y(val)h(default_spec)d(:)j -(\('a)f(node)h(extension)e(as)h('a\))h(spec)-2 1406 y -Fp(4.4.2.)35 b(P)l(ar)n(sing)f(functions)396 1574 y Fv(In)20 -b(the)g(follo)n(wing,)f(the)h(term)g("closed)g(document")e(refers)h(to) -i(an)f(XML)g(structure)f(lik)o(e)396 1754 y Fo(<)p Fq(!DOCTYPE)43 -b(...)i([)f Fn(declarations)f Fq(])i Fo(>)396 1851 y(<)p -Fn(root)p Fo(>)396 1948 y Fq(...)396 2045 y Fo(<)p Fq(/)p -Fn(root)p Fo(>)396 2236 y Fv(The)20 b(term)g("fragment")e(refers)i(to)g -(an)g(XML)h(structure)e(lik)o(e)396 2416 y Fo(<)p Fn(root)p -Fo(>)396 2513 y Fq(...)396 2611 y Fo(<)p Fq(/)p Fn(root)p -Fo(>)396 2802 y Fv(i.e.)h(only)g(to)g(one)g(isolated)g(element)f -(instance.)396 3023 y Fq(val)45 b(parse_dtd_entity)d(:)i(config)g(->)h -(source)f(->)g(dtd)396 3214 y Fv(P)o(arses)21 b(the)f(declarations)f -(which)h(are)g(contained)e(in)j(the)f(entity)-5 b(,)19 -b(and)h(returns)f(them)h(as)h Fq(dtd)f Fv(object.)396 -3436 y Fq(val)45 b(extract_dtd_from_document_entity)39 -b(:)45 b(config)f(->)g(source)g(->)g(dtd)396 3627 y Fv(Extracts)20 -b(the)g(DTD)h(from)e(a)h(closed)g(document.)e(Both)i(the)h(internal)e -(and)h(the)g(e)o(xternal)f(subsets)h(are)h(e)o(xtracted)d(and)396 -3735 y(combined)g(to)i(one)f Fq(dtd)h Fv(object.)f(This)h(function)e -(does)h(not)h(parse)f(the)h(whole)f(document,)f(b)n(ut)i(only)e(the)i -(parts)g(that)g(are)396 3843 y(necessary)g(to)g(e)o(xtract)f(the)i -(DTD.)396 4064 y Fq(val)45 b(parse_document_entity)c(:)576 -4161 y(?transform_dtd:\(dtd)g(->)k(dtd\))f(->)576 4259 -y(?id_index:\('ext)e(index\))i(->)576 4356 y(config)f(->)576 -4453 y(source)g(->)576 4550 y('ext)h(spec)g(->)755 4647 -y('ext)g(document)p Black 3800 5278 a Fr(90)p Black eop -%%Page: 91 91 -91 90 bop Black 2348 67 a Fr(Chapter)20 b(4.)g(Con\002guring)e(and)i -(calling)f(the)h(par)o(ser)p Black 396 579 a Fv(P)o(arses)h(a)g(closed) -e(document)g(and)g(v)n(alidates)h(it)h(against)e(the)i(DTD)f(that)g(is) -h(contained)e(in)h(the)h(document)d(\(internal)396 687 -y(and)i(e)o(xternal)f(subsets\).)h(The)g(option)f Fq(~transform_dtd)f -Fv(can)i(be)g(used)g(to)g(transform)f(the)h(DTD)h(in)f(the)g(document,) -396 795 y(and)g(to)g(use)h(the)f(transformed)e(DTD)i(for)g(v)n -(alidation.)e(If)i Fq(~id_index)g Fv(is)h(speci\002ed,)e(an)h(inde)o(x) -f(of)h(all)h(ID)f(attrib)n(utes)h(is)396 903 y(created.)396 -1124 y Fq(val)45 b(parse_wfdocument_entity)c(:)576 1222 -y(config)i(->)576 1319 y(source)g(->)576 1416 y('ext)h(spec)g(->)755 -1513 y('ext)g(document)396 1704 y Fv(P)o(arses)21 b(a)g(closed)e -(document,)f(b)n(ut)j(checks)e(it)i(only)e(on)h(well-formedness.)396 -1926 y Fq(val)45 b(parse_content_entity)86 b(:)576 2023 -y(?id_index:\('ext)42 b(index\))i(->)576 2120 y(config)f(->)576 -2217 y(source)g(->)576 2314 y(dtd)h(->)576 2411 y('ext)g(spec)g(->)755 -2508 y('ext)g(node)396 2699 y Fv(P)o(arses)21 b(a)g(fragment,)d(and)h -(v)n(alidates)h(the)g(element.)396 2921 y Fq(val)45 b -(parse_wfcontent_entity)c(:)576 3018 y(config)i(->)576 -3115 y(source)g(->)576 3212 y('ext)h(spec)g(->)755 3310 -y('ext)g(node)396 3500 y Fv(P)o(arses)21 b(a)g(fragment,)d(b)n(ut)i -(checks)g(it)g(only)g(on)g(well-formedness.)-2 3870 y -Fp(4.4.3.)35 b(Con\002guration)f(options)396 4110 y Fq(type)44 -b(config)g(=)576 4207 y({)g(warner)g(:)h(collect_warnings;)665 -4304 y(errors_with_line_numbers)c(:)k(bool;)665 4401 -y(enable_pinstr_nodes)d(:)j(bool;)665 4499 y(enable_super_root_node)c -(:)k(bool;)665 4596 y(enable_comment_nodes)d(:)i(bool;)665 -4693 y(encoding)g(:)g(rep_encoding;)665 4790 y -(recognize_standalone_declaration)c(:)k(bool;)p Black -3800 5278 a Fr(91)p Black eop -%%Page: 92 92 -92 91 bop Black 2348 67 a Fr(Chapter)20 b(4.)g(Con\002guring)e(and)i -(calling)f(the)h(par)o(ser)p Black 665 579 a Fq -(store_element_positions)41 b(:)k(bool;)665 676 y(idref_pass)e(:)i -(bool;)665 773 y(validate_by_dfa)e(:)h(bool;)665 870 -y(accept_only_deterministic_models)c(:)k(bool;)665 967 -y(...)576 1065 y(})p Black 396 1422 a Ft(\225)p Black -60 w Fq(warner:)p Fv(The)19 b(parser)h(prints)f(w)o(arnings)h(by)f(in)m -(v)n(oking)f(the)j(method)d Fq(warn)j Fv(for)e(this)i(w)o(arner)e -(object.)h(\(Def)o(ault:)f(all)479 1530 y(w)o(arnings)h(are)g -(dropped\))p Black 396 1637 a Ft(\225)p Black 60 w Fq -(errors_with_line_numbers:)p Fv(If)c(true,)k(errors)f(contain)g(line)i -(numbers;)d(if)j(f)o(alse,)f(errors)g(contain)f(only)g(byte)479 -1745 y(positions.)h(The)g(latter)g(mode)f(is)i(f)o(aster)-5 -b(.)21 b(\(Def)o(ault:)e(true\))p Black 396 1853 a Ft(\225)p -Black 60 w Fq(enable_pinstr_nodes:)p Fv(If)e(true,)j(the)g(parser)f -(creates)i(e)o(xtra)e(nodes)g(for)h(processing)f(instructions.)g(If)h -(f)o(alse,)479 1961 y(processing)f(instructions)g(are)h(simply)g(added) -f(to)i(the)f(element)f(or)h(document)f(surrounding)e(the)j -(instructions.)479 2069 y(\(Def)o(ault:)g(f)o(alse\))p -Black 396 2177 a Ft(\225)p Black 60 w Fq(enable_super_root_node:)p -Fv(If)c(true,)k(the)g(parser)g(creates)g(an)g(e)o(xtra)g(node)f(which)g -(is)j(the)e(parent)f(of)h(the)g(root)479 2285 y(of)g(the)g(document)f -(tree.)h(This)g(node)f(is)i(called)f(super)g(root;)f(it)i(is)g(an)g -(element)e(with)i(type)e Fq(T_super_root)p Fv(.)g(-)h(If)479 -2393 y(there)g(are)g(processing)f(instructions)g(outside)h(the)g(root)f -(element)h(and)g(outside)f(the)i(DTD,)f(the)o(y)f(are)h(added)f(to)i -(the)479 2501 y(super)f(root)f(instead)h(of)g(the)g(document.)e(-)j(If) -f(f)o(alse,)g(the)g(super)g(root)g(node)f(is)i(not)f(created.)f(\(Def)o -(ault:)h(f)o(alse\))p Black 396 2609 a Ft(\225)p Black -60 w Fq(enable_comment_nodes:)p Fv(If)d(true,)i(the)i(parser)e(creates) -h(nodes)g(for)f(comments)g(with)i(type)f Fq(T_comment)p -Fv(;)f(if)479 2717 y(f)o(alse,)i(such)f(nodes)f(are)h(not)g(created.)f -(\(Def)o(ault:)h(f)o(alse\))p Black 396 2825 a Ft(\225)p -Black 60 w Fq(encoding:)p Fv(Speci\002es)f(the)i(internal)e(encoding)f -(of)i(the)g(parser)-5 b(.)20 b(Most)g(strings)h(are)f(then)f -(represented)g(according)479 2933 y(to)i(this)f(encoding;)f(ho)n(we)n -(v)o(er)f(there)h(are)i(some)f(e)o(xceptions)e(\(especially)i -Fq(ext_id)f Fv(v)n(alues)h(which)g(are)g(al)o(w)o(ays)479 -3041 y(UTF-8)g(encoded\).)e(\(Def)o(ault:)h(`Enc_iso88591\))p -Black 396 3148 a Ft(\225)p Black 60 w Fq -(recognize_standalone_declaration:)c Fv(If)21 b(true)e(and)h(if)h(the)f -(parser)f(is)i(v)n(alidating,)e(the)479 3256 y Fq(standalone="yes")f -Fv(declaration)h(forces)h(that)g(it)h(is)g(check)o(ed)e(whether)g(the)h -(document)e(is)j(a)g(standalone)479 3364 y(document.)d(-)j(If)f(f)o -(alse,)g(or)g(if)g(the)h(parser)e(is)i(in)g(well-formedness)d(mode,)h -(such)h(declarations)f(are)h(ignored.)479 3472 y(\(Def)o(ault:)g -(true\))p Black 396 3580 a Ft(\225)p Black 60 w Fq -(store_element_positions:)d Fv(If)j(true,)g(for)f(e)n(v)o(ery)g -(non-data)f(node)h(the)i(source)e(position)g(is)j(stored.)d(If)h(f)o -(alse,)479 3688 y(the)g(position)g(information)e(is)j(lost.)f(If)g(a)n -(v)n(ailable,)g(you)f(can)h(get)g(the)g(positions)g(of)g(nodes)f(by)h -(in)m(v)n(oking)e(the)479 3796 y Fq(position)i Fv(method.)e(\(Def)o -(ault:)i(true\))p Black 396 3904 a Ft(\225)p Black 60 -w Fq(idref_pass:)p Fv(If)e(true)i(and)g(if)g(there)g(is)h(an)f(ID)h -(inde)o(x,)e(the)h(parser)f(checks)h(whether)f(e)n(v)o(ery)g(IDREF)i -(or)e(IDREFS)479 4012 y(attrib)n(ute)h(refer)g(to)g(an)g(e)o(xisting)f -(node;)h(this)g(requires)g(that)g(the)g(parser)g(tra)n(v)o(erses)g(the) -g(whole)f(doument)g(tree.)h(If)479 4120 y(f)o(alse,)h(this)f(check)g -(is)h(left)f(out.)g(\(Def)o(ault:)g(f)o(alse\))p Black -396 4228 a Ft(\225)p Black 60 w Fq(validate_by_dfa:)p -Fv(If)e(true)h(and)h(if)h(the)f(content)f(model)g(for)h(an)g(element)g -(type)f(is)i(deterministic,)e(a)479 4336 y(deterministic)h(\002nite)g -(automaton)e(is)j(used)f(to)h(v)n(alidate)e(whether)g(the)i(element)e -(contents)h(match)f(the)i(content)479 4444 y(model)e(of)h(the)g(type.)g -(If)g(f)o(alse,)g(or)g(if)g(a)g(DF)-6 b(A)21 b(is)g(not)f(a)n(v)n -(ailable,)f(a)h(backtracking)e(algorithm)g(is)j(used)f(for)f(v)n -(alidation.)479 4552 y(\(Def)o(ault:)h(true\))p Black -396 4659 a Ft(\225)p Black 60 w Fq(accept_only_deterministic_models:)15 -b Fv(If)21 b(true,)e(only)h(deterministic)f(content)g(models)h(are)g -(accepted;)f(if)479 4767 y(f)o(alse,)i(an)o(y)e(syntactically)h -(correct)f(content)g(models)h(can)g(be)g(processed.)f(\(Def)o(ault:)g -(true\))p Black 3800 5278 a Fr(92)p Black eop -%%Page: 93 93 -93 92 bop Black 2348 67 a Fr(Chapter)20 b(4.)g(Con\002guring)e(and)i -(calling)f(the)h(par)o(ser)p Black -2 583 a Fp(4.4.4.)35 -b(Whic)o(h)f(con\002guration)g(should)g(I)f(use?)396 -751 y Fv(First,)21 b(I)f(recommend)e(to)i(v)n(ary)g(the)g(def)o(ault)f -(con\002guration)f(instead)i(of)g(creating)f(a)i(ne)n(w)f -(con\002guration)d(record.)i(F)o(or)396 859 y(instance,)h(to)g(set)h -Fq(idref_pass)e Fv(to)i Fq(true)p Fv(,)e(change)g(the)i(def)o(ault)e -(as)i(in:)396 1039 y Fq(let)45 b(config)e(=)i({)g(default_config)d -(with)i(idref_pass)g(=)g(true)g(})396 1230 y Fv(The)20 -b(background)d(is)k(that)f(I)h(can)f(add)f(more)h(options)f(to)h(the)g -(record)f(in)i(future)e(v)o(ersions)g(of)h(the)g(parser)f(without)396 -1338 y(breaking)g(your)f(programs.)396 1487 y Fu(Do)i(I)i(need)e(extra) -f(nodes)i(f)n(or)f(pr)o(ocessing)g(instructions?)g Fv(By)g(def)o(ault,) -g(such)g(nodes)f(are)h(not)g(created.)f(This)i(does)396 -1595 y(not)f(mean)g(that)g(the)g(processing)f(instructions)g(are)h -(lost;)h(ho)n(we)n(v)o(er)m(,)d(you)h(cannot)g(\002nd)h(out)g(the)g(e)o -(xact)g(location)f(where)396 1703 y(the)o(y)h(occur)-5 -b(.)19 b(F)o(or)h(e)o(xample,)e(the)j(follo)n(wing)d(XML)i(te)o(xt)396 -1883 y Fq()396 2074 y Fv(will)h(normally)e -(create)h(one)f(element)h(node)f(for)h Fq(x)g Fv(containing)e -Fr(one)i Fv(subnode)f(for)g Fq(y)p Fv(.)h(The)g(processing)f -(instructions)396 2182 y(are)h(attached)g(to)g Fq(x)h -Fv(in)f(a)h(separate)e(hash)h(table;)h(you)e(can)h(access)h(them)e -(using)h Fq(x)45 b(#)f(pinstr)g("pi1")20 b Fv(and)g Fq(x)44 -b(#)396 2290 y(pinstr)g("pi2")p Fv(,)20 b(respecti)n(v)o(ely)-5 -b(.)18 b(The)i(information)d(is)k(lost)g(where)f(the)g(instructions)f -(occur)g(within)h Fq(x)p Fv(.)396 2439 y(If)g(the)h(option)d -Fq(enable_pinstr_nodes)g Fv(is)j(turned)e(on,)h(the)g(parser)f(creates) -i(e)o(xtra)e(nodes)g Fq(pi1)i Fv(and)e Fq(pi2)i Fv(such)f(that)396 -2547 y(the)g(subnodes)f(of)h Fq(x)h Fv(are)f(no)n(w:)396 -2728 y Fq(x)45 b(#)g(sub_nodes)e(=)i([)f(pi1;)g(y;)h(pi2)f(])396 -2919 y Fv(The)20 b(e)o(xtra)g(nodes)f(contain)g(the)h(processing)f -(instructions)g(in)i(the)f(usual)g(w)o(ay)-5 b(,)20 b(i.e.)g(you)f(can) -h(access)h(them)f(using)f Fq(pi1)396 3026 y(#)45 b(pinstr)f("pi1")20 -b Fv(and)f Fq(pi2)45 b(#)f(pinstr)g("pi2")p Fv(,)20 b(respecti)n(v)o -(ely)-5 b(.)396 3176 y(Note)20 b(that)h(you)e(will)i(need)e(an)i(e)o(x) -o(emplar)d(for)h(the)i(PI)f(nodes)g(\(see)g Fq(make_spec_from_alist)p -Fv(\).)396 3325 y Fu(Do)g(I)i(need)e(a)h(super)g(r)o(oot)d(node?)i -Fv(By)h(def)o(ault,)e(there)h(is)h(no)f(super)f(root)h(node.)f(The)h -Fq(document)f Fv(object)h(refers)396 3433 y(directly)g(to)g(the)g(node) -f(representing)f(the)j(root)e(element)h(of)g(the)g(document,)e(i.e.)396 -3613 y Fq(doc)45 b(#)f(root)g(=)h(r)396 3804 y Fv(if)21 -b Fq(r)f Fv(is)h(the)g(root)e(node.)g(This)h(is)i(sometimes)d(incon)m -(v)o(enient:)f(\(1\))h(Some)h(algorithms)f(become)g(simpler)h(if)g(e)n -(v)o(ery)f(node)396 3912 y(has)i(a)f(parent,)f(e)n(v)o(en)g(the)i(root) -e(node.)g(\(2\))h(Some)g(standards)f(such)h(as)h(XP)o(ath)f(call)g(the) -h("root)e(node")g(the)h(node)f(whose)396 4020 y(child)h(represents)f -(the)i(root)e(of)h(the)g(document.)e(\(3\))i(The)g(super)f(root)h(node) -f(can)h(serv)o(e)f(as)i(a)g(container)e(for)g(processing)396 -4128 y(instructions)g(outside)h(the)g(root)g(element.)f(Because)i(of)e -(these)i(reasons,)e(it)i(is)g(possible)f(to)h(create)f(an)g(e)o(xtra)f -(super)h(root)396 4236 y(node,)f(whose)h(child)g(is)h(the)f(root)g -(node:)396 4416 y Fq(doc)45 b(#)f(root)g(=)h(sr)403 b(&&)396 -4513 y(sr)45 b(#)f(sub_nodes)g(=)g([)h(r)g(])396 4704 -y Fv(When)20 b(e)o(xtra)g(nodes)f(are)h(also)h(created)e(for)h -(processing)f(instructions,)g(these)h(nodes)f(can)h(be)h(added)e(to)h -(the)g(super)g(root)396 4812 y(node)f(if)h(the)o(y)e(occur)h(outside)g -(the)g(root)g(element)g(\(reason)f(\(3\)\),)h(and)g(the)g(order)g -(re\003ects)g(the)h(order)e(in)i(the)f(source)g(te)o(xt.)p -Black 3800 5278 a Fr(93)p Black eop -%%Page: 94 94 -94 93 bop Black 2348 67 a Fr(Chapter)20 b(4.)g(Con\002guring)e(and)i -(calling)f(the)h(par)o(ser)p Black 396 579 a Fv(Note)g(that)h(you)e -(will)i(need)e(an)i(e)o(x)o(emplar)d(for)h(the)i(super)e(root)h(node)f -(\(see)h Fq(make_spec_from_alist)p Fv(\).)396 728 y Fu(What)g(is)h(the) -g(effect)e(of)h(the)h(UTF-8)e(encoding?)h Fv(By)h(def)o(ault,)e(the)h -(parser)g(represents)f(strings)h(\(with)g(fe)n(w)396 -836 y(e)o(xceptions\))e(as)j(ISO-8859-1)c(strings.)i(These)h(are)g -(well-kno)n(wn,)d(and)j(there)f(are)h(tools)g(and)f(fonts)g(for)h(this) -g(encoding.)396 986 y(Ho)n(we)n(v)o(er)m(,)e(internationalization)g -(may)h(require)g(that)i(you)e(switch)h(o)o(v)o(er)f(to)i(UTF-8)e -(encoding.)f(In)i(most)396 1094 y(en)m(vironments,)d(the)k(immediate)e -(ef)n(fect)h(will)g(be)h(that)f(you)f(cannot)g(read)h(strings)g(with)g -(character)f(codes)h(>=)h(160)e(an)o(y)396 1202 y(longer;)g(your)g -(terminal)h(will)h(only)e(sho)n(w)h(funn)o(y)e(glyph)h(combinations.)f -(It)i(is)h(strongly)e(recommended)e(to)k(install)396 -1310 y(Unicode)e(fonts)h(\(GNU)g(Unifont)f -(\(http://czyborra.com/unifon)o(t/\),)c(Markus)k(K)o(uhn')-5 -b(s)19 b(fonts)396 1417 y(\(http://www)-5 b(.cl.cam.ac.uk/~mgk25)o(/do) -m(wnlo)o(ad/u)o(cs-fo)o(nts.tar)g(.g)o(z\)\))14 b(and)20 -b(terminal)f(emulators)h(that)g(can)g(handle)396 1525 -y(UTF-8)g(byte)g(sequences)f(\(http://myweb)m(.clark.net/pub/d)o(ick)o -(e)o(y)o(/xter)o(m/x)o(term.)o(html\))o(.)c(Furthermore,)i(a)k(Unicode) -396 1633 y(editor)f(may)f(be)i(helpful)e(\(such)g(as)i(Y)-9 -b(udit)20 b(\(ftp://metalab)m(.unc.edu/pub)o(/Linu)o(x/ap)o(ps/ed)o -(itors/X/\)\))o(.)15 b(There)k(are)h(also)396 1741 y(F)-6 -b(A)h(Q)21 b(\(http://www)-5 b(.cl.cam.ac.uk/~mgk25)o(/unico)o(de)o -(.htm)o(l\))15 b(by)20 b(Markus)f(K)o(uhn.)396 1891 y(By)i(setting)f -Fq(encoding)f Fv(to)i Fq(`Enc_utf8)e Fv(all)i(strings)f(originating)e -(from)h(the)i(parsed)e(XML)h(document)e(are)396 1999 -y(represented)h(as)i(UTF-8)e(strings.)h(This)h(includes)e(not)h(only)f -(character)g(data)h(and)g(attrib)n(ute)g(v)n(alues)g(b)n(ut)g(also)g -(element)396 2107 y(names,)g(attrib)n(ute)g(names)g(and)f(so)i(on,)e -(as)i(it)g(is)g(possible)f(to)h(use)f(an)o(y)f(Unicode)g(letter)i(to)f -(form)f(such)h(names.)g(Strictly)396 2214 y(speaking,)f(PXP)i(is)g -(only)e(XML-compliant)f(if)j(the)f(UTF-8)g(mode)f(is)i(used;)f -(otherwise)g(it)h(will)g(ha)n(v)o(e)e(dif)n(\002culties)396 -2322 y(when)h(v)n(alidating)f(documents)f(containing)g -(non-ISO-8859-1-names.)396 2472 y(This)j(mode)e(does)h(not)g(ha)n(v)o -(e)f(an)o(y)h(impact)f(on)h(the)g(e)o(xternal)f(representation)f(of)i -(documents.)f(The)g(character)g(set)396 2580 y(assumed)h(when)g -(reading)e(a)j(document)d(is)j(set)g(in)g(the)f(XML)g(declaration,)e -(and)i(character)f(set)i(when)e(writing)h(a)396 2688 -y(document)e(must)j(be)f(passed)g(to)g(the)g Fq(write)g -Fv(method.)396 2837 y Fu(Ho)o(w)g(do)h(I)g(check)f(that)g(nodes)h -(exist)f(which)h(ar)o(e)e(r)o(eferr)o(ed)g(by)i(IDREF)g(attrib)n(utes?) -e Fv(First,)i(you)e(must)h(create)g(an)396 2945 y(inde)o(x)f(of)h(all)h -(occurring)d(ID)i(attrib)n(utes:)396 3125 y Fq(let)45 -b(index)f(=)g(new)h(hash_index)396 3316 y Fv(This)21 -b(inde)o(x)e(must)h(be)g(passed)g(to)g(the)h(parsing)e(function:)396 -3496 y Fq(parse_document_entity)486 3593 y(~id_index:\(index)42 -b(:>)j(index\))486 3691 y(config)f(source)g(spec)396 -3882 y Fv(Ne)o(xt,)20 b(you)f(must)h(turn)g(on)g(the)g -Fq(idref_pass)f Fv(mode:)396 4062 y Fq(let)45 b(config)e(=)i({)g -(default_config)d(with)i(idref_pass)g(=)g(true)g(})396 -4253 y Fv(Note)20 b(that)h(no)n(w)e(the)i(whole)e(document)f(tree)j -(will)g(be)f(tra)n(v)o(ersed,)f(and)g(e)n(v)o(ery)g(node)g(will)i(be)f -(check)o(ed)f(for)h(IDREF)g(and)396 4361 y(IDREFS)h(attrib)n(utes.)f -(If)g(the)g(tree)g(is)h(big,)f(this)h(may)f(tak)o(e)g(some)g(time.)396 -4510 y Fu(What)g(ar)o(e)g(deterministic)g(content)g(models?)g -Fv(These)g(type)g(of)g(models)g(can)g(speed)f(up)h(the)g(v)n(alidation) -f(checks;)396 4618 y(furthermore)f(the)o(y)h(ensure)g -(SGML-compatibility)-5 b(.)18 b(In)i(particular)m(,)e(a)j(content)e -(model)g(is)i(deterministic)e(if)i(the)f(parser)396 4726 -y(can)g(determine)f(the)h(actually)g(used)g(alternati)n(v)o(e)f(by)g -(inspecting)g(only)h(the)g(current)f(tok)o(en.)g(F)o(or)h(e)o(xample,)e -(this)396 4834 y(element)i(has)g(non-deterministic)e(contents:)p -Black 3800 5278 a Fr(94)p Black eop -%%Page: 95 95 -95 94 bop Black 2348 67 a Fr(Chapter)20 b(4.)g(Con\002guring)e(and)i -(calling)f(the)h(par)o(ser)p Black 396 579 a Fq()396 770 y Fv(If)20 -b(the)h(\002rst)f(element)g(in)g Fq(x)h Fv(is)g Fq(u)p -Fv(,)f(the)h(parser)e(does)h(not)g(kno)n(w)f(which)h(of)g(the)g -(alternati)n(v)o(es)f Fq(\(u,v\))h Fv(or)g Fq(\(u,y+\))g -Fv(will)396 878 y(w)o(ork;)g(the)g(parser)g(must)g(also)g(inspect)g -(the)h(second)e(element)g(to)i(be)f(able)g(to)g(distinguish)g(between)f -(the)h(alternati)n(v)o(es.)396 986 y(Because)h(such)f(look-ahead)d -(\(or)j("guessing"\))e(is)k(required,)c(this)i(e)o(xample)f(is)i -(non-deterministic.)396 1135 y(The)f(XML)g(standard)f(demands)g(that)i -(content)e(models)g(must)i(be)f(deterministic.)f(So)h(it)h(is)g -(recommended)c(to)k(turn)e(the)396 1243 y(option)g Fq -(accept_only_deterministic_models)d Fv(on;)j(ho)n(we)n(v)o(er)m(,)f -(PXP)j(can)f(also)h(process)e(non-deterministic)396 1351 -y(models)h(using)g(a)g(backtracking)e(algorithm.)396 -1500 y(Deterministic)i(models)g(ensure)f(that)h(v)n(alidation)f(can)h -(be)g(performed)e(in)i(linear)g(time.)g(In)g(order)f(to)h(get)g(the)396 -1608 y(maximum)f(bene\002ts,)h(PXP)h(also)f(implements)f(a)i(special)f -(v)n(alidator)f(that)h(pro\002ts)g(from)f(deterministic)h(models;)f -(this)396 1716 y(is)i(the)g(deterministic)e(\002nite)h(automaton)f -(\(DF)-6 b(A\).)19 b(This)i(v)n(alidator)d(is)k(enabled)d(per)g -(element)h(type)g(if)g(the)g(element)396 1824 y(type)g(has)g(a)h -(deterministic)e(model)h(and)f(if)i(the)f(option)f Fq(validate_by_dfa)f -Fv(is)j(turned)e(on.)396 1974 y(In)h(general,)f(I)h(e)o(xpect)g(that)g -(the)g(DF)-6 b(A)21 b(method)e(is)i(f)o(aster)f(than)g(the)g -(backtracking)e(method;)g(especially)i(in)h(the)f(w)o(orst)396 -2082 y(case)h(the)f(DF)-6 b(A)21 b(tak)o(es)f(only)g(linear)f(time.)i -(Ho)n(we)n(v)o(er)m(,)d(if)i(the)g(content)g(model)f(has)h(only)g(fe)n -(w)g(alternati)n(v)o(es)f(and)h(the)396 2190 y(alternati)n(v)o(es)f(do) -h(not)g(nest,)g(the)h(backtracking)c(algorithm)i(may)g(be)i(better)-5 -b(.)-2 2691 y Fx(4.5.)39 b(Updates)396 2871 y Fr(Some)20 -b(\(often)f(later)i(added\))d(featur)m(es)i(that)g(ar)m(e)h(otherwise)f -(not)g(e)n(xplained)f(in)h(the)h(manual)d(b)n(ut)j(worth)f(to)g(be)396 -2979 y(mentioned.)p Black 396 3211 a Ft(\225)p Black -60 w Fv(Methods)g(node_position,)d(node_path,)g(nth_node,)h(pre)n -(vious_node,)e(ne)o(xt_node)h(for)j(nodes:)f(See)479 -3319 y(pxp_document.mli)p Black 396 3427 a Ft(\225)p -Black 60 w Fv(Functions)h(to)g(determine)f(the)h(document)e(order)h(of) -h(nodes:)f(compare,)g(create_ord_inde)o(x,)c(ord_number)m(,)479 -3535 y(ord_compare:)i(See)k(pxp_document.mli)p Black -3800 5278 a Fr(95)p Black eop -%%Page: 96 96 -96 95 bop Black Black Black Black eop -%%Trailer -end -userdict /end-hook known{end-hook}if -%%EOF diff --git a/helm/DEVEL/pxp/pxp/doc/manual/src/dtd.mli.ent b/helm/DEVEL/pxp/pxp/doc/manual/src/dtd.mli.ent deleted file mode 100644 index f2e0eb85c..000000000 --- a/helm/DEVEL/pxp/pxp/doc/manual/src/dtd.mli.ent +++ /dev/null @@ -1,374 +0,0 @@ - - diff --git a/helm/DEVEL/pxp/pxp/doc/manual/src/getcode.ml b/helm/DEVEL/pxp/pxp/doc/manual/src/getcode.ml deleted file mode 100755 index 4db669036..000000000 --- a/helm/DEVEL/pxp/pxp/doc/manual/src/getcode.ml +++ /dev/null @@ -1,56 +0,0 @@ -#! /bin/sh -# (* -exec ocamlfattop "$0" -*) directory ".";; - -open Str;; - -let name_re = regexp "(\\*\\$[ \t]*\\([a-zA-Z0-9.-]*\\)[ \t]*\\*)";; -let subst_re = regexp "[<>&'%]";; - -let begin_entity name = - "\n" -;; - - -let text = ref "" in -let within_entity = ref false in -try - while true do - let line = read_line() in - if string_match name_re line 0 then begin - let name = matched_group 1 line in - if !within_entity then - text := !text ^ "\n" ^ end_entity(); - within_entity := false; - if name <> "-" then begin - text := !text ^ begin_entity name; - within_entity := true - end - end - else - if !within_entity then begin - let line' = - global_substitute subst_re - (fun s -> - let s' = matched_group 0 s in - match s' with - "<" -> "<" - | ">" -> ">" - | "&" -> "&" - | "'" -> "'" - | "%" -> "&percent;" - | _ -> assert false) - line - in - text := !text ^ "\n" ^ line' - end - done; -with End_of_file -> - if !within_entity then - text := !text ^ "\n" ^ end_entity(); - print_string !text -;; diff --git a/helm/DEVEL/pxp/pxp/doc/manual/src/markup.css b/helm/DEVEL/pxp/pxp/doc/manual/src/markup.css deleted file mode 100644 index 67dfaecb7..000000000 --- a/helm/DEVEL/pxp/pxp/doc/manual/src/markup.css +++ /dev/null @@ -1,4 +0,0 @@ -.acronym { - font-weight: bold; - color: #c71585 -} diff --git a/helm/DEVEL/pxp/pxp/doc/manual/src/markup.dsl b/helm/DEVEL/pxp/pxp/doc/manual/src/markup.dsl deleted file mode 100644 index cd9b1e2bf..000000000 --- a/helm/DEVEL/pxp/pxp/doc/manual/src/markup.dsl +++ /dev/null @@ -1,74 +0,0 @@ - - - - - -]]> - - -]]> -]> - - - - -;; HTML: - - - -;; printing: - - - -;; both: - -(define %section-autolabel% - ;; Are sections enumerated? - #t) - - - - - diff --git a/helm/DEVEL/pxp/pxp/doc/manual/src/markup.sgml b/helm/DEVEL/pxp/pxp/doc/manual/src/markup.sgml deleted file mode 100644 index 1cb2064cb..000000000 --- a/helm/DEVEL/pxp/pxp/doc/manual/src/markup.sgml +++ /dev/null @@ -1,5109 +0,0 @@ -PXP"> -PXP"> - - - - - -%readme.code.to-html; -%get.markup-yacc.mli; -%get.markup-dtd.mli; - - - -]> - - - - - The PXP user's guide - - - - - Gerd - Stolpmann - - -
    - gerd@gerd-stolpmann.de -
    -
    -
    -
    -
    - - - 1999, 2000Gerd Stolpmann - - - - - -&markup; is a validating parser for XML-1.0 which has been -written entirely in Objective Caml. - - - Download &markup;: - -The free &markup; library can be downloaded at - -http://www.ocaml-programming.de/packages/ -. This user's guide is included. -Newest releases of &markup; will be announced in -The OCaml Link -Database. - - - - - - License - -This document, and the described software, "&markup;", are copyright by -Gerd Stolpmann. - - - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this document and the "&markup;" software (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 Gerd Stolpmann 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. - - - -
    - - - - - - User's guide - - - What is XML? - - - Introduction - - XML (short for Extensible Markup Language) -generalizes the idea that text documents are typically structured in sections, -sub-sections, paragraphs, and so on. The format of the document is not fixed -(as, for example, in HTML), but can be declared by a so-called DTD (document -type definition). The DTD describes only the rules how the document can be -structured, but not how the document can be processed. For example, if you want -to publish a book that uses XML markup, you will need a processor that converts -the XML file into a printable format such as Postscript. On the one hand, the -structure of XML documents is configurable; on the other hand, there is no -longer a canonical interpretation of the elements of the document; for example -one XML DTD might want that paragraphes are delimited by -para tags, and another DTD expects p tags -for the same purpose. As a result, for every DTD a new processor is required. - - - -Although XML can be used to express structured text documents it is not limited -to this kind of application. For example, XML can also be used to exchange -structured data over a network, or to simply store structured data in -files. Note that XML documents cannot contain arbitrary binary data because -some characters are forbidden; for some applications you need to encode binary -data as text (e.g. the base 64 encoding). - - - - - The "hello world" example - -The following example shows a very simple DTD, and a corresponding document -instance. The document is structured such that it consists of sections, and -that sections consist of paragraphs, and that paragraphs contain plain text: - - - - - - -]]> - - - The following document is an instance of this DTD: - - - - - -
    - This is a paragraph of the first section. - This is another paragraph of the first section. -
    -
    - This is the only paragraph of the second section. -
    -
    -]]> -
    - - As in HTML (and, of course, in grand-father SGML), the "pieces" of -the document are delimited by element braces, i.e. such a piece begins with -<name-of-the-type-of-the-piece> and ends with -</name-of-the-type-of-the-piece>, and the pieces are -called elements. Unlike HTML and SGML, both start tags and -end tags (i.e. the delimiters written in angle brackets) can never be left -out. For example, HTML calls the paragraphs simply p, and -because paragraphs never contain paragraphs, a sequence of several paragraphs -can be written as: - -First paragraph -

    Second paragraph]]> - -This is not possible in XML; continuing our example above we must always write - -First paragraph -Second paragraph]]> - -The rationale behind that is to (1) simplify the development of XML parsers -(you need not convert the DTD into a deterministic finite automaton which is -required to detect omitted tags), and to (2) make it possible to parse the -document independent of whether the DTD is known or not. - - - -The first line of our sample document, - - -]]> - - -is the so-called XML declaration. It expresses that the -document follows the conventions of XML version 1.0, and that the document is -encoded using characters from the ISO-8859-1 character set (often known as -"Latin 1", mostly used in Western Europe). Although the XML declaration is not -mandatory, it is good style to include it; everybody sees at the first glance -that the document uses XML markup and not the similar-looking HTML and SGML -markup languages. If you omit the XML declaration, the parser will assume -that the document is encoded as UTF-8 or UTF-16 (there is a rule that makes -it possible to distinguish between UTF-8 and UTF-16 automatically); these -are encodings of Unicode's universal character set. (Note that &pxp;, unlike its -predecessor "Markup", fully supports Unicode.) - - - -The second line, - - -]]> - - -names the DTD that is going to be used for the rest of the document. In -general, it is possible that the DTD consists of two parts, the so-called -external and the internal subset. "External" means that the DTD exists as a -second file; "internal" means that the DTD is included in the same file. In -this example, there is only an external subset, and the system identifier -"simple.dtd" specifies where the DTD file can be found. System identifiers are -interpreted as URLs; for instance this would be legal: - - -]]> - - -Please note that &pxp; cannot interpret HTTP identifiers by default, but it is -possible to change the interpretation of system identifiers. - - - -The word immediately following DOCTYPE determines which of -the declared element types (here "document", "section", and "paragraph") is -used for the outermost element, the root element. In this -example it is document because the outermost element is -delimited by <document> and -</document>. - - - -The DTD consists of three declarations for element types: -document, section, and -paragraph. Such a declaration has two parts: - - -<!ELEMENT name content-model> - - -The content model is a regular expression which describes the possible inner -structure of the element. Here, document contains one or -more sections, and a section contains one or more -paragraphs. Note that these two element types are not allowed to contain -arbitrary text. Only the paragraph element type is declared -such that parsed character data (indicated by the symbol -#PCDATA) is permitted. - - - -See below for a detailed discussion of content models. - - - - - XML parsers and processors - -XML documents are human-readable, but this is not the main purpose of this -language. XML has been designed such that documents can be read by a program -called an XML parser. The parser checks that the document -is well-formatted, and it represents the document as objects of the programming -language. There are two aspects when checking the document: First, the document -must follow some basic syntactic rules, such as that tags are written in angle -brackets, that for every start tag there must be a corresponding end tag and so -on. A document respecting these rules is -well-formed. Second, the document must match the DTD in -which case the document is valid. Many parsers check only -on well-formedness and ignore the DTD; &pxp; is designed such that it can -even validate the document. - - - -A parser does not make a sensible application, it only reads XML -documents. The whole application working with XML-formatted data is called an -XML processor. Often XML processors convert documents into -another format, such as HTML or Postscript. Sometimes processors extract data -of the documents and output the processed data again XML-formatted. The parser -can help the application processing the document; for example it can provide -means to access the document in a specific manner. &pxp; supports an -object-oriented access layer specially. - - - - - Discussion - -As we have seen, there are two levels of description: On the one hand, XML can -define rules about the format of a document (the DTD), on the other hand, XML -expresses structured documents. There are a number of possible applications: - - - - - -XML can be used to express structured texts. Unlike HTML, there is no canonical -interpretation; one would have to write a backend for the DTD that translates -the structured texts into a format that existing browsers, printers -etc. understand. The advantage of a self-defined document format is that it is -possible to design the format in a more problem-oriented way. For example, if -the task is to extract reports from a database, one can use a DTD that reflects -the structure of the report or the database. A possible approach would be to -have an element type for every database table and for every column. Once the -DTD has been designed, the report procedure can be splitted up in a part that -selects the database rows and outputs them as an XML document according to the -DTD, and in a part that translates the document into other formats. Of course, -the latter part can be solved in a generic way, e.g. there may be configurable -backends for all DTDs that follow the approach and have element types for -tables and columns. - - - -XML plays the role of a configurable intermediate format. The database -extraction function can be written without having to know the details of -typesetting; the backends can be written without having to know the details of -the database. - - - -Of course, there are traditional solutions. One can define an ad hoc -intermediate text file format. This disadvantage is that there are no names for -the pieces of the format, and that such formats usually lack of documentation -because of this. Another solution would be to have a binary representation, -either as language-dependent or language-independent structure (example of the -latter can be found in RPC implementations). The disadvantage is that it is -harder to view such representations, one has to write pretty printers for this -purpose. It is also more difficult to enter test data; XML is plain text that -can be written using an arbitrary editor (Emacs has even a good XML mode, -PSGML). All these alternatives suffer from a missing structure checker, -i.e. the programs processing these formats usually do not check the input file -or input object in detail; XML parsers check the syntax of the input (the -so-called well-formedness check), and the advanced parsers like &markup; even -verify that the structure matches the DTD (the so-called validation). - - - - - - -XML can be used as configurable communication language. A fundamental problem -of every communication is that sender and receiver must follow the same -conventions about the language. For data exchange, the question is usually -which data records and fields are available, how they are syntactically -composed, and which values are possible for the various fields. Similar -questions arise for text document exchange. XML does not answer these problems -completely, but it reduces the number of ambiguities for such conventions: The -outlines of the syntax are specified by the DTD (but not necessarily the -details), and XML introduces canonical names for the components of documents -such that it is simpler to describe the rest of the syntax and the semantics -informally. - - - - - -XML is a data storage format. Currently, every software product tends to use -its own way to store data; commercial software often does not describe such -formats, and it is a pain to integrate such software into a bigger project. -XML can help to improve this situation when several applications share the same -syntax of data files. DTDs are then neutral instances that check the format of -data files independent of applications. - - - - - - - - - - - - - Highlights of XML - - -This section explains many of the features of XML, but not all, and some -features not in detail. For a complete description, see the XML -specification. - - - - The DTD and the instance - -The DTD contains various declarations; in general you can only use a feature if -you have previously declared it. The document instance file may contain the -full DTD, but it is also possible to split the DTD into an internal and an -external subset. A document must begin as follows if the full DTD is included: - - -<?xml version="1.0" encoding="Your encoding"?> -<!DOCTYPE root [ - Declarations -]> - - -These declarations are called the internal subset. Note -that the usage of entities and conditional sections is restricted within the -internal subset. - - -If the declarations are located in a different file, you can refer to this file -as follows: - - -<?xml version="1.0" encoding="Your encoding"?> -<!DOCTYPE root SYSTEM "file name"> - - -The declarations in the file are called the external -subset. The file name is called the system -identifier. -It is also possible to refer to the file by a so-called -public identifier, but most XML applications won't use -this feature. - - -You can also specify both internal and external subsets. In this case, the -declarations of both subsets are mixed, and if there are conflicts, the -declaration of the internal subset overrides those of the external subset with -the same name. This looks as follows: - - -<?xml version="1.0" encoding="Your encoding"?> -<!DOCTYPE root SYSTEM "file name" [ - Declarations -]> - - - - -The XML declaration (the string beginning with <?xml and -ending at ?>) should specify the encoding of the -file. Common values are UTF-8, and the ISO-8859 series of character sets. Note -that every file parsed by the XML processor can begin with an XML declaration -and that every file may have its own encoding. - - - -The name of the root element must be mentioned directly after the -DOCTYPE string. This means that a full document instance -looks like - - -<?xml version="1.0" encoding="Your encoding"?> -<!DOCTYPE root SYSTEM "file name" [ - Declarations -]> - -<root> - inner contents -</root> - - - - - - - - Reserved characters - -Some characters are generally reserved to indicate markup such that they cannot -be used for character data. These characters are <, >, and -&. Furthermore, single and double quotes are sometimes reserved. If you -want to include such a character as character, write it as follows: - - - - -&lt; instead of < - - - - -&gt; instead of > - - - - -&amp; instead of & - - - - -&apos; instead of ' - - - - -&quot; instead of " - - - - -All other characters are free in the document instance. It is possible to -include a character by its position in the Unicode alphabet: - - -&#n; - - -where n is the decimal number of the -character. Alternatively, you can specify the character by its hexadecimal -number: - - -&#xn; - - -In the scope of declarations, the character % is no longer free. To include it -as character, you must use the notations &#37; or -&#x25;. - - - Note that besides &lt;, &gt;, &amp;, -&apos;, and &quot; there are no predefines character entities. This is -different from HTML which defines a list of characters that can be referenced -by name (e.g. &auml; for ä); however, if you prefer named characters, you -can declare such entities yourself (see below). - - - - - - - Elements and ELEMENT declarations - - -Elements structure the document instance in a hierarchical way. There is a -top-level element, the root element, which contains a -sequence of inner elements and character sections. The inner elements are -structured in the same way. Every element has an element -type. The beginning of the element is indicated by a start -tag, written - - -<element-type> - - -and the element continues until the corresponding end tag -is reached: - - -</element-type> - - -In XML, it is not allowed to omit start or end tags, even if the DTD would -permit this. Note that there are no special rules how to interpret spaces or -newlines near start or end tags; all spaces and newlines count. - - - -Every element type must be declared before it can be used. The declaration -consists of two parts: the ELEMENT declaration describes the content model, -i.e. which inner elements are allowed; the ATTLIST declaration describes the -attributes of the element. - - - -An element can simply allow everything as content. This is written: - - -<!ELEMENT name ANY> - - -On the opposite, an element can be forced to be empty; declared by: - - -<!ELEMENT name EMPTY> - - -Note that there is an abbreviated notation for empty element instances: -<name/>. - - - -There are two more sophisticated forms of declarations: so-called -mixed declarations, and regular -expressions. An element with mixed content contains character data -interspersed with inner elements, and the set of allowed inner elements can be -specified. In contrast to this, a regular expression declaration does not allow -character data, but the inner elements can be described by the more powerful -means of regular expressions. - - - -A declaration for mixed content looks as follows: - - -<!ELEMENT name (#PCDATA | element1 | ... | elementn )*> - - -or if you do not want to allow any inner element, simply - - -<!ELEMENT name (#PCDATA)> - - - - -

    - Example - -If element type q is declared as - - -]]> - - -this is a legal instance: - - -This is character datawith inner elements]]> - - -But this is illegal because t has not been enumerated in the -declaration: - - -This is character datawith inner elements]]> - - -
    - - -The other form uses a regular expression to describe the possible contents: - - -<!ELEMENT name regexp> - - -The following well-known regexp operators are allowed: - - - - -element-name - - - - - -(subexpr1 , ... , subexprn ) - - - - - -(subexpr1 | ... | subexprn ) - - - - - -subexpr* - - - - - -subexpr+ - - - - - -subexpr? - - - - -The , operator indicates a sequence of sub-models, the -| operator describes alternative sub-models. The -* indicates zero or more repetitions, and -+ one or more repetitions. Finally, ? can -be used for optional sub-models. As atoms the regexp can contain names of -elements; note that it is not allowed to include #PCDATA. - - - -The exact syntax of the regular expressions is rather strange. This can be -explained best by a list of constraints: - - - - -The outermost expression must not be -element-name. - - Illegal: -]]>; this must be written as -]]>. - - - -For the unary operators subexpr*, -subexpr+, and -subexpr?, the -subexpr must not be again an -unary operator. - - Illegal: -]]>; this must be written as -]]>. - - - -Between ) and one of the unary operatory -*, +, or ?, there must -not be whitespace. - Illegal: -]]>; this must be written as -]]>. - - There is the additional constraint that the -right parenthsis must be contained in the same entity as the left parenthesis; -see the section about parsed entities below. - - - - - - -Note that there is another restriction on regular expressions which must be -deterministic. This means that the parser must be able to see by looking at the -next token which alternative is actually used, or whether the repetition -stops. The reason for this is simply compatability with SGML (there is no -intrinsic reason for this rule; XML can live without this restriction). - - -
    - Example - -The elements are declared as follows: - - - - - - -]]> - -This is a legal instance: - - -Some characters]]> - - -(Note: <s/> is an abbreviation for -<s></s>.) - -It would be illegal to leave ]]> out because at -least one instance of s or t must be -present. It would be illegal, too, if characters existed outside the -r element; the only exception is white space. -- This is -legal, too: - - -]]> - - -
    - -
    - - - - - Attribute lists and ATTLIST declarations - -Elements may have attributes. These are put into the start tag of an element as -follows: - - -<element-name attribute1="value1" ... attributen="valuen"> - - -Instead of -"valuek" -it is also possible to use single quotes as in -'valuek'. -Note that you cannot use double quotes literally within the value of the -attribute if double quotes are the delimiters; the same applies to single -quotes. You can generally not use < and & as characters in attribute -values. It is possible to include the paraphrases &lt;, &gt;, -&amp;, &apos;, and &quot; (and any other reference to a general -entity as long as the entity is not defined by an external file) as well as -&#n;. - - - -Before you can use an attribute you must declare it. An ATTLIST declaration -looks as follows: - - -<!ATTLIST element-name - attribute-name attribute-type attribute-default - ... - attribute-name attribute-type attribute-default -> - - -There are a lot of types, but most important are: - - - - -CDATA: Every string is allowed as attribute value. - - - - -NMTOKEN: Every nametoken is allowed as attribute -value. Nametokens consist (mainly) of letters, digits, ., :, -, _ in arbitrary -order. - - - - -NMTOKENS: A space-separated list of nametokens is allowed as -attribute value. - - - - -The most interesting default declarations are: - - - - -#REQUIRED: The attribute must be specified. - - - - -#IMPLIED: The attribute can be specified but also can be -left out. The application can find out whether the attribute was present or -not. - - - - -"value" or -'value': This particular value is -used as default if the attribute is omitted in the element. - - - - - -
    - Example - -This is a valid attribute declaration for element type r: - - - -]]> - -This means that x is a required attribute that cannot be -left out, while y and z are optional. The -XML parser indicates the application whether y is present or -not, but if z is missing the default value -"one two three" is returned automatically. - - - -This is a valid example of these attributes: - - -]]> - - -
    - -
    - - - Parsed entities - -Elements describe the logical structure of the document, while -entities determine the physical structure. Entities are -the pieces of text the parser operates on, mostly files and macros. Entities -may be parsed in which case the parser reads the text and -interprets it as XML markup, or unparsed which simply -means that the data of the entity has a foreign format (e.g. a GIF icon). - - - If the parsed entity is going to be used as part of the DTD, it -is called a parameter entity. You can declare a parameter -entity with a fixed text as content by: - - -<!ENTITY % name "value"> - - -Within the DTD, you can refer to this entity, i.e. read -the text of the entity, by: - - -%name; - - -Such entities behave like macros, i.e. when they are referred to, the -macro text is inserted and read instead of the original text. - -
    - Example - -For example, you can declare two elements with the same content model by: - - - - - -]]> - - - -
    - -If the contents of the entity are given as string constant, the entity is -called an internal entity. It is also possible to name a -file to be used as content (an external entity): - - -<!ENTITY % name SYSTEM "file name"> - - -There are some restrictions for parameter entities: - - - - -If the internal parameter entity contains the first token of a declaration -(i.e. <!), it must also contain the last token of the -declaration, i.e. the >. This means that the entity -either contains a whole number of complete declarations, or some text from the -middle of one declaration. - -Illegal: - -"> - Because <! is contained in the main -entity, and the corresponding > is contained in the -entity e. - - - -If the internal parameter entity contains a left paranthesis, it must also -contain the corresponding right paranthesis. - -Illegal: - - - -]]> Because ( is contained in the entity -e, and the corresponding ) is -contained in the main entity. - - - -When reading text from an entity, the parser automatically inserts one space -character before the entity text and one space character after the entity -text. However, this rule is not applied within the definition of another -entity. -Legal: - - - -]]> Because %suffix; is referenced within -the definition text for iconfile, no additional spaces are -added. - -Illegal: - - - -]]> -Because %suffix; is referenced outside the definition -text of another entity, the parser replaces %suffix; by -spacetestspace. -Illegal: - - - -]]> Because there is a whitespace between ) -and *, which is illegal. - - - -An external parameter entity must always consist of a whole number of complete -declarations. - - - - -In the internal subset of the DTD, a reference to a parameter entity (internal -or external) is only allowed at positions where a new declaration can start. - - - -
    - - -If the parsed entity is going to be used in the document instance, it is called -a general entity. Such entities can be used as -abbreviations for frequent phrases, or to include external files. Internal -general entities are declared as follows: - - -<!ENTITY name "value"> - - -External general entities are declared this way: - - -<!ENTITY name SYSTEM "file name"> - - -References to general entities are written as: - - -&name; - - -The main difference between parameter and general entities is that the former -are only recognized in the DTD and that the latter are only recognized in the -document instance. As the DTD is parsed before the document, the parameter -entities are expanded first; for example it is possible to use the content of a -parameter entity as the name of a general entity: -&#38;%name;;This construct is only -allowed within the definition of another entity; otherwise extra spaces would -be added (as explained above). Such indirection is not recommended. - -Complete example: - - - - - -]]> -You can now write &text; in the document instance, and -depending on the value of variant either -text-a or text-b is inserted. -. - - -General entities must respect the element hierarchy. This means that there must -be an end tag for every start tag in the entity value, and that end tags -without corresponding start tags are not allowed. - - -
    - Example - -If the author of a document changes sometimes, it is worthwhile to set up a -general entity containing the names of the authors. If the author changes, you -need only to change the definition of the entity, and do not need to check all -occurrences of authors' names: - - - -]]> - - -In the document text, you can now refer to the author names by writing -&authors;. - - - -Illegal: -The following two entities are illegal because the elements in the definition -do not nest properly: - - -"> -"> -]]> - -
    - - -Earlier in this introduction we explained that there are substitutes for -reserved characters: &lt;, &gt;, &amp;, &apos;, and -&quot;. These are simply predefined general entities; note that they are -the only predefined entities. It is allowed to define these entities again -as long as the meaning is unchanged. - - - - - Notations and unparsed entities - -Unparsed entities have a foreign format and can thus not be read by the XML -parser. Unparsed entities are always external. The format of an unparsed entity -must have been declared, such a format is called a -notation. The entity can then be declared by referring to -this notation. As unparsed entities do not contain XML text, it is not possible -to include them directly into the document; you can only declare attributes -such that names of unparsed entities are acceptable values. - - - -As you can see, unparsed entities are too complicated in order to have any -purpose. It is almost always better to simply pass the name of the data file as -normal attribute value, and let the application recognize and process the -foreign format. - - - - - - - - - - - A complete example: The <emphasis>readme</emphasis> DTD - -The reason for readme was that I often wrote two versions -of files such as README and INSTALL which explain aspects of a distributed -software archive; one version was ASCII-formatted, the other was written in -HTML. Maintaining both versions means double amount of work, and changes -of one version may be forgotten in the other version. To improve this situation -I invented the readme DTD which allows me to maintain only -one source written as XML document, and to generate the ASCII and the HTML -version from it. - - - -In this section, I explain only the DTD. The readme DTD is -contained in the &markup; distribution together with the two converters to -produce ASCII and HTML. Another section of this manual describes the HTML -converter. - - - -The documents have a simple structure: There are up to three levels of nested -sections, paragraphs, item lists, footnotes, hyperlinks, and text emphasis. The -outermost element has usually the type readme, it is -declared by - - - - -]]> - -This means that this element contains one or more sections of the first level -(element type sect1), and that the element has a required -attribute title containing character data (CDATA). Note that -readme elements must not contain text data. - - - -The three levels of sections are declared as follows: - - - - - - - -]]> - -Every section has a title element as first subelement. After -the title an arbitrary but non-empty sequence of inner sections, paragraphs and -item lists follows. Note that the inner sections must belong to the next higher -section level; sect3 elements must not contain inner -sections because there is no next higher level. - - - -Obviously, all three declarations allow paragraphs (p) and -item lists (ul). The definition can be simplified at this -point by using a parameter entity: - - - - - - - - - -]]> - -Here, the entity p.like is nothing but a macro abbreviating -the same sequence of declarations; if new elements on the same level as -p and ul are later added, it is -sufficient only to change the entity definition. Note that there are some -restrictions on the usage of entities in this context; most important, entities -containing a left paranthesis must also contain the corresponding right -paranthesis. - - - -Note that the entity p.like is a -parameter entity, i.e. the ENTITY declaration contains a -percent sign, and the entity is referred to by -%p.like;. This kind of entity must be used to abbreviate -parts of the DTD; the general entities declared without -percent sign and referred to as &name; are not allowed -in this context. - - - -The title element specifies the title of the section in -which it occurs. The title is given as character data, optionally interspersed -with line breaks (br): - - - -]]> - -Compared with the title attribute of -the readme element, this element allows inner markup -(i.e. br) while attribute values do not: It is an error if -an attribute value contains the left angle bracket < literally such that it -is impossible to include inner elements. - - - -The paragraph element p has a structure similar to -title, but it allows more inner elements: - - - - - -]]> - -Line breaks do not have inner structure, so they are declared as being empty: - - - -]]> - -This means that really nothing is allowed within br; you -must always write
    ]]>
    or abbreviated -]]>. -
    - - -Code samples should be marked up by the code tag; emphasized -text can be indicated by em: - - - - - -]]> - -That code elements are not allowed to contain further markup -while em elements do is a design decision by the author of -the DTD. - - - -Unordered lists simply consists of one or more list items, and a list item may -contain paragraph-level material: - - - - - -]]> - -Footnotes are described by the text of the note; this text may contain -text-level markup. There is no mechanism to describe the numbering scheme of -footnotes, or to specify how footnote references are printed. - - - -]]> - -Hyperlinks are written as in HTML. The anchor tag contains the text describing -where the link points to, and the href attribute is the -pointer (as URL). There is no way to describe locations of "hash marks". If the -link refers to another readme document, the attribute -readmeref should be used instead of href. -The reason is that the converted document has usually a different system -identifier (file name), and the link to a converted document must be -converted, too. - - - - -]]> - -Note that although it is only sensible to specify one of the two attributes, -the DTD has no means to express this restriction. - - - -So far the DTD. Finally, here is a document for it: - - - - - - - Usage -

    - The readme converter is invoked on the command line by: -

    -

    - readme [ -text | -html ] input.xml -

    -

    - Here a list of options: -

    -
      -
    • -

      -text: specifies that ASCII output should be produced

      -
    • -
    • -

      -html: specifies that HTML output should be produced

      -
    • -
    -

    - The input file must be given on the command line. The converted output is - printed to stdout. -

    -
    - - Author -

    - The program has been written by - Gerd Stolpmann. -

    -
    -
    -]]>
    - -
    - - -
    - - - - - - Using &markup; - - - Validation - -The parser can be used to validate a document. This means -that all the constraints that must hold for a valid document are actually -checked. Validation is the default mode of &markup;, i.e. every document is -validated while it is being parsed. - - - -In the examples directory of the distribution you find the -pxpvalidate application. It is invoked in the following way: - - -pxpvalidate [ -wf ] file... - - -The files mentioned on the command line are validated, and every warning and -every error messages are printed to stderr. - - - -The -wf switch modifies the behaviour such that a well-formedness parser is -simulated. In this mode, the ELEMENT, ATTLIST, and NOTATION declarations of the -DTD are ignored, and only the ENTITY declarations will take effect. This mode -is intended for documents lacking a DTD. Please note that the parser still -scans the DTD fully and will report all errors in the DTD; such checks are not -required by a well-formedness parser. - - - -The pxpvalidate application is the simplest sensible program -using &markup;, you may consider it as "hello world" program. - - - - - - - - - How to parse a document from an application - -Let me first give a rough overview of the object model of the parser. The -following items are represented by objects: - - - - -Documents: The document representation is more or less the -anchor for the application; all accesses to the parsed entities start here. It -is described by the class document contained in the module -Pxp_document. You can get some global information, such -as the XML declaration the document begins with, the DTD of the document, -global processing instructions, and most important, the document tree. - - - - - -The contents of documents: The contents have the structure -of a tree: Elements contain other elements and textElements may -also contain processing instructions. Unlike other document models, &markup; -separates processing instructions from the rest of the text and provides a -second interface to access them (method pinstr). However, -there is a parser option (enable_pinstr_nodes) which changes -the behaviour of the parser such that extra nodes for processing instructions -are included into the tree. -Furthermore, the tree does normally not contain nodes for XML comments; -they are ignored by default. Again, there is an option -(enable_comment_nodes) changing this. -. - -The common type to represent both kinds of content is node -which is a class type that unifies the properties of elements and character -data. Every node has a list of children (which is empty if the element is empty -or the node represents text); nodes may have attributes; nodes have always text -contents. There are two implementations of node, the class -element_impl for elements, and the class -data_impl for text data. You find these classes and class -types in the module Pxp_document, too. - - - -Note that attribute lists are represented by non-class values. - - - - - -The node extension: For advanced usage, every node of the -document may have an associated extension which is simply -a second object. This object must have the three methods -clone, node, and -set_node as bare minimum, but you are free to add methods as -you want. This is the preferred way to add functionality to the document -treeDue to the typing system it is more or less impossible to -derive recursive classes in O'Caml. To get around this, it is common practice -to put the modifiable or extensible part of recursive objects into parallel -objects. . The class type extension is -defined in Pxp_document, too. - - - - - -The DTD: Sometimes it is necessary to access the DTD of a -document; the average application does not need this feature. The class -dtd describes DTDs, and makes it possible to get -representations of element, entity, and notation declarations as well as -processing instructions contained in the DTD. This class, and -dtd_element, dtd_notation, and -proc_instruction can be found in the module -Pxp_dtd. There are a couple of classes representing -different kinds of entities; these can be found in the module -Pxp_entity. - - - - -Additionally, the following modules play a role: - - - - -Pxp_yacc: Here the main parsing functions such as -parse_document_entity are located. Some additional types and -functions allow the parser to be configured in a non-standard way. - - - - - -Pxp_types: This is a collection of basic types and -exceptions. - - - - -There are some further modules that are needed internally but are not part of -the API. - - - -Let the document to be parsed be stored in a file called -doc.xml. The parsing process is started by calling the -function - - -val parse_document_entity : config -> source -> 'ext spec -> 'ext document - - -defined in the module Pxp_yacc. The first argument -specifies some global properties of the parser; it is recommended to start with -the default_config. The second argument determines where the -document to be parsed comes from; this may be a file, a channel, or an entity -ID. To parse doc.xml, it is sufficient to pass -from_file "doc.xml". - - - -The third argument passes the object specification to use. Roughly -speaking, it determines which classes implement the node objects of which -element types, and which extensions are to be used. The 'ext -polymorphic variable is the type of the extension. For the moment, let us -simply pass default_spec as this argument, and ignore it. - - - -So the following expression parses doc.xml: - - -open Pxp_yacc -let d = parse_document_entity default_config (from_file "doc.xml") default_spec - - -Note that default_config implies that warnings are collected -but not printed. Errors raise one of the exception defined in -Pxp_types; to get readable errors and warnings catch the -exceptions as follows: - - - - print_endline (Pxp_types.string_of_exn e) -]]> - -Now d is an object of the document -class. If you want the node tree, you can get the root element by - - -let root = d # root - - -and if you would rather like to access the DTD, determine it by - - -let dtd = d # dtd - - -As it is more interesting, let us investigate the node tree now. Given the root -element, it is possible to recursively traverse the whole tree. The children of -a node n are returned by the method -sub_nodes, and the type of a node is returned by -node_type. This function traverses the tree, and prints the -type of each node: - - - - print_endline ("Element of type " ^ name); - let children = n # sub_nodes in - List.iter print_structure children - | T_data -> - print_endline "Data" - | _ -> - (* Other node types are not possible unless the parser is configured - differently. - *) - assert false -]]> - -You can call this function by - - -print_structure root - - -The type returned by node_type is either T_element -name or T_data. The name of the -element type is the string included in the angle brackets. Note that only -elements have children; data nodes are always leaves of the tree. - - - -There are some more methods in order to access a parsed node tree: - - - - -n # parent: Returns the parent node, or raises -Not_found if the node is already the root - - - - -n # root: Returns the root of the node tree. - - - - -n # attribute a: Returns the value of the attribute with -name a. The method returns a value for every -declared attribute, independently of whether the attribute -instance is defined or not. If the attribute is not declared, -Not_found will be raised. (In well-formedness mode, every -attribute is considered as being implicitly declared with type -CDATA.) - - - -The following return values are possible: Value s, -Valuelist sl , and Implied_value. -The first two value types indicate that the attribute value is available, -either because there is a definition -a="value" -in the XML text, or because there is a default value (declared in the -DTD). Only if both the instance definition and the default declaration are -missing, the latter value Implied_value will be returned. - - - -In the DTD, every attribute is typed. There are single-value types (CDATA, ID, -IDREF, ENTITY, NMTOKEN, enumerations), in which case the method passes -Value s back, where s is the normalized -string value of the attribute. The other types (IDREFS, ENTITIES, NMTOKENS) -represent list values, and the parser splits the XML literal into several -tokens and returns these tokens as Valuelist sl. - - - -Normalization means that entity references (the -&name; tokens) and -character references -(&#number;) are replaced -by the text they represent, and that white space characters are converted into -plain spaces. - - - - -n # data: Returns the character data contained in the -node. For data nodes, the meaning is obvious as this is the main content of -data nodes. For element nodes, this method returns the concatenated contents of -all inner data nodes. - - -Note that entity references included in the text are resolved while they are -being parsed; for example the text will be returned -as b"]]> by this method. Spaces of data nodes are always -preserved. Newlines are preserved, but always converted to \n characters even -if newlines are encoded as \r\n or \r. Normally you will never see two adjacent -data nodes because the parser collapses all data material at one location into -one node. (However, if you create your own tree or transform the parsed tree, -it is possible to have adjacent data nodes.) - - -Note that elements that do not allow #PCDATA as content -will not have data nodes as children. This means that spaces and newlines, the -only character material allowed for such elements, are silently dropped. - - - - -For example, if the task is to print all contents of elements with type -"valuable" whose attribute "priority" is "1", this function can help: - - - - print_endline "Valuable node with priotity 1 found:"; - print_endline (n # data) - | (T_element _ | T_data) -> - let children = n # sub_nodes in - List.iter print_valuable_prio1 children - | _ -> - assert false -]]> - -You can call this function by: - - -print_valuable_prio1 root - - -If you like a DSSSL-like style, you can make the function -process_children explicit: - - - - print_endline "Valuable node with priority 1 found:"; - print_endline (n # data) - | (T_element _ | T_data) -> - process_children n - | _ -> - assert false -]]> - -So far, O'Caml is now a simple "style-sheet language": You can form a big -"match" expression to distinguish between all significant cases, and provide -different reactions on different conditions. But this technique has -limitations; the "match" expression tends to get larger and larger, and it is -difficult to store intermediate values as there is only one big -recursion. Alternatively, it is also possible to represent the various cases as -classes, and to use dynamic method lookup to find the appropiate class. The -next section explains this technique in detail. - - - - - - - - - - Class-based processing of the node tree - -By default, the parsed node tree consists of objects of the same class; this is -a good design as long as you want only to access selected parts of the -document. For complex transformations, it may be better to use different -classes for objects describing different element types. - - - -For example, if the DTD declares the element types a, -b, and c, and if the task is to convert -an arbitrary document into a printable format, the idea is to define for every -element type a separate class that has a method print. The -classes are eltype_a, eltype_b, and -eltype_c, and every class implements -print such that elements of the type corresponding to the -class are converted to the output format. - - - -The parser supports such a design directly. As it is impossible to derive -recursive classes in O'CamlThe problem is that the subclass is -usually not a subtype in this case because O'Caml has a contravariant subtyping -rule. , the specialized element classes cannot be formed by -simply inheriting from the built-in classes of the parser and adding methods -for customized functionality. To get around this limitation, every node of the -document tree is represented by two objects, one called -"the node" and containing the recursive definition of the tree, one called "the -extension". Every node object has a reference to the extension, and the -extension has a reference to the node. The advantage of this model is that it -is now possible to customize the extension without affecting the typing -constraints of the recursive node definition. - - - -Every extension must have the three methods clone, -node, and set_node. The method -clone creates a deep copy of the extension object and -returns it; node returns the node object for this extension -object; and set_node is used to tell the extension object -which node is associated with it, this method is automatically called when the -node tree is initialized. The following definition is a good starting point -for these methods; usually clone must be further refined -when instance variables are added to the class: - - -} - method node = - match node with - None -> - assert false - | Some n -> n - method set_node n = - node <- Some n - - end -]]> - - -This part of the extension is usually the same for all classes, so it is a good -idea to consider custom_extension as the super-class of the -further class definitions. Continuining the example of above, we can define the -element type classes as follows: - - - unit - end - -class eltype_a = - object (self) - inherit custom_extension - method print ch = ... - end - -class eltype_b = - object (self) - inherit custom_extension - method print ch = ... - end - -class eltype_c = - object (self) - inherit custom_extension - method print ch = ... - end -]]> - -The method print can now be implemented for every element -type separately. Note that you get the associated node by invoking - - -self # node - - -and you get the extension object of a node n by writing - - -n # extension - - -It is guaranteed that - - -self # node # extension == self - - -always holds. - - - Here are sample definitions of the print -methods: - -... are only containers: *) - output_string ch "("; - List.iter - (fun n -> n # extension # print ch) - (self # node # sub_nodes); - output_string ch ")"; - end - -class eltype_b = - object (self) - inherit custom_extension - method print ch = - (* Print the value of the CDATA attribute "print": *) - match self # node # attribute "print" with - Value s -> output_string ch s - | Implied_value -> output_string ch "" - | Valuelist l -> assert false - (* not possible because the att is CDATA *) - end - -class eltype_c = - object (self) - inherit custom_extension - method print ch = - (* Print the contents of this element: *) - output_string ch (self # node # data) - end - -class null_extension = - object (self) - inherit custom_extension - method print ch = assert false - end -]]> - - - - -The remaining task is to configure the parser such that these extension classes -are actually used. Here another problem arises: It is not possible to -dynamically select the class of an object to be created. As workaround, -&markup; allows the user to specify exemplar objects for -the various element types; instead of creating the nodes of the tree by -applying the new operator the nodes are produced by -duplicating the exemplars. As object duplication preserves the class of the -object, one can create fresh objects of every class for which previously an -exemplar has been registered. - - - -Exemplars are meant as objects without contents, the only interesting thing is -that exemplars are instances of a certain class. The creation of an exemplar -for an element node can be done by: - - -let element_exemplar = new element_impl extension_exemplar - - -And a data node exemplar is created by: - - -let data_exemplar = new data_impl extension_exemplar - - -The classes element_impl and data_impl -are defined in the module Pxp_document. The constructors -initialize the fresh objects as empty objects, i.e. without children, without -data contents, and so on. The extension_exemplar is the -initial extension object the exemplars are associated with. - - - -Once the exemplars are created and stored somewhere (e.g. in a hash table), you -can take an exemplar and create a concrete instance (with contents) by -duplicating it. As user of the parser you are normally not concerned with this -as this is part of the internal logic of the parser, but as background knowledge -it is worthwhile to mention that the two methods -create_element and create_data actually -perform the duplication of the exemplar for which they are invoked, -additionally apply modifications to the clone, and finally return the new -object. Moreover, the extension object is copied, too, and the new node object -is associated with the fresh extension object. Note that this is the reason why -every extension object must have a clone method. - - - -The configuration of the set of exemplars is passed to the -parse_document_entity function as third argument. In our -example, this argument can be set up as follows: - - - - -The ~element_alist function argument defines the mapping -from element types to exemplars as associative list. The argument -~data_exemplar specifies the exemplar for data nodes, and -the ~default_element_exemplar is used whenever the parser -finds an element type for which the associative list does not define an -exemplar. - - - -The configuration is now complete. You can still use the same parsing -functions, only the initialization is a bit different. For example, call the -parser by: - - -let d = parse_document_entity default_config (from_file "doc.xml") spec - - -Note that the resulting document d has a usable type; -especially the print method we added is visible. So you can -print your document by - - -d # root # extension # print stdout - - - - -This object-oriented approach looks rather complicated; this is mostly caused -by working around some problems of the strict typing system of O'Caml. Some -auxiliary concepts such as extensions were needed, but the practical -consequences are low. In the next section, one of the examples of the -distribution is explained, a converter from readme -documents to HTML. - - - - - - - - - - Example: An HTML backend for the <emphasis>readme</emphasis> -DTD - - The converter from readme documents to HTML -documents follows strictly the approach to define one class per element -type. The HTML code is similar to the readme source, -because of this most elements can be converted in the following way: Given the -input element - - -content]]> - - -the conversion text is the concatenation of a computed prefix, the recursively -converted content, and a computed suffix. - - - -Only one element type cannot be handled by this scheme: -footnote. Footnotes are collected while they are found in -the input text, and they are printed after the main text has been converted and -printed. - - - - Header - -&readme.code.header; - - - - - Type declarations - -&readme.code.footnote-printer; - - - - - Class <literal>store</literal> - -The store is a container for footnotes. You can add a -footnote by invoking alloc_footnote; the argument is an -object of the class footnote_printer, the method returns the -number of the footnote. The interesting property of a footnote is that it can -be converted to HTML, so a footnote_printer is an object -with a method footnote_to_html. The class -footnote which is defined below has a compatible method -footnote_to_html such that objects created from it can be -used as footnote_printers. - - -The other method, print_footnotes prints the footnotes as -definition list, and is typically invoked after the main material of the page -has already been printed. Every item of the list is printed by -footnote_to_html. - - - -&readme.code.store; - - - - - Function <literal>escape_html</literal> - -This function converts the characters <, >, &, and " to their HTML -representation. For example, -escape_html "<>" = "&lt;&gt;". Other -characters are left unchanged. - -&readme.code.escape-html; - - - - - Virtual class <literal>shared</literal> - -This virtual class is the abstract superclass of the extension classes shown -below. It defines the standard methods clone, -node, and set_node, and declares the type -of the virtual method to_html. This method recursively -traverses the whole element tree, and prints the converted HTML code to the -output channel passed as second argument. The first argument is the reference -to the global store object which collects the footnotes. - -&readme.code.shared; - - - - - Class <literal>only_data</literal> - -This class defines to_html such that the character data of -the current node is converted to HTML. Note that self is an -extension object, self # node is the node object, and -self # node # data returns the character data of the node. - -&readme.code.only-data; - - - - - Class <literal>readme</literal> - -This class converts elements of type readme to HTML. Such an -element is (by definition) always the root element of the document. First, the -HTML header is printed; the title attribute of the element -determines the title of the HTML page. Some aspects of the HTML page can be -configured by setting certain parameter entities, for example the background -color, the text color, and link colors. After the header, the -body tag, and the headline have been printed, the contents -of the page are converted by invoking to_html on all -children of the current node (which is the root node). Then, the footnotes are -appended to this by telling the global store object to print -the footnotes. Finally, the end tags of the HTML pages are printed. - - - -This class is an example how to access the value of an attribute: The value is -determined by invoking self # node # attribute "title". As -this attribute has been declared as CDATA and as being required, the value has -always the form Value s where s is the -string value of the attribute. - - - -You can also see how entity contents can be accessed. A parameter entity object -can be looked up by self # node # dtd # par_entity "name", -and by invoking replacement_text the value of the entity -is returned after inner parameter and character entities have been -processed. Note that you must use gen_entity instead of -par_entity to access general entities. - - - -&readme.code.readme; - - - - - Classes <literal>section</literal>, <literal>sect1</literal>, -<literal>sect2</literal>, and <literal>sect3</literal> - -As the conversion process is very similar, the conversion classes of the three -section levels are derived from the more general section -class. The HTML code of the section levels only differs in the type of the -headline, and because of this the classes describing the section levels can be -computed by replacing the class argument the_tag of -section by the HTML name of the headline tag. - - - -Section elements are converted to HTML by printing a headline and then -converting the contents of the element recursively. More precisely, the first -sub-element is always a title element, and the other -elements are the contents of the section. This structure is declared in the -DTD, and it is guaranteed that the document matches the DTD. Because of this -the title node can be separated from the rest without any checks. - - - -Both the title node, and the body nodes are then converted to HTML by calling -to_html on them. - - - -&readme.code.section; - - - - - Classes <literal>map_tag</literal>, <literal>p</literal>, -<literal>em</literal>, <literal>ul</literal>, <literal>li</literal> - -Several element types are converted to HTML by simply mapping them to -corresponding HTML element types. The class map_tag -implements this, and the class argument the_target_tag -determines the tag name to map to. The output consists of the start tag, the -recursively converted inner elements, and the end tag. - -&readme.code.map-tag; - - - - - Class <literal>br</literal> - -Element of type br are mapped to the same HTML type. Note -that HTML forbids the end tag of br. - -&readme.code.br; - - - - - Class <literal>code</literal> - -The code type is converted to a pre -section (preformatted text). As the meaning of tabs is unspecified in HTML, -tabs are expanded to spaces. - -&readme.code.code; - - - - - Class <literal>a</literal> - -Hyperlinks, expressed by the a element type, are converted -to the HTML a type. If the target of the hyperlink is given -by href, the URL of this attribute can be used -directly. Alternatively, the target can be given by -readmeref in which case the ".html" suffix must be added to -the file name. - - - -Note that within a only #PCDATA is allowed, so the contents -can be converted directly by applying escape_html to the -character data contents. - -&readme.code.a; - - - - - Class <literal>footnote</literal> - -The footnote class has two methods: -to_html to convert the footnote reference to HTML, and -footnote_to_html to convert the footnote text itself. - - - -The footnote reference is converted to a local hyperlink; more precisely, to -two anchor tags which are connected with each other. The text anchor points to -the footnote anchor, and the footnote anchor points to the text anchor. - - - -The footnote must be allocated in the store object. By -allocating the footnote, you get the number of the footnote, and the text of -the footnote is stored until the end of the HTML page is reached when the -footnotes can be printed. The to_html method stores simply -the object itself, such that the footnote_to_html method is -invoked on the same object that encountered the footnote. - - - -The to_html only allocates the footnote, and prints the -reference anchor, but it does not print nor convert the contents of the -note. This is deferred until the footnotes actually get printed, i.e. the -recursive call of to_html on the sub nodes is done by -footnote_to_html. - - - -Note that this technique does not work if you make another footnote within a -footnote; the second footnote gets allocated but not printed. - - - -&readme.code.footnote; - - - - - The specification of the document model - -This code sets up the hash table that connects element types with the exemplars -of the extension classes that convert the elements to HTML. - -&readme.code.tag-map; - - - - - - - - - - - - The objects representing the document - - -This description might be out-of-date. See the module interface files -for updated information. - - - The <literal>document</literal> class - - - - object - method init_xml_version : string -> unit - method init_root : 'ext node -> unit - - method xml_version : string - method xml_standalone : bool - method dtd : dtd - method root : 'ext node - - method encoding : Pxp_types.rep_encoding - - method add_pinstr : proc_instruction -> unit - method pinstr : string -> proc_instruction list - method pinstr_names : string list - - method write : Pxp_types.output_stream -> Pxp_types.encoding -> unit - - end -;; -]]> - - -The methods beginning with init_ are only for internal use -of the parser. - - - - - -xml_version: returns the version string at the beginning of -the document. For example, "1.0" is returned if the document begins with -<?xml version="1.0"?>. - - - -xml_standalone: returns the boolean value of -standalone declaration in the XML declaration. If the -standalone attribute is missing, false is -returned. - - - -dtd: returns a reference to the global DTD object. - - - -root: returns a reference to the root element. - - - -encoding: returns the internal encoding of the -document. This means that all strings of which the document consists are -encoded in this character set. - - - - -pinstr: returns the processing instructions outside the DTD -and outside the root element. The argument passed to the method names a -target, and the method returns all instructions with this -target. The target is the first word inside <? and -?>. - - - -pinstr_names: returns the names of the processing instructions - - - -add_pinstr: adds another processing instruction. This method -is used by the parser itself to enter the instructions returned by -pinstr, but you can also enter additional instructions. - - - - -write: writes the document to the passed stream as XML -text using the passed (external) encoding. The generated text is always valid -XML and can be parsed by PXP; however, the text is badly formatted (this is not -a pretty printer). - - - - - - - - The class type <literal>node</literal> - - -From Pxp_document: - - -type node_type = - T_data -| T_element of string -| T_super_root -| T_pinstr of string -| T_comment -and some other, reserved types -;; - -class type [ 'ext ] node = - object ('self) - constraint 'ext = 'ext node #extension - - (* *) - - method extension : 'ext - method dtd : dtd - method parent : 'ext node - method root : 'ext node - method sub_nodes : 'ext node list - method iter_nodes : ('ext node &fun; unit) &fun; unit - method iter_nodes_sibl : - ('ext node option &fun; 'ext node &fun; 'ext node option &fun; unit) &fun; unit - method node_type : node_type - method encoding : Pxp_types.rep_encoding - method data : string - method position : (string * int * int) - method comment : string option - method pinstr : string &fun; proc_instruction list - method pinstr_names : string list - method write : Pxp_types.output_stream -> Pxp_types.encoding -> unit - - (* *) - - method attribute : string &fun; Pxp_types.att_value - method required_string_attribute : string &fun; string - method optional_string_attribute : string &fun; string option - method required_list_attribute : string &fun; string list - method optional_list_attribute : string &fun; string list - method attribute_names : string list - method attribute_type : string &fun; Pxp_types.att_type - method attributes : (string * Pxp_types.att_value) list - method id_attribute_name : string - method id_attribute_value : string - method idref_attribute_names : string - - (* *) - - method add_node : ?force:bool &fun; 'ext node &fun; unit - method add_pinstr : proc_instruction &fun; unit - method delete : unit - method set_nodes : 'ext node list &fun; unit - method quick_set_attributes : (string * Pxp_types.att_value) list &fun; unit - method set_comment : string option &fun; unit - - (* *) - - method orphaned_clone : 'self - method orphaned_flat_clone : 'self - method create_element : - ?position:(string * int * int) &fun; - dtd &fun; node_type &fun; (string * string) list &fun; - 'ext node - method create_data : dtd &fun; string &fun; 'ext node - method keep_always_whitespace_mode : unit - - (* *) - - method local_validate : ?use_dfa:bool -> unit -> unit - - (* ... Internal methods are undocumented. *) - - end -;; - - -In the module Pxp_types you can find another type -definition that is important in this context: - - -type Pxp_types.att_value = - Value of string - | Valuelist of string list - | Implied_value -;; - - - - - The structure of document trees - - -A node represents either an element or a character data section. There are two -classes implementing the two aspects of nodes: element_impl -and data_impl. The latter class does not implement all -methods because some methods do not make sense for data nodes. - - - -(Note: PXP also supports a mode which forces that processing instructions and -comments are represented as nodes of the document tree. However, these nodes -are instances of element_impl with node types -T_pinstr and T_comment, -respectively. This mode must be explicitly configured; the basic representation -knows only element and data nodes.) - - - The following figure -() shows an example how -a tree is constructed from element and data nodes. The circular areas -represent element nodes whereas the ovals denote data nodes. Only elements -may have subnodes; data nodes are always leaves of the tree. The subnodes -of an element can be either element or data nodes; in both cases the O'Caml -objects storing the nodes have the class type node. - - Attributes (the clouds in the picture) are not directly -integrated into the tree; there is always an extra link to the attribute -list. This is also true for processing instructions (not shown in the -picture). This means that there are separated access methods for attributes and -processing instructions. - -
    -A tree with element nodes, data nodes, and attributes - -
    - - Only elements, data sections, attributes and processing -instructions (and comments, if configured) can, directly or indirectly, occur -in the document tree. It is impossible to add entity references to the tree; if -the parser finds such a reference, not the reference as such but the referenced -text (i.e. the tree representing the structured text) is included in the -tree. - - Note that the parser collapses as much data material into one -data node as possible such that there are normally never two adjacent data -nodes. This invariant is enforced even if data material is included by entity -references or CDATA sections, or if a data sequence is interrupted by -comments. So a &amp; b <-- comment --> c <![CDATA[ -<> d]]> is represented by only one data node, for -instance. However, you can create document trees manually which break this -invariant; it is only the way the parser forms the tree. - - -
    -Nodes are doubly linked trees - -
    - - -The node tree has links in both directions: Every node has a link to its parent -(if any), and it has links to the subnodes (see -figure ). Obviously, -this doubly-linked structure simplifies the navigation in the tree; but has -also some consequences for the possible operations on trees. - - -Because every node must have at most one parent node, -operations are illegal if they violate this condition. The following figure -() shows on the left side -that node y is added to x as new subnode -which is allowed because y does not have a parent yet. The -right side of the picture illustrates what would happen if y -had a parent node; this is illegal because y would have two -parents after the operation. - -
    -A node can only be added if it is a root - - -
    - - -The "delete" operation simply removes the links between two nodes. In the -picture () the node -x is deleted from the list of subnodes of -y. After that, x becomes the root of the -subtree starting at this node. - -
    -A deleted node becomes the root of the subtree - -
    - - -It is also possible to make a clone of a subtree; illustrated in -. In this case, the -clone is a copy of the original subtree except that it is no longer a -subnode. Because cloning never keeps the connection to the parent, the clones -are called orphaned. - - -
    -The clone of a subtree - -
    -
    - - - The methods of the class type <literal>node</literal> - - - - - <link linkend="type-node-general.sig">General observers</link> - - - - - - -extension: The reference to the extension object which -belongs to this node (see ...). - - - -dtd: Returns a reference to the global DTD. All nodes -of a tree must share the same DTD. - - - - -parent: Get the father node. Raises -Not_found in the case the node does not have a -parent, i.e. the node is the root. - - - -root: Gets the reference to the root node of the tree. -Every node is contained in a tree with a root, so this method always -succeeds. Note that this method searches the root, -which costs time proportional to the length of the path to the root. - - - - -sub_nodes: Returns references to the children. The returned -list reflects the order of the children. For data nodes, this method returns -the empty list. - - - - -iter_nodes f: Iterates over the children, and calls -f for every child in turn. - - - - -iter_nodes_sibl f: Iterates over the children, and calls -f for every child in turn. f gets as -arguments the previous node, the current node, and the next node. - - - -node_type: Returns either T_data which -means that the node is a data node, or T_element n -which means that the node is an element of type n. -If configured, possible node types are also T_pinstr t -indicating that the node represents a processing instruction with target -t, and T_comment in which case the node -is a comment. - - - - -encoding: Returns the encoding of the strings. - - - -data: Returns the character data of this node and all -children, concatenated as one string. The encoding of the string is what -the method encoding returns. -- For data nodes, this method simply returns the represented characters. -For elements, the meaning of the method has been extended such that it -returns something useful, i.e. the effectively contained characters, without -markup. (For T_pinstr and T_comment -nodes, the method returns the empty string.) - - - - -position: If configured, this method returns the position of -the element as triple (entity, line, byteposition). For data nodes, the -position is not stored. If the position is not available the triple -"?", 0, 0 is returned. - - - - -comment: Returns Some text for comment -nodes, and None for other nodes. The text -is everything between the comment delimiters <-- and --->. - - - - -pinstr n: Returns all processing instructions that are -directly contained in this element and that have a target -specification of n. The target is the first word after -the <?. - - - - -pinstr_names: Returns the list of all targets of processing -instructions directly contained in this element. - - - -write s enc: Prints the node and all subnodes to the passed -output stream as valid XML text, using the passed external encoding. - - - - - - - - - - <link linkend="type-node-atts.sig">Attribute observers</link> - - - - - -attribute n: Returns the value of the attribute with name -n. This method returns a value for every declared -attribute, and it raises Not_found for any undeclared -attribute. Note that it even returns a value if the attribute is actually -missing but is declared as #IMPLIED or has a default -value. - Possible values are: - - - -Implied_value: The attribute has been declared with the -keyword #IMPLIED, and the attribute is missing in the -attribute list of this element. - - - -Value s: The attribute has been declared as type -CDATA, as ID, as -IDREF, as ENTITY, or as -NMTOKEN, or as enumeration or notation, and one of the two -conditions holds: (1) The attribute value is present in the attribute list in -which case the value is returned in the string s. (2) The -attribute has been omitted, and the DTD declared the attribute with a default -value. The default value is returned in s. -- Summarized, Value s is returned for non-implied, non-list -attribute values. - - - - -Valuelist l: The attribute has been declared as type -IDREFS, as ENTITIES, or -as NMTOKENS, and one of the two conditions holds: (1) The -attribute value is present in the attribute list in which case the -space-separated tokens of the value are returned in the string list -l. (2) The attribute has been omitted, and the DTD declared -the attribute with a default value. The default value is returned in -l. -- Summarized, Valuelist l is returned for all list-type -attribute values. - - - - -Note that before the attribute value is returned, the value is normalized. This -means that newlines are converted to spaces, and that references to character -entities (i.e. &#n;) and -general entities -(i.e. &name;) are expanded; -if necessary, expansion is performed recursively. - - - -In well-formedness mode, there is no DTD which could declare an -attribute. Because of this, every occuring attribute is considered as a CDATA -attribute. - - - - -required_string_attribute n: returns the Value attribute -called n, or the Valuelist attribute as a string where the list elements -are separated by spaces. If the attribute value is implied, or if the -attribute does not exists, the method will fail. - This method is convenient -if you expect a non-implied and non-list attribute value. - - - - -optional_string_attribute n: returns the Value attribute -called n, or the Valuelist attribute as a string where the list elements -are separated by spaces. If the attribute value is implied, or if the -attribute does not exists, the method returns None. - This method is -convenient if you expect a non-list attribute value including the implied -value. - - - - -required_list_attribute n: returns the Valuelist attribute -called n, or the Value attribute as a list with a single element. -If the attribute value is implied, or if the -attribute does not exists, the method will fail. - This method is -convenient if you expect a list attribute value. - - - - -optional_list_attribute n: returns the Valuelist attribute -called n, or the Value attribute as a list with a single element. -If the attribute value is implied, or if the -attribute does not exists, an empty list will be returned. - This method -is convenient if you expect a list attribute value or the implied value. - - - - -attribute_names: returns the list of all attribute names of -this element. As this is a validating parser, this list is equal to the -list of declared attributes. - - - - -attribute_type n: returns the type of the attribute called -n. See the module Pxp_types for a -description of the encoding of the types. - - - - -attributes: returns the list of pairs of names and values -for all attributes of -this element. - - - -id_attribute_name: returns the name of the attribute that is -declared with type ID. There is at most one such attribute. The method raises -Not_found if there is no declared ID attribute for the -element type. - - - -id_attribute_value: returns the value of the attribute that -is declared with type ID. There is at most one such attribute. The method raises -Not_found if there is no declared ID attribute for the -element type. - - - -idref_attribute_names: returns the list of attribute names -that are declared as IDREF or IDREFS. - - - - - - - - - <link linkend="type-node-mods.sig">Modifying methods</link> - - - -The following methods are only defined for element nodes (more exactly: -the methods are defined for data nodes, too, but fail always). - - - - -add_node sn: Adds sub node sn to the list -of children. This operation is illustrated in the picture -. This method expects that -sn is a root, and it requires that sn and -the current object share the same DTD. - - -Because add_node is the method the parser itself uses -to add new nodes to the tree, it performs by default some simple validation -checks: If the content model is a regular expression, it is not allowed to add -data nodes to this node unless the new nodes consist only of whitespace. In -this case, the new data nodes are silently dropped (you can change this by -invoking keep_always_whitespace_mode). - - -If the document is flagged as stand-alone, these data nodes only -containing whitespace are even forbidden if the element declaration is -contained in an external entity. This case is detected and rejected. - -If the content model is EMPTY, it is not allowed to -add any data node unless the data node is empty. In this case, the new data -node is silently dropped. - - -These checks only apply if there is a DTD. In well-formedness mode, it is -assumed that every element is declared with content model -ANY which prohibits any validation check. Furthermore, you -turn these checks off by passing ~force:true as first -argument. - - - -add_pinstr pi: Adds the processing instruction -pi to the list of processing instructions. - - - - - -delete: Deletes this node from the tree. After this -operation, this node is no longer the child of the former father node; and the -node loses the connection to the father as well. This operation is illustrated -by the figure . - - - - -set_nodes nl: Sets the list of children to -nl. It is required that every member of nl -is a root, and that all members and the current object share the same DTD. -Unlike add_node, no validation checks are performed. - - - - -quick_set_attributes atts: sets the attributes of this -element to atts. It is not checked -whether atts matches the DTD or not; it is up to the -caller of this method to ensure this. (This method may be useful to transform -the attribute values, i.e. apply a mapping to every attribute.) - - - - -set_comment text: This method is only applicable to -T_comment nodes; it sets the comment text contained by such -nodes. - - - - - - - - - <link linkend="type-node-cloning.sig">Cloning methods</link> - - - - - - -orphaned_clone: Returns a clone of the node and the complete -tree below this node (deep clone). The clone does not have a parent (i.e. the -reference to the parent node is not cloned). While -copying the subtree, strings are skipped; it is likely that the original tree -and the copy tree share strings. Extension objects are cloned by invoking -the clone method on the original objects; how much of -the extension objects is cloned depends on the implemention of this method. - - This operation is illustrated by the figure -. - - - - -orphaned_flat_clone: Returns a clone of the node, -but sets the list of sub nodes to [], i.e. the sub nodes are not cloned. - - - - - -create_element dtd nt al: Returns a flat copy of this node -(which must be an element) with the following modifications: The DTD is set to -dtd; the node type is set to nt, and the -new attribute list is set to al (given as list of -(name,value) pairs). The copy does not have children nor a parent. It does not -contain processing instructions. See -the example below. - - - Note that you can specify the position of the new node -by the optional argument ~position. - - - - -create_data dtd cdata: Returns a flat copy of this node -(which must be a data node) with the following modifications: The DTD is set to -dtd; the node type is set to T_data; the -attribute list is empty (data nodes never have attributes); the list of -children and PIs is empty, too (same reason). The new node does not have a -parent. The value cdata is the new character content of the -node. See -the example below. - - - - -keep_always_whitespace_mode: Even data nodes which are -normally dropped because they only contain ignorable whitespace, can added to -this node once this mode is turned on. (This mode is useful to produce -canonical XML.) - - - - - - - - - - <link linkend="type-node-weird.sig">Validating methods</link> - - -There is one method which locally validates the node, i.e. checks whether the -subnodes match the content model of this node. - - - - -local_validate: Checks that this node conforms to the -DTD by comparing the type of the subnodes with the content model for this -node. (Applications need not call this method unless they add new nodes -themselves to the tree.) - - - - - - - - - The class <literal>element_impl</literal> - -This class is an implementation of node which -realizes element nodes: - - - [ 'ext ] node -]]> - - - - - Constructor - -You can create a new instance by - - -new element_impl extension_object - - -which creates a special form of empty element which already contains a -reference to the extension_object, but is -otherwise empty. This special form is called an -exemplar. The purpose of exemplars is that they serve as -patterns that can be duplicated and filled with data. The method - -create_element is designed to perform this action. - - - - - - Example - - First, create an exemplar by - - -let exemplar_ext = ... in -let exemplar = new element_impl exemplar_ext in - - -The exemplar is not used in node trees, but only as -a pattern when the element nodes are created: - - -let element = exemplar # create_element dtd (T_element name) attlist - - -The element is a copy of exemplar -(even the extension exemplar_ext has been copied) -which ensures that element and its extension are objects -of the same class as the exemplars; note that you need not to pass a -class name or other meta information. The copy is initially connected -with the dtd, it gets a node type, and the attribute list -is filled. The element is now fully functional; it can -be added to another element as child, and it can contain references to -subnodes. - - - - - - - The class <literal>data_impl</literal> - -This class is an implementation of node which -should be used for all character data nodes: - - - [ 'ext ] node -]]> - - - - - - Constructor - -You can create a new instance by - - -new data_impl extension_object - - -which creates an empty exemplar node which is connected to -extension_object. The node does not contain a -reference to any DTD, and because of this it cannot be added to node trees. - - - - To get a fully working data node, apply the method -create_data - to the exemplar (see example). - - - - - Example - - First, create an exemplar by - - -let exemplar_ext = ... in -let exemplar = new exemplar_ext data_impl in - - -The exemplar is not used in node trees, but only as -a pattern when the data nodes are created: - - -let data_node = exemplar # create_data dtd "The characters contained in the data node" - - -The data_node is a copy of exemplar. -The copy is initially connected -with the dtd, and it is filled with character material. -The data_node is now fully functional; it can -be added to an element as child. - - - - - - The type <literal>spec</literal> - -The type spec defines a way to handle the details of -creating nodes from exemplars. - - - ?comment_exemplar : 'ext node -> - ?default_pinstr_exemplar : 'ext node -> - ?pinstr_mapping : (string, 'ext node) Hashtbl.t -> - data_exemplar: 'ext node -> - default_element_exemplar: 'ext node -> - element_mapping: (string, 'ext node) Hashtbl.t -> - unit -> - 'ext spec - -val make_spec_from_alist : - ?super_root_exemplar : 'ext node -> - ?comment_exemplar : 'ext node -> - ?default_pinstr_exemplar : 'ext node -> - ?pinstr_alist : (string * 'ext node) list -> - data_exemplar: 'ext node -> - default_element_exemplar: 'ext node -> - element_alist: (string * 'ext node) list -> - unit -> - 'ext spec -]]> - -The two functions make_spec_from_mapping and -make_spec_from_alist create spec -values. Both functions are functionally equivalent and the only difference is -that the first function prefers hashtables and the latter associative lists to -describe mappings from names to exemplars. - - - -You can specify exemplars for the various kinds of nodes that need to be -generated when an XML document is parsed: - - - - ~super_root_exemplar: This exemplar -is used to create the super root. This special node is only created if the -corresponding configuration option has been selected; it is the parent node of -the root node which may be convenient if every working node must have a parent. - - - ~comment_exemplar: This exemplar is -used when a comment node must be created. Note that such nodes are only created -if the corresponding configuration option is "on". - - - - ~default_pinstr_exemplar: If a node -for a processing instruction must be created, and the instruction is not listed -in the table passed by ~pinstr_mapping or -~pinstr_alist, this exemplar is used. -Again the configuration option must be "on" in order to create such nodes at -all. - - - - ~pinstr_mapping or -~pinstr_alist: Map the target names of processing -instructions to exemplars. These mappings are only used when nodes for -processing instructions are created. - - - ~data_exemplar: The exemplar for -ordinary data nodes. - - - ~default_element_exemplar: This -exemplar is used if an element node must be created, but the element type -cannot be found in the tables element_mapping or -element_alist. - - - ~element_mapping or -~element_alist: Map the element types to exemplars. These -mappings are used to create element nodes. - - - -In most cases, you only want to create spec values to pass -them to the parser functions found in Pxp_yacc. However, it -might be useful to apply spec values directly. - - -The following functions create various types of nodes by selecting the -corresponding exemplar from the passed spec value, and by -calling create_element or create_data on -the exemplar. - - - dtd -> - (* data material: *) string -> - 'ext node - -val create_element_node : - ?position:(string * int * int) -> - 'ext spec -> - dtd -> - (* element type: *) string -> - (* attributes: *) (string * string) list -> - 'ext node - -val create_super_root_node : - ?position:(string * int * int) -> - 'ext spec -> - dtd -> - 'ext node - -val create_comment_node : - ?position:(string * int * int) -> - 'ext spec -> - dtd -> - (* comment text: *) string -> - 'ext node - -val create_pinstr_node : - ?position:(string * int * int) -> - 'ext spec -> - dtd -> - proc_instruction -> - 'ext node -]]> - - - - - Examples - - - Building trees. - - Here is the piece of code that creates the tree of -the figure . The extension -object and the DTD are beyond the scope of this example. - - -let exemplar_ext = ... (* some extension *) in -let dtd = ... (* some DTD *) in - -let element_exemplar = new element_impl exemplar_ext in -let data_exemplar = new data_impl exemplar_ext in - -let a1 = element_exemplar # create_element dtd (T_element "a") ["att", "apple"] -and b1 = element_exemplar # create_element dtd (T_element "b") [] -and c1 = element_exemplar # create_element dtd (T_element "c") [] -and a2 = element_exemplar # create_element dtd (T_element "a") ["att", "orange"] -in - -let cherries = data_exemplar # create_data dtd "Cherries" in -let orange = data_exemplar # create_data dtd "An orange" in - -a1 # add_node b1; -a1 # add_node c1; -b1 # add_node a2; -b1 # add_node cherries; -a2 # add_node orange; - - -Alternatively, the last block of statements could also be written as: - - -a1 # set_nodes [b1; c1]; -b1 # set_nodes [a2; cherries]; -a2 # set_nodes [orange]; - - -The root of the tree is a1, i.e. it is true that - - -x # root == a1 - - -for every x from { a1, a2, -b1, c1, cherries, -orange }. - - - -Furthermore, the following properties hold: - - - a1 # attribute "att" = Value "apple" -& a2 # attribute "att" = Value "orange" - -& cherries # data = "Cherries" -& orange # data = "An orange" -& a1 # data = "CherriesAn orange" - -& a1 # node_type = T_element "a" -& a2 # node_type = T_element "a" -& b1 # node_type = T_element "b" -& c1 # node_type = T_element "c" -& cherries # node_type = T_data -& orange # node_type = T_data - -& a1 # sub_nodes = [ b1; c1 ] -& a2 # sub_nodes = [ orange ] -& b1 # sub_nodes = [ a2; cherries ] -& c1 # sub_nodes = [] -& cherries # sub_nodes = [] -& orange # sub_nodes = [] - -& a2 # parent == a1 -& b1 # parent == b1 -& c1 # parent == a1 -& cherries # parent == b1 -& orange # parent == a2 - - - - Searching nodes. - - The following function searches all nodes of a tree -for which a certain condition holds: - - -let rec search p t = - if p t then - t :: search_list p (t # sub_nodes) - else - search_list p (t # sub_nodes) - -and search_list p l = - match l with - [] -> [] - | t :: l' -> (search p t) @ (search_list p l') -;; - - - - - For example, if you want to search all elements of a certain -type et, the function search can be -applied as follows: - - -let search_element_type et t = - search (fun x -> x # node_type = T_element et) t -;; - - - - - Getting attribute values. - - Suppose we have the declaration: - -]]> - - -In this case, every element e must have an attribute -a, otherwise the parser would indicate an error. If -the O'Caml variable n holds the node of the tree -corresponding to the element, you can get the value of the attribute -a by - - -let value_of_a = n # required_string_attribute "a" - - -which is more or less an abbreviation for - - s - | _ -> assert false]]> - - -- as the attribute is required, the attribute method always -returns a Value. - - - - In contrast to this, the attribute b can be -omitted. In this case, the method required_string_attribute -works only if the attribute is there, and the method will fail if the attribute -is missing. To get the value, you can apply the method -optional_string_attribute: - - -let value_of_b = n # optional_string_attribute "b" - - -Now, value_of_b is of type string option, -and None represents the omitted attribute. Alternatively, -you could also use attribute: - - Some s - | Implied_value -> None - | _ -> assert false]]> - - - - The attribute c behaves much like -a, because it has always a value. If the attribute is -omitted, the default, here "12345", will be returned instead. Because of this, -you can again use required_string_attribute to get the -value. - - - The type CDATA is the most general string -type. The types NMTOKEN, ID, -IDREF, ENTITY, and all enumerators and -notations are special forms of string types that restrict the possible -values. From O'Caml, they behave like CDATA, i.e. you can -use the methods required_string_attribute and -optional_string_attribute, too. - - - In contrast to this, the types NMTOKENS, -IDREFS, and ENTITIES mean lists of -strings. Suppose we have the declaration: - -]]> - - -The type NMTOKENS stands for lists of space-separated -tokens; for example the value "1 abc 23ef" means the list -["1"; "abc"; "23ef"]. (Again, IDREFS -and ENTITIES have more restricted values.) To get the -value of attribute d, one can use - - -let value_of_d = n # required_list_attribute "d" - - -or - - l - | _ -> assert false]]> - - -As d is required, the attribute cannot be omitted, and -the attribute method returns always a -Valuelist. - - - For optional attributes like e, apply - - -let value_of_e = n # optional_list_attribute "e" - - -or - - l - | Implied_value -> [] - | _ -> assert false]]> - - -Here, the case that the attribute is missing counts like the empty list. - - - - - - - Iterators - - There are also several iterators in Pxp_document; please see -the mli file for details. You can find examples for them in the -"simple_transformation" directory. - - - f:('ext node -> bool) -> 'ext node -> 'ext node - -val find_all : ?deeply:bool -> - f:('ext node -> bool) -> 'ext node -> 'ext node list - -val find_element : ?deeply:bool -> - string -> 'ext node -> 'ext node - -val find_all_elements : ?deeply:bool -> - string -> 'ext node -> 'ext node list - -exception Skip -val map_tree : pre:('exta node -> 'extb node) -> - ?post:('extb node -> 'extb node) -> - 'exta node -> - 'extb node - - -val map_tree_sibl : - pre: ('exta node option -> 'exta node -> 'exta node option -> - 'extb node) -> - ?post:('extb node option -> 'extb node -> 'extb node option -> - 'extb node) -> - 'exta node -> - 'extb node - -val iter_tree : ?pre:('ext node -> unit) -> - ?post:('ext node -> unit) -> - 'ext node -> - unit - -val iter_tree_sibl : - ?pre: ('ext node option -> 'ext node -> 'ext node option -> unit) -> - ?post:('ext node option -> 'ext node -> 'ext node option -> unit) -> - 'ext node -> - unit -]]> - - - -
    - - - - - The class type <literal>extension</literal> - - - - unit - (* "set_node" is invoked once the extension is associated to a new - * node object. - *) - end -]]> - - -This is the type of classes used for node extensions. For every node of the -document tree, there is not only the node object, but also -an extension object. The latter has minimal -functionality; it has only the necessary methods to be attached to the node -object containing the details of the node instance. The extension object is -called extension because its purpose is extensibility. - - For some reasons, it is impossible to derive the -node classes (i.e. element_impl and -data_impl) such that the subclasses can be extended by new -new methods. But -subclassing nodes is a great feature, because it allows the user to provide -different classes for different types of nodes. The extension objects are a -workaround that is as powerful as direct subclassing, the costs are -some notation overhead. - - -
    -The structure of nodes and extensions - - -
    - - The picture shows how the nodes and extensions are linked -together. Every node has a reference to its extension, and every extension has -a reference to its node. The methods extension and -node follow these references; a typical phrase is - - -self # node # attribute "xy" - - -to get the value of an attribute from a method defined in the extension object; -or - - -self # node # iter - (fun n -> n # extension # my_method ...) - - -to iterate over the subnodes and to call my_method of the -corresponding extension objects. - - - Note that extension objects do not have references to subnodes -(or "subextensions") themselves; in order to get one of the children of an -extension you must first go to the node object, then get the child node, and -finally reach the extension that is logically the child of the extension you -started with. - - - How to define an extension class - - At minimum, you must define the methods -clone, node, and -set_node such that your class is compatible with the type -extension. The method set_node is called -during the initialization of the node, or after a node has been cloned; the -node object invokes set_node on the extension object to tell -it that this node is now the object the extension is linked to. The extension -must return the node object passed as argument of set_node -when the node method is called. - - The clone method must return a copy of the -extension object; at least the object itself must be duplicated, but if -required, the copy should deeply duplicate all objects and values that are -referred by the extension, too. Whether this is required, depends on the -application; clone is invoked by the node object when one of -its cloning methods is called. - - A good starting point for an extension class: - - -} - - method node = - match node with - None -> - assert false - | Some n -> n - - method set_node n = - node <- Some n - - end -]]> - - -This class is compatible with extension. The purpose of -defining such a class is, of course, adding further methods; and you can do it -without restriction. - - - Often, you want not only one extension class. In this case, -it is the simplest way that all your classes (for one kind of document) have -the same type (with respect to the interface; i.e. it does not matter if your -classes differ in the defined private methods and instance variables, but -public methods count). This approach avoids lots of coercions and problems with -type incompatibilities. It is simple to implement: - - - - - -If a class does not need a method (e.g. because it does not make sense, or it -would violate some important condition), it is possible to define the method -and to always raise an exception when the method is invoked -(e.g. assert false). - - - The latter is a strong recommendation: do not try to further -specialize the types of extension objects. It is difficult, sometimes even -impossible, and almost never worth-while. - - - - How to bind extension classes to element types - - Once you have defined your extension classes, you can bind them -to element types. The simplest case is that you have only one class and that -this class is to be always used. The parsing functions in the module -Pxp_yacc take a spec argument which -can be customized. If your single class has the name c, -this argument should be - - -let spec = - make_spec_from_alist - ~data_exemplar: (new data_impl c) - ~default_element_exemplar: (new element_impl c) - ~element_alist: [] - () - - -This means that data nodes will be created from the exemplar passed by -~data_exemplar and that all element nodes will be made from the exemplar -specified by ~default_element_exemplar. In ~element_alist, you can -pass that different exemplars are to be used for different element types; but -this is an optional feature. If you do not need it, pass the empty list. - - - -Remember that an exemplar is a (node, extension) pair that serves as pattern -when new nodes (and the corresponding extension objects) are added to the -document tree. In this case, the exemplar contains c as -extension, and when nodes are created, the exemplar is cloned, and cloning -makes also a copy of c such that all nodes of the document -tree will have a copy of c as extension. - - - The ~element_alist argument can bind -specific element types to specific exemplars; as exemplars may be instances of -different classes it is effectively possible to bind element types to -classes. For example, if the element type "p" is implemented by class "c_p", -and "q" is realized by "c_q", you can pass the following value: - - -let spec = - make_spec_from_alist - ~data_exemplar: (new data_impl c) - ~default_element_exemplar: (new element_impl c) - ~element_alist: - [ "p", new element_impl c_p; - "q", new element_impl c_q; - ] - () - - -The extension object c is still used for all data nodes and -for all other element types. - - - - -
    - - - - - Details of the mapping from XML text to the tree representation - - - - The representation of character-free elements - - If an element declaration does not allow the element to -contain character data, the following rules apply. - - If the element must be empty, i.e. it is declared with the -keyword EMPTY, the element instance must be effectively -empty (it must not even contain whitespace characters). The parser guarantees -that a declared EMPTY element does never contain a data -node, even if the data node represents the empty string. - - If the element declaration only permits other elements to occur -within that element but not character data, it is still possible to insert -whitespace characters between the subelements. The parser ignores these -characters, too, and does not create data nodes for them. - - - Example. - - Consider the following element types: - - - - -]]> - -Only x may contain character data, the keyword -#PCDATA indicates this. The other types are character-free. - - - - The XML term - - -]]> - -will be internally represented by an element node for x -with three subnodes: the first z element, a data node -containing the space character, and the second z element. -In contrast to this, the term - - -]]> - -is represented by an element node for y with only -two subnodes, the two z elements. There -is no data node for the space character because spaces are ignored in the -character-free element y. - - - - - - The representation of character data - - The XML specification allows all Unicode characters in XML -texts. This parser can be configured such that UTF-8 is used to represent the -characters internally; however, the default character encoding is -ISO-8859-1. (Currently, no other encodings are possible for the internal string -representation; the type Pxp_types.rep_encoding enumerates -the possible encodings. Principially, the parser could use any encoding that is -ASCII-compatible, but there are currently only lexical analyzers for UTF-8 and -ISO-8859-1. It is currently impossible to use UTF-16 or UCS-4 as internal -encodings (or other multibyte encodings which are not ASCII-compatible) unless -major parts of the parser are rewritten - unlikely...) - - - -The internal encoding may be different from the external encoding (specified -in the XML declaration <?xml ... encoding="..."?>); in -this case the strings are automatically converted to the internal encoding. - - - -If the internal encoding is ISO-8859-1, it is possible that there are -characters that cannot be represented. In this case, the parser ignores such -characters and prints a warning (to the collect_warning -object that must be passed when the parser is called). - - - The XML specification allows lines to be separated by single LF -characters, by CR LF character sequences, or by single CR -characters. Internally, these separators are always converted to single LF -characters. - - The parser guarantees that there are never two adjacent data -nodes; if necessary, data material that would otherwise be represented by -several nodes is collapsed into one node. Note that you can still create node -trees with adjacent data nodes; however, the parser does not return such trees. - - - Note that CDATA sections are not represented specially; such -sections are added to the current data material that being collected for the -next data node. - - - - - The representation of entities within documents - - Entities are not represented within -documents! If the parser finds an entity reference in the document -content, the reference is immediately expanded, and the parser reads the -expansion text instead of the reference. - - - - - The representation of attributes As attribute -values are composed of Unicode characters, too, the same problems with the -character encoding arise as for character material. Attribute values are -converted to the internal encoding, too; and if there are characters that -cannot be represented, these are dropped, and a warning is printed. - - Attribute values are normalized before they are returned by -methods like attribute. First, any remaining entity -references are expanded; if necessary, expansion is performed recursively. -Second, newline characters (any of LF, CR LF, or CR characters) are converted -to single space characters. Note that especially the latter action is -prescribed by the XML standard (but is not converted -such that it is still possible to include line feeds into attributes). - - - - - The representation of processing instructions -Processing instructions are parsed to some extent: The first word of the -PI is called the target, and it is stored separated from the rest of the PI: - - -]]> - -The exact location where a PI occurs is not represented (by default). The -parser puts the PI into the object that represents the embracing construct (an -element, a DTD, or the whole document); that means you can find out which PIs -occur in a certain element, in the DTD, or in the whole document, but you -cannot lookup the exact position within the construct. - - - If you require the exact location of PIs, it is possible to -create extra nodes for them. This mode is controled by the option -enable_pinstr_nodes. The additional nodes have the node type -T_pinstr target, and are created -from special exemplars contained in the spec (see -pxp_document.mli). - - - - The representation of comments - -Normally, comments are not represented; they are dropped by -default. However, if you require them, it is possible to create -T_comment nodes for them. This mode can be specified by the -option enable_comment_nodes. Comment nodes are created from -special exemplars contained in the spec (see -pxp_document.mli). You can access the contents of comments through the -method comment. - - - - The attributes <literal>xml:lang</literal> and -<literal>xml:space</literal> - - These attributes are not supported specially; they are handled -like any other attribute. - - - - - And what about namespaces? - Currently, there is no special support for namespaces. -However, the parser allows it that the colon occurs in names such that it is -possible to implement namespaces on top of the current API. - - Some future release of PXP will support namespaces as built-in -feature... - - - - -
    - - - - - Configuring and calling the parser - - - - - - - Overview - -There are the following main functions invoking the parser (in Pxp_yacc): - - - - parse_document_entity: You want to -parse a complete and closed document consisting of a DTD and the document body; -the body is validated against the DTD. This mode is interesting if you have a -file - - ... -]]> - -and you can accept any DTD that is included in the file (e.g. because the file -is under your control). - - - - parse_wfdocument_entity: You want to -parse a complete and closed document consisting of a DTD and the document body; -but the body is not validated, only checked for well-formedness. This mode is -preferred if validation costs too much time or if the DTD is missing. - - - - parse_dtd_entity: You want only to -parse an entity (file) containing the external subset of a DTD. Sometimes it is -interesting to read such a DTD, for example to compare it with the DTD included -in a document, or to apply the next mode: - - - - parse_content_entity: You want only to -parse an entity (file) containing a fragment of a document body; this fragment -is validated against the DTD you pass to the function. Especially, the fragment -must not have a <!DOCTYPE> clause, and must directly -begin with an element. The element is validated against the DTD. This mode is -interesting if you want to check documents against a fixed, immutable DTD. - - - - parse_wfcontent_entity: This function -also parses a single element without DTD, but does not validate it. - - - extract_dtd_from_document_entity: This -function extracts the DTD from a closed document consisting of a DTD and a -document body. Both the internal and the external subsets are extracted. - - - - - -In many cases, parse_document_entity is the preferred mode -to parse a document in a validating way, and -parse_wfdocument_entity is the mode of choice to parse a -file while only checking for well-formedness. - - - -There are a number of variations of these modes. One important application of a -parser is to check documents of an untrusted source against a fixed DTD. One -solution is to not allow the <!DOCTYPE> clause in -these documents, and treat the document like a fragment (using mode -parse_content_entity). This is very simple, but -inflexible; users of such a system cannot even define additional entities to -abbreviate frequent phrases of their text. - - - -It may be necessary to have a more intelligent checker. For example, it is also -possible to parse the document to check fully, i.e. with DTD, and to compare -this DTD with the prescribed one. In order to fully parse the document, mode -parse_document_entity is applied, and to get the DTD to -compare with mode parse_dtd_entity can be used. - - - -There is another very important configurable aspect of the parser: the -so-called resolver. The task of the resolver is to locate the contents of an -(external) entity for a given entity name, and to make the contents accessible -as a character stream. (Furthermore, it also normalizes the character set; -but this is a detail we can ignore here.) Consider you have a file called -"main.xml" containing - - -%sub; -]]> - -and a file stored in the subdirectory "sub" with name -"sub.xml" containing - - -%subsub; -]]> - -and a file stored in the subdirectory "subsub" of -"sub" with name "subsub.xml" (the -contents of this file do not matter). Here, the resolver must track that -the second entity subsub is located in the directory -"sub/subsub", i.e. the difficulty is to interpret the -system (file) names of entities relative to the entities containing them, -even if the entities are deeply nested. - - - -There is not a fixed resolver already doing everything right - resolving entity -names is a task that highly depends on the environment. The XML specification -only demands that SYSTEM entities are interpreted like URLs -(which is not very precise, as there are lots of URL schemes in use), hoping -that this helps overcoming the local peculiarities of the environment; the idea -is that if you do not know your environment you can refer to other entities by -denoting URLs for them. I think that this interpretation of -SYSTEM names may have some applications in the internet, but -it is not the first choice in general. Because of this, the resolver is a -separate module of the parser that can be exchanged by another one if -necessary; more precisely, the parser already defines several resolvers. - - - -The following resolvers do already exist: - - - - Resolvers reading from arbitrary input channels. These -can be configured such that a certain ID is associated with the channel; in -this case inner references to external entities can be resolved. There is also -a special resolver that interprets SYSTEM IDs as URLs; this resolver can -process relative SYSTEM names and determine the corresponding absolute URL. - - - - A resolver that reads always from a given O'Caml -string. This resolver is not able to resolve further names unless the string is -not associated with any name, i.e. if the document contained in the string -refers to an external entity, this reference cannot be followed in this -case. - - - A resolver for file names. The SYSTEM -name is interpreted as file URL with the slash "/" as separator for -directories. - This resolver is derived from the generic URL resolver. - - - -The interface a resolver must have is documented, so it is possible to write -your own resolver. For example, you could connect the parser with an HTTP -client, and resolve URLs of the HTTP namespace. The resolver classes support -that several independent resolvers are combined to one more powerful resolver; -thus it is possible to combine a self-written resolver with the already -existing resolvers. - - - -Note that the existing resolvers only interpret SYSTEM -names, not PUBLIC names. If it helps you, it is possible to -define resolvers for PUBLIC names, too; for example, such a -resolver could look up the public name in a hash table, and map it to a system -name which is passed over to the existing resolver for system names. It is -relatively simple to provide such a resolver. - - - - - - - Resolvers and sources - - - Using the built-in resolvers (called sources) - - The type source enumerates the two -possibilities where the document to parse comes from. - - -type source = - Entity of ((dtd -> Pxp_entity.entity) * Pxp_reader.resolver) - | ExtID of (ext_id * Pxp_reader.resolver) - - -You normally need not to worry about this type as there are convenience -functions that create source values: - - - - - from_file s: The document is read from -file s; you may specify absolute or relative path names. -The file name must be encoded as UTF-8 string. - - -There is an optional argument ~system_encoding -specifying the character encoding which is used for the names of the file -system. For example, if this encoding is ISO-8859-1 and s is -also a ISO-8859-1 string, you can form the source: - - - - - -This source has the advantage that -it is able to resolve inner external entities; i.e. if your document includes -data from another file (using the SYSTEM attribute), this -mode will find that file. However, this mode cannot resolve -PUBLIC identifiers nor SYSTEM identifiers -other than "file:". - - - - from_channel ch: The document is read -from the channel ch. In general, this source also supports -file URLs found in the document; however, by default only absolute URLs are -understood. It is possible to associate an ID with the channel such that the -resolver knows how to interpret relative URLs: - - -from_channel ~id:(System "file:///dir/dir1/") ch - - -There is also the ~system_encoding argument specifying how file names are -encoded. - The example from above can also be written (but it is no -longer possible to interpret relative URLs because there is no ~id argument, -and computing this argument is relatively complicated because it must -be a valid URL): - - -let ch = open_in s in -let src = from_channel ~system_encoding:`Enc_iso88591 ch in -...; -close_in ch - - - - - from_string s: The string -s is the document to parse. This mode is not able to -interpret file names of SYSTEM clauses, nor it can look up -PUBLIC identifiers. - - Normally, the encoding of the string is detected as usual -by analyzing the XML declaration, if any. However, it is also possible to -specify the encoding directly: - - -let src = from_string ~fixenc:`ISO-8859-2 s - - - - - ExtID (id, r): The document to parse -is denoted by the identifier id (either a -SYSTEM or PUBLIC clause), and this -identifier is interpreted by the resolver r. Use this mode -if you have written your own resolver. - Which character sets are possible depends on the passed -resolver r. - - - Entity (get_entity, r): The document -to parse is returned by the function invocation get_entity -dtd, where dtd is the DTD object to use (it may be -empty). Inner external references occuring in this entity are resolved using -the resolver r. - Which character sets are possible depends on the passed -resolver r. - - - - - - - The resolver API - - A resolver is an object that can be opened like a file, but you -do not pass the file name to the resolver, but the XML identifier of the entity -to read from (either a SYSTEM or PUBLIC -clause). When opened, the resolver must return the -Lexing.lexbuf that reads the characters. The resolver can -be closed, and it can be cloned. Furthermore, it is possible to tell the -resolver which character set it should assume. - The following from Pxp_reader: - - unit - method init_warner : collect_warnings -> unit - method rep_encoding : rep_encoding - method open_in : ext_id -> Lexing.lexbuf - method close_in : unit - method change_encoding : string -> unit - method clone : resolver - method close_all : unit - end -]]> - -The resolver object must work as follows: - - - - - When the parser is called, it tells the resolver the -warner object and the internal encoding by invoking -init_warner and init_rep_encoding. The -resolver should store these values. The method rep_encoding -should return the internal encoding. - - - - If the parser wants to read from the resolver, it invokes -the method open_in. Either the resolver succeeds, in which -case the Lexing.lexbuf reading from the file or stream must -be returned, or opening fails. In the latter case the method implementation -should raise an exception (see below). - - - If the parser finishes reading, it calls the -close_in method. - - - If the parser finds a reference to another external -entity in the input stream, it calls clone to get a second -resolver which must be initially closed (not yet connected with an input -stream). The parser then invokes open_in and the other -methods as described. - - - If you already know the character set of the input -stream, you should recode it to the internal encoding, and define the method -change_encoding as an empty method. - - - If you want to support multiple external character sets, -the object must follow a much more complicated protocol. Directly after -open_in has been called, the resolver must return a lexical -buffer that only reads one byte at a time. This is only possible if you create -the lexical buffer with Lexing.from_function; the function -must then always return 1 if the EOF is not yet reached, and 0 if EOF is -reached. If the parser has read the first line of the document, it will invoke -change_encoding to tell the resolver which character set to -assume. From this moment, the object can return more than one byte at once. The -argument of change_encoding is either the parameter of the -"encoding" attribute of the XML declaration, or the empty string if there is -not any XML declaration or if the declaration does not contain an encoding -attribute. - - At the beginning the resolver must only return one -character every time something is read from the lexical buffer. The reason for -this is that you otherwise would not exactly know at which position in the -input stream the character set changes. - - If you want automatic recognition of the character set, -it is up to the resolver object to implement this. - - - If an error occurs, the parser calls the method -close_all for the top-level resolver; this method should -close itself (if not already done) and all clones. - - - - Exceptions - -It is possible to chain resolvers such that when the first resolver is not able -to open the entity, the other resolvers of the chain are tried in turn. The -method open_in should raise the exception -Not_competent to indicate that the next resolver should try -to open the entity. If the resolver is able to handle the ID, but some other -error occurs, the exception Not_resolvable should be raised -to force that the chain breaks. - - - - Example: How to define a resolver that is equivalent to -from_string: ... - - - - - Predefined resolver components - -There are some classes in Pxp_reader that define common resolver behaviour. - - - ?fixenc:encoding -> - ?auto_close:bool -> - in_channel -> - resolver -]]> - -Reads from the passed channel (it may be even a pipe). If the -~id argument is passed to the object, the created resolver -accepts only this ID. Otherwise all IDs are accepted. - Once the resolver has -been cloned, it does not accept any ID. This means that this resolver cannot -handle inner references to external entities. Note that you can combine this -resolver with another resolver that can handle inner references (such as -resolve_as_file); see class 'combine' below. - If you pass the -~fixenc argument, the encoding of the channel is set to the -passed value, regardless of any auto-recognition or any XML declaration. - If -~auto_close = true (which is the default), the channel is -closed after use. If ~auto_close = false, the channel is -left open. - - - - - channel_of_id:(ext_id -> (in_channel * encoding option)) -> - resolver -]]> - -This resolver calls the function ~channel_of_id to open a -new channel for the passed ext_id. This function must either -return the channel and the encoding, or it must fail with Not_competent. The -function must return None as encoding if the default -mechanism to recognize the encoding should be used. It must return -Some e if it is already known that the encoding of the -channel is e. If ~auto_close = true -(which is the default), the channel is closed after use. If -~auto_close = false, the channel is left open. - - - - - ?auto_close:bool -> - url_of_id:(ext_id -> Neturl.url) -> - channel_of_url:(Neturl.url -> (in_channel * encoding option)) -> - resolver -]]> - -When this resolver gets an ID to read from, it calls the function -~url_of_id to get the corresponding URL. This URL may be a -relative URL; however, a URL scheme must be used which contains a path. The -resolver converts the URL to an absolute URL if necessary. The second -function, ~channel_of_url, is fed with the absolute URL as -input. This function opens the resource to read from, and returns the channel -and the encoding of the resource. - - -Both functions, ~url_of_id and -~channel_of_url, can raise Not_competent to indicate that -the object is not able to read from the specified resource. However, there is a -difference: A Not_competent from ~url_of_id is left as it -is, but a Not_competent from ~channel_of_url is converted to -Not_resolvable. So only ~url_of_id decides which URLs are -accepted by the resolver and which not. - - -The function ~channel_of_url must return -None as encoding if the default mechanism to recognize the -encoding should be used. It must return Some e if it is -already known that the encoding of the channel is e. - - -If ~auto_close = true (which is the default), the channel is -closed after use. If ~auto_close = false, the channel is -left open. - - -Objects of this class contain a base URL relative to which relative URLs are -interpreted. When creating a new object, you can specify the base URL by -passing it as ~base_url argument. When an existing object is -cloned, the base URL of the clone is the URL of the original object. - Note -that the term "base URL" has a strict definition in RFC 1808. - - - - - ?fixenc:encoding -> - string -> - resolver -]]> - -Reads from the passed string. If the ~id argument is passed -to the object, the created resolver accepts only this ID. Otherwise all IDs are -accepted. - Once the resolver has been cloned, it does not accept any ID. This -means that this resolver cannot handle inner references to external -entities. Note that you can combine this resolver with another resolver that -can handle inner references (such as resolve_as_file); see class 'combine' -below. - If you pass the ~fixenc argument, the encoding of -the string is set to the passed value, regardless of any auto-recognition or -any XML declaration. - - - - (string * encoding option)) -> - resolver -]]> - -This resolver calls the function ~string_of_id to get the -string for the passed ext_id. This function must either -return the string and the encoding, or it must fail with Not_competent. The -function must return None as encoding if the default -mechanism to recognize the encoding should be used. It must return -Some e if it is already known that the encoding of the -string is e. - - - - - ?host_prefix:[ `Not_recognized | `Allowed | `Required ] -> - ?system_encoding:encoding -> - ?url_of_id:(ext_id -> Neturl.url) -> - ?channel_of_url: (Neturl.url -> (in_channel * encoding option)) -> - unit -> - resolver -]]> -Reads from the local file system. Every file name is interpreted as -file name of the local file system, and the referred file is read. - - -The full form of a file URL is: file://host/path, where -'host' specifies the host system where the file identified 'path' -resides. host = "" or host = "localhost" are accepted; other values -will raise Not_competent. The standard for file URLs is -defined in RFC 1738. - - -Option ~file_prefix: Specifies how the "file:" prefix of -file names is handled: - - - `Not_recognized:The prefix is not -recognized. - - - `Allowed: The prefix is allowed but -not required (the default). - - - `Required: The prefix is -required. - - - - -Option ~host_prefix: Specifies how the "//host" phrase of -file names is handled: - - - `Not_recognized:The prefix is not -recognized. - - - `Allowed: The prefix is allowed but -not required (the default). - - - `Required: The prefix is -required. - - - - -Option ~system_encoding: Specifies the encoding of file -names of the local file system. Default: UTF-8. - - -Options ~url_of_id, ~channel_of_url: Not -for the casual user! - - - - - resolver list -> - resolver -]]> - -Combines several resolver objects. If a concrete entity with an -ext_id is to be opened, the combined resolver tries the -contained resolvers in turn until a resolver accepts opening the entity -(i.e. it does not raise Not_competent on open_in). - - -Clones: If the 'clone' method is invoked before 'open_in', all contained -resolvers are cloned separately and again combined. If the 'clone' method is -invoked after 'open_in' (i.e. while the resolver is open), additionally the -clone of the active resolver is flagged as being preferred, i.e. it is tried -first. - - - - - - - The DTD classes Sorry, not yet -written. Perhaps the interface definition of Pxp_dtd expresses the same: - - -&markup-dtd1.mli;&markup-dtd2.mli; - - - - - Invoking the parser - - Here a description of Pxp_yacc. - - - Defaults - The following defaults are available: - - -val default_config : config -val default_extension : ('a node extension) as 'a -val default_spec : ('a node extension as 'a) spec - - - - - - Parsing functions - In the following, the term "closed document" refers to -an XML structure like - - -<!DOCTYPE ... [ declarations ] > -<root> -... -</root> - - -The term "fragment" refers to an XML structure like - - -<root> -... -</root> - - -i.e. only to one isolated element instance. - - - - source -> dtd -]]> - -Parses the declarations which are contained in the entity, and returns them as -dtd object. - - - - source -> dtd -]]> - -Extracts the DTD from a closed document. Both the internal and the external -subsets are extracted and combined to one dtd object. This -function does not parse the whole document, but only the parts that are -necessary to extract the DTD. - - - - dtd) -> - ?id_index:('ext index) -> - config -> - source -> - 'ext spec -> - 'ext document -]]> - -Parses a closed document and validates it against the DTD that is contained in -the document (internal and external subsets). The option -~transform_dtd can be used to transform the DTD in the -document, and to use the transformed DTD for validation. If -~id_index is specified, an index of all ID attributes is -created. - - - - - source -> - 'ext spec -> - 'ext document -]]> - -Parses a closed document, but checks it only on well-formedness. - - - - - config -> - source -> - dtd -> - 'ext spec -> - 'ext node -]]> - -Parses a fragment, and validates the element. - - - - - source -> - 'ext spec -> - 'ext node -]]> - -Parses a fragment, but checks it only on well-formedness. - - - - - Configuration options - - - - - - warner:The parser prints -warnings by invoking the method warn for this warner -object. (Default: all warnings are dropped) - - errors_with_line_numbers:If -true, errors contain line numbers; if false, errors contain only byte -positions. The latter mode is faster. (Default: true) - - enable_pinstr_nodes:If true, -the parser creates extra nodes for processing instructions. If false, -processing instructions are simply added to the element or document surrounding -the instructions. (Default: false) - - enable_super_root_node:If -true, the parser creates an extra node which is the parent of the root of the -document tree. This node is called super root; it is an element with type -T_super_root. - If there are processing instructions outside -the root element and outside the DTD, they are added to the super root instead -of the document. - If false, the super root node is not created. (Default: -false) - - enable_comment_nodes:If true, -the parser creates nodes for comments with type T_comment; -if false, such nodes are not created. (Default: false) - - encoding:Specifies the -internal encoding of the parser. Most strings are then represented according to -this encoding; however there are some exceptions (especially -ext_id values which are always UTF-8 encoded). -(Default: `Enc_iso88591) - - -recognize_standalone_declaration: If true and if the parser is -validating, the standalone="yes" declaration forces that it -is checked whether the document is a standalone document. - If false, or if the -parser is in well-formedness mode, such declarations are ignored. -(Default: true) - - - store_element_positions: If -true, for every non-data node the source position is stored. If false, the -position information is lost. If available, you can get the positions of nodes -by invoking the position method. -(Default: true) - - idref_pass:If true and if -there is an ID index, the parser checks whether every IDREF or IDREFS attribute -refer to an existing node; this requires that the parser traverses the whole -doument tree. If false, this check is left out. (Default: false) - - validate_by_dfa:If true and if -the content model for an element type is deterministic, a deterministic finite -automaton is used to validate whether the element contents match the content -model of the type. If false, or if a DFA is not available, a backtracking -algorithm is used for validation. (Default: true) - - - -accept_only_deterministic_models: If true, only deterministic content -models are accepted; if false, any syntactically correct content models can be -processed. (Default: true) - - - - - - Which configuration should I use? - First, I recommend to vary the default configuration instead of -creating a new configuration record. For instance, to set -idref_pass to true, change the default -as in: - -let config = { default_config with idref_pass = true } - -The background is that I can add more options to the record in future versions -of the parser without breaking your programs. - - - Do I need extra nodes for processing instructions? -By default, such nodes are not created. This does not mean that the -processing instructions are lost; however, you cannot find out the exact -location where they occur. For example, the following XML text - - -]]> - -will normally create one element node for x containing -one subnode for y. The processing -instructions are attached to x in a separate hash table; you -can access them using x # pinstr "pi1" and x # -pinstr "pi2", respectively. The information is lost where the -instructions occur within x. - - - - If the option enable_pinstr_nodes is -turned on, the parser creates extra nodes pi1 and -pi2 such that the subnodes of x are now: - - - -The extra nodes contain the processing instructions in the usual way, i.e. you -can access them using pi1 # pinstr "pi1" and pi2 # -pinstr "pi2", respectively. - - - Note that you will need an exemplar for the PI nodes (see -make_spec_from_alist). - - - Do I need a super root node? - By default, there is no super root node. The -document object refers directly to the node representing the -root element of the document, i.e. - - - -if r is the root node. This is sometimes inconvenient: (1) -Some algorithms become simpler if every node has a parent, even the root -node. (2) Some standards such as XPath call the "root node" the node whose -child represents the root of the document. (3) The super root node can serve -as a container for processing instructions outside the root element. Because of -these reasons, it is possible to create an extra super root node, whose child -is the root node: - - - -When extra nodes are also created for processing instructions, these nodes can -be added to the super root node if they occur outside the root element (reason -(3)), and the order reflects the order in the source text. - - - Note that you will need an exemplar for the super root node -(see make_spec_from_alist). - - - What is the effect of the UTF-8 encoding? - By default, the parser represents strings (with few -exceptions) as ISO-8859-1 strings. These are well-known, and there are tools -and fonts for this encoding. - - However, internationalization may require that you switch over -to UTF-8 encoding. In most environments, the immediate effect will be that you -cannot read strings with character codes >= 160 any longer; your terminal will -only show funny glyph combinations. It is strongly recommended to install -Unicode fonts (GNU Unifont, - -Markus Kuhn's fonts) and terminal emulators -that can handle UTF-8 byte sequences. Furthermore, a Unicode editor may -be helpful (such as Yudit). There are -also FAQ by -Markus Kuhn. - - By setting encoding to -`Enc_utf8 all strings originating from the parsed XML -document are represented as UTF-8 strings. This includes not only character -data and attribute values but also element names, attribute names and so on, as -it is possible to use any Unicode letter to form such names. Strictly -speaking, PXP is only XML-compliant if the UTF-8 mode is used; otherwise it -will have difficulties when validating documents containing -non-ISO-8859-1-names. - - - This mode does not have any impact on the external -representation of documents. The character set assumed when reading a document -is set in the XML declaration, and character set when writing a document must -be passed to the write method. - - - - How do I check that nodes exist which are referred by IDREF attributes? - First, you must create an index of all occurring ID -attributes: - - - -This index must be passed to the parsing function: - - index) - config source spec -]]> - -Next, you must turn on the idref_pass mode: - - - -Note that now the whole document tree will be traversed, and every node will be -checked for IDREF and IDREFS attributes. If the tree is big, this may take some -time. - - - - - What are deterministic content models? - These type of models can speed up the validation checks; -furthermore they ensure SGML-compatibility. In particular, a content model is -deterministic if the parser can determine the actually used alternative by -inspecting only the current token. For example, this element has -non-deterministic contents: - - -]]> - -If the first element in x is u, the -parser does not know which of the alternatives (u,v) or -(u,y+) will work; the parser must also inspect the second -element to be able to distinguish between the alternatives. Because such -look-ahead (or "guessing") is required, this example is -non-deterministic. - - - The XML standard demands that content models must be -deterministic. So it is recommended to turn the option -accept_only_deterministic_models on; however, PXP can also -process non-deterministic models using a backtracking algorithm. - - Deterministic models ensure that validation can be performed in -linear time. In order to get the maximum benefits, PXP also implements a -special validator that profits from deterministic models; this is the -deterministic finite automaton (DFA). This validator is enabled per element -type if the element type has a deterministic model and if the option -validate_by_dfa is turned on. - - In general, I expect that the DFA method is faster than the -backtracking method; especially in the worst case the DFA takes only linear -time. However, if the content model has only few alternatives and the -alternatives do not nest, the backtracking algorithm may be better. - - - - - - - - - Updates - - Some (often later added) features that are otherwise -not explained in the manual but worth to be mentioned. - - - Methods node_position, node_path, nth_node, -previous_node, next_node for nodes: See pxp_document.mli - - Functions to determine the document order of nodes: -compare, create_ord_index, ord_number, ord_compare: See pxp_document.mli - - - - - - - - - diff --git a/helm/DEVEL/pxp/pxp/doc/manual/src/pic/extension_general.fig b/helm/DEVEL/pxp/pxp/doc/manual/src/pic/extension_general.fig deleted file mode 100644 index 445095f07..000000000 --- a/helm/DEVEL/pxp/pxp/doc/manual/src/pic/extension_general.fig +++ /dev/null @@ -1,47 +0,0 @@ -#FIG 3.2 -Portrait -Center -Metric -A4 -100.00 -Single --2 -1200 2 -1 3 0 1 0 7 100 0 15 0.000 1 0.0000 1575 2250 229 229 1575 2250 1800 2295 -1 3 0 1 0 7 100 0 15 0.000 1 0.0000 1575 3375 225 225 1575 3375 1800 3375 -1 3 0 1 0 7 100 0 15 0.000 1 0.0000 675 3375 229 229 675 3375 900 3420 -1 3 0 1 0 7 100 0 15 0.000 1 0.0000 2475 3375 229 229 2475 3375 2700 3420 -1 3 0 1 0 7 100 0 10 0.000 1 0.0000 3600 2475 180 180 3600 2475 3780 2475 -1 3 0 1 0 7 100 0 10 0.000 1 0.0000 2880 2475 180 180 2880 2475 3060 2475 -1 3 0 1 0 7 100 0 10 0.000 1 0.0000 4320 2475 186 186 4320 2475 4500 2520 -1 3 0 1 0 7 100 0 10 0.000 1 0.0000 3600 1485 186 186 3600 1485 3780 1530 -2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2 - 675 3150 1395 2385 -2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2 - 1575 2475 1575 3150 -2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2 - 1755 2385 2475 3150 -2 1 1 1 0 7 100 0 -1 4.000 0 0 -1 1 0 2 - 0 0 1.00 60.00 120.00 - 1537 2010 3412 1462 -2 1 1 1 0 7 100 0 -1 4.000 0 0 -1 1 0 2 - 0 0 1.00 60.00 120.00 - 3412 1537 1672 2047 -2 1 1 1 0 7 100 0 -1 4.000 0 0 -1 1 1 2 - 0 0 1.00 60.00 120.00 - 0 0 1.00 60.00 120.00 - 810 3195 2707 2512 -2 1 1 1 0 7 100 0 -1 4.000 0 0 -1 1 1 2 - 0 0 1.00 60.00 120.00 - 0 0 1.00 60.00 120.00 - 1740 3217 3442 2580 -2 1 1 1 0 7 100 0 -1 4.000 0 0 -1 1 1 2 - 0 0 1.00 60.00 120.00 - 0 0 1.00 60.00 120.00 - 2640 3210 4177 2610 -4 0 0 80 0 14 12 0.0000 4 75 105 3555 1530 x\001 -4 0 0 80 0 14 12 0.0000 4 75 105 1530 2295 n\001 -4 0 0 80 0 12 12 0.2967 4 135 1365 1658 1950 n # extension\001 -4 0 0 80 0 12 12 0.2967 4 135 840 2475 1950 x # node\001 -4 0 0 80 0 16 12 0.0000 4 135 1140 1020 4050 The node tree\001 -4 0 0 80 0 16 12 0.0000 4 135 1245 3225 3285 The extensions\001 diff --git a/helm/DEVEL/pxp/pxp/doc/manual/src/pic/node_add.fig b/helm/DEVEL/pxp/pxp/doc/manual/src/pic/node_add.fig deleted file mode 100644 index 071683488..000000000 --- a/helm/DEVEL/pxp/pxp/doc/manual/src/pic/node_add.fig +++ /dev/null @@ -1,107 +0,0 @@ -#FIG 3.2 -Portrait -Center -Metric -A4 -100.00 -Single --2 -1200 2 -1 1 0 1 0 7 100 0 15 0.000 1 0.0000 6141 1350 242 229 6141 1350 6379 1395 -1 1 0 1 0 7 100 0 15 0.000 1 0.0000 6141 2250 242 229 6141 2250 6379 2295 -1 1 0 1 0 7 100 0 15 0.000 1 0.0000 5426 2250 242 229 5426 2250 5665 2295 -1 1 0 1 0 7 100 0 15 0.000 1 0.0000 6856 2250 242 229 6856 2250 7094 2295 -1 1 0 1 0 7 100 0 15 0.000 1 0.0000 7571 2925 242 229 7571 2925 7809 2970 -1 1 0 1 0 7 100 0 15 0.000 1 0.0000 8524 2925 242 229 8524 2925 8762 2970 -1 1 0 1 0 7 100 0 15 0.000 1 0.0000 8047 2250 242 229 8047 2250 8285 2295 -1 1 0 1 0 7 100 0 15 0.000 1 0.0000 1866 1350 242 229 1866 1350 2104 1395 -1 1 0 1 0 7 100 0 15 0.000 1 0.0000 1866 2250 242 229 1866 2250 2104 2295 -1 1 0 1 0 7 100 0 15 0.000 1 0.0000 1151 2250 242 229 1151 2250 1390 2295 -1 1 0 1 0 7 100 0 15 0.000 1 0.0000 2581 2250 242 229 2581 2250 2819 2295 -1 1 0 1 0 7 100 0 15 0.000 1 0.0000 3296 2925 242 229 3296 2925 3534 2970 -1 1 0 1 0 7 100 0 15 0.000 1 0.0000 4249 2925 242 229 4249 2925 4487 2970 -1 1 0 1 0 7 100 0 15 0.000 1 0.0000 3772 2250 242 229 3772 2250 4010 2295 -1 1 0 1 0 7 100 0 15 0.000 1 0.0000 8325 1350 242 229 8325 1350 8563 1395 -2 1 0 1 0 7 100 0 15 0.000 0 0 -1 1 0 2 - 1 1 1.00 61.76 123.53 - 5910 1440 5402 2017 -2 1 0 1 0 7 100 0 15 0.000 0 0 -1 1 0 2 - 1 1 1.00 61.76 123.53 - 6109 1590 6101 2025 -2 1 0 1 0 7 100 0 15 0.000 0 0 -1 1 0 2 - 1 1 1.00 61.76 123.53 - 6307 1537 6697 2070 -2 1 0 1 0 7 100 0 15 0.000 0 0 -1 1 0 2 - 1 1 1.00 61.76 123.53 - 7832 2347 7602 2692 -2 1 0 1 0 7 100 0 15 0.000 0 0 -1 1 0 2 - 1 1 1.00 61.76 123.53 - 8150 2452 8349 2752 -2 1 0 1 0 7 100 0 15 0.000 0 0 -1 1 0 2 - 1 0 1.00 61.76 123.53 - 5490 2017 5958 1492 -2 1 0 1 0 7 100 0 15 0.000 0 0 -1 1 0 2 - 1 0 1.00 61.76 123.53 - 6164 2010 6173 1575 -2 1 0 1 0 7 100 0 15 0.000 0 0 -1 1 0 2 - 1 0 1.00 61.76 123.53 - 6768 2025 6355 1470 -2 1 0 1 0 7 100 0 15 0.000 0 0 -1 1 0 2 - 1 0 1.00 61.76 123.53 - 7673 2715 7880 2415 -2 1 0 1 0 7 100 0 15 0.000 0 0 -1 1 0 2 - 1 0 1.00 61.76 123.53 - 8412 2707 8222 2415 -2 1 1 1 0 7 95 0 15 4.000 0 0 -1 0 0 2 - 6387 1372 8023 2017 -2 2 0 1 0 7 95 0 -1 0.000 0 0 -1 0 0 5 - 4950 900 9000 900 9000 3375 4950 3375 4950 900 -2 1 0 1 0 7 100 0 15 0.000 0 0 -1 1 0 2 - 1 1 1.00 61.75 123.51 - 1635 1440 1127 2017 -2 1 0 1 0 7 100 0 15 0.000 0 0 -1 1 0 2 - 1 1 1.00 61.75 123.51 - 1834 1590 1826 2025 -2 1 0 1 0 7 100 0 15 0.000 0 0 -1 1 0 2 - 1 1 1.00 61.75 123.51 - 2032 1537 2422 2070 -2 1 0 1 0 7 100 0 15 0.000 0 0 -1 1 0 2 - 1 1 1.00 61.75 123.51 - 3557 2347 3327 2692 -2 1 0 1 0 7 100 0 15 0.000 0 0 -1 1 0 2 - 1 1 1.00 61.75 123.51 - 3875 2452 4074 2752 -2 1 0 1 0 7 100 0 15 0.000 0 0 -1 1 0 2 - 1 0 1.00 61.75 123.51 - 1215 2017 1683 1492 -2 1 0 1 0 7 100 0 15 0.000 0 0 -1 1 0 2 - 1 0 1.00 61.75 123.51 - 1889 2010 1898 1575 -2 1 0 1 0 7 100 0 15 0.000 0 0 -1 1 0 2 - 1 0 1.00 61.75 123.51 - 2493 2025 2080 1470 -2 1 0 1 0 7 100 0 15 0.000 0 0 -1 1 0 2 - 1 0 1.00 61.75 123.51 - 3398 2715 3605 2415 -2 1 0 1 0 7 100 0 15 0.000 0 0 -1 1 0 2 - 1 0 1.00 61.75 123.51 - 4137 2707 3947 2415 -2 1 1 1 0 7 95 0 15 4.000 0 0 -1 0 0 2 - 2112 1372 3748 2017 -2 2 0 1 0 7 95 0 -1 0.000 0 0 -1 0 0 5 - 675 900 4725 900 4725 3375 675 3375 675 900 -2 1 0 1 0 7 95 0 -1 4.000 0 0 -1 1 0 2 - 1 1 1.00 60.00 120.00 - 8197 1545 8055 2010 -2 1 0 1 0 7 95 0 -1 4.000 0 0 -1 1 0 2 - 1 0 1.00 60.00 120.00 - 8137 2025 8280 1590 -2 1 0 3 0 7 95 0 -1 0.000 0 0 -1 1 0 4 - 2 1 2.00 120.00 180.00 - 7875 1500 7620 1965 7845 1920 7485 2355 -4 0 0 95 0 14 13 0.0000 4 79 111 6094 1379 x\001 -4 0 0 95 0 14 13 0.0000 4 111 111 7991 2265 y\001 -4 0 0 95 0 14 13 0.0000 4 79 111 1819 1379 x\001 -4 0 0 95 0 14 13 0.0000 4 111 111 3716 2265 y\001 -4 0 0 95 0 12 12 0.0000 4 150 1470 6459 1335 x # add_node y\001 -4 0 0 95 0 12 12 0.0000 4 150 1470 2214 1365 x # add_node y\001 diff --git a/helm/DEVEL/pxp/pxp/doc/manual/src/pic/node_clone.fig b/helm/DEVEL/pxp/pxp/doc/manual/src/pic/node_clone.fig deleted file mode 100644 index ed1865f87..000000000 --- a/helm/DEVEL/pxp/pxp/doc/manual/src/pic/node_clone.fig +++ /dev/null @@ -1,111 +0,0 @@ -#FIG 3.2 -Portrait -Center -Metric -A4 -100.00 -Single --2 -1200 2 -1 3 0 1 0 7 95 0 15 4.000 1 0.0000 2700 1800 229 229 2700 1800 2925 1845 -1 3 0 1 0 7 95 0 15 4.000 1 0.0000 2025 2700 229 229 2025 2700 2250 2745 -1 3 0 1 0 7 95 0 15 4.000 1 0.0000 3375 2700 229 229 3375 2700 3600 2745 -1 3 0 1 0 7 95 0 15 4.000 1 0.0000 6345 1800 229 229 6345 1800 6570 1845 -1 3 0 1 0 7 95 0 15 4.000 1 0.0000 5670 2700 229 229 5670 2700 5895 2745 -1 3 0 1 0 7 95 0 15 4.000 1 0.0000 7020 2700 229 229 7020 2700 7245 2745 -1 3 0 1 0 7 95 0 10 4.000 1 0.0000 8325 1800 229 229 8325 1800 8550 1845 -1 3 0 1 0 7 95 0 10 4.000 1 0.0000 7875 2700 229 229 7875 2700 8100 2745 -1 3 0 1 0 7 95 0 10 4.000 1 0.0000 8775 2700 229 229 8775 2700 9000 2745 -1 3 0 1 0 7 95 0 10 4.000 1 0.0000 6345 2700 229 229 6345 2700 6570 2745 -1 3 0 1 0 7 95 0 10 4.000 1 0.0000 5895 3600 229 229 5895 3600 6120 3645 -1 3 0 1 0 7 95 0 10 4.000 1 0.0000 6795 3600 229 229 6795 3600 7020 3645 -1 3 0 1 0 7 95 0 10 4.000 1 0.0000 2700 2700 229 229 2700 2700 2925 2745 -1 3 0 1 0 7 95 0 10 4.000 1 0.0000 2250 3600 229 229 2250 3600 2475 3645 -1 3 0 1 0 7 95 0 10 4.000 1 0.0000 3150 3600 229 229 3150 3600 3375 3645 -2 1 0 5 0 7 95 0 -1 12.000 1 0 -1 0 0 2 - 4050 2610 4725 2610 -2 1 0 5 0 7 95 0 -1 12.000 1 0 -1 0 0 2 - 4050 2745 4725 2745 -2 1 0 5 0 7 95 0 -1 12.000 1 1 -1 0 0 3 - 4500 2385 4950 2655 4500 2970 -2 1 0 1 0 7 95 0 -1 4.000 0 0 -1 1 0 2 - 1 1 1.00 60.00 120.00 - 2490 1905 2025 2467 -2 1 0 1 0 7 95 0 -1 4.000 0 0 -1 1 0 2 - 1 1 1.00 60.00 120.00 - 2827 2002 3202 2542 -2 1 0 1 0 7 95 0 -1 4.000 0 0 -1 1 0 2 - 1 0 1.00 60.00 120.00 - 2115 2475 2535 1965 -2 1 0 1 0 7 95 0 -1 4.000 0 0 -1 1 0 2 - 1 0 1.00 60.00 120.00 - 3255 2505 2872 1957 -2 1 0 1 0 7 95 0 -1 4.000 0 0 -1 1 0 2 - 1 1 1.00 60.00 120.00 - 6135 1905 5670 2467 -2 1 0 1 0 7 95 0 -1 4.000 0 0 -1 1 0 2 - 1 1 1.00 60.00 120.00 - 6472 2002 6847 2542 -2 1 0 1 0 7 95 0 -1 4.000 0 0 -1 1 0 2 - 1 0 1.00 60.00 120.00 - 5760 2475 6180 1965 -2 1 0 1 0 7 95 0 -1 4.000 0 0 -1 1 0 2 - 1 0 1.00 60.00 120.00 - 6900 2505 6517 1957 -2 1 0 1 0 7 95 0 -1 4.000 0 0 -1 1 0 2 - 1 1 1.00 60.00 120.00 - 8160 1957 7860 2460 -2 1 0 1 0 7 95 0 -1 4.000 0 0 -1 1 0 2 - 1 1 1.00 60.00 120.00 - 8407 2032 8625 2520 -2 1 0 1 0 7 95 0 -1 4.000 0 0 -1 1 0 2 - 1 0 1.00 60.00 120.00 - 7942 2467 8212 2010 -2 1 0 1 0 7 95 0 -1 4.000 0 0 -1 1 0 2 - 1 0 1.00 60.00 120.00 - 8685 2475 8467 1987 -2 2 0 1 0 7 80 0 -1 4.000 0 0 -1 0 0 5 - 1575 1350 9225 1350 9225 4050 1575 4050 1575 1350 -2 1 0 1 0 7 95 0 -1 4.000 0 0 -1 1 0 2 - 1 0 1.00 60.00 120.00 - 6382 2460 6382 2032 -2 1 0 1 0 7 95 0 -1 4.000 0 0 -1 1 0 2 - 1 1 1.00 60.00 120.00 - 6307 2032 6307 2467 -2 1 0 1 0 7 95 0 -1 4.000 0 0 -1 1 0 2 - 1 1 1.00 60.00 120.00 - 6180 2857 5880 3360 -2 1 0 1 0 7 95 0 -1 4.000 0 0 -1 1 0 2 - 1 1 1.00 60.00 120.00 - 6427 2932 6645 3420 -2 1 0 1 0 7 95 0 -1 4.000 0 0 -1 1 0 2 - 1 0 1.00 60.00 120.00 - 5962 3367 6232 2910 -2 1 0 1 0 7 95 0 -1 4.000 0 0 -1 1 0 2 - 1 0 1.00 60.00 120.00 - 6705 3375 6487 2887 -2 1 0 1 0 7 95 0 -1 4.000 0 0 -1 1 0 2 - 1 0 1.00 60.00 120.00 - 2737 2460 2737 2032 -2 1 0 1 0 7 95 0 -1 4.000 0 0 -1 1 0 2 - 1 1 1.00 60.00 120.00 - 2662 2032 2662 2467 -2 1 0 1 0 7 95 0 -1 4.000 0 0 -1 1 0 2 - 1 1 1.00 60.00 120.00 - 2535 2857 2235 3360 -2 1 0 1 0 7 95 0 -1 4.000 0 0 -1 1 0 2 - 1 1 1.00 60.00 120.00 - 2782 2932 3000 3420 -2 1 0 1 0 7 95 0 -1 4.000 0 0 -1 1 0 2 - 1 0 1.00 60.00 120.00 - 2317 3367 2587 2910 -2 1 0 1 0 7 95 0 -1 4.000 0 0 -1 1 0 2 - 1 0 1.00 60.00 120.00 - 3060 3375 2842 2887 -4 0 0 80 0 14 12 0.0000 4 105 105 2655 1845 y\001 -4 0 0 80 0 14 12 0.0000 4 105 105 6300 1845 y\001 -4 0 0 80 0 14 12 0.0000 4 75 105 6285 2752 x\001 -4 0 0 80 0 14 12 0.0000 4 75 105 2640 2752 x\001 -4 0 0 80 0 12 12 0.0000 4 105 840 3690 2025 let x' =\001 -4 0 0 80 0 12 12 0.0000 4 150 1890 3690 2205 x # orphaned_clone\001 -4 0 0 80 0 14 12 0.0000 4 105 210 8235 1845 x'\001 diff --git a/helm/DEVEL/pxp/pxp/doc/manual/src/pic/node_delete.fig b/helm/DEVEL/pxp/pxp/doc/manual/src/pic/node_delete.fig deleted file mode 100644 index a9fc87eef..000000000 --- a/helm/DEVEL/pxp/pxp/doc/manual/src/pic/node_delete.fig +++ /dev/null @@ -1,96 +0,0 @@ -#FIG 3.2 -Portrait -Center -Metric -A4 -100.00 -Single --2 -1200 2 -6 2550 2092 2865 2407 -2 1 0 4 0 7 80 0 -1 0.000 1 1 -1 0 0 2 - 2595 2362 2820 2137 -2 1 0 4 0 7 80 0 -1 0.000 1 1 -1 0 0 2 - 2595 2137 2820 2362 --6 -6 1980 2430 3420 3870 -1 3 0 1 0 7 95 0 10 4.000 1 0.0000 2700 2700 229 229 2700 2700 2925 2745 -1 3 0 1 0 7 95 0 10 4.000 1 0.0000 2250 3600 229 229 2250 3600 2475 3645 -1 3 0 1 0 7 95 0 10 4.000 1 0.0000 3150 3600 229 229 3150 3600 3375 3645 -2 1 0 1 0 7 95 0 -1 4.000 0 0 -1 1 0 2 - 1 1 1.00 60.00 120.00 - 2535 2857 2235 3360 -2 1 0 1 0 7 95 0 -1 4.000 0 0 -1 1 0 2 - 1 1 1.00 60.00 120.00 - 2782 2932 3000 3420 -2 1 0 1 0 7 95 0 -1 4.000 0 0 -1 1 0 2 - 1 0 1.00 60.00 120.00 - 2317 3367 2587 2910 -2 1 0 1 0 7 95 0 -1 4.000 0 0 -1 1 0 2 - 1 0 1.00 60.00 120.00 - 3060 3375 2842 2887 --6 -1 3 0 1 0 7 95 0 15 4.000 1 0.0000 2700 1800 229 229 2700 1800 2925 1845 -1 3 0 1 0 7 95 0 15 4.000 1 0.0000 2025 2700 229 229 2025 2700 2250 2745 -1 3 0 1 0 7 95 0 15 4.000 1 0.0000 3375 2700 229 229 3375 2700 3600 2745 -1 3 0 1 0 7 95 0 15 4.000 1 0.0000 6345 1800 229 229 6345 1800 6570 1845 -1 3 0 1 0 7 95 0 15 4.000 1 0.0000 5670 2700 229 229 5670 2700 5895 2745 -1 3 0 1 0 7 95 0 15 4.000 1 0.0000 7020 2700 229 229 7020 2700 7245 2745 -1 3 0 1 0 7 95 0 10 4.000 1 0.0000 8325 1800 229 229 8325 1800 8550 1845 -1 3 0 1 0 7 95 0 10 4.000 1 0.0000 7875 2700 229 229 7875 2700 8100 2745 -1 3 0 1 0 7 95 0 10 4.000 1 0.0000 8775 2700 229 229 8775 2700 9000 2745 -2 1 0 1 0 7 95 0 -1 4.000 0 0 -1 1 0 2 - 1 0 1.00 60.00 120.00 - 2737 2460 2737 2032 -2 1 0 1 0 7 95 0 -1 4.000 0 0 -1 1 0 2 - 1 1 1.00 60.00 120.00 - 2662 2032 2662 2467 -2 1 0 5 0 7 95 0 -1 12.000 1 0 -1 0 0 2 - 4050 2610 4725 2610 -2 1 0 5 0 7 95 0 -1 12.000 1 0 -1 0 0 2 - 4050 2745 4725 2745 -2 1 0 5 0 7 95 0 -1 12.000 1 1 -1 0 0 3 - 4500 2385 4950 2655 4500 2970 -2 1 0 1 0 7 95 0 -1 4.000 0 0 -1 1 0 2 - 1 1 1.00 60.00 120.00 - 2490 1905 2025 2467 -2 1 0 1 0 7 95 0 -1 4.000 0 0 -1 1 0 2 - 1 1 1.00 60.00 120.00 - 2827 2002 3202 2542 -2 1 0 1 0 7 95 0 -1 4.000 0 0 -1 1 0 2 - 1 0 1.00 60.00 120.00 - 2115 2475 2535 1965 -2 1 0 1 0 7 95 0 -1 4.000 0 0 -1 1 0 2 - 1 0 1.00 60.00 120.00 - 3255 2505 2872 1957 -2 1 0 1 0 7 95 0 -1 4.000 0 0 -1 1 0 2 - 1 1 1.00 60.00 120.00 - 6135 1905 5670 2467 -2 1 0 1 0 7 95 0 -1 4.000 0 0 -1 1 0 2 - 1 1 1.00 60.00 120.00 - 6472 2002 6847 2542 -2 1 0 1 0 7 95 0 -1 4.000 0 0 -1 1 0 2 - 1 0 1.00 60.00 120.00 - 5760 2475 6180 1965 -2 1 0 1 0 7 95 0 -1 4.000 0 0 -1 1 0 2 - 1 0 1.00 60.00 120.00 - 6900 2505 6517 1957 -2 1 0 1 0 7 95 0 -1 4.000 0 0 -1 1 0 2 - 1 1 1.00 60.00 120.00 - 8160 1957 7860 2460 -2 1 0 1 0 7 95 0 -1 4.000 0 0 -1 1 0 2 - 1 1 1.00 60.00 120.00 - 8407 2032 8625 2520 -2 1 0 1 0 7 95 0 -1 4.000 0 0 -1 1 0 2 - 1 0 1.00 60.00 120.00 - 7942 2467 8212 2010 -2 1 0 1 0 7 95 0 -1 4.000 0 0 -1 1 0 2 - 1 0 1.00 60.00 120.00 - 8685 2475 8467 1987 -2 2 0 1 0 7 80 0 -1 4.000 0 0 -1 0 0 5 - 1575 1350 9225 1350 9225 4050 1575 4050 1575 1350 -4 0 0 80 0 14 12 0.0000 4 75 105 2640 2752 x\001 -4 0 0 95 0 12 12 0.0000 4 135 1050 3960 2250 x # delete\001 -4 0 0 80 0 14 12 0.0000 4 75 105 8280 1845 x\001 -4 0 0 80 0 14 12 0.0000 4 105 105 2655 1845 y\001 -4 0 0 80 0 14 12 0.0000 4 105 105 6300 1845 y\001 diff --git a/helm/DEVEL/pxp/pxp/doc/manual/src/pic/node_general.fig b/helm/DEVEL/pxp/pxp/doc/manual/src/pic/node_general.fig deleted file mode 100644 index 231e76da9..000000000 --- a/helm/DEVEL/pxp/pxp/doc/manual/src/pic/node_general.fig +++ /dev/null @@ -1,35 +0,0 @@ -#FIG 3.2 -Portrait -Center -Metric -A4 -100.00 -Single --2 -1200 2 -1 3 0 1 0 7 100 0 15 0.000 1 0.0000 2025 2025 229 229 2025 2025 2250 2070 -1 3 0 1 0 7 100 0 15 0.000 1 0.0000 1350 2025 225 225 1350 2025 1575 2025 -1 3 0 1 0 7 100 0 15 0.000 1 0.0000 2700 2025 225 225 2700 2025 2925 2025 -1 3 0 1 0 7 100 0 15 0.000 1 0.0000 2025 1125 225 225 2025 1125 2250 1125 -2 1 0 1 0 7 100 0 15 0.000 0 0 -1 1 0 2 - 1 0 1.00 60.00 120.00 - 1380 1800 1845 1275 -2 1 0 1 0 7 100 0 15 0.000 0 0 -1 1 0 2 - 1 1 1.00 60.00 120.00 - 1815 1207 1282 1815 -2 1 0 1 0 7 100 0 15 0.000 0 0 -1 1 0 2 - 1 0 1.00 60.00 120.00 - 2055 1792 2055 1350 -2 1 0 1 0 7 100 0 15 0.000 0 0 -1 1 0 2 - 1 1 1.00 60.00 120.00 - 1980 1350 1980 1807 -2 1 0 1 0 7 100 0 15 0.000 0 0 -1 1 0 2 - 1 1 1.00 60.00 120.00 - 2190 1297 2550 1867 -2 1 0 1 0 7 100 0 15 0.000 0 0 -1 1 0 2 - 1 0 1.00 60.00 120.00 - 2602 1807 2220 1237 -2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5 - 450 675 3150 675 3150 2475 450 2475 450 675 -4 0 0 100 0 12 10 0.0000 4 120 540 2377 1342 parent\001 -4 0 0 100 0 12 10 0.0000 4 105 810 645 1628 sub_nodes\001 diff --git a/helm/DEVEL/pxp/pxp/doc/manual/src/pic/node_term.fig b/helm/DEVEL/pxp/pxp/doc/manual/src/pic/node_term.fig deleted file mode 100644 index 54965fe63..000000000 --- a/helm/DEVEL/pxp/pxp/doc/manual/src/pic/node_term.fig +++ /dev/null @@ -1,63 +0,0 @@ -#FIG 3.2 -Portrait -Center -Metric -A4 -100.00 -Single --2 -1200 2 -6 1665 2700 2835 3150 -2 4 0 1 0 7 100 0 15 0.000 0 0 7 0 0 5 - 2835 3150 2835 2700 1665 2700 1665 3150 2835 3150 -4 0 0 80 0 18 12 0.0000 4 135 930 1815 3015 "Cherries"\001 --6 -1 3 0 1 0 7 100 0 15 0.000 1 0.0000 2250 1125 225 225 2250 1125 2475 1125 -1 3 0 1 0 7 100 0 15 0.000 1 0.0000 1575 2025 225 225 1575 2025 1800 2025 -1 3 0 1 0 7 100 0 15 0.000 1 0.0000 2925 2025 225 225 2925 2025 3150 2025 -1 3 0 1 0 7 100 0 15 0.000 1 0.0000 900 2925 242 242 900 2925 1125 3015 -2 4 0 1 0 7 100 0 15 0.000 0 0 7 0 0 5 - 1485 4275 1485 3825 315 3825 315 4275 1485 4275 -2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2 - 2085 1275 1582 1807 -2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2 - 2407 1297 2940 1800 -2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2 - 1417 2190 900 2692 -2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2 - 1740 2190 2257 2700 -2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2 - 892 3180 892 3825 -2 2 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 5 - 45 675 6525 675 6525 4950 45 4950 45 675 -3 3 0 1 0 7 100 0 -1 0.000 0 0 0 22 - 2115 3645 2250 3600 2520 3555 2745 3510 2925 3555 3150 3690 - 3375 3735 3600 3735 3825 3735 4140 3825 4140 4005 4005 4185 - 3735 4230 3420 4185 3150 4230 2835 4275 2520 4230 2340 4140 - 2115 4095 1980 4005 1980 3825 2025 3735 - -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 - -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 - -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -3 3 0 1 0 7 100 0 -1 0.000 0 0 0 17 - 3465 1170 3645 1080 4050 1035 4320 1035 4545 1080 4770 1170 - 5130 1215 5355 1350 5400 1530 5265 1665 4860 1710 4455 1710 - 4095 1665 3780 1620 3555 1575 3420 1485 3420 1305 - -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 - -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 - -1.000 -3 2 0 1 0 7 100 0 -1 0.000 0 0 0 5 - 2475 1215 2655 1350 2970 1440 3240 1395 3420 1260 - 0.000 -1.000 -1.000 -1.000 0.000 -3 2 0 1 0 7 100 0 -1 0.000 0 0 0 5 - 1125 3060 1215 3397 1410 3607 1687 3727 2025 3720 - 0.000 -1.000 -1.000 -1.000 0.000 -4 0 0 80 0 18 12 0.0000 4 180 1065 375 4125 "An orange"\001 -4 0 0 80 0 18 12 0.0000 4 90 315 750 2985 \001 -4 0 0 80 0 18 12 0.0000 4 135 315 1410 2085 \001 -4 0 0 80 0 18 12 0.0000 4 90 315 2790 2070 \001 -4 0 0 80 0 18 12 0.0000 4 90 315 2100 1200 \001 -4 0 0 100 0 16 12 0.0000 4 135 795 3600 1260 attributes:\001 -4 0 0 100 0 16 12 0.0000 4 180 1680 3600 1485 "att" -> Value "apple"\001 -4 0 0 100 0 16 12 0.0000 4 135 795 2250 3780 attributes:\001 -4 0 0 100 0 17 12 0.0000 4 180 5910 390 4725 An orangeCherries\001 -4 0 0 100 0 16 12 0.0000 4 180 1800 2250 4005 "att" -> Value "orange"\001 diff --git a/helm/DEVEL/pxp/pxp/doc/manual/src/readme.ent b/helm/DEVEL/pxp/pxp/doc/manual/src/readme.ent deleted file mode 100644 index e9fdfc35a..000000000 --- a/helm/DEVEL/pxp/pxp/doc/manual/src/readme.ent +++ /dev/null @@ -1,364 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/helm/DEVEL/pxp/pxp/doc/manual/src/yacc.mli.ent b/helm/DEVEL/pxp/pxp/doc/manual/src/yacc.mli.ent deleted file mode 100644 index 604918bd8..000000000 --- a/helm/DEVEL/pxp/pxp/doc/manual/src/yacc.mli.ent +++ /dev/null @@ -1,376 +0,0 @@ - diff --git a/helm/DEVEL/pxp/pxp/examples/Makefile b/helm/DEVEL/pxp/pxp/examples/Makefile deleted file mode 100644 index 934385757..000000000 --- a/helm/DEVEL/pxp/pxp/examples/Makefile +++ /dev/null @@ -1,22 +0,0 @@ -.PHONY: all -all: - -.PHONY: clean -clean: - -.PHONY: CLEAN -CLEAN: clean - $(MAKE) -C xmlforms CLEAN - $(MAKE) -C validate CLEAN - $(MAKE) -C readme CLEAN - $(MAKE) -C simple_transformation CLEAN - -.PHONY: distclean -distclean: clean - rm -f *~ - $(MAKE) -C xmlforms distclean - $(MAKE) -C validate distclean - $(MAKE) -C readme distclean - $(MAKE) -C simple_transformation distclean - - diff --git a/helm/DEVEL/pxp/pxp/examples/readme/.cvsignore b/helm/DEVEL/pxp/pxp/examples/readme/.cvsignore deleted file mode 100644 index 2395c1946..000000000 --- a/helm/DEVEL/pxp/pxp/examples/readme/.cvsignore +++ /dev/null @@ -1,10 +0,0 @@ -*.cmi -*.cmo -*.cma -*.cmx -*.o -*.a -*.cmxa -depend -depend.pkg - diff --git a/helm/DEVEL/pxp/pxp/examples/readme/Makefile b/helm/DEVEL/pxp/pxp/examples/readme/Makefile deleted file mode 100644 index df5f6ed0d..000000000 --- a/helm/DEVEL/pxp/pxp/examples/readme/Makefile +++ /dev/null @@ -1,34 +0,0 @@ -# make readme: make bytecode executable -# make readme.opt: make native executable -# make clean: remove intermediate files -# make CLEAN: remove intermediate files (recursively) -# make distclean: remove any superflous files -# make install -#---------------------------------------------------------------------- - -BIN = /usr/local/bin - -.PHONY: readme -readme: - $(MAKE) -f Makefile.code readme - -.PHONY: readme.opt -readme.opt: - $(MAKE) -f Makefile.code readme.opt - - -.PHONY: clean -clean: - rm -f *.cmi *.cmo *.cma *.cmx *.o *.a *.cmxa - -.PHONY: CLEAN -CLEAN: clean - -.PHONY: distclean -distclean: clean - rm -f *~ depend depend.pkg - rm -f readme readme.opt - -.PHONY: install -install: - cp readme $(BIN) diff --git a/helm/DEVEL/pxp/pxp/examples/readme/Makefile.code b/helm/DEVEL/pxp/pxp/examples/readme/Makefile.code deleted file mode 100644 index 0514ddf33..000000000 --- a/helm/DEVEL/pxp/pxp/examples/readme/Makefile.code +++ /dev/null @@ -1,57 +0,0 @@ -#---------------------------------------------------------------------- -# specific rules for this package: - -OBJECTS = to_html.cmo to_text.cmo -XOBJECTS = $(OBJECTS:.cmo=.cmx) -ARCHIVE = readme.cma -XARCHIVE = readme.cmxa -NAME = readme -REQUIRES = str pxp - -readme: $(ARCHIVE) main.cmo - ocamlfind ocamlc -o readme -custom -package "$(REQUIRES)" \ - -linkpkg $(ARCHIVE) main.cmo - -readme.opt: $(XARCHIVE) main.cmx - ocamlfind ocamlopt -o readme.opt -custom -package "$(REQUIRES)" \ - -linkpkg $(XARCHIVE) main.cmx - -$(ARCHIVE): $(OBJECTS) - $(OCAMLC) -a -o $(ARCHIVE) $(OBJECTS) - -$(XARCHIVE): $(XOBJECTS) - $(OCAMLOPT) -a -o $(XARCHIVE) $(XOBJECTS) - -#---------------------------------------------------------------------- -# general rules: - -OPTIONS = -OCAMLC = ocamlc -g $(OPTIONS) $(ROPTIONS) -OCAMLOPT = ocamlopt -p $(OPTIONS) $(ROPTIONS) -OCAMLDEP = ocamldep $(OPTIONS) -OCAMLFIND = ocamlfind - -depend: *.ml *.mli - $(OCAMLDEP) *.ml *.mli >depend - -depend.pkg: Makefile - $(OCAMLFIND) use -p ROPTIONS= $(REQUIRES) >depend.pkg - -.SUFFIXES: .cmo .cmi .cmx .ml .mli .mll .mly - -.ml.cmx: - $(OCAMLOPT) -c $< - -.ml.cmo: - $(OCAMLC) -c $< - -.mli.cmi: - $(OCAMLC) -c $< - -.mll.ml: - ocamllex $< - -*.mli: - -include depend -include depend.pkg diff --git a/helm/DEVEL/pxp/pxp/examples/readme/main.ml b/helm/DEVEL/pxp/pxp/examples/readme/main.ml deleted file mode 100644 index 4e3837aa9..000000000 --- a/helm/DEVEL/pxp/pxp/examples/readme/main.ml +++ /dev/null @@ -1,108 +0,0 @@ -(* $Id$ - * ---------------------------------------------------------------------- - * - *) - -open Pxp_types -open Pxp_document -open Pxp_yacc - - -let rec print_error e = - prerr_endline(string_of_exn e) -;; - - -let run f a = - try f a with - e -> print_error e -;; - - -let convert_to_html filename = - (* read in style definition *) - let document = - parse_document_entity - { default_config with encoding = `Enc_iso88591 } - (from_file filename) - To_html.tag_map - in - let root = document # root in - let store = new To_html.store in - root # extension # to_html store stdout -;; - - -let convert_to_text filename = - (* read in style definition *) - let document = - parse_document_entity - default_config - (from_file filename) - To_text.tag_map - in - let root = document # root in - let store = new To_text.store in - let box = new To_text.box 79 79 in - root # extension # to_box store box; - box # output 0 0 stdout -;; - - -let main() = - let want_html = ref false in - let want_text = ref false in - let filename = ref None in - Arg.parse - [ "-html", Arg.Set want_html, - " convert file to html"; - "-text", Arg.Set want_text, - " convert file to text"; - ] - (fun s -> - match !filename with - None -> filename := Some s - | Some _ -> - raise (Arg.Bad "Multiple arguments not allowed.")) - "usage: readme [ -text | -html ] input.xml >output"; - let fn = - match !filename with - None -> - prerr_endline "readme: no input"; - exit 1 - | Some s -> s - in - match !want_html, !want_text with - true, false -> - run convert_to_html fn - | false, true -> - run convert_to_text fn - | _ -> - prerr_endline ("readme: Please select exactly one output format") -;; - -main();; - -(* ====================================================================== - * History: - * - * $Log$ - * Revision 1.1 2000/11/17 09:57:31 lpadovan - * Initial revision - * - * Revision 1.5 2000/07/08 17:58:17 gerd - * Updated because of PXP API changes. - * - * Revision 1.4 2000/06/04 20:25:38 gerd - * Updates because of renamed PXP modules. - * - * Revision 1.3 2000/05/01 16:46:40 gerd - * Using the new error formatter. - * - * Revision 1.2 1999/08/23 16:54:19 gerd - * Minor changes. - * - * Revision 1.1 1999/08/22 22:29:32 gerd - * Initial revision. - * - *) diff --git a/helm/DEVEL/pxp/pxp/examples/readme/readme.dtd b/helm/DEVEL/pxp/pxp/examples/readme/readme.dtd deleted file mode 100644 index 8ff6a9f75..000000000 --- a/helm/DEVEL/pxp/pxp/examples/readme/readme.dtd +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/helm/DEVEL/pxp/pxp/examples/readme/to_html.ml b/helm/DEVEL/pxp/pxp/examples/readme/to_html.ml deleted file mode 100644 index f717b2259..000000000 --- a/helm/DEVEL/pxp/pxp/examples/readme/to_html.ml +++ /dev/null @@ -1,432 +0,0 @@ -(* $Id$ - * ---------------------------------------------------------------------- - * - *) - - -(*$ readme.code.header *) -open Pxp_types -open Pxp_document -(*$-*) - - -(*$ readme.code.footnote-printer *) -class type footnote_printer = - object - method footnote_to_html : store_type -> out_channel -> unit - end - -and store_type = - object - method alloc_footnote : footnote_printer -> int - method print_footnotes : out_channel -> unit - end -;; -(*$-*) - - -(*$ readme.code.store *) -class store = - object (self) - - val mutable footnotes = ( [] : (int * footnote_printer) list ) - val mutable next_footnote_number = 1 - - method alloc_footnote n = - let number = next_footnote_number in - next_footnote_number <- number+1; - footnotes <- footnotes @ [ number, n ]; - number - - method print_footnotes ch = - if footnotes <> [] then begin - output_string ch "
    \n"; - output_string ch "
    \n"; - List.iter - (fun (_,n) -> - n # footnote_to_html (self : #store_type :> store_type) ch) - footnotes; - output_string ch "
    \n"; - end - - end -;; -(*$-*) - - - -(*$ readme.code.escape-html *) -let escape_html s = - Str.global_substitute - (Str.regexp "<\\|>\\|&\\|\"") - (fun s -> - match Str.matched_string s with - "<" -> "<" - | ">" -> ">" - | "&" -> "&" - | "\"" -> """ - | _ -> assert false) - s -;; -(*$-*) - - -(*$ readme.code.shared *) -class virtual shared = - object (self) - - (* --- default_ext --- *) - - val mutable node = (None : shared node option) - - method clone = {< >} - method node = - match node with - None -> - assert false - | Some n -> n - method set_node n = - node <- Some n - - (* --- virtual --- *) - - method virtual to_html : store -> out_channel -> unit - - end -;; -(*$-*) - - -(*$ readme.code.only-data *) -class only_data = - object (self) - inherit shared - - method to_html store ch = - output_string ch (escape_html (self # node # data)) - end -;; -(*$-*) - - -(*$ readme.code.no-markup *) -class no_markup = - object (self) - inherit shared - - method to_html store ch = - List.iter - (fun n -> n # extension # to_html store ch) - (self # node # sub_nodes) - end -;; -(*$-*) - - -(*$ readme.code.readme *) -class readme = - object (self) - inherit shared - - method to_html store ch = - (* output header *) - output_string - ch ""; - output_string - ch "\n"; - let title = - match self # node # attribute "title" with - Value s -> s - | _ -> assert false - in - let html_header, _ = - try (self # node # dtd # par_entity "readme:html:header") - # replacement_text - with WF_error _ -> "", false in - let html_trailer, _ = - try (self # node # dtd # par_entity "readme:html:trailer") - # replacement_text - with WF_error _ -> "", false in - let html_bgcolor, _ = - try (self # node # dtd # par_entity "readme:html:bgcolor") - # replacement_text - with WF_error _ -> "white", false in - let html_textcolor, _ = - try (self # node # dtd # par_entity "readme:html:textcolor") - # replacement_text - with WF_error _ -> "", false in - let html_alinkcolor, _ = - try (self # node # dtd # par_entity "readme:html:alinkcolor") - # replacement_text - with WF_error _ -> "", false in - let html_vlinkcolor, _ = - try (self # node # dtd # par_entity "readme:html:vlinkcolor") - # replacement_text - with WF_error _ -> "", false in - let html_linkcolor, _ = - try (self # node # dtd # par_entity "readme:html:linkcolor") - # replacement_text - with WF_error _ -> "", false in - let html_background, _ = - try (self # node # dtd # par_entity "readme:html:background") - # replacement_text - with WF_error _ -> "", false in - - output_string ch "
    \n"; - output_string ch (escape_html title); - output_string ch "
    \n"; - output_string ch " - if value <> "" then - output_string ch (name ^ "=\"" ^ escape_html value ^ "\" ")) - [ "bgcolor", html_bgcolor; - "text", html_textcolor; - "link", html_linkcolor; - "alink", html_alinkcolor; - "vlink", html_vlinkcolor; - ]; - output_string ch ">\n"; - output_string ch html_header; - output_string ch "

    "; - output_string ch (escape_html title); - output_string ch "

    \n"; - (* process main content: *) - List.iter - (fun n -> n # extension # to_html store ch) - (self # node # sub_nodes); - (* now process footnotes *) - store # print_footnotes ch; - (* trailer *) - output_string ch html_trailer; - output_string ch "\n"; - - end -;; -(*$-*) - - -(*$ readme.code.section *) -class section the_tag = - object (self) - inherit shared - - val tag = the_tag - - method to_html store ch = - let sub_nodes = self # node # sub_nodes in - match sub_nodes with - title_node :: rest -> - output_string ch ("<" ^ tag ^ ">\n"); - title_node # extension # to_html store ch; - output_string ch ("\n"); - List.iter - (fun n -> n # extension # to_html store ch) - rest - | _ -> - assert false - end -;; - -class sect1 = section "h1";; -class sect2 = section "h3";; -class sect3 = section "h4";; -(*$-*) - - -(*$ readme.code.map-tag *) -class map_tag the_target_tag = - object (self) - inherit shared - - val target_tag = the_target_tag - - method to_html store ch = - output_string ch ("<" ^ target_tag ^ ">\n"); - List.iter - (fun n -> n # extension # to_html store ch) - (self # node # sub_nodes); - output_string ch ("\n"); - end -;; - -class p = map_tag "p";; -class em = map_tag "b";; -class ul = map_tag "ul";; -class li = map_tag "li";; -(*$-*) - - -(*$ readme.code.br *) -class br = - object (self) - inherit shared - - method to_html store ch = - output_string ch "
    \n"; - List.iter - (fun n -> n # extension # to_html store ch) - (self # node # sub_nodes); - end -;; -(*$-*) - - -(*$ readme.code.code *) -class code = - object (self) - inherit shared - - method to_html store ch = - let data = self # node # data in - (* convert tabs *) - let l = String.length data in - let rec preprocess i column = - (* this is very ineffective but comprehensive: *) - if i < l then - match data.[i] with - '\t' -> - let n = 8 - (column mod 8) in - String.make n ' ' ^ preprocess (i+1) (column + n) - | '\n' -> - "\n" ^ preprocess (i+1) 0 - | c -> - String.make 1 c ^ preprocess (i+1) (column + 1) - else - "" - in - output_string ch "

    ";
    -      output_string ch (escape_html (preprocess 0 0));
    -      output_string ch "

    "; - - end -;; -(*$-*) - - -(*$ readme.code.a *) -class a = - object (self) - inherit shared - - method to_html store ch = - output_string ch " escape_html v - | Valuelist _ -> assert false - | Implied_value -> - begin match self # node # attribute "readmeref" with - Value v -> escape_html v ^ ".html" - | Valuelist _ -> assert false - | Implied_value -> - "" - end - in - if href <> "" then - output_string ch ("href=\"" ^ href ^ "\""); - output_string ch ">"; - output_string ch (escape_html (self # node # data)); - output_string ch ""; - - end -;; -(*$-*) - - -(*$ readme.code.footnote *) -class footnote = - object (self) - inherit shared - - val mutable footnote_number = 0 - - method to_html store ch = - let number = - store # alloc_footnote (self : #shared :> footnote_printer) in - let foot_anchor = - "footnote" ^ string_of_int number in - let text_anchor = - "textnote" ^ string_of_int number in - footnote_number <- number; - output_string ch ( "[" ^ string_of_int number ^ - "]" ) - - method footnote_to_html store ch = - (* prerequisite: we are in a definition list
    ...
    *) - let foot_anchor = - "footnote" ^ string_of_int footnote_number in - let text_anchor = - "textnote" ^ string_of_int footnote_number in - output_string ch ("
    [" ^ string_of_int footnote_number ^ - "]
    \n
    "); - List.iter - (fun n -> n # extension # to_html store ch) - (self # node # sub_nodes); - output_string ch ("\n
    ") - - end -;; -(*$-*) - - -(**********************************************************************) - -(*$ readme.code.tag-map *) -open Pxp_yacc - -let tag_map = - make_spec_from_alist - ~data_exemplar:(new data_impl (new only_data)) - ~default_element_exemplar:(new element_impl (new no_markup)) - ~element_alist: - [ "readme", (new element_impl (new readme)); - "sect1", (new element_impl (new sect1)); - "sect2", (new element_impl (new sect2)); - "sect3", (new element_impl (new sect3)); - "title", (new element_impl (new no_markup)); - "p", (new element_impl (new p)); - "br", (new element_impl (new br)); - "code", (new element_impl (new code)); - "em", (new element_impl (new em)); - "ul", (new element_impl (new ul)); - "li", (new element_impl (new li)); - "footnote", (new element_impl (new footnote : #shared :> shared)); - "a", (new element_impl (new a)); - ] - () -;; -(*$-*) - - -(* ====================================================================== - * History: - * - * $Log$ - * Revision 1.1 2000/11/17 09:57:31 lpadovan - * Initial revision - * - * Revision 1.6 2000/08/22 14:34:25 gerd - * Using make_spec_from_alist instead of make_spec_from_mapping. - * - * Revision 1.5 2000/08/18 21:15:14 gerd - * Update because of PXP API change: par_entity raises WF_error - * instead of Validation error if the entity is not defined. - * Further minor updates. - * - * Revision 1.4 2000/07/08 17:58:17 gerd - * Updated because of PXP API changes. - * - * Revision 1.3 2000/06/04 20:25:38 gerd - * Updates because of renamed PXP modules. - * - * Revision 1.2 1999/09/12 20:09:32 gerd - * Added section marks. - * - * Revision 1.1 1999/08/22 22:29:32 gerd - * Initial revision. - * - * - *) diff --git a/helm/DEVEL/pxp/pxp/examples/readme/to_text.ml b/helm/DEVEL/pxp/pxp/examples/readme/to_text.ml deleted file mode 100644 index fc45f45cd..000000000 --- a/helm/DEVEL/pxp/pxp/examples/readme/to_text.ml +++ /dev/null @@ -1,599 +0,0 @@ -(* $Id$ - * ---------------------------------------------------------------------- - * - *) - -open Pxp_types -open Pxp_document - - -(**********************************************************************) -(* The box class represents formatted text *) -(**********************************************************************) - -class type formatted_text = - object - method output : int -> int -> out_channel -> unit - (* output initial_indent indent ch: - * 'initial_indent' is how far the first line should be indented; - * 'indent' how far the rest. 'ch' is the channel on which the lines - * are to be printed. - *) - - method multiline : bool - (* whether the box occupies multiple lines *) - - method width_of_last_line : int - (* returns the width of the last line *) - end -;; - - -type text = - Text of string - | Box of formatted_text -;; - - -let textwidth tl = - let rec compute tl r = - match tl with - [] -> r - | t :: tl' -> - begin match t with - Text s -> - compute tl' (r + String.length s) - | Box b -> - if b # multiline then - compute tl' (b # width_of_last_line) - else - compute tl' (r + b # width_of_last_line) - end - in - compute (List.rev tl) 0 -;; - - -class box the_initial_width the_width = - object (self) - - (* The 'initial_width' is the width that is available on the first - * line of output; the 'width' is the width that is available in the - * rest. - *) - - val initial_width = the_initial_width - val width = the_width - - (* state: *) - - val mutable space_added = false - val mutable linefeed_added = false - val mutable is_first_line = true - val mutable lines = [] - (* lines in reverse order (first line = last element) *) - val mutable current_line = [] - (* not member of 'lines'; again reverse order *) - val mutable current_indent = 0 - - method add_space = - if not space_added then begin - space_added <- true; - linefeed_added <- true; - current_line <- Text " " :: current_line - end - - method ignore_space = - space_added <- true; - linefeed_added <- true - - method add_linefeed = - if not linefeed_added then begin - linefeed_added <- true; - if not space_added then - current_line <- Text " " :: current_line - end - - method ignore_linefeed = - linefeed_added <- true - - method add_newline = - lines <- current_line :: lines; - current_line <- []; - space_added <- true; - linefeed_added <- true; - is_first_line <- false; - current_indent <- 0; - - method add_word s = - (* first try to add 's' to 'current_line' *) - let current_line' = Text s :: current_line in - let current_width = - if is_first_line then initial_width else width in - if textwidth current_line' + current_indent <= current_width then begin - (* ok, the line does not become too long *) - current_line <- current_line'; - space_added <- false; - linefeed_added <- false - end - else begin - (* The line would be too long. *) - lines <- current_line :: lines; - current_line <- [Text s]; - space_added <- false; - linefeed_added <- false; - is_first_line <- false; - current_indent <- 0; - end - - method add_box b = - current_line <- Box b :: current_line; - space_added <- false; - linefeed_added <- false; - - - method width_of_last_line = - textwidth current_line + current_indent - - - method available_width = - let current_width = - if is_first_line then initial_width else width in - current_width - textwidth current_line - current_indent - - - method multiline = - lines <> [] or - (List.exists - (function - Text _ -> false - | Box b -> b # multiline) - current_line) - - method output initial_indent indent ch = - let eff_lines = - List.rev - (current_line :: lines) in - let rec out_lines cur_indent ll = - match ll with - [] -> () - | l :: ll' -> - output_string ch (String.make cur_indent ' '); - List.iter - (function - Text s -> - output_string ch s - | Box b -> - b # output 0 indent ch - ) - (List.rev l); - if ll' <> [] then - output_string ch "\n"; - out_lines indent ll' - in - out_lines initial_indent eff_lines - end -;; - - -class listitem_box listmark indent totalwidth = - let initial_newline = String.length listmark >= indent in - object (self) - inherit box totalwidth (totalwidth - indent) as super - - val extra_indent = indent - - initializer - self # add_word listmark; - if initial_newline then - self # add_newline - else begin - current_line <- Text (String.make (indent - String.length listmark) ' ') - :: current_line; - space_added <- true; - linefeed_added <- true; - end - - - method output initial_indent indent ch = - super # output initial_indent (indent + extra_indent) ch - end -;; - - -(**********************************************************************) -(* Footnotes etc. *) -(**********************************************************************) - - -class type footnote_printer = - object - method footnote_to_box : store_type -> box -> unit - end - -and store_type = - object - method alloc_footnote : footnote_printer -> int - method print_footnotes : box -> unit - end -;; - - -class store = - object (self) - - val mutable footnotes = ( [] : (int * footnote_printer) list ) - val mutable next_footnote_number = 1 - - method alloc_footnote n = - let number = next_footnote_number in - next_footnote_number <- number+1; - footnotes <- footnotes @ [ number, n ]; - number - - method print_footnotes (b : box) = - if footnotes <> [] then begin - b # add_newline; - b # add_newline; - let w = b # available_width in - b # add_word (String.make (w/3) '-'); - b # add_newline; - b # add_newline; - List.iter - (fun (_,n) -> - n # footnote_to_box (self : #store_type :> store_type) b) - footnotes; - b # add_newline; - end - end -;; - - - -(**********************************************************************) -(* The extension objects *) -(**********************************************************************) - - -class virtual shared = - object (self) - - (* --- default_ext --- *) - - val mutable node = (None : shared node option) - - method clone = {< >} - method node = - match node with - None -> - assert false - | Some n -> n - method set_node n = - node <- Some n - - (* --- virtual --- *) - - method virtual to_box : store -> box -> unit - (* to_box store b: - * formats the element using box 'b' - *) - end -;; - - -class only_data = - object (self) - inherit shared - - val white_space_re = Str.regexp "[ \t]+\\|\n" - - method to_box store b = - let s = self # node # data in - let splitted = Str.full_split white_space_re s in - List.iter - (function - Str.Delim "\n" -> - b # add_linefeed - | Str.Delim _ -> - b # add_space - | Str.Text s -> - b # add_word s) - splitted - end -;; - - -class no_markup = - object (self) - inherit shared - - method to_box store b = - List.iter - (fun n -> n # extension # to_box store b) - (self # node # sub_nodes) - end -;; - - -class readme = - object (self) - inherit shared - - method to_box store b = - let title = - match self # node # attribute "title" with - Value s -> s - | _ -> assert false - in - let w = b # available_width in - let line = String.make (w-1) '*' in - b # add_word line; - b # add_newline; - b # add_word title; - b # add_newline; - b # add_word line; - b # add_newline; - b # add_newline; - (* process main content: *) - List.iter - (fun n -> n # extension # to_box store b) - (self # node # sub_nodes); - (* now process footnotes *) - store # print_footnotes b; - (* trailer *) - b # add_newline; - end -;; - - -class section the_tag = - object (self) - inherit shared - - val tag = the_tag - - method to_box store b = - let sub_nodes = self # node # sub_nodes in - match sub_nodes with - title_node :: rest -> - b # add_newline; - let w = b # available_width in - let line = String.make (w-1) tag in - b # add_word line; - b # add_newline; - b # add_word (title_node # data); - b # add_newline; - b # add_word line; - b # add_newline; - List.iter - (fun n -> - n # extension # to_box store b) - rest; - | _ -> - assert false - end -;; - -class sect1 = section '=';; -class sect2 = section '-';; -class sect3 = section ':';; - - -class p = - object (self) - inherit shared - - method to_box store b = - let within_list = - match self # node # parent # node_type with - T_element "li" -> true - | T_element _ -> false - | _ -> assert false - in - if not within_list then - b # add_newline; - let w = b # available_width in - let b' = new box w w in - b' # ignore_space; - List.iter - (fun n -> n # extension # to_box store b') - (self # node # sub_nodes); - b # add_box (b' :> formatted_text); - b # add_newline; - end -;; - - -class li = - object (self) - inherit shared - - method to_box store b = - b # add_newline; - let w = b # available_width in - let b' = new listitem_box "-" 3 w in - b' # ignore_space; - List.iter - (fun n -> n # extension # to_box store b') - (self # node # sub_nodes); - b # add_box (b' :> formatted_text); - end -;; - - -class code = - object (self) - inherit shared - - method to_box store b = - b # add_newline; - let w = b # available_width in - let b' = new box w w in - b' # ignore_space; - let data = self # node # data in - (* convert tabs *) - let l = String.length data in - let rec add s i column = - (* this is very ineffective but comprehensive: *) - if i < l then - match data.[i] with - '\t' -> - let n = 8 - (column mod 8) in - add (s ^ String.make n ' ') (i+1) (column + n) - | '\n' -> - b' # add_word s; - b' # add_newline; - add "" (i+1) 0 - | c -> - add (s ^ String.make 1 c) (i+1) (column + 1) - else - if s <> "" then begin - b' # add_word s; - b' # add_newline; - end - in - add "" 0 0; - b # add_box (b' :> formatted_text); - b # add_newline; - end -;; - - -class br = - object (self) - inherit shared - - method to_box store b = - b # add_newline; - end -;; - - -class footnote = - object (self) - inherit shared - - val mutable footnote_number = 0 - - method to_box store b = - let number = - store # alloc_footnote (self : #shared :> footnote_printer) in - footnote_number <- number; - b # add_space; - b # add_word ("[" ^ string_of_int number ^ "]"); - - method footnote_to_box store b = - let w = b # available_width in - let n = "[" ^ string_of_int footnote_number ^ "]" in - let b' = new listitem_box n 6 w in - b' # ignore_space; - List.iter - (fun n -> n # extension # to_box store b') - (self # node # sub_nodes); - b # add_box (b' :> formatted_text); - b # add_newline; - b # add_newline; - - end -;; - - -class a = - object (self) - inherit shared - - val mutable footnote_number = 0 - val mutable a_href = "" - - method to_box store b = - let href = - match self # node # attribute "href" with - Value v -> "see " ^ v - | Valuelist _ -> assert false - | Implied_value -> - begin match self # node # attribute "readmeref" with - Value v -> "see file " ^ v - | Valuelist _ -> assert false - | Implied_value -> - "" - end - in - a_href <- href; - List.iter - (fun n -> n # extension # to_box store b) - (self # node # sub_nodes); - if href <> "" then begin - let number = - store # alloc_footnote (self : #shared :> footnote_printer) in - footnote_number <- number; - b # add_space; - b # add_word ("[" ^ string_of_int number ^ "]"); - end - - method footnote_to_box store b = - if a_href <> "" then begin - let w = b # available_width in - let n = "[" ^ string_of_int footnote_number ^ "]" in - let b' = new listitem_box n 6 w in - b' # ignore_space; - b' # add_word a_href; - b # add_box (b' :> formatted_text); - b # add_newline; - b # add_newline; - end - end -;; - -(**********************************************************************) - -open Pxp_yacc - -let tag_map = - make_spec_from_alist - ~data_exemplar:(new data_impl (new only_data)) - ~default_element_exemplar:(new element_impl (new no_markup)) - ~element_alist: - [ "readme", (new element_impl (new readme)); - "sect1", (new element_impl (new sect1)); - "sect2", (new element_impl (new sect2)); - "sect3", (new element_impl (new sect3)); - "title", (new element_impl (new no_markup)); - "p", (new element_impl (new p)); - "br", (new element_impl (new br)); - "code", (new element_impl (new code)); - "em", (new element_impl (new no_markup)); - "ul", (new element_impl (new no_markup)); - "li", (new element_impl (new li)); - "footnote", (new element_impl (new footnote : #shared :> shared)); - "a", (new element_impl (new a : #shared :> shared)); - ] - () -;; - - - - -(* ====================================================================== - * History: - * - * $Log$ - * Revision 1.1 2000/11/17 09:57:31 lpadovan - * Initial revision - * - * Revision 1.5 2000/08/22 14:34:25 gerd - * Using make_spec_from_alist instead of make_spec_from_mapping. - * - * Revision 1.4 2000/08/18 21:15:25 gerd - * Minor updates because of PXP API changes. - * - * Revision 1.3 2000/07/08 17:58:17 gerd - * Updated because of PXP API changes. - * - * Revision 1.2 2000/06/04 20:25:38 gerd - * Updates because of renamed PXP modules. - * - * Revision 1.1 1999/08/22 22:29:32 gerd - * Initial revision. - * - * - *) diff --git a/helm/DEVEL/pxp/pxp/examples/simple_transformation/Makefile b/helm/DEVEL/pxp/pxp/examples/simple_transformation/Makefile deleted file mode 100644 index 27be18c30..000000000 --- a/helm/DEVEL/pxp/pxp/examples/simple_transformation/Makefile +++ /dev/null @@ -1,21 +0,0 @@ -all: print sort delcol - -print: print.ml - ocamlfind ocamlc -o print -package pxp -linkpkg -custom \ - -predicates pxp_without_utf8 print.ml - -sort: sort.ml - ocamlfind ocamlc -o sort -package pxp -linkpkg -custom \ - -predicates pxp_without_utf8 sort.ml - -delcol: delcol.ml - ocamlfind ocamlc -o delcol -package pxp -linkpkg -custom \ - -predicates pxp_without_utf8 delcol.ml - -clean: - rm -f *.cmo *.cma *.cmi *.cmxa *.a *.o - -distclean: clean - rm -f *~ print sort delcol - -CLEAN: clean diff --git a/helm/DEVEL/pxp/pxp/examples/simple_transformation/README b/helm/DEVEL/pxp/pxp/examples/simple_transformation/README deleted file mode 100644 index 5b9212862..000000000 --- a/helm/DEVEL/pxp/pxp/examples/simple_transformation/README +++ /dev/null @@ -1,17 +0,0 @@ -Usage: - sort -by phone - match n # node_type with - T_element name when name = col -> - raise Skip - | _ -> n # orphaned_flat_clone) - tree -;; - - -let main() = - let column = ref "" in - Arg.parse - [ "-col", Arg.String (fun s -> column := s), - " (last-name|first-name|phone)"; - ] - (fun _ -> raise (Arg.Bad "Bad usage")) - "usage: sort [ options ]"; - if !column = "" then ( - prerr_endline "Column not specified!"; - exit 1; - ); - if not(List.mem !column ["last-name"; "first-name"; "phone"]) then ( - prerr_endline ("Unknown column: " ^ !column); - exit 1 - ); - try - let dtd = parse_dtd_entity default_config (from_file "record.dtd") in - let tree = - parse_content_entity default_config (from_channel stdin) dtd default_spec - in - print_endline ""; - (delcol !column tree) # write (Out_channel stdout) `Enc_iso88591 - with - x -> - prerr_endline(string_of_exn x); - exit 1 -;; - - -main();; - -(* ====================================================================== - * History: - * - * $Log$ - * Revision 1.1 2000/11/17 09:57:32 lpadovan - * Initial revision - * - * Revision 1.2 2000/08/24 09:42:52 gerd - * Updated a comment. - * - * Revision 1.1 2000/08/24 09:39:59 gerd - * Initial revision. - * - * - *) diff --git a/helm/DEVEL/pxp/pxp/examples/simple_transformation/print.ml b/helm/DEVEL/pxp/pxp/examples/simple_transformation/print.ml deleted file mode 100644 index 56f5fb69b..000000000 --- a/helm/DEVEL/pxp/pxp/examples/simple_transformation/print.ml +++ /dev/null @@ -1,60 +0,0 @@ -(* $Id$ - * ---------------------------------------------------------------------- - * - *) - -(* Read a record-list structure and print it *) -open Pxp_types;; -open Pxp_document;; -open Pxp_yacc;; - -let print tree = - iter_tree - ~pre: - (fun n -> - match n # node_type with - T_element "last-name" -> - print_endline ("Last name: " ^ n # data) - | T_element "first-name" -> - print_endline ("First name: " ^ n # data) - | T_element "phone" -> - print_endline ("Telephone number: " ^ n # data) - | _ -> - ()) - ~post: - (fun n -> - match n # node_type with - T_element "record" -> - print_newline() - | _ -> - ()) - tree -;; - -let main() = - try - let dtd = parse_dtd_entity default_config (from_file "record.dtd") in - let tree = - parse_content_entity default_config (from_channel stdin) dtd default_spec in - print tree - with - x -> - prerr_endline(string_of_exn x); - exit 1 -;; - - -main();; - -(* ====================================================================== - * History: - * - * $Log$ - * Revision 1.1 2000/11/17 09:57:32 lpadovan - * Initial revision - * - * Revision 1.1 2000/08/22 21:57:43 gerd - * Initial revision. - * - * - *) diff --git a/helm/DEVEL/pxp/pxp/examples/simple_transformation/record.dtd b/helm/DEVEL/pxp/pxp/examples/simple_transformation/record.dtd deleted file mode 100644 index b054ccd29..000000000 --- a/helm/DEVEL/pxp/pxp/examples/simple_transformation/record.dtd +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/helm/DEVEL/pxp/pxp/examples/simple_transformation/sample.xml b/helm/DEVEL/pxp/pxp/examples/simple_transformation/sample.xml deleted file mode 100644 index 00d36b09b..000000000 --- a/helm/DEVEL/pxp/pxp/examples/simple_transformation/sample.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - Stolpmann - Gerd - 997705 - - - Smith - Jack - 12345 - - - Ützgür - xxx - 7654 - - diff --git a/helm/DEVEL/pxp/pxp/examples/simple_transformation/sort.ml b/helm/DEVEL/pxp/pxp/examples/simple_transformation/sort.ml deleted file mode 100644 index 297730f66..000000000 --- a/helm/DEVEL/pxp/pxp/examples/simple_transformation/sort.ml +++ /dev/null @@ -1,83 +0,0 @@ -(* $Id$ - * ---------------------------------------------------------------------- - * - *) - -(* Read a record-list, sort it, and print it as XML *) -open Pxp_types;; -open Pxp_document;; -open Pxp_yacc;; - -let sort by tree = - map_tree - ~pre: - (fun n -> n # orphaned_flat_clone) - ~post: - (fun n -> - match n # node_type with - T_element "record-list" -> - let l = n # sub_nodes in - let l' = List.sort - (fun a b -> - let a_string = - try (find_element by a) # data - with Not_found -> "" in - let b_string = - try (find_element by b) # data - with Not_found -> "" in - Pervasives.compare a_string b_string) - l in - n # set_nodes l'; - n - | _ -> - n) - tree -;; - - -let main() = - let criterion = ref "last-name" in - Arg.parse - [ "-by", Arg.String (fun s -> criterion := s), - " (last-name|first-name|phone)"; - ] - (fun _ -> raise (Arg.Bad "Bad usage")) - "usage: sort [ options ]"; - if not(List.mem !criterion ["last-name"; "first-name"; "phone"]) then ( - prerr_endline ("Unknown criterion: " ^ !criterion); - exit 1 - ); - try - let dtd = parse_dtd_entity default_config (from_file "record.dtd") in - let tree = - parse_content_entity default_config (from_channel stdin) dtd default_spec - in - print_endline ""; - (sort !criterion tree) # write (Out_channel stdout) `Enc_iso88591 - with - x -> - prerr_endline(string_of_exn x); - exit 1 -;; - - -main();; - -(* ====================================================================== - * History: - * - * $Log$ - * Revision 1.1 2000/11/17 09:57:32 lpadovan - * Initial revision - * - * Revision 1.3 2000/08/30 16:05:44 gerd - * Minor update - * - * Revision 1.2 2000/08/24 09:40:11 gerd - * Allow that columns are missing. - * - * Revision 1.1 2000/08/22 21:57:44 gerd - * Initial revision. - * - * - *) diff --git a/helm/DEVEL/pxp/pxp/examples/validate/.cvsignore b/helm/DEVEL/pxp/pxp/examples/validate/.cvsignore deleted file mode 100644 index e125622dd..000000000 --- a/helm/DEVEL/pxp/pxp/examples/validate/.cvsignore +++ /dev/null @@ -1,13 +0,0 @@ -*.cmi -*.cmo -*.cma -*.cmx -*.o -*.a -*.cmxa -*.new -*.mlf -*.ml0 -depend -depend.pkg - diff --git a/helm/DEVEL/pxp/pxp/examples/validate/Makefile b/helm/DEVEL/pxp/pxp/examples/validate/Makefile deleted file mode 100644 index 64b691887..000000000 --- a/helm/DEVEL/pxp/pxp/examples/validate/Makefile +++ /dev/null @@ -1,28 +0,0 @@ -# make validate: make bytecode executable -# make validate.opt: make native executable -# make clean: remove intermediate files (in this directory) -# make CLEAN: remove intermediate files (recursively) -# make distclean: remove any superflous files (recursively) -#---------------------------------------------------------------------- - -pxpvalidate: validate.ml - ocamlfind ocamlc -o pxpvalidate -package "pxp" -linkpkg validate.ml - -pxpvalidate.opt: validate.ml - ocamlfind ocamlopt -o pxpvalidate.opt -package "pxp" -linkpkg validate.ml - -#---------------------------------------------------------------------- -.PHONY: all -all: - -.PHONY: clean -clean: - rm -f *.cmi *.cmo *.cma *.cmx *.o *.a *.cmxa - -.PHONY: CLEAN -CLEAN: clean - -.PHONY: distclean -distclean: clean - rm -f *~ - rm -f pxpvalidate pxpvalidate.opt diff --git a/helm/DEVEL/pxp/pxp/examples/validate/validate.ml b/helm/DEVEL/pxp/pxp/examples/validate/validate.ml deleted file mode 100644 index 3bb83d2d1..000000000 --- a/helm/DEVEL/pxp/pxp/examples/validate/validate.ml +++ /dev/null @@ -1,126 +0,0 @@ -(* $Id$ - * ---------------------------------------------------------------------- - * - *) - - -open Pxp_document;; -open Pxp_yacc;; -open Pxp_types;; - -let error_happened = ref false;; - -let print_error e = - print_endline (string_of_exn e) -;; - -class warner = - object - method warn w = - print_endline ("WARNING: " ^ w) - end -;; - -let parse debug wf iso88591 filename = - try - (* Parse the document: *) - let parse_fn = - if wf then parse_wfdocument_entity - else - let index = new hash_index in - parse_document_entity - ?transform_dtd:None - ~id_index:(index :> 'ext index) - in - let doc = - parse_fn - { default_config with - debugging_mode = debug; - encoding = if iso88591 then `Enc_iso88591 else `Enc_utf8; - idref_pass = true; - warner = new warner - } - (from_file filename) - default_spec - in - () - with - e -> - (* Print error; remember that there was an error *) - error_happened := true; - print_error e -;; - - -let main() = - let debug = ref false in - let wf = ref false in - let iso88591 = ref false in - let files = ref [] in - Arg.parse - [ "-d", Arg.Set debug, - " turn debugging mode on"; - "-wf", Arg.Set wf, - " check only on well-formedness"; - "-iso-8859-1", Arg.Set iso88591, - " use ISO-8859-1 as internal encoding instead of UTF-8"; - ] - (fun x -> files := x :: !files) - " -usage: pxpvalidate [options] file ... - -- checks the validity of XML documents. See below for list of options. - -PXP - The XML parser for Objective Caml - -List of options:"; - files := List.rev !files; - List.iter (parse !debug !wf !iso88591) !files; -;; - - -main(); -if !error_happened then exit(1);; - -(* ====================================================================== - * History: - * - * $Log$ - * Revision 1.1 2000/11/17 09:57:31 lpadovan - * Initial revision - * - * Revision 1.10 2000/08/30 15:58:41 gerd - * Updated. - * - * Revision 1.9 2000/07/14 14:57:30 gerd - * Updated: warner - * - * Revision 1.8 2000/07/14 14:13:15 gerd - * Cosmetic changes. - * - * Revision 1.7 2000/07/14 14:11:06 gerd - * Updated because of changes of the PXP API. - * - * Revision 1.6 2000/07/08 21:53:00 gerd - * Updated because of PXP interface changes. - * - * Revision 1.5 2000/06/04 20:21:55 gerd - * Updated to new module names. - * - * Revision 1.4 2000/05/01 16:44:57 gerd - * Added check for ID uniqueness. - * Using new error formatter. - * - * Revision 1.3 1999/11/09 22:27:30 gerd - * The programs returns now an exit code of 1 if one of the - * XML files produces an error. - * - * Revision 1.2 1999/09/01 23:09:56 gerd - * Added the option -wf that switches to well-formedness checking - * instead of validation. - * - * Revision 1.1 1999/08/14 22:20:53 gerd - * Initial revision. - * - * - *) diff --git a/helm/DEVEL/pxp/pxp/examples/xmlforms/.cvsignore b/helm/DEVEL/pxp/pxp/examples/xmlforms/.cvsignore deleted file mode 100644 index e125622dd..000000000 --- a/helm/DEVEL/pxp/pxp/examples/xmlforms/.cvsignore +++ /dev/null @@ -1,13 +0,0 @@ -*.cmi -*.cmo -*.cma -*.cmx -*.o -*.a -*.cmxa -*.new -*.mlf -*.ml0 -depend -depend.pkg - diff --git a/helm/DEVEL/pxp/pxp/examples/xmlforms/Makefile b/helm/DEVEL/pxp/pxp/examples/xmlforms/Makefile deleted file mode 100644 index 5a0ba32b3..000000000 --- a/helm/DEVEL/pxp/pxp/examples/xmlforms/Makefile +++ /dev/null @@ -1,33 +0,0 @@ -# make xmlforms: make bytecode executable -# make xmlforms.opt: make native executable -# make clean: remove intermediate files -# make CLEAN: remove intermediate files (recursively) -# make distclean: remove any superflous files -# make release: cleanup, create archive, tag CVS module -# (for developers) -#---------------------------------------------------------------------- - -.PHONY: xmlforms -xmlforms: - $(MAKE) -f Makefile.code xmlforms - -.PHONY: xmlforms.opt -xmlforms.opt: - $(MAKE) -f Makefile.code xmlforms.opt - - -.PHONY: clean -clean: - rm -f *.cmi *.cmo *.cma *.cmx *.o *.a *.cmxa - -.PHONY: CLEAN -CLEAN: clean - $(MAKE) -C styles CLEAN - -.PHONY: distclean -distclean: clean - rm -f *~ depend depend.pkg - rm -f xmlforms xmlforms.opt - $(MAKE) -C styles distclean - - diff --git a/helm/DEVEL/pxp/pxp/examples/xmlforms/Makefile.code b/helm/DEVEL/pxp/pxp/examples/xmlforms/Makefile.code deleted file mode 100644 index f99674042..000000000 --- a/helm/DEVEL/pxp/pxp/examples/xmlforms/Makefile.code +++ /dev/null @@ -1,57 +0,0 @@ -#---------------------------------------------------------------------- -# specific rules for this package: - -OBJECTS = ds_context.cmo ds_style.cmo -XOBJECTS = $(OBJECTS:.cmo=.cmx) -ARCHIVE = xmlforms.cma -XARCHIVE = xmlforms.cmxa -NAME = xmlforms -REQUIRES = camltk str pxp - -xmlforms: $(ARCHIVE) ds_app.cmo - ocamlfind ocamlc -g -o xmlforms -custom -package "$(REQUIRES)" \ - -linkpkg $(ARCHIVE) ds_app.cmo - -xmlform.opt: $(XARCHIVE) ds_app.cmx - ocamlfind ocamlopt -o xmlforms.opt -custom -package "$(REQUIRES)" \ - -linkpkg $(XARCHIVE) ds_app.cmx - -$(ARCHIVE): $(OBJECTS) - $(OCAMLC) -a -o $(ARCHIVE) $(OBJECTS) - -$(XARCHIVE): $(XOBJECTS) - $(OCAMLOPT) -a -o $(XARCHIVE) $(XOBJECTS) - -#---------------------------------------------------------------------- -# general rules: - -OPTIONS = -OCAMLC = ocamlc -g $(OPTIONS) $(ROPTIONS) -OCAMLOPT = ocamlopt -p $(OPTIONS) $(ROPTIONS) -OCAMLDEP = ocamldep $(OPTIONS) -OCAMLFIND = ocamlfind - -depend: *.ml *.mli - $(OCAMLDEP) *.ml *.mli >depend - -depend.pkg: Makefile - $(OCAMLFIND) use -p ROPTIONS= $(REQUIRES) >depend.pkg - -.SUFFIXES: .cmo .cmi .cmx .ml .mli .mll .mly - -.ml.cmx: - $(OCAMLOPT) -c $< - -.ml.cmo: - $(OCAMLC) -c $< - -.mli.cmi: - $(OCAMLC) -c $< - -.mll.ml: - ocamllex $< - -*.mli: - -include depend -include depend.pkg diff --git a/helm/DEVEL/pxp/pxp/examples/xmlforms/README b/helm/DEVEL/pxp/pxp/examples/xmlforms/README deleted file mode 100644 index 806a4094a..000000000 --- a/helm/DEVEL/pxp/pxp/examples/xmlforms/README +++ /dev/null @@ -1,61 +0,0 @@ ------------------------------------------------------------------------------ -xmlforms ------------------------------------------------------------------------------ - -THE IDEA: - -This example uses XML for two purposes: - -- The "story" and layout of the application is specified in XML -- The data records are stored in XML - -An "application" is a set of "masks" or sequences of masks, and every mask -is thought as a visible page of the application, containing layout -elements and functional elements. Layout is specified in TeX-style using -hboxes, vboxes, hspaces, vspaces. Functional elements are "entries" (input -box for a string with one line), "textboxes" (input boxes with several -lines), and buttons. - -See styles/ds-style.dtd for the DTD of an application specification, and -the other xml files in this directory for examples. - -The entries and textboxes are bound to "slots", i.e. string variables. If -the application is started, the slots are read from a file, and if the -user presses a special "save" button, the slots are stored into this file. -The format of this data file is again XML; the simplistic DTD can be found -in styles/ds-object.dtd. - - -THE IMPLEMENTATION: - -There is currently a mapping of the specifications to ocamltk, done by a -program called "xmlforms". - - -HOW TO COMPILE: - -It is assumed that "findlib" is present on your system; see ABOUT-FINDLIB -in the toplevel directory. -The "markup" module must have been installed. - -- "make xmlforms" produces a bytecode executable "xmlforms" -- "make xmlforms.opt" produces a native executable "xmlforms.opt" - -Note that you cannot start the executables directly: - - -HOW TO START AN APPLICATION: - -As "xmlforms" is a generic executable, there is a simple mechanism to bind -it to a specific instance of an application. For example, in the "styles" -subdirectory there is the application specification "crazy-style.xml". To -start it, make a symlink called "crazy" referring to the "xmlforms" -binary, set the environment variable DATASHEETS to the directory where the -DTDs and XML files can be found, and start "crazy": - - ln -s ../xmlforms crazy - DATASHEETS=. crazy my-record.xml - -(If you do not set DATASHEETS, a default directory, normally -"/opt/xmlforms/lib" is used.) - diff --git a/helm/DEVEL/pxp/pxp/examples/xmlforms/ds_app.ml b/helm/DEVEL/pxp/pxp/examples/xmlforms/ds_app.ml deleted file mode 100644 index 55589ea59..000000000 --- a/helm/DEVEL/pxp/pxp/examples/xmlforms/ds_app.ml +++ /dev/null @@ -1,107 +0,0 @@ -(* $Id$ - * ---------------------------------------------------------------------- - * - *) - -open Tk -open Pxp_types -open Pxp_document -open Pxp_yacc -open Ds_context -open Ds_style - - -let installdir = - try Sys.getenv "DATASHEETS" with - Not_found -> "/opt/xmlforms/lib" -let style_sysid = ref "" -let object_dtd_sysid = Filename.concat installdir "ds-object.dtd" -let object_dtd_root = "record" - - -let rec print_error e = - print_endline (string_of_exn e) -;; - - -let run f arg1 arg2 = - try f arg1 arg2 with - e -> print_error e -;; - - -let edit filename cmd = - (* read in style definition *) - let index = new hash_index in - let style = - parse_document_entity - ~id_index:(index :> 'ext index) - default_config - (from_file !style_sysid) - tag_map - in - let root = style # root in - root # extension # prepare (index :> 'ext index); - - let obj_dtd = - parse_dtd_entity - default_config - (from_file object_dtd_sysid) - in - obj_dtd # set_root object_dtd_root; - - let topframe = openTk() in - let context = new context filename obj_dtd index root topframe in - - Toplevel.configure topframe [ Width (Centimeters 20.0); - Height (Centimeters 12.0); - ]; - Pack.propagate_set topframe false; - Wm.title_set topframe cmd; - context # goto (root # extension # start_node_name); - mainLoop() -;; - - -let main() = - let cmd = Filename.basename Sys.argv.(0) in - match Sys.argv with - [| _; filename |] -> - style_sysid := Filename.concat installdir (cmd ^ "-style.xml"); - run edit filename cmd - | _ -> - prerr_endline ("usage: " ^ cmd ^ " filename"); - exit(1) -;; - -main();; - -(* ====================================================================== - * History: - * - * $Log$ - * Revision 1.1 2000/11/17 09:57:32 lpadovan - * Initial revision - * - * Revision 1.6 2000/07/16 19:36:03 gerd - * Updated. - * - * Revision 1.5 2000/07/08 22:03:11 gerd - * Updates because of PXP interface changes. - * - * Revision 1.4 2000/06/04 20:29:19 gerd - * Updates because of renamed PXP modules. - * - * Revision 1.3 2000/05/01 16:48:45 gerd - * Using the new error formatter. - * - * Revision 1.2 1999/12/17 21:34:29 gerd - * The name of the root element is set to "record" in the - * object_dtd; otherwise the parser would not check that the root - * element is the right element. - * - * Revision 1.1 1999/08/21 19:11:05 gerd - * Initial revision. - * - * - *) diff --git a/helm/DEVEL/pxp/pxp/examples/xmlforms/ds_context.ml b/helm/DEVEL/pxp/pxp/examples/xmlforms/ds_context.ml deleted file mode 100644 index 453ca00f0..000000000 --- a/helm/DEVEL/pxp/pxp/examples/xmlforms/ds_context.ml +++ /dev/null @@ -1,238 +0,0 @@ -(* $Id$ - * ---------------------------------------------------------------------- - * - *) - -open Pxp_types -open Pxp_document -open Pxp_yacc - -let empty_record = new element_impl (Pxp_yacc.default_extension);; -let empty_dnode = new data_impl Pxp_yacc.default_extension;; - -class context the_filename the_obj_dtd the_index the_root the_topframe = - object (self) - val filename = the_filename - val obj_dtd = the_obj_dtd - val node_index = the_index - val mutable obj = empty_record # create_element - the_obj_dtd (T_element "record") [] - val root = the_root - val topframe = the_topframe - val mutable wdg = None - - val mutable history = ( [| |] : string array ) - val mutable index = 0 - - initializer - self # load_obj - - method obj = obj - - (* history *) - - method private leave_node = - begin match wdg with - None -> () - | Some w -> Tk.destroy w - end; - wdg <- None - - method private enter_node = - let where = history.(index) in - let n = - try node_index # find where with - Not_found -> failwith ("Mask not found: " ^ where) in - let w = n # extension # create_widget topframe self in - Tk.pack [w] (n # extension # pack_opts @ [ Tk.Expand true] ); - wdg <- Some w - - - - method previous = - if index > 0 then - index <- index - 1 - else - raise Not_found; - self # leave_node; - self # enter_node; - - - method next = - if index < Array.length history - 1 then - index <- index + 1 - else - raise Not_found; - self # leave_node; - self # enter_node; - - - method goto where = - assert (index <= Array.length history); - self # leave_node; - let persisting_history = - if index < Array.length history then - Array.sub history 0 (index+1) - else - history - in - history <- Array.concat [ persisting_history; [| where |] ]; - index <- Array.length history - 1; - self # enter_node; - - - method current = - if index < Array.length history then - history.(index) - else - raise Not_found - - - (* read, write the slots of object *) - - method search_slot name = - let rec search n = - match n # node_type with - T_element "string" -> - if n # required_string_attribute "name" = name then - n - else raise Not_found - | T_element _ -> - search_list (n # sub_nodes) - | T_data -> - raise Not_found - | _ -> - assert false - - and search_list l = - match l with - x :: l' -> - (try search x with Not_found -> search_list l') - | [] -> - raise Not_found - in - search obj - - method get_slot name = - let d = (self # search_slot name) # data in - d - - method set_slot name value = - let dtd = obj # dtd in - begin try - let n = self # search_slot name in - n # delete - with - Not_found -> () - end; - let e_string = empty_record # create_element dtd (T_element "string") - [ "name", name ] in - let dnode = empty_dnode # create_data dtd value in - e_string # add_node dnode; - e_string # local_validate(); - obj # add_node e_string; - assert(self # get_slot name = value) - - (* load, save object *) - - - method load_obj = - if Sys.file_exists filename then begin - obj <- parse_content_entity - default_config - (from_file filename) - obj_dtd - default_spec - end - else begin - print_string "New file!\n"; - flush stdout - end - - - method save_obj = - let fd = open_out filename in - try - - let re1 = Str.regexp "&" in - let re2 = Str.regexp "<" in - let re3 = Str.regexp "'" in - let re4 = Str.regexp ">" in - let protect s = - let s1 = Str.global_replace re1 "&" s in - let s2 = Str.global_replace re2 "<" s1 in - let s3 = Str.global_replace re3 "'" s2 in - let s4 = Str.global_replace re2 ">" s1 in - s3 - in - - let rec iterate (n : 'node extension node as 'node) = - match n # node_type with - T_data -> - output_string fd (protect (n # data)) - | T_element name -> - output_string fd ("<" ^ name ^ "\n"); - let anames = n # attribute_names in - List.iter - (fun aname -> - let aval = n # attribute aname in - let v = - match aval with - Value s -> - aname ^ "='" ^ protect s ^ "'\n" - | Valuelist l -> - aname ^ "='" ^ String.concat " " (List.map protect l) ^ "'\n" - | Implied_value -> - "" - in - output_string fd v) - anames; - output_string fd ">"; - List.iter iterate (n # sub_nodes); - output_string fd (""); - | _ -> - assert false - in - - output_string fd "\n"; - iterate obj; - close_out fd - with - e -> - close_out fd; - raise e - - end -;; - - -(* ====================================================================== - * History: - * - * $Log$ - * Revision 1.1 2000/11/17 09:57:31 lpadovan - * Initial revision - * - * Revision 1.7 2000/08/30 15:58:49 gerd - * Updated. - * - * Revision 1.6 2000/07/23 20:25:05 gerd - * Update because of API change: local_validate. - * - * Revision 1.5 2000/07/16 19:36:03 gerd - * Updated. - * - * Revision 1.4 2000/07/08 22:03:11 gerd - * Updates because of PXP interface changes. - * - * Revision 1.3 2000/06/04 20:29:19 gerd - * Updates because of renamed PXP modules. - * - * Revision 1.2 2000/05/30 00:09:08 gerd - * Minor fix. - * - * Revision 1.1 1999/08/21 19:11:05 gerd - * Initial revision. - * - * - *) diff --git a/helm/DEVEL/pxp/pxp/examples/xmlforms/ds_style.ml b/helm/DEVEL/pxp/pxp/examples/xmlforms/ds_style.ml deleted file mode 100644 index 08d0daa03..000000000 --- a/helm/DEVEL/pxp/pxp/examples/xmlforms/ds_style.ml +++ /dev/null @@ -1,778 +0,0 @@ -(* $Id$ - * ---------------------------------------------------------------------- - * - *) - -open Pxp_types -open Pxp_document -open Ds_context - - -let get_dimension s = - let re = Str.regexp "\\([0-9]*\\(.[0-9]+\\)?\\)[ \t\n]*\\(px\\|cm\\|in\\|mm\\|pt\\)" in - if Str.string_match re s 0 then begin - let number = Str.matched_group 1 s in - let dim = Str.matched_group 3 s in - match dim with - "px" -> Tk.Pixels (int_of_float (float_of_string number)) - | "cm" -> Tk.Centimeters (float_of_string number) - | "in" -> Tk.Inches (float_of_string number) - | "mm" -> Tk.Millimeters (float_of_string number) - | "pt" -> Tk.PrinterPoint (float_of_string number) - | _ -> assert false - end - else - failwith ("Bad dimension: " ^ s) -;; - - -class virtual shared = - object(self) - - (* --- default_ext --- *) - - val mutable node = (None : shared node option) - - method clone = {< >} - method node = - match node with - None -> - assert false - | Some n -> n - method set_node n = - node <- Some n - - (* --- shared attributes: color & font settings --- *) - - val mutable fgcolor = (None : string option) - val mutable bgcolor = (None : string option) - val mutable font = (None : string option) - - method fgcolor = - (* Get the foreground color: If there is a local value, return it; - * otherwise ask parent node - *) - match fgcolor with - Some c -> c - | None -> try self # node # parent # extension # fgcolor with - Not_found -> failwith "#fgcolor" - - method bgcolor = - (* Get the background color: If there is a local value, return it; - * otherwise ask parent node - *) - match bgcolor with - Some c -> c - | None -> try self # node # parent # extension # bgcolor with - Not_found -> failwith "#bgcolor" - - method font = - (* Get the current font: If there is a local value, return it; - * otherwise ask parent node - *) - match font with - Some c -> c - | None -> try self # node # parent # extension # font with - Not_found -> failwith "#font" - - method private init_color_and_font = - let get_color n = - try - match self # node # attribute n with - Value v -> Some v - | Implied_value -> None - | _ -> assert false - with Not_found -> None in - fgcolor <- get_color "fgcolor"; - bgcolor <- get_color "bgcolor"; - font <- get_color "font"; (* sic! *) - - - method private bg_color_opt = - [ Tk.Background (Tk.NamedColor (self # bgcolor)) ] - - method private fg_color_opt = - [ Tk.Foreground (Tk.NamedColor (self # fgcolor)) ] - - method private font_opt = - [ Tk.Font (self # font) ] - - (* --- virtual --- *) - - method virtual prepare : shared Pxp_yacc.index -> unit - method virtual create_widget : Widget.widget -> context -> Widget.widget - - method pack_opts = ( [] : Tk.options list ) - method xstretchable = false - method ystretchable = false - - method accept (c:context) = () - - method private get_mask = - (* find parent which is a mask *) - let rec search n = - match n # node_type with - T_element "mask" -> - n # extension - | T_element _ -> - search (n # parent) - | _ -> - assert false - in - search (self # node) - - - method private accept_mask (c:context) = - let rec iterate n = - n # extension # accept c; - List.iter iterate (n # sub_nodes) - in - iterate (self # get_mask # node) - - - method start_node_name = - (failwith "#start_node_name" : string) - - (* --- debug --- *) - - method private name = - let nt = self # node # node_type in - match nt with - T_element n -> n - | T_data -> "#PCDATA" - | _ -> assert false - - end -;; - - -class default = - object (self) - inherit shared - - method prepare idx = - self # init_color_and_font - - method create_widget w c = - failwith "default # create_widget" - end -;; - - -let dummy_node = new element_impl (new default);; - -class application = - object (self) - inherit shared - - val mutable start_node = dummy_node - - method prepare idx = - (* prepare this node *) - self # init_color_and_font; - if fgcolor = None then fgcolor <- Some "black"; - if bgcolor = None then bgcolor <- Some "white"; - if font = None then font <- Some "fixed"; - let start = - match self # node # attribute "start" with - Value v -> v - | _ -> assert false in - start_node <- (try idx # find start with - Not_found -> failwith "Start node not found"); - (* iterate over the subtree *) - let rec iterate n = - n # extension # prepare idx; - List.iter iterate (n # sub_nodes) - in - List.iter iterate (self # node # sub_nodes) - - - method start_node_name = - match self # node # attribute "start" with - Value v -> v - | _ -> assert false - - method create_widget w c = - start_node # extension # create_widget w c - - method pack_opts = - start_node # extension # pack_opts - end -;; - - -class sequence = - object (self) - inherit shared - - method prepare idx = - self # init_color_and_font; - - method create_widget w c = - let node = List.hd (self # node # sub_nodes) in - node # extension # create_widget w c - - method pack_opts = - let node = List.hd (self # node # sub_nodes) in - node # extension # pack_opts - end -;; - - -class vbox = - object (self) - inherit shared - - val mutable att_halign = "left" - - method prepare idx = - self # init_color_and_font; - match self # node # attribute "halign" with - Value v -> att_halign <- v - | _ -> assert false - - method create_widget w c = - let f = Frame.create w (self # bg_color_opt) in - let nodes = self # node # sub_nodes in - let options = - match att_halign with - "left" -> [ Tk.Anchor Tk.W ] - | "right" -> [ Tk.Anchor Tk.E ] - | "center" -> [ Tk.Anchor Tk.Center ] - | _ -> assert false - in - List.iter - (fun n -> - let opts = n # extension # pack_opts in - let wdg = n # extension # create_widget f c in - Tk.pack [wdg] (options @ opts); - ) - nodes; - f - - method pack_opts = - match self # xstretchable, self # ystretchable with - true, false -> [ Tk.Fill Tk.Fill_X; (* Tk.Expand true *) ] - | false, true -> [ Tk.Fill Tk.Fill_Y; (* Tk.Expand true *) ] - | true, true -> [ Tk.Fill Tk.Fill_Both; (* Tk.Expand true *) ] - | false, false -> [] - - method xstretchable = - let nodes = self # node # sub_nodes in - List.exists (fun n -> n # extension # xstretchable) nodes - - method ystretchable = - let nodes = self # node # sub_nodes in - List.exists (fun n -> n # extension # ystretchable) nodes - - end - -;; - - -class mask = - object (self) - - inherit vbox - - method prepare idx = - self # init_color_and_font; - att_halign <- "left" - end -;; - - -class hbox = - object (self) - inherit shared - - val mutable att_width = None - val mutable att_halign = "left" - val mutable att_valign = "top" - - method prepare idx = - self # init_color_and_font; - begin match self # node # attribute "halign" with - Value v -> att_halign <- v - | _ -> assert false - end; - begin match self # node # attribute "valign" with - Value v -> att_valign <- v - | _ -> assert false - end; - begin match self # node # attribute "width" with - Value v -> att_width <- Some (get_dimension v) - | Implied_value -> att_width <- None - | _ -> assert false - end - - method create_widget w c = - let f1 = Frame.create w (self # bg_color_opt) in - let f_extra = - match att_width with - None -> [] - | Some wd -> - [ Canvas.create f1 - ( [ Tk.Width wd; Tk.Height (Tk.Pixels 0); - Tk.Relief Tk.Flat; - Tk.HighlightThickness (Tk.Pixels 0); - ] @ - self # bg_color_opt ) ] - in - let f2 = Frame.create f1 (self # bg_color_opt) in - let nodes = self # node # sub_nodes in - - let outer_pack_opts = - match att_halign with - "left" -> [ Tk.Anchor Tk.W ] - | "right" -> [ Tk.Anchor Tk.E ] - | "center" -> [ Tk.Anchor Tk.Center ] - | _ -> assert false - in - let inner_pack_opts = - match att_valign with - "top" -> [ Tk.Anchor Tk.N ] - | "bottom" -> [ Tk.Anchor Tk.S ] - | "center" -> [ Tk.Anchor Tk.Center ] - | _ -> assert false - in - List.iter - (fun n -> - let opts = n # extension # pack_opts in - let wdg = n # extension # create_widget f2 c in - Tk.pack [wdg] (inner_pack_opts @ [ Tk.Side Tk.Side_Left ] @ opts); - ) - nodes; - let extra_opts = self # pack_opts in - Tk.pack (f_extra @ [f2]) (outer_pack_opts @ extra_opts); - f1 - - method pack_opts = - match self # xstretchable, self # ystretchable with - true, false -> [ Tk.Fill Tk.Fill_X; (* Tk.Expand true *) ] - | false, true -> [ Tk.Fill Tk.Fill_Y; (* Tk.Expand true *) ] - | true, true -> [ Tk.Fill Tk.Fill_Both; (* Tk.Expand true *) ] - | false, false -> [] - - method xstretchable = - let nodes = self # node # sub_nodes in - List.exists (fun n -> n # extension # xstretchable) nodes - - method ystretchable = - let nodes = self # node # sub_nodes in - List.exists (fun n -> n # extension # ystretchable) nodes - - end -;; - -class vspace = - object (self) - inherit shared - - val mutable att_height = Tk.Pixels 0 - val mutable att_fill = false - - method prepare idx = - self # init_color_and_font; - begin match self # node # attribute "height" with - Value v -> att_height <- get_dimension v - | _ -> assert false - end; - begin match self # node # attribute "fill" with - Value "yes" -> att_fill <- true - | Value "no" -> att_fill <- false - | _ -> assert false - end - - - method create_widget w c = - let f = Frame.create w ( self # bg_color_opt ) in - let strut = - Canvas.create f - ( [ Tk.Height att_height; Tk.Width (Tk.Pixels 0); - Tk.Relief Tk.Flat; - Tk.HighlightThickness (Tk.Pixels 0); - ] @ - self # bg_color_opt ) in - if att_fill then - Tk.pack [strut] [Tk.Fill Tk.Fill_Y; Tk.Expand true] - else - Tk.pack [strut] []; - f - - method pack_opts = - if att_fill then [ Tk.Fill Tk.Fill_Y; Tk.Expand true ] else [] - - method ystretchable = att_fill - end -;; - -class hspace = - object (self) - inherit shared - - - val mutable att_width = Tk.Pixels 0 - val mutable att_fill = false - - method prepare idx = - self # init_color_and_font; - begin match self # node # attribute "width" with - Value v -> att_width <- get_dimension v - | _ -> assert false - end; - begin match self # node # attribute "fill" with - Value "yes" -> att_fill <- true - | Value "no" -> att_fill <- false - | _ -> assert false - end - - - method create_widget w c = - let f = Frame.create w ( self # bg_color_opt ) in - let strut = - Canvas.create f - ( [ Tk.Width att_width; Tk.Height (Tk.Pixels 0); - Tk.Relief Tk.Flat; - Tk.HighlightThickness (Tk.Pixels 0); - ] @ - self # bg_color_opt ) in - if att_fill then - Tk.pack [strut] [Tk.Fill Tk.Fill_X; Tk.Expand true] - else - Tk.pack [strut] []; - f - - method pack_opts = - if att_fill then [ Tk.Fill Tk.Fill_X; Tk.Expand true ] else [] - - method xstretchable = att_fill - end -;; - -class label = - object (self) - inherit shared - - val mutable att_textwidth = (-1) - val mutable att_halign = "left" - - method prepare idx = - self # init_color_and_font; - att_textwidth <- (match self # node # attribute "textwidth" with - Value v -> - let w = try int_of_string v - with _ -> failwith ("Not an integer: " ^ v) in - w - | Implied_value -> - (-1) - | _ -> assert false); - att_halign <- (match self # node # attribute "halign" with - Value v -> v - | _ -> assert false); - - - method create_widget w c = - let opts_textwidth = if att_textwidth < 0 then [] else - [ Tk.TextWidth att_textwidth ] in - let opts_halign = - match att_halign with - "left" -> [ Tk.Anchor Tk.W ] - | "right" -> [ Tk.Anchor Tk.E ] - | "center" -> [ Tk.Anchor Tk.Center ] - | _ -> assert false - in - let opts_content = - [ Tk.Text (self # node # data) ] in - let label = Label.create w (opts_textwidth @ opts_halign @ - opts_content @ self # bg_color_opt @ - self # fg_color_opt @ self # font_opt) in - label - - end -;; - -class entry = - object (self) - inherit shared - - val mutable tv = lazy (Textvariable.create()) - val mutable att_textwidth = (-1) - val mutable att_slot = "" - - method prepare idx = - self # init_color_and_font; - tv <- lazy (Textvariable.create()); - att_textwidth <- (match self # node # attribute "textwidth" with - Value v -> - let w = try int_of_string v - with _ -> failwith ("Not an integer: " ^ v) in - w - | Implied_value -> - (-1) - | _ -> assert false); - att_slot <- (match self # node # attribute "slot" with - Value v -> v - | _ -> assert false); - - method create_widget w c = - let opts_textwidth = if att_textwidth < 0 then [] else - [ Tk.TextWidth att_textwidth ] in - let e = Entry.create w ( [ Tk.TextVariable (Lazy.force tv) ] @ - self # fg_color_opt @ - self # bg_color_opt @ - self # font_opt @ - opts_textwidth - ) in - let s = - try c # get_slot att_slot with - Not_found -> self # node # data in - Textvariable.set (Lazy.force tv) s; - e - - method accept c = - c # set_slot att_slot (Textvariable.get (Lazy.force tv)) - - end -;; - -class textbox = - object (self) - inherit shared - - val mutable att_textwidth = (-1) - val mutable att_textheight = (-1) - val mutable att_slot = "" - val mutable last_widget = None - - method prepare idx = - self # init_color_and_font; - att_textwidth <- (match self # node # attribute "textwidth" with - Value v -> - let w = try int_of_string v - with _ -> failwith ("Not an integer: " ^ v) in - w - | Implied_value -> - (-1) - | _ -> assert false); - att_textheight <- (match self # node # attribute "textheight" with - Value v -> - let w = try int_of_string v - with _ -> failwith ("Not an integer: " ^ v) in - w - | Implied_value -> - (-1) - | _ -> assert false); - att_slot <- (match self # node # attribute "slot" with - Value v -> v - | Implied_value -> "" - | _ -> assert false); - - - method create_widget w c = - let opts_textwidth = if att_textwidth < 0 then [] else - [ Tk.TextWidth att_textwidth ] in - let opts_textheight = if att_textheight < 0 then [] else - [ Tk.TextHeight att_textheight ] in - let f = Frame.create w (self # bg_color_opt) in - let vscrbar = Scrollbar.create f [ Tk.Orient Tk.Vertical ] in - let e = Text.create f ( [ ] @ - self # fg_color_opt @ - self # bg_color_opt @ - self # font_opt @ - opts_textwidth @ opts_textheight - ) in - last_widget <- Some e; - Scrollbar.configure vscrbar [ Tk.ScrollCommand - (fun s -> Text.yview e s); - Tk.Width (Tk.Pixels 9) ]; - Text.configure e [ Tk.YScrollCommand - (fun a b -> Scrollbar.set vscrbar a b) ]; - let s = - if att_slot <> "" then - try c # get_slot att_slot with - Not_found -> self # node # data - else - self # node # data - in - (* Text.insert appends always a newline to the last line; so strip - * an existing newline first - *) - let s' = - if s <> "" & s.[String.length s - 1] = '\n' then - String.sub s 0 (String.length s - 1) - else - s in - Text.insert e (Tk.TextIndex(Tk.End,[])) s' []; - if att_slot = "" then - Text.configure e [ Tk.State Tk.Disabled ]; - Tk.pack [e] [ Tk.Side Tk.Side_Left ]; - Tk.pack [vscrbar] [ Tk.Side Tk.Side_Left; Tk.Fill Tk.Fill_Y ]; - f - - method accept c = - if att_slot <> "" then - match last_widget with - None -> () - | Some w -> - let s = - Text.get - w - (Tk.TextIndex(Tk.LineChar(1,0),[])) - (Tk.TextIndex(Tk.End,[])) in - c # set_slot att_slot s - - end -;; - -class button = - object (self) - inherit shared - - val mutable att_label = "" - val mutable att_action = "" - val mutable att_goto = "" - - method prepare idx = - self # init_color_and_font; - att_label <- (match self # node # attribute "label" with - Value v -> v - | _ -> assert false); - att_action <- (match self # node # attribute "action" with - Value v -> v - | _ -> assert false); - att_goto <- (match self # node # attribute "goto" with - Value v -> v - | Implied_value -> "" - | _ -> assert false); - if att_action = "goto" then begin - try let _ = idx # find att_goto in () with - Not_found -> failwith ("Target `" ^ att_goto ^ "' not found") - end; - if att_action = "list-prev" or att_action = "list-next" then begin - let m = self # get_mask in - if m # node # parent # node_type <> T_element "sequence" then - failwith ("action " ^ att_action ^ " must not be used out of "); - end; - - - method create_widget w c = - let cmd () = - self # accept_mask c; - match att_action with - "goto" -> - c # goto att_goto - | "save" -> - c # save_obj - | "exit" -> - Protocol.closeTk() - | "save-exit" -> - c # save_obj; - Protocol.closeTk() - | "list-prev" -> - let m = self # get_mask # node in - let s = m # parent in - let rec search l = - match l with - x :: y :: l' -> - if y == m then - match x # attribute "name" with - Value s -> c # goto s - | _ -> assert false - else - search (y :: l') - | _ -> () - in - search (s # sub_nodes) - | "list-next" -> - let m = self # get_mask # node in - let s = m # parent in - let rec search l = - match l with - x :: y :: l' -> - if x == m then - match y # attribute "name" with - Value s -> c # goto s - | _ -> assert false - else - search (y :: l') - | _ -> () - in - search (s # sub_nodes) - | "hist-prev" -> - (try c # previous with Not_found -> ()) - | "hist-next" -> - (try c # next with Not_found -> ()) - | _ -> () - in - let b = Button.create w ( [ Tk.Text att_label; Tk.Command cmd ] @ - self # fg_color_opt @ - self # bg_color_opt @ - self # font_opt ) in - b - - - end -;; - - -(**********************************************************************) - -open Pxp_yacc - -let tag_map = - make_spec_from_mapping - ~data_exemplar:(new data_impl (new default)) - ~default_element_exemplar:(new element_impl (new default)) - ~element_mapping: - (let m = Hashtbl.create 50 in - Hashtbl.add m "application" - (new element_impl (new application)); - Hashtbl.add m "sequence" - (new element_impl (new sequence)); - Hashtbl.add m "mask" - (new element_impl (new mask)); - Hashtbl.add m "vbox" - (new element_impl (new vbox)); - Hashtbl.add m "hbox" - (new element_impl (new hbox)); - Hashtbl.add m "vspace" - (new element_impl (new vspace)); - Hashtbl.add m "hspace" - (new element_impl (new hspace)); - Hashtbl.add m "label" - (new element_impl (new label)); - Hashtbl.add m "entry" - (new element_impl (new entry)); - Hashtbl.add m "textbox" - (new element_impl (new textbox)); - Hashtbl.add m "button" - (new element_impl (new button)); - m) - () -;; - -(* ====================================================================== - * History: - * - * $Log$ - * Revision 1.1 2000/11/17 09:57:31 lpadovan - * Initial revision - * - * Revision 1.5 2000/08/30 15:58:49 gerd - * Updated. - * - * Revision 1.4 2000/07/16 19:36:03 gerd - * Updated. - * - * Revision 1.3 2000/07/08 22:03:11 gerd - * Updates because of PXP interface changes. - * - * Revision 1.2 2000/06/04 20:29:19 gerd - * Updates because of renamed PXP modules. - * - * Revision 1.1 1999/08/21 19:11:05 gerd - * Initial revision. - * - * - *) diff --git a/helm/DEVEL/pxp/pxp/examples/xmlforms/styles/Makefile b/helm/DEVEL/pxp/pxp/examples/xmlforms/styles/Makefile deleted file mode 100644 index c0068a59d..000000000 --- a/helm/DEVEL/pxp/pxp/examples/xmlforms/styles/Makefile +++ /dev/null @@ -1,16 +0,0 @@ -.PHONY: all -all: - -.PHONY: clean -clean: - -.PHONY: CLEAN -CLEAN: clean - -.PHONY: distclean -distclean: clean - rm -f *~ - -.PHONY: symlinks -symlinks: - for x in *-style.xml; do ln -s ../xmlforms $${x%-style.xml} || true; done diff --git a/helm/DEVEL/pxp/pxp/examples/xmlforms/styles/address-style.xml b/helm/DEVEL/pxp/pxp/examples/xmlforms/styles/address-style.xml deleted file mode 100644 index d3af5daa0..000000000 --- a/helm/DEVEL/pxp/pxp/examples/xmlforms/styles/address-style.xml +++ /dev/null @@ -1,361 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - '> - - - - - - - - - - - - - '> - - - - - - - - - - - - - '> - - - - - - - - - - - -

    |RDNIe6PlJ7Mbcgt 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/mli - ocamlc -i -c tmp/pxp_entity.ml >>tmp/mli - mv tmp/mli tmp/pxp_entity.mli - -.PHONY: clean -clean: - rm -f *.cmi *.cmo *.cma *.cmx *.o *.a *.cmxa *.new *.old - rm -f pxp_yacc.ml - touch lexers/objects_iso88591 lexers/objects_utf8 lexers/depend - $(MAKE) -C lexers clean - $(MAKE) -C compatibility clean - -.PHONY: CLEAN -CLEAN: clean - $(MAKE) -C doc CLEAN - $(MAKE) -C examples CLEAN - $(MAKE) -C rtests CLEAN - $(MAKE) -C m2parsergen CLEAN - touch tools/ucs2_to_utf8/depend - $(MAKE) -C tools/ucs2_to_utf8 clean - -.PHONY: distclean -distclean: clean - rm -f *~ depend depend.pkg - $(MAKE) -C doc distclean - $(MAKE) -C examples distclean - $(MAKE) -C rtests distclean - $(MAKE) -C m2parsergen distclean - touch tools/ucs2_to_utf8/depend - $(MAKE) -C tools/ucs2_to_utf8 clean - $(MAKE) -C compatibility distclean - -RELEASE: META - awk '/version/ { print substr($$3,2,length($$3)-2) }' META >RELEASE - -.PHONY: dist -dist: RELEASE - r=`head -1 RELEASE`; cd ..; gtar czf $(NAME)-$$r.tar.gz --exclude='*/CVS*' --exclude="*~" --exclude="*/depend.pkg" --exclude="*/depend" --exclude="*/oo_questions*" --exclude="*/testsamples*" --exclude="*/tmp/*" --exclude="*reptil*" --exclude="*/doc/common.xml" --exclude="*/doc/config.xml" --exclude="*.fig.bak" --exclude="*/ps/pic*" --exclude="*/examples/panel*" --exclude="*/examples/xmlforms_gtk*" --exclude="*/Mail*" $(NAME)/* - -.PHONY: tag-release -tag-release: RELEASE - r=`head -1 RELEASE | sed -e s/\\\./-/g`; cd ..; cvs tag -F $(NAME)-$$r markup - -.PHONY: release -release: distclean - $(MAKE) tag-release - $(MAKE) dist - -.PHONY: dev -dev: - $(MAKE) all - -$(MAKE) uninstall - $(MAKE) install - $(MAKE) -C examples/validate distclean - $(MAKE) -C examples/validate validate diff --git a/helm/DEVEL/pxp/pxp/Makefile.code b/helm/DEVEL/pxp/pxp/Makefile.code deleted file mode 100644 index 3afed39ca..000000000 --- a/helm/DEVEL/pxp/pxp/Makefile.code +++ /dev/null @@ -1,96 +0,0 @@ -# make all: make bytecode archives -# make opt: make native archives -#---------------------------------------------------------------------- - -include Makefile.conf - -all: - $(MAKE) -f Makefile.code pxp_types.cma - $(MAKE) -f Makefile.code pxp_lex_iso88591.cma - if [ "x$(UTF8_SUPPORT)" = "xyes" ]; then $(MAKE) -f Makefile.code pxp_lex_utf8.cma; else rm -f pxp_lex_utf8.cma; fi - $(MAKE) -f Makefile.code pxp_engine.cma - if [ "x$(UTF8_SUPPORT)" = "xyes" ]; then $(MAKE) -f Makefile.code pxp_utf8.cmo; else rm -f pxp_utf8.cmo; fi - -opt: - $(MAKE) -f Makefile.code pxp_types.cmxa - $(MAKE) -f Makefile.code pxp_lex_iso88591.cmxa - if [ "x$(UTF8_SUPPORT)" = "xyes" ]; then $(MAKE) -f Makefile.code pxp_lex_utf8.cmxa; else rm -f pxp_lex_utf8.cmxa; fi - $(MAKE) -f Makefile.code pxp_engine.cmxa - if [ "x$(UTF8_SUPPORT)" = "xyes" ]; then $(MAKE) -f Makefile.code pxp_utf8.cmx; else rm -f pxp_utf8.cmx; fi - -#---------------------------------------------------------------------- - -pxp_types.cma: $(OBJECTS_types) - $(OCAMLC) -a -o pxp_types.cma $(OBJECTS_types) - -pxp_types.cmxa: $(XOBJECTS_types) - $(OCAMLOPT) -a -o pxp_types.cmxa $(XOBJECTS_types) - -pxp_engine.cma: $(OBJECTS_engine) - $(OCAMLC) -a -o pxp_engine.cma $(OBJECTS_engine) - -pxp_engine.cmxa: $(XOBJECTS_engine) - $(OCAMLOPT) -a -o pxp_engine.cmxa $(XOBJECTS_engine) - - -# The following rules are "phony" to force 'make' to go into the -# "lexers" subdirectory. - -.PHONY: pxp_lex_iso88591.cma -pxp_lex_iso88591.cma: $(CMI_types) - $(MAKE) -C lexers all_iso88591 - cp lexers/pxp_lex_iso88591.cma . - -.PHONY: pxp_lex_iso88591.cmxa -pxp_lex_iso88591.cmxa: $(CMI_types) - $(MAKE) -C lexers opt_iso88591 - cp lexers/pxp_lex_iso88591.cmxa lexers/pxp_lex_iso88591.a . - -.PHONY: pxp_lex_utf8.cma -pxp_lex_utf8.cma: $(CMI_types) - $(MAKE) -C lexers all_utf8 - cp lexers/pxp_lex_utf8.cma . - -.PHONY: pxp_lex_utf8.cmxa -pxp_lex_utf8.cmxa: $(CMI_types) - $(MAKE) -C lexers opt_utf8 - cp lexers/pxp_lex_utf8.cmxa lexers/pxp_lex_utf8.a . - -#---------------------------------------------------------------------- -# general rules: - -OPTIONS = -OCAMLC = $(OCAMLFIND) ocamlc -package "$(PACKAGES)" \ - -g -I lexers $(OPTIONS) $(ROPTIONS) -OCAMLOPT = $(OCAMLFIND) ocamlopt -package "$(PACKAGES)" \ - -p -I lexers $(OPTIONS) $(ROPTIONS) -OCAMLDEP = ocamldep $(OPTIONS) -OCAMLFIND = ocamlfind - -depend: *.ml *.mli pxp_yacc.ml - $(OCAMLDEP) *.ml *.mli >depend - -.SUFFIXES: .cmo .cmi .cmx .ml .mli .mll .m2y - -.ml.cmx: - $(OCAMLOPT) -c $< - -.ml.cmo: - $(OCAMLC) -c $< - -.mli.cmi: - $(OCAMLC) -c $< - -.mll.ml: - ocamllex $< - -.m2y.ml: - ./m2parsergen/m2parsergen < $< >`basename $< .m2y`.ml || { rm -f `basename $< .m2y`.ml; false; } - -*.mli: - - -# Generated dependencies: - -include depend - diff --git a/helm/DEVEL/pxp/pxp/Makefile.conf b/helm/DEVEL/pxp/pxp/Makefile.conf deleted file mode 100644 index 749c702c7..000000000 --- a/helm/DEVEL/pxp/pxp/Makefile.conf +++ /dev/null @@ -1,37 +0,0 @@ -# User-configurable section: - -# yes or no: Do you want that the parser has support for the internal -# representation as UTF-8 strings? "yes" is recommended, but the parser -# becomes much bigger -UTF8_SUPPORT = yes - -# --- End of User-configurable section. - -# Settings. - -NAME = pxp -PACKAGES = netstring - -# Caml objects that are needed by the lexers: -OBJECTS_types = \ - pxp_types.cmo pxp_lexer_types.cmo - -CMI_types = $(OBJECTS_types:.cmo=.cmi) - -# Caml objects that depend on the lexers: -OBJECTS_engine = \ - pxp_lexers.cmo \ - pxp_dfa.cmo \ - pxp_aux.cmo pxp_reader.cmo \ - pxp_entity.cmo pxp_dtd.cmo pxp_document.cmo \ - pxp_yacc.cmo pxp_codewriter.cmo - -# Same as native objects: -XOBJECTS_types = $(OBJECTS_types:.cmo=.cmx) -XOBJECTS_engine = $(OBJECTS_engine:.cmo=.cmx) - -# .mli files to install: - -MLI = pxp_document.mli pxp_dtd.mli \ - pxp_types.mli pxp_yacc.mli \ - pxp_codewriter.mli pxp_dfa.mli diff --git a/helm/DEVEL/pxp/pxp/RELEASE b/helm/DEVEL/pxp/pxp/RELEASE deleted file mode 100644 index d3827e75a..000000000 --- a/helm/DEVEL/pxp/pxp/RELEASE +++ /dev/null @@ -1 +0,0 @@ -1.0 diff --git a/helm/DEVEL/pxp/pxp/compatibility/.cvsignore b/helm/DEVEL/pxp/pxp/compatibility/.cvsignore deleted file mode 100644 index deb5b7fba..000000000 --- a/helm/DEVEL/pxp/pxp/compatibility/.cvsignore +++ /dev/null @@ -1,4 +0,0 @@ -*.cmo -*.cmx -*.cmi - diff --git a/helm/DEVEL/pxp/pxp/compatibility/META b/helm/DEVEL/pxp/pxp/compatibility/META deleted file mode 100644 index 441e30a0f..000000000 --- a/helm/DEVEL/pxp/pxp/compatibility/META +++ /dev/null @@ -1,6 +0,0 @@ -version = "PXP-emulator" -requires = "pxp" -description = "Validating parser for XML-1.0" -archive(byte) = "markup.cma" -archive(native) = "markup.cmxa" - diff --git a/helm/DEVEL/pxp/pxp/compatibility/Makefile b/helm/DEVEL/pxp/pxp/compatibility/Makefile deleted file mode 100644 index 187116ccb..000000000 --- a/helm/DEVEL/pxp/pxp/compatibility/Makefile +++ /dev/null @@ -1,40 +0,0 @@ -# make all: make bytecode archive -# make opt: make native archive -# make install: install bytecode archive, and if present, native archive -# make uninstall: uninstall package -# make clean: remove intermediate files (in this directory) -# make CLEAN: remove intermediate files (recursively) -# make distclean: remove any superflous files (recursively) - -#---------------------------------------------------------------------- - -include Makefile.conf - -.PHONY: all -all: - $(MAKE) -f Makefile.code all - -.PHONY: opt -opt: - $(MAKE) -f Makefile.code opt - -.PHONY: install -install: all - files=`../tools/collect_files *.cmi *.cma *.cmxa *.a` && \ - ocamlfind install $(NAME) $(MLI) $$files META - -.PHONY: uninstall -uninstall: - ocamlfind remove $(NAME) - -.PHONY: clean -clean: - rm -f *.cmi *.cmo *.cma *.cmx *.o *.a *.cmxa *.new *.old - -.PHONY: CLEAN -CLEAN: clean - -.PHONY: distclean -distclean: clean - rm -f *~ depend depend.pkg - diff --git a/helm/DEVEL/pxp/pxp/compatibility/Makefile.code b/helm/DEVEL/pxp/pxp/compatibility/Makefile.code deleted file mode 100644 index 2733faa09..000000000 --- a/helm/DEVEL/pxp/pxp/compatibility/Makefile.code +++ /dev/null @@ -1,50 +0,0 @@ -# make all: make bytecode archives -# make opt: make native archives -#---------------------------------------------------------------------- - -include Makefile.conf - -.PHONY: all -all: markup.cma - -.PHONY: opt -opt: markup.cmxa - -#---------------------------------------------------------------------- - -markup.cma: $(OBJECTS) - $(OCAMLC) -a -o markup.cma $(OBJECTS) - -markup.cmxa: $(XOBJECTS) - $(OCAMLOPT) -a -o markup.cmxa $(XOBJECTS) - -#---------------------------------------------------------------------- -# general rules: - -OPTIONS = -OCAMLC = ocamlfind ocamlc -g -I .. -package netstring $(OPTIONS) $(ROPTIONS) -OCAMLOPT = ocamlfind ocamlopt -p -I .. -package netstring $(OPTIONS) $(ROPTIONS) -OCAMLDEP = ocamldep $(OPTIONS) -OCAMLFIND = ocamlfind - -depend: *.ml *.mli - $(OCAMLDEP) *.ml *.mli >depend - -.SUFFIXES: .cmo .cmi .cmx .ml .mli - -.ml.cmx: - $(OCAMLOPT) -c $< - -.ml.cmo: - $(OCAMLC) -c $< - -.mli.cmi: - $(OCAMLC) -c $< - -*.mli: - - -# Generated dependencies: - -include depend - diff --git a/helm/DEVEL/pxp/pxp/compatibility/Makefile.conf b/helm/DEVEL/pxp/pxp/compatibility/Makefile.conf deleted file mode 100644 index 061d0cae1..000000000 --- a/helm/DEVEL/pxp/pxp/compatibility/Makefile.conf +++ /dev/null @@ -1,9 +0,0 @@ -NAME = markup - -OBJECTS = markup_types.cmo markup_dtd.cmo markup_reader.cmo \ - markup_document.cmo markup_yacc.cmo -XOBJECTS = $(OBJECTS:.cmo=.cmx) - -MLI = markup_document.mli markup_dtd.mli \ - markup_types.mli markup_yacc.mli markup_reader.mli - diff --git a/helm/DEVEL/pxp/pxp/compatibility/README b/helm/DEVEL/pxp/pxp/compatibility/README deleted file mode 100644 index 50086732a..000000000 --- a/helm/DEVEL/pxp/pxp/compatibility/README +++ /dev/null @@ -1,21 +0,0 @@ -This directory contains the modules for Markup-0.2.10 -compatibility. The modules consist mainly of wrapper classes for the -new PXP classes, and translate the old methods to the new ones. - -Please note that the compatibility is not perfect. Sometimes there are -new methods which do not exist in Markup-0.2.10, and sometimes even -existing methods changed their signature. I have tried to avoid that, -but there are some ugly cases which are hard to solve without such -modifications. - -Translating old methods into new methods costs time and -memory. Because of this, it is best to consider the compatibility -modules as migration path to PXP: You can test whether PXP parses your -input files, and you can compare the old API with the new API -directly. (However, it is hard to test new features of PXP with the -compatibility modules; the old API does not reflect the new features.) - -The compatibility modules are currently maintained, but that will stop -once PXP has been established. - -(Gerd) diff --git a/helm/DEVEL/pxp/pxp/compatibility/markup_document.ml b/helm/DEVEL/pxp/pxp/compatibility/markup_document.ml deleted file mode 100644 index bbc497953..000000000 --- a/helm/DEVEL/pxp/pxp/compatibility/markup_document.ml +++ /dev/null @@ -1,374 +0,0 @@ -(* $Id$ - * ---------------------------------------------------------------------- - *) - -type node_type = - T_element of string - | T_data - -class type [ 'node ] extension = [ 'node ] Pxp_document.extension - -class type [ 'ext, 'node ] pxp_extension_type = -object ('self) - method clone : 'self - method node : 'self Pxp_document.node - method set_node : 'self Pxp_document.node -> unit - - method markup_node : 'node - method set_markup_node : 'node -> unit - - method set_index : 'self Pxp_yacc.index -> unit - method index : 'self Pxp_yacc.index - end -;; - - -class type [ 'ext ] node = - object ('self) - constraint 'ext = 'ext node #extension - method pxp_node : (('ext, 'ext node) pxp_extension_type) Pxp_document.node - - method extension : 'ext - method delete : unit - method parent : 'ext node - method root : 'ext node - method orphaned_clone : 'ext node - method orphaned_flat_clone : 'ext node - method add_node : 'ext node -> unit - method add_pinstr : Markup_dtd.proc_instruction -> unit - method pinstr : string -> Markup_dtd.proc_instruction list - method pinstr_names : string list - method sub_nodes : 'ext node list - method iter_nodes : ('ext node -> unit) -> unit - method iter_nodes_sibl : - ('ext node option -> 'ext node -> 'ext node option -> unit) -> unit - method set_nodes : 'ext node list -> unit - method data : string - method node_type : node_type - method attribute : string -> Markup_types.att_value - method attribute_names : string list - method attribute_type : string -> Markup_types.att_type - method attributes : (string * Markup_types.att_value) list - method required_string_attribute : string -> string - method required_list_attribute : string -> string list - method optional_string_attribute : string -> string option - method optional_list_attribute : string -> string list - method quick_set_attributes : (string * Markup_types.att_value) list -> unit - method find : string -> 'ext node - method reset_finder : unit - method dtd : Markup_dtd.dtd - method create_element : - Markup_dtd.dtd -> node_type -> (string * string) list -> 'ext node - method create_data : Markup_dtd.dtd -> string -> 'ext node - method local_validate : unit - method keep_always_whitespace_mode : unit - method write_compact_as_latin1 : Markup_types.output_stream -> unit - method internal_adopt : 'ext node option -> unit - method internal_delete : 'ext node -> unit - method internal_init : Markup_dtd.dtd -> string -> (string * string) list -> unit - end -;; - - -class [ 'ext ] pxp_extension init_markup_node = - (object (self : 'self) - (* constraint 'ext = 'ext node #extension *) - val mutable pxp_node = (None : - 'self Pxp_document.node option) - (* 'ext pxp_extension Pxp_document.node option *) - val mutable markup_node = (init_markup_node : 'ext node) - - val mutable index = (None : 'self Pxp_yacc.index option) - - method clone = - {< >} - - method node = - match pxp_node with - None -> - assert false - | Some n -> n - - method set_node n = - pxp_node <- Some n - - method markup_node = markup_node - - method set_markup_node n = markup_node <- n - - method set_index ix = - index <- Some ix - - method index = - match index with - None -> assert false - | Some x -> x - - end - : ['ext, 'ext node] pxp_extension_type ) -;; - - -class [ 'ext ] emulate_markup_node init_ext init_pxp_node = - object (self) - constraint 'ext = 'ext node #extension - val mutable pxp_node = (init_pxp_node : - ('ext, 'ext #node) - pxp_extension_type Pxp_document.node option) - val mutable extension = (init_ext : 'ext) - - method pxp_node = - match pxp_node with - None -> assert false - | Some n -> n - - method extension = extension - method delete = self # pxp_node # delete - method parent = self # pxp_node # parent # extension # markup_node - method root = self # pxp_node # root # extension # markup_node - - method orphaned_clone = - let ext' = extension # clone in - let pxp' = self # pxp_node # orphaned_clone in - let n = new emulate_markup_node ext' (Some pxp') in - ext' # set_node (n : 'ext #node :> 'ext node); - pxp' # extension # set_markup_node n; - n - - method orphaned_flat_clone = - let ext' = extension # clone in - let pxp' = self # pxp_node # orphaned_flat_clone in - let n = new emulate_markup_node ext' (Some pxp') in - ext' # set_node (n : 'ext #node :> 'ext node); - pxp' # extension # set_markup_node n; - n - - method dtd = self # pxp_node # dtd - - method add_node (n : 'ext node) = - let n_pxp = n # pxp_node in - self # pxp_node # add_node n_pxp - - method add_pinstr pi = - self # pxp_node # add_pinstr pi - - method sub_nodes = - let l = self # pxp_node # sub_nodes in - List.map (fun n_pxp -> n_pxp # extension # markup_node) l - - method pinstr name = - self # pxp_node # pinstr name - - method pinstr_names = - self # pxp_node # pinstr_names - - method iter_nodes f = - self # pxp_node # iter_nodes - (fun n_pxp -> f (n_pxp # extension # markup_node)) - - method iter_nodes_sibl f = - self # pxp_node # iter_nodes_sibl - (fun left_pxp node_pxp right_pxp -> - let left = - match left_pxp with - None -> None - | Some n_pxp -> Some (n_pxp # extension # markup_node) in - let right = - match right_pxp with - None -> None - | Some n_pxp -> Some (n_pxp # extension # markup_node) in - let node = - node_pxp # extension # markup_node in - f left node right - ) - - method set_nodes (l : 'ext node list) = - let l_pxp = List.map (fun n -> n # pxp_node) l in - self # pxp_node # set_nodes l_pxp - - method data = self # pxp_node # data - - method node_type = - match self # pxp_node # node_type with - Pxp_document.T_data -> T_data - | Pxp_document.T_element name -> T_element name - | Pxp_document.T_super_root -> T_element "-vr" - | Pxp_document.T_pinstr _ -> T_element "-pi" - | _ -> assert false - - method attribute name = - self # pxp_node # attribute name - - method attribute_names = - self # pxp_node # attribute_names - - method attribute_type name = - self # pxp_node # attribute_type name - - method attributes = - self # pxp_node # attributes - - method required_string_attribute name = - self # pxp_node # required_string_attribute name - - method required_list_attribute name = - self # pxp_node # required_list_attribute name - - method optional_string_attribute name = - self # pxp_node # optional_string_attribute name - - method optional_list_attribute name = - self # pxp_node # optional_list_attribute name - - method quick_set_attributes l = - self # pxp_node # quick_set_attributes l - - method find (name : string) = - let index = self # root # pxp_node # extension # index in - let n = index # find name in (* may raise Not_found *) - n # extension # markup_node - - method reset_finder = () - - method create_element dtd nt atts = - let nt_pxp = - match nt with - T_data -> Pxp_document.T_data - | T_element name -> Pxp_document.T_element name in - let node_pxp = - self # pxp_node # create_element dtd nt_pxp atts in - let ext' = extension # clone in - let n = new emulate_markup_node ext' (Some node_pxp) in - ext' # set_node (n : 'ext #node :> 'ext node); - node_pxp # extension # set_markup_node n; - n - - method create_data dtd s = - let node_pxp = - self # pxp_node # create_data dtd s in - let ext' = extension # clone in - let n = new emulate_markup_node ext' (Some node_pxp) in - ext' # set_node (n : 'ext #node :> 'ext node); - node_pxp # extension # set_markup_node n; - n - - method keep_always_whitespace_mode = - self # pxp_node # keep_always_whitespace_mode - - method write_compact_as_latin1 out = - self # pxp_node # write_compact_as_latin1 out - - method local_validate = - self # pxp_node # local_validate() - - method internal_adopt (p:'ext node option) = - assert false; - () - - method internal_delete (n:'ext node) = - assert false; - () - - method internal_init (d:Markup_dtd.dtd) (s:string) (atts:(string*string)list) = - assert false; - () - end -;; - -class [ 'ext ] data_impl ext data = - object (self) - inherit [ 'ext ] emulate_markup_node ext None - constraint 'ext = 'ext node #extension - initializer - if data <> "" then - failwith "Emulation of Markup_document: Cannot instantiate data node with non-empty string"; - let self' = (self : 'ext #node :> 'ext node ) in - pxp_node <- Some (new Pxp_document.data_impl (new pxp_extension self')) - - end -;; - -class [ 'ext ] element_impl ext = - object (self) - inherit [ 'ext ] emulate_markup_node ext None - initializer - let self' = (self : 'ext #node :> 'ext node ) in - pxp_node <- Some (new Pxp_document.element_impl (new pxp_extension self')) - end -;; - - -class [ 'ext ] document w = - object (self) - val pxp_doc = new Pxp_document.document - (w : Markup_types.collect_warnings :> Pxp_types.collect_warnings) - - val mutable standalone_flag = false - - method init_xml_version v = - pxp_doc # init_xml_version v - - method xml_version = - pxp_doc # xml_version - - method init_xml_standalone b = - standalone_flag <- b - - method xml_standalone = standalone_flag - - method init_root (r : 'ext node) = - pxp_doc # init_root (r # pxp_node); - self # dtd # set_standalone_declaration standalone_flag - (* questionable *) - - method root = - let pxp_root = pxp_doc # root in - pxp_root # extension # markup_node - - method dtd = - pxp_doc # dtd - - method add_pinstr pi = - pxp_doc # add_pinstr pi - - method pinstr name = - pxp_doc # pinstr name - - method pinstr_names = - pxp_doc # pinstr_names - - method write_compact_as_latin1 out = - pxp_doc # write_compact_as_latin1 out - - end -;; - -(* ====================================================================== - * History: - * - * $Log$ - * Revision 1.1 2000/11/17 09:57:30 lpadovan - * Initial revision - * - * Revision 1.6 2000/08/18 20:19:00 gerd - * Changed the emulation: there are now wrapper objects for nodes. - * This was necessary because node_type changed in PXP such that it became - * incompatible with Markup's node_type. - * - * Revision 1.5 2000/07/14 21:35:35 gerd - * Updated because of the simplification of Pxp_types.collect_warnings. - * - * Revision 1.4 2000/07/08 17:40:50 gerd - * Updated the simulation. - * - * Revision 1.3 2000/06/14 22:19:27 gerd - * Update because of additional 'encoding' methods. - * - * Revision 1.2 2000/05/30 00:08:40 gerd - * Bugfix. - * - * Revision 1.1 2000/05/29 23:43:51 gerd - * Initial compatibility revision. - * - *) - diff --git a/helm/DEVEL/pxp/pxp/compatibility/markup_document.mli b/helm/DEVEL/pxp/pxp/compatibility/markup_document.mli deleted file mode 100644 index 2e37f0f22..000000000 --- a/helm/DEVEL/pxp/pxp/compatibility/markup_document.mli +++ /dev/null @@ -1,420 +0,0 @@ -(* $Id$ - * ---------------------------------------------------------------------- - * Markup! The validating XML parser for Objective Caml. - * Copyright 1999 by Gerd Stolpmann. See LICENSE for details. - * - * THIS IS THE markup-0.2.10 COMPATIBLE INTERFACE TO markup_document.mli. - * It corresponds to revision 1.13 of markup_document.mli. - *) - -(**********************************************************************) -(* *) -(* Markup_document: *) -(* Object model of the document/element instances *) -(* *) -(**********************************************************************) - - -(* ====================================================================== - * OVERVIEW - * - * class type node ............. The common class type of the nodes of - * the element tree. Nodes are either - * elements (inner nodes) or data nodes - * (leaves) - * class type extension ........ The minimal properties of the so-called - * extensions of the nodes: Nodes can be - * customized by applying a class parameter - * that adds methods/values to nodes. - * class data_impl : node ...... Implements data nodes. - * class element_impl : node ... Implements element nodes - * class document .............. A document is an element with some additional - * properties - * - * ====================================================================== - * - * THE STRUCTURE OF NODE TREES: - * - * Every node except the root node has a parent node. The parent node is - * always an element, because data nodes never contain other nodes. - * In the other direction, element nodes may have children; both elements - * and data nodes are possible as children. - * Every node knows its parent (if any) and all its children (if any); - * the linkage is maintained in both directions. A node without a parent - * is called a root. - * It is not possible that a node is the child of two nodes (two different nodes - * or a multiple child of the same node). - * You can break the connection between a node and its parent; the method - * "delete" performs this operations and deletes the node from the parent's - * list of children. The node is now a root, for itself and for all - * subordinate nodes. In this context, the node is also called an orphan, - * because it has lost its parent (this is a bit misleading because the - * parent is not always the creator of a node). - * In order to simplify complex operations, you can also set the list of - * children of an element. Nodes that have been children before are unchanged; - * new nodes are added (and the linkage is set up), nodes no more occurring - * in the list are handled if they have been deleted. - * If you try to add a node that is not a root (either by an "add" or by a - * "set" operation) the operation fails. - * - * CREATION OF NODES - * - * The class interface supports creation of nodes by cloning a so-called - * exemplar. The idea is that it is sometimes useful to implement different - * element types by different classes, and to implement this by looking up - * exemplars. - * Imagine you have three element types A, B, and C, and three classes - * a, b, and c implementing the node interface (for example, by providing - * different extensions, see below). The XML parser can be configured to - * have a lookup table - * { A --> a0, B --> b0, C --> c0 } - * where a0, b0, c0 are exemplars of the classes a, b, and c, i.e. empty - * objects belonging to these classes. If the parser finds an instance of - * A, it looks up the exemplar a0 of A and clones it (actually, the method - * "create_element" performs this for elements, and "create_data" for data - * nodes). Clones belong to the same class as the original nodes, so the - * instances of the elements have the same classes as the configured - * exemplars. - * Note: This technique assumes that the interface of all exemplars is the - * same! - * - * THE EXTENSION - * - * The class type node and all its implementations have a class parameter - * 'ext which must at least fulfil the properties of the class type "extension". - * The idea is that you can add properties, for example: - * - * class my_extension = - * object - * (* minimal properties required by class type "extension": *) - * method clone = ... - * method node = ... - * method set_node n = ... - * (* here my own methods: *) - * method do_this_and_that ... - * end - * - * class my_element_impl = [ my_extension ] element_impl - * class my_data_impl = [ my_extension ] data_impl - * - * The whole XML parser is parameterized with 'ext, so your extension is - * visible everywhere (this is the reason why extensibility is solved by - * parametric polymorphism and not by inclusive polymorphism (subtyping)). - * - * - * SOME COMPLICATED TYPE EXPRESSIONS - * - * Sometimes the following type expressions turn out to be necessary: - * - * 'a node extension as 'a - * This is the type of an extension that belongs to a node that - * has an extension that is the same as we started with. - * - * 'a extension node as 'a - * This is the type of a node that has an extension that belongs to a - * node of the type we started with. - * - * - * DOCUMENTS - * ... - * - * ====================================================================== - * - * SIMPLE USAGE: ... - *) - - -open Markup_dtd - - -type node_type = - T_element of string - | T_data - - - -class type [ 'node ] extension = - object ('self) - method clone : 'self - (* "clone" should return an exact deep copy of the object. *) - method node : 'node - (* "node" returns the corresponding node of this extension. This method - * intended to return exactly what previously has been set by "set_node". - *) - method set_node : 'node -> unit - (* "set_node" is invoked once the extension is associated to a new - * node object. - *) - end -;; - -class type [ 'ext, 'node ] pxp_extension_type = -object ('self) - method clone : 'self - method node : 'self Pxp_document.node - method set_node : 'self Pxp_document.node -> unit - - method markup_node : 'node - method set_markup_node : 'node -> unit - - method set_index : 'self Pxp_yacc.index -> unit - method index : 'self Pxp_yacc.index - end -;; - -class type [ 'ext ] node = - object ('self) - constraint 'ext = 'ext node #extension - method pxp_node : (('ext, 'ext node) pxp_extension_type) Pxp_document.node - - method extension : 'ext - (* Return the extension of this node: *) - - method delete : unit - (* Delete this node from the parent's list of sub nodes. This node gets - * orphaned. - * 'delete' does nothing if this node does not have a parent. - *) - - method parent : 'ext node - (* Get the parent, or raise Not_found if this node is an orphan. *) - - method root : 'ext node - (* Get the direct or indirect parent that does not have a parent itself, - * i.e. the root of the tree. - *) - - method orphaned_clone : 'ext node - (* return an exact clone of this element and all sub nodes (deep copy) - * except string values which are shared by this node and the clone. - * The other exception is that the clone has no parent (i.e. it is now - * a root). - *) - - method orphaned_flat_clone : 'ext node - (* return a clone of this element where all subnodes are omitted. - * The type of the node, and the attributes are the same as in the - * original node. - * The clone has no parent. - *) - - method add_node : 'ext node -> unit - (* Append new sub nodes -- mainly used by the parser itself, but - * of course open for everybody. If an element is added, it must be - * an orphan (i.e. does not have a parent node); and after addition - * *this* node is the new parent. - *) - - method add_pinstr : proc_instruction -> unit - (* Add a processing instruction to the set of processing instructions of - * this node. Usually only elements contain processing instructions. - *) - - method pinstr : string -> proc_instruction list - (* Get all processing instructions with the passed name *) - - method pinstr_names : string list - (* Get a list of all names of processing instructions *) - - method sub_nodes : 'ext node list - (* Get the list of sub nodes *) - - method iter_nodes : ('ext node -> unit) -> unit - (* iterate over the sub nodes *) - - method iter_nodes_sibl : - ('ext node option -> 'ext node -> 'ext node option -> unit) -> unit - (* Here every iteration step can also access to the previous and to the - * following node if present: - *) - - method find : string -> 'ext node - (* Get the node that has an ID attribute with this value, or raise - * Not_found. - * "find" may also cause a Validation_error if something is wrong - * with the IDs. - *) - - method reset_finder : unit - (* makes that newly added nodes will also be found *) - - method set_nodes : 'ext node list -> unit - (* Set the list of sub nodes. Elements that are no longer sub nodes gets - * orphaned, and all new elements that previously were not sub nodes - * must have been orphaned. - *) - - method data : string - (* Get the data string of this node. For data nodes, this string is just - * the content. For elements, this string is the concatenation of all - * subordinate data nodes. - *) - - method node_type : node_type - (* Get the name of the element type. *) - - method attribute : string -> Markup_types.att_value - method attribute_names : string list - method attribute_type : string -> Markup_types.att_type - method attributes : (string * Markup_types.att_value) list - (* Get a specific attribute; get the names of all attributes; get the - * type of a specific attribute; get names and values of all attributes. - * Only elements have attributes. - * Note: If the DTD allows arbitrary for this element, "attribute_type" - * raises Undeclared. - *) - - method required_string_attribute : string -> string - method required_list_attribute : string -> string list - (* Return the attribute or fail if the attribute is not present: - * The first version passes the value always as string back; - * the second version always as list. - *) - - method optional_string_attribute : string -> string option - method optional_list_attribute : string -> string list - (* Return some attribute value or return None if the attribute is not - * present: - * The first version passes the value always as string back; - * the second version always as list. - *) - - method quick_set_attributes : (string * Markup_types.att_value) list -> unit - (* Sets the attributes but does not check whether they match the DTD. - *) - - method dtd : dtd - (* Get the DTD *) - - method create_element : dtd -> node_type -> (string * string) list -> 'ext node - (* create an "empty copy" of this element: - * - new DTD - * - new node type - * - new attribute list - * - empty list of nodes - *) - - method create_data : dtd -> string -> 'ext node - (* create an "empty copy" of this data node: *) - - method local_validate : unit - (* Check that this element conforms to the DTD: *) - - method keep_always_whitespace_mode : unit - (* Normally, add_node does not accept data nodes when the DTD does not - * allow data nodes or only whitespace ("ignorable whitespace"). - * Once you have invoked this method, ignorable whitespace is forced - * to be included into the document. - *) - - method write_compact_as_latin1 : Markup_types.output_stream -> unit - (* Write the contents of this node and the subtrees to the passed - * output stream; the character set ISO-8859-1 is used. The format - * is compact (the opposite of "pretty printing"). - *) - - (* ---------------------------------------- *) - (* internal methods: *) - method internal_adopt : 'ext node option -> unit - method internal_delete : 'ext node -> unit - method internal_init : dtd -> string -> (string * string) list -> unit - end -;; - -class [ 'ext ] data_impl : 'ext -> string -> [ 'ext ] node - -class [ 'ext ] element_impl : 'ext -> [ 'ext ] node - -class [ 'ext ] document : - Markup_types.collect_warnings -> - object - method init_xml_version : string -> unit - method init_xml_standalone : bool -> unit - method init_root : 'ext node -> unit - - method xml_version : string - method xml_standalone : bool - method dtd : dtd - method root : 'ext node - - method add_pinstr : proc_instruction -> unit - method pinstr : string -> proc_instruction list - method pinstr_names : string list - - method write_compact_as_latin1 : Markup_types.output_stream -> unit - (* Write the document to the passed - * output stream; the character set ISO-8859-1 is used. The format - * is compact (the opposite of "pretty printing"). - * If a DTD is present, the DTD is included into the internal subset. - *) - - end -;; - - -(* ====================================================================== - * History: - * - * $Log$ - * Revision 1.1 2000/11/17 09:57:30 lpadovan - * Initial revision - * - * Revision 1.4 2000/08/18 20:19:16 gerd - * Updates in the emulation because of PXP changes. - * - * Revision 1.3 2000/07/16 16:35:06 gerd - * Update because PXP interface contains now the method 'write'. - * - * Revision 1.2 2000/06/14 22:19:27 gerd - * Update because of additional 'encoding' methods. - * - * Revision 1.1 2000/05/29 23:43:51 gerd - * Initial compatibility revision. - * - * ====================================================================== - * OLD LOGS: - * - * Revision 1.13 2000/05/27 19:15:08 gerd - * Removed the method init_xml_standalone. - * - * Revision 1.12 2000/05/01 20:42:34 gerd - * New method write_compact_as_latin1. - * - * Revision 1.11 2000/04/30 18:15:57 gerd - * Beautifications. - * New method keep_always_whitespace_mode. - * - * Revision 1.10 2000/03/11 22:58:15 gerd - * Updated to support Markup_codewriter. - * - * Revision 1.9 2000/01/27 21:51:56 gerd - * Added method 'attributes'. - * - * Revision 1.8 2000/01/27 21:19:07 gerd - * Added further methods. - * - * Revision 1.7 1999/11/09 22:20:14 gerd - * Removed method init_dtd from class "document". The DTD is - * implicitly passed to the document by the root element. - * - * Revision 1.6 1999/09/01 22:51:40 gerd - * Added methods to store processing instructions. - * - * Revision 1.5 1999/09/01 16:19:57 gerd - * The "document" class has now a "warner" as class argument. - * - * Revision 1.4 1999/08/19 21:59:13 gerd - * Added method "reset_finder". - * - * Revision 1.3 1999/08/19 01:08:29 gerd - * Added method "find". - * - * Revision 1.2 1999/08/15 02:19:41 gerd - * Some new explanations: That unknown elements are not rejected - * if the DTD allows them. - * - * Revision 1.1 1999/08/10 00:35:51 gerd - * Initial revision. - * - * - *) diff --git a/helm/DEVEL/pxp/pxp/compatibility/markup_dtd.ml b/helm/DEVEL/pxp/pxp/compatibility/markup_dtd.ml deleted file mode 100644 index 7df5e29c6..000000000 --- a/helm/DEVEL/pxp/pxp/compatibility/markup_dtd.ml +++ /dev/null @@ -1,36 +0,0 @@ -(* $Id$ - * ---------------------------------------------------------------------- - *) - -class dtd w = - Pxp_dtd.dtd - (w : Markup_types.collect_warnings :> Pxp_types.collect_warnings) - `Enc_iso88591;; - -class dtd_element dtd name = - Pxp_dtd.dtd_element dtd name;; - -class dtd_notation name id = - Pxp_dtd.dtd_notation name id `Enc_iso88591;; - -class proc_instruction target value = - Pxp_dtd.proc_instruction target value `Enc_iso88591;; - - -(* ====================================================================== - * History: - * - * $Log$ - * Revision 1.1 2000/11/17 09:57:30 lpadovan - * Initial revision - * - * Revision 1.3 2000/07/14 21:35:35 gerd - * Updated because of the simplification of Pxp_types.collect_warnings. - * - * Revision 1.2 2000/06/14 22:19:27 gerd - * Update because of additional 'encoding' methods. - * - * Revision 1.1 2000/05/29 23:43:51 gerd - * Initial compatibility revision. - * - *) diff --git a/helm/DEVEL/pxp/pxp/compatibility/markup_dtd.mli b/helm/DEVEL/pxp/pxp/compatibility/markup_dtd.mli deleted file mode 100644 index 660b35ae8..000000000 --- a/helm/DEVEL/pxp/pxp/compatibility/markup_dtd.mli +++ /dev/null @@ -1,108 +0,0 @@ -(* $Id$ - * ---------------------------------------------------------------------- - * Markup! The validating XML parser for Objective Caml. - * Copyright 1999 by Gerd Stolpmann. See LICENSE for details. - * - * THIS IS THE markup-0.2.10 COMPATIBLE INTERFACE TO markup_dtd.mli. - * It corresponds to revision 1.11 of markup_dtd.mli. - *) - -(**********************************************************************) -(* *) -(* Markup_dtd: *) -(* Object model of document type declarations *) -(* *) -(**********************************************************************) - -(* ====================================================================== - * OVERVIEW - * - * class dtd ............... represents the whole DTD, including element - * declarations, entity declarations, notation - * declarations, and processing instructions - * class dtd_element ....... represents an element declaration consisting - * of a content model and an attribute list - * declaration - * class dtd_notation ...... represents a notation declaration - * class proc_instruction .. represents a processing instruction - * ====================================================================== - * - *) - - -class dtd : - Markup_types.collect_warnings -> - Pxp_dtd.dtd - (* Incompatibilities: - * add_gen_entity, gen_entity - *) - -class dtd_element : dtd -> string -> Pxp_dtd.dtd_element - (* Incompatibilities: - * set_content_model, add_attribute - *) - -class dtd_notation : string -> Markup_types.ext_id -> Pxp_dtd.dtd_notation - -class proc_instruction : string -> string -> Pxp_dtd.proc_instruction - -(* ====================================================================== - * History: - * - * $Log$ - * Revision 1.1 2000/11/17 09:57:30 lpadovan - * Initial revision - * - * Revision 1.1 2000/05/29 23:43:51 gerd - * Initial compatibility revision. - * - * ====================================================================== - * OLD LOGS: - * - * Revision 1.11 2000/05/29 21:14:57 gerd - * Changed the type 'encoding' into a polymorphic variant. - * - * Revision 1.10 2000/05/27 19:20:38 gerd - * Changed the interfaces for the standalone check: New - * methods: standalone_declaration, set_standalone_declaration, - * externally_declared, attribute_violates_standalone_declaration. - * The method set_content_model has been renamed to - * set_cm_and_extdecl; it now initializes also whether the element - * has been declared in an external entity. - * Methods add_gen_entity and gen_entity pass an additional - * boolean argument containing whether the declaration of the - * general entity happened in an external entity. - * Method add_attribute expects this argument, too, which - * states whether the declaration of the attribute happened in an - * external entity. - * - * Revision 1.9 2000/05/20 20:31:40 gerd - * Big change: Added support for various encodings of the - * internal representation. - * - * Revision 1.8 2000/05/06 23:10:26 gerd - * allow_arbitrary for elements, too. - * - * Revision 1.7 2000/05/01 20:42:52 gerd - * New method write_compact_as_latin1. - * - * Revision 1.6 2000/03/11 22:58:15 gerd - * Updated to support Markup_codewriter. - * - * Revision 1.5 2000/02/22 02:32:02 gerd - * Updated. - * - * Revision 1.4 1999/11/09 22:15:41 gerd - * Added method "arbitrary_allowed". - * - * Revision 1.3 1999/09/01 16:21:56 gerd - * "dtd" classes have now an argument that passes a "warner". - * - * Revision 1.2 1999/08/15 02:20:23 gerd - * New feature: a DTD can allow arbitrary elements. - * - * Revision 1.1 1999/08/10 00:35:51 gerd - * Initial revision. - * - * - *) diff --git a/helm/DEVEL/pxp/pxp/compatibility/markup_reader.ml b/helm/DEVEL/pxp/pxp/compatibility/markup_reader.ml deleted file mode 100644 index a196c2219..000000000 --- a/helm/DEVEL/pxp/pxp/compatibility/markup_reader.ml +++ /dev/null @@ -1,119 +0,0 @@ -(* $Id$ - * ---------------------------------------------------------------------- - *) - -open Markup_types;; - -class type resolver = - object - method open_in : ext_id -> Lexing.lexbuf - method close_in : unit - method change_encoding : string -> unit - method clone : resolver - end -;; - -(* General note: close_in is simulated by close_all. Of course, this is - * wrong, but it should not matter - *) - - -class resolve_read_channel ch the_warner = - object (self) - val pxp_resolver = - new Pxp_reader.resolve_read_this_channel - ~auto_close:false - ch - val warner = the_warner - - initializer - pxp_resolver # init_warner - (warner : Markup_types.collect_warnings :> Pxp_types.collect_warnings); - pxp_resolver # init_rep_encoding `Enc_iso88591; - - method open_in xid = - pxp_resolver # open_in xid - - method close_in = - pxp_resolver # close_all (* sic! *) - - method change_encoding enc = - pxp_resolver # change_encoding enc - - method clone = - ( {< pxp_resolver = pxp_resolver # clone >} : #resolver :> resolver ) - - end -;; - - -class resolve_read_string str = - object (self) - val pxp_resolver = - new Pxp_reader.resolve_read_this_string str - val warner = new Pxp_types.drop_warnings - - initializer - pxp_resolver # init_warner warner; - pxp_resolver # init_rep_encoding `Enc_iso88591; - - method open_in xid = - pxp_resolver # open_in xid - - method close_in = - pxp_resolver # close_all (* sic! *) - - method change_encoding enc = - pxp_resolver # change_encoding enc - - method clone = - ( {< pxp_resolver = pxp_resolver # clone >} : #resolver :> resolver ) - end -;; - - -class resolve_as_file the_warner = - object (self) - val pxp_resolver = - new Pxp_reader.resolve_as_file - ~system_encoding:`Enc_iso88591 - () - val warner = the_warner - - initializer - pxp_resolver # init_warner - (warner : Markup_types.collect_warnings :> Pxp_types.collect_warnings); - pxp_resolver # init_rep_encoding `Enc_iso88591; - - method open_in xid = - pxp_resolver # open_in xid - - method close_in = - pxp_resolver # close_all (* sic! *) - - method change_encoding enc = - pxp_resolver # change_encoding enc - - method clone = - ( {< pxp_resolver = pxp_resolver # clone >} : #resolver :> resolver ) - end -;; - - -(* ====================================================================== - * History: - * - * $Log$ - * Revision 1.1 2000/11/17 09:57:30 lpadovan - * Initial revision - * - * Revision 1.3 2000/07/14 21:35:35 gerd - * Updated because of the simplification of Pxp_types.collect_warnings. - * - * Revision 1.2 2000/07/08 17:40:50 gerd - * Updated the simulation. - * - * Revision 1.1 2000/05/29 23:43:51 gerd - * Initial compatibility revision. - * - *) diff --git a/helm/DEVEL/pxp/pxp/compatibility/markup_reader.mli b/helm/DEVEL/pxp/pxp/compatibility/markup_reader.mli deleted file mode 100644 index 8e5e2c8fc..000000000 --- a/helm/DEVEL/pxp/pxp/compatibility/markup_reader.mli +++ /dev/null @@ -1,141 +0,0 @@ -(* $Id$ - * ---------------------------------------------------------------------- - * Markup! The validating XML parser for Objective Caml. - * Copyright by Gerd Stolpmann. See LICENSE for details. - * - * THIS IS THE markup-0.2.10 COMPATIBLE INTERFACE TO markup_reader.mli. - * It corresponds to revision 1.3 of markup_reader.mli. - *) - -open Markup_types;; - - -(* The class type resolver is the official type of all "resolvers". - * Resolvers get file names (or better, external identifiers) and - * return lexbufs, scanning the file for tokens. Resolvers may be - * cloned, and clones can interpret relative file names relative to - * their creator. - *) - -class type resolver = - object - (* A resolver can open a character source, and returns this source as - * Lexing.lexbuf. - * The resolver should recode the source into ISO-8859-1. By default, - * a resolver should assume UTF-8 or UTF-16 encoding. Before - * 'change_encoding' is invoked, the resolver should only return - * lexbufs with one character. After 'change_encoding' has been invoked, - * there is no character limit anymore. - * 'change_encoding' can only be invoked once. This method is usually - * called after the prolog of the entity has been read. - * If this method is not called, it is up to the resolver to find out - * if UTF-8 or UTF-16 is used. It is recommended to invoke this method - * with an empty string to indicate this situation. - *) - method open_in : ext_id -> Lexing.lexbuf - method close_in : unit - method change_encoding : string -> unit - - - (* Every resolver can be cloned. The clone does not inherit the connection - * with the external object, i.e. it is closed. - *) - method clone : resolver - - end -;; - - -(* The following class is the current main implementation of resolvers. - * It fetches strings from an arbitrary source (by calling init_in, and - * then repeatedly next_string), recodes them to ISO-8859-1, and creates - * lexbufs for them. - * It is not complete, as the source is missing. - * - * Note that 'resolve_general' may change in future revisions; it is ugly. - *) - -(* -- This API simulation does not provide 'resolve_general' any longer - -class virtual resolve_general : - collect_warnings -> - object - val mutable encoding : string - val mutable encoding_requested : bool - val warner : collect_warnings - - method clone : resolver - - method private warn : int -> unit - method private autodetect : string -> unit - - method private virtual next_string : string -> int -> int -> int - method private virtual init_in : ext_id -> unit - method virtual close_in : unit - - method open_in : ext_id -> Lexing.lexbuf - - method change_encoding : string -> unit - end -*) - - -(* The next classes are resolvers for concrete input sources. *) - -class resolve_read_channel : - in_channel -> collect_warnings -> resolver;; - - (* Reads from the passed channel (it may be even a pipe). Note that this - * resolver cannot handle file inclusions, as it is pre-bound to a - * specific channel and is not able to interpret file names. - * That means, if there is a entity reference (something like &name; or - * %name;) to parse, and the definition points to another file, the - * resolver will fail. - *) - - -class resolve_read_string : - string -> resolver;; - - (* Reads from the passed string. As 'resolver_read_channel', this - * resolver cannot handle file inclusions. - *) - - -class resolve_as_file : - collect_warnings -> resolver;; - - (* Reads from the local file system. Every file name is interpreted as - * file name of the local file system, and the referred file is read. - * This resolver can handle file inclusions as long as they do not - * exceed the scope of the local file system (i.e. no URLs). - *) - -(* ====================================================================== - * History: - * - * $Log$ - * Revision 1.1 2000/11/17 09:57:30 lpadovan - * Initial revision - * - * Revision 1.2 2000/07/08 17:40:50 gerd - * Updated the simulation. - * - * Revision 1.1 2000/05/29 23:43:51 gerd - * Initial compatibility revision. - * - * ====================================================================== - * OLD LOGS: - * - * Revision 1.3 2000/05/29 21:14:57 gerd - * Changed the type 'encoding' into a polymorphic variant. - * - * Revision 1.2 2000/05/20 20:31:40 gerd - * Big change: Added support for various encodings of the - * internal representation. - * - * Revision 1.1 2000/03/13 23:41:54 gerd - * Initial revision. - * - * - *) diff --git a/helm/DEVEL/pxp/pxp/compatibility/markup_types.ml b/helm/DEVEL/pxp/pxp/compatibility/markup_types.ml deleted file mode 100644 index a0c0c271b..000000000 --- a/helm/DEVEL/pxp/pxp/compatibility/markup_types.ml +++ /dev/null @@ -1,103 +0,0 @@ -(* $Id$ - * ---------------------------------------------------------------------- - *) - - -type ext_id = Pxp_types.ext_id = - System of string - | Public of (string * string) - | Anonymous -type dtd_id = Pxp_types.dtd_id= - External of ext_id - | Derived of ext_id - | Internal -type content_model_type = Pxp_types.content_model_type = - Unspecified - | Empty - | Any - | Mixed of mixed_spec list - | Regexp of regexp_spec -and mixed_spec = Pxp_types.mixed_spec = - MPCDATA - | MChild of string -and regexp_spec = Pxp_types.regexp_spec = - Optional of regexp_spec - | Repeated of regexp_spec - | Repeated1 of regexp_spec - | Alt of regexp_spec list - | Seq of regexp_spec list - | Child of string -type att_type = Pxp_types.att_type = - A_cdata - | A_id - | A_idref - | A_idrefs - | A_entity - | A_entities - | A_nmtoken - | A_nmtokens - | A_notation of string list - | A_enum of string list -type att_default = Pxp_types.att_default = - D_required - | D_implied - | D_default of string - | D_fixed of string -type att_value = Pxp_types.att_value = - Value of string - | Valuelist of string list - | Implied_value - -class collect_warnings = -object - val mutable w = Buffer.create 100 - method print_warnings = - Buffer.contents w - method reset = - Buffer.clear w - method warn s = - Buffer.add_string w ("WARNING: " ^ s ^ "\n") -end - -exception Illegal_character of int -exception Validation_error = Pxp_types.Validation_error -exception WF_error = Pxp_types.WF_error -exception Character_not_supported = Pxp_types.Character_not_supported -exception Bad_character_stream = Netconversion.Malformed_code -exception At = Pxp_types.At -exception Undeclared = Pxp_types.Undeclared - -let string_of_exn = Pxp_types.string_of_exn - -type output_stream = Pxp_types.output_stream = - Out_buffer of Buffer.t - | Out_channel of out_channel - | Out_function of (string -> int -> int -> unit) - -let write = Pxp_types.write - - -(* ====================================================================== - * History: - * - * $Log$ - * Revision 1.1 2000/11/17 09:57:30 lpadovan - * Initial revision - * - * Revision 1.5 2000/08/18 20:19:16 gerd - * Updates in the emulation because of PXP changes. - * - * Revision 1.4 2000/07/16 18:30:15 gerd - * Updated because PXP does no longer have the exception - * Illegal_character. - * - * Revision 1.3 2000/07/14 21:35:35 gerd - * Updated because of the simplification of Pxp_types.collect_warnings. - * - * Revision 1.2 2000/07/08 17:40:50 gerd - * Updated the simulation. - * - * Revision 1.1 2000/05/29 23:43:51 gerd - * Initial compatibility revision. - * - *) diff --git a/helm/DEVEL/pxp/pxp/compatibility/markup_types.mli b/helm/DEVEL/pxp/pxp/compatibility/markup_types.mli deleted file mode 100644 index b33bb30b2..000000000 --- a/helm/DEVEL/pxp/pxp/compatibility/markup_types.mli +++ /dev/null @@ -1,125 +0,0 @@ -(* $Id$ - * ---------------------------------------------------------------------- - * Markup! The validating XML parser for Objective Caml. - * Copyright 1999 by Gerd Stolpmann. See LICENSE for details. - * - * THIS IS THE markup-0.2.10 COMPATIBLE INTERFACE TO markup_types.mli. - * It corresponds to revision 1.7 of markup_types.mli. - *) - - -type ext_id = Pxp_types.ext_id = - System of string - | Public of (string * string) - | Anonymous -type dtd_id = Pxp_types.dtd_id = - External of ext_id - | Derived of ext_id - | Internal -type content_model_type = Pxp_types.content_model_type = - Unspecified - | Empty - | Any - | Mixed of mixed_spec list - | Regexp of regexp_spec -and mixed_spec = Pxp_types.mixed_spec = - MPCDATA - | MChild of string -and regexp_spec = Pxp_types.regexp_spec = - Optional of regexp_spec - | Repeated of regexp_spec - | Repeated1 of regexp_spec - | Alt of regexp_spec list - | Seq of regexp_spec list - | Child of string -type att_type = Pxp_types.att_type = - A_cdata - | A_id - | A_idref - | A_idrefs - | A_entity - | A_entities - | A_nmtoken - | A_nmtokens - | A_notation of string list - | A_enum of string list -type att_default = Pxp_types.att_default = - D_required - | D_implied - | D_default of string - | D_fixed of string -type att_value = Pxp_types.att_value = - Value of string - | Valuelist of string list - | Implied_value - -class collect_warnings : - object - method warn : string -> unit - method print_warnings : string - method reset : unit - end -;; - - -exception Illegal_character of int -exception Validation_error of string -exception WF_error of string -exception Character_not_supported -exception Bad_character_stream -exception At of (string * exn) -exception Undeclared - -val string_of_exn : exn -> string - (* Converts a Markup exception into a readable string *) - - -type output_stream = Pxp_types.output_stream = - Out_buffer of Buffer.t - | Out_channel of out_channel - | Out_function of (string -> int -> int -> unit) - -val write : output_stream -> string -> int -> int -> unit - (* write os s pos len: Writes the string to the buffer/channel/stream *) - -(* ====================================================================== - * History: - * - * $Log$ - * Revision 1.1 2000/11/17 09:57:30 lpadovan - * Initial revision - * - * Revision 1.2 2000/07/08 17:40:50 gerd - * Updated the simulation. - * - * Revision 1.1 2000/05/29 23:43:51 gerd - * Initial compatibility revision. - * - * ====================================================================== - * OLD LOGS: - * - * Revision 1.7 2000/05/29 21:14:57 gerd - * Changed the type 'encoding' into a polymorphic variant. - * - * Revision 1.6 2000/05/20 20:31:40 gerd - * Big change: Added support for various encodings of the - * internal representation. - * - * Revision 1.5 2000/05/01 20:43:25 gerd - * New type output_stream; new function 'write'. - * - * Revision 1.4 1999/09/01 16:25:35 gerd - * Dropped Illegal_token and Content_not_allowed_here. WF_error can - * be used instead. - * - * Revision 1.3 1999/08/15 02:22:40 gerd - * Added exception Undeclared. - * - * Revision 1.2 1999/08/14 22:15:17 gerd - * New class "collect_warnings". - * - * Revision 1.1 1999/08/10 00:35:52 gerd - * Initial revision. - * - * - *) diff --git a/helm/DEVEL/pxp/pxp/compatibility/markup_yacc.ml b/helm/DEVEL/pxp/pxp/compatibility/markup_yacc.ml deleted file mode 100644 index 26c40de18..000000000 --- a/helm/DEVEL/pxp/pxp/compatibility/markup_yacc.ml +++ /dev/null @@ -1,245 +0,0 @@ -(* $Id$ - * ---------------------------------------------------------------------- - *) - -open Markup_types -open Markup_dtd -open Markup_document - -type config = - { warner : collect_warnings; - errors_with_line_numbers : bool; - processing_instructions_inline : bool; - virtual_root : bool; - debugging_mode : bool; - } - - -type source = - Entity of ((dtd -> Pxp_entity.entity) * Markup_reader.resolver) - | Channel of in_channel - | File of string - | Latin1 of string - | ExtID of (ext_id * Markup_reader.resolver) - -type 'ext domspec = - { map : (node_type, 'ext node) Hashtbl.t; - default_element : 'ext node; - } - - -class default_ext = - object(self) - val mutable node = (None : ('a extension node as 'a) option) - method clone = {< >} - method node = - match node with - None -> - assert false - | Some n -> n - method set_node n = - node <- Some n - end -;; - - -let default_extension = new default_ext;; - -let default_config = - { warner = new collect_warnings; - errors_with_line_numbers = true; - processing_instructions_inline = false; - virtual_root = false; - debugging_mode = false; - } - - -let default_dom = - let d = Hashtbl.create 2 in - Hashtbl.add d T_data (new data_impl default_extension ""); - { map = d; - default_element = new element_impl default_extension - } -;; - - -let pxp_config cfg = - { Pxp_yacc.default_config with - Pxp_yacc.warner = (cfg.warner :> Pxp_types.collect_warnings); - Pxp_yacc.errors_with_line_numbers = cfg.errors_with_line_numbers; - Pxp_yacc.enable_pinstr_nodes = cfg.processing_instructions_inline; - Pxp_yacc.enable_super_root_node = cfg.virtual_root; - Pxp_yacc.encoding = `Enc_iso88591; - Pxp_yacc.recognize_standalone_declaration = false; - Pxp_yacc.debugging_mode = cfg.debugging_mode; - } -;; - - -class pxp_resolver r = - object (self) - val markup_resolver = r - - method init_rep_encoding enc = - assert (enc = `Enc_iso88591 ) - - method init_warner w = - () - - method rep_encoding = `Enc_iso88591 - - method open_in xid = - markup_resolver # open_in xid - - method close_in = - markup_resolver # close_in - - method close_all = - markup_resolver # close_in - - method change_encoding enc = - markup_resolver # change_encoding enc - - method clone = - ( {< markup_resolver = markup_resolver # clone >} - : #Pxp_reader.resolver :> Pxp_reader.resolver ) - end -;; - - -let pxp_source src = - match src with - Entity (mkent, res) -> Pxp_yacc.Entity(mkent, new pxp_resolver res) - | ExtID (id, res) -> Pxp_yacc.ExtID(id, new pxp_resolver res) - | Channel ch -> Pxp_yacc.from_channel - ~system_encoding:`Enc_iso88591 ch - | File f -> Pxp_yacc.from_file - ~system_encoding:`Enc_iso88591 f - | Latin1 s -> Pxp_yacc.from_string ~fixenc:`Enc_iso88591 s -;; - - -let pxp_dom dom = - let dex = - try Hashtbl.find dom.map T_data - with Not_found -> assert false - in - let eex = dom.default_element in - let m = Hashtbl.create 100 in - Hashtbl.iter - (fun nt ex -> - match nt with - T_element name when name <> "-vr" && name <> "-pi" -> - let pxp_ex = ex # pxp_node in - Hashtbl.add m name pxp_ex - | _ -> () - ) - dom.map; - let srex = - try - Some ((Hashtbl.find dom.map (T_element "-vr")) # pxp_node) - with - Not_found -> None - in - let piex = - try - Some ((Hashtbl.find dom.map (T_element "-pi")) # pxp_node) - with - Not_found -> None - in - Pxp_document.make_spec_from_mapping - ?super_root_exemplar:srex - ?default_pinstr_exemplar:piex - ~data_exemplar:(dex # pxp_node) - ~default_element_exemplar:(eex # pxp_node) - ~element_mapping:m - () -;; - - -let markup_document w index doc = - let mdoc = new document w in - mdoc # init_xml_version (doc # xml_version); - mdoc # init_xml_standalone (doc # xml_standalone); - let r = doc # root # extension in - r # set_index index; - mdoc # init_root (r # markup_node); - List.iter - (fun piname -> - let l = doc # pinstr piname in - List.iter - (fun pi -> mdoc # add_pinstr pi) - l) - (doc # pinstr_names); - mdoc -;; - - - -let parse_dtd_entity cfg src = - Pxp_yacc.parse_dtd_entity - (pxp_config cfg) - (pxp_source src) -;; - - -let parse_document_entity cfg src dom = - let index = (new Pxp_yacc.hash_index :> 'ext Pxp_yacc.index) in - markup_document - cfg.warner - index - (Pxp_yacc.parse_document_entity - ~id_index:index - (pxp_config cfg) - (pxp_source src) - (pxp_dom dom)) -;; - - -let parse_content_entity cfg src dtd dom = - let index = (new Pxp_yacc.hash_index :> 'ext Pxp_yacc.index) in - let n = - (Pxp_yacc.parse_content_entity - ~id_index:index - (pxp_config cfg) - (pxp_source src) - dtd - (pxp_dom dom)) # extension in - n # set_index index; - n # markup_node -;; - - -let parse_wf_entity cfg src dom = - let index = (new Pxp_yacc.hash_index :> 'ext Pxp_yacc.index) in - (* Restriction: index is not filled! *) - markup_document - cfg.warner - index - (Pxp_yacc.parse_wfdocument_entity - (pxp_config cfg) - (pxp_source src) - (pxp_dom dom)) -;; - - -(* ====================================================================== - * History: - * - * $Log$ - * Revision 1.1 2000/11/17 09:57:30 lpadovan - * Initial revision - * - * Revision 1.4 2000/08/18 20:19:16 gerd - * Updates in the emulation because of PXP changes. - * - * Revision 1.3 2000/07/14 21:35:35 gerd - * Updated because of the simplification of Pxp_types.collect_warnings. - * - * Revision 1.2 2000/07/08 17:40:50 gerd - * Updated the simulation. - * - * Revision 1.1 2000/05/29 23:43:51 gerd - * Initial compatibility revision. - * - *) diff --git a/helm/DEVEL/pxp/pxp/compatibility/markup_yacc.mli b/helm/DEVEL/pxp/pxp/compatibility/markup_yacc.mli deleted file mode 100644 index daccad4c7..000000000 --- a/helm/DEVEL/pxp/pxp/compatibility/markup_yacc.mli +++ /dev/null @@ -1,233 +0,0 @@ -(* $Id$ - * ---------------------------------------------------------------------- - * Markup! The validating XML parser for Objective Caml. - * Copyright 1999 by Gerd Stolpmann. See LICENSE for details. - * - * THIS IS THE markup-0.2.10 COMPATIBLE INTERFACE TO markup_yacc.mli. - * It corresponds to revision 1.4 of markup_yacc.mli. - *) - - -(*$ markup-yacc.mli *) - -open Markup_types -open Markup_dtd -open Markup_document - -type config = - { warner : collect_warnings; - (* An object that collects warnings. *) - - errors_with_line_numbers : bool; - (* Whether error messages contain line numbers or not. The parser - * is 10 to 20 per cent faster if line numbers are turned off; - * you get only character positions in this case. - *) - - processing_instructions_inline : bool; - (* true: turns a special mode for processing instructions on. Normally, - * you cannot determine the exact location of a PI; you only know - * in which element the PI occurs. The "inline" mode makes it possible - * to find the exact location out: Every PI is artificially wrapped - * by a special element with name "-pi". For example, if the XML text - * is , the parser normally produces only an element - * object for "a", and puts the PIs "x" and "y" into it (without - * order). In inline mode, the object "a" will contain two objects - * with name "-pi", and the first object will contain "x", and the - * second "y". - * Notes: - * (1) The name "-pi" is reserved. You cannot use it for your own - * tags because tag names must not begin with '-'. - * (2) You need not to add a declaration for "-pi" to the DTD. These - * elements are handled separately. - * (3) Of course, the "-pi" objects are created from exemplars of - * your DOM map. - *) - - virtual_root : bool; - (* true: the topmost element of the XML tree is not the root element, - * but the so-called virtual root. The root element is a son of the - * virtual root. The virtual root is an ordinary element with name - * "-vr". - * The following behaviour changes, too: - * - PIs occurring outside the root element and outside the DTD are - * added to the virtual root instead of the document object - * - If processing_instructions_inline is also turned on, these PIs - * are added inline to the virtual root - * Notes: - * (1) The name "-vr" is reserved. You cannot use it for your own - * tags because tag names must not begin with '-'. - * (2) You need not to add a declaration for "-vr" to the DTD. These - * elements are handled separately. - * (3) Of course, the "-vr" objects are created from exemplars of - * your DOM map. - *) - - (* The following options are not implemented, or only for internal - * use. - *) - - debugging_mode : bool; - } - - -type source = - Entity of ((dtd -> Pxp_entity.entity) * Markup_reader.resolver) - | Channel of in_channel - | File of string - | Latin1 of string - | ExtID of (ext_id * Markup_reader.resolver) - -(* Note on sources: - * - * The sources do not have all the same capabilities. Here the differences: - * - * - File: A File source reads from a file by name. This has the advantage - * that references to external entites can be resolved. - The problem - * with SYSTEM references is that they usually contain relative file - * names; more exactly, a file name relative to the document containing it. - * It is only possible to convert such names to absolute file names if the - * name of the document containing such references is known; and File - * denotes this name. - * - * - Channel, Latin1: These sources read from documents given as channels or - * (Latin 1-encoded) strings. There is no file name, and because of this - * the documents must not contain references to external files (even - * if the file names are given as absolute names). - * - * - ExtID(x,r): The identifier x (either the SYSTEM or the PUBLIC name) of the - * entity to read from is passed to the resolver r as-is. - * The intention of this option is to allow customized - * resolvers to interpret external identifiers without any restriction. - * For example, you can assign the PUBLIC identifiers a meaning (they - * currently do not have any), or you can extend the "namespace" of - * identifiers. - * ExtID is the interface of choice for own extensions to resolvers. - * - * - Entity(m,r): You can implementy every behaviour by using a customized - * entity class. Once the DTD object d is known that will be used during - * parsing, the entity e = m d is determined and used together with the - * resolver r. - * This is only for hackers. - *) - - -type 'ext domspec = - { map : (node_type, 'ext node) Hashtbl.t; - default_element : 'ext node; - } - (* Specifies which node to use as exemplar for which node type. See the - * manual for explanations. - *) - -val default_config : config - (* - The resolver is able to read from files by name - * - Warnings are thrown away - * - Error message will contain line numbers - * - The internal encoding is ISO-8859-1 - * - standalone declaration is checked - *) - -val default_extension : ('a node extension) as 'a - (* A "null" extension; an extension that does not extend the funtionality *) - -val default_dom : ('a node extension as 'a) domspec - (* Specifies that you do not want to use extensions. *) - -val parse_dtd_entity : config -> source -> dtd - (* Parse an entity containing a DTD, and return this DTD. *) - -val parse_document_entity : config -> source -> 'ext domspec -> 'ext document - (* Parse a closed document, i.e. a document beginning with , - * and validate the contents of the document against the DTD contained - * and/or referenced in the document. - *) - -val parse_content_entity : config -> - source -> - dtd -> - 'ext domspec -> - 'ext node - (* Parse a file representing a well-formed fragment of a document. The - * fragment must be a single element (i.e. something like ...; - * not a sequence like ......). The element is validated - * against the passed DTD, but it is not checked whether the element is - * the root element specified in the DTD. - * Note that you can create DTDs that specify not to validate at all - * (invoke method allow_arbitrary on the DTD). - *) - -val parse_wf_entity : config -> source -> 'ext domspec -> 'ext document - (* Parse a closed document (see parse_document_entity), but do not - * validate it. Only checks on well-formedness are performed. - *) - -(*$-*) - - -(* ====================================================================== - * History: - * - * $Log$ - * Revision 1.1 2000/11/17 09:57:30 lpadovan - * Initial revision - * - * Revision 1.1 2000/05/29 23:43:51 gerd - * Initial compatibility revision. - * - * ====================================================================== - * OLD LOGS: - * - * Revision 1.4 2000/05/29 21:14:57 gerd - * Changed the type 'encoding' into a polymorphic variant. - * - * Revision 1.3 2000/05/27 19:24:01 gerd - * New option: recognize_standalone_declaration. - * - * Revision 1.2 2000/05/20 20:31:40 gerd - * Big change: Added support for various encodings of the - * internal representation. - * - * Revision 1.1 2000/05/06 23:21:49 gerd - * Initial revision. - * - * Revision 1.9 2000/04/30 18:23:38 gerd - * New config options 'processing_instructions_inline' and - * 'virtual_root'. - * - * Revision 1.8 2000/03/13 23:46:46 gerd - * Change: The 'resolver' component of the 'config' type has - * disappeared. Instead, there is a new resolver component in the Entity - * and ExtID values of 'source'. I hope that this makes clearer that the - * resolver has only an effect if used together with Entity and ExtID - * sources. - * Change: The Entity value can now return the entity dependent - * on the DTD that is going to be used. - * - * Revision 1.7 2000/02/22 02:32:02 gerd - * Updated. - * - * Revision 1.6 2000/02/22 01:52:45 gerd - * Added documentation. - * - * Revision 1.5 2000/01/20 20:54:43 gerd - * New config.errors_with_line_numbers. - * - * Revision 1.4 1999/09/01 23:09:10 gerd - * New function parse_wf_entity that simulates a well-formedness - * parser. - * - * Revision 1.3 1999/09/01 16:26:36 gerd - * Added an empty line. This is *really* a big change. - * - * Revision 1.2 1999/08/14 22:20:27 gerd - * The "config" slot has now a component "warner"which is - * an object with a "warn" method. This is used to warn about characters - * that cannot be represented in the Latin 1 alphabet. - * Furthermore, there is a new component "debugging_mode". - * - * Revision 1.1 1999/08/10 00:35:52 gerd - * Initial revision. - * - * - *) diff --git a/helm/DEVEL/pxp/pxp/doc/ABOUT-FINDLIB b/helm/DEVEL/pxp/pxp/doc/ABOUT-FINDLIB deleted file mode 100644 index d942e2786..000000000 --- a/helm/DEVEL/pxp/pxp/doc/ABOUT-FINDLIB +++ /dev/null @@ -1,52 +0,0 @@ -****************************************************************************** -ABOUT-FINDLIB - Package manager for O'Caml -****************************************************************************** - - -============================================================================== -Abstract -============================================================================== - -The findlib library provides a scheme to manage reusable software components -(packages), and includes tools that support this scheme. Packages are -collections of OCaml modules for which metainformation can be stored. The -packages are kept in the filesystem hierarchy, but with strict directory -structure. The library contains functions to look the directory up that stores -a package, to query metainformation about a package, and to retrieve dependency -information about multiple packages. There is also a tool that allows the user -to enter queries on the command-line. In order to simplify compilation and -linkage, there are new frontends of the various OCaml compilers that can -directly deal with packages. - -Together with the packages metainformation is stored. This includes a version -string, the archives the package consists of, and additional linker options. -Packages can also be dependent on other packages. There is a query which finds -out all predecessors of a list of packages and sorts them topologically. The -new compiler frontends do this implicitly. - -Metainformation can be conditional, i.e. depend on a set of predicates. This is -mainly used to be able to react on certain properties of the environment, such -as if the bytecode or the native compiler is invoked, if the application is -multi-threaded, and a few more. If the new compiler frontends are used, most -predicates are found out automatically. - -There is special support for scripts. A new directive, "#require", loads -packages into scripts. Of course, this works only with newly created toploops -which include the findlib library. - -============================================================================== -Where to get findlib -============================================================================== - -The manual of findlib is available online [1]. You can download findlib here -[2]. - - --------------------------- - -[1] see http://www.ocaml-programming.de/packages/documentation/findlib/ - -[2] see http://www.ocaml-programming.de/packages/findlib-0.3.1.tar.gz - - - diff --git a/helm/DEVEL/pxp/pxp/doc/ABOUT-FINDLIB.xml b/helm/DEVEL/pxp/pxp/doc/ABOUT-FINDLIB.xml deleted file mode 100644 index d1dc5b04e..000000000 --- a/helm/DEVEL/pxp/pxp/doc/ABOUT-FINDLIB.xml +++ /dev/null @@ -1,61 +0,0 @@ - - -%common; - -findlib"> -Findlib"> - -]> - - - - Abstract -

    eR4^|Y;Xy{ItN>@qOL6Pm_rz50d^yn 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%0AoWJfARdMluZtW%!Bl494JZIpeRN=B87qP z9D6QeLt#X0cUdT+)M9Tf;xua%C=0Ka#ET%{v`XL%r4}{{^^l`T1lTQSeXXwHyC?)F zn&p0UEk>-3q=brn+vYElGva)?Zht^lE{1lgL#wp<@-CvSu#~{176w~}s-9Ua$kY@{ z`BI$ayuo)zO~Q zS-`N^Ayeh+i1IPJpxZ}s93%VUy@4?h3LX$h621dGOoaLDa#4ETz6`{DyAP0)^5>JfdlMD^+qjNz-&|jXW*PqM*8Ph@o=DN6L+|u~^!L@V z;>w}!9xtVfh%UQaNCi#-D74~zuijg}510E^GKq|yXe-4}Yo!RSXh;;Tls~PNGHNB) zY%~xY+`E-z@SifFQv<7~S4cy=DsYPZ%b z64JOL)@%%sv2mbVa(=xg>I2)h-_lNWB4x=x%8ZGteY$zv6>d#qC`kxA;SvD$@=uU!}?2x+DsCTXRag_l>G9ZE);OFvHf>(9NzD)SX&LzWzK z@T@FiW5usFlmOxg!vY(jScR5jtQF{eA^p-(lW{@9qSidD3URK5#ONcog5a!|8FAx7 zuj7|j#AstjcU^5w=8MfNx$H2D;Qj~6)@oIw+zKyx6vSS~w|cx_LnRrvnf&~~f(l1G ztYv4~8L-hZmc(>~8bsbtXhAEY_;%M?iiVUsK|H8&f^t2rrqy}H9ueVlo^5`0A_KV#-;Z>Wr%G2w3C`4O!o>{*6# zh&Iu2Wre`A=vtV-o#oFKq7n)2+M2zB@@GA2 zOR0g0$%e)|E|NU81vK%`YSaS#EBwWJyC@v+j81Z~fqeP9N6Lf#`rT|Ruu#b=fA}RY zo#qkT0syx`9`SQupyu!EABE~b^N^L2+!D-PLrbzuBe8SU*(^33% zbefl-)0$6*#>Ue;zEnaw$e~$g7@IKgZn3`he`PY@B+2xf&F6Z=bAYH&y^c;yXRiy2G|+n$N%BfclsbvE@4YIDguP>sE=|xjc*eGE z+qP}nzQ?w0+cRf8XK==zGq!Ep#?JG;8ynyL*^S7^>h9>PGqb8P>#85!O?W3RpD`{T zt3jXAPZ48+GuzU}RCMuGcFY&aPYQ*Zry_Y-bEX+9Gm@{RBW`19X_r~%o+W^tbEjB4 zRD@+5>IxVGlQNt;DoT9d&on#Oet(Qt&H;BtUb$zuNimSn?`i3hh>TQ93O?ftMzhmp zy$NBQXu8@)UT*{Eup1kyV2km=5$tDLUDKd$NmxhbHbME;+D*qS9!rL6$`y}SGHvv5 zg*kiy5_uhSJ809gYvqBlJV~=>CD-C6Cr)u8ME64-G_)!Vn@QlhmLf=QB8~PEG32jXnAD;E4I`r=hi5R-D&`yEV-nI2o4h!-{n2m z4we77)<#e06LpfBGNfPG2IvVdybk)-hO8?!{AOUA9}-ul+_4T{mUX*EKiMDO5-z#u z{ua?)8m?ywClhC(&1Cm2)t*KfkoDHQCvkD%#WUx~!o?xU^Oefxc2Ku`$Q?tHAV#kP z3N4QQ`24NQ2b8;A&}rgLHvF2XSHq9;)fG4Lm0TegPLy``N;rM(;Zw45@{{gv>3cAM zdwfSU!cZira??9NL>e%6`dgoIW`<1V>19XUS_%Q<2lfd!@hfOX0l1Be4B;HbS(;PQeFhAE z{ka}3=7(IJS9O@663lTDln(t>r)bJ2*P5} z50i72!ED6jhiZKzj#1cY`xLDUiax|NZ}wy^eYn258qiAs*|5~v6#t%B8G+T%%QL=9 zJU*uoiXHRVq$rIs3SEXtA@~SZ3eXTTb!_yfdS@ayr`%cedCc5A!v>6`SNh)qX(^pL zHWtNIap{AP?wF`6RYDH*g}d?Pz&r4Aqkh9&jI8{JJ2vT>*^eT3AI3-jc{RV1&|AZU zI%NzD`{jw{=Bb0Y=D7My0>QtnzAtGq1C_NFU~@)hg0hhWi1?*bu)gPUQdLj87}6ko zmk#0n=w=9MvLUG;I+#-qlD|`5L+x1;{KF)fVb(4Gp4XWwFL(Jf&Cxuwc220DV``O> zx6gqbF|uN;wv^xiF$D-1z{AR0Ova#4hOfiLg!4n01nM^?ZM(2`m3wN#?FH4zp*wcq zvh;UZX&e?)`-Oy@7QZvc_&ik8TeV<1QXL-jcZY@Qp%s64yx0BPhRAki&crr+RGXVF z^)$*YN=-A254WE6bbBjX6Hd|o6Y)l8z~VH0kku4|4sOXw+c0tmzn->_?Pnp>YVEZl z)5|!ErypdkOGf5R1j@PE2S%)IV;p5*=XSZ3Mr>&WH-1BN!on=wQ>2ZT9>>yerluN? zLa*_^uhD*!im3|qSwO#HI}7Jl5L3B&tQ=@twR`BsaY{B^QFo22B&k-T#P0X1I0`Bi zm0rZXNHyr-kv-oh|JoiwB}dYYg{-yUzbuOsUA`kl)=Mfwl_^Q6Xk1uxI+~Snb3KXa z5JE9)pfnq0P^R%LLd;rr?4L&&#cUyxb~iYfpZ6i(7Ll(=$>LixPGj|SnmHiWN6ETI z3Msm-omk1ujo2zL?$+J%ylruoqpNs8Xn_a2hJd;0n zF7AnJW@i+lZ8z0qFK_nQ!sm{MYQQkJbbRfw8#xbTvc#J-w6GRa$Fw*4J*@Qeey*LC z9zUYA7I&aw+w&+lzMRZ{RO);VNo)?Ww_%J@mE}zBIyjD%xbK2n@S-%pOB-z!is15S zESm61K1Hm19NX*5M9(Vk9lWNd+%B{`Q|aMWxk~YO2`yfB;^E+V`i9FFoE^Gg+e8@D zu-nwSTzknsh%obee>yaFX;0<&zP|BBNelX_jdfZvkA2;lv#p==;bQtDyyThC9c^F4GdzGckc0Y17s|=V|xleid z#zx^4aC-VmMeHY2f+j=FJ9koksa0p}#y9JrjG#)W8hscy+NqMn$Ujw0F5UxaM@PRx~WKCg&%AlYU-f zPCFlY<^?{mhP7e@aib+8n)vppW5Jlw>-MrH0(k%}q5Hd4m#u1^3G0NTh=$x>_o9q< zz%l&{C`ybk??86#`1gxFzma|2&htnrL-y1}Mjv|KJtQV=LT>I+(*dv)8oX_PP^!XG z_?g+=IXXy9Gf;37aFFkiR~&>77*sjEBbPMfxb1u>L>+CTpn&9bDcK_$S3-@~a3}*` zrG1FVC6rYy%8Z^}oaTu*P)=2zW-xj6;AYdMx6=TvoXLIe8ONFC-$^M8MAVdCBe?vi zI<%hP`8s<~owTAu`l@9fa!UZnCgRpXVm}u}Ni9ZiKJGHGq}E%O-?BzS0+y0CaM*D$ z@h{)pWo;6_zZ#3exlM8y0mD850|t-2eSM*gyzu9Rjs~tJ~cCTBu6&!yxgQd4{O}$WBw_dXmF1fG7e}@GRS_~Syc+* zQbD)q_e=70Lv_}7CK;6KElJaAKECuTbw%~H(~&73-+Gub?|9nya8%<>im{yXwqNSS zB;M-ZnD|v;0d(eKm+HfH0X%XN4H;%_$eqIRYtH9rnhq4 z3gOtvx`R<#)aB+^c()^2GfU>_#Z0EC9#Mey>zG+om`Sl<{OUY=S+oU=I3%E>dHvp| zaDCV~mr1xV1hB6?WX`GnKQ!4)3^TJa?7Iqz7$i$5A zH)4TD8f`P##y4s1rtWm=%bJ9Mc8+z?gE_S@r7_>-6!5G?&dMUW7Re>P zlDzn;6JU*T=2=&>%4pHa!VF!boeKf9&xJMUmDB#On^hlYbpcv@IQcyP=TG~?;Ewy!gGpYlRl8||a(A}N{?At$ zrf2qb3W}>`WBne!R|?`d`J6njyWD!jnzNS2Gtw5D&FyZt>z9Lr_w&cm#`91fZUyjv z$$dAG>wtfTgwr22tgXLW?)?GN=gC_=tqK&|*Bn(<t%e)ZV>V07jYd2 zG-`PY!{7Pa=o%e$n}1WL@+J-kIspndY)3S2pSOowlQV}CHQ59TwYATy`}dP)Mt*lK zeUaJ36m5X727&OVnNw@UV?#{koDMJ zXPD@S?>?-FE_y%F*=nc!pA(pg3B;f0${7V_Vi`R`s?Av2M1G=SXQuY}G!5b+QS#E&KkwK_2W$seYlD2A!h(I>B3zPIJ@*0H#PC4ltl|AZYj z^Se`2Se$6~biLy!my3F8G#Emt%1-WC%r4Wb*|W!3Pwt^3rLb$PNxpW!^7b_SI0U%e zwOqODxbG&uYf$(n&&j^aeHBu}^ zI^EO10$i`UtDom0?^o5{%3;3CVaoGM{JoFApK5d6@vqFm{9V7rxc(imv3oz`?3~|=uk*i*^S~ynfWmJXT_3I2U8Y3;pu%g0WxT2qwL@_+2!dATxYPk%dNIP0|P>{aA% zubuxkvm$(@^Q`@7?qJJ3ZQ>7i+lQx_caq2d{^JK9b2+*#-;cK7f!~2f;=jfvhDF5F z3I%ZXPvT0dE4H7`q4K(MJ?b%Ezh(Q&nIx`|bk1NQkhIJ5+kABUy9~i;;PIt}q1$b( zQe+=ue4_Jue=fu*S79v&WiImN-lo+Lhc7c$MK7S!kYL=;bwSGt}Yjk z(te*c>i-hKN5RfgdA2E#-YYVbN2M3h6<_M57DUfk4bmp&V{0_M*nyM zE^n2g_)jN=DR}HfcY66X&-bULBX0ZFnz|gX{C|9Z-+NVpxq72{tgdQ@bz68SUZxbj zlH~k|&YDn$Y2n?i z&(u`g)lA07<4@-*Iz82SxB4)-88l7FZ#DC@Emv5@iz$w5=X^cAbmn!S7>5~bs-!QU z|FiY>ZOhWzcPmfe+oEMZe}nULM&QqHJC>HYdP$d%inE~ccahlHhvVLzY8~F@Pq*0s zdd5Ved2M$x=%CV?q(9DfKk*{FuE49=NOtp1;GuV@;)TKa_yG5Juk%#7|C`wPhX-}Z zqLHrKfuTa*^VOA8a@&*g`c(Z+UHRN0(EG}q$Np^G?UEeYplz6;c2jX7{Z1aP&e>Pf z4t+{kyG<;lOqXH9gBEzXD52!rFaf4~b+swrcTlithpY6T1p< zv2FJ&!j{7$IdP&KK~s-J+z%xSX;rE7ss`~f+Lt(>9{&0Na<2UifHU8U=%6ltv?(zPJe(_sno_?0` zaY6VV>Pb);An=b4E2S#85%^jn?{tBF+_#?(%RT#eS$AmkzH1pZF-6j^d%9da6JJZt zeXUXXRc|S?n(KeZpwv$BJt|P;qVT2Sfevts|5n-XI>rAwb_n-=89y|SmZIAX#&~?1 zgIa1tqell~yk{UsHaxOV-4u{9kP7LY=*fr((E6}U1Y*fHPXuPsKgRdQmutNEUh65m z_*zp)w*BPx{r#i-Vr<{pe_~h*d*4)9pZdJIwe#t*eb1Vw_4d0okYxWDiVwSZj3t0u zJ;-h{T0P7D&u?;1SkaCfaY>toNe;gxvvh-ZjRZKq%Y0IuckW!%)#YW!^@bYze!P`M z?$L&9`-`=nJI!~!E~mH7Y4v_QPp6l~ zSsn#^|E}CF?{4j83i-@u*0XM%MsjrNtV{yGr z1BcLxtV)C3ECK~U4xf7v`z@gbd&K)xrmK=gbzS47=hJp)Z2D)*3DA`6PWeTT(tu(( zo~|E-|GCGh{LAn$FK#!+`k^RxGLM?jEXFGC1O-Zudx-Hucz*ww6M8fzB9u=4%YKD)MTbo}zWE^FoRt|BMRoqa00gr?h@z=TY!P7ihi z#pyI*U2Gt-*D;5>x&1zEOfL~*{!d3~M!ShXzM;UjqYV89d*}-!1DAKP)omWnP_0o{ zF`^#M`pJ|IdF|xfd9ZS;nTc9z4$_hR9fD?k@ptY?-SdZ0 zeDcO7Pi%=oon=Nawgb>p={8;?p$Fs zQ9G^rifbIwl#}g_imT%UoeXciShVINk>%~<}M&4VZRGZaN%-H{t-?4LK17l(SKm4Gjk1K^K~q40WA z+o(kxtAkQ^gsSc|y11s?H$J!=#DKXsHU^kBr*`(8CY7dW>HWb>S0VKbc5w>P=TxyI z_B8Q0R_?XDN@w~~1fJB{Wx>vczwsp9R*-nP5DHS^bl&349btG0_JGW}io_Wt+Tkz8 zFm6Z>LQkJ&PUzpFhXu!0%VgVp}5BcWpIg@du`!wJXzJe(r#xDBe z@7=2c=p7p)$eyw4)X~Uj0OONtT#E)Jm?w-r_{Y1A)fQb?I3W2f^yuFG^|+za1O3m! zWh?%9s&8Dyvh@NncS|A5$aNWFl zH)E%o0L)wO&bX19Wb1%X)*(xcVB}uMFQbTQ6Q7~U71BjRW-zUKpS1aU zR9{&@8mtNhmGg&C+5u_)jx$^Rd_g~Ve#)CC?KSt_B%rZ1{Sb~BE=jQ2SlO5>P;%*- zXx+1`lM|43$kj|C`PX#xYLrIy580+g8xV0DvX{%wlw%|0=V?=Yt$HvJ4t424dv{Q> zEWqK#Iy42f<{}pci%S1siS7l+ETPP)5kBt(S6LAhgeu>;yOGpUjSD@@MucCZQ%jor zAi*LPRjAg<&3gyD71>;3gEs+(Tx80k@9j^j(qNjj>1q&smtyW1(Gv4xyy!i@z@jf-H3Yh=a=VLJabR z&zZ_mWOFOaS)|JCT=E*q_7}a>gLrS$F z7zm71hut1lMvfcSLiRC-;n2bVUG`cjUEQZZJ|BHD?tbmO`U;F#Wdk$9b~gampYjii+z zLPk9FCet9Pak(OMRFRp{uxqe%N1ke+n)Q1CYI431?z#fcp0TMPf4}Fexj|4O}=QCx9)n^xR;oumj z6BfCKh1UXT)217$z&EBtBg~&+wEuaf>5{zC1_63QnG$@`friZpgSj#1WD&jFu^sXb zUtIE;)KOt55 zGO9c^d!dDnh0iN-j;*jqC?JcqEPyO8NdCYjokbo(E3@8d#>d+2e^BJO1IdGI#e&8@ z_9UbpupFZhl*_wmgguC`@g~GB$lz@Cj527&6s;=>iVNLU6`+Tm^^!=i1K7){whBYz z)aT@U2+`&u#iD72U9sS#3SrN-C&HcZ-iqIv)9s zm^jm>d0#hp+NM=7wrkVC@V_P_HWvf^i$fFiJa%>7z*D!wcn<}aP}--oFB}gvfcz> z2T(})j|EIb^AwZ4775>3D;J5G~&SFERH>@iQ`w+ zb?B6fN>VYZb%HmtVBZ``0q%9xRIJdb{n!TkdxA81|NR z8d2ZNig}Z6mEpcgkck01rS_zHU^qcvSRX7&%R^mzQBc|8)+au|ON74Dc8$|uV{5i> zZOhqK@D8tP$L?x{9#jf?XCJeI48o6^ZI4b0izXkhU@n#KpTiBiD}0JP89^dU6?yG#HKDhH!Lbj*e65h)u2mZOK7v9is|X zyz4^wqu?Ols@~?{aVPHj1rD*J9&*<)+KJd^>=r=g6ZvmiEdLHLy*1^KnffwGH{G5S zVnsF3moJ}D?04nz^$|Jsg@-8IpnXpR_NI(W@B!U7rX1Lj4`PCtaCKE}AUX>5KxSOK z%PS@-2V!%P!1Y`u<;>WySY0Psi4sw|x2P(N;f}SpgO!_`FpIorAM~y@xZxO2RVQCM6{iI2)b&}KOx>zwLKQl6Y(n}WSWeB zf3yg0#X=I<2b~GD9rkm;0h2#{_PFyd{~y7HJ^q+>vjD8jx2a>n+qCD4?(I=fk-P4z zd)13+>Ut_cG&Bc-2WEsSUR5KgjDmzF@G<+HuF;GGwc}*lG-B8k`CLV6qjk=C$+%YN zzW@r<)=c5L-boa`UxzF$B|KPWWU-4{$}7y(Ax0zw70Y7awyb+ve9dGr_ie^Ne7GA< zAcySmF14O5Hl?#fE@-#12Tt6IER-(kGi<5xs=k6Pr((H9>u7kUCx5wtDOxlA+M(Lz zFg8FH${Gb_1)ekUAuqrlSL4h)l}&<`vs6r+y(pj9vGJnW8H3TnyUp!(sl_(uL?o&N57Ve(T@q6m4kbCUlMH&)u-Dt33Kv6Lyp zEmNU$J(hBLi+e==?jjnuRudkpBA|SW@vClEM-&q2B_L-z=+<_D61g@D2-&N*Ro+K8d< z!jgdP>Tft5SI%coytmr(R)t>xAqmF^D|iKpbSoThU!QbVkLKV ziY^#GEyEH<7*mMo*#0a1Kvqhu}eYp zZ7pO=22E*(Qu-a1)TYB=FP>mBclxgL{>1cN0p^TW@Qj{3->;625*XTaqM?;q%dM0q zO2e&`hrPpyYcy4KXQM)@S7AnzosWOVe_+vkXpMbS$fl$*u}a6JA*&inswAGAq;|8S z(_0Qgj`j>_+xVStC4`Um&7o3MMZWrCjivtNktk{!wK~sok3sw0b&95FZEFc;947FS zWD3O28h@wp#@-?Sv55<{op+Lar%P9k1Tfv0ABc$j50>u`WnXDGn24gr+rs zb8XIq1Knd<8dsG>Gvx{uN9Tnt{a0gKuu~+y&CBAbb>wmb2C=RT^%S6NkSa7ZFMg-B z=o36tWT3h&fv0_16O$x_0LD*12owqdlO-+^FTth+Q2~>sDGFz(c&tCZ3LN6rGpHUH zPiZP<@^dnIcA-E16?BSY>QXhWp5HTS$I=KOKyWdM^+L0t!}TYio`rj8*Euj7Vry~K zfZMwwnA8?Ku#gwoWyRCE!G?KI{|^iUi+ee_a<1rwqr%(Tmhz0?vyDPiLQ|K@^3Lh# z0E2>Hl(Q3eN4xf7xj=>0o`k5_$EaQ`QDV4W8e+hN@Y=<3Bg*m}#@alCfWZ4)_o{7a z*79lk^b*C#%j^DXx&ht!<=-0jd;vF%Jb^Fe?)TF=i1_n7iFTu=(n4#<#$?-GTP zuW4%9F|1;o?vngTSTv~JGE(H|;iM=KWas)=9I=1UrC5H4AgkO4)Lr@f^(!b@ELeNI zAf&Ub3UL_le^ean<|BNcKH7+dvy9|j52HxV@Qy0R5I4#DXSR<0LzE!89=x`%?BA3= zWA(HHf_X_#1R|}RQqr$g-$*vGFf}#r?ZM}8?37m)mkN`Y#%vw`ASkl$(kq16e_(zw zr>H0zyJ2lVCDu=yDq(O%?3H#(!Fc?E9}pwNPTtd6OUn*oCwY`oHe~elEDiu_eC4R_ zuPCw0!zU;vWVNeWyof?&V_{4ivGIJXmT5t4p?kR(d?XGE;?16BW~r2cm1NbiLi^`C zs0{9xO%w(F78E9DkEf*ViO*6I>%hcAAvc1wMT`f!!2IO8+VmmY1#XfKn`5s%^czjz zy=l>O_ppgFlwii0Xq#d?dI9Y(+Hx6;1b{I`MsYnu-%qE*Ckp>M&cg~$o)fs z{Xgc|NZIAX5^PhB;i|wTLsHvR*T{{ua9vA6{LY-3I@i~PQn{$-rA7`yDeGn@lTP*! z$!fG9RaF`yzKlzWJCsv;afJ|tTOYb@Yka^*kmYm@@KrLv4qa>1D+`#91DVcABn84Y##|&(xhwIao7r;`U-#G zXZUfKYCrDJxXl-Xpg@VR(byRZ;5-FT-h4<8exw^8;+ph zn~(jU=Fs}PhgPElHO8Goqa%q@`3{D@gGYmh)RIE0H#h-|_usdGcy~jHg@9Lg!=N6& zSMl7|u+;L?t;jRP1aKNYFn1g12|bzmJ`p732`36zJ_Te03M(HKnUfY0LXHvpGV5K! zc=lhX{1W3Qz~4>47Tx)34pis$^?XKsS0Pxb6FAns>Je_O*|)0i(WMAcB*Slg7b((T zK_JM-H098K#4bwrInGjI6N#Yc2w(xc$eXe{ubCo_`TS7+lKe{nWqQ})LGW%_F3-47 zwe8k1)dxZ$7J@_WZ1DLqV7(Y$&X`bJRITq#srekp&*$@uZ@Mqj1of0rfts=;kX)uX zD+eIXG8fna3aqS|@6)qIy}5I{KR5HBKA+AH`ok~#&lDx-p8CYNQwBU_B66u1y;3=e zBif;eOpP2XQBx(P+r$1+q7iT=y_%;`CB$MW+%)(WA|W!2)x``XwIYasGxtOZujUd8 zuz<@5V8Utymu5x={x>jDTJtfH*s75qV6*%D^_Jhx7xH0PZ~-CNOM;(FN|8$Z_&E$h zxx8P;zP$c-i};O0w#Z)?8x&O>`*Z%RNQ(7#NjxEhIAN?QR#D>NcnInA{Udw`X|d~U zKY~HYPbZioLQEzx$R|(ftrZ?K6_eyS17b* z?~qW=5$DK2tH4mX>mxOTeh^sMzsN*7#BZhw?$3=eHw8C|JO&koiPqZ93qm)|T-J{H z5?2@F`1{cg7SoNj0`JIQwl$qZWMJKV$(3lAM_w2bbd4-9Wc8)tg_)kJ;1OW1ir4^( zP&Mt-G@I{OvGt|jJ2Uj=+9C4iq^mnDam7ZWcrsKrh}7GXRtT{em#mcv^-*Bxt~w9w z8p>hX(H_MIR6%6gpJ9PR+m>p%W)abCnK{nnI_PFvC1e!l%zWwDxhb%2#W6{C%ud{Y zV!^$Wjv1=KC#^%hkYWhg*UsgZlIvq}?6ry_r2mdxP7@nn`D$_LQis-$xM`=7ou`>` z%{I`s6HhCd8xLTUP;Tv3OQ{-(gVrxnHZD-6xA%RjDM&+n7nEwE7ov_ggkzbk!tI)+ zXbA;+iF4H8GF2(XhtoQ`4n#ddvflRnmXCAd7O-aXe#P0#yGCT>GvR3lZ`7u-?@Koi zbgzmSlxUihRn{0SqucKcoz!>+SkvVO5;osZtwlE}KZDYU#x3ILrE5cqgjqGWr%}&^ zAa|NzVj-=ar*0&zK7?s`3>+x=Y0=Y3 z#{?3{IfI`!)h<=fLO-P7`WZ3*(vpo+(y0NcKqowmf{~pzIrYmkEmi zD@)<_&;Kdkd$)fYd_qje{$Ceu_Dl-KPlkp!{O^kHap*s|kQ$Jb&yZ%3)jsw`M`kD+ z82F8gMG9TsR$}8q%x+9LxY5_DdQmP1K&W{OaUq@u1WBnfTr005v z0Zo|l{C>q|Lis}yxxS2leJ{lOYG3~t_$#9i#5a}1L70Ulab_wYQGxA4BZGu$iBa;E zjfFF3F?%X@Plq2!MF%qvSk+=pSiw7e6}2Oj zt_o;JsX-4O#f6HkvO;;R$a#rDIo>3ra&+Li35Sx@gM{qKfA3f%_Vj&|aNnqUo|pYc zBx58Tdf~;dDomhwsbk+X_sqa7dp8R?vLNO9Ft>SZx-s4RS4@EXQI)00?EY_~2dQAM zQv;6#%*ZGeA1aX1ccm!O#QaiM9Ep{3{~(R_B4@Z!VF?t*q^Kr#_f1L3W8C07YCbyu zD?QL!6j4xiyMgAT-`oFXl2xh`4I?n+{BrK2v^B}@P%Xfc?l14Yo}q%u+D#-DvX z|5ei+3)zwH8!J*6*xhu@q?C-JH5#?MSCYzM@e-|N0{VJ8D4%;u6a93iFPY_`w#?pFK#QfP)uIsYGgbxu_s) zs8n)OpS7`R+^F{lDG%Zl2TI*Y;rDXqU~Y#xpoX)W0pc0^`lY&s?D`7D`-dqYvs`t4i*mRu7OI7u20QbV<3JhVzP zwOyCfPIVSE{2;I>Gk8BX%KQfs0<~4HP=HWcgjM^U05ZtN&sIvGA7NKl(znAoA z+f1Ex^>$lWl&K)PSX_kF^54+&`({CQp{I^Jd_oZQhjdG&whITPS1zC#7MCa=y9$q> zP6}HRBcRINKvw+^0?Fw4R0Zl#xu@k^z?4*a*HXC@o{dYjf+ke{2dfOd_Pa<6I(sg# z2&&&(jdfq$Z%cBcN`cfVBf)&?$E`%cNiemuUcTSbco7O}6;ztmBa> zOGW?LxEJ5^^9pj(qT(?A+Kn=&|G=zV2t-j$ZO1i-{|Wr8`*#r(`7nqW3awJ5Wg~%p`uPs^UTjfGwX8?5;C6IH0rMf2R@t@B@2~<4l-yN2wmxLJdK~I6>TZ<^0fOO2XZ_*C&P(Z zrE*bO{?1}xDhmN2;UT}h;wL%!RtXLj9B`lcBG_>c`0$j1Df)zdEcudt0G6QA*sCY4 zGPkIh^(~9)jq}|k93~(Rv(~TR96hj+gmTtI(LA`mQ%<0Dve#b}%6;4v zrMsXp8MI#*Jqj1(V=Jwx&ubRX9v(=T?E{YjuInk#0$N??UVIeDxH!EJX};PC3GTG8 z!(de!v3+6c!cFm^RDTISEiWE%gY`Uq36z$o*LRL$R#>TIef3{yqzvr7hmjGy)kfLu z;D6#AqKszsp?p3*YoVr*_F0c7Q8D2PWg_qB(QRTYsF3;bW?4DPkeJ*ep!cKZvpe0Z zV2}3Ieg*Og?e=;Rja1<`7J;MK z(ufijoSXM>5zsf97yx~<-xtt@#@xkbtKV)Cx~_j2tLDoQ#qJx|F9E!@y64Yy!RK_@ z{jZR#@Bc#t{C55ET)sW-B!zVc6i&YWANjVK`5fr`%^7rsaTfc)q5IPKQrAlzO7OhX zg9;D0ZFKuJ^&6Y%tu;37Rl?@sFJXu3Gv$sseF>zIRs(143yMsQ5*^yUjQTlMNr?OC z9lug9BomAfaY;=lN0wiHcrtZfCym=D#4fbrd8?phZAf+=P=T-^u9;T7HcHf%CfNj8SJ3D&VO13qAxSvmtTH}pk`Kwy)&dN zI%lPtsmO+wloS8-`6)9|ReyT=k8U~-O-f+&Pk>=P%LC&l_r3mKh(r_xH2+-Cl*1Mu zaj)4MN`T*W6INM%k(cF^V_B z8*g8yfc-l|o8mh|Q{q~-h~xPv*wzC^5@d$%l;WI9w-tun`P~D$5oT0p#5)S`BAw-F zewik?4>_g?2V;LvlxJ`nrUiV^R$56wBCh+Rh@?j|AyPMsI{APxFnTt?q3=wxH(w`e1cwUZ`?-K5 zMDkjGM!U?}IQH!jfEL^YT{d;BXP(KGaTF*cO|Mb{=t6BlqDXy)~h}Ofdw3YCMnM}#xhHMzpRV98r;D-uf{46Lxy#e&ULGhd>byGo zSyH?11eu3h3&oYo)i@R+B7s*Fi-iRRHzrA_?!4-=!}n)<-F~dR>%a0NOhcqz{y@Ub zn4o;rITj$<^4ki|LZ(>go{X*Z?-_)s^p?*AeF^D7-CxPwdg+vrp}fE+oD zBhT=!xU3AY8HxHD=CERDp<88R4jSI~2&n{s`Gdrf=Gybvo6m>3^$OVpsrH-DXI+wA z63W|`SZ!xR3N&K19#|6{u`#i_mgs{7rNTRYo?1=@J4UWNM#qz&`;s5QeO-K~2*gda z?z=!EOqpdzCA#xQu-}K5ePTs4iVOqfMS@%zia+0N!II;n5~RGQ6XType0XpY5k=?p z&oHf8r0#4ww^EYNSv~Wc#5ENd?-pgKa%K~WP@uWF3JWkN28~kp{qOYkd_g>B`XJeT z^X|I8By4b^UYFEu4ku*p=R^Lr8i*vET@VEn9*P=4FU?s46B&!{>B$IMLDjG0L{7Gg zzEJ;Np+1OQ>Ty(4$+&5QKnQS=_!V~K0w9K8$yIA&*GT`2a ztn**9VTZO);Z93=|Na>kK`C2ZZT9bJe)tRIpQ-O9RO?k1BLOtcS?B_5HOvT}0i#8$fLnG5! z=PZZ}^lMBh!OmJ%_312Zp4Zt23=3Z!`T2)>cu?!{SM#`R1NP|pT>@7#^aji7Zavm1aJT-y#ozU(IT`zrZ@!t-sSE!L@$jURuRlV+i*E%A zX1_a_TJsU<{(nV4FDP}O{|;XKu%x~-7)i4*)1Y@+)@A2$vjk#mv?Tn8T}aix^Wtu= z9~<2wCE<%J+v(lID@q8f1t~G%>-Yf)u*?Q7yC>s&P_+D)v)ixu2*b}$Z4dbZ1=YO^ ze4;F5;YBut=rR0l9S-9$(0pWIcL%sONbwHvkI*L1FHK09Vcasvrhh0he|_vQ0uZ1mAauc zs#EdyCRr)>$-z0+P1BTctE?$TOzo^6^69Pi6T2>~M446CxxhrkM@q%hcX_7uDUJVF z&3B5`)v#RKwyvob}Zr_5! z;G@J`5Xk4(9fvACQ>g&lkUoBH6@kF}YffYD#+M0~1=P8(W{&EVC{oc(mHz8*hwt+ki9Axu`_z8upuh|8vw{nEM<*u(cT zHged;hC5C^9ha_j>*$%?uQ{?m&&7YOd~!jCEdv}p%S(tYr#}LwIM~89oS@QJ$bn6> z$p1Wye6=t0R}xqeP*W)p5su*;vZM+I!+cbL*W47>V;ty-Ww!d7_li{8wmFs=vqSSd(1E&XJkYoATzdWbcYI(?3ujXyw>1y=!%VFE$*w4x+r&ZZfcyi>#&F zhHZ*(v5lAJ&BfM;N`q2hYLjhsv3Z6PeRDmaYApT{Wp*e_IQJi9Rtrqt(S>x!0cydmieY z2{uoba_SXkzi}8%YaDPzJFcX(!K~KM^xu!E+rB=1R@I~a&dN86*e=qoFK&G9Cdz_? zt)O!db%5h8_aA*)Gg7Km-gZyA#j)X+aYV0GdiS9D9nl&1>5duaOh2)Zy!q`6^U1EL zzh~Vd+0}J-uF3Srx)iY>Cf|)@P1;UE)5}T}QRg}UYz1?s{Fc1`VDvjFyW)twF2N_< zAUE`zpSO{ZT!bKeKrGJ*Yg=z*FLouQJCkUP`X(JV4xzSdoIYq(R&RDs3+Efi7^j?j zpu77Zy8Aem>_dF&TlZjKy>&JDaY*&pT)L0L3ImpX7E5z5VXj_Q;Z;r_lIP?OW#vo2 zrs{HOooLUi=&%7C%Xhh*V<39inddNQplDIdpBKddX+W00ceVE`x5O;`oKYJU`z`S} zPIe9p1UUrJ`kTVY76mT;uh=w*Ace!3IzEk$@{y}Nv^PYLFfA3oy#h)Vf}Yds&edXB zaI0)5k(}H(u{K|0jCYQ1`QqCgf{D(hbQnu%_v$THr!(MS>Wu9l)b0H_Txsyw(Eea=GHGA(*cIce^=hw{V#QjD{VkptFO8de-7GrYk0j;Vp6;Ep9~^rYp1Ifzm4 zJUffyBBiBHCo2fhgOVxQme}>x6*a%ceh{j3 zhl|BDuQu7z>IwG-P-{Gx)j`e1W<|xm9MmnFUO-YA7wNtn7*)qAT}v}a*tmtzYcIsEDG2B5i5FQxJ- z(;Gf@-i>Z-D5D!EZ}YYLg4~~v6;CRa0b38?R~$_C5JH$T(PeR^MP(_-AuZ!1}v zw{zlOZ(Ta=)GxV#5iHcdA>7W1FSJjDDC+fdL~koY=0%8QB-jPiBy-{{+h$uVO-h5a z!5R3mF(}vf#`}H~TTuio09ggzOH6ZgO&`YkA!3=>bRS&oK%WG9N?O z+j53_HA}TbqH+KA(E*-LM|WAv7^>In*=4Xy!g@@q>9o@O8pAC*v~_rAwo)_$O*#Y7 zm@ncn&!Rz>@vH=pbz`HSzDHH$cUk@Kwr(AA*I)wI=ZSXyos*jTP@g6`uCt{sAYUYC z9$R2nv)vBM!^!=tYYLieJ-g%~zN8pgwKy&R=O2DAGf8z>cINfY_EJ?A12r)h)~5I8 zY{eR_Gk<6^v%ebVIWzm8?VVsca}T=Six`faPVhM`d#TT$8dv2VTWW^Zt}$B4t{OzU z%0xb2@48Nz6=rdV+$=(obP`D%HjqTg@{TS4xj$5>z5DiED~I+EMs709#XhaiS8o5# zJ5QHW8E31U|L%O>(wU>;(40B7$wavrL=jETeQ!-RNt2JH9XKJpNdSTf-?4RcG>UHP z?V*nEvOMm)tlYm$ewP19zDpTJ^AgJdAi^nTFz*U$o25RU9Uv6T31Xh{mu*}$W|$$cjK>toZr?@ zl9!t1c&S-OA{1QbFP!Sy*7MhI@w#5L;Rx)$FM9}mbCJbwg_UixfE*}p`FL4;62CB% zD>Iu+qdOefq3d8iDCF(Ju(noKtvQ&BsFGRdczP6%MwSa4IvS3XbU6MM!=M7vAEe%2 zf5(7yX8A&W_cGaEef{j^GqV?=|3SNW@wI)|MBn}K`EPBExLoAx=ij`1@$%2%ax9pc zj*^s}gfjijA6|a@Kc0VMw=euW%9Pc{PHQ2#Qgpvu0M>PF#e}rsgr_ z?2gT9zI)=Dc-6~MdG6(*ymLLv@)ANR-b_2_AlQv`kecWC_;k7p+*Bu~vmH*pRn-K% z$L~Be8w^4C7ERnr#|zi-8XdGDp8+lvX1`hC8B`E@+`rX(j# z=?)QLo;C6IUPRm5HeK{*bZs~qXE&YKZNux%@wzAR`-z}f^uE8obmmw4AFx`o?%F=8 zp1Z~<|JR%K!s0hg5D3_MI0!$u^U+=fgXs4!VLC(VbOtx*l0gy4A9Sz1Gl4 zfW21x3iQ406sjMY?VuOW{a>&NmVV#q*71MF@*Pj$D1@ByoJ`&d;?`*5t&~WaiH5$SR48V;hA>_ia)r6>u|6c^ev|Hv-PP>8ekiHXq?i(K`5U2hs-aRu zR%x_18C3F10lU*=x^5#k0o<4}WGh>4jc%u-a)2|3;hauc-x4$EcT@BJ-P9e5MI1@F z|89z8Mz-uMd>P3iAAl}vO~ojBzwUNwvUCcUSi{klYGZNKK-|J0!0AE^Dgs=hxd^>^Q^S+NV(=JNLz!V((qOT0P{QZk%PHFGKuc zTSw$;3bsiW`II-;t2y=p_6imFMMqz60ySGulOD)A>>3lr7?o%@=dSa#QxEksL^^lv zy!IMT)?zqH%=V!USFahitfZ7KX&(wmJ0U56pFaY$;Qo09mVKXn=${c zUuZ!>H@&kP*$dn?8YNjC*NwWHJUXa1@OZR#EB(LIs;k;G49YLy>C^S@x)>bKS@5yG zYn|X~i3w;|R4y9Ii74=CE5anfT4>vx+QH3pv$^)$O0XDBZqu>e<|0@sG zWykGN-?EI((U&(^Ms>7|7`pQ-h2Gfm$ZCHpnuDEs>+{vMMvQnQ+8SIOuB?pC*XlON zLL#7~6Ss?}K_s4?O;={3mi{ zko~OrKb-#Tr_R5h{;bN!)z6y#F#FjDO@EmEEKEOi6$;&jrCJq}BCLV4+RG48RBN{q zE;25K<|nL#CRz#c-e_-I3E~e4N`Xm=CSEDAPr01l6{hiP!vYBwXY7U$V`moK?wv)! z`x#NlEFc|C;j^6u3_J$JJc;d`$Ox2%h-LFMAKndDgNE(DYoxKU{+!Sdd+D z4`~l)y<1$w9biE<8Vv8)MqzMZ9w{8!J&^z=^Z{`#PA)PRG7psh{q< zAFo~$b>b0H3m(iT)i^KVU*DZ?+bar|M!tTJB*Vn(Wrb59;jJD;AuMbYUT3vl9Izc)ov{N^DmsGk<2X_U`l3~_p zLUzkI-zQ!c5A|WN!CZbA>sH6Q_CpF6o6cXj$)m=L*00L zypH2;GSmk;9Cu$pHs{k2z}0orL0T5YD7$O0w{`RS;5^~Fo_EGOTc(leV@Ju-985F3 zS;xPcX__A%oB2U%lL*t2oeS5;cFKvI5;27DJi*PrkkD)K~ z>A3RPfdJLj?2l!VHIb!h6YzQEg&gqaB3mT0R(rRuDhggIE98p`l=OF3uVi?x5npFn z2-i%1p*~cd;VAcn0o{{TBRXlMn?t>WGxB^{ zpTF5XiG2WwqQ-6%V%xvT|gBzI~3s!m+NBm~8p(SHswpe)NKySBq z%l+X@Qs~sBzZ2Lx(cONiZPzM>h+0(WiNSNj@e)g6p}RipnAw#;lb5i}Gu2!oygB5bmXonPQ>;!@nHMz?UlqR(h zZ@ar=n3h7ma7^XQ2>fT2E}x%Bv&1&TpIn0H7>d`2NU48{cIYTT(msVy%svO^RVO3>hlT;dD=^+UPWmDODhYN zMRlQ4uVsE$QthtZTY4GrjVT1<`#OSw9@9FlJd-$9qCmOT$nr{?#J`US3Q?gh&oD_I z>${>p*P7Qd)&vQAEvk^nAf60sWv6rOjrRAbf2#fYwA(+eS1nO%P`tg`=Mh_2j*5$olTiMG_ma_=tB#Nv_sO~vk170+ElL6waUhlY7@Mr1tD{eikh#?RX-u-(yyP>Oip~)=Nz$MvY zw%*C4hu48Mm-{(8h30I1T=(%T#X#6@`T2(>3p{a#kYmX97 zq^eE;;s4iX2>TJ3BJ|@>f}?Ng||N1qk_QI5==3aMy80 zj=2W2?n_Q`&2p1kiFHWBmLp%NM4Uprr_)hiImtZXo`!!w_Gno0;V4y&dhRy75iqJ=DDnMh!Sl%+EB@lIV1uizAaU^;;toO#ATn@GD> zPbC}k#c_s{9<6azmt}zf78EE?R9{~5_6E0;pI{OlzNz`Q=o)YgW}07;zHm4M8-Jqk zz)%+=(4^kkPe2MiT*$&}!uIw_p(#H`;>I-5sB%t$5VE#{Rm`#f-yym7&{QePW7&;a zXNS;FuoJ1P0`G!Bao!@xJk^-L#$WUhK@# z7CFQeJGAAT>k7qOs) z1||Qs|8N3~l)+vgD2|0EEuwpYQ1RR}xrHCn)#hBsGI#>&UAiv3_1Kzwp!Sw?2u`Z| z(WlZbXhui=3tf1PcVu@3SE@&qBbrdREGhI{V)E#6fIoc2E?VMt){%^^7mPzSajGwm z`Li1}V`keJN(p(DMdlCYPRe*iuNy-6$;+A_c*)3YmcFhC>Sr`|En9kB!!lLPi#Vy& ziQtay#8uDZT73JOmtJPM@^*gaV!9d}c z{r23HtkzUR1J5mz(hy?F(G7OC(?7(@|fXP1+nlEV?fz!!`JGRlpCdLPM2wkgJNoo@>Ys#TO3%bjoBd{FeIMc zaJF*y&m-Oj<2dS2-CcNjG#O7a*NN3(7gYzJn-SGgFoQDVUAu$Mc@XJRG{Qm087U+r z59SBJ2QukDx<(}Iyv-7}hpX$YQyXi(GZ09Vk)5%!IdPNj8KtkFlYNt6qwngi_kbYF z&Z#lA;csV@8nO!EF`QphxM=6VyC8ZTy4zA@Q71e=43Tb;(%`_L!})>^y1nQQ)7tws z)lqEz+6ze~Z{;|IX{=ej*S+V|Cmzu|`&(y)>?I}_whrL4$(Rs1fM%r73A(j%>SHAm zs@BndEjxMM`@%i=(W6J$b_SgpWH-2e=`ZfP9pvu)f=$ROZ_*{+r0pU&p3(dzK?5;B z%#r&cv>OyLnorj|gQ}?gTGK_gOHetCa2vw8v6;nb?MYac2codwC=Q5&H>YT124y-% zKG^+*_|dJit}nmvcfXDz;xI^FMQm!sRk?!#U^6Jm$aR8kcQ6>%%_#oSMD``Ho$;VG zG-IRqy=Op597gd?oEEt;N^6D{+lm*@=aizGq~4_SJ%GdFzBY!v0q6zcorHB2EHbT^ zsgV)cn8tsuB)78=>FjLnr!wN}BPJ`3ekMr*!7OX1rQ_yG8-+IpM=D{l3`;ah_X8DS zhGi;yaK?={$Fy8TLr?T!yLPs#Dt{U(Jm5V@3_19Yq`P2#k>d)(N|w*awliXm_u6j@ zFN+=tq!i-k_|jR^uUPk->Ws*LbG<&NVg8f|qYH?=ri1Dt>|xE}A?sWo(acx?6gHlP z<$w%OL%<(5{U%QGRAydN{vL_uR7@sS<~6747R^amk44-DwW%Bo^Xz?U({ZgSJE}G9 zmYO&ToBw*}A%}*PKH#&Q=w9nJsy-i`s%1Jp)HI|b^V~KM)4h|)}-!k(i6}{MgLy>{^xFSN$pjJP#ZXx&q zNZ$l^xrl*fv<{DGJ=ul9NNO=}DsUa#=R z!FW23jh69oqs19ElT3b&|4$e#oV!c~fUf9N@rm^wyt*kpr|Jy%43M%j+zxz*$sUd2 zwXq;_;O~jY?-Y|c8I2F;GIS`g@XaFMd+p&PzN-miT+pIa*xY%NXSW^Yfjf(>c)LJ4 zK81Hf?SuHha9TyZbq}-7EIV)H3Ijc|8!sDfJF*W>Y$W<;2@@ZTEIFic)aFv{+#j{W z^F>OYj9UP!-T#lhH}7-e zy4HoyzwA#@kxzm|y49N11K?o5alh9#T!S)pYj*3pa8v#rAw~M7la-$?Y)c7u-P*l)0u{S^x^96P_f@b zP!&x1%XA9b+Zl!^omt8oyZc>D)p*O(dv#Q?%U?>k#hG`oj$v~}1Q1WVzSBU$g1!dv z5M#b2T+qEcfOp>&zH6v-C-f(;=ro39hNfXh_@0_`tdC<<{-&3XSLc(eiYPRY7Q#U@ zS1};5|ai&~1MSI;(n^=KWd@1;`kY=bVh6qq^ zL(Umu{D2rn;LKmm2^rD~U?{PK?joRQFN~=qogW)vv!7V1*!(U*VS|Jrn>DH@;Xqf5 z+dlLFQ?&S7_ZR#LpQIdsZK~NB0(vg_miHYLz}WHt|?y!BT1S) zkLgOJMYKGB;l)csYqlg{|F{f7w-(*;&Hl7N zWLl6QkaKeEFt(7$31jlQQQrt;$`UOha9J6PTwL!sDF{Wu3Sn}G#iHO5{Acj*!+)_n z+Fy!TpYGMssv?p;VH&qI*03(7h#sEX`-7OgvT{ z6wuAi(qA@Ry5fBAW5&_jvTEx#k@SWt65hfXomvQf$60n5BaKUQbY9? z6MwFZ6)>4%a!7~yB_sZg1Z#F|yf696vZ#owLJHtG!6v4MaU^%jAo7n!Y-nK~o861P z?nM$#ANPbzuejM#gNKYM!WwLzwxtV>gqvilKDD++4`yc{8$sHQif4}^?RUL}wWc_% zalNI6f()<UTjU+t$)QX9FNN$(E)))w(XBL{ zYu$LQ|B`85x6!BSaCRbjVTOH{QU^k*i6hjZLO+5YO#1ek0onz|Q4g>4Neex&qlQw0 zDO*<{88G>gY;Ww-A@WD#Fy>s%Rw{!@v!e=fbVVEt0ZN(d{io^`tzfJ2MbDlkBZ~c5eS}8>F zxwhc^ZdZ&qJ7+Va@KE&m+l0!j^VBC`-@wSg=q{Q)GcXA_;EF|BcM0`)vLJg3ok=X3 z7;p{`QQ;KZ5buk%b6|nwYqI<~1+_*N%-5iXx*}R?*u%4R4;0eG0rtUbSgEvG?>3$G zscs$9Y<3PKH8+F{!NauHhE}IdTD(Nf9$STY3?nfJ0*qvLk0b$(-qr!PDJ$C7d&gE$ z?zHn0?6%zmof#3y2yI38$c61sj|vorR734Gjld?=Gv1l~x%-FPAn-|Np7_T6=Sm;-1wJ72c7mK&`5EIUtO{E^sTi5C~ zbX%2QX$DrXt)_L@*s`q~2D(XqJSx;5;il-+P}GO5{yh34?tpbA(9%#wX?V8S5fD&b zx7)OY=ky3nf3t*VatG_MTSP7OS|>*>TCxS7F?z1*_0ES;O1;r8q!enj+0IQ4$QLOE z<+U?knjh#yL_icqM59E{c&*lSp7D;D>%~RKhM7jaD+N!!S|<}?+~hl3p|na)$N{p{ zZ#>9g3FuGazD<$ov%02XP}YCTS0>jh3Xs)Ywhtr5U>PXR>lvxJh z`7nv$8OB~2dWDJg9#Cxd*eQi);^lzXyb&sM#KRja^r;O_uEsTEY1eVQgRt zB?N>r>V-_2hm=#wWY-_Z%Vk2r+7BelATuCS><)e`FP0oVH;?Ka+c1xyQg1em_4gOF zUflSjnQfuODi|5j>vdYjIt=uS%FyNSgWOv`;TyU^(EjkqIQvMS9|2i_a!t+)9_clt zl~%1@{D`p&rcY9>1K87CV?2E6vvVkgRv%3WCTA5w#dASGJcZ29COuYVC-eS0wnk8` zLs%#Vgmy^qR4p~(L_aM0wITy&PlLhX8fA3{R)n?y2k9UofI@NQaB<$81VE6+2_T(X zu>ews{|x?J`!!-2&g&e?ked*0;>d2(n-ecS!ETfHf+@e^osuVW;R$T@3NpRv+LV|< zUR#Ga#EGPyRha-~_yT4TMm5kY-4TYsK(6or_pZ**HPA1o@T4@55Ln|1?*&rYhUI^< zTIC9aer?#u23axvmGYzN!MBzX_#et4CKc^}Bwo2m$#5C`9VXk15{u=<<0aK-;DRZ~ zmDV9919uK1OO!2I0#CUhh6a2LK0_|~7l9#`OM%DGAu;d|%1w8AU)c#Ya7a?#A3_HB zg{E0CfA&}$TWs1LgYVQyR+FWnJjLvbk0_ba>rYBi|Dn>X<9z*j7j^iEYd3lCHwc@f z=zS#PGr`D24xYIf_;m^naj!St^Ys=90Q&m*uDzej>+R-|_j-TV*ZcB%hXjB>aH^HR zSNXSTG3ljllNY>rv$nl?)Y!Dtu4X;I^-3G#aB-~L&1ZtmZmpeN z4pa2}xjcVZYiyW!u6>q_4v#i4g5vg%j<)fDOdkpnNib@`fFAcECQn13O3G4dtk_LQ zdf#M_Q=KW3lo5EHFnGpNV@R(&x|w=yR+~cH69OJXO_DFiS*6`21aKq{ibp{mpW7hZeCTySW}_8d#b)G4 z1!P!gIcjwY=qsM2F*nvFOX=n|K!5ey*Z^nUsTWHz3i!|9-}TQZ#h^GsQVd~UwF&Df zJH3gnwHQ!1b#zFdlOhg_W7tdrr>oIH>2V)#Z!9g08;I@0H`u}v#cKUbJ1BcHxr;^* zEk#WB-PgL=H~`T5$u9CIHu7bL2O{cS&cQWelQ}sNvE@kQC#hR4l8dV1dlkWzWt4vP z0VIYa3N5v9mZw(%g)#E+5)fJ*dW9Eb>)6!%O?z-+24A9P3CYS!1tU-;iSDeoh}HDi z2PcP64oAJMhG%;?WItC9HQu6WtfqTt!IjeLlAq|J?Kp`W@wZ!7l%%z zS6S0$Kw7*E#Q>)03f96B;Hj8WSdoHUaFfif>w-AFh2~}73er>g+1&*sCk9tiHIfYc16Z}1~LiC3H!{PF`Nz<8FH!~-gKOD(-0!xms)BzEUB;}v96;n`e*#Q z60EgZbORsMypnj8uX_C6UtC?_s>nK|GoNb4*Rq#dUoBUZ%R&uC+MOoT(Epk^D zR+$;L4;x#VVN|cznwbFZ{2e607U!|M)d|j;;VTvFm3P>c3f2rjf#H{W>^^_w;$g1# zQ%v{whEg#cujiJ)cXa)=^6e+P=+*1|};T@Y;13ofEDhi%8 zBr7}cIIGn#@IC5I{xhQ3Jk;#^Tq24+MfNR{)u`x0N_O<61kkw2W-EOgD)mj3zE9+p z02eTOnz_T0SkQXssA@Hu@vtNsNkg)|xgxZvSQeXr+zYQt_0kEyUxEfoXnQPC8*fx_ zr1xHPxbR+3s68=?BN6QGkbx@fc8#^%j~+7$Jhb%)Q$_v~18-6CH4odXf6bQbA|A&Wx++}`0M@^wM+~+BvR7Bu(al-{Zdr{W-?vz!Lh#BAqkBlRV7J*M?h@#$X zc>)-d2K>KkSVAk5-<;rQC)=lL- z3Ul))M_dGoR=pkh=$NTAGnR;L849msiHlmDS=fHMl}i{@Lm|`iWe_u6Zy#mje}@V2 z5KQU#65-P)*T?7cIUa6_(Fqvxr>JM`tUNEN4bz@Ne&Muer5{vgZv6mL-kg-p}FFIpIfGyovD#T@A#@8Yem)< z?~;YYytUmbOnZwnvWen;9N`&WEMr-AffRO|%iSp+xNZUMSmUUz;kzq&{alB7)4P~y zF7cjTtteT2%`W%fmIyJDsKaTTp;|#JONq{$sEsqC2(YjRy>9%a>=h8RHzxmudZX4f zoZVeGH4K!-9PZ7lqOF!D?n$IpQ+}L$TAIKFQfdIKW z@?Zcmx4)QVZuhlbZ^2z%&(cJOB;*z2z0<0DG5S6!fY{Y)*K9UB#fUKma%Q9+3Sg}I zVU3gieInRE13R3skYseqw1b=O`QoC$82H^b`1j{33XH2^@A+U;T4<-r5aoxghY4r^ z`(u+>Za49oVG|hb<$eS1>o!F=UBN^VFZM{FSU{S9ISP=OYJulocrjZG80;v(8WWEo z!HCIV3CPvHsUD1amjWPd3^gnYR;q+)pd?s7BpS1(Zmy;l1F1R4;BH>QZ&x90GqbzIA zJt;AOkgJhhoZ2+drX04H@#41`E8Is8#(izn$;Bnv0P)O&xt6I83Qv>rl`k2f5YFI5 zvM&|{%95L}Q?lTDx#mMbb3dnyx01#kma5!wlY|Lf6}TY0-HC0KqHd6&3AxkC*-Y)j zx?3jOLnT%qq>K4GvYpQv7moJC1f;`Il!EWzP!TBgIlknfb_m$!Ud8z#WmoB2Mt;60 zAsmfEIu0=lg>WTytSMLF{9MMp(l(hkiR5F!1Rsd(C`Z1Bt+OgU^c@1Wp_2;n`c)90lNMD_*EcYys9ND8(*gV3GK zk}2coS`?6EbuBe=-pW&wG%Q{y)8urES&V7In49bB9SQuxxo9fA{@87)?@2a}OLzrD zwQiPzIST#2SJ`?+8I%Hf0%gd=Tv*Abq7Z-z3Y>v2wI+E58C67Jsr2n0KTjrJZBY)B zZ+4x6PuGi-%;ic0sm16dngfkP?X_~o2l3LmkHm`c*6ul%O0#4sMU{qrk}u=p2KFtN zTp^`kD}si=QE(KFDFyDt^O>&CwU+>{Sf@U4WqBNsxfU~!ttZIPuL!9=ZFA0yvFd)s!JI(Lt7!Q2B znpI_F6O&yAtE=S@qvl*t5s5869m)e(asiLAdVqUNO7@jPgm0yQS`SV73(oCbV&1NR zM6-%n8Tw1*O0@RpsVxvSG)htGJ-`9sw29%2$xV|Jm<$U{#YNIO9r(}S-@i(cw6BxV zdMTAOn)@9rjv#=WoWUkv4#VVPcCuLRCbkKRmo<@;VqDDO3JQNA?H+hu9M$1}De!*W=OZs8B~3H-FY zOrk$w3MhUH*8D4M1G)7e0O{H`~eB||C0 z0FPD=c{uRMW6t7C&B1?u-B_eglKu(@8w&7;K|D0>W7(M`J5p3CL*}MLq=scMUs2TjO247X7=g9v%U5?H(&(*`{>YJWx=yUb$?KQ*a zHn!J_{#oB;eC_bLjqP>xxf{mU3ZL89-eGqA+MUAZj^&*lkIxb@^rIZZ(1JO7&qU|W2BvN z^WFGhgLcNvck_ewY}XrR-DqUH-Z1M%Gu!osSvP2B+Vn_$+ZHxxXF5bZjrO(&X=l3h z2$mPy{9xCez_$In=)ptxAP)flE_(3DJ;(#Vzl(TD%{_Q{sDBqdSoa=mZJ3M!VbG+# zi`eWp@S1AW+VHo#KkL!HT(brmT}1!vV+!m=Z#DLNi-*xaLwhnZ>KQ|KT+H=X8FN`EUuJF7qGHqJM%anwdmYecT^P+qrKpX_-J0$jxB| z`)w&F_yPpCe-74*2>&nQoX*okQ7hVSM9cYPLf_X}gabi3Y9jH`7t{45>Iw#*?qNO` z@QT0ngN>v1TE+%~--3Se+su)R4xTJ~mro~?WRb?vKh2#3ID@^}2qak=A3k&E0F>h8 zD);I2vN!O5zsmf69ef$I2WLwpC6bzCLh=zka}`~~$&aW_>Ieu7B|TsO-e7dBy=C9r zvE0Di@j3v4;-Ac&|6wk}vK>i>(LXZ+UBq8Loq>W94_+XZN7xv?$*=1J19>-iR2T#f zjGrc{@;R*jd}NI4*VIWWoT4>+lE6P^21I}?v0VdBJC$Gf?@83gLKeX<^w=ZdLhlkkhlH`;7+%k=+SXtd+nytRQgTA!d%XrRU|*WvQR|8Hv)FVbB`iWli^H`;18 zY@;3e|1C61)33JdNV@xVItz6SCTTRGgGum46u!Zfjgy-SLDuPvY>uwAeQoh~%gMBi8)>*Gy;)M^Nn1H$2iYbL@v zb?N6iJ`ePVXV}mg#u+rbnDA7~v=R&lRw{ZWWB5HVzUBN9?KHR%I}Ab^+GS4lE(aJk za6LO+)Y@A(cFfO;$n_6DcUlOg*J#ks9en<<7R-qUf)fi{*>O(04B|cJ)M&#S3S5dQ zmS*i@5F?Jg(W$lA-!Q=dygK~cY}3!6>@_g-jOKLIYyycKHsNhl{F?P6dHflJFdKX@4HtMvahtO2BF1uUDvv@=#)@|ZK zwnMUVZ-#@|m8^CcMDb$oGW+*f%vP=4!Wh*KG}i*6hM()$L<>>-8kl4`!Pq?LrqiUK z@g|_0L0XMQ7w1u@(KI?dj~dZ!tBw_C4{4ieF%S7?IEYOw%;ztrdovuwj*Gd=Ac_}r zm)Yx^2ao6LWfCv*s%Ks!i>rrB;IlLLixiYqLtVpP7WNCRV>!3vGg z`ydsxGmXp&8!31nL2B!W2N=8$BnEmcDo*8D^hM;nXuGw_7xuPRub@@(=>!UX6Hh?d zO!~cof!06}Xw|Y!qN$u3iYS(3*VdXS@ln)ozBSLN?l-4Gv{|Nxg=Dp2o9Ist8$v727OAjF5@`*Ce1 z2Cx7Mz$NhU)qKR|l*QFYS+q~p#cSg)#yxgvd9~=&0g9ePPGN15f8X!aLDTt;;|vy^ zdh&bd=FAmUO~?m>!_abN;~)vca|4gmH#iQ9`r15m$rPZlixuNWd$sjWC`*%bXs8JG zsJs|2d#U6dN=C7ys!VAC)E!r6xt=#OByu=M|(R# z(fZTtGa0EFAy}WSCf=%tYr$c(ap3N=E<#)98mLt&W)QYH282@gt{aX6a7n3~@OX8Y zZ`I2uskkkQFZn(wkQvtDG}bSelm~NmRaQoRX2r;_))+Gid!@Qxm$?{s2|f#sXNdx2 zSAMPR6N)RLT^n!_Nw`=jqKASEn1V2}Xc$Zyi&a7YxbH))t&s`@;EY(x)lY2o5@>Q> zv4!Vj3h)@(Sd1}aj|@4{*7zMt$$~w_lW|~zM4>${#I=lj1g^o%Dodu$pFAp0=A)!9 zWm^1h0)Viv0nPIzlMLmvU}!!CfVXN*TU)$Ytz!T<(84!bCyX#L^ej~rTmTCxYukw{ zq)9=9Cl$D=d`8$5dmKkjGJo!%!m| zpg+uG;xM*ESyii9=Mr915bY!mgHjd78k)qwOd$&js=bAk673L1HVN6rnGDuThl6da z!X^LcNuZzIGg`b>oomc;ZAOY(?+T^*O~sah2+Qi?LJCf_2NO~zpOY!^QO?#%vt!Pq zUz@`C84llxCBw1R=K2vUKQ%$(m3yhAt`QpKtlh%_vl) z@p0ZQj|r5njA*Mvd0Gl1F69=f;KEvh)wS5YT@wnWp|S|$Yyg%AX%N&IuWqUy-zlyh z4|-RpYw+)1p?bVvJ-KrhPAj{#Tz|!{gSeGekU3MLDkgY1*a5ruAh+PvI_7>TD~qHg zF0|vSqX!XgRCd9odTEfD9hTAP&{3IF04iRg^~y-9?7AY+d|w9O{*+y7B&~(6swKr? z3cv`L+_C&QkmM*abzJ`Im?cIkn34#~2{Y6N@dCwW3_5aWj$nW|&f&yoe`A~7oH@i; z!4`&<_)&34>_-H9WmlR=c;sJ%3B?p)>l|vQJa;6qN=nQO6iJB$kLdQ}cu>4QID>)& zdYf9KH>pPo!gh}pOEO=+xDVSupPm(j5H~3dU#3CjrtGQlWgf0bJYqQQQ+Zb7C?15Bmq>y?=%925G z$xp=M28Fvza@0&hw+VWPa{98lk8JX+)e2`y3f_SVC7(&aE)iu>!0wC&&xH~RFGTKz z`}=-t6fD~%=pzZ1MIfCn!o_W@eO+*IX0A$3e$+@h7fMM|m)!e&D@ysDUS;g{u_w|# zV#TeO46oE1kfh2YI)N7o835D?4ktE3%ui7tP)<1AQ#jW7dPNzXoZCwg*_;bYnJ3TS zvYqW!vfyAGoQvrS90SV-Dsv&x_z^9^q02aQC>#E1gd1|=8L>ysCsnCMk;i=5g=*rx zRwy9@Y62Z|8pS(KK%>*GJfF%Rc#^mBiL^IW>;oLhYu-IV6j;c;>|%5=5`9S!68)I! zlzG6iR1SNnt1{IJeZ-_`;H)$tdWkm!8-0m&zAX1Mp00+Ft+wvqDo|*JW83=T0caH> zy&HE~EY|11PlJeL%8A69)DnMB18lbuItjS%a^7RmH|cwxP#XMXzH-H6=kcTdYQ5OC^9(+n*#l7?S1^%na2CYUTNCmNsbjXb` zg62()G#d)Pk$?f3G1cV7#>Ujpa8oO7!V0&oTqMiY8q=VRQ=t)-9ROoMoWE0^ur-F5 zB>Yj!dhI*zl?K0J+&ff8+(+jx$E!Y$P7@behjc+8FZSd~zp!_wxUhHU5dJgx_vb9^ zZDAypR85{#&yYi%J)&{~4y;EA_H9700??DpfUhSgUE~OoZeYfHw7EOp7U71E+y1=Aqpx&EMk;I+P6=Ia-5cj*$f2=iPHsv^gk@Yf zB@@i4QELX*dPA|@PKT1e?OnPdL#N85EcaXbeqD~MBP1G)&L4YMK}>H_VPiJ+AXw~- zfz>F5JJE|y;IA%{`GoCS6xhy2(q@H=8a+M}f9n^>x*h-SBy1>WPKJE@EHyn>qC$j(9VLf-pJrl@(F&^2CDP9w1e zm!$>sl{>IiBcW|$y-Ga&+{C*~0+?%}PUT+0DvjFxt2Zisb;)-jz6Z2DnoN!)Lor#! z#4oK>u`rc{8>c07N46q_^|yo-J;e@}a3Yy3P^Jhldo$kp`jBUG%oKmh3}o6P*_H-j zHjaY0BOY*nC>AfzEqNuV5&$DW+`n!;frODV6MRRspJ$eO54Hx6>{#fTN=6ca(rFH| z&<2^&Y0lT!6$aNrtwVN@1h2aymNhRXfUeSBp zF)2G9`03*C*0%Oc%I=hG#KAxdpeM=^y?XH&FCaFGQPxJ`+2q~y$p}Naxv3&v5=d$< z^^BsSIW(4;=uEAPl4=jz!npCK!%6GSZVCsHt0qe-iYbl^m-kE_P2WK6VRLHMs~AT; zrlM)7f#)o5|{)E=RIBp?g%|gV>--?u>#ey19FiC5pEqQ5eUy z(6r&$poNDd9H!uzkh7f7F4%NtkL57lDJ8W|$rN=Sd$tz4LScIC&@=5ME42>B%$)i` zfvJI$*b^z@OOx_T_y*IEmXRk(UNu9Q5)`Np<{vw3-2q$h*3Wx`7|qHuo0Z@npdz8C0y1awKU4LbhbFD7&3EnrM?m` z?1qPbI^o6}Wba}bron~ttPDfJlVR7LN)-}%o88kK&i#n*#_AK?lcfzlJeia`xa@L6`jC3%NP>W zL4*7e7POij%lJjRWi_c5diMJY|B!ih%mAN#SgCPu+3VwlJ1g%G8Qb3iY;l5q?J#3R z2rHp`*rs&x#ENV&v}yeAUh>w9;#T;c!J*i3u+X_@Pk3;qOk7^B5#jBvAS60a2CN&5 ztU`w=SBm4jXv--E#*H zoaDHZHDZe!o5Va?-yuWY)6lT}REt$0W3x~6D^h$Z9R z){_{m;cMWJF`2X_<^*Zq&Ytlswa^03k`9qa0dwNws^}Zm^xc5)uJ#m(y>RU0L(s+b z9z$8)!(|@_;-{iKSGC+xlXrfc-F6eu=SbZ-i+DL@$LL(FCzj~B37M?MK}}x}#T@90Ov*!F1f7 z^G!E58O`QP7Q{HfkCi^+yslY6S>CIRMTqkZgIe&IbP!(^90|WflZWg<`|yyf!93Lh zxD=lAcn*wsz~CME^E}K7HOHd6Xt}=ozkB-a)9;>sFYw4$bQWM-Up&{EEr=ZY5484I z(Av+XTi`auL*-r`m9O>9f8Y=D?566I#pSQNHTciK-<{7@{@T-C!li&K1?NG>@nMK2 z`V1*t%OzZ~K#USzY)|Caqbm5ANi-3X^4J@5w*j`J%S~IVm1p=+Cf2q!w1-JiR#5)O z{Wv7p$bR;&(Vzn|OYlPJ{kIet^9G}k!tAde-v7sefCl4F_YbZfiXe6*Hx!BOjXEsO zIs4?OP{V{csbwXkSCjtVoB4)1^^s9{1D8h{aibC^Ms=%g_~Nk&NU;%v_|iXErnl8^ zxJa5-`U4S=f&s-b??E70j4V0$-eOJ5DyLefZj5Gf)<6EiA!yQ}Ep=ic(lv@JL`b*m z+c^}G^!{~jeXnJG548@G8j1Y1q+l5{4yA%&u$b8VH4~y#^Ol+^a9~!KbJi|(U7eP= zA_~-5j=g0~#A-|F;6)4bZ zbko^sd*Q6!CFhPU8n!s5pXCKZPK0UMReyCBykKKM$(+GtIc~}NH3-Y}^u@FN!^8H` ze!WW0o5!53kSU2gL+R9t2GUllv0`5R1@9sx_Ye==RtoTEE5Tl|k%viP<#_m3$Jx?Z zk$|_(>>Q}%kXDw6RoyhfFzg_4TF;^HezHi2_xV!pDv%J2txdC5w-_2XI3%duB3Gge zA@&23P5IG_$ET;Uw85)TRhA9gt|5Tu1M8Xcxyj^xn## zNz-^Fy9dg6g82G5Z#JtHnM32TXrqsWMGCx2SVqQG^ETRfO@U^h(Rcv^)>x;6A>|eA zuD9d}Qj8)aK5pZr`ykSTczbrKk2nZQDeFc-jlw}(4Dd*OLpE+TApIcPT72k+QscBX zQ1SH_-hP+sv znGk;xYPX>y;s~S=qLr(R$y=EdMUz}zf&hpTNwv2~MW#cVFl7#9Ty@r3H-4*8=S9d9yT_=!-_dIMs9-4-o&Eq(fTFMGs+TRpWh| z5r(jho>!k%Uy%S=(O^gtr&4y6OuALQg%)x*5Z!(#KC7t!s7A`e_B@;G=^%8(tlLpi>;OsED+Ppx>d39RpW z3ec+aC@eaYn}U<3jDH2alc5yI)si}MLcVu~>J}(;b?SLHjVG1F$}<8XDB%BMIpE1r zZunq1Uo3o=GKM$$qKu@#kf@_#RD(n9AKkEfaMYGl@f5~rLKx1MDu$vGHMVlQEw4zo zlZ#IeOGSpI@2Hkvvc$NOBv8vZzsF|xU5+aL_Py_2v z)>6!d1e;+TbGp}z5%zu7g;Mo?1C-fT%W=T=4wuyetzUB_B&oHD3>RUX6{H#ASR^g@ z`O-cpx~TW4$hM-KSkQO@zgA!F>e#wB)ZD5N+>#1oy`;}iE2AJIH`Z8K4z!3@4v2wj zv5I{N6w?~5t62P;k`O4v31t!meL|P)wjjJMwx)gwy^k0 zFB{LRLTbHn_Wqro!*OCp1XRrXikn2R3S(yn=g{&eFP})3vo>%!o=bdVoMj;@JJ{&EsSL+JOi*EJD=2e75`>O!+herDtt(!tO{q;&oB$= zY(eM#jJuG8L3T*LrCdK-BT-$9L3FkV+$6Grxm(r~GHV^6i&B}86LhOJr98FO~ zG|Gw+d9qPb)<>gG0Fkn6WHUKmUQ3eE!mD>zolX)weH)4zb?b%23t>sS3WI;wKa+X} z@^AaFiA^)}?@0XpHs;?KEOvH0w(DB39R;FEC|1})c&hn&d2LJ!->-m(sOIS)j#FVAG)?D5>?SV$^B>>H%) zsnF_!ax8EVM;-BO%JGm6^?a}tI4BG5JsJ~jJQ9mM8h@?f*E>?NDI#O`!*-=I=xZs^ zSVYft++0_ZkvEykf%oy2w?0Nu|EyKpQUaMdmh<(^51@$$w|$W0nGGvK^I9UXsedkxfBkf$;&0r7SQ_DQ|mF;?<2A zLzj#MVkLYl@EYq)@cZIf9vwEE40b59d_;`vlHoRb=XBK>N_b#b<(E>Iv310=$-A?} z?W0wP2%ux=^E{athJ};A!!?dXUU=AK-#m-5Z*d9{LRdVXkbW*A3`yLLHYdqxk1F(9 zupt*#4m2 zTBv-raGxGqr!2Djx13NBlML*m(JaVRgnPy|sy0U|QnVmNDn7e_?|v#@B(Vhvt5c?Y zVJX<6kRJ4EkpPuRBhth`I==eO(uF>Ij$Jrf>=kT5~jW?zXr;&YuBkom$;k@ zlI_#jva2&zi;qDqgK=m0l_vQo>=d9uR7MiujkLx1Av4KzPB|CC3lm34ElKHOO_);f zU63HfX^F6;2)b&nv+?*?e04yMZQc+3O|4;UV@L)fo%FDvImMMY36(=_$n7%|D zons!*(B|Y^d>+#mpmNgoboaw5VhgIg7w#E(?!6UK(t_mlR4gyl6j9tzw?2qF<*N@ha z=mdEGWU|j@pjn(s=#3M6XwP71rqQfPtyqE48M3*_b;a-kT;=L5S^<%Y1-&bolGd=q zsL#Z4Zaz}9ol@+&8aNgj=)>}M&un4~tAXPPQD)nWzinECZ?4>lwhN6yY65>PboRR9 zBA6*kL)|x_w>({+V?D;P@(DS|w43cl%kU+{iM2z&XqE z@?IkYX~40EmSbCo2a_+S@@k^U+@4&$AMr>%btXq&ePV*L-O|n+wF$X`qsZ|%$DyX& zt8}0RFT%nycL}AymZier8sh^r@K>7TB6Sm5MS^7B0gHx)&-U0wnQNFm-Ob*@@|>C& zehQ~Nyxp3J7PWaAoMy5l#Ge&0$>Fjx0VQRc7o;!+*5wN0dGuzdCZxW#3MNebL)A_R zQBE$r;HY6mf+ic1f{Tx2D&q-NF|}b|9q_fL3A!iL~~V9xnuh8gbcGH~5Q z#2;ju-J=$V)nLZXOjJFLtU(+AJYTe@*#)cg1sPJEVG9pmZpy$n84+RRi;2!~>0O`- zhjoOAn~EYOik{@=a9FTtW_hWl($_%VhOn1d?{N|~`r~<`aK@_NRXF$2N>>EkP_gA< z=>$q1lVt6+YJ_@|6CK!8+K~Vrvc`#<9tnFbxw$lu3rssitS5C7CJEZJ|h>0 zLl7DI$a)oZF!d^4giB(hftYuQt@Y5m?reX(85iYVErB<(>JQQ+dA}Vm)5T#Pim<+NY1TGDYNWwb1x(uz)8?EKwa_r@t~eij>T4OP7cfpmSFH-+ogOt# z@a5;-Y_H4flr@{FAY*R4r$cy?R_m}yJL_-|73CU{O%hJu^f+3ADr=LD9IE#i7=v|Q zQ&y@1K_|V2^`BCrliJw593l@|cIexZM=q#>)}3gxeME2&=jRksd6D!4QJO-yuwe$e zPF1yomE%lr<_cBKuE$nR83N~;5jGOfw;J>H6o4U9pwpZR_{g3>H6Mx8Pn1aZ6=7&} zoFx&~m+Z*W=>l;j9XeZISkJ9^bfVTF8i;~SXA%$j@&x&DosAThd^oxF#W^B+2dD0- zWJ$8oTV?kitnScvj}kbuq$i98#F?7f6u;CgHjuR7KZAcaeFJ&3by#d5Z(*0AZA6ZS zDYT8u$u?3LyTohc7`FHueG!=s%y^qYf@34;S|CP6(Fyi~QY7n8{b61u>n$tnMJ)+P zZK1X!rKCxLp{P-Ye4(72X2-JOp~6J4b#h?OZQ`-k*bDq;SUF5BUoZ$=E^ztS{+`bF z#S=@ggY(IS61uS<`z%GSdg;4L7_k!_q3t(#&ts$FFjYz)Iis`3ztLde?tDTPS2aPB zedu70630(s_XL{yR74iiSIDba1s&U~hoQ>Wa0$+*YU*SI@KO{~eX~o5~_1b7e|G)YBs0u`)>g(w zMFBJD-6KMG-mN4a^%Jqch~w0Yek3Sbi8F!*iMBvs6FVX9G+gEg zlZZ)j3nhpiTUTf$$MIw#C-ab$SXWU5#0h+(FM%X@W+*8=1{zO5?UMQW^(8pjK$rJ~ zB)=FFS_W}XB?vX+E2tFOWh^nhlhOcV;~@sur~pm4bF6C5r7JG$Hl;;kQ-PiZDtYQO=%>s6`ysWxhuHVUp@6I@;)2g+1cVnwl^f>ey2 zUV*k8`#Pv>mWErgRf1#C9Mb(t@>o?bbRG|mbhBDHZ9C`;nA#xb2`rCxUH;0Zuv(V9 zXSc3Edg>87^pQ_(0H zS5>1E)q?B+C@^}Ceb+Mc7*~~q;9G($kD;9-hEUoPHmEL(Y?*-_@Ro$ZP;u96N0Oh2 z@HW0G(8Lmbo2+RFFXpv5=1_G3ROI-<-ts(wi;ciLli6Y|NvpG2JdvbZF2m$qnpJP8ScdtkN5y)a{;Y> z%>w0lNN|WRX{@n_2M23O**szrMdsn65qw%z$}{eS;&IZ$2ottwYk1_@t19&u{8sv$ z#IWEvRQfu&b#Y9s8l~_^+wQ_<%?xB{L=2h5nxvDhr!*+{&dJh)(}clw@-!`$!JQ!oQkad&f-b70FQZB_+P?xfnO3(TS6Rvsi02?Y9ik)nwl#r)P~t(e zN*``x6i+sW5n(npQk-DS&QXKDoMk5JmjZOSbW!WDk;SExC|ymeCp~HAY9DzwnmY>P z@;5JEK1a%%B#IX@8!%#*J&7Vu+N&MMOs|bxAd=_3%Gl9b#dfqd{Acj**5|gPy)07u z9Il`Wvr;CQ&F4&JEd8?`Gq}jj*ye*w&y$(U17U$gr4ByS%i((B+0nd)_##=SmGQ>- zY1;*IeiVKX|9xNc^MhgOhN}n|h#4ehkmh89sjvjYHoC9|pQwi3s~O=335A0goObH- zld%Q+!O5nEi!mtH7IN$QJ?#VQJt z4h|t1#JXyu92*tJhGBqsG_MMU0U|&OvO1P!3FAhkpoDy1pr@fQNCB(0uAzWce2vfs ze@q=87-eE2mwt;_wM31=hTENCyNc>)Ly_&J!0?`A@DUH32|-a5j!E*-heD82js@>T z(XKO|Fsl2i+?lvGt9N*liFu^amN+>Y1lJ}}H{b)p#%wf+w4RF5owcaf@V~)oK$ob5 zUW^pwh2@bd|3isv_mGR=SI8aWWmVTp%7ippfc#Tz<&Jw(D?os+v zVG9h;(-MfVOkB-O1NURbeNK#)8K7H|E%u`3 zt5He{inpx{)zcEIu1&klC}MDw^TL*4Ve2Q_y0alVsd=y1O?k|-eVK`x<47I~tr}Vo zah1wwVEp=tT=0sTLMqFUmqjH1F+1z@d>U&Oz=GncQ*h`PsO?P)zF>{HBIP-RNV0Qa zPB4W(q!w1m;U9AFN2g)!cWOl=1D8U66BcvD!VEJOG4mJ)GeoRkrsZ-*-g@4Kf$@Qr zJnkm|Pc)bo8512W(#Tp&{4_mhz@|}9!s`Za=TNa;JnWi54qye?4`qz=mMP9_!dhl5 zVQtNJ_t5xALKQ`7Qh;C8zA)kAh@7a1aJggjI49Wvyv$$nvs-`re zb5s5$nc+$w|M$~b|13%8*nJ)P`2~)Y`-0jTm8H~(DDrr_I+7mcHZId9g>lP}ShKBJ zW-587-gzT`Bv-T+@npcE7od8LVut~etgPwCWt)cjA{z=^#pR5N;3QD@Y`L=_?5)47H$G6O+}OG+aSZZZe9KpJ&0wQX!?OR_dcPTANI$76)!02V0l{A#QJ0 zjT?3K!@jlQ34sL9Y~Pc15|my!MQF(gAIrSmIr|V#odiLo&=L>vxD-aNwVK_{k!!*m z#rRWcH8Fc<%#M#^PDy@AF+pBLvX~EgHe=2M!lPEWeC1d(cE$`rBv#5j=aF=wGaR%a zl0F-(S}ii{Tecu3^x=Fx%LIb!&4CjKOLDC0@v$lTAtB2e}B7PAH7EeL;WP_Co zTeQDzvhIiS?bz8jDnm9nkonEGu^G2QL265}Syrs$WViQf-y|k*G8I{_I%M0&=^XP1 zhs}n$F5c{4lELxo@(cA*m5`+z9~>Nj){p%cXf@s&&G_+6%wj)+e=m4wnAxU4Tn68AM^jZ(WU2pAiHHOP^M#$_8| z2ABqf%%NV(73ZO}fd?pZE#lc3VTik1GlFXb@A(PE(xl72JR6*c!A%z_B4t8n=G?a0 zAbq@At)B4j3`S33t!Jd<5Epd3xZXP4oLnNu)7nnc92-_CPXuHSygp+p9e7b+Qa{_> zaRTPSi61>nKjVO}gl0%y^!5?exRY1`|5D}fL-H`qT(LKH0FVkkL>1iE@rSuvk44vd zmjHPRbBFo#duP}Brbc#Q#OxQZ7@moQWT4u0x+d8}aDEYB(&s3Q&f!55S~*h!d?hxC zv!tkULZKAEScJAlT{akxRm+i86`U*8PDz99nRC~V@TxI^Y#9=-%sVdsGEA;WY_zg$ zgN{Iu+f?sv_E-HRdL$MvOehHm6~#OWhB1SQ)sto6fvgnV##VRr_nB!o8E6PeoQMF| zW9>>Kez4#9GLV!w;ps34d1Vn!>*jExOwgOr95QDk4+>`omo9d;RJkQ7|0pq&Y|hbi z1ebac#6cDVIo zfpOmW^9s^&I$N^cep34d$7Nw8qSz@=h$HIQrbkmmsRo`V;sF)#qhJfXyaAUMDnS{X zd!sNaZUij7pfyD>9XKP1uYPgE3JwSXWQMRlcFR0u-Nw$c!@v{`Fi) zW8W3Zc{r5sMk&q0ihK`|O&4R)!Sjg1VrYPMQ3RB~b)>S^C{dcJWxR=0d`dCzLn^@$ zKq#QLf}x>RFN;?#CcF_QQVSfamJWZU*xZ?t z#Q0F+5p7I~)>#v_E|-|G_F1pCwLdOSVV6ePv47Z>T-~wY)&^W9w%G?27ks8*);%9e z#4FHb{Y2!-(Y0O3^0i;hwd*Sf8qD@Max??%Qs zbXiRM6)8d`wH)#8Pk|Ys28xkpFUJDTNl`r601z=KICJT-B!V1D$WLr*!xB6Ee!fD8 zjzzpun8Q|+^g{RCh#umxi;-lGGDUnflgxudTOGYJRP(8KsJIMNi$mPxz)*3=Zr3Y+ zj9fFpemsP5tU8TS_`+9p_8*d`K9NQayNz5Uh}cVAA6JqrjBko+&O>OHn(%5c>!PzNK(D*S=PK8>6ONn;hcp^aai6Cz0?P}_-4E74C zqtOs|P_~s}5AwdiIubFVS708 zG~lH}WmF>$+UAQn3eY88My--DDq@E%DZdn+c{0~)lX3~kWWFLxx^`rJ?JK==~ zaBke*Nbar8V_q`EYEb_*d(m>blF63Nb_GR!@E<*WvW}zjQ@u@P6aCgn3ac^x_PXCk zn8Uq_ICj-HA@OWHk>Z=DoEY4>3BO5MAW1hopU^_xXl}8J_>@Tiq;%)1&5emoBwBue zQ=mywkG?89 zPm98yGlx8^VGLfbC`-)t)Y0B&?&h(ScNING>(5!j_U$c4jT;DCOD%^mF&12`B2`8> zmLnu(AEOx+KP}m1uV+o3@$O@Z5hak7n8Tk~rEGF4iD#k3n32^SM8GQQPfrvB0%kp2 zsTD^_Xy|-~=P`vl>3vmL%NvMA7Qs=y?LmByb{k8i}Es-Xf7(n zf6SNj)WhmV&{!$6pqNqp=8g!R_l?wgk7_0(~wvJjYhGb z4`g@V@+lo=i#f>J#N|42E60YPKKr^d@^S-=Fbo)af9z{xH3Wd{shnl>E8RyjoAiPV+BD=Ei>!vH!*=Gvy02vtrM!J7&eBxMtkA!ss+l>`{C zc$=t&80Q8-O|NK z0|Dz9Tg#U7C5%I)b>BB2m|ScEq49JHJw7b)N*I`lyQKYZ2aHl;BZ#!*;E;n|eLq}) zf5=$@O*FzhT3HAWMW2~z1**`J=5ZE*qR_20!XkX0=_RHKvmlo=@^Krxo&<3~;zr~c z3Ic`qIK(*Q5Pq2OOOb3pW(Og6!SBd0h`imh3$sL9wBJ<*~c981w-JRWR+GWp-X*CII%)8LtrDcmM$!$EEY5&eele^{jDt^)M z^}fS(ah- zp5#@3nnl}LOk)T&3Fq&foG^}emomqQbMcJ^j?jWz^&-y2TpOFzKz9M6 zR1@1k>yLG!1)g3kGm9vj`wCNU)?3aqqZNgoFJtY{X`^gc!0IwH#icM5i%^W>DvPZ- z7)UeFlrxRnC_v*+4uP8Iv)qoK$LuCe&@1X?`P4fd$+>3(xK>8M;Zi?m$R)k#jAOEX z*1H7O{be#Z7F%qB_E9o;G7tGuJmH=(oF6dtBQ$K5zr^e6j5zG^`FuWM3oEwJ;9_#g z%yv7*ue$BFY1CUTD?05Uq#CcW#VYbMiU_0YC4cz!f+(krjxzc z#LX6@SX5PAjPx#5tPwL|z|1k_ z&#OA&yI3i1oX;CWbOu3V?t+k$NQ33#-##3-jf&*kA&sqfp2^srBDITC`~fKgz2!hM zPZi&XXv2_5y6?-P1X%jkQBSTMsb)8x4*8@UX({Yq9KYbO1B~fjE!VM>Rll&n4hjXr zp%55uYNYInQ#-@iIt)ayt6)HaW?Grz&KW0xf;@-4Ng4+s5XDP6iH9q>wyRo=r@fu~ z_GZ^P=G$!53mNEG87M~!X!mFH;Tgr3`d+iQhQPhg+z{{iB%(m7y2fEQx3#duRVJ&Cz-)UJ42h zqBA1!w-@CiN~#zDJc~n?LIQu4Z@46No|GqPOS}rsS{#Ufn2TlI-!)Dk(BULmYa9zr zv)EcX$3dFK5O;?i=U6I2S~^dIPyD>!Z>6GUc_Y3HkaxlfUN z9RUd=pE^OBukuOzF*>resArjS2qlZhx^YDoON5siy^<~aAT9bAyJ?n>Cgdb@ID9@h z204z7D29cgF>DG01}pF+V@~Y~LfHxY=mhDeuxM@{-g!p~jRYR45+u-ZVwyUHhel13 z;!C8|ysD%JA8JZo)&w0C3QrxJDvzJjgUJ*TWS6iZKUetJvl3cJv$0*^J;CTZ5}Wxi zAtiYjWvB!UeTO0MRBjACMw4HxR~8P$zZ{3e5G-sn&73pCyZ|>Y19EgEsS11cu3}!D zZokX2G2H5Y(5__tTLigIAkJR#kUhy(bR;)Y59YXVfg)KTM!jUy&M0FZQJl46O;q<+f@%OL9b705k@j6R97IA3n<7@lwX9)3WI%*<}*X z!&_$jF<~brEbAk9DMr}OxE=8L;V+>02=M%crUN9oV zL;(D}A(Pb#MD%1J8QUym2bo%`bylQyd)_M`c&a1oIf88y5<8+)JwAHw1Qbn@h9dsd z-6f?0LCIt#rNonzIN7~%6ltLtPcF8GIIeW-NlF%~-yc{YDb+(s$=cyWR2t+&rMKDs zy=)88j_M>rgnC9GGI4YXnf6X4Wh9hZ%zG(PoAoGjvm&*jbGG4-m2WpiDyK)8Mw^U( z&!pI%^@@`5fu*Ri^?Jp0!<=&n5?@hrxp|Or#AH=)%-nrLMSjWQ4pNpPUG`GYP-|PT z<${4OSer?#S!fhkEHo>{=ovcaKqS7@=xm|BBhImv+$6NLD*5GX05*s@@j#da@q#TE zgl-XVRb$OSy4Bu_1)w(^mJ^8A?ipKRZ<&k|4w>L?G#=QmJ+BHKqI$uDCF+rZ5(x+% znk|vpNP&CN8cQP<1E|^#@N24xUfi@P&RjxuIRY1ox}%$X(oXv=vQnkAFaEJ-SRt696*UYFq@ zEl`Oq7bsM!-{CfC3SnS}ivwNLa*$T1(e^n=uAHs7LyrnI@WUGXXW(zpi$8l-c>ds- z&_b9s5c=!p*#|v9e&dM6nFU8Tn*}{#(*y2j8LrqWn7C~!QlzM8fEoqInoX@nLBanU zW{rZeVxj6_G@RLaKh^g3exfd0y-_Z;qORlvI#G9!J%l?*xMVk|HQl%hBwbS=>At_9 zYl@gbPQIekLy5RJGMic9Q zKblPD3^j=$PyhV`*D%KK-#D{cy;&!B=y;y4T%$k?g{|(^sHtNWJ!mwW4sX|}Z@X`^ zL!iKD$A-Okq17(7FLuaL@MXp>RzdfuXBy*1##=oGagI^3pO^}|QjW_=xfh6Jt*rc0 zKRRk}mwyxty8xo-sYZ|r!;E>+O0s#!gxDkxDz?58XcOsa=mAb}S88A3ByKtYD!tg^ zinjkmLpQ5hSl5}cux3fcf*ILzl6FX}lqBh~gJe2BI6&e$K*Jb{U!hv+a0m}Apx$X13STw)etT>TD0MPyhdXYe2whJAqBy)w+=wF*EA z19i9%jF{2BQ6(6a>)qy|XvUp7O5)EJp2fjq44QWzmtT0R`_@B(p>?#7KY0HwV+Q7z z-Mc@5;Km^4>I{CM;q(*qF+P# z(=i*Bm}qSmW5sl_FubuEtrFLI6sXy&)`6%I*noV1p-O~?a> zh|?^^E7+n`*e|)x;jz7QRRlnk>6(8TV`2e0qOGdY=@zIOSwQ2%TCu88hyM)zUHjas z#$#Ryyb2Vn*ksERl)c2%w5kC%To!uPUvgP!i!8u+!GNZ$RdzDNoqX2t17eXdEkIwxs(|Ikpe}=seUYM7sc=R{| zKI?{<&%|YYmdvEkpa2d(rl99z@sbPm-X$9jiYXHHJ5tQ_ATedY!B0cZ__!k?g7rHyW`$K4rWw z)}w6MQz~nQqkZS;X&kj3YcM&-xk{iY!VxzGj+i|*T(PZ3_O#WE>Ivq*deqFw|;~(T4`qPa+;J=LRYZ|An# zo1GUYzY-gl%PkJpAa8n0V9F16`U5R&{=sBE;(uYa>L6Sbq}e?*RR87a4}Up*`d9w^ zsEILc_vn{qt=W=?6c2~^8{e9ZwKq6a%EBubk-U7+gs+(qme3aZ!RM-$RJgKpwfJo_Txfal8YNpxf zP%~qH)@QLz?$KF~{8@)Z$20WCcbHa=rb)M`x{Mtw=GL{PY@U>^LxTy^^jH}+g#c1c z8plqMY(mYo8?_2+$lrIU0FxXqe_D10bzU5I?9Yp@K~3?`HQlYZ!sX&3HfP?#Qhos0 z^=-R+OM5#p^ml?c;;>$)mXnV-4B0bKbQqdPH6|SV1w>ekjMQ`4Y8-VvJRGEdL@FT+ zoaT{oqha|m`8Ve?kTaWg(`p^@(CbZPO|$rtc@(}5-y>Y>k)AB_GikMTcoONF(;=m@ z_{g~;wemW8c&;lMbikqiHLms?ZWbC%=a4Dd9=yFwTNUv?2)DQaE|Ll_4CM1^HHQzxfozIxkFRw^QSe_2KugBq^8}wmd07taD8R~* zrA|m$vBp_809HDkcEsp7uj!C@5ooM!h3;c&X>9q3K>NwDL4OGB3z-rb9>+>#X$+b( zzw5#D#BL@O2tk%d7?G(r+H$Y)ySD$EM&yTQ+0MP9Ysu_l{tm>YF0i$Fv)vIYm&^*x zPR6fHz13DKW6NvH!w(vk$*+uAOKyjdStTgdxOFx4ZmTV`cpHTFvE^=8*IL>UT>IzOe8Hoh z%Ix#U8D9}n9V}gO6fGHj{(@M>)chG`E>`JeHXF5ucQTvJqX2qrkfhm7W?VN51=eIp zUi*f9@T_P3Joo}dS|e378IGFi^9M_xm*ZGW<9=6OU0+G?l14`aTxd9sZtTW?c-Zhq z!?to%AJ0Mo3USwTNTzwzJ+g%QR~blvPR(-BUDq6j1o$nE#rH|$8J1sAYz~}k+_qM& zt0HE)hhy@WKWm;%8x;2r&PBqbc%xUs^Zc&6=#LE?zz8s<{P;5W27k4Rw?QWGP-K1Mk zH>TAlAB!?H%CI`yusbpA&O6?nY@Hf=qqRD1w`DK52%{J<{7o8$VGN_Kf=;7Y&}qVd z2LEpSnz(_$i>y+@uz|js;@$k?V4XNHpO*=mu&XpmF5*Cg$tW-s6iRzOBmjj#dcUz0 zC-no`!;lEjAjVY?aHqSD^hAvCvG3XGP4TaI|5&vu?9K}pACbL6WD_P#7Qd|Y5P%8} zX=O(7?9AHsaB*@4jnKLlN=KS^TS#CENJuMZvVEYj1wk}dI19dWM8vws*M?nZJE*%r zjfNtThFXWB5(2jdLd%%Ij`^|Jl{6(`O64pHKZbQkV_!cdrb{S-f51gNv3b0S?9R|A zI=I%#?qw)|rX*6E3*PYe$4J3UTX0j+$AB*+7JP#}(4!evgvV=;E_=c!-RBhSHl;g@ zpg}%w>Y63Qdm3gpEHBqw3C%9W(3+&xiBX!YO87`=B>(oNixTp#(ogF-el(UK>{4$r zPfNU*EK_1fobw^_m|*GI>(s@i5zDqSlr(hXrO#gkiSxKPG^4{-LoWe!;Kp7{CzM)a zqX_xJ$==zTW5I9%d^kj?y~mOdi>CL8;Fvt`q6_yfhB)7?IOqjeT3n5+79H9r14TEW zH@Sy;Q;CAX$F6)-M>=q11^&^OF2xRM88hDO3P&2}AmXl-Gg}zb;>nqC`hZow z_X&5BXuHwa&IYyRo|Mf~Af(t?qudc43yk+`??IYIr+y@BW64y}w)v0_^M@2Ys;#y? zr?89~*;>FxfhuSdShBtshUqyX#mSj~k-pD4Wx7I%+m{Sk$O^cwXD8AN$$msPlF8pl zD#UKy3$Im;dDJx*Uqx)e&1>$J(PY0C$?>qI4=yol_Kvw8*f4vZ#}pi?+d4gm)4U=-2y#u1ylj zjEpp-wUMxbJ-lY}DP@$JQYimwlzpg_(ycHg)bJ5#T5yU<$makXM;EBiiRvZn?FLy` zr*Nh<>5d73KsSP{zPJE3K*_)6fykRx?CGfx5HIlUGgO9KEZ|d@@ zX!8N*uD};xkaf?lPF$XmASe>|Jqo4Eor{b}hl`4WVYWz@)C#yeyBi)0PuBkH*G?qR z(_q165sJ#I8$QwlfK41)A`c`4Cm4*JF0Rg7dp%}g_fR&VYo1ZBn8hA-*rzmhvO#P` z0}_Q;fVc8IOU_Di##>eINO)M}_C$yzTzDc(a3q-g3szq{uqHy5NA214#Ez}>pQnBr zAd9gZ*`z0D7&j)bQo465=6EC)Dr%cus9_^97?ny@@M7_?VD{U0!iZFOGjHOJD3Y&C zb}!VDX-8uPgS^q(IH50)LP+>yX_7C}f=zHD%ZFZ8B3|BnS$Wcty{$xOeDB-J%7C|h zTiqb|=^P5LtJob*PtHp`JKy_US8RVBdgj`p8y2U2+l$JRvO+1wQ|=3dFB*uU@v*$QsSB1 z$A5k*e_4`dS>C)SsaNQcI?bepheaZx(S&qhEt^by0?|BCVen8pZ8j2h!?NhTQ0fep zLCncr$_lib#A0G*lYGj_%Q-6gF)z81a4g-tmi5Mh-9sZuPm>9&DzWR`CnAyf?D#JD z^v3FDvBJ1WaLhyESqj%)s=B{&TlO{4%2PYm2V_P;C>8q(r<4*A;#rcc*y^Z*9X4gn zg_18US5Z|>%oK}wiGlR&lNegt5i0`yA(vHUW$HSs98dtQ1K`@cCTq#oe|lQk(3vtzuEJ3jZ1W zyY*|@XK_Q$u;|}%3R-o#O8RFM&XI~a+me#A$d1Y{q(+2X+eQd>8IR&C~p> zwYMTmCc9sqBkJ<@fxuTyL!sbHI1HH1gt_Q5EUZ1J05?poM3BBd_I;dnL;n@ucAfz~ zpp-av7hb%(uXW7LK-o~jn)BUxde_<-?n?7_DFwz_MuqM237RDDC=uB*=-)kg_W0%B zpFhRjJ?;D6FAs;UO}kaP=Y~SEx_06 zdj!U|OxRL~7gnN`KQac_^rto3mCu(z@x)N8fvr^K_KY`u(_Rt%o9&d8B@-_uW4PJ( z{^aTNAD%vb^z!Kw=;XVnFTZ*AWg@p%CfqYyrH5q(@PoCC5eKFFL!T$^B>=#9t1+nf*WXLHaOEyzkm7khwmSK zYo}dtE>Q85yKUhzLD}P+i<}`bo*n0W_BM5bK{6r~O1UQE$xg6yJN*H^>i@tc;x!CQ zoXW_R$-^DGx^N;KnYACBq`YcILnYZoHTzK}bV~)6g3v8529T;MahLStj3R33eYU0* zhIUo5p@a${E-@;$RXLFQ5o;J2oh9-Uw$521JVj?!_N~dWaV2HOY|sqATY4PD&3#Jr z7l>LC{YD{fY&dg)Pb&9VdnOqsg2*S5*jQ#M*8W_IVTjI8nus+%8Yh!=+QFGnBLZEo zHn_nLDKH{CWJ6wDNP$=}HuyT##bK-&!!uowY;xGvyH)KNzB$WyGD>kN@U@iQ`mKEm{VB<3K8#9k{Z!jRQHs`19i?NR;G`Pd*xJYp8_7~CX~Q^rxZ25(fJN~BxxmET zie%DMt>0BlaY1>}*n)!Uyp$=8a!g6s(9m$YZs=XjxL(C*hFY(+;;NXo)tQnx6XKRJV{$Suxqctgw}8=r!hL8G3m_lp@+X=b;WK^w%!F@rYl zUH~UQFh)>p;>M5M+bKkl%ziqC5)*|p(7T903Ez`;w?_n;ok9Ywi&QpHELXdS1Zsre zdxQkC5S9rEG#g?9y{##Z3gjR>M}nah%Fn6TWYVv<>s_%!g~~0w%1n`cTj3WH5XT}3 zi&FWElHMLmwL5)dBs@jZnLN)m=h^9i?TyK)i6on-)3P911PdZMN4gn3OX;2N>yW(ii9lRx!^%Nl`}ZO z6Fd}~VhNj=-gR67S>i~2o3h<>@6rHRfj?MfWv@)e~zld z#g5F~RtuV9Fd$TedIV>{xI7V~pELy^BnNLwxeOiwfLDD%KwDVvW&3ReXTRG-!5TmXML&lTr2o=*m;*sfSs#a3{97w`r`ji7v~_$yWx^^sXE z8}X6h{dw`)k)Wj#YS;w<7{UEb!7mow$yNk+60!+W(!6Np$4?%;e6$xzsdC$q8V|(e zjM6C!*2saDQ(yuAU_RIH&zDktS^`ihWNJN$rM!Zq69>_W(uo}v9c&zTHME*#%v@QT z(cspim^)>nW+N9J`CQZsDkQY@k6@#gi<*FqdgAhCHcAq&@gzZ(AM^L%P0n2wD02x- z3YI`4=n<-q9sS6^rrF_QibDISXM})Iyo)pMy_m#=a6nnX^rjJc%~?4Pg$4|dvr4BJ zM=Z(*N!uFC7qsDfUUgYn%(UW8;?3bqtRLPyw7P_N9a-!wc6Q}WCqDIArz0OxtX3s} zM68c`Azv&dy8AO3EaTx>cK?UIL(U7c5P>i=M&k-H-7w133rW;b{_yl`mSPAZ6MlP9 z^_2cl+T_qrH|dPa(B97V4y+;@3OCAY_Nphdoiz#;i*Uo>aS>3BiU4ojw;i~(*#;N} zIr{N&;T#4M-t(51#BuLo7*K8_;1Y@cBfFGG0NH2-4z@e*YNuQjay2-jL zfFx=J&Krq(oX28ZY@LJ(cyf+URj|GSF+wA*41KI3s{K3fCk!UcvA4dgnrPh6P`&K= z%bPBHSG~}4{=?DeB@<59Qdw4weIPoTtT*oVow&s*#oOJqXe&AnQ&+|r->mOBefsUw z@1B1DQr)Fq40)&^SWj(5(rVbLD}@`#L8}g4ha0UDp}%r0t-0HAt0Qyg#dPLSmet2&CZmypPfFT7^r0B`bObG z1L!KrMxUV9vULjjVV@?5`^@NM{1pmb6P-t19*$x=7&U3C&z5bFo_8-J7Z!N;$b81) zpYM<>%9@vtHH+9c0PbdTF3KkU)Lbk`ve=c2S)cJXF82MimyceaKKuSX*jQm~3U%n5 z%swAe@330Q>b{FFzI8q(0^BFzW11oHUVKa?JM~_(kfnS~tbMn_$8yOFB2N_;`8qs; z{|x^9If{Hy`QmPevGQ%39J_^Ye+kUmE!xV$lU0=2{~InIkFG8Xj7j^j3JxTbMaS!2zh9+pyGOQYeXCl>qV@3R6Gb!Gbk`S` z6M@+s)eQW7_$!nXVFDG{YI@Unu+&P#39QPD0q2tm7QACD(5@C*g{@|pK`eg2nP$Ue zB)XaWLKQvfy1D30oOO_Np;>AL3=Dj|OSdzyMTuXbuc=rli?>`5?1*kEY;0^BLxVhb zEA0%qov~}D5^F0|X@TB=J*~HD9TY-%PaC+W2rLRj#3aMZY700@ImK>^>F0FjBd+=@ z>OhRCEZ3-9k{WLgbF@S-I>UG=KsZM1n^;AMI2GLg>m}ni5^}B-BW$-g{yiHoPPVWr z0Vux08)%k^@5YDUu;lPi&}OMX0JLZ0dZv;d!I(SsdUni(ZywefJZ3Ta zNyr@;Q?*hXd8Ba*y|6@-)Os_m``N5Dn*QNHiIr|Gisw}f7!;`Gcu;u{td+raN~s9i zh=P$;>MjL!%IA;X3lpg7T+RwvCM?F_LQt zXbL)t+-@~HnVG^_Lxd=rD+02dDW&VoiBTU5xG2wGCM?q*Wv1V0NGaf_+;jkN%o$5k z?S#=mX>6gxv}zfl+)*JEja~0HQR=rK<>GoK z*S#*=*k87x7IJb0h)oz!L$qQ!2Ls~{?R1c**zy8IpEhL~5x+8iN=E-Dv|v}XR|wk8 zNW&`xtBJ11TBlV^!JlJ3eHlLdkB>IwSWLqAszTpt3Gr3TpRt%UnT=k z!3OcwF-IeEHhFvnkJ@s9E!I_ha-lw1Ve#pP5fVs0p~i&Cj~pg{3#DoL&O?6QaBUwI zL-QYjURgKz_h*OZcPxN0euUgj?4ww-3yzD#kW)nJnEO>l0$Sm67F^@luXD}7Ir?P9&pjlMnayLe z2gEoKeu;URb8{{(MVq5pVpCc&;sWcKSeJS|fxYb*Azr|dPQg|07f;F0iT`j3Y@>z>er)8nSMQpTdhweL)L|GO& zI@-8^DjDs`3WFhV;VBNnzD2sB8qoea8A~gfrBYI9)~I+>hEzmrx=r$lklQsqL$k*j@bdUulqYNh zZ`JDLS42JPOw-xtSQ~s`W198RBQ{6Vqv?7PFA1`l9>=oenU>p>LMM-dG{TTTw&}z@ zYg(Nn_SlJ0Y(!zqz6ws-?4t7RRl?d7CF@UfLyeoGVi@qF2K;C6@6Q1P?#H(x=EQs% zYkJ+8Vi%;9R-M?1zq%Ylz+q2Rq%~%3)jh%9e~m#nJHMtpBThDSPXW#1O-c1-&Niof zXUT>kaZs7@5}W=fkPqsuMk8M|%4pFjre&|}8I_+EqZ@)#Br{4ex}?L(8J$uw8w zsodh0_pMrx2HHHD6))%#6>Qo>TVs40SGxLjPzj17?SR%mqozQ?a11>TRvj$oi$y%} zohdl$PP4nYRF>IzFl8a&X75Xs&O3RwVhae7(QZaUvAlJnbwX+Ilavf!@|sn&Dh>nk z8ly?ON1FI-Da;8&phS!)VkxZ1ne+c4WuuV@Xii%I+3o+rX)%DqTQn z!3qb7zqY_UuJTB&V64z{#5V6wjBm@-U8E0LGiY9oLnJt_Dw|sy1H*`8CPB$>bEJnX zRA5CGT)`Kb#JZCtuq8T1;~~K@iYi~IF|NZ)ZwXw{V60jWi-5FyHNbIYYNjcL1wu;VkU?6rHdpYbi3{q213@1bEoPP6 zNpEppX6RA4KIboDW}!Le-3t6er9mS^I1Y%=uRhtS9c|(BMfblu5R$Ft#LU z#=*%Z&yHf>`x`yvjh1hj#EDFXyp~-Opxufjj8ij|)^#U1^4+b1$sEPat8mz8Z{>7a z({PckX{fZ}Y(QQrqUVva=TpkHll1W&S8CNP#jyoYj%QrB(`D0-ylezok|XlzdAQhR zCu|C(Dr$_n=Y=h6C;01Zgikrcg1Cc)#KCfsG3lUG@r>$BNFWNC>Rg%Fv2qcc@&*dg zO?#cvsRT(D>7R-*Rz@27#?a5%UHR{)v;J9<&JPdUNA(Ps1SM%pEzO&S$>U02sFh8e zn1Q1e!xJx!L@y`_rL;CiOmWD2tN{iU$iVXh)DLWM$$^* zx-bcM?6h44N9z%lSh!*uNRy&X9Pbz??;zG;Ebm}!2Nw!&52=>X%jrYV6v_{KWI<*; zs6tE^8@Wv5X>}X~O_Kyu8%m0GAMj3xD}&W}U;sNXtw6ug-AEY<^fuIBn_50`>Ix^jSX_j`w=L zMlMKp9gZyto7KD`%h=AZ1qfp5iOe23c8`P{?Z6UTBo?NUpmr8*h#~gp z^pvc8C+TH{s01jvo<8BxvjI!b(byd}(b30V0CljLlAw`LIg3~lG-&3a`BEIGX8JP?1R_8CH%!n&SREEut**my?nj4*|Qla42i6&cTrJTtm2^(S%=izQKujY00x zvhWiUMK2k1lXysS*LuYmi<@Of)r6@qSYum-;f&tsghtu6agG7nK=h#sM7IeXL18(` z5+UXhD4S%jaEmS$?nD|)EUO5(MtUtE5 zu}+3Y)1q3aJgeB3Z#gMX5zc*i%kfO)yidO7Ab>}Fg;*4ap?b27JK_w_a1NV+ju1Jm zy~$|41aW7o3`b_m+$(D#ra`ycd2Tw+oL!~_3^UwJ2{+jWjw^Lg3bQxl9@$YRT=dZ2 z#T+7ur&9ZMyZ#Ud1@2OQEX5(@k3Sn06KCKKn+V zFN@wBP}j==1`K=(JZ&yCU5}?=?*1nZp!79=N5v}7UdWjSvWS4CFS8-Vin}_aniv!yrf*^MRIa9n<%ZE zFS)W4%N+O+9GlUyH)UT)1X49Q!Pn&{NFArNr;LF`#sZ_d721zx9AC9SLf%lk^h)*j`xQXJa~s+y*sk>i>xv5>!w`Rp|A&2m@tO~xKW;uv1`RvS`fXj(>B0SaRd zXov47Qq9+{ml#DS!lUI<^jaW@L>=*8iS>c_+L*KN)YL|1Q8@^@ih`G)AhOc3gyLIt5rs=kp9kuW-=aVoze%yc(Q^^ zU~K)eJcKbyD`fh_%T%j}!;+1ADJ75MU5guwI~a>Njn_{q9<3=C6r|W-Zjv~_7f8em z%seWWU?oe$&T;f4#>%7U#`!{GjwoEvf2UDWc0@P9lGJ5a{Cje3xBgJ7awmbNApBv% zsz1|_E!gNU6Xgn#pcxN!3_V9qNJ?()CsvHA19hhGGi~d806GK*H*{ z5ECCRVkY)-;HqgHjWEYT!IK_h%Db{k2?jS0t<~=}oZgrTX4-ofQ%EI8arG#lpY#$m z3eiBCjkdj$M*f{dY(TA_$W7-MHiDgeiAE~AcgDfJlPQ-tn_DCFP;1KK>wNRXEQ2_s zwu`S)oswBsvqe_7L4tzn#4D5*t3B3uC6#>d7WL@?OcvRH37@SROC(%JgAUq=V0&i?jOv)A z>^jA_5-iKu=`)P;-=9-XAo*6v{YRRUXMDU?OAH$uNO2#NxP~?wc0KI*s=uB^scmfB zz+aaeZX{|HTMp8Sg)XOf+`mzj02Nf~Gw_DsrIfsdDA^Nl9V1v2i=)*zl4G1qIEc}f z4j&qSWPv{E+wotQn-m%H(zDzLl!uhU7Z)&Gnsh~AKeP%v#!R8ngX4%iro=^skTve) z+3=z}hUKrM_$G<<44RQLaw}Ed+|ythuCA$A{UWD|6fw*=mau##O>oQ|vVnqZ05h^9 z>dKB~K}U``)b1aec_0D$EPnVTe3PD5v@CRNBjxWNG^=Wraun7N(PRxie22f0E zEkmc~uV`%FbTf#IGD+R+2eKn!ZdE9OipwTd(n_t(@7y_zVu67!@a@nD59yewlSiqH zb!Qd~#&*9gR7JSqbY6I8=@0`+zOJ~sg925t957VHG6o5_8TVJIJs134>|c5|mPcgN z>Lz^rqvBFZM=kiz;NPF4lu{7tNH^RlxZcd>`)$MZ#v2s}N0}T=c+rhFUv!ao(TP~I z2IA8=Nn0c@9uD!^@fgckoG8w-^d$>S#h0EG3}o}A&$v84(`(H|9I_sdXXua)Y~T+9 z4o3M3Z_B4Ip6#P|W*^g!rJX9Xw^V&f2pf%#gm)~$%{1ohtz5-=oL2MsM2lae8o};B zU1Kg#p)=+6I>N-9@;60VT&$iq955nxiM_-K0;U*vb=wn>YEqa#-4=6b%6Z686_&*| z-WZ0Ml93QXh8P!)C`^m2^2u^OBcCSD7uWw?Ihju5LDFMXoEY`zq2|=nU34C+OK9js zL{>tV>>YN%rMywbtB8&Q>wvsU50MwvJ2fU;WD0DbpggO|d^U=gCu#sd7D0wQN^ubt zQ9>qDR*)+cL$3C@(d2r8E5woLTAB(-{Z#G;8YOf>O;~%Aa<+GD?3ql&DnYq$Kh6>y zJF!r<+rBRU`THL$SQ03~kN7B!SF6SG!9o8Y*XQ%)vR8$s57zVmjBRy*Jgi^-uD5)* zMpf$nz=!Mc>@F)_DeK(aK3h8KoKr8YUS3{`^xL0Q`@Lzk*RQVM9sDvKy=%0gse{41 zVx~a96Qqsa;9v^>^wa$z{tAs&S3Nvg)e-#q4`is7x}wT)8iB4d$TQRRq_>(cJr5w; zF~{)qMC=Fc23E~dKPd(Ipk3^zHPD|_l97>5uP@_sAh{~~;@(wf@#BR3bVP zO_}cpm;;7P!@tu5Ki00GX8Km+H+)q z<9Mz1!^=J3OS z%so|DDEI}}iuygj7I!^U+)yb_ENO>F*!@>n-#Cp|;%M@s23QtXgC_a9*Q?!oUYyV5If*qhqkcqHsQkczG4G9DA(nTKtq#DsxG4$6 zD`g5ppW}dNi|$mF8v>u($O{S>Y4q)gcgG9tVZ#r_!V*H;UcMbg{o{Kf<*b)IXW5mT zGB1{{Q;|tIDo4q9gr;8{KIcoDvV{AKoaa}NTVS9V$`nUp z)ohMzu9GD|8#PVUO6(|A?H&b0hRy)aw>zYA8)>?p5(U$wNkZ)kG++9ypFqN1eDbGT zJC3G21_=L>p_K&JDZZF+CyWdrI1CbAe|TuF{lhk0rUj6@q9YR;wd_IfwsKc&SZ0@v~0ECb?u|^(m&g1U(&#MTrVI>U=ShD*;WRDuz%Q zR1|D1`7dnzsoV6 zUPz{5forunyTht!a`Z+SpLo75+LwIvSveYcpvBgqt%4ws49#@Cu$+aRI4gDFuj>@Z!&MML8S_G5L~Tg7g_o?@Zv1>8UE!;{^MagjaZFD>AVj zm7uPxXq#+TX&~GJPflNPxu;x0kPN4ijMtlp_GT|Yig{vuVX|5?0=g8=;yVKvkPzRT zc8}mPioI-7tbr{mP14##B1xod14WBvCZ~ZV#~Y0s#l`=Q+VG#jzduLuKhL=FQ~ACH zDkT5a71@4Xm)Cn2giG=>>00Z(>pxP)?9WJOuPf|1>~_VUjUgbK3C;03OS*fUISFr9 z&t;Q{Gic3*{5^lL9Ap^C6Jil#>ag5 z&cU%-dkFDfl}?q!)O?1fScF3N?DUd-OS`?K!WtPA6 zWFs}7qXZdG;b$8Nm$>>hv13}ae6k#w9){%?D9YFfR}+{7`fL)QJC83Dwp36ext2Ge z;LjVAnJ5T!K0ARWD)j5aCZNRrR^u+%cq_JAQgX8AorcnEVp9D=NZq0-z5A{k4`MVf~rOJ=1pDH$2%orkb17AxcWZY`97464`kqHLV{KXq7y~7lV{N2?xq|q83c?Eik>OdVyBx|RjM~6$we{eUi=OH| z#{5aN0=4pI0umk6dzkJ;+vdc}EFJS}$Rz!cf0v>^6h4}Y7r#bf8~vV__MRDt2vc5d zF`?g~&@XV6LMyIUl{^oLJf!`w*eOGDEM6AL4yg#5W6NP0b*|i4^d#E(^k$mH>B>QC z2Mg8r!Z#C=8b@pfJ7?>HgnR5aFcZ7308;HLmoE8n!HL$a{&ng5C3`RFss(00ToI}t zqQIc7g1ke(@&_=}9?%OcP|OEMg;4kam&4i;D6DxU;`P;H!e9$SA8Y}5JH{#uT<-kk zd`a$6y3WpH373${L^GsijLQn5#2fYc##Et;@^?f|ngM3R_V>h558B6Sj7vOQjnCLE zi2Q`T#L0Y}%7-z=7NX8{Cb9cNx(X%p2yU5}lOUUnLV&n!*6%ua|_>H`ek@+~a zcN=Gv%YZJf?TAuF#}J~GCxYhx=67B$d&wkT8n~qjh$PEF(qBaf@Z0_vWReI3w#(T+ z_1FJNhVaVMXJ4ED`0dZX^dF$11E8S;6jMeh;Sa{uujHNnMNZKsA{ylU{YWJSY`5P({c6O|Rl_`}p8~JR70oXtJTP z!5lq`y@A&tJICN}*W9Ex8)=)P@oLk^@UKN{m$5Bco7xz!r;D3fz-P8iYC2!7CizCD zNt#wK*ZY@AJVRewZ*}ksJ$gW|ow3Cs|&bTKfDus`;40do=_eAW8-em z2FWPj&*kN1wVzg3>;3bzI*1Qa6xjOXg9Y56llXvNqfam49zP&U@wPef3-HSn-H8QT z@SYuNLp$^dO4ap8_lJ#a>uZ=yCP{Bqv}M@SWSJmk{i2WAhO4lRyEI$vkCGjmhNH#A zZ~*V*&jIkrebjt5vk7eVvRR!kM+Yx|IH(^T9UlDf^zlBvh`-bt^;+?m;fdG zK7aJ*r@#J{4$b`e>Gw~6IDK5ONTUUuAi65`YArax%)_dK-f{{O;b4V9GwFIc#3lSQ z$cEJytNCOB+VPB6GG}}uBdIXG30%lDp;`G3chu{_-RM2QE=mITrzp>4`HVp7fc?1kM-g=HZ`>S zV(|+H{KBpC=|`s@reolrPr;`bpg4k73JVe4z2A$*a6LXKO?$~?H9!7?`?883os=Hp z*^KPjynoPpc(=GUdcj-n@KFD$=-}g8hx(uD|9Id(m5zz}e`llqkKk6I^LOj*W~0`r z)jRNQz18XbrvHDAKOaNq`9B83LegkHi&o<}0)aDI+7~bdl9DJMVxLMaj0xGNml5UZlqa3x9R`=kK5W@bney zI@lfD6to=X8B@U=)E^A_-lN~(#vE{>P=uw#qxsO13MS~oH5y^m1X4kSwRTn!h6zN5 zrjth2S67X`wiJU3$jd+?6AYBRrVpuhEea~03V2yeKfjs96EQ}&n4C?Ki~xyOEBL?< zt2sS_NbhdO^gPe`GLHJNRXC>OsPt{}E~ZBmF^$$$%LQU9k)V9TM2g2c?Op3e)6&kD z5k^8q6pbs<+Vl6!Wo$)3z7{rtF2ERfI8W(&JlH9`H-SfxJ|Y7L8M;bAHH}LV z##2P~YK?Yh&yKWNZB?q#_`NmiLBQ|EKU=YLMLYuL2dx^Dz-J|n^qm5RuTi8zz*-meYPP0hr z2uF`5m?Z-wc-gy#X%Xc*h5?&|abHo77^Elv{64zu%~sW3m3^M5>sOKfOQ+vI{`SWw zPfHI$rYOUxOH8As3es!z`@*+QqE}J1T4f3*=8yOhNc?b?fN${O*C=v-S$cLQ;28{d zi7-?G*lIM1N3fdks9~1F%LbFzH;{?*cJ(68i;2*1CS0Go4tWwaZ*Y=SJQ~+TJC_s^ z*lrmvS9HcT>t)yy?xavrRVFKUfs5{-ju{&EGv5rfuBnh^hFFp~{TI3~dJ(00W6lch zGH{+eZJz?`LE^>`h;+{$PuxOaEI>*K@z4iqq3|wZD0GsBxyE4by#JD#?{kLee2Eto z3k5~TZewF{LR?qbNH3yr-H3h9_-4R=fN(IP0tk9GgRiF;evlwR3W=$D&t^|G5Tw1J zrbJeefONqnMZ$_*OFr{3%lYI2mL1tFyj1pi4lW|^N(HF%t2LbyykSxr2QIbk%UDzPvRJfQP{Vv25}FQca%dUqW1 zGHj>>O_UxImtvL$OzHRV#fdS0h1H$YRM5V_oMZ*dPh-poj&3HFXPn16Y`T7F&6yR+ zqX~Voo!@ z_vOHVG=P^8aISbyHWjG>^jH|S`1EauF4=UCE#F8FRvkL3`gmVzJ}^M62FAAUw{0jJ)6`_Ta%v0?$5twa1CD2U_KqGpkCEVIl#!G< z;WPgZcM8@E_b5p{TCW%5Oj?Cd@#UVSUmr$>cLy{U$#>%^Rsq55V!uSHlpO^9Xzi0vV|wqOghg<;BdZJvr}dxlE2Q@7@RKLB?5~FElk!FLlr1_miGc9 z6td4=2gnsNR~=j^e#)mzg=U9s_oDZTKFVZ;v0kD#UoWgy>bfUV z$B!PpeEIF^i z+lC`4C5u@Kn{Y}X(&Y+c+31!ar3?=9ISUgyLn%e4VhnyWn=&gC1U?SWwH^7cAUn zbQNXVDL3LD36fcmJHcDe&M8z>DHjR_FuyhHuBiEHRwo-3nDuzqsjMmr7|9@(a)~4hl@yrYfMPNC9?tjz(EH%p1v=L=w@d2GT3<5 z14z6BO=g1J9ktNh^kIN6AAJQo`}haB#=iYJjn1!m#ofx_Dx%oGBEf1pzhIGH&P?ur zZeRwyV5wWK9DU~J5$NJTE-W1#XAcs*2ecWQeUS}U+`+n5MFp3 zJM1Iqf9M4Wb zwBC-=K7&NDL}*$Dy^SHY2ySfP4L6_Z^Vjk&6;5je85{+Ai#r${9g`QxD_yv`Fu|d zXvCIDWc6+rnK=&9A|m_i5FTY;LHD{E!<_6&i+av?mA82$EKW(@fIS4p*2C=_s<}j) z?zzc%!z2mSj<1)B7=4M0PbZ%!+Gr!e8hP(&@e8untvnHjK)i+GeKuj~-ioU$GUW9{ zkHz_rHBA+79RaDZu=1Ir2(lI_Ng*;Y8m*1hk3wxXjqNK&Bo2Me;}EbQvI;$C3dl@i zv+u8|(nI1cV9ODDKQw=Cpt6tekhu{St*4*4$jRNGq@xnC5>RvrhY zo^j)?lH@#bzPt>(YjWa~FRR#Fm;@Da-~b~$#-=5Ki|+%v)r{90Gwf?N=Bg@erNHw! z=(q&`NW+z{v63ijlX&Up+qcbAqwLp+1O=c-`gZeN1_whJg->dYN14j z#zb~cB5zZhl25uo>mdA)*>otzA4A6RtXtt)SmV01(Ng38SCMY zsCg{&F5Ls+i*(qmvBq&7F^Xnn>ZpXtxvhYCOFg8|funI#w2u~*?Yo%d_sq~2FhNcFTqkDy|F@bqbB7U6gBjOlVRZ@~h`Mxa0 zlM;<<#n6yQT1r-Q0W-DYS^BdaU3-%78evW#?q)f7wySG?WJW?#fyGx(Ip3COthTqx z9-C<*c`TVFDuS?mR{4l$5_svv9#ON!;uFe?d?BfJ10oL3o0yvkY^!WqMFSOY5gR~9 z*<~o=TY2%0!X*Sd!k!rsk*9OLzU_pm6?6opvRn&BMPt&zL^cdeWJbm=!yQgrgJpbEsXF3v&iUZY}xfkMPf}E*0 zv6p}ou!d`7#w&`NIl)LYwA!cy29nezUgRi7vGYsRFJ;L=<0Mk|1!6Sfm7+Ta-8hMO z-Em#W&cU<0n?{eGpYqgk+PIrhJYB$)LG4LZc7lnHR%2@)fme=Yi1_RC`Q&;!UoPPO zr?q`fYs;%-c|QZer{qeu!0yhjJcx$L1U2c4nEb^knTY3qVVh5QKV_P>QHT#@}3+Dag+YbX28z$pz@5j~I1J72mn#1Gr>Tl(XUq z`*uzuE<=OOiKdAHjylQE85}RfY|h5xC6Latx4d@ki=Wjxk;@c0cRgQ|j|wArkTz)j zoZE;760^J7eQF54kgR4ERr+*JSIV;eu)PK<};b6WI4d#Y!*a|8e`&Nu`L;)2ih~0NbHuv?$Akr)@bE$ zs1}MpVi=qhB|KEFkdCn<2jmB$8$a`Bw-5Bq{IGxSh6eRlhE1%hexIt zpr&y$(DTa{Xv-XUc$zh>5}0eoiPFfWFnt4v>M>U>BNGw&yDhX2Q&rZAgdCopf&X#* ziP%(`64cdVgSS|zkkV-QqaGs_+2MKNvr4pM$%InJIr=b0Xx8P>G7MnCd_$Zfhhk6& zQYsM&+%7$qt}()q4n4Ma9?RKBxmRZYTtY6y&%vh&6;m6x;Kz=r{R<@75yn4L>;Tyk zG)a-1$Anl1O4(P;q>jxKb;(5u? z=K}qMa^eNd&`pUnEW5J;N)kV#@G^zl6tfiHBm47Z!o;id6H%oa{T=xJfSCrKe`5R4 z)F4LohOQBe4j3kMf0=O9;I}M(ecXF+|yK3X8>Mj%OB`-Gz_+8S60a8y4ZT2sk%88Mv^uK9OJng^iG z?qg%M>d{g4P!ivwS9Nx|aHyb>UV&(5b9(`?sU$Nd%NE zcJ!+GW)BK5;=#~K6Cd;#|(UNUnew3BGTQ>GcfF#;j| zRqM^|NBcZluf}swJsvL+tsY(A^Tjnx>XT@2R;5w^dO(H0_3ZpQ3X}VySM4_^L7bnJ zPl$`b3#M3@VeZJO01M*2&>0HK$oTfG$Siu8y#Nf6?UGpLV!ebLmmNzO0jbt*xSZly z>P6Yv$XvYq(afi=BSY%Ux2KPve*fYrQaO@`rEqlP>Qu-Ct^AN9gi!~)Msw!q6F8jy zN{1bY%MY9N#DH7hZ?s)kqgS0b2K0xGe~bZEgfc5E;K%VaXsPkuEd{(TOu~isnjhJo zb;!S+DCC4FxL(GOty#n#2!E+mo5mX&FWLF|@f(05;KmdhcP7 zM122%Kja4%4_|(K4loIEAD;qjGzIwn!2*YO|3IcvJgc4ZdjBw5o!A-cls_sp*Z57N zBku!~bIpe2T(mI4#$&d~L-U8p>cr)?(r=XBN`3F|(?9&1xqrZ~{0k-S((o`zf~>^_ zNfJBF)6MKXGkS@P4D9!9Cia?M(L_EtulE+ydT%wWH=anuU+_;rU}5z9>p!2IaP zT?{v*_1@xL;icsoO3VG|tX$)z<$hpRZedR8&PloVEqbkVbrElAJgR>zbRgb>AmhH`D&R)|B1dGIk3xU0;s#8M{SO_Y!u^duQwxB*&8D>7_s!bPtoND=Fj=KoZPHi>-KVLZ!e|xHZy8(JE3-4K5anjx1Cyh+nKeuoLGCCd9}BbR(l&+ zwI)!~Ga0t>Ihjl>#@g;lw{PA&wDy)v{_V{zZ%xVdS`NnlF?qUKFrp7l(>2*N-4D#t zHHBHaHzet1w(~XW0koXUZ*D{ zZHNSxmAkMcCXm^l=FrVZ+%C9*JO^YiP2or&lEtabVHUGK?*r(h(^PbCmuK?fQFtI2RZu9!YX*Jg`D0&Ibi1iqiv%^C_ zK|X{wjo#N1$R{(5FjzcGDGy3l(KQ-P zOE;~j$D+1Y1%wxN`SW0re7^1r#k`H5%_lL zhPjub=cjyLRFQD0u%g*UWljDC;)jWisFDFL&#xx`MjHrBZfrb6OFobfEupf#6WC}rmZVv;<2+Y83KmZwi z;6o9BLQC8Sg8`Wg8qf!V0g?QY0|R?P0%5x5HaX| z(1Of%xS(C3g3L`&K|8<%dAUEggcW3N5huvp8b*-01$-bM8^~F!(Uc1$W%A^;88*n# zSH^*DwqOUn2X2sI-$5~m&W@NtW*5vLA1`Q!6)A!e;CuFwc3GIj_WNyY1+J+;< zhvZI%^}HXNkP$SY9agCbXoy#76WWm3jyA*>&y7e!<_4sp-B5zup;BPE?UkHx@ zBKiBhfNFz>5#&PznU9AE@(_aV_l!3oMy1$i433l1!vH@B$8-~Zkjdi*g(C4SKnc-p zl0g#6Nm3sKDikh;1rR|<4?MZBAUW6}T$H_N1L{yH;C%=HksXoXk^BJ|VhS275K@I{{M-HhYN&@@A&EMjL|963z$@~95xBV|_by^*?|1~)TppN#xM!or) z{qJ-9`OW^f+5WdfFvEv}z}!v@fYEot7=RtQ;s-kRojfO3|3^FJjdRN1hELvjK6$)O zPltS)zQ1qYZ1By0h-=<#a?O9JXWryJ^SJL3?aOU>=n8r0Z_Pn}%l`S>b`z8AZE=QjNK=8pK6Kh%kD?i6|P-`j(4?rimC zJ3n@zHvb-L{2u;&Z>>e5yCqk@ZEka1#e2B>ZELwm2W!2)Ex*6H$>+bDt>ptldf)30 z%Kvgjqz9j-YHs zEx~^kV@&zpe~N-%MQNfshM(cehwtW#cosdsTAY!v=6 z;QOG)Gm577aB&A{;q0GjH_&`;V9+Z3;J-uP*mqKRY4a#fPBt$Q3eK$y|LTSrmD6}K ztguxb0VSquww=13A4KKo)f*T<89|)xQF*wYMdh=-Sp_KtKf(D#U*t)hwjcKP3y+A8A9^HR zfqp93f}LIQKn`>yyc~2m^3<6l&p7S(7V$of1)ji7=Z|=JDXs5|)v`L8%+Gt1GmD%O zQ%7a|Y8j7W;98~ouV4TC5dQxM`2Xuti3yUHB86p;fw2JxU!$MmfzBdjzp%Lx~{`{x)+<*QIKgDn+bPD$-Y0N`Sw;$v&>G<{} zUnEO1YRTstj&zwAxf+9oz{d-i~j=l$s6 z|3v;b+)%LI^ii`k{2aYN^V1AhZRU5B#;Y@G*>MW`6;3z55v+kO zm_L7MNWaQl0GoLK4r~{Fr27F!4(*D80Uz?8)4iGGx zzG+q)(bvhWH#sHvDgkJICW1goanOt9lByX z_Kkd)`~Yyk%^g0&;i@~6Oo<*W@$sgsM$vg-J5&6mfaB?{IrBQi1wG?c+k-bApf&6| zN5rcE{JrQc&jj_M?y?NTKQxXKqktn3+rU79;&LjLR5XJl#O@s&z@Jh*~k5r))< zk4s)JRc?D+=cE37GXLOl$?G3DF2YFPwrKF?M+(n2aQh1fqSx%*M+(lhaQmaX_~_AH ze8SOv^x!_>*v@aLlKVJeR&_+r$d8=-bpI8V9-u({ zUx9$njr zE^<#?_)omqyp~&6+PmSl?8dmh;d=i7GJv+c0fBI$q0-Zy0Hh*FkrPsGT_*Fo#(W6v z-s#G=Yi{j}0wvpPLoU)yQkAZ;JhpXZ@chx*>|#X`9DHX-(K-raP?LM3_Yfda<)SzA z-QDC$WN>y>;pGbJ?Kq+cZT1Tl&xmGNZ8|9>#t!$@_ zlZ{Qkp4~t2TeocorVQHm_n}071?Oe%u;9s`Wu#Bpac?{8w5q(VrE$Fk-?}dw!I#bO z%VzLptF(=hroF{J&e&2Cd_WY$)UX_ZPWvGQA6-SG{xZD#7=0S6|SYRVS40nRywXS;l>@ zCVZ4YbCdNHtx0$At`W^yg3KAO9kXXJ0wgF-K^N#91V)YSL&qozA=6ByNWhtuj^V= zt8A5Wuw4wg*zGd+Y;vE}7FW98ivo)Z2D2h<-C$3_$MWWs3p~|<=**@Shi05Nvd{yk z7@!gl&REpe>o8)^M0CSgc-_1K-Pt@IWXV_CZFt9sC?k;XSl}59xGjEt)|>Umb8fh#&m(i3na=V0|P z+=Sc;=Qbg?O+|Z<9R$D1djYGo0@>>RVDRwQlXR(b6BROzTlrJTvmX#~_d(PO;xVp! z{k|ceEPQ*0-y#8`cyNXp0cTiO22Cd^M=tz=-0&>Eih;5BmdE8;d`S%Q3_~O%`qlct zDiwJ}9g`dsnt5A4bqZKNls2G`&@hf=U0>Re#W-HX0S zkWE}4+R!u%kOW2c?LGkKu`lP@t$Qni$01KyziVo@(R z@>`Q&N7q#4oqWaO%(LwF#px(fiYe&b;hS&0=fmd6N z3SbsBQ`csQS{jYxMy8ol6cGsgfZx$JC|d8=4qN=~&n^8aivLB+|E&f8{>RPvzs(Nk z|JFO5cBhMk*=l!x!~gy)e>DDA_MC!$+l37AlLr6Z7~z`{IgK;Up)ZK<1lEI5@4;JT zfW<<~POy)!;O?LsTiymaeJJ)FbOGbfUH}@!b_K1wSH-4i)h~>eAr~gL1uKf@h%1F& zPl7rMq+F5hQZpP`VWV7NJ6X9BWg!2wv3Zin%=N_-Tk1jd-%n@#vm~8kqINy{AJqWq z_9mbO9iD1-FGY$Fncax_gcb#)BxuqO?+gCKelO9%2uWz0;m_z1dU%`GldcA!(iE;F z6?6WiD;ciiPV0n&x`lP3X1sO6N6zP0nFsKb?h*dCWijy~ZV7%uc@#hRLPN@G@W1RD z8;n)agbYqvr4Ern>(myedCDlNX#uqbF3glhcih2Qg@ zMgl~o$QtNr3lP>1UqX3&U;OyN>-gE;mbdAhP)zqie6e4)Xa3Gk#51}}z^R+$@dJ(% zr64s5Gd=T6q%5{ZWgO#IK&qwhut+uLTZgr+rS43%R8it8F(Q}77ru&Uy3hxQI=_Kc zg$hNOg6JV{E=`N}K%-fUr=qjKF$T=gMzLT*B{g3nhiZJ4tfIP%OC~9?c|!8ik+*@r zb9CY{O)Pq>u`Rer$YXQNk}Wzv^J9BlD7oNa<_G#PFM2qgvYn5>95DtZro2;4A<8c0 zbHNo@OU(ZHK;TcGN@a5zo4Z%D>RS7g=pC(3rgvD4rhQPWNA=Ee3;wI+)Jp-Z6*Z05 z9cyB3QDi^^X<~!z)^YvFYw$bL+&0hkLsgjH)ED=sNd9+lF1OPM%Kxp+@_)UK`G1{m zr&g=CTP@80Y&V*};s1P=KNJcM8UP{f_^3IHD&uA>eqJL`j`s>NX1Ku4mp`N7@8@{> zvl`ca?v=O|sVFCxTbb;mf2?3LT1A+@^1>%Mnw*pKzxd(l|NZgwho?`1);I>IOb_l+ zn~k4;&*MC)VC$J@8^N>9t8=`W`a%u zq_0$;eEjXxN8cYuKJVD@MpRxxH%knunp{`(eMF4Z-sDw+WnLpf^klwH!|n*>Ycerk z+>#N?e0BOg=)(u=ba^nD_j{9ra}4aSKL6&~_kULk&&U#+JO5e!?$Q5wT8Z|tCIO!` z4wjP#GcV#=8*kZfY=B;HtuYJZy0-*fuAM}J?z-}t-y)^lyp1{v8V zZqR;b7vFf>z#nLDzet^O`KP*gH`4D!Lhwhf3hOq>zcBdzLZAQ7GOYP;a{R~t*~b5g zsBWQ;8~8t>zM%cT-f1`6jXKu5Wi8r4E;$f6*k)7aPAOzIH3m9PyJ|rt}JN352P~( zCMFY%O8;5b_A906wYhU=A5(&W*%h@N8K0@c6MxG-a+T{Io^%7K(r@oIh=MMR8``m3 z@(Nxu&mKSe?%T(3&GfKSZwlUH#%q)&k!#@D^OvrPzj@|Mo5Hqe9@_FjyTQ9wti_+7R8sruyQ?ufIP1 z+tU}v5m6-x1|$n$&(tyeML%7`({yC7jx)R4kN)$%emOr5Xvcn)V9Oi6!+@4!p?0hq zfgjVPVFv|2QbdQ$uQZ2Wn}z;c|Ji{5MGX1#;D0qi>#ODPzkbvIKF=Qy|4a5f2m$zv z_+K}M0Ni45E6f^!T+wx^C?8VcCABV#ff_nD{-K6$X+$9^nT$aEur|2gj{z6Q7OF`r zK?mD}MsvqOjwI|6IfL5=-PZC?e+=9gcJyxe^<9js8_zGJVQ(pA87v^W< z!HG7(ulny{u4Og4+aKT6VqZGM`AjO@as7x{oKh=2F4urXoG4LXP{ohKAowYIT4^lD zu#xkLH9f*?FUK)sPRl0G`~CGIA;fWU&r)C6CJ9mtV@0sq)0wobuxrxvGG48hGoA%K zuK>1GD2v{?=i$s4LtAP$GKyZ}kMNEFvY>PGD;(l5v+vG6m|+qQ ze7p=?!Yip^bm!F@q=KdO?XEDTcQv^yE^I%;XBDKM(I`_%x^ey7jmpdDkD0W&)Mk|7 zM9%r8WC%Zf;q4OV;@pYC*6^A9vO|NCI+lGNd*AquW(1MXT3;(uaQ-sBfCez5jh0oi zFk!fu3#()=iwvLePn#jLkbB$;UbCdFjr3MwMI+7y=QG6nagWIbOEl8yWT5c7yEVr( z<+LF>VMe)<&GZQ;_8>o5`=tK_f1^`{`*Fqji@5|MDy(?cqj=K?9&C^Q3{G(v15Iy# zEJ@F3W%$%Rps0YtwlKB*)f@jr@}~*H@?#wf1m#CqrLxDZ9`NaunC^-ux%h2MK_%@! z>;gkLrZMG$z;4~89`Bw+y-_dM?Uts6+h)_OU}4T^C4Hzs?9pFdA1cuQ{Qf>I6)@k- zLc1@5nZd_&v`g?mU zhHyKR&kA>y;Yj|NTZ9Lhetk+rf$H6!6rSArhwXgTr`*ZN)vVCdZ}Z&v;`()FjX4OO(d8b?knD+H}5@CJeV8E?oJ`a6(2#Q zy>pT)9&9)tEOlf^Xv2{S=zinCqnpG+9ZE4d<*3PoGtx`k6Ekj|*29MOH;r^ZJJKlH zAZ2HG7y;PMRkCCuE55>Nm>76i*6Nf|AW%}Cx6M5FCB{%#tl(?@I72!824yB#(0DjJ z6S+Y!aN)it2;9O0kjY3!DH~NPZUNrV&L$I=r$3o^qBBd}m>Wj9^%H8@3f%Z7pVR5X zDtLX|jqWPqO^{-G$F8nq#D~)QhF((sE)de?*>gXD*e)Y{k8-$^pC@iKK$SQt55^dt z%xAYV@~|DynTl$%gm;xMdr7|bnP6}2F8Z34Vz40IZ#*R?fxlqJllHNiuX+=A%5Y1y zWqUVgv>DsP!v~S2tehgi!{+>YQX^bPW$)*GX`+I~NXQ@Uq-fZ)WzPwP$|<;I8e{U0 zm=Bnw3EOK}$Ho5kbnnWyCUb2Rb5)|LfHcc8*8K`ARw0V@LV)}~yRqk8 zB^tUUK7=LE9yoH(Jg+nSW3V}haP8=h+qqq1)YlfvEME1i#S3`DpIbFXeI!Oc9*8VN zK7RJ=LF4Cp_c+LJkoUI>!JZJ)A z+NY~@m#*F)Cm)Gx2blcx97=w!b6zi&?Jbesy4l-h6fwQ0zdon=3akE;VAXq!IM0Kn zwJ@hl0WyfEp*cGBs|-eK%JIPG@1Eba0l}fc`@_NP$qz+IhRRMQ#Y`9N?=V?Cg^TK;{kooxbz=U_CoR5bR zKHr8UTrkb7B>Cw;e>bwXPYn5+7m#+KX#31Yg2uV(g9YTarRz}C3t)x`H){8nZ|rId z&M+EJZX{HG377NaBcO)wKDfIPX&B_%jX=Y9kMDYdP7~@+bj$2#fz_3@^FGbCN zg9Xp5?C!9~pLcC{r{B+sw2VH)e^HQS99lVz{wui32yMBt6T&jBuanSE{EytFL*0~0 z8_<^v$54;@`4RZg%dj4)UxY)fE_Ty{K?R@smtg_au8g(jTz9w0lRgk3eaBOi>Fm=3 z>2A74ZyQGUMkL!nrz{ls%cX6ww52x)d+N_FYYHor7IxuIc>ap|&cm_7Aa=PlW>M$g z;L6y-*z+IfY4?2!EZc}S`%LeQ5y=sAdq;x)cnI@S8p8vy%l``axeH0i>CP60bSJ}$?z}e}a;y113<+kht6ez%ZHny& z@u@pIu&6r)+$ke9@SweQ+QwIQ@pahc;~zZUa(f2;e}Am#04#bVIW(z01^BWde z`X*@U=r*vWBL^W!<9rX8|5BB_lh|RZ( z$JY2{cx<-=;9QjdSM6VYY-hch!c2dA^z<+PI+I89gMz_WJ-*6H9#{WOZAI<;vcAOHx z>oqHBHEXaTCOD zQ83{`q$*S;_&ldk^#SeT;^s#ySa-IO!S)? zEA0%RX}6X#8*HW+2VX5}w1Oktz$r)m(FZ5a;AY|S6K|DiSwj4LS_S%Oy&4|6gogo8 z)Y$^5;enjS?0Av1+1EfdQC-T>!jH{9!NacoDwp|(K=EuJZ}7%6^O{JCAqjR5kgeD&(hX6*O@ zDa?xfPQ%#q5l9jI-TQ+{`Hl!8B7*shapW(D*p`KnACe~SHx;(kAIJT7WLzS6f_O67 zN1~1gvp7vHwmiJF4>R4zsqWW3n0lRlINGo)RP;_?Jd>9(H-s#vGt3H6O7-;PA76gG ze^`uaf2DZ!DQ@i*hVKv_d}?v#jR4KVO|MKodc`rY=^Hj}SF2TH_IctQ?@3SM!G_-d z_T9IZ*QC|xMT~hP6NGmF${|%AGuXL7Xy-neoF1a`x=-Q8_&)6}!GTB5h=Za7_i=AJ zxqrZq8}n`0(lO1~&dequ@$B$BYa5Ts%te34#QHlR%-`uQRO|~x;R5|`fC>CAb25k* zAQXPN{z1K^9a0M6M!8waWfpOr-88hlFG|aTS$IV*))nm)CvMn5DTc|gW z>%OVw@jQhKFzIhGesptf)Q@YO?IsmzO;I((!cx$9C$QHv>c{QoajjsAS$hhdv>_(5 zZytC%XSIRm+XZc}=EU~dN<)<>w}SFp=zQFeT*)qGJa|Seo#9i(@(>zv+LU&{yc=9_S! z?bSu-mHNU*U_oOh9mjeKk|hWTa9dVBGd^_o-w zzY)KA-i>Wt2!v?no!vURtp!nlX9Ra9VCP%Fs*Y|CtXhBaHzKoM|9ftOV*Y=-9-y22 zKXt4ctNx!_gYchgt>5_n=lHXu|L0y6Bu~O*9n#;m-#kM9JN^Xc{|dGjWbE`;^#3$F zSpTWnsn>q<|9p-=#ryxm(??IfdwN@a+`#`^jW*SPX(RY=yV)j653AKvaB*DuPff+EG(BNMN;rOOR{V%f&n;=yx_gmdNf_iV$mL z(z~9oS87@6Ef$lc&o$+tNhx0tQ@L4aQr@RT6;KQ2%Rx%8v=mHgA2N?-QORqmL?E4* z%a7fZroHrCT8dzBX^hsKJ{z{^<2@QvOld9nfg!-p`Fb>7p+UG8p%DUuuoozo=Lfw< z`Lw-chIS#Invtlol$zG0bTlf<=hf(2UW4p}U&epi=Nh||;cv$0^Q#z!cp?9eDIyg= z;2)~d*ZJ0IeM<1tGKo`6V!;xl27^>_dwLQr%YGZQDG{*OUR1*PGU`X)iRd?eFvS(> zO$?)R@uHotS1UF)qcNJsogNHQo&nY^l%G04K zB1qs%t9ZaDgVX}GN)?gOp9Bkv!{il7*gS_!3TwWmcrJQ8PuQSR+PjELvTWG~EkR@T zT%0bIexbRsjge^&*8$H0ISi1<3Hubz0HfBX7|4i$&3#()eh(w6p@B7F_IrE84piJE zSU^75-#zEjbC0lC0UdGlWF@HrMoq3^E)o=|2O-!(G7*w`yLz`53XrzW;TQPrrQ%-JUYSZkn#AWRZlKmr!w@B9;UR# zgzZQ5j?k_TOsGT_3_Ehq=vri+@#dI&7Zumw{hYPNy-m*=^F0Q&(n`RLaZ?Fq6$z73 zLF}7)NG8|EZfReFM_uh1T03B~`9lvJ%N^c5fltQk0SU8Y()GDJ=CosD;EHvPoAV_gd=mcl7N*_ygC~sQ^|%)y#fgt@Tk|X%dcwtM{n-I4^{f zzJ&iHtkmlneX+QD{rczr6#hzP@YfW7TCCt1NjL>T3)_@nG0rU{T&S9#Muv19WYXa~ z^l&^l8!hMSMO1fKQWR&CObZ`ty2m7s9UkOF#nR%6U^8C6t3FSz;t9D>Rv5rGoXp|M zF4I5wyNH}Tnu3gR$a?#%W%G7rCT{4;M-WAF$ zGD%J=d_Knzs2g7_0tpddJw*%|_L2$d80FGeAXHl-;!wS`;%C`z1gQHJ@ag<7{zc*G zWIi^}Ha$jA2N1yi0Ak0Cq=FUfTDoz4h9iF7TO!_PU7hR;=kNOhjbr1}K|ZNA?XWKX zEP@$amoXkxkfG?AV^HRN$(72%MwADB z&$>kCx4cBz_HJIH^P(kUddshmD7p0grzamA#I4be-`Ea>1CNJGvREb;=v_q=<}+Hd zGtfrPf|b%Mp7+2ppF1!}hwic|y?+*r&&%tlxnC&2N;YAi)n0)w{I#3`18BL`Uy(w&axUuc89fRD^_VA{*=P1 z;Uw`Y^5O(bnOOjgP3{SP_njFu%r*;l>pr99aIC{0P*7gJRvdejZwlQwQjZ zB~{zIUg;*lS z66aa`Ru1Qp!iO-qf)_R-M(@P$-fwrpz1g@kJDzcG+rmZ4y|PI_xTzugXrA4v@A*^n zyOSLkgYE_9BDBfl!RD>?3R-;p;@w)uTNWEV<{!vkff&!my-6}6fT>A5%&AN7w;MZ= zJ$G10_uhDb*IX!s@rTeqW&XjezFxwKtnzd4fYUFW{*bA_wKKLgKCGg%<;C6<9NXok z)zeJs#G_e%43`4@^jFX$h!vNX$!N@v<)31n-5ExGeFa8}%|x%@y*E)=7x7QjC&CwjBu$HLmC+l{SwM2W z(z2%?2AYaRAzz}IgD*V0nqMcAiT-=`w-YM93+sQipnwZ_18yZ;;h*`%J^rlt^}nA) zTi)mH`Ss%WznZVcJB)y5fGva?ZK%F|2#xzy_BP`I`u$Y6@n9U+pJ^P|#p58jK96Hs zC9|O7i?U4Qs<*%kLyjgaHpjxpAIHMAlrq_ncH!|w&s^ANR`bPeTmw6SVSemoz+J&| zzE`go+k3tEG`-R`tL6-y1e)1}M+?!qWQtf_NCuq|$^UA++lYXTw_jZiu^VMoTEgs{Ge}4(9u~Edz zuI8V3UM~`$Df##8TObCc@QqR!;oeZ0N*TFOW-wrTrl|X}vI6LE*mzR`VJ}0cfAX5N zHi2RNR}}dE1th-TM7~=P`J5$^W5_>7N#?udffxExfL#s`4skCFJt3b`h>Dp(Zm!AAjRKoTrP;g`WgiiA^BY8&kFy4BxW>a$eK1z% z3%rw&M~st3L;!J%ed1)4tTbV{WKJlt-|Qfh;FBbhc*L}6Du_X@tILH->=i*Xd=tGY z;AJ5bQt^f>edOMMv#YwE9ZNAE%`m_>jFgq(cNq_)Hk)GsT_of9(@$KP9CGQ+{Lt15_YisT&H{g4x%B;fg~=`$9XpDb9KCuWb*uC} z{;{w$iPkp6Wt69KN4!#OLAz=Cp*;!O4!vp`Hdfr>d+-t@=YS@Jq`ke;0PR|6W8jSockfQRQGS`g0QoYTCF$=y8>Bf8I|71u7RBF=v(~PW9^wO`ctr2 zXvRTm2)h1LArI9@ZSD!t~61*`*I-S};sFs@ul-8+-FtfYyG8$>Vd|;spvg+P@n^!#n&bo)BL~vkLr0 zGZD+*0&!J`^JO0oMMdngI-tUnn*Tn3$}{h49H{?YxK8$qtjLIL3<<92TjEk&UnCe>9Fg-$9xAe+9>Ilw;@yj0w=sA4_gs(KTQ54NY#ck})Z0+_(remY zH{ut*rb#C=VgiIFj!;39%icACY;dtfg=oN? zBjB5pD4kP`{lenJ-xK)dbR|&F^x`mCN=d{h3L|jSyHumoEAae>D6PH_p&_v%fhf`fAwD1XZyxE(8| zmKQ5Lf$+nVBt?;7;E|WwxZ*b(J*K&5g`76MagsN7M;lCMIq7W^De~pxpVCaA1yEkO z;zwC{K^B(Kd3`Wx2oKC9hgxJ8{9B-r#~{>|>wC2dEq(EGc4M^o_a@o1z+uP0K_4Mm zs!^ao9>lMEea=eQ^!;cKr{|WmVK1Zx=5Toob{feH&dDYP%@Z?U_Lg|c{u{+h`|^K9rMrHL zL*9v!8zJW0?E_(55NKP$cQZIs`HI0)=Rvo*Soj^ZKXq$wlW1KA6fg=e`Aq}$-Hql= zQ3j$jlwV-6AnyGCW!M9Da5N+(sV3ss#Qc&zJBzobYOYGEd`|@06QTTl?9k{RU5N zY{DagkSiB$v+SO`WIfpN=)sb*#cOl)VQrZ4k(!X;@lOttFe8PU|}^qTjL#$M{8pnD_bgbu?LfO=P#oHi2JkdtHZZN9{J}9Cq$25+@2xitc(Q zu}m}u;zEHkcIO6d?9K}6*qy9C<|$X_CP*3mwMwB2;2{cXhhpfO@cDtI&@->=12PC( z3caky^qXEfUY%P9PrF9Msh{=+19&O`Mg_`HGTKo8+C5A)vomekyV0JVjn&Wj!JPN@T&T*}|)2m@=^hN{TJFe#ok>v`m?^0?jUm*SHxSpTUM;1u0~vv#D5f2i`zhe+>ZZPZ?qcqEdFEbxBBm&=Z}Z~=yseCAiMvn2#}!!1!B$W z`iuc+3(+tvsE-HB$FY_Oj^UaZcz7C4w%Yu*Gmk0O52y@hwr(%}0@@~)!lj=XQV4%q z&gcB>YQ7jQ6`>$+SVJqAD+3&~Zok(a9{By)Z^_P}wS4U$awax-3ce2((&nt&4MW5FO4K z?3sd5_W^}&wVYo^mwB@lwxG#{MFXIiuW$h5!6jh12Ri&Jmt)SRxoNC~M?7Mc462hq689)j}O6*|e#nWd1-7jEY=RytC-bHlkGJwl3Czm3u* z45oOLfBeLwB(sN*nOdaT>>;JU?>{IUaplIIskS-X!0a45vpj%otXmgDO{x4Pdc5?T znvCj?>g&SCLf?U<7`MW?2_~OqP+u=2mokZqHNb}k2(mLOB1b||S z#&cvTrIHJ=8)PWUZtpr)NoSB!_zOHYa1Z>_1B=l&2$K#*`QOw#Shm6lh{Owjj%;#}0uG1WkXe8;9=zi=~3_8cBYJ*ybxji&ZI}gAOQJh>WdN)kYhnL#?v3_Y&G>-M)Ja zR6AcFLb)zw>3dKlu*u)Oo|R6_o#AAijzLfzV4)`0N=W76qY4wHh_XTRIYYmmoweOv zq-`edWn9l--v5DM>*dQv=F9v3m(9$Vcl|G0nJ*u@FBi-C3U`nq7Q{QFqZm!*=Ri!$ zcrigE5Du^Ohu(B?Qi?R2o}O=PdcFbAPgeMN-G9Eh>G>wMznG`^M#F!jwXKIy&_mip zvB|Dz-^Z&vj_xw`TX~ay?WO#Ah1X#F#TNOu#U0qv#oE#gY;{=|lr9=du@L`{e>)Kc zY-j-Y^}qOu|B6aLd=$Thv*}TRdXc*AWqHP*Qb?u;kZ?ysv|L}7Bzve_Wtx!(sTup= z1v%h?tBco=G!}wBrD1ax%q7gZ4!B{1ph13EYan)vbigl6!dk|PuV4^Er?GhQJ!U&QM+!C??Uw4*S_yENm%e|>Ld=AQq;qsSIA^KUODvb6Q6$_#f+Q;zVd9wW4lL`Qi7RPa z-@3VNebXAq8%;7|Z}_HWuIk#b_g+5}t9UE1=4Qa(xVi0q{R`Uen_tX!Z%zd^a4c%I zR&Bcl=vx4XKzP5%FZ!cs0*m40z2X0}KH2vF7s1C66^+|zV?qAc`g(0k=YQSYs8jy$ z=H`9=?>qTCP+pF})(ZX1$Shb$l*BOgEycxCi3D}w?jQ_CP-ov+=6zp%m^30rV=mW~hTdztu?^3lBgAC}RT99_Dn6(Ch=P-_i+4q5ArVS1bX$d$ugfp?{-<40YbQ!i%qoqJDV(Z~qf_vPY6&n@$-*Ma6qu-mmB|n*Qo4Bh zH==(7`u7t4#ozKPurO#?3o^J2(Bg3*X+fowsbt2o;EbwN7Bv2?IPtu4^3TgVld;h2 zRz|C~ng8I#g4y!F+C7i^r?A4_$_lVR{;PU@9p(RKt+BP)z_p+b3&GaC{J)D2P3Qtm zX!13^C0&Xn)b8~s z!f|L_#RC$wD4&MYaCEMUHb-&MO`hnP{WG!?7dRvpG}ei);(kvW!0gUwE27)AWa36+ zvJ}}>M`Fa)Rw)O=qL(8*1%VtZ@HUEgT`1`z8YL zPHq^mW2Z}vJW%YWK~AVad?xM(Wa&0^7TY*m_%&B(6F;N(?|zS~w&d8k^;DJc0Np$K zOq>PqL+3c)D`!}B9r4#LD2tT1x-f1J_$R%jZ`mnPGSQ;=ATr$S)Z=y(#@_4WBJ7h~ zSJ60Y=zRB&kWBEGLB#Ra!Fh#OWNg2+*Aowy{$&PUH^V(;pC<~ALnXh9V9`0pAVKB^ zs44MY$u(m)FKwe%t(o(v{Ev?D=2opYmZ(Z6^{<2O$Le?zje}D>Qj1+OkTDet{bg8% zp%^4y1Fz#tO$xaMQqJImM2Z^1Y#8)M&!cEucBUmhD_2ZPW137>cpSqHmS~M~45sLL zwOo?{VpF?*?oQqJpHyeZ4$~(-@pUCwYp#4MBNBg8MJMe&+MZE>q-H)fsV&mL`;&>4 zMa5YhpzRY1*#gqkC5U*3t6XPdFdgp90o$yENfYtr&F!!oU(gP_{>ALDO>2j()m447 zwf?xZ?isdYJWD{=5c0gF#Q;~wUt7Z>dJT)m#T`9f0r7B#T@`nNV4B z=wq)wCNshrXV*VG+&>Gks+D3pPF_@mK_YabE~43>M~-RTv#|RSUIkOr210O}p~oag zt(h7!y=|^-SRxle1*76F? z3&@II6%fCb2y2i>EPd;$wNtegS;OO67nmv~}_4C3@g ze=lgFl5rHDD{2!O2q*fKQ?|IoK9C_NnD zyH;X!yXxyF`eoGec*nfzBjlWS1Ng5c96x{x1wN)u!wB|A-N6i9+PL@rPwK<3EoFbZ zpX~LYPe>l!QX6W$wzaj9Z~s@SX6=6)8)*NlH(~wXxTW^ze*VMP|GDGunWApq#-j6| zraAw|>wjqfg>U!z-<^Ee1I+k*6|K)#@%yKRCtt0tY5TCl3S=X$XKa4992>D(gIzyB zXg_biXuo`?#1&eMkd=qtOYuo7OHS_!Hof=m-ScN}^*hIQL)*h=hw6bWScgyV1^i7v zi{?M8<)1bE7v2ADHk&m%|J|z9)*Fo)&HsAse*WLZ=Nj|humVm0hD?7n<)F!_w%yuj zWK4emKz8dsdR&BYchWz`nXZGp52GH&kkqo`<-2F^{;Iw~msE<=S&c@6E94R#{Nkxw z>MWY{{|SIhIUV7`D>cM~?XI1dB6)nmC>x(BRK+KXIPposMtqVO5r9xW`qt~2yt|X= z!|SRf#git>(`fvO^WA;oc>NV0ORRF{SHT4eVa2=pr2976xeB#g&ZHV_(&#jvQ2eTYr~+ZVhUD9>Ux z3icv07K&lx3QCe$kwKAXc$L2&U}JHM!2F~xVBZ#9#ERYOsf&X_bP@JeRaiZ(0#ycp zInw0ftUn5is|=(#2+m=@5>Afsq6oZ(@hCpntL@hh8bxX72=IqyPJ{l)X^477twAYb zMQ3Go!s=i|!1&`Q6Cme1ca?R@IipSo6|mO6X&>3;)_MPp%Yi!uJ@9)YKlqQfsKO*z zqcb0GNb&j;G*fg~fkN7GJ18jvw(@$0VTuk0G@`#I#XW}IBAoHaqnbevQ<8|`(?GwQ zr)wMEM4ZZM*KINhv7E(-<{dWKu!hN2< zT9Y1s%o%irw+N5`C$kZeCK%W$3tb8n+SyTljDyp#n(7kD{fsVUb$}91TO>s?e`BTe zj+?!CQBNpzlq&0n6-Fn*6PO;JP2xaMLQp)l3n$0~!0x7OuMe8@lur-vLlZ_P*0D22 zq!dV;i?a~LR2JO$jE+E#g~PD}YXk{}6RkA%Crm9~b?7)Nsm-4;DVO7hGoP3o=UT5C z{K;5xmZJH&Q|Me5qLkT738^z47~73yhQ^lWM(haj;GExVa2S{wA`+HnG+1@W9UX<9 zDw82BG*_zxn`w-5V#H%55;&d;@o66>%rG1tLnl{J=_@P_$2f*#ibh@$YCJnJC<02SeOOvq<_?1^?jNcVW*(K} zFl6z7=N98ACNbiy^b9yL2_%te`^D>bfAxe1J$G4|T@oCY&ys|ks<3<&#-Bz}1)pFd zzQv5Jbz>&J5gd#h3^w)N<|Qq&{-B3RkC5hNGfqen3Po2{mZqFh5E`O1f~&H0VMFkY zTpW6!YzM$yGra2;8(L<`kR0-zCCQf-7`IBkGnaghC`b}e_~|!8KMrG^X*1z$SGMam zy?~+OO(kyrDksshiHzfZ$h3py8x%57Q0cIb1SEOKpsZj+J#|+)!R?5)XLLk<`d68~ zG;y5-E*MW(l?vepVGMFX#s<|v7FbXT@{?;Ez*FncMk8Zko@R`Q}xJb z*C==Wu*#!Wt=N4B*9?3r`}ml2Sy;3N(dZO5s#Tp~MV1{=+(n9W&q#Ac+~PRu;{Bc; zPbGKg&BSqcY(^s#Qm^tL!v87ybr9=)v5tdqqHH&)=`$#UTe~ZaNE^c3#%YBr5laB!HFuG?5T?NBLLfs_#8Tg-*qTj>;HuC8xq$Ugobm_= zdKm*(m|(?g($AJsf1e7+v{0}KC&zejaTdkGyIN_?ps1`)$xI4Ps}#>3TBQglWFGEY4U)J1U_ALUo%CS!HiBrm22U@11XY#|a37IK#aO&p^Sg2O0v%gGmxv1}2N3#j~z~#hdveWHZ8q=Ef9~SrM*u0-tF_{s)1bpw2k-v+y6qX2-~RROyY>rJ zta`_VMfJY$0oMn&C|PEAiNU+dn!EgfG9(eX4c=r66p3L4+=zL$Dv zmz^CvhZ~I4TCA#7!=mczum5%VjV<+y`t*rHykhZDct5e1{LG#I-AVAztIuzv-l%QC z5}!N&+5fM$vEJOQHF^DSG#dY<8qRosJ{CEj|M2<0c>F(K0bF$dV{>cW`2W>6>7rC) zt9~#4@8a_%^*^PItIGL5Rq2WB)JY@TmB5a?z29~Au#cW5_uPq!PZPChzqqg#r-Z|u zx>hzHJuN*gd??(hl1fKRY-Zjq(t)d0U18a>>MEOw#D8YDcshZtZt>|$v1(sLw&WR` z^m@~?-Qs$8STx}Ie6T1-q`O5vLM&RKumvw_*B^L2n1vcegHuqq3dv~~8wP<@psh!? zV8cBHvJ1*TKr5vE>qMiIyKDKXZQM^wcnI&XnImKF?B zl*AjixoGS8ldPl)PIiKxxzjp1Sd{fqm!w~hTr7=QPGkCy#B?0h?c^C*M*a5upF4KH z=az3cwnPep-J^~HGui+e`9^C zR`>n?8@0{az5nl>e6F|tYj5BbV_fS-z&tG?sY4hF;;dd}f724IrDx&bJVY;twc}{e z)9dYHf4wa^{)qI~j0wzxG^RAz2@r$^x<^3jLAOf$M24CD*h0 z__QiAyfnZy1{YGd9e97%ADo2H(1Ugg|L49vv2V!*)&qSO1{4_r)VPx9Agspm+RZxG zw=#}9&WhIyCLcvTdJ&F*MSM6ksv|GoMvY{}%F!9nY1h*- z6N`5Jad()|L%AcVMqzb_CI8X6-`=BS`yTWP7gM)r5_;1Vlok?X9*nEELF*p?&^>KE z+V)2$(XG&Sk62i*#`jeAsC*Jd(@X;YF*=_=o?3l2efrjjW8foEs$Zv6@T{HnQlMUv zfBC$vc52r$P3&5()7%fy(C*uC559&@-1)7!6m?0OEA{RfXCC?Yv76cZw(E`df}tQG zsfR+9zV(J?2aA5tZY7_cbDI>-xuBH)`7BUxk!jIC8u|9~K;0fzOMgT;&#;6!lhL=a z$y%oM+nplX(qPnG^Mb9*{E_5ZhrKw*NOoseDio{DK}Yh$xG z{cD+p)v3T68*-M6Cboc{v@1DQuoaDy>BfqcCE9@H8t1g_PjaJ3^DlvD9$I!f@ej5F zNtZ>d-|?(L>#%`iE0L(c6j1FEqh?`!4wkQ@n0#TGR&(*y_PrFwI(JF}bN8_|1L~(< zzohxw?OJ;n^ar;+0wDsuT|D1~gK&I?$wS!+^D|LyBvB^VYYaPy`Qo|YbkUo|O(~G* zFRq^&*K>>af`!ZE6_N$a+5Bn$29&BLS#Q-;7_=F%$me0As{2`s&;u63tx5HR}F0k9g>>3|dIRIM1((g`C88}C! zIK&XTQ}hluTKNKW)DP{w!}gm+dX%1kxeAIE+1c8OqXc}b%>b0~Y7u@1uU@`GC-V9D z87(EP@>rU9I!*Sz+G;y^8Hb5Ye%R6EBdV``xfIhgKz&WgTeke2kdg1Xs}2haXX)9h z$un>Lv2ACpn@e?T5>aBwv+z-T7P{R7J@7{T$x~%AG#S&Ur4$)K^;#WWD82Qj8g^Iw zfL8(9ZKa9(xzm~X)0g!LF}z?39KCw=?xs^Ty#_2bTfa5C&J2vr0+EtG$Fmr3hQ(`i zH>Ep`@5PW7L;FG+bs(gmCc$E|A-nHPUt*^{{gyiNJGoOD~7`4Tqq zIa}A{tjg0(?kCp*_2gHaW6$UkY;=NGV38mvvjI-3Nyzb8$PaN4#27$9+x&u2?-3^5 zLA#<+l?wlu^}8SOa`OE|y7ol6TLs~Efhn~3-SwLOB^3lRRsN<0m*?qmi-POdlR{6v zdQTw<-m~vXQ6HEUTZKQfbD(-M8+{x_7o(@E1$|}z_)7f=-TU57qrrF>j7Eim$krCU zsG1l5-3tKPH0VvMqi`C}CMTc*7CwA3%wNc-? zzyEa?A8-6`H|@LmEV}=@u}S$qH)$N(@e{QaC+~5DYlg};O|8-Mq8$Sy!=f1*g zNSK8z;}r(h8D_nR`^cD`=_DA%oK*}Lq8p?O&qmVL%tSQ%wIG}QG8^IFaHer@{%2zU z`B^}g%>S{`Y&2_4y#HC>gq7ev|HoZ?mKgsxpku#ie?}V%@;|FB&i}SiuS2m4ivQni z+{b^olh2Qog|n~{N0X^q1AU$?3{Ti^4zKp8Pn_wuP>Aq|o(f`=IC@ACS-a72+^3jo zg?DFR94gIF3Y1}>?*xS@-ZTNu3d2=3494`0Lpk?Hy^e_iS12I-mRdn6OJNItdhwj{ zf+|dHtKw;|kD)c8Q0zq3idQX4F^78x2rrxLK42&n(kT=Mke>=i z{1W53>xK#|eoHFR4!vnDz@I^c)9KZk1BtS9Aqj0Iii1uWD*w6TQvV08(Vt*gWgZcOxIEWzn}kK{*%nl zLtZzk%s(Ddw98}yA2dd;p{3^gRYf;}^$!vq-+OgTSwDcLer>B~zh`0Oy!y4t^@sZ` zG5<+IRX;QS+no8|Xl&N>{;#>w*uwc=-)P*=|GW5T6 z)_T*q$cxF1Zz&(AWJAWh-fv*Zg!RppL!dj%x>L*yZ#9no6f0mpdiDAe6p5>G81L-Z z2fe5}LuJB!b`^BHm^~bms52DOKQOPl(M!nS_HS5~b^Ors$!w%Xl)GH=sblJPO4?3I ze<-OsJBhs08Vtra6^T~ln*5Rezc@A6EL9T!BoQV{}1@$~a3s55)7Jyi(|N8trxSe}akjinxJP8?4Its`*bW6)*P zE~f>@eBm8R@pPqQ31e#Flm0274=P)S^su5;f{GQ@9~nr@M-p^cAWBT^xll2g`zRc+ zLRcY$bUBQ4tDCUQTHsU)($FRK9GG=7(c>nG^*Yf>C%hb~%gRn+g~H3$i5dka1%8FO zwtFidlmkD&JdGw-E&PuEef>N-^~A~7>8$Bl(q&=RboEKOx7R~?7rqTav>l>T2|6jkK|9A3PkpI(B z#_1HAf6K|XQFWi1V}A6g(hs?i)nA{YN5GRu&I2w%n(?X9ia#*;_ zjYa$aEwuUZ`oC3clKro-c_07%PCk17Zw6VC`x+H}UDdW*>k2=)?_C)Hv_an3<5zt{ z02|#u&mJJlJN{>k0{Vm^-zK20v!x{i=LKf&pl`d>n6q`A1pPQvZ$I|O&c>DiN0TvZ z6vJNUWDvj(asXl@vCB z#n`&QXzi-FvdWki9oz3GE8jkmG^-T#os17It*9s5zcRM74?|qUe`a{_RFpkCz^31< z{Q+vxm@}V#AgKKl^_A&UvB*hK%CbRrw!o@*z@?nDy>vQjb4C4cd(`dp;|M|3e_vJ*SEweP6}(4EXawq*fXRJUEE{xKO5*yUpVK-7H5_*gq)$*0 ztG`>4a`(NArk#^$1_J}6VI{+D<9PWtj&IV&>u_=&#QpOyuA=`5`k|O^>9#9edf?KE zh!{?Vh=bCOeUo*nFj_|4qA;o`kwxQj&VX`Nuj8v+&C7uMttej!J;~sAd#aKKskJ5j z`(9z9F>z@A$JUtaGL+PpnksWuvZ~ID{wSKL8EH*vO)0Hz)mrtsQ+*Eu+;fgW)=gvb zZ5#IE7^t&A_cG^L>%X^iEY$x7;U(xcpYP|J_qm4u?|L0ZN7d`=nE&VA|M$y(obksa z3;5dUh223gA>F?kPr9Gq#sd9+t5&1?AM0Dq`bHgn0qdLh_P;y&82_K_!KeMex)F5s z$MCgPr%mP;-47K01q+t1-MbHnW94z-L4O2eGc{cZW|xS%eSy_F&fCsIdY}0kc`Yu6(!7R=sz(c{_1)t-VYLr#7SoyA~ys~eoY+l!km4}(-^GHyvd|%8co{xE@luyrP;aJFaElV`{B&;#yi@t zfhF~(I;WoGq|c}qOs8md$ZL-xcV{(6+oGIWFJHaed-v?s%Zz$3qp5IC&9yaK=YVaW zo#XHnFHTT(v4`3U?~94aFzWRYWH8`*neBY|@HD>~?2R%j&1)&@rAPsVVU>9I>hM)d zy?z#}A?)<Sy_NA|Y`7*@cRiY4{_Z}{iKL;QE?1xCpS2yk!~b|rs1>{Ta07uHDL zUR{KP!5W&HL(oBBU0mtYDp#hyIb}5oXvZzIiYvHPE&n*8HM6H5f6jvDbT3V@1K4H5 zQbgWClysg_r>TF;gqsx#C~H)aQ79FOd_R|ve(>v$Oh31Kw?x0v(^6V~OoGwrAX^ps zkSIux1rm z5n?q7r?UxOu0A34ajMVBm^g8U$;PoE)nQZ9Xw@ILny$%aKj_(6gA*bQhG;{bN5VO_ zrj199ZPjSDHkz$^*3sT^*a~1@sa^o%&&HjHxIWDA-sD+u9>QA~V(3^fhF?&E*l$tPw1aR&e1 z_>*t^vDP0USPK=okV0OPb`#BD2^mK2CAK(e`H`xg+2__a1RD6Q?gok`duL)>7jH1|BYM-dW^LeO8T_AmUbLI0cbx&Wk-7B8=is$_& zL;n+}hg(zs7U_R@>nExIt#97v|Gtw?QvY)X|6cveSO2UMCj|QEpMZiC+T>v`O~4JAHZ%n_}duL3n~O#7=>8jzQ)52>nJ5qhMFZq0-TXgIJZm z9ZYvhDWm$g4~p=%+wXUJ{nP&RJ5}7d4jJj(8(r~03eL28XYx|Bl0npOA6#lw&ce%E z!=_lfL`O&usb&^Z>zPRLhUR*BT*Dh6tHA|B9t<&s4$1~}1;`v}DB=$_pPoJMkHYo{ zmZ-xJgmsVdON{U~6*1{WNar9JZjF+AQMfjAv>XPLD-}nxNtXoHLv%YHgcamvD#W4N z#)F{Ce#pqlDmuZCZ7>$$WTagXu2vPfYjWE$1JfNC;Vp?l|DP}`%B-kQS!e!vRFP>@ zz_ol7m1i5)>*ub&c((tM z(E$4BSeX}IcEj`kZVAeGLu5dSj1G^uU|<0!tKW6iC0 z^A22I-iWtLLKAwFa9@*R;c$#Dc}r+kslF_80-&u7Fmw8#cR=O%_u+Yx5^QrW7~N|Y z_cr?fkWYsGhdd>Qh&#Fe)2!DwlKNj`>puSXoqUq|Ut;k8gB3ul|2Z`A6u@Qgo@AWW zv#xl_iI?sY)9NnB!D(m9`r(OcdzKT(0*OT=_w zOzUfF2{2ke_iHbyJLdyfQY*~|kg1&cMN;r7xKS|3-hd>@vkVeR%U5n+mnrpgahYPj zWoupQouH zKi;*dTqEK_ZGo(ev2$n2xn{NKE|6RHwoZ&cBYHqKR=?FV=kj|56$5JC+3tqlD&jn4n7lULxYc?O%EOHSWB*;{0B5 zyjL8}C;$G}?b!eq>3@w{(*CzqYu@L7y^~MQ{jYl)phS3lhu-$omTUP7FUNTNiT{}! z04kUQ&5mc&P@M;ZSs1qxI-pNl-`00;F#97I%odoc2G_PyB?@HN^=4x^^Bi5C*;8^- zthxa#sSgu6W7>A-gRkYjbb=Lta{SQ0oI^@$e>x+TbCvIQ1y@Ktb{^!5F&wbW8vULW z{RF(97-^(XM|C816_S#q!|GUZgf1LaOpbFmS|Gbk=QvZ{|PhT7f8pG za0<8g-9Ro;PQu=-%O|^oDCo(uhKtWb^``^p5+&sh$q#|FtK@};T*55mfJsI0;m@wP z4BCnrbsUd=zm6AjD6b{PH>0Io6dk*gkD`5%QB8Y+rF!%P@jv;FP3YD#obalT5;S4uPr8QK>x@YyyTr4Q-fb*HIjY5##G@KSrv0E zu^<@qi==4CS=?xfC*+KIrc3tnoC+*EZavde zUe4W6+@;ye?iuGKIllEsAomuh+xTSIe=rQ*tr~z9*nc+H)ApaO_51U`JNYE-KYH+g zPr)C*#HkWLdFCdgkFnT3G(2%6OzhXBx_X(vhFn zy>-bkB2%tp>LPx){8<_n_&XFh#e~Rs<&Ajn5;u zcZ*xcss+YLg`jj}+NPtMMzdp(*JoGbGi~ti`+;nv@wjL_6*6Mv4g*ZW3YFkxUZ~vE z#2@xYGiSypVdbTo%!Zyg6VEGllSA@npncoDNW5xDLgbP-lhd;a=4%h&2Zi#rqu6sZ z^DQ}q8M(IZb{LD983nI9gn4jMgOyR{=3y6l$+Q{E5kB(#lJ7xGrg08|Ko;Dhk&p>jQuF0P%h;F z3eV8%*v;rGJcV5I`Wf{rnlXC{B#b>J5D8=hJ_S8wpm&)rDUmcW*z00(ZxNy9EV-d5iZX9(~t}CWk-xff2BL{5Ph_u;*L7LQbCU} z4g@9!+cTEf7RgR6kUI zS~az4glIyq!e1B|MajvhN*a)PULbf*e-c;q1uN0F>9fGCMr>;rCDr^IQBY%;1^t$zO$c%x;c zbwnv5#LJHSS}l!rnLsc`ub-hY3A0bgD|m-)l3YthSND8?hH|_hnXw41 z>EZLK3#(Y%$2}mWA9n$))uk`c6Z`z>uBtnodHt-cr=Vw;g~yD&hY?-BYOUDOC5=2i_vks`Kpat2IOyEa-=tsb zkLlOOM(G0q3NNQ1c?lHMeB3P2Q@Z0u&}&e9Tgp0@@N(Yi>v7I&MF<`Vf+tcOLiUI$S%W|w*D6XG>$5gbpv*XFv$K;@w@ z>7SlWJM74#)06F{QFy9RXe^CFy(Bm5VS8yD9y1wgNgV8v-tGe4e3*6_D-&NX#ZNiz zW{aAvWV8xxelG;{BOqt=fcPo{2BVMslw*X4mbr~&#w%zA3H~>_BTH!_KM-kaMA};I zu^t2>dp&pFPjY5j=7@ig0pDJF_HXm--(F(&3nJQEZ#TE;)z6jzbI@|LL=uT}5k<#~ zGTw~HFY=xG#HT_ZpcHiB;o@%3ZLWgVt=^?G9ew^h53|93YZz5km#_`lX3&^@d1kh&9rw1^~s z2%+T6{};i>5Od^KIWpTcysb7Co&UnJMgHHldIJ`+2Kj$C@8|!We4e*|YQK5=<^a8i z5?&_iXEMenL&;^la?-&j-uPM9av+-EbjkPDJuK_37Z5ocqx=Gi1RttUc=hfFO^LZP zKLJR*%2TK(l$b(+DE;F3bMqJ)`ns&?-$Ed}uHAW1u~q0m8$TIU@EsS|G z39B)3ix;Y|e|YusuPqD!Y1bh4M@#8%z}2Hr`Be~JL4Ro}{FjOq3SO<2)6EKe*Bn_X ztW>LyrcpGAAMw3~&UrBD2e3<7(_c*A9T0_;6U=trM}LWte&KRpWe0PRN8JF}C%jZ& ze~o4F8KAZ@jb`05zgvZZK|L2&e+tkrA^R`x0Sd)3*ki#ZFn6e&iBe+6L5p6$i*NiF zy~%l2H)h?q(V0f{%KM?7|8ioVnCkMpSGzfzj&5$HgJWEqk z)J2A-SP~Jc=OMw>p8C}aJqljdQV&7O(La4vSRv+uH}2D?T++_&?jQ_C1^O4T<`K)9 zX!fD=%oiCy>yzFjtNRa~XNJRV-E4+3uak6FE*+Ha9QCzzzfJy6_+;t-=$?CEo36keadg>)$4b*sf_wL)eA`~c>Upi&+7}Xsi`W36!m=keZV=mYuL$Z zx5ifwOelT4lpMEUEBpH0vsW+Q;w&m~pLs@+N<%KL^sTGbPSx5oRjsPEanSu3oQ7%? zPUR>Edc|NW1>L<27{F~%c^N3UCwlwi(b2P?+HYHmc6RVjAOE>jsA93+Re(SEsFk2= zSAG3Nzl>VmXqs1j1eoj9F7sTmTwPl>fC_?Oy)h#V7Cl9}j_U%K>2V`G3;?d#h2u-~ZpqC-eM2HTb^?2LKPN zyY~RdBFgXI1t9PKhjVQ4*=@|9|9I}dmAwD4elP#;=978TJ|Mj;j6XQ(Y+mBlW4TGfir>{4$GREc0O) z@6N(FB-`dRz$+MJ*u-m&!I*OIT&jJ2o%W{}&+(RHHyXkVj<0iTczpi2AR>=95E^>N z9tUxFK-X8$JN5m8%UW%{zJ`A`_C8?rDg3(0PqyrngBm?K+%!)PAJdbg%?}0r=tv$N z=|Uii@JYQ{H&2@D{G@H3aP#%`#|BV+eUBb(*+P#Q&_UBYIXI*zM>X^0h(RB1SU^Vv z2-F*0sIftS8hek;ll^^qazHr3x8~zbUBCI5denTpXWku{S8aN=XS&whYtoa0wrRh4 zNUb%QZ1inUe>u=!+VZ7c)3w?Ps&&*ffIw)k(Vv44<_WdGzHW%UzQJWSY?%r!^SEvS zZ4*Z82kWNL!4^MxY@h7&6AOs@vEJUdfZ7ZjsI8yy@UI_j>n9sc!f0bdcYkAJTi4%U z9@}_qIBJ6%*=QTC+c@GUM+*I9vq7~sn|lV4P3E7?byIC~i=XV9QQzF(<0popHkqL} zox$4V_BRikg6-zvhJMxFpjT~!>~@WwY&W;1@OJZ11KQpoLTqmu*4Tc`r5_*ICr9*T z+pzEUHnGq4o}CBVdxZA(eoZ&B-_Wo2H~Ezz_V(ccJvltI^$)p`wnc;~x_xAx>~Tl- zYJ2tx)!M7q44}O_;kMT>JhImy)b^SN|Gj2|pET_g2HmtGVz2p_9~rdwHn!;rb1i*q z>sMP0ackYyXF~2h-q)ocADUN;_O|UBQ*_Uv=pIvaZ{MQ5&yDO`wD-AXP?kq-M7rPzs;>~TUoikz0HrbtlQr{Ft4P(kv01)>-P8T(CqI$ z=0~>KJ+8KIM8y977C$k=f53D+06G@TBdT^_33*T_Y!56U515b#mTCvgYzII!189?& z{lJpufJt*;=ivd9=D?EXfJt-UaLoa8&4J~S1Llzf!y^ZWnrjc*+-lnj-9zr=p=Fjs z?&G2D<01F)(Dw0=`*`T|=#YDKXnWM=g`wSO3nJ~NUPju?S?#7>M%wFCzrAior2Uxd zKW^yykJrtsEq?XbyxJ@1Z<-_9+qCGmw~efAGat1rv$XfPjXf<`+j|=t(B76Qw8w?^ zZM8#wV!F0(y2g{Xz0X~vuLdKQ>}|Wk9dWOZ*0<~v!trR+khTtDZwmh$XwuYchy3J7 zRRFrR#5NjP@Su zFZ;UI9`|wY$O5A24}TtOK>K^<)d9UaFcfL;%aw+7W|3vY?N+ z+L0jAs5i9k3tw?U!k>NfuB~5DkKm8i%bL80Xx6sPdeE%x@uMTX9yEE1H0uhD(cS@# z(cuaD6>D;M=;@eyQ5#hJLrXrG?}s@dW%atIp=(AwM~?N-wWgn{6X4 zH``nMHLYi{@?Kp=@uM#HC zwTAR)uX&)qwDlL=>>jTud+TOnvbVm)PaIv7hi1=663}G1+Ll#OxwCtwvwQmorv5$= za?h+t@Rb`mu-Y?sZSTOevCl)ZZ--{z49z|d&HlR8H5u*wb*rK>*8A(OipdJ;hFL%N zAG7-S*aBi?_YVw3_7Aw$fu+d)0js}eAok5b95C7kHAkUi&1~Hc?ZNscKeBotTM7;= zjSn_hGutrJ?|_j#cx-v>fU!NWI>G^CdtkZdfRR10q&+xf(1)9jX2)8aMf;G^KD0DG zWULP@)`yJsq0kt=Zty}3+FD&{^^G;FrqQR{JXq~@s}R+VX1C9!tw3qBKxyxr>EAwh z%$kwu5wD2wXImq3)ZEZtw)B^6{iUtH=y`C&JME*#c8rc5Z}KCf#~rcB;b>cgHhkMM zuUHS;v&?q1&mi}=bm@IjO&Y9_!5_U^)!KC<{r6b!dejg0XER2+Sa79VRn#ONTq$@ zjK*P2f2k`mkIAb|QC@*rH|5L0re3l)jEd0YHM^-L91PYW>k)19-_Kk2Hh7M^=a7`ExMn_ng4>=mAU;>%sP_dQh+7KTY_DoNErZj*j5_WxGZP!$(I) zhxij_U`>2S;3Fc4O9PqIkMEAw9;-O~$1EIm891!QwM+OY{^NYnZ$aHYRP<-7TE#C% z@bw6mD*{m$2IuBwBtip2Y^Bwu)u~2^_Fk*2p-n) zQ`284GRA|WBd23X-_PmT5qIp!67Y~ZhSXF0ho+qx3SfRq1UlVPvPpo#E!ByHX`=3` zqng^Td1TdGa|^B4ZCmM{A7Sh3>M{5Ih^2tU93ORfGAF~1+XM=YX6Xa{ZctK&`gR?D zXMM`pBXSo(=7%;uVYNns!yPv_Gr(kl6)*_r;79{P09z&7mQ!(Kdmf;}n)sc#kRE44 znvar9{I-YFb`GT4JV-}cgzV=);u@KdA8&h*jt;aiGLY75iJI%{`Mt}+F+Tu;Kz+ZI z_1sU{PA77cIXZH=V4Z`7uV*pSqTio|(7HzG=*S&8OxKV_-=z@z9E6BKfKc5cl+5z6 zL_G3(V+)t+Pgyg#@T(>Oxd~=>lNaPBnB7gfkeiL>9cB@^7G`&wTx1?+aWtGli zk7uWfjy8IHA{0zv79P*0A%Zv$2C#UjUO4Cv`*aL)rM|_wJFrg720hBjcN{7{U+dwK za4;DBDhD6;ANtIV|8h$QKnvr))N0A|pUusC|F1jwUI!ww&b zp${4F_2z7nbz$vEhR#oij`uZG9bKrs8UBR>JAIDi3F`-iN_taMhvMp)IHT=*>s}RubipkzAwG zYt+y^ZJ9nJQ4@tGVLTg5uK|@jHRqL=!O~PRtc-EO3f1ukds?<+jCC{g1{j8tbj9X1 zq3-Y4YFVM$z1T*)zKb-{VhW${zItYdX z#kU}EB4li#9alxz?pf4Gywb^{j{y`vQq0`edyBUP^pAHWJM<4&IP~`?ygEHq&rxWmp8n`QeH)_J zIY@K;;5q!ZVBdJZ4x-^Ous;UTC;{AEbDu(qo@u9zE42QxH<+5{qG;S14`#9V069@V zIE)4Z`|G)!E*J#mw{9jn0b*hGDJ_an3|G`AK*%coe#%b^-+TjWEqsF|%w1GtP8=dj zuebQ_s;}!i?m`O>8awJ2)VW*;35Xtaf%|nGZ!mn_fU2LI0pOSKKO`U`KpJWpI4-7j ze1Y=LFhR1EqsV{VM9`8Ng;f%-zf0hS#j!4Nmhg%?;WJ6A9}#OPt?d|UTK$TMSy)M^ zRq(W_pBhyO9&Ttg=NGNyCR;?5gjF4EKM9(6FdKA|b<&+KWEVu>#Q95sYY@05HJ?VQ zp!tNO8eZ?p+NB7S zCAK5*blpC6_aDrEE9s2}yx2@K<|p0NU$J{wK-J*?mCSB7a=Y2g>*jiD{^{=F;A+_V zS(Y&II8h2ZjA3QIri-%y7Fpr#dv~2}bnY1NlCw0#SL1ommWM;T{uITyiWQwKB3)T+ zY$IPcSJm4H%6wg~I8uyjc!C!int6g(Ks|RseZ4Ucoc6uohi}Z!MG9y;N%`w_XkshT zM0UUGtLkMm3SBIg?g-Sy&N%fyAM*wiN5ceBo2azRvXZQmyR0k=JiXN9HDN`4AthlD zI!yr9!ng*HkvAo=^9TSHqPsYyca`g;onZY}wi7h}Fm{55XD4XXTO0M(`li#9m*It8 zjxi(sy`>?&|0iDnOecSfZ7e$fX>8V$`~Sw)#{K^PEA0DbQ{P~W4J}S{8`>OH~zdTgMhmVS)o&1Xmq@{dP zMczZ(m%OQzmrtOT^z}1bq(R4i)@{Ce}Sgk9d$!?AM{ z@G1%a4wOY#691OZl(dG`SWjqJp55bK$@*=7lKS75NCLb-|7$dxo2>uUHkz9oTlltK zzt{in`m- z`=e(s5A}NtE_jRV!$fW|gI1JDdk-j8^uwn*o3b+uSOZwQVk$tnwa6PNDNv}s{qgAN z*-!1aEk&$GTt|$Ctc1LS|IoK9C_NnDyOseAqyW%e_4O0|GHQ9Pnpb^PnswEf2&cQOHOnag6Jo7d=8L+uNjfL!yBbp!znU!9|XAHdG;3^r>m*$&`s zGzgPr6xNCHZG;)gM*Lazzf$>%e zfi}iXWuF7IVN(Rf04>`Wk+NqZs?_CB$0Y(>qBz9i<+Mb=^viOkq+@HcX9L~8i_hp{ z9f!=crgQ6449^e>;!w4q5!fW0&hWIBf{LQ|C0poI!!&IOD94g%1b zNi`_v*apd=u%$F)#(-)OOu9c8V8r?-$x{o}i^7<$I}&KAfy|9o z2V!!Gv?_JUVBuFXduO(Ty1b7lm4U|fRrsf|3T#(ltWF zUw+XA8m+5F8La?ys#sB1O=4eD$1DFmKKb5-@kw1aG^c;EUoKxdv(A|uPt5>n=0onN z<39?XHrx=iuwix%{3`S9Z5jH6kxb1T{DjXM$!GrSm*zD=@j~62!4sr^2qze$w0zmG zfc5}m5Nd{*I=n(S^1ar}z6srovWW{Iq+l=!gWi=_wvMcOS?;gZD^*o~b|MPxs&F`- zUahJ?T?7*f9F8GZ@pg9DTP0u=1R5TS^NYkwo=70{XxN`Z(P~9{!C-O1Qfy>IUPmGY ze9iMocmmzUX#i*iBaV~H65<(e-w;?ghzdzCPZcyb%Ag6&v3&WXXQ|sr8CnswT{oZu zI(MVtm`((p9iZvnGwyxy`=W%PW^#e_8BJF?NVO&u9xe{iM9d>VnCW=K?($%wwC^HS zRPo7kyc>atU)G-%S(2+VEH78i93f|*tjP@QRaQ@)@N{|lRM9-FXanC%^t~gIQUq84 zJQhTF&#?ErMJPQPz#_HlP9fy}r-I9qCwfXheTu(dl&^TY!WSaBq1mf+9~u6i;N zRtXLn8FeM@svi2Vk1T>fs0l6YrDYu{9OJArN`fQ@||b_wWKj=SIg|(~KA_wKbT1$I)>(yO^|Jlv_8XeJ(FkV4RKg3VIkhU` zoylwMiq;%I(z6xRMJ) zm&j(9{`!|Cy-e>$X}ezAh3l zRJ8EI5^IRga!r?Zh+#JmsEFK#uhyhaxWso|R_ob;sDqT#d$S1DKZsHSEVMZDXcZimr~d7{ybN zdpL74NUAHMP;}NjZ#>Fobu;}8q?I1bcZ7PxXnjKz6uq`r~$Sm!HeWroqAI=nEy z|KP2~nMAX_mHMoU>}nF0sSh#wgSkYET~1Y|U63vYM60E~lIJ_uAkB{Mi|{^PldDd` za|6tBE=qnYc}3la@f`Js{eQx6f_UtHB(6ORgE6X{!jQ4%NOtAS=Em=@&5gInb=Tv$ z&*d||^GL^sq&F<&Gaegm+@%2e3YHhMP9+cRm%<;!1v-}LAc`;_011`pB$R9(cFxE5?gwWBFs{sxEoW7h;~JT0N;stk{$(qIc=F6>3Gwd zZg^L?KQLmj1p33Nlg?lPUBh_~le*Dmf@~C71GPl-)9fazR@PVVjFXKyundBzr?=ma*#1#sd@rAP-=liE+6> zs0x_Xxj!B&!14vHy#F9*T;hr{DB&|09GU?D1|GvR8W^wb5|0s8D*JDo8LO{TbfiRv zjKL@eAs)8&N15i01zUMhhNzE)bS@qA)&Rv?Zi<;kmDfdj?3Z-X9|?g%Jz&xZhGfqa zoF=gq3lZAXjezI5xnN9(og`MoEP&#WYj8LDaW#1(#mF6x3pphUF^mYM_ewujAK;P8 zfkt9mE|W?o_YmK@Z~5e?*c)R4F_U8jmX=i@s*(c+TiHoc+Cwewez7DjKn6H&H+NY1 z=(7UXCp$kr`5`GDJ&f08DGEYXca~s)3HC(5j%;A zl~$2Xv*D=1@f`MNCnw>g8uWTP?&Gm4{yf4RU*@}V@qxmQ``MW&V-qGt`?&}&^~$20 z=Hcbf2)B|8SiJq%A%ajue>l$vhOg=4gI7WY+|;r0#@u$lXwdgq92D}fHgU}dF_+Zw4(W;<~)iJ;_Y zhD#?cExNg{kU?_UuZSHhG6xaQ>$MifPiu3)Je1}!vwlZAqkiIhL4&-KeD?}iFMlo+ zfxv=GKXZs(GGzk5?M87<1I%G_N;m|bhbQbd^%)F&)y5HlOM}~=%Kc1PE`wYOBEnj1 zW|j!_H9+nBj2!b>WV((mXdXF%<9{Ykf6iQJ#DiV~Q*uIk%idf@Xb8U%xo|(HWI*m` z%S~pBUVKHv#2wohy|klQ+_?y1+0SNAlEfx&#f^$)Hja{d@(_p&Sj_q{tnlIV01$n7}I>A z5~#6CLem7}y>+;FKIcIn%fIO%uFwYLGe+1sFT0h2-9d46CECcdL*IWZKq z#9A~w+2eaUiY8&%8>7mO=AavITO8cYoqt*L?hx}EYgC!bjSjX^7RK!86X4Yh>?;_o z!YXEaaSZr^DlJutw5)~*H<(;i-3rqvyy#eW5FsR#_H9H?l#nNE=VEbZPI0%`lIxPmC?$MrIl8ER-%j_mj_+8!vkG*h|?M+#f+83B^XoY2k^l*pLp7HJ!< zRbVA_o%CTuE{7|g6J((*YcB$GDCZQ%BP2e>!*vkLqBFsZXa8>xT?$&-*-Kk9W3<*i zvZok)=JTPl_D20lH9pk}1#uisrre&AHp+a+iwD9z^3LNv<|_~=krzn$d@-NY9!!Sz zxm7&fArCd)h!hUuLRL{{s9Y+z~ z8M7{c^XRU3Upemw^I7amj@hE|xyhK47fX6rwFp?i+=l9o(4;#D;v4y8=`0R6ECI=L z;>!?z9x4?}B&D?A%a{Iq7UnAkauA=8_KPItg2B$mSSXh5JCYc3e`jK~g)g&UPXIn0 z+}tnNpRr))FT4&SS?l^UJzaAchuz*hhO=wxf>kwdBKIO#LCCAkvMvi7-;$As@*@wl0ic9V66wHe>tbUAU&%*_&dNdfysvIORxXjCJLpKwaI=X{mw?l?+T|1Qvtv$LYhL(N@|mu5s$V|h-@SHec! ziG$b9?@KvY%#&Y4oBPTc$lFpn@0=5pj^n>BA37f8Hysz(0sWqhmtf;8SNm*r+S(RT zm`9^&e>4k?3a;$hD_4Efqxilh&DH%8toGVLDP>bNmT6X(Cv=CgNYSpz_o}$6CNqhl zGm0(@B6&Vz3G1|pnmy-amzP5ijfCr9=H{#)+gqi1KD0ZJ9a0_?VX z5(;{qL3lC+S|(0_;K_1lKv2-{od&=PRgy$}D`}@$BNw)H{B$zVUR4(%UoJuB`RMI3 z6w16|gaHxy!%$BH4t+DuI!J55kNO$| zTcdY)Bo{;(5|^&n`JTa?45hWu6G^V^>?(8kvmF0AasB7AuPg)l3@l@07kb#_t%Z!j z&k{`5abnMe;+AGsWNCa6>fqYn%Psd+9iAnmtJyToL1S^QCA;?ya*r#$`$1yy$! zoy=U$@N6%;lB&pX$p(p*&$JQua>OrOt0kMjoPXX}wdWAHA`Hmx~?mopF9 zIxnT$?Bv1vc~qGnGl9{}o9H~Jb3s>d4kaDL)1KjS0p{71XHs-7SJxzl5MOH3%VC$vS?z;w>+j|9>bJh?vmD}xFRpOAkEh9KtGJRzl5`T<2BD1UX znZNdZ$t+CL++|+#G`N2yJxiIvVJV(WI-ug>1(0&_FMDrZK70A67KWs; zR|?##uza6s1#dI8)CCe8@)2iK6e`L93;)%g49BfQsKLl zTj+{=u9Cm6{=|FSMds)^_GtF`F@=`9ATuAPY?P^hj26fU>^a&Y_z4y8jiFz%m-Fin z7S#ULC^Y8?Wgejx&}nf;uh-8--CVMlJQJ4OfQ!f&IVJ}Gj;TJRi+L};JLiIH;#QMi zvxF+)iV=W71QLOQEeS&Gk#O)*(rV>1q}9rNX|=Mfv_c%j76IRx%T}1nP$j9D9>yMB zpnsYyPw+x=T9)PTW!W;;94*KpbbkSv(Y}$?aj1AUXB!ccp|;@Txnd<(iqCDbV|q;2 zUp;!3=FXeSolHbMkpDe*E-rKf&YOvjWy+nC%U(H7^S-+Ny<e#cPsDme^L2YbK#kN#AXcY~5jHx56S1MO8#8pOJK?*+qQY=V$F2cbuhorJ z(ON1v1d1R4V-#L?$Tk#1bETha^=2u{mXFbrL_akcAWl98gOl69ptcADa%^T2Jl$0_ z^)1@)8KEce6JwId>n9r1O4`%eLiw%^1qT2ouD&;qK0xOL8?R41IOWlIfKOSMZdBx) z$VDWx>zUQ-`PI!C205La7|K(}Q+-N9ADp-?5nRVB*o7`2Mysj}+MfDI+X{lrP;2l% z#?lF;L1~C7A4@kH;bapw{g)bYVgW_AUb+E}$JlxU}z=-RO4rc08iEk+D_t~)PcAB zZAXBQSOkG^>1d&{>&d3f3^y`KkW-}C(=?-ay%Dt3ce=)oSH_}e@Q^F}IQNMybIQxN z@BE4qe8ja?a>gR`^U51CF*{OTpV%D5$WMx;U>a-aP%)U$NAdZmMEfcJ2nvj0Ndg@K z@rMF9=0&N{A!P9I)Uh>@NhBEcI>tatu?KjFj$uS(N$F0|IfO!L*An6!BOifAJI-Rm zOh%LhOfD-fV8$ibaXv#XX31M%%0+Cs9AhqIO~afndoItQ2^L*RFkK<%NZMMNl*$`& zDWQ3DdFCXWyGgqx5z~~*wgS%eQ8cFx9wSm1>U&Q7kK)9PG0$MdG*9I*l)3qY21z;N zEPeA$$x(8Jv2>z6RPZ`@syPY=C_$YiRMZAg84NpsZnNX62J~Cr)ORd*)zmK*lHGFc zs$x9t^+z1s*#x3n9GD1GjMq8E_?%h1qt8C+jKdE+t*D%HBrcsRbJhdekBBzrt#cJk zu@>e;sPZFWM&}s5KQ+gznWrF7&0zNi$A(5e?Ikd$|1RUNCRo*_O9oGwreEQ%`p~o6oX)NMf=y+SnH%3QtcCB{354U3`7)t)6-n>O|PZC ziRG$qQqUxyaUF_DKy8GV-Rd;b_+cz**l+^}PgR|Df((6tSPEWJF$w^62RQ^2**ubI z1h-UXau1tl|(|&M<2ge7t!P+9YFUfV4Q5^#ii9IYxb@RWaR(bwE6$) z>+rR;vF#@j+@mChMI8@{hmiNsaglOQhl4S(84d#-B920|j-^7PI<0ObTV1cWHXb{z zLU$?Jr-9GN6Q7~a(KTrW*9ntFc%{TBLm)z4|_Vt%1u;13- zu>zHzlrbv`I>WVMQXfeoz~AH6K5AYUQEUHu{Bkx4og&`J3dSrZN2yju)Iq9PL73lX zRcya`^XdxM`^xblq6&qWk=s)aUMU#Gz2Xk)k-rp>EOSfl+mfT!!Mvj7;z3qtKz~vr ztb(MYBbE`WN#X#Y_IA|1{{Mm6*g-NYatmfwR!yhlmAJ||2OTu!x!z_ZDYRtZ!~J_TO|Lt zHsQbZ2Fd@8#=ZQ%i_a~k@N*N_-V(@y_LdH`GoIPi$hrA=truN@G=m>bvMA8h<8DZM zgNoDyZ4QqrS*DR4Und0s2|VjgXXuLxiliipYZaF6gW9KC3u28c6rND}QuVI=(>oCJ zAYg+bXvM|KQ(h3C9JUXh@4cb>(r@*%H$Ogan;(At2$<6VSQ@9cwGS4k9w|Fdfp+o7;YlPZ{#Xfz%D6YQx;Y(Z z!c$6>N4dPleN40yPL83uVL@^=iJK+jS1lC&(nlKry}C8Fl6*#@a6MyHKK_ztsDt z1qp=6MZVyuLCXS5K~iN(Ek$K7E6|5$Z2y^1!pKOOOt-5#T5Y)?XSnglLQx46oo&jiz3piqwxHz233o(&K9Z z_yB+oPM{NiO`s}-L5InS_8W+IB&*cvBp40@&Jw4y)d7~hLJ)fucz}gHFvhVO^go6$ zpt#%Bu0fn1kr|T8RyldC2;&j7g*|d?D%OjH% z#*p}8(r4FG)VhMv6mw_Al>2UEQb{89Oe#qqW~C~b4v9DgLmZR66H{&huOK0fn}U<- zlkfKNx8$EJ%dA_dGY*q!u`k;o<) zqp6MaGw6?EiOX{9+R9VFomPgcBF24vt>bg@uif6d5TLZvV9R z;`Q@3usk4m(!cCrRtMhEydKQVZPn-D$+QDdfjQ3WEw89L0GS!6^G4$F8#L2!9X_l7 z7gSZ>K|!7p@A|+Qw+{cIfj?@!Bs-aYNn4`A9!r1Zg*Y^6`ohZq{f$@c^cVwM@Ib_@ zCAjQczz`G!g#_JbjZ}!vGhmc?wt1=q zY%$GczcD2W5kr|?3XFv;BaJNGv2rqr>iLcN_&8Ump+ZYJgif@U0U15K3d(6bmIRD0 z1Fd?)O$irybgI~~SEDeIm(*!e_nEym!(L00OBy`T4#1Ud+L16$;t7k{4{h}d{&}O` zz51W_%eU(Am3sN=o%&(#&u!emzx=CeA04$1-lKvgG!j-tt#L1)c{mH z>vmyPj#rIP(Q1~-8SQ3L6=Q5N9Vk+drEy;;b2eF;(T|1lG~=y6xn#_3*)AU_wb3&n+FfmB^?Yq)y9xGrq0CJ); zqY`l(LFb7DVv0Cgb(jcEKQ7ae7Vd1Wq|K^_ruN%3fLDbFo$*$E(9nChUJtHFc;Jj~ zt7mUvF01{$ga3K=2L5^W@=sr>0*$s!hv&{!Jc9x;eLU0D9q|@U7y(Ef3eIsihvG#9 zG(|E6F;=1Rr6llWbLp58zQa$Po1&cQ*=S!%*#mF(VjeHQxa3Zj#L0+X8RbO95t7up zOJXgW(Pl;*D(6iHC~FU^wC%&BR1Y7T41Y2xCjX>@cZI@RS;BCM1h$+8r>DHDJr0p@ zI^v&Bn#+oXj#@Lg0@{$$OrnbRAQxw#X~yV$Rjxc#{})zNgwO%~{NwjHfW?PJxq!sF zfEM8Y3?~sbLieAk89wTwQ7?W!zY=;j+d5Ti1t6d2#KNk%`XPfH2ABQeZ0Nb$j$)Kt zbd{R#Lp{-zo}$X@xI!qi&Q<}mJ85#kPdOj4p1!e3dFzA4&l49QHEmi``@FH1JlyHJ zP7_E8lTJBT3Zy~MG)1A1z#~^2}VnV(W&PxgKI<|k|W*R_$aYvw6s*>}< z2?j@^9J60l-4XrXM3Zwaw)fr9)7>{z6v#f}qsZ1Zqnj9BY-_GO%^+NwJo$n(LAX_$ zy(7(gF(qx6u{L?xEZLm?AZ=}z{+isEnRrwVekJ3b@*#CV|U^Csg)m_uV2cL5YIDO0C%lx9)?ha^-ui@zZIAKF1Izc)VB# zYbK{)cPK_cT&ECauHA7SbpFUawR3sQFlb-l#5|Ckt9m4@Y<8ofc-Ejo+J@tplz8<- zRn@l+RT5-Ds_Z{xavXqYy%*jel z8Fpx{P;-KEopBzuEY@mz(eI+4Sp&AUr0M}GtV+)2I+gTd(B@v8g^ zw@WBS&w}p9_^XQ6Xbz&`n42IQ7$Kj<2(s+Y#xgX-YUcht4;E7Sy)F0w^foO~G_m(3 z{Q7&s_rt2ODR}m!S0&uhddU_Z5i@H^c;&Lpxj(L%@V`HWgZEns2 zI(U^4dv@aO`t)UPXXB|gUPq;N7b?~rw15}o#N8O`1=Dra>6%oZWLB}|R0*1q~@%h8_|9oW+W{hBd`?vb1b)IUVm zRH$oeyyaFH8BUO`dRk$k*;Al7ndd{)_sHRrkaiNddEp`jXYU_Pt&%>%-6*cXO5Z{w z6;8jeR9UB`^ZbI5uddU9Zz|+9Hu9Di+U<~afwtHMO;|kN>QDXpWQ&sa6020g@XK~k zK(J6~i=AlB;IIRxaS3?)GA866nGYzI#Z@Mx0$1{zKV(=Sz$clY{%JrJ5=eQV_8p~8H%(?D%Pe9eD)gu6 zopH6`2?6w4qmvJBF*SkKO!yHeT*RsyFJsm0nNIYX04UoJor>C0O3m>)N!lT`%WnQYRD`^9X8pGV)e0xbe^#Fc35Cihu-03=!x|1S;G6XB2Mkjb*^bBwt}IR_ z=E?*G51wdD!x68qfhZ7;*lgKLTas~;*4?Ler6w_tgXp|(B;V(hd+C-#|8?iU0P!0{ ztn(U*S{s;NApDWSU8RndqQ-++oGMG5x0(kLiO;|6B12RXGw4O+oC&4c6L-s4BAB7) zDG+Uk*n#Dvt*j4u>=V!mQG^&i5VI2=dC(%Dg+;J>O!9)1gx%fUr^!K~irGP3aAgw$ zJKfSata`jnx~ExJNhIpKwY2(ixq|T+HNwGkDKS4X0CEhoFxKbMc8jU)UEE+Fm0wq+ ziO`=$6H2%UfN@JC21z-t3^2M|f7BP^rTw_b+qb^Me;Yf*ea4L|5g6Xy=GI27zPVoCfbaFj=0@$m)W#RUCH46a_y5E3 zhyOak?6Nu>e3>@p`+siKY8#vA|GBN(xf zG8e?w@#arsy#+HEX{6ehW4=&!Be%}f2O+)w=`|m*jHAKTFq(|d`dtiMYg7_gj9wl8 zovq3WS6jMqbr6lO*fa$T@t+X4x6^1a9tNWk?@69NJ7~Xr+ot+_!b|sh*cJ@E?GO5a zqjkr8Q>RdVcq^X@-t^-Ot^~FajX~>p3WO$iMEeu3AWt$M%I}xq6m(qJA>gedi9%!C zIYG%$7XfHU6ZMgFLAjG#{`hp4uc~5%_>UA4*~9zUU$AX9I(JZ0sjY2rCxR8Ws0@vX|+i4ud8{OoYy-ei}|(tW+qnkG|xK@sg2rs*Gf# ztQ{Tr7Ln<+^;GHa74^}-YwAXuDXa*+9}wY{hdJ!%P{}&Roh|x~g`+8N7SNXJ`E};NY{Od7wb+!c|8A$yEGKrYw3wlG{)CJ4z~oOs*R!J zp^Gg@9#G)>HH_zG2*APCbg(|#Mp?2JDF2xk94EXS<0a-`I;Cw(2ixetiw>Jk3ZZ(_ z9&|}#eFCi3}Dxad6>HFpy#+JOYsr; z3emt>F9v$0hX=YXIYO3U2XDBz2MRXX?ods2!j1PIyd1orRQn3-`$sqk(?QART{ck$ zN0tUtlX#hgqaz#NXcF>KMJVy#Jt|&t+_e!!4JF&ejmeZOI`pTb z&EXvi;TE1?d=HpF4^Zq5V6>4lI&^QrbS|&r;?5kAbI+{gvC@@+wl(NiNGW>P`q^EdjNshDg()PGWqSJw5qTlk{ zh+w6YsfP-1F&fPf9F8r6(md zz<`wKK?nnrZuQb{^D-OBRHi>IOLbWmD^{8&20ur1rX;3$(DDxXj8W_0&GRE(7xk@o z^o_!~WBVLUv@o2?)e^KMoA+_W2*ewSdysPm%Rf$Z#Fb=F!j&%{5AnKf{x%~ZuG}#6 zVRpUWZ_Gnq#RR3eGw#b2k{Pi`JuJt#f^$AwkFy8lU2b$l9g&NHvyN!nb3$_YaiU&N zqE47n7j>L4N@)tBP+GIvqJ3bx3F|aQ3z9a+13lkMW00fddxH*`sAfTPsGjc@d1X|x zH`y)G?-FeE`;%C_3;0x!js7gbK(q=33KgvKW3(7(fUf^}5VOm`4xZPe^CT>tGws^` zta~mNsk~l}%FGef>Gu3Jx7u$z2hby;k$(gg(V*13elAYaRA- z&P0P%rvE{k6-q&=S}pyv^r^ImU;ZC_so|IH(kGY_r8W57f&Z%TU#nC}1*&rGy8GdkPRIJ>nBDrk|GR@Xsaqrwsp9;J@$Szg3~YBcj5m z(k}e>J(u5suV2A`58=ND@ZW#Ke_spHzFC@J&p`H{VtzEEU4riR`p5m}&kmdzQb_{d zrXiIU0BflwgQ{5>X^?ueaje|A;!Cg(CfTKMd>17!$!6GFxEt~=J|#uMM*4D_DEY<` z)&<7s6R@E5nzVeGXqoC>a+3=0T9#dyFi4Do`|S1!Y<90qT+96CMTd6>pj-6Oci_ry z3;=gn6|}aGyc5GS@k>i=i=m)@6fJI&1eASaczLIr=B6&kDQfYnHPUdgUct{vXrw^?F$jhB0HCq_Mm7< zqIRU?W~GY9gZ?xr%dG@A(woY~s&rn`4w(aI0~gcIZK$s$;SP)p?20VxI)Z`RfO}{> zALB=cj4+-A8#cqUF&>b`a+eH+h~C0ge|<5cIV3Gh^qV|^LSr49VsW-iNe+L!u&m3z znsqa5)ml|cTcfokOEzG5#2lND0k31@Q6!JXu6e+P3i6w|Lvn(NO3?_KHy-}EiZR^^ z>Hg-mlSQ^1+pSm45QCMS=)}$$-w=xSe$+|K%z5YOI%J_E13?LM1yj)y)hH3WdsYIT z5j^>D4Q`9bVey3TJV+Gi0=GqDw7!16-zS+YQbU8{rLw9BC9122x98Pfl=><*hlf>Be zKW6<&Xua}b8E}WljL-3vPg;g!?z{kezG7*4!yO-q!z9P&MqspGzI*oWuheb&`mFs{ z?(fdI3atYuX^xnU$UCc-ID_Wb@6{`(VKp9LXn)wOJv&^5|K7BZeGOEJgRnWe25W-HS13zFIcZP6Y~pk}^AU4n%IF z(ee`9ey%qbW)pjBNRYBsqWdw6(I9V*46Z&eneLpIJR+KXuik>(HvMSnEHBz$RSG@< z(cR}(Nr*Fe;U*8MXOeSfNr!>gtARz@YFUF{bLh3WF~(Y`J{nZ~EpcjEbB@cb1)-q* zkPSPK4CmkP4fUSiL;y64Xj0$bH-AN5*u7ZD}o=-QuU(QGi0>as*(b zJuX~(fw5U}nzQt}hFiy0X^prk)1~24RYE>3`5_o#NXWa%IZva|KZtx4CMR1H?2Sft z#Nyy*xNSd|1a1r;o;komBQ`fMElu3RYmo3-i>i^(LR#)VxmOOT01C+YZJ*nb z45g636qju_))u&bm&qOnifqfh<4{rmo<{gfMUH>oUvx}iRnoOeYg8pPhN@CrqWw2l zPraT-JOfKnT&k+Q!NA=Yfikl5h4c|ENlOcW>YG{3ezJp2DHe;Ke7gXn~~A%1pl2IYe?iw5+9`Ij`FW#Mb z_L9=KrB!szg@2ynKSliK8@7*fKm;ov?ZT6L!$#vk{Dy1M_-qo0-6&}SVo=3ztJUgG z(PupGXwO_)}051B`1L?mY50Vd2%|qCI?{B*fTpY_oWDE`6-WlZf-;r2&usk zkH&=)K`G+_>ftoTAo71#g9K8swf_++pbM2`GL)SAQ!uDwXteZq@xYY^OWJ>L`SEis z5vDJC_5pfUs=2-8S)BEY&%7kT6$FQvY68~&1?Ns z|MSOEyX9IA>q|V1n)SK*sC}+{2)gN%AC|nRzW->wvAzWgi7pF#LXm|37U^H~lmaQz zwU;Tr>Z>Qvq`gVu@E5!*e}o3V>hlT^_ZYkD9Ahh#fJkC@z7)R-hU1-LL5_eCnN*3v z)G6>ZqrjQTu2D#iCfA(^$MFSmmWy{)GrFGlWrZJdZk1yOO(Gpf@y%5b|>8%d`j^ILLKZBgaoSetkv~l-*{D|$y5#o z!zi9sl-2lvQ}F)51QScl2I4gHP$ek6sw_RtckYP!N$B#f+d)?|)$K{aSA(7!M5l7{ zJv3Yf0^}5qT5+XTv>x{7N0cg1IzxX zJDBytp1oTu=QVtg|B&IYr5eywTS>crq}t$P)JKUURNWBEXv!RHp{uf&8Ye%FKOK1? z2y^O19%pL|(nw9xqezz$wO?5rsfF( zGO2CM1x^#{QWqqOP>jc(jpI!7KA^;HIxwfXkE)&@8Aohml_hr+nr&o^7yD+iEz^*| zcW!VizVglB&jJ$4DcdhQy+{+!k602?l~vR(;{aViqQ5D6OK@mfD6^{3L|7gSydEp& zV_vfA#7LA~ZOSAzKE5Ka6ya_(RX*aYfPoVLA!DRr3a@W(Z$GMS6Yn%A74=rG zRFokt8U3N8{p-`Z6!bM=bmQBhY&v;}+1Y%jdyX1He1gt&8Q5-l*w!)Ob*q_=Eo_=i zn37U<>URbQO7R9w-)5`6odnlPMQqe=ByyqE=RmH3QG}2+6TBrKoJi$Iw_zu{O@EF z=0Y*T!fFbBul&#veO5JXTuRfevJt$Lze@kA?64Bx#KaCb_&&nX8HQrxS(U*I*}E(= zbhKZsZL~I;&d|L@i!7ee024s$zxa`7aUcR!kJ`0Y+Y4*O(bQaVISZg<0wavt~ z^`{rlADR8Q>rf=ViPkI#^TjYHcQ-^j2OL9sgls(RcR|Sqo!u04sHYhhFMPT#Lcx+5-yxfv_Rm9;bjuw}%n2(*bNxAvv3-Nm=3b z;oYmlS8M{n2!bj;i)I515zb*WY>E-x9g*a6evTkcW&_Z;2FOcmYdorM7$jK4VHb%5 z7rPg+(4jKhuHbM!8iHV&y9)F(3|&lek?Uv}6dLc>j#ha8x$TdR|7i+7w;u*{e*Dko zRue6eTlI}*qp{hb_@B+q_51wqck*%Le|kJXVL-Qx3LAH&8)$@ty~-aX3~0rP$Z1TN z<_X#M?E7gi8NSmwW(S3KLgB>voG1mp!Z&*roPRscM{lpp^4&hq+Kv?!ROMgLO0Ls%V_ZwTx;p!(gRLtOabQ1-_W=R(KqU29L(+_s&v zMZvsHc~$tcs5+G`nl9^Viz`A|UF}8x5^ebLAh((`TwM5lamP8W#gB35O*~h8L3PN( zfJ5g{b%?+^NC0YQ81HbA3=}{y+Ho$R+OL4Od67}?L#4PQ{d^OiLaT~yPcH1I6i)Ti z!G1zTEc%mh9wLZGf%3x6>A%BL@WWxL7q1WK{=vd=m4aq$56=379^Xz}FcGDwnPl9P z{MnxDOqv`{Zzi7K@;v%l~;E*&UYR(q^?oO~-r| zSMK-Rn&`K)d`&2ws2pFba%^k6r_GCNbLm9wJ|7n^SsO~*`r2`Px%yH%Rej0kb!n%* z_EnDuONbC#e96fcJ5w!-$$g%tPc~!2Y^(4@iTwWX}BtZ`gM`?0010<^Mdt8>^nA$2%j zO0MeCOEr*3cS+%dR6lpAe(qA8uQ)9)@wvQ%*F1sGUAOo1kl&YVg37-yR&J5wb9Rh| zuZ82CrSlpy`WbVS5PcB`dZnGMWYh|V1M5{sF1dDFKI*z7_rL8?w=j(ACRGIo_x=?2jCJVu%jB>~6a>stTejMRNmAX?-KPqN&>?pjz=#fY$_=CO9WD`8S z5(`HaLn(Be0HTI1Gh|vBfId*uU~(ExE6kybi%aBFE?u-4Jrd)@g{`yn-&F3r9HAey z(RW6!zBBUlop+t3)E#XIs&aWf1n)Yb#IcCy&p4;PuHnw@MN|7-C!UQ%&`_gjx*V3a zyv21)W4KT>I#8s>^-%3bL+uQ>6sl5Q=HL8q)nN_61aR^P+6ZM zpa(5gvYVoo0917RcWB3*uMVcBQG$ekm@aQaKCFCp*vjp;z@P zQpR_$XK%#Ef}&L=5I$caiO4~H?Wx9rZ+)9^Blc1~7c|#Gawi>CPD}&4U2zQ62?-_& z$l@cxLzK#~;g_MA2Z|rqvKfP$G4=9_n$Ze+4#uNs$JFD=#JBci^jdr!PR;{#D~hY+ zI*j?ieZrBmRb27L#l+^Z5lHjKCmdyr55|S*WJQFL(sq#gC(4Wb;s)SfVOUI4$<89b z%v(bRd2fE(`c}p=1WRrxk;^26jO7z?K=5K+xMvzkW|59sW?9KU>w&L3IjCeR%BGK= z9<-9ygKS^_Mr(xP`Ips{&s)xjm6;N)r!E=zkEA`=ak-WR(lt5Jw&w7nWk%71=JDVl z!Gn0&auRBPORY$i!a=E}@7QThwSkLtF@d&NkWk&EAkk2Sp84WLn&C0D>v!JVr<UpIn}(H^YSPMk<&b_otI!a`nA4PAHrSfPUH04uj71(>csS zr8}m!(R`G5-*^syUO&!&;h`__XF`|1^1z)-S>ewW>H9p5OADZT!qdu;8?DPy zJ!@IcPSY_*F!J^~u{e+WlDUrCldYQ+wNfuNNnum1=Vy+5LOVegt9zz|IovHGDDS;T zWkDO@IkSPgc5RX~tR%(t)`uj4xHQwgT1H67p5EwCp+#FADrJP;LfxET&T*nJ(AZFn zt4U&e!1o39UCfrr-^n=7nc{OtB6EhD$vv;?oVjgd-*D-LTTfz~EC&$Y_s6s2=_C{r zPjbgk!DYh9P~uRUs7AUHHJ!h)Mw1b*$+=dgGApL?C~udpxj(^DUfm3XR37)}WYU=C{$`W%(fRaR1#Evtob=$oj!O4-*|G4&H_N;uP^xNp?+6xx*I zh$Tsc`4}^`Ux3SatcvEVR3eH1rF?@TxdjlPzd2Tu3<5ek-ubjN;u^{MZ{5EZb|67q z3vsS0_@4C&&nbuGFK2%e6R4KN9mnFjVud`L6wel`_GWWeQGIar?Udd2 zKWYZqp3j{`38`b&|38q>@s+4-1&S4#GZD)k6)JhmruC}N7$mJC%^4s-Ffm5j!2bst z9o;1!qO!9{>o;zA7SjAO1DqH&u$yk2ui|4KxYc9hV? zo0uh4AK`m$FOh>Ty>i-Z5RZ$u3mRqZfw)}SG1lD(WjniiQ+Q?WHYgi_8Nlq<&faJ0 z?0)!T*DSpgGRxBZeb6Xl7vvc8ls*p9`(%vCghQi;jZC;eC}Nq|vEG-Q&1X(;h|7TE zUGq_{_FkH2p{h6=Zq0HD`#{!+Q7hUupr+|n$39JSi+>-`f={T zBZx9NlB20+PahZTLo%x79zODkVAOTZms$iEyakj|Q!=-x00Rbo)aPWAIvwJib9^Ml z1LYL1I6GFmi%Oo?;tpimTX4V$-SJLe=b%niNZIl>Z)t`r>k9p%ZCm#C)Y69?RUVthwY_mVdilfn14ROZD+C-`1}6iw7@jLe%Ir^E#BdyH{P>YJ?!H%`fq zR12zAikaQhs!?}WJu|_AD1A+e_W{k;GlIUw{nJr^X``@Ve=5!o z(pTG7^)2X1tGSWtO;2CGl>Hn=H4xJvX@wkcB93$@=lP-fpd|@2=-w`WsU1eVn9#@J z2`1LlaiJ*)1mB+jG3m%4aR)fK7niX~jwlAzGGY9H0QL2`Vf>y+@GGVXuQynL!Zl+= zAPRFdgas}n5GO%A#gJ?|tiQaQaJr#5R%f%(=>+59t6?|(!!ihx9 z&*{{CguwdODJASJ6ysJEHkOuP6fyru;1C038P7 zB4-fNpiIO+u7TY*m1wtNI%bwiuZJ2=qNi2;T>teG>qzt@)GRSvphOiTz?w#CO}+M& zQ2XL965uWHgGyo0LCQ}Pj1tk_D3%+vlEkXSbSYu%!!BS4Jl?@aeF{=aJa3BPfKWki zXO2&$2qp1xxs|RVSb(bjS6uEl;_=?}+z z6;}vqOF^~_q`mOnF&J;XJvouZW>{h#pSgAukWrt_YzcTb&=(dcEq)c#O+UkS)5x$Pc$;^G1-l>$0L>?E3bK`T7`TYV9H49lkN z%FYg-IhF!jvN~R)O&n+7QA!X9Q+!1I=tDhteqQoN$XJtS4QgIY^VLv@f(74G9{WmyV76s%K#PYLN3 z|8<`CaZ3S&)&3m6z+V)mTt3|!ZU@#1gIl7Zp@GP{;xM@E4`)Mc=sQ)n_cwk)b;YI> zYC~V}E@cPw%zw;6llY#mkCiKe%D*fEyXyT1jrEXjCf4}pFS;@wjti2fQlIjBI^D8^ z!{Ao@0oZjYA7Y$9Q=&i8HH1>?6uuK0r`2KKIPCnQ&;3uU2J zxBJqR)(lz~4uu+~9k(`=(X*3_;FFr}D^T||La$FEmzj{~miQ(=;Amb!n@5m0<1#r^ zDCN@3n&1T#P@thQOIp5rNXrbL-HXuwGxaQQJ>%KKy-%!a=XG`7aHeQorkb6k3h&9H ziE0qh-ZnBR^Xl_9Fd!|EPfADVAF5a->h10;UP}ey<`ALBHBhh(^?stnA#>aY1 zanRQshp$m1o0`{59RGbZ#&yJ?Qk}Z5M>E)e!)pv`panboCfrui%p+P)OM# z4v+Ry)@mmLG4>ebgM>8n?-5HFP<^H9G@K$Q=*P+Uper1FP~YMu@ncw&*VA%EoNGy{ z*UejR!E{PA=9TbQ4g?4PG)MrtY{Cnq&l|w}b?+fE#IC~-oD66Rd?yec*4UL>xcK-N z{6~0)Ls7o}pmTg?O`bT4^j%9F5;3qTzHqfv3F4rP(Fwp!hxDLiR7 zFUtss0dN`MO>}0Er0W+EFCmiAi2WEi{{uBsHFR!CQcoTgUR3-N)U^G%Bdr~nMDLX0 zvBmesZGsh+z+${&K$xw921W8UfOxy8GdDs}Y?U|W7Yg@b!#w0n2LgfAt5pC1FD@|C zlg)25L_+jr22pA1V!|z)FK30T=OyP_mU5U$Vxzh1C>2UFF!FDS!Xq2P5oa<;@$D{i zt;9-ZNK5=($)PO}S5jw%!|C`+Z!~-waW;u)EaYL=9ZYk9Tr~-Y0SrC9=Ql20D7`RG zCC0UXViBXMW3%15^hq!agK&CeND!LK6Ds4q;a}h521ZZwrY{zJ?#z%84o2`GLtfC| zqIox&X- zSEg~5>&me#^=7WbDrJbQEWzZ3diO*|$x|;%f-;NyQkJ+cV+zONcp%9SA6l*~;WsB! zy)KT84<$V)`jp0KzHf1Le{<&c8|0{lJ$GgsJY8v&ap5aHGv`c8sggG}OUVUVDbw5B zq0U&eN~uLFf9&)0TeIYroF&(ZhvR(aaIn{i<|IsIDKAJn#{HjRsbp;Yg*=s`YpL5+ zwo2Dkw*0aDBE#snk~y9}=9#16O-M5=sqt`z!|V*q^e=m(Rw3gO8QP|kE4H+lVJj&2 zo+eW-VR1w8oUnV`rR%>rq)46{*E5{wYxi!X3qJn&-z__S%4dQ9=lXiRo;?3+uHXBA z-pMC@{@4GN4*>rp#=*FMsx76wTky`y^aV_DAqe%s)5Td7%K;Z%6~P1dkOSAsb{TZK zU30O83~6NL=4_8tj=g#C#!i5t1;|8!R=YsbNQw@E<@FJGVuL%^%{_Zv>4om|^E8|NhCyH1>E9LbAKGk$v8Xh8vYSWE(7$P-HTJ2lii0|<1; zW9k^vCC_(U3MNMTjWYzs;;+5Iq!wU})&*c&N{3r@T4IgSVFUBU9~I{~$r*+h(Rt{O zK5<=-=+cuc<7h!>APG+E4xRT-&`AoX&?>%0XEtKh;1rO|AV@-0bLo+N2A)kIx=aeY zV+t<0=a)>dKJ_dX?y1l`rnZeAQH|J6`}s{7*FI)eOD`jUq`WJr((G$bo?ONqMVt>9 z@yH;tzx(nioaqcOpTYu72po=j^Tkw|9A26^nc3(ya!lM-lE@XZ8ZLfx4-y2-TZVt zq_a~1qeHlTa}vPvWYzh%ANylju59=#Ua4%fO%UnEnemeZ11%&&2^PFqdC4jgU_gG2 zqERScZJ_LA74mo=r+e5PLq(=&dRsvggdIZT;L z>QpHk%?!O3Y6b=lVG;Bkf08z84ThhI)nJF7r$Go$I59>G4}5zXY7G3qJNEH-l` ztI!DZPs}TzCtI3YS*UTY2rD!EL80l`vfn*y?ReUa8g}m?yI;GkXvCAtTqeU_X3<4F zWeWLHC zt1uWMSVQxSCirSAImLFT$SHKoteyoXwR}i&uTIc|!S|TU@=bq~*)vlY*$xA>wicE& zO3K`I-xSBKevWX?VUGlx*ip^rk-4pRBC>AW2#0)zO=ynvm?(m#jt<`~(PpAyFdp+< z6BJf0@ha+vAU>NO4;*h|6KCHcvU$nLUhK3?7fD9OPIH7VDT>o|@e>r>;LiDNcu|4# ziv5y7L?Yi?OHJ51BnWJy)e3`;AsLy-BCb0m7<}h!bi@c_2o`kh8kztGPUolMp9 zNheSL&3V3b*?%Vn%Xy=pXwu7#A=}*q>zK16T_epbyUJ@lk70I`Pf|6K{Ijbv2$(s% zyDCY}c|5b5e44D3V9(vcN}0WE6EB?D**a;8W?DJSs?%$UolR17SXikzte3?_fn$dL zB0N-<7l8y}egC0yV@6^a!ba2??Kn3GN2jo>QC?%@h{2IseHtezH{_xj0cAO{M97&h zbuGN0lmJQU8x$)zLmKD+t>opG#MJMTK{YvNZUfgOOb=NP55#tkn8{+0R%$+Z9FpRj zmRWH!IVz8zTB+&fRr|L;9=4I>1S_OD&n@hW7b%>>m#thO!}StmcbZAO;UTQt@=Y3R zG&{o61q4nPM?^Q&=NT|VMMd02xl&PlzEP$#j#41&qeSHHo`v0yv0SM+3#|t{B?Z&Y z@^r@W?yzbOwMyvtMy}QmF-l`R>ta}EI_50Vg^?0IJ_-7R*~C4@*SBl>afgpKy93cT zoD&_52P;Zl=<5_f>%&lv%2L%QJ1klO42x6pEho1;kx8FmqPAL4K)ZaE^8@a$=qlFo z$a$9mq?61bm5-TAIDINfkNT%0jMd4i9Fvw^~pwoKa1i&%DQ!b(jjJKF~!^seI&3M}H($I~f(HcJ;>BroL ziJXEKXL4;t;;_5w43E5ygYL)a1pXl(@llVD^I+M+TU;3VRmFqoLW9xJx&xd-?g42R zZ&gjgkz5x;hikepHjNMlvtv(JAEv6Cn_#KhJmzJFgRTm|P#TWNyYL?~*z1H9{aCwk z!0I#%gAv_QN4O&j?JU5a0kU-1x9Xe#()`rDb@_DY@u~O`;~YR|Udjf`-hw>A88JLC zpAd3W*P$5C7M)p?QJL-oV45$C9yH=RM)r7>uT?>>ae55R^pJcOWqk4EDK73i8jDeg zlN@jB0U5(lj3ITIg#rp10QihdaQ++N+jiw*M(j7NCjwm}rPtzr&Xl7klI@8nxyeWb zAklvvpkbksc7shIB1I4r&NpEiD%lG)y7$zY+kH+RNq1MYPy{J-MjJE2!$33Lblgp| zdkV5)NcRhM1LzWS9#O_$I&22Uj^q&Ap@g}DxMEs}XUFiAcY6R+ekKO(p+hg@?t1N- z);*TXX4MQvv`sP|?QZ=H!8r--05EOPJz7(TpC<+rivUeMk6t^t$>Q)hH7fPgu%wzu zw4fU>pqwiMOF+uUZO1_5OQqd2_{Rg7Sme04h>#UM4?dBxA6I$1+^x7NX5@8x*`w+v z#h%Lk;6)l<&ZykOiq3iAcL6HmjjRSGjW-{)^E;<9))d*6(;U3^M1ke|cQpTo|s1kK`SrU712 z;0g)qx3qtl>#O%wq7a6s;o9k*J90uPH*|>Bi&soyKt^)zj7dxvqEt4~u{6Q`WN(eS z7hs0rFx3z5@*A;{Fq#XSCf-V+U=%ajBROucKaOz6+&}4uJ#R+=>dWXV@uW>km`?mg z>Kx|}H;1pdh`HLDRD99D#4JHCULPFpz1t(1-@mLFNbsZNUREuez>bu^QCCZ4Tr)Bd zTHqyxJQgplIFiZLza-2Y?oo`nlitc+MUwTyxrtkLIKuQ6iBWOYT*HPt4#rVRgli?7NlQ z*eG<`aa3||%j65$mNVboneA&1?lZ=?Ti+=eIIN#iHon()Cv#rbWRa zs>fotYuFG6mh=8(im^N2qrsd#SUN};&?h_Orc$upEZ25sp|a=$szYdrcgn6RzZB<@ zgpI$Fs^a@%?5eeTst9N1(jY09O%5=}V@Nt!5Mf1*m;Ha5kVLlR1M3b%6wp{dphv3Z zoFQ_g(hLV4z%J>{Q}K$*QJKF23$-+3J6XP0gqz0X^g73 z0li_}_Zh@<^wHfXAR2G%q4pXo%NxJTYpU+Eo%Ia5A;j;J5ECwJ?l_?~?9OQ}VJIVq z3x$<`J+VRx*^}3~v=HLw?hL<#M^AsTATK@1F`6ef^k#IF-5bZ?&rmGgkRAx6?n;t-=7L=wC(!n{DM&VvGQi7(4KY5Kq#Vxe1VJ$`h$YtDRTx=44 z7-hBFA z>ZmbJf>+)2nuCbp5|0_72z<|`nD#z#X|k}kR&s9Wnd(-*mWQgYxST_%E`1ZfR=@5d zzcpR@CN8Myy5fp@+fJyup(UMB3azi@PO59=x|JF%7P*(25m?^M)bQ2v?xv|K%MSH5 z-A_~1Zs3NhVcgUmHC6xm&Y>E_XS%1Rz}y^@+jSXD57Tn4qwZw6h6|~#wuCFGDVlH! zb#ug<&#&bhnn3beKBBtr^*laxts8lMdX;bH0jfdV+{4w#|Lb{qrmEfC+tVHWo49;t zqVoB!pY!-Kd3ose%s8awN3J4YE`DEJRW#K1$IIj(`H<(htS%su@P&<2Jp z$4Hbiv*@!DM5bt@M8fD`F?R6xiWqh6`!Z>3yJQEesE*P6tj;P`O1e&o%$dP>Jm_}` zC(u*P5kWE8il|(R0CTbBL0ho6qfWh$wLAIJYKzG?j=qL4%a!bxtdONk7)=UaB~2YJ z0!D?JM-WqLd3w;(UCkaT;|gCxv{woF6EaJu5lr%O>fX-WvBcICuCmrm9@fsY0(5+{hC6`;-tt{Y=yOJMgGM@YDd$(bc7yyf zyr2wJ_!kB13anxLtE{q(VoBqdEa$sSM`@m)+ci$GAzN8tWsX%f+m1G}rZT772?b57 zXXLh>5bN_aP%7&!s;qfN7zw585zv~*v>nzwF^EgHM${ohP5L*vH$%ymDgEzhq#s~A zTH2?v$WUP&tBxRH@crNRsN3ns(c{M(+x5aqrgcbkQOk$k0a{iHQbRil?p>;uXpD1f zegTEg)8?#vBXvwWORImAKxHwhZLa0CUU!qTxr~!HePPf)Y7_5l5$#U=F~1z{a-|IZ z$u6J;KHEd=Sv!|b9AlX+W~P-i|0GNKM_DWB7Q7R!1>hH-X{pRZt&C<9=3>W=YZ))o zyjt+U15PNGxoQVs)Eg#QYp;4_e> zeZYu;W(W(xN@8p09G&>m`N4A9ev-TLRQ}td&3pLsA)7vTLybAxkOV36w<5Pi43fur z+yd{)87x!Dqmt3zEotacUax*b11wt-i}?Ew8tpPBMjgT8hIfy+3$gf4dELseV&t1e z=G#T)n?IJYe=KbPNf;`MMIXC_k*&5`^WkUg-ImqoS5_R!NFJ}FHD`O|5qc#owq2UZx$_f9G0lK*jm+6HYSfdX0Fs7j(q> z&0Mn)Q*(X;sl)cpbxD?luw;9w?b~&mTZZ4}Z~d;@A_BQadzqWYo3zP*=C^F^=VU&= zev2Bw;$~6?^lP-hb?3K{Ws+X92~%}`3kytvOE#7TWdZfFY=YO6vKcTIlQV5fqhs%~YmU2Kn{zF#E2 zr2#FFrs-pYYf8~1fNQiTW~k3-kRU8-G4tf&x{YQ4$!u3&zwi%&Z##^FXSLL}jQPjV z{y}uh38lI4KpF!VP$&wWhbH52S|U*I;?<%#rRY+i8U+8ma`$tII|UuIny6jJV4S$a zU<_5GY#7WV+76o2kQvj|{>Uo^ilo_imEV6r6J(csAu3sz>4Mtk+m(C$uEp0k$4(}} zm0yD&K0aX7C0+D<}BHG8b|Yx9ML3{ z24#sb%@h;3c>`&GBuY7C$f3b_(m%)H2`7_iq6PelzRc!F3URKoq0yq)mS6u{RDXj< ze^bR$v9OX1SxiOW;!iTTn-an<4C*fvykt5t=2yJ6i%b&6F&~IoS6tJYwwF4s>M_Uz zX^6RELnKq-m#?fR^-3~ka{6kRu5N-S=N8eIa=mwnp-i~lXuhuSbplFrJ{nxPoG)=B zFhqYMwv8MU7UQB${1H=aWouW}D-*V6m56ArUjuzR#0hxGg$y>mWa3AZyJD4-pinx& zAZL61)8 zMj00WYFG7^xy9kBTo07p*wY-H9m~ymO3P~V0|BnZ9lDjeLw%6j*hM)d zG6>;Zp~2MRj_u11hdsbVGoxOB$Gsgs9ps=C-+t@eZ1+isKzzJR`brBM@{A?Lb+h4CIE4qr=Iv1 z0X5GpFQ~PB^w|in-NWvT`~d`9Yy~vAxbY5>Fqj4tSea=Vb>mo;pTl;j%A$ioSGd}^ zpVY-gBNioG1HphR9b|_*NSR=a9b-jnZ5W&e_NOj>Iu9>}z8J9-U!+eiqYg^?k)F)#5~DPSEOeQPE>j!mI)os$>HXq>*6*9 zg8L8!e~T^&C5E2sYrbNFE~GsoH6`-`FJyY3E6<#3d*uR)6AHNEjh;~mhZVs+!HpD_ zBS)Zc^z$rM%;dw-TqQ4ANm$T*WOTr6xp7aN(im8Ecsa{2=X( z^3`}pSS7WfB{vB3BssiJ5P-eD7HLlj7r>&9nI^H~tN^D?Hvmem@UH7JnY5Dw;rjqG zbwHblKx4}{t)~wRR}5Y!@pPGr#vOUFyDF{N{O!&BZxdOi_!2(`JMD|Jbx=VN!jALGs!`-jpSy%C<3gCZlB5=rY}djS zdu*DJ&4YC_$6NXtLn>vE3%l8d=}8_*~UE?tu<1~Il13*4;7o*Lmd zLl%=2yV=v~WO=lDUU6WI!i(hHNxK`?wyhn|H>7U$9B^Blhgtzkn1dVadbkm)?<_I!5^^)$S2f+yEo!}=Gd8)1C#8PIE zNF!(GL7wJjM9dHbLy!DBPHl!?wjLyohe{{u(4sv@D)TWA-}5vcLZfv1*#c@lmExHg z+Ed~v3mLkr3VS*i7jbE#6X!_?!^-hZ^&vavoWbAX9f<3Qz56PR=hF5!|E9WtK2;zL!E`n&t@)iPWKd}J76YQ=wH`~Yp=4cXLk%U8& zwXZZ5A;ikS9toof9Q{a8v-H z@n6EhVC^WH48z_C@8BJnSllhx!1n(ED%9R|O8FtFiiuK;$NZfcm7t1&ci?)q9PANj9a;0v}wD7tcuHut$PFO|0jH z6fw35@6C=|7DbEF!lj(50I%8K$Q2ryOB96OQQbu&dMLp>O2K)lrJsqq zbbZqoS2@=KH9CD{Xgj#PLYZF3zPvBe|6I2NIx}{y^|JPo|w1K|l!NJ8>@Z zB-%okp^9Wq6QU#W^dR?RRXoAzQPd-VZnsrKK6is|IK#^-qsoUJZHoaRe@I)Qe%Q0V zs*1(`VMo{Rq+byZYR1gI!jmb7x$-tF=}(FZi|+-64@F_fnG)ABJkvi%M;mC?aq03s zy0RU*GRKd7u3&J`3K%=Ls-OTZ2XyM``bbhI?I?*i77p`jKs!U1;MoRdI<+R}W_5g} z)wH5BbBi{EVCs`0wpzRSWX5%Txk)c(Z$*oKKESWi2<+sQhPHi6n(cot;_QCNuG$Zg zUz#tjM#=&?Px`;nEN#d3R+kIROW5lrjf-YpQr}`{X>k{g`K!h#xncmxJcFhSD#=~G z8PZ`ca>~yUFfBJ@nlEu>=C~r39xN?ib%l}ZY6FkliJ2o;3G?gAR?R0jkgq~3bdmE0 z61|FqYduokVA;h_wm8POjwlvMik}=0U3wRJl-@>|E+^zQ&O(f=8f&j3*DNvXW@145U8TJ8sdS?)PzxF65yQ9 zwhTMh+Z`9+MOV9) zIjiL+Bl7bIF$we{xBGLk$aev56rl5b$AB&Zq@6_L<~Y8hPTGczge3(%*W-NLx5dec-epzemzM2;Zr!vUfZ_|}f?*ITkK&!rWX?yL zJCWQ-fJ#0E*a*oNfqsZCaPBjPVl$1ur=?6=P-U3#7*{Uc0KA8)KNy6km_9*Ygo{yE zDz2>+@sj4ll!%%e^mS!^yjOx`!l{zcbsTm(bi2AkHxfW^fQb~qni?D%yIet$Dvg!h z>kC*0*T^w;i^~?2n~BuRwuXg88`5K7(Qrg6A3q^pv|Q^5#d1>=A3H6)HRuzxWaFQT1Jg2SB8Fwl^bDp# z*rs}F55sah%X{LbdsvpDI0#ATuAN+aP2}I`$wrZqhiQ5gwUwQ(KnT3crOD)-2I3Jt zhwpF*G>UGEF#3QvV^Wx-*k!S%>+XPWayUiq`wz$nw62D7#I0Yk;Swo9%W5ct&Y@;qV(RNxIkco3Z*nV}FN~$GkI7Mo zneUklvywq|anLlr-zgC+xM@kuO>$|`ky17acO*6cxn0y7YG-1uIH%Wo_nA4c4xHq; zN)OyAddUt5tQ9DSPy-#9?NO;m8|P^N>l&CxO`^UqA81JY7TQhlkx2ULfW)tGx5d zYPIB2%|Qyga0jRr#5P4IXeOOA@~evn-JiBvnq^L3N613m^sfx9^0+Wf+`>ufAS;z= z(7a~7VW!)cUu>vNl%1tU7YbyK?H3>RMQAc~_FlkZa|TuYclP+%Kq5(=p{vR9)Mp)f z@}-8{NDhH2YLyvtn*Kx)DbbRG^vv!?v~7NFq=wX9LtiWwU3rDJ72bzZj36UY1Bh0d zXEoG#ZZELpZ?GfbWjEx^czBmw>sPRJb*7UrRR11NLiW3x?h=x`MpP>4X^C~{{;e>1 zS#MF~w4j7b@I(y9{2c97C9jK5o@$3QH_igB`(_F$kIhxG0Jej;mX5wiD!*ovfjQw7)it)mf z_W;6gzeMj{bue|Fl2O4d{JJ%t@ilkw)$A0Dbbv`Z3)y4XG9DhI-OeP271;uw5qKDZXaf6;QIsX#Oo38y~=8 zp<*w`o9po%bF1W1GpNhX+5GHwfYGv8SYP8DHs@Uf{j6x7&sDV-)~tAB&K&Dshulee z--zHO)vinJOd`yqx(Q6OqL#0032ziB6dx{|&?F<7q7OY-x20a0mnHt{hDb?GB_qu! z)C4VdAjBr2v&@w%Aiz?KA3aTpHG-0}{L!knQ%DR(j&KrDhu~5xn7=YzQ(pKWZ)IgN zou*ruR_k)am?kc@$=v0k73T*WR|4Q8B1@O@CKAXf7YP> zo>l=v>^ZV%$18j@alg1~LhKmCd|Bg|^U%~!{!+&t`*eq6HLk01!<$;;`YJxs^J`Vh za-m$!Of`JxDDCiWt!`d+yn6W3zPoI-#`V&wx`Mw7x?v8A5*jmQlg4kj_tly+SZ1fvl39)<7^?H}(|5 zrRQIL+~I~l+J@n!WgYC)Xoe9*Y$fcOXF}9(jI|qUX{N)MF5}_5!0DBN5ZG>End7W7 z$6SVCtZ_MN)laUheaC>CIv2rY6tZkgXWnyT178jYo%3)a_oa&UYORGa4+z`*k<7hGpdw3MeAl;TQI7J#4qTj?KA(tCF z_-JD9HY!KXPtvvrJYP+G)WP1{c1!&w3amyr3IF1U38=oX>xccPWw3S#4>3z;2kpA+(uuDtX zaMIRwM^4JU0WLbujr#nZoihR3$oN8`^ujC1YKYnnX$+>bHXLSuBrzdP+j1+?@g9?| z8VAJ8!Lzq=J+4lTadMbsB(rU7_%6$~=7&Y|u>+>gK@Ni`=JTfOwr`zFQ!ZB^F3_vN zn{hzr|1G+)m2(hqqc4}p8yspHC%_;!PN-BQAJ+;8fcE1^+CZD^TRa#b^yp)7Me#P{ zDaJiU!Gnsd8R?dB4|JUaX?6=NDym;h<_M(#Xh4_0m(dc^C?S+|sccd4>&hr(q+gSV z?udN^UvfM}hu`1|)|T-Yjd3UHDw@%X)~72)_;W(OsrUsI5q;T4vD>QLFG9#ASP+Ae z@GLypv6muEaoN_^lRCe#SF}`>gPu<=J(eM zVVoJj*oU)Z6yxj|#ujBikg?wc`HbkZ?6VB1o*So;3y&j1!c z>Axepjnhs*UaARi8m59fdqq8RCL{EAma0X25H4iU${cv>Qk>yXJf8_BiSj!RozcNs z)~pnxWyo-_dal04mv6%J zJ}rOsYJFX)My*zRRD1lWSyT0m*7{a!qoLGkIO$>874)AcfysCEqLU=lKE{YdP_?Qw z?!s?c_>E1~Xto;Lt$HmNerzESt*N%``K-V3hk8zIH zV8U!VK;ORzC#T4HwQ2+Sr}aVY&rVPJmo2`E*YWT3Noa*sGfk%%ng#&LYsQFzuqSiA znJI5DA&H{f#iwV}HLMDpdJ#-|m}ccHo8631*pxX4JnJ>iBgd(CILs1l(E7BO1ZLLZ z&0#hU`%it&K;GZKUV=<5u&r)7F8=Hks|5K9b(7a7@QeFuPRd1Dm{vL;^hZ zN&yNXaqq+}WuJP5jSlI7)KC4Qupp;fho@etkP^ToOYu{$AjkRPY}?3zdVdmjarsn55(Crzaen~4D3S;)2LrSeR+N4R zLw3RG=0I;4&PZIGBCG_ZSCyrw`OY0NKM7q9QsSVind z(h8bg!jls`m5NRh0b8OICw7oyq_P2|6OHx4F{q3xVtX{1hb8D&qRyHGRS0{@SP9o| zlh05_rW4$@T-Z-GZbtA;IJAmP;sDAHOI1B1nL3Itcx~bnpNHD6l{MOV0d3Me``F>x z8Y+LydTZTP{`UK)qFc5Uvs~<`JLkcqAI)Mb-le;=MoVZnV39F~ViT1$3yUp_MUAxH zIw*ZE7JJCyPIQqBa=P#~9e8!@)jGg?oUQ5Ps54n$jW)4P%KzgQ=>G~&`5)P-oV?84 zqMJZ{pa)R1H^AvCtTB$mS&wEqYazw8alc3+uDEtSDOOqMO`Hm@Dn9JhG7001bfeQz z|DT~J0I)Lei!r6yWI6)`VBqjzp~}}P>BL7^)-!%`ys+4Ym*G)WVSrxnK^#_-w49qF z{M~FaBIXn_;8O%Zf#^^w;N5b}sz@it&b4h+C`R4EtVgUb>b;T08RKLWwB{qwHbHsW zz@c)+>Bn)8QoBtf!_6rbVeam%juO66M|E-|trck<+A?XDa%?wV8XE2k*7LMuCbm{2 zOMZTkl7iJ0CghOi1dc99u7HE3&fR0xY2HIOKsR=0h;AsA2uMugusVWFm`M6H-cQA| zV~!Kcd_oL`*7z91mh`eo3bVYvy}kXY-gs0eA~ZK(bCiLIgqtF!l!=o(_n>2TlZeri zlB*umIOn2XtgtMg0YWjkCgnx;7LPkp$E^nLS{wcb3MX4pV^HMj8}fK{6M1TrILJJX zDHvlcVYfsQx@B=j2P1?Ose?f<>-8h`7N*do7ft)>APPsK{VUWuj%TMRn}PeY_nXw6 z+BS*M2C}-hF!)=ysXpb%&P$vnrMJ8mU^|K$)8kYNFB8{2u(q)6dR=}L15ivl0A3Dd(Iqs#E;AScm7 z2G8`Ui?a#JZNB!SVze>f9VC#?IAF7}3HSNz5GhFa7zbJMV#7nVR&Ui364gf)kt{M{ z`DRhb=@~Ji7&Ila;o>YB5be-c%NK8ZCsUb@HhQzsjY+8Wct#hsU@A)EG8X;Oc|?O7 z4hC{)Ad#anx&W;;e36~!IL5Q;GiV48-7=OiTuqBD5SRptDvHNgn2fyn*?-z0~RGUBt*xvOd2H*Wji%H3 ztMRlylsy5OAkS#ZpG{5tdBm;6mdFyRrSzuH`Mqf_kS7^!40_=Zw5zIGZjGy3w$ zIj*LC$4ptk1LXg@|J>bYd^vuUw6EQE8}(Xkb8}t&mr`m={?^y|FF)FXm2<1U(QGs} z8%^Y$=K5CSzf|qE5y|?%jyISn^Ge;qSrCq+!POA=1E8Ox2kJNgje9~;@fG>{_Rm9g5U}kCw7~Jz z1TDe182<@zdpnH=V~~iWDp~iQKRal@eA}k_y>J@z2ee*P@C5EwJ{3I5yM+$}a;>th z&jExVrk7}svUF;>Z%>TIBIVp?kCDldcBJAVVZ7~d^k(B$R5yge3%l63RI*~@a7)p5% z2IuIt>v!F1sb1HI{ZW62&h3*3_UF@nXc7>_(Hgs`ErGa(9eadp2@3Gc>Ns2srVFAw z8d5xOnD`iK?+TTYK)QiR-a&(2hLWV$!@fV(yT3g~HXKOVgM@l9L3I-=Yb>fM`m`>j5CXw#;T2*beu5?+3|T?%wk9DKqo={x{B&}jhK z>l})}_A%@Ru!1{7qunaSk}vsE%%DBv9UVXB;~}8qsy{~J5_<03qf^IF#Y|1YX4G?= z3ivFR&k_TB7rUAu0q#0t3QZ{;#E=)k=&Hi{I67obZEf>*N1KRXlSn=S9_XNgxdV#xX!GmulYVz$khY|>> z$XQs6*33xfRyYO34~52!3dKf7@!{Fja9xS;rx1>Suo+6?OHB;4(lGT_Ndp0#&_f8p z<4=ml@enPI(WKWOq5XonkXf)Vp-C^Ns}>8K?s%a=kIhKZ?~*5hX7xUMJr3}WgUd!! zF|!1)cbj4qV^{#l%|ure+nkh_p_VyCB*%RxyG{ho*gPAtO_VHW?EG;>C#JA-bm+QD zp3^vp)CCMh%q;&|y4 zXoL1;VNrH45CXHLEA#44E80jEp>PrB2mU0s1uTn}niUpO`X_mh8e7Q0oA%zjXRlsr zY5P`-VzM0J%0dTPCwL+uhXyeZt{hV`A)slrGx5^ut@1kl7V~?*7Y01}jn@ROLDN3^ zbOK+U%m&!~zFzPAQyACwNo`s=A$Da+Orf(eaJY2=%T{ZbhbUL51|-1>7ULf<`iA-xnbvLV>Wd1D*rDK>1%iwsJ5!qK7Bog zuLtz4TT{Pau?xN|0MGFqJSEjrlTOQDZPRzUzpDCGSbE8TOwyZn7%^c#I<@|4v8i3v zM;&?}*B|w0c{X-wp7?uY*v9?&=*EHNE#S83jm4W+6ydVg!Z`B`z0AK!;Df z;cM6#FHG{qk^dU7qG>$5QfQ-=-AhKBy{LnX-+>Y95Qz*B^hQpS!riLus`oy5K6qOh zucF->!6&1ldGGKPote1euJ5o5ZSH70Qz8loCKFw>vOrnmMfqIj*Uz6F?7eFrs&{{Vjg#y3oAz6rU3yV|YnDpi0ZKOG=x@S1=ILw#i!qWOCg49{BAu zV1u^$@$KH9+AV1WtyvLXDbx;@60gEu1;%>?lKbK~h=DOF<`!x7L)6&KlcD#k~ zP`Q~L^>ig@DoNUe(LqA-mB4Te1xpY>ix030 zd;y+TdP`-0@`+8(nyk?O_sTBw+*MNAME}R__TY*;Kzjk+bGX|gT9s4xD%i|75@FBHa6BQD27z@N842_#?1qs^K z+OEiH)Wk=0*&LB&IE2s+4-?rA;?QneWdkM}Tf&k8fX;bDaM)w(U#pKottpEcjy*9z zEs9xT)`&wJG6%vDg-lOG24B_BooK|ddFaNTj;jtoOD;i^e%G7>>tk5UYJNxwc_4S? z4C|$*mT;dvTBV7`*Yso}y?$m}5KI^FEvQsLYH^bj7Ypb1aniY+JB%D2d<@;ec1Bv8 zCw_=7aJgOem~Y7EFal_dc?sI`Y+KLCP40O!B+FS%I7EOknFY5tC_YKCkHnBsW42vTbaO=97iKEDcJ=WGY;vF7(V3P8h_Zmb|jKg&?FpzfiI9J z#^@{%&Emn8^_)SY3g~3kX{Ku6dH5RzTKa&uMQ5Y_)ai@$yK%g2BHW$&UOS$5jVMUr zh3y9SnW^X@WA6R=!;DMl2OEJYV}QFRl^&Pgb;1rkFo^lrx(d1+qsaF23RBkalO7^- ziQl`OPNpmXOXm(^~*8q_;;7GvW?_Z<@l<0-fN&4CG0$GA#bU~FowETjo|%qJ(VMKQnGVzOgB`-V_H~ZZA~;`H2%skTYZ8#ncX@~7fyhKX5?IrJ0h~y;D-J< z>Rpiv(K+M9`G;yXnG7ZVhcm)@Y6=tN%qKd$*kN`i|4gl9T1XFZSRZ;PTiDGc5&3Xj z#EdpI(h)50+0IRz8|@k`o^;~S>WT?6?c({&Bs`s=?bB}m>A=u+2qr-Vc#&UlRiBSp zKw8$vp>8)iIU$pDz%I@I=0V2m_S&Y&-I&K9qRh5bGH_i6YtU&&why&2qOyjY<7iFB zVbdQiDXQwnnD-Ir>u61>`aCz^Ydf=7rbi;IpdYEe;cDhfa-83JSd-O?IX*`ICsi`D zRSA1x+RkXltfbf?7oS70L@OL7Q|Ccxp`Mjg2bi%<8CM-p!4U1;*syyrXV*$!^Qo%W z`l2z3ESS)=b0_7X=1iD3xVpy4>LL1#4O%BsY zpLW97vn4{v_sh6W1I3mOLTHdt>*Qn@@+$p=6K)GNEK=nq07fB9HMDYSEvcj>2iCyT@aS9|=a+!ZA((YK?Q$|YXKESC zDv*QD54fPyawM2hG|ee$J^Cy=pr8U;s_E^DKDP8$Yr9wHA;HN^My^~=pPuP;85!Nh zJ)7Z2Yv=?dB=gx?jnva!n2f18=O<1#`^9Z5o1rM_eBzHmHIE{4Ccop-_jM>+8a7B|n z)@vh)Hb>8e&Hz$VoF~qucU$JUeQ?C zvIgIT;L^54b9>cD_ao1da+P0ML(bo4v9t8aLG6?rRgS#VHr~BzzvRvPX)ZW!m6eK(`n`ZdmO6C;ufRiPERhS319UNxbu5R6E zFdI4xqG_;vd_|_YlNd9z2{;P5HgfJ3+xvmwgf(jN8#q;9p6GoIGW z=qjToutgQ#OD6fOO1ZjZs-Un;UK56kk`-f*F*5L~WGb-czNrDUgCfG(L$!A6u%6#Tcbm-Q=2K=BbwM&kikJs*X{GT&)vRD7AN-2q`@%`plTF%tz?rZNX%f zGZT0jjVd#0SKdxOYddP2H$w2);hXjmVoG1$X0OsP!Mh(jsL)+kFlVZIanjm|A(Zn& z3S8+Vu}s%oQ;~s(QAieTCEJ(daMGs(@qs#lwR$!QTbUw>IMzU@I$ra>1&vk<_tt(_Y_cj(p;y;dtg-@$oUk1+M3O`Hz4igG*+w{BUuCh(3oVh{IX*8{+ z`fX+CVIr|ej-EtvVS`n=K(qs4QrMImtaA4T(;lb$NMnL*t&Y&0nsq)}_EC{H(KyNy z;Kd6L*LQ4{CEo|Ngmb#&xS5umT@0DXVe@Dh!sQq~63kN=O_<1*GwCOxjUSoroT*~E z;JEj@F*!^@9Rx|EMC8G{m1OwP;bDN1C9M!UN4)Ho4qJjKTJ{vtyQ=sHLQ8gzJ zRqAB^CB>UVr+9OkXV!AGQI1`oJ$B8}8yj8D;z(N^w>;kb8IezhiDy+VW`(&bR=llN z*SUjXf|*z$v6>qyi%zH<(-=Fx&I+KFNkWdu>`KXKHidN@w+dk}^!LC<@}+q1F9gOh z_{53x60vijKky_Btv#5|fgGt$jVo?^$2}^tA;y`Vn2DgddNd)S>9(0VSJ5{@A4*KgYF-29^b?uS>0J9cnb!-|M~l^0r*Ly22z z4DjlhY)s6#44)Res28NsW#bBHKcMnMZ#PlGJ18X@tCAarsFbp2N{%a`pX|gWno6L3 z$oYbgJ>}MSHrOCVMs$6hfT8&Al^Xcx_0NPS^sWKeq1Nv^K@aq=jO1mUuFe;?$+}1? z;4^y+kz3NZ3S~PEB#WcC&9OPA76t#4TDdSarM+4jv|+ULj2;oWG3UmwTO@ z9$`*Q*C|Yo?txs)YiSlzqzl;k!N}gV&}Dedj@d=c3UPZleG1!K*Oy)kFJ9r@?fXN= z_rUUNR+kbt-EYz>55(e*F}AKlac&P2sH2C1(WdAC$oOVjubt4@nX-11=&>~bNS_NP zIz!8{C4zQ-X6(=@GYa#NPpt*yO0@5#MoO4&k~SK%`Eif%oPBV_5fa%slV#rE%DU26 zzj#N6m1Vg%w4~D@>+l}-T1g6;q7DVwIX0hwnUq>GstfJoax!rFu|{n6P^|L*XYbA1 z+c=KI;r*BV6k|9s00x8z9y&l#dT5E>@crppiH@Det3`&uken4RV*rs%9Dnw=>*}uV z=>bWJlAWxOSOjMJ?&|8gYxSD8n6h6YX&@e5yzVTGh;gZ_J% zOJro&Z{+wGB|TO)?$%?{N4!!}4BW3M#s=?VB!5L|E@g*h6I;5{Dy5~Xh{#LYjy5gh z5RhJ4SPJntt{#T42Et@m4Da@vH}VRz{e?Yw>!{}Q&}u<^#IN48Y;vlFrT%nf&kMrp z7`#Z3NFw9evmP++`2QMAT17o&;KpSs<*o|dF-6;VAjJt_IUv1kve!HCt}5fgZ*R_sOUHFRBJ)AA0lBX3ee3A~sbFn`2g zq8(`us9WjfiZxblShvz$%p_GyvxpHa9B3jQ3odBZ5D>m4Wix3GNCtLdSVraXWN)NW)5mhKDO~g2nBe^JjC0VT*R8Ly|nOIz~aF%V;0lFW0>fUt_;nOTV(5iyW&lO3Yjf zv#f=wToG6qtj|x$nKpAVuT&pwO4D%mKM2wrP33K>d|**(gH=qIiz&MnQaqxG2D1KH z3QmdW(uj|LeEy7D^OHKjrn8?cw$hBcC|dhS6s?k|7+?yV9ylVu6|dqVT@=a&g=xpaj{M3)YdG;hN=AxgpYh$6{3f46_M9X8aQ@;l1 z3Ofr@O>pG__bfx1i!YBBWu0_=b8INntlsri)(&$J^k4@8DUcqEO=|~`0M0x|(??Xb zV8&pA0$#Lv*%CRl=&+8*5ufZ|X>xm{KXGBx(D~e|_ygw!YDVEGa!I3U3LIEiKN;@C zsf%obx}upG1V=}s5o)6`$fonNby_1T*7Q!j&6HZ&rcmH`!<`cCpx!RDyhZT7*-j~{ z=HG7Zol^OV^@mS{n!Vof@Pcz{Wsf$-{r6m819Uyh*IjFsueH=w@a?Db`aiMM&MEfI zyL`$bkZBJ|jxI`433a62DjqYhU)}@YOy*SO_?lJx=3|@c>NCYUOEHyB5t576N5C$P zT8%cR(f~QKXeZV+f4N{dXs-haP#Va7 z4zrUv1_(r&7Q%5fcNK$TRjY=t7#G&$-A2@~v1%-ATPqbXy35XWz*-`R&skImFyj_f z1ySI0Xcgo@gPn4M#8gNpH$)e-%Waj~)dqDG#Ir~^)(W%aXl%4A=K9uXi$+S+A8BsO zBbQzH7Dz?}Apl1z1F}rAJ%w}D;tLeRrYdK2rb($8+>gm(Zi67sCsRwc7N(V{49gv2 zMFw#znyR!iPCDT1^X85moc2T?ci;KV#{s1xk&_!g_+=d7_Y*@LAJR`XV(}0Pnr2L9 z@0jn9)j=2Y2wHG^N?g6~hqh)Rlm-4E%*J|#d`f0r7vOj7xqD*doGDRGLwO^9P25nz z0E*O=^C_20t%0nH7>X+c`(`_#Tr4x&5a0vF*(l!0KizFL2bl8mNm!#m{}96TZO_x; zf}Hm-N2i26=J8RSCrHWZ&EG1Q#}bglErvF>rY$3e?l?oATbYgM8{`b2=O^ECkL@kz z85=}3_X>8eF6@5^(|RhNL^T4r+DvA3}Mip_aqq`&qtZ+fO!+wr6f&7#%}E-AZ8_&PFYu2 zRn^m@r&c{-6&!~)XrH+rA*&N4`S3&ebC^7`YG@elS2y31hRArfNf98}&uxNs&|b1V z%HHIx^w*^RK8dki&*C6=e3{hEMPJ9EV466mVu8P5W>@hh(LOQ=2`kEv6asuoLG5ly zZ*)%AXg^^@ooF9^;y?;h54IcqxlW4bt&Ul>)fJ>4afMbq318iIU5_Lp7K&B3hYCpM zJ_+4P{j+5lTBIJGNtV)i`VMp4&(V7vVkKY`@xe-PHOziYG0~J0|4O)UvAyBb8psOu z=GZ7srG2r!ke&91a%W>Po+^sMt{nNDDzigBBd{4BFoWg6x#i9a?})gxxdq=5D!;HB z+mYvU?k0>hGrLU{N!``$scF<*I}_*n*U*wF1RHJUDg&=06Il<%SWBE`BEATEi=gXB zl2C2kY`qn9k6z)5u5aK$pohfAIPej0+q6eit$Xc;S_17-S>Fr-ZumWC_<)MypscsF zAHEjVp}X|dJ%lVCl3{;AjEaBuLl>V3Pta60Vg1zbOj>x6l0#IPI$lbwP-B#4e`-D}Lc2b(@i3g5cDxQo2{ z!4~1SZw`)ewE{PsmW6^mmZ{nr8W)S>B3o{6|1V@(u8eeVHNV)Ob5Il80NsChHaU&v z+xtV9L~|pFrr(PueFt2Hk&xQ1`Zi?+HL!j*Dsq43+B|DMxD^PfNxo z7%dxSrR4{hX;BUtjwVBGRhbM^a9R{7P}UztMj}k;N^&Nsa)<0&3Za^uO{N@3lOsgu zEEL83GJMHF&|K!2a1h^-r)epQv@6#N41*DI;2Ku@=V~fRIowh>X2Jm&xxW|M2$R&n z;19S&^kovpn~vn=7U1gKH($G*?e4}#09?3N6yV&8uH3Srm0Ql;vz0W|_?ozb3bKxA z;yb%z&B%D}$$0MF+1$ds!FT;6_HW21gjl@q_A3%$OBTw%$I^XSfI+fYYOFsRrhyy<^T-3!qGJtJ2fQ<)9=N_b2@91Sa z@Zx==sGRbvOE9)bqg$%cZOGZavD58@u;C23;%3sVl2IT|EMnsq8NsHE;4ZA|CS{Sn zTUu9U4^d4WjjWBL!TiGBHP6eD6JJ(k1U34UynFtW#xG~ zd$*YO(#1t$KX_roU2C3trOXgAgsqt_<(_(l?fLbZl&5}C!^4z&N1jHNV&QvGik^A} zG37L!dR0(8^-7!V9N>h!X6dO{kQ)pNmKy}utnzH&DJFBsB#N)O+mo6{fKURVMmmHv z3QbF#fM=tGwa-QiJj|F9Dp=`O;?~oCr-|5~I9w7UtKr^y+KS}m5FB{LN_XTB6bP4Y z1dg{9Am2;Oi7~Xxh6d!<*$5N5&#g|tR**)yXa$A%l)u1K!Nv4jh!rJD68QsCVsPGR`^Z_t_U+*yzC=j zp+N$03c?D5ri7;o^mF47g(!!37L#NY*n}x^>)N4gBpVyuEpz7eP!0+h<{)e3I&GUZ zsJZ%Er*Hr0kKse_OzDy~*!!ZH>11-J!@fE3~T}rjS&It$P6lJmpzn>@Rh?x2(lj-G*lp>eO zf5O<_%qPR?C>@U}I?c1gCkHRy98f;TY%bYRn=0oP(S7!(rY`-5>NnG>_BYViE{WGk zdMy{!>wK)MF;dnBf%ORW)75CDf;w-AOB;elA`5c#!#i&eV)KkuFgsH5mP_XYQ#P@s zP3OIQU`yNLJQn)wq1aKz*G)p*s_VrLo2q$Jv4v>KvpE-XyU;#0_Y>_By!LCmKICfP zp^4WgJMb8cq`XvNeq2HMhq?iuW@FlN5X)TE7;`skY@Hiv&cO6dn~Sz%Zaj_(cFj3T zh4`pQWS?AX#X@0zv_*j??T!u;{^@P0h+W~!Wu@%GEiEOpT-uV>8DNQ05hNOVF2d&? z#pfxNi|Y<;@ltt-gEa7q1h#=D*K0<8(SHYTWUI&pG3t7n8YkynWM-j%|zrX;?E-|ScS7WX0oo05lo(k)f3}*=PuS=azb4|q}r;vkK8f<<5QX>Y^ zXzF1ONc}5UdB`!N0l%WlF?pkqM8m_y-Aruk^AW&}s>6LBt(L%y7WM~So3z?11 z(rLj)4s3yaOn#d>qGz&3Is72|<9nbU^0^C@s#LDw-v7mh%1KDz--^* z!H19BciLhw{lMmGEbMLru^wXWZgMyVciz0fc!5?5P}_|F;`rkL(W6%_Fj6RegB4Gb zXP}UUlKAo`Bno!%hTf&?a+mLrUAe^GdQB)V`gF#m63N?+GiRDrfM>6vd?>B8S<)4n zWn(sP^_nuzSvDP}ea=t}RyWiE6r4}q0d;2nWaFYYIq7lush-$)2#+w6T62S$R$xVN zpc17Rnn9C*6;WER5YJjT_L7g z(;O4*k0_Nyj{Dd6C27f5J`D;n9jC6_~UcXg%2 zo2jcPe5blC8@*ZX3J(6>?I2j!=%+@oAYX21EbFoHP`K&gNWI9VqGkkUWlQ|5TG{Yj zbVFBHJ`g%0DIeK@WITz`WU+g>KAzMqSr$-a6fygQH&q66lP$&mKH|=F!juyA7CF{0 zWVxR55(?X`ed zC7YLYJ}+eKC~EG39GpF0h@^mzrY5*9_hbsxBxlGv6XxrN>|B=}TUT6OQKQ=eniSSP zV5?SEeo+cqy=+x0Fdw3VmdQw6JmImbmr0HkQo8S(l z)6zJg6Y`ww|C7H-3w0G$663h>_P~XQtpgD!qT<2{Q# zXem}`J}YLBG4P-PH0`%+h%nQ0FyRX2d+zmND@E8*w{K3MiIN{!akmm#?*< z@vFn+<*TE^moMIQvDkX@@bSfH*rmN#*sM*~EVXCOyS=lD$B(d9!da(HWrp5~ZAEHcB zoH;K!2IOK4(gd;uJzW)kP~#t)NZg5d`IYps?hH4jkhVg6d1V~!7Q^<+bH3XjBSFeaFApQpK$@YF(@7+23j0l8SUBE%@l zS=mubnK~4zt4Lfix*9N~jm~8+WyeqWuz+`zyORN1`F3Q&QCN=L^`FY})t z2RNEK2IL-DI?=+#*Djj)TH5zem|ZTfU4OTf1a#?!QIXPq{qWri_o>8PU%6Mb)Y4J) z5}TG$xK@@b$V$iOZFQa{*4=lia?JW?S*Q|+d}|A3S~ksb#F%R=RYb{L;>Cjmtin1k zStwiR_HcmDM*jYgz&Oq$mlnLFuV2ROYP@|4j8S2e>Bo0vGeM_5pm;Sz$kKk5^a6S( zFnF69SZu@&mekLPx8Ve}S75S=K3aRC>_u~cQGu))*)y{#HuFHgqQir!+O^Eyuk(pK zfM)aYs%{J0C@zb9kO1yoajdw_j#nggL$nK!K<^5(eP$C2-bf{+#FzhFvv18;EBkOg zn@(hAntzAdwTE9lefi|*udfc0+OE03ncGIyqGRe&xoZd;C%X6=XVOJGPj~`}%Apc8 z0z3>Um7xywVmLz(X<~=TPyao(f(#@RJbj{AoZ2l{+$Du{5~h-u)WZ9oh#N}GWgz(} zanXrZOpE-%w)?dQBS7TfkP0vgm*}1T*=g!IeLqGC$H1!4ZZJ1+O6V<_SXqjE#oVwV zo*;^VA<=nW^u`!W-`6$q7%otsOeMh`FCQe{d$s;l$Ud;e2uvS-b@1Zo@aV6J#!KdZ z&0Q`gzz02AF;DX5vY2P1q;Q-zwpV-e*EdH8&k<_*sXkly^q1t-;&_<%lg6}FG{Xj7 zegEyV!zUFAOzl&%OpO9H8#Q0jEK&)AYS&C`Bo@|jRQuz}_;LiHdEAi7N9*8%-F*+A zsv7-t%vtJe;M{Cb;}x_^Nh_Ybc)EYIPwOq4V%GeTIe=UeWe#zW4hauE z9H@e3Un76LQ!1@q=a6~?syCfi@%!oqvjY)u<;3*udA(^N`+D_^^sUz1twQ&Vc;7xk z#9O-jBCg_-qI?xH3vUPYw}WxNmlu=!_jew2r1+}Mr1eqOx4bQp&tLYR9U7oMeEA~w zRz9|gkFx<*D+ONfJug#Xk8=<11*C}v5|F1VAnA|9+(k6%*oJI6VLwwyYdn+Jl<`m` zjexav3xku?x4wdURWu_8z|pA_HCLx4q~kzxsOIe?mQMU>*!~qHOXvX0?e49hO+=|w zCC+*V;!Z@#WG7MZ#tg0*)Y{Q&eOAwT9mJeC!MPJ$pznN6?&L!EOLW9yS1 zy_Ik6UQXPNd5ydI>f8C+_cOCOE0hW{Yw%H5%1Jh0Cg_5|9?J@cQ~-SgLhthl1@vFD zvTk+1JKhJ=b4U@EhU3rhDl$mSf`H_4&h(A6;vYuYNp&0(IzBD}bGqBX;--0(qe4xWUDO)OBhp`K$t`4MVe#F%tc zGAqqbmTk0mo%rR|mI0O{w(X`W58f0Y;B}ax z!v3ZTV;w{#;GQXS>Qg|WbUa)%?{~B$!TK{Z`!=Rb)-Qw*Qq`t2vdxXGklj3{1ihii zCBgLI%n>CDBtY=0XqZ;OVw2Kj_xu)SnRgrb&Wmc20yavO!wjpX58(oBZVQpK#8Df1ALm)7`#09$L6 zqs-oCVsE{AmFD)TS}YKGyS1{DsJlcqkd=Be8-bi2d}|pAQz#2EK8YBTeDY2mVzovm zNG_sk*xxEmq3#2V;r2&gh~o6aK#I*apuD*dLFz@{SP&=G{marck&5;=cvrTKk+-9S)(y;3Ysmksck}|uB2Bje!+#8Q57Mpu)uuo=}3@JKLJ=&)?HG_buVY- zH&7$(d*|GaEj;0WtF2nwDSfks>_Bu`ddvY9ReoC1>wACU&}$(D^C9(S%miy((N!EE%&!5293VMrn zSlnJmKfU#-fzk@;MeI-A^2{{hDH*iQQ$1GH>R==Q(|Hfm3KdwyiA}-SUkbbg2CDnI z>3_GPUbE(d$72T_Q%VZ(dl}hUII_;~W@vwsq3sXn!Jxu^tdWB$<>b)jXQvJzJIiKu zrI;-b%M>HArj*bI@TB=M1?yt@o+z-UpJ9Vz*We1;qQelVc?;x~i0^PX%uX>Eu$F4b zT$=&rvGy6+&%eu6YW=QOi4d7t1n=TU_Noeo&F}u%?y}O&+OEb_!BMF|QVNTudKxkG zytCL#FfAoYMjTV;B(>Tm$l7E)J9vKZ;wUi6utr3Yn_A11c2#RNrC)aK?;jmKJAC8X zw=IVn^(dvq22SII>hnG|N&*2Po$13?N3|rl*_a7U?8g>7d|E06Olzss>x1uN1&dh0 zH$llv#b320$s{ILGN)jve#ygwu+{Mh{j~j7Upzm0`Tq`H#ETZOqNQf7?r+G3`T4?EyMHw+HAc`OIq!w1;0P1%R60`2`TcH_BF(|$9JJDVGa z0^rGY5dcr1xvM7FEbYbuf=uuV>y;=iK&BQT!v)B~1<0;kfGn~AS#$xiPrCrYX>&$d zitDj(^!4k5|N8#$^}*AcT0F}tD}ej@@cFA}hhaJ4mWyDC|GOqbBus>{q_53+6na|J zl|VnsWDDTZOn@x&lRWNu=h<^#=FNF zL2eV)(L@{c1p6@w;x!6ao+!hWm*Wh~{2(HVsIZPum)RsK*cdfY3rKhxyDJmW3d3F0 z4CP-yfFzHSjurM)iE(^wfEkPLHd^UgvRgeVuv@f^JmmupGZMu`c47W4Ru%3m69FqS zwd9+mF$g7d$-tAyS-G~739Vc;b8oJgbM`p1SPH~<7Paku&@#Z@TF3Pd-C;!Qn(EPa zbWf;0kK}XCs<#6Z_TK+^$gsn5oze_KxHNz_FtQt8LcFv_WP{Z;hai<>f6`bM{s6p- zn{31%@JPyE0Aa-j`+9HQH+{Ww^;I9Ye%}ifcM~x`6Bs(DD%_YLP03bC+!~(Z;`$p%W!{;^!A`IA*PK zjg2Q&%QBr!-sc0!Kb_ zNc@9zMvW=Sr@Gx_=m;0H6{4GgCByV3xLhZgV@#IhSd82`)`zH(*@9f!-jl{;a9{$6 zH}POGHTQNz-y5R@CJQv=6uIk7PAkk;xhwDr^g?U*TXGT+qh7JZwdmNI;KG-Sd{Bzo z9yiOaGQ1@d`-U{uWjp&wV0BZ<@2V=XYqQGCQ$1#D{ypfw0AN6$zrv6%9vZk(+xxHY z$SOi*%ZgM;t;?Q-@YM4pbP8%uLVg>`Z3&|i@5Gk!(!%*-=WqBbv0JWla=F@`YQw&xcKH0#56Q#uaVL0{ zK+_K&Z+TG~k-%O9j2mmen17$azt8debNK!vKK~J)|A^0jG|#;&La1E1XIpgZCLEc* zW%je5E(|t5Oa>EthnX-_hK@Ctw}@BI+$WIWvMmMpIw?nXK%>Y(g*QLrdqMOXRNQ{J zy>OyC+z$Nv`$B8v4*$5O&jC%qI~j>r0O#SofBfjvNO4`93_o1no>~eUldd`t9Tm3b zb){IpkP2>^OG`F_5<((`lOn>w1{w+dnS!9djaRb?-2f;+*T2OyTKtZNm{2gZ9N@5k zhTed*qdXESn3INU*)aG$ZCOiqNC5|%PABTyv~hH`Z_@$BL|X#x&I&=MXh-0hyuv?9O25rdx%qBVzGmL1Ge~pqPAl}vH=86DavU1og|SiWxKRM|=-?%CuY6f|c_?t5 z1bK^M&2FnqzjpyoY#16q<0O*&Y1D&`1v&&x;tKszZ}AingUSuJR1(zN#!**S17ka{MdU-xA5bod5&*6@314>It-CJ z2EX5nAb0N$nJvadtS27wtQU#RadndRV;Phmgeis1I&W8{y-#W-*UDIK+WVyhz?oJ+K-Xr0RuDIhXl#2s9Ki&7!&gXO4&AJ@v+wolQa{#Z0_bFJ{cHP@N~Hr^U>mz7)g50kKaQ!nqzvl!_}7 zCnMc%wq#3ZI({Nt2Z}i`GZh6xj;*WCn@kiIz*QO7yx|=_S&TVWA+}yl{46P-Nrk~V zu)#utWGj^5h-%ar{@YfBv*7gDsC-C|A!we#%`=13AkQhJZ-SE<71N0(=0LJY=xD@nPC8lPnp5Tkr&t1{{QeEfj?O118CIhNe-lFqj5>KA@k(Lg5Uva|14D^#dG^qWyuS zH|(aKddt1Axq8=RbJfdna`+U@oY2I{shwleXRm}6zn@rEm>=~`YoF*}{G%PVaUT$g@M2(E@q zCd|pQmVq#lfM4|(1_tQ{GuuCbM&@cR5Ksy^Z=MRNmiQcqU^Sl?PDAHe8`>b1sTZ9c zxnJhH=Q`&!Xnc<|nwjB#Q$5nZTqI_7zWo}CLT5aq!G%$R9ooL zG%0-9nmP5~V9>H=o5e%H3i+grG*(`rmXeogp%jS!Ft+kw7sj4l^fR*F0sAD^AkJX6 z7-p?NbVqT1AVqcy(^R)8*K~{1EfdK}$)8fuFkt$?XP!dFSwiP974x&LG^K6_Rck-v$rYy7w%XTi#qgq?r6A53@T)_ zf}0SBR%~A>qumO25H>AX8EPZw!$ZMt&q`ZXadt|Wcgex|@Wrnh@`o);Y0S}uQMlJf zCQe8dU6GhT=6b7Ag-vXWzco4uve;ED`|IoA6Jj+THyUoSTpDiaOV@|rtKEZTDe;1B zApN^K;~<@{(bF1R!1}TaN#zTs>#Cli{j;v}($n@jm?&bxI@IjKa8vL)S6W)vPJG;z z=RjxO`=HHW`|YCXZwobC+7ufJBotX>hk^pDin5?%r4eV!TLIO1yDh741$A6QAfJ9&aKp2 z9_b3zhxxlKad{O{)cF%g%9FQ`U~ge~W-+N5bSssn0%2$1IZMmVwb7vooG!8%m=FLO zAqx@3v;Dk)3dggw{|-*n($$YF*V6rnue{3V{`}zR&o7_uIx!ASX_CClvT5R3w30W4 zoBI$|W;So4|adhzd#r`v%LgH6s5900;3H=pK zp$}YR?GNi^h3KYIh~AQ(H;HAdLFNj!&s}D#OEn<2Cc4K#W&8p-n~Qqd5w8l1g@GNn zwei}sO_16H?>ZWg*yNPVpOE{r7$7Zdi%xUG$`6l9z>xCXcAOg1%861!?U09wWWWeT zsk1cOnyWGQw&D}5!==Ex{viKmJ}fwfHc0hiuvU*3vVwn z-9w{ZX~e(GmWYLe#5>E^yc$tPn(B`tvd<#AS8x&aN9H1WiTR()>qa!6YesEe3*_vM zY{w2JAa%)4Frl;r@JLV7T+w;ScZ(V9#R#c&azKH)G5Ed~OeYGddt}~bp0Ex;^TlxWeW2jvbLy< zHL-L`qEi*`1`0094iGJya{g+j+RegdaY3x+vl8{vva(~JQ!41q3OQ*-W?g^3ub;`I zTUvFuAD;1nphhKXy>=&*D@2{GC*&Zfagke0N+s_{rmDG?m2kpSRGt8mgA-5tTYp~< zxN@bf2@Cx}lc+P(JTDGo5(O z+WS)gR`eo4c&xAr%28rlu?`M?RlaI4@J!1?R%3_^VzJ_h3cY1m>i%RlV3rEaK^DWT zD9Ij@z`Y`-Nzyy9JSpkF!tq)vI1vn_1&0xrtCEOpSt67hbQNA-fR`Ofm_qP!4zs1e z*TvzCPrd9VTxq2Ax`JAF`%1Dj0Mo;#j#4al8Oxz^3SpI%7J9uFUbn9gzJrb_0C@SH z@>0fK@2-m8RuqzZrSwvcxO>m!r;Qn1*1o#|QP3nZN2PY+%6QL;u#`A%T-p&&$gGeA zXLbtjQeQ7PT9&3xBg({|2%TDTXz?v5!MTN~ClaV>5sPXNx)1fCp33C}aegaAE;nZG zNE&JFRFt1k-=-ke7nbX+3ZYbrHu~X3SrL$~fmyA}j76$#Nj#+Btzy$fw6m8AWa-M$ zxe?T)t`*i`vNW^`c`NDb37eBgXa2#G#G6PEj~{U( z@iWOqW2e#&H~0HEipvk)V{_gfKY{>A|2J+dJ@is!HJxAHC7KT&>Adnd{8!KnfV5de z4uy$uiebR07JCF}^YNpl@`}_@ zulaQ7vD-oLv~{ARe{vnPIN%+0@V2RzdnVlXL4?so`~?BdoYL#l#5qggzcA2Q9*J~z z|KBLk*}YE`=`RQWFEPTra{sqtge5PB z=4zar7U(MB2j}WWAUFVFgW0$J@J|B5R-|2*6H%u%PCajU2-cO3=Szbw*@$Bs@za7f zdlF5lsPs$dLc}Ym$oQgL;kMOU;-7>;N+R|Nt?R2-TyP_;_Vz3atRi%l0SW+F)oKz` zYVQIXf*?9BP%>Eh7n7LYcvahnD)nT{#RJFqobhVlL*(Da2FDiYPHjq|&IBZIWbB>6 zQ;FxJXf-`HPn>7Nv;}6&6lm%?g9;?B*~QeHU((dtp`aySOL8Qj?@egfT^^N^#QCGq z0HFp{4(RpUhqSvNhMwzebT{=?7b=}qHiAOzA1lct6>TmS0qTRI&E5S(0o^R!w0UQ9 z6KJok&F;o#x!oo4vu-mq+g2n@+K%3snnB1la`4Y|=qz=LNq)#P5YwFH;{hayF)g%`0o>S`3Rf!k zta+Bf=+>WR?}lx|+$4k$%*`@1q!r;AbJ->7yT607-n96bd!3joQIXm9rzYm@Ltt0z z4<_JY+{NTm_m(O~&Nt@Vxp>>_h< zf!32}FlD`1v<8vI!oJPh;{{l47Q9pFCTwV|$?(0Z<}5oos{mWb#D?p;Z3&rE%lwG+fKlZ8>^;Isf;JQvpMz>166&fYKCm!c7;&Sy*1Qs)^_T%Z@BE z){&Wpe1Evk!&)t`B;T2PK%{^I7&B|JGPG9nS5`<0qE2K|!%MoN$Vt|_Z`;w$o6aV~ z$!Tft468A-7cnvD4N)E2 zC@xEuG*Bywde9~lMIYca9a~>Y81vLBHuREKkV`HM^+JcdahGb$hl#tw-uS!OdHS{* z8JcOepY?2v0?}9r1GL9rZO6+YeXtsH3Fa~r`kjIrf$bnAJT+s_M&P81?HxUWfKq{5gK(P zh$ONiG;*hpftdkYqa2yuA#!@j$ihSDVou*1XXkidgk$`{v-0G47L&0dW(phefm*Dk~D~SIW~Ng(|V|Gn;LWB6GIR|&%k8P22R&Q&BM{8 zhR;DxlVRpqnyc^P$5)>ji=NL?G%^681vrJsR`_?Vxe6~Q3wA@zF?J$S2=igfT{Peh z+2;@i=8AITakO@i6LE4t9tAZ>I+ocIj0yhcpq zAdkE*Xzyi`LxOarYbZi0RH$R`oVYY|3t&#N8W0;64y~Jsf3aFhYFy7=>hCQH!C!f>&Pjb|W z8=i6kbD<%sHKOtLhYM5>*%-2iYj;6dCH#-|d4(Y^%&^q?kDfBWfd25wT5 z#hix!17Zjlf~F4<|Hk2jc^g`Z^~Ye+8rxurU6+d)_Fo$vRHezXMb{Q8NSw8ENmcR8_60xl!{hHf5wqOTs@oT@-8f!rTkICiuh+)e>IyJVP335fig zXTMFc9ak{!h+mAxtw&hWCVKZ2oiC)rFoG%y0tgPZg-)pvAl)E)14;u#Q$w33myvI# z1Dn+#H55dOpJ8AJ`o+i3i()3y%OZM@>1%78JOi_n6f(T6l%i5wIS+mDUqVi9k1cjo zlA`A-B_x5o28!*GlLU%xZX!UTFC=zjd5uWjSmx#gaFC}Ssn)4|Oh1(rXtl)XAgO3h z@F^O-ft-vxB^uIjHlwI?P~Z{TP;$~BJAzmBWHB6)OkMgQLeZljEiLV@dOFb39@a@Z zDpd}PtW`ko%bF2UKY51^-?B&wm((4fQ(^P!r?>23Ov~Z5Xx0VRe3##HW_ve!^ZXZR zk(0nf!;}ZUqA@+Py0n^~@Gcmj8uK#{p_sa$4?%vsQM2mjTJk@Hcm5}-b@3PN26)B8 zP~boF${aWDzFBKZSLPk9MianDn%U%C%U0gw0t{d*gtYMWR9k$*$MQniyb8C1vk7M`1wbXW$VGlx zEh?d^GToe1cPM_)s?rY_bFVi~Ppc}OyApbw3V~M4PL(K+vd8Wy)uXf}f?i$Cs$Qct zW!2E=xG#Tfiw2hib8myFo zZ5atI(RmU*KUl!L{P`+hy~Ux9hv+;7O@sSp(x1R`@{KTlN71%Lm;XOXowonvmcV( zGR?erd34ZCUY>xE(*S-;l|yDL%(x0%EYjIzRcmo5^ z?j4fS*rvol3S|S7zXB)tNB-)u+H{oIT<0viw5_P{S_*Bu<-?q*N?0qwZ-q#Q$a#ie z{T2)~o{+Eug{Ll3pauAJ-aDQEY1s&czfA{R?h1g|`8T zeJ2{^uRV2iHuk!8MBpxN#4EcKj+&&Uw=1rkEY*sC)FiIZX5P;9d|-S+S~tUYjk5!i z&O9-<#8VJA1CB9kA+HLx7CLB_)$$<Cxsr~o3CWFzpsx43iW7-EV9NRnv@UrHJ zGO8yi5$AxAhJPJ6O8q*6gW3vL3U9F@gQcIFtIb(%5UUs)et!@Q+lB@LyoE~4BKvtk zco_U$z^9d1ay21*C? z3NE5r%e^GiGCTuoB=IthnO1sZ^M6~x-7ti|iNa#xmN`mv74T|N0}c$*_cvLq^nGmZ zu|aVhx?m~T_80eB%1ZKq!jM$ov+6~RQFzedV>|i+@_=AQ%4xXWN`@^5;k&?zq zEVWQ{3q+2i8Yl#7S7!W_!iXn5YSQ2ldBS}lGV4BaZF%*2vvhnqgzD>${701)=WLNk zT|$TU$bt5o-D0rcft0@PpbQSW!P1j*L&g&?Jb;|%H_w`YG5)DC@4L?Rs#a@K?4N#RSF!Xr!dB(F>dvm zSXVuX)pFIKVZRzbiB}8BXAB5@k`FUQIGZOHRAQ1i7K`0T9%l$A()RVT$%zxYS%Tk? zf=qPLAz-XAwX0tzYZbSEb7zB7Nw%rIh1I)q8?>rZQ{uxki-sC}t%Hwd=zy1D52*A*Q zLr6i>bX7}kWG`Pl`)g?#u;h!EN78Swyc%?^j)`o2x^9H7xvq__duHRas}gwpUQMQ? zrJ90cE%}WTYbJ7O!^ZaCwUWXx_GmGAY<{X0o@fP zZ}%+TGd<9;M=OknU;UIE{^yIAuMdyKji0=3!Tjet_X=}@b1k8EH%M8So3+59hfwmG9D@XU^; zN7W7xDuxQN_S)KX3ZaXST$C{vpn;VY>@~sG7E)0Z?g7MJmzW4v0DzO)6ITn?^G=8U z3--`3uLtOU2@3S4xhiJ{RAI7DBUCS?u4;K#Bjwc<#L6s#1Wy+*3dX?2Nli5QHGgD8 zXEBcUH2#JJ(r!SUiQ6L6cqQvdW0rI`4n(6I?IJ8NT^Ewr6Ec7xjId2D-r6PyBXpZx zF=I;?N<1I1wIaJ(t4;xxLpR98#X)cPl7`kNf)5nF@XA`=yIh*%I7*;GbfqM>L$n9B zvTyD7$X(+zY5AINjr(IgH@rPTC6u`Im%9}6d;-dNGYYW3?qm3KNNvR0M80?|%_{3} z@>kHEMZ6LJPrGqMya*ektK1hYzaDX7wC|R>GB<B}LUNY0eCKI;6~gD(-{f7rY}U zc&mx`IE^CWA<1NO1Hp@Ex~4<7pLzsDpMH|w@^RRi(7T_hyRyC8?e@qb|G4+Acl|Va zU5Vo>L-CALmKr}M3N#0^cBX4OBrr!-ErV5{vos?><5XxaNZP8DmbR4n^4USr<2^r3 zuk7jK_gk{){WN_CR>I*qWP8|8(zRoHppRymQw|J1Z?$u3JJM;KJ^%EbhkR0FI_xsF zO~o)fAg^+WO9)lt(HeqHI*v{5g&v5fVuu+Dj_Y13J-!}Qgo%ciw-nrA#YX80wKXs zXz2n4S+TE|Fq7PnN)lW{)_X2Q$`z^QlI^TXbx^=u<-rtsLlUz;n7H^O?CUklPSe={ zSqupwDx!eUHmz7?zI5u}*y^Fy$2(0Zp3JkVp94K|#rL@Yy z#x5E?8z#2>;7r8SyEGE{r54p`*21%^)_bO(AvVAn5 zA){OBc+2sP{MbgTa%w3wuw-VaW zKFQl{CFqyMJR2pb5H~DL3NkAG_07@2^W?v4D8B`%iTMg%1+Nyz!@S>^whUFrWnX>& z?X$xtTy{!jBQ^KOlkw$ff_itZx&Pwji@!d9`Td*PY9%@8JG&v?6orF>7|5AISg`Dv zq)uh-OiNX%)euf;ilbd@N9-g@rEYWEoBNYNL-Yk=|5Z+|jb}$GUIkp*- zW%}d!ew?zSzN~I_|A`d~-e3sXr|KH^a2Hgw1$ZCmf>zs-U6@U4T4)*v$i%{w#aIFg zNK~+idLaIGPE)op00pX6+}X5ZR79l@{V095DywWdyB3*>mS)5DN*WjY+qb#?7OWT; z%attSmgC_H1*!yd166)_bn_EMtVpy!x{TeKt?&x_343{4T9;_JJSpX2sOzeA!x{L4 z&&XINmjz$1EVoc%8B$3)lr2NZFnOMjA#w3&lnTHK zY z9Y&;`_`F^5U8EZDoo?0wLS*xuA53JAuND-cg>9J%<4YH^d19Z9+CjjOdFmx-0;)M} zk|y7<-@HWGX=IG#u#aF@uPJSk5HQ#94sYvJTPh@*j?yDZZAHO@M;cQP6&%JOptg32 zwz3SUPgq5w0g&qtuE9Vb?Y03Qn+Jo;XwtcgYE-84D7XaZ(Q%Uu^I5wX3TqV(+O8!V zycJyD^8viz#i3!{nYGf))}Hy4{r{xX~%Bb^Ii`9RSESd^|?f;QTyOz#R&Zrmn@g3%;`JBDech&TOt!;{pt|_sEf~bQ8IaTQ(nrZ4$=2nn!LLNdZUyE+;3SEE z7fR6)(~1c&$zenu8_Rnjk?GQT5H7Yd)RC29&oF?CAxH|AA7@25Y49W9#VuKmu$HLK1w3`D}ZFlsQ}B^ zU~QLbhe!((rg&L!ekh)RJm$Q%vCz@0i3%1;_WI@vUGs##fG5Lj*O}tse1h6#k&e0K zQ;HLAi@Kx2l}ZkX)YRu}6MpD5bhvbx?dE5k3EM6MwZR#JxsrmwQeXj$fl5K=FQFWv7?u*A zw3RobK5s;OhLq>5l1>aM&)F5_uA)0Xit4;3%~_^6QT`Xg{9MJrA%rzapH@$Z)8mo*Byd=cYj_0NQYS826?#C!YP3xaX@Fc>R(wzXCsmB!& zD@E|I7y6_@!!BWeFS@Z-6uh4?siiYdc-EY)>*l}wqxu&Eax0*e1f1K1==EH6)b>eQ(+gw|+wUkBCd@@ze z&Z~5~<}Q60gmE zxWYpVh8XwH!Z*tk%|R)9;=_4$_w=Ov@j6F`!2Di^+OxPSTQWnw#g@-9kxzvu+LhC! z+IFf0Vo)n-`2Dt)fK1baR7=SE<2Fb=i@)-q4^+$uewhb!*V~KC-vM8;t(Hg;eb3WN z_I%J`B0ObdW*B@q8oWT0sed@FPU(XuO+9?*G=qs!h6-V%)NKC~`~p((DH~8GQbBk& z7nu(A%P}As%+@3|N8u9HU_g^OSijm*di9PWDk|nqWYh&Y;oXAqt8`$6WXG#3Ksjid zAy`!f7>0N;_j3z^b|5F^N0R_=y+)}r6l_XGJL&7xB;JhccK=(EE(8}KH8i8gow88V z6k;qgRbg@)wI@X5q63DS`7?7C+GIeS$%OHPgRh!$re?{dubOM-O;5VuIj%Gz#!C5! z%f3>i?!s(c6cEeSN1Xe1mQT&S(XhKoGiu2|%7ExVOD#k}ozINw#=Cng`B+i59}aU;55cX|Xhx10 zmyJQ>SE|Eh8<>Eny7$B@Tqb3LC)%}*dPcH*?^ZrQi~cz;=9AfFmx$D%1JrEv&*Hf&F4s53o^h|<0~(+b6M-U zyupNQ0r4Ce;I=owjZSyNOmbTfkZE$8_N-2p100`Cq9@cjYf+?&E!D;Sq;t2sdEfM+ zy7+!-c*zVhrC;sHzFj}EWAhX}+Q5q~?c-UAbhfEF+fFt&yPeJM_PtVP-Q-DH zs7MypTc+(5`g4l0O-`*TryZd0e{p`ssohb}7W4cI$Jvo_?%dgYkZf*sx9@ki?rY#; z@%d;nSa3`Zh^uDatUOO=?-tWuy0}Q}2bTr>BFs~-6a>dPpW#7QrQB1m@Ia^6u!RRU z@31a9A4Gb`1mmid;0M2yg$MgU;y#c_@zR}&;E?qPba0=5>!ZevqVEY~kMQV;ktOIpJz|FkT z-7q(qH^Ye492)_h>--)(6%y37S;#j7NhElof^GukyFV|of^$z68A&*S=1n+rPw`b` zj2mi<_i-2QcQ^I9Ivme2d8DL>baFgQdMENpe&mWjY{iS&}lAPfqt zb#<6S)QaJ$;OlHO0SAcMARA_~uT#eW*Mn4rxGP`Ok!a z%By{3;>!o4p^zDd@F~nL#71*pMzeiqYa=m3G5_Cs5V;h(xT}=oUh;rGc}-b=V4Rrg zURL7F>?&}*NTJ}e%<|K-IYGwQ0GT8lPiiG&jG8j>W4sKl_~{8Cr6pVSGe-)xfN(v^ zaA3t2LytXCr&VoEyLd3rVI=iWFXFDY4qhqDEGV?so;kFn%|0|)^V#BtyMThUho$YR?qlOA- z$w1yoe%h`wUW~Q7?b-#l>3(Y>jciO;f(-W z>lP`@BHExq#J(OE6UMynFol>CV_>SL=~$3JsUW4h1`%6W>uLBVLA#{+pmz*Ib!kil8S?rPx} z)tI2?EcH!{ES>p~Wr=Y?fC_- z!lAPEB0E7F!}}^@Wjuj+N~6}vh!8_-cTy1oH9X+Z-)70(s)}`oYELDN?%DYi$*Do} z?c|WM@nV`X#QvzrKN+%MAUsf;-hl$ihB^9M0b5a}V%KrW@j+UM4uPCQp@mwmlJgEF zIWH~+$REvojwSrPitcML;*{2ut0R|@3`syiX^NA%Io7y~L>#+Q3KvM!I$WXPA3)#{ zO>O70jn7?HA{7oKwvHWH$NP7-I>4TF411W(ShC5KN}Ny$&}0fm`p1r`R-#KYtfdk}cB zStSU$8K0)TB(til4^hg6jGX*xlfhy%!r=%bkvlgUXy+Xu8S<+2jS56oj*zX0+F^Q$ zUJMA2R22Jw#?-8t&@hkMUi@I%1na(V__Uy;>Jao87Tc^ew6t`wQwhp~`3POCr8Fre zyrUK8wTVK{hJ&8Y1Ew3cJ28^fqbG}Q#H)Ea1O1I9V9?xnfR;n$jvuIgcaRa@>2BY@ zx?es?F76laHzdhvfneV7qm;nLvaK3ZrsGSd?5UxrNZvD^wjr5hvz4tgTC^M+=;<3o zFpiQ4_q{0@>V9j>r|z*V#?`T0H3Eb=f`-{QO&eCmFiKWFjo@Xb$@dPlfmLa0ZBA{) zFy(BAwHr8|krtfaKZ>rN1QmR$!}cyK+CdQ?1F_}F3T;0$9OHU=W^g0jJ?H>zDZ^rM za)Q+02_zL52wvC&CmHkl8;S_2x%q;KE=Sdq-|7z5&%%{rj*5;L)qQcM{SV(=cbi02c_;uwgm zVY|J;l&BH8UvoCIHE7MXKvaeSfXQq?iJys}q5g2n5wN@Gf!)T2Ilkr)2lwbt&Zj)) zFDT5LA}DYXNUj8UG(W+kFs~Ns+zQ9BX-Mu+Ovv|njgy4+!i&A8=n2|U85uNz@g3yi ztd;9>>xf=Kmb{oVidIE&0|7O`O?_;zrz5#wcS=~T3Su~3FM>WB{GBA2M2LtO(f1Q8 z<4CvL5=mm0K#F7uxZ&1`3bPs&Y&AzDivh*z#X}5{y4Z^OJj8!4PcAbO-ndd^(2Jp| zPy?p7hrnCZ#CtS!zeDESS)s`>)(6TgavF30<7;s?F~?*iv zZjAy88qUe09aI+)p#%h&ZQEjuJoE4xqHa1_Bca>d$#=Y(gicg(8H*wEJ;9GT+)$o< zr@&}Ww2efESk?-+kR;QWqlqLNbhE-KolJN`jxW8j$|Rlnv1y1=GRdx@zLXFl&I(Ea zmRihP0{S4~M+wXM__q37@2GQ)O2M6b-HsL$9nLAjA)}7!$acgBsVU-?shAI#1S%U2 z*O~FKN7UzjAR9Q_d9)L>lJfSRGhHc}1ZY?B4C&p5@n^X{lmiHTP&3S;afr z=$Jse68e+~qG6QG@npQtHua5{mWm4yNNINGTJECA8amWXqWFPWfeapxig#lmmf1|kjb)cE29@0m zg^8?ZKl*O{KKo}Vs812gj~U)BMf`sK85-#C+yz>`L1M^9=<9I!o6x2{xOQfTlYRVg+$}-&C#=U^{`|t=qEUA~*&P@IexmOc=0CsJ- z?s}9&u(*Upcv`dhoT0-mZKx^&qoZtivYXUcdm?OrQ+8upB>wRl(e?^>BldzAEbRpE z3K>UX+hO<3#+-sw3uQ7H0}<(K+h>DaACLeMpd8H|8awpl`S)**;P{>9h++r|=)E*+ zCxhHA&k^SBQa(M|e}Pm8M{WR$igRVlg!Ex(GB!d}Lf8w)2ALFRcpn1QnW88*56*=+ z4qg~+LpSotVrYOKlR>Uih#Wmm7LUmlJ+~zJWfs+7c#yw=a*Q2MenMK6WX5&4ja9IG z{Esi6+x<*0rgx^k=~H_&yxl%J8yk1;ZYTd?Xq9{Xx3f)u&1Z9S6PVt6o$Y&D<}p~$ zb+$LQI{%Su-0m>qA4Awf(&zsG@LOKaoaoOnpwIhhtR;Uq9FTRY4+E|DcukQ~(45u# zAagW#^Hv9sYI1NfB^%cDTlqjsuYP<*h)Nr2fw2M0(cs#DiR3C=xKGj%Su8!7OfOMo z4p+c`!r0!-C&TH;&}yV)dUp8a;KiE*tUt&MZ8t2~=L^N?ob!cjz@J*{!{itH0~ckL zlQque?GHI{JiU2(N`<|Ah_+~tEm~|D|AF+NA0GOdI#+p|Ua$lj?W@^@yim}xd`59s ze!<7t&q?WHcDuI6p$VuIvyryClrlV83Pcfg^QEpUkaH=H$7vY%KozlSbN`W=OgJ3A z9x#6BvH2~!iee64z-YlZBj@S!i7+t~8%WFT+Y;jkyXG}Wa9EznOEBGUOC-{z%tkR| zrB&jz<9>xFv_+iH)35OGD|0gjQ(f&X0HPUgvSu z8uT$?V6@KHubyD4pLosJAgTa>iPe04@L%5_zCL(bQTGr;gORFO_wf0vXNQ$lzsoOT z6{+fXhd)+U{1(DER8-tY3u3+`>Kf5)EDk_^x1+gT5A|rnK^2yO(UmXM$L|3XU9N07_7;_U6q%2v48lRI{*$Q+NI>dB3^u8oS6r>%d_Bld z^Lepr@u99&)#Eql-)tvm>ny4AN3V*FBUe$Sfyy5(qH3bv8G&IU)HtI}o&} z2;Ud56;}#Pg9TKuir&f!BPs&aD~wAwus@$e9EFM=VP10pBtYB0^U&1HC@SbKhO!qC zvoo70{04htKrU?UI|yd^{g|T&>HbP2Jb)6>@bIm!PSEXzGij_PHjOAA8}K)E-pLR$ zN}^Y>fu{LIzAT9!bqK>4>Ib!uNQVOMXU)6mdia)qd9MWFdL{T_Ekf2qDesA2h~o3O zBIdVWz!LpEube!tX-XRkyjCOeNNM+y9@I4X4=?F!P3U`Eo}X*Mjm*=Q-|jU`#JyD0 z2Rx@;$0r|J|J(`%Kdk;hiyS|szM`2wV*VnJ{Gk4A<&T*^w{g?@xi34tasQwJ zo#u{$i`3WTyg&B2Pm)FImMh7EOT}wd0t!@jb*)N%lACK*I+@IR{n^k8O_o>s=ckLL zk-&d0ltxKe5ysQ79<#pgLOV1OkeV5I1YfH}%e6H5_a(Z5Un=_&UEyCQx`KabA|V#; zezph;JHH3N{_W7KetW08b+_aLx-80!)ZE(Xb~fYg@`6?Xd(h4kuS6Ea%2RJyfEnxZ z{=m0Y2X{}p&wv(glmy>V-&fV>UBFkS-R%e0GQqe#2!+O;9=tyM%fZv+yVozDC$A6w za`*<4~iA%dZ?ELY4iVC#!x*cZpJ4|NQSTJ+uj zV$t`-qVJ1EU;H{rzL@m==AXFzUw*57EVuvb+`V_N6Waf6Zf<@AXPaTqb2mA_u)Qi-$~I@hrE$RoxcJD<(i<9Ct7;kPu|=-eyEZTh#g+}OIxawGp@ zcJamR;!~SlJosXE@x|=oi`m6B%q~3r|LuqV!OwF2f3kCT8}i;=rRqus!L|p;)Qa_A010LP3~oLnIb{6Z}-Q5Q@TF3+_$Oht+K4Yj<<}3ttY3fPBR`P3mC+}b{Dn$lmyl__!OeXY3X$#YnKJZh;0PUy_J}NG} zyp#$FBpCTUp)mXq(w_v0#F9h)Tsi`9{cVo)WC;WDIS8YC{Vs4pXp1k#AmJgGH@sME&U%oJk%a(CmRL26q?<=PmT5_*;`}<4%gdDR zPliL&C_X?{Wu(TE4sy(JMo2#@^x0t4G7q z*2u8?pa{kB(i)m~*?2%ANLu3e`3&t6Bvq3nw_H`roisr2P4YaTmPd;@ZkNi$&12bf z^2gOu@o1^4LS{>UUStL6&-ap(bXa8N26+ef@M?#&*>($~o%b}MAdQyVoQbK5XKFg4DlwQwTQ*1U1FkKRmssonCuMOU>j{_JIbCbnw_=eoi+TiwSm=fC7P=%ruBEp z!(`)PaDQV1Tmu^Kl1F>ycVZ`87+yMyT<_cVrsmwH#@} zJXs|LP%SaUagh%)wrc`pZk8I1kuu8fEA14uCddRL+m*9n2?P_n=03_}0HYsC79f-<|KDyjkCLaC)4d!qON9 zrCjY*(il1e1vIs za#&=lcCk1%RSFMc&QtBbH+Qzpe>=4$?R4$}2$%&oH*nTXUS#wBWX!ffZNr|z7M_DY zId2kLb=hUgiUM;Fx`|vdo*fv|ZI8!W|M-xq7BLEwauq^CVbNgf%QYv1clT#mBZ#L1 zN+7(QrEEwD#3=zeCC~C=-bN`*<76>TFwQdI2Wh3rSCiL_5GEH8U4R<`q1bHR2(O)Q zz6tM+CSMv3fqSdD8@yE5-4tW=PDOx@FhiBaF{9Z{c_gFTQ*g?sx?L=s z4uQzN#8a;jg4`9LhMjW~&E6=zFwnTu*)&a*-kLWIx})@6rmNJGdaOckhyfEo6TA_9 z56+SF9#_CG16FH`Y0`iz3vLlW<6o(Y-`HQ!%|ksN|AIjEG&G`CSHmyQPPf)jjjii9 z;LZvPnemt=&9vyaLd$As-94lu;5i<8byulQOex*xpOPU~!24%Bu;h?h637<37-b1W z;#lEnd2OsGV;msw)3G`JGQF{U*+_=wrt`-!biMI6TK$G~hT;l{z%MQ~FRQw;r~`W{ zn8F8dfu6{tS6A?K7ReaZ-vqm4@tB`z5~)OTwK!|~bW#*K$+BsA*OK)8B!|?~(@V9t z^GQ-zYi65C_sl$ ztw6ZgV`{qNR|Is_GXEOFqm{UGz9%*e!J5YC*now5WXm@S#-wXG;HCvSGyz&5ebwx0UEsNrc+37{#UEb1wSzhk8Ry-WmRS9vQWQuckmnflga81T|GK3lM}YdhH=Ljvb6?jYCa zJIY)6=jjkkva!WL+Lxz7kanNC{7FA~IR#x5y<8^5E%RmVn=q|BT_NK{H2Yth!&e2tLC9*Y^y|xsDr))gVhRNdw^w~oaau3>RCcpAKWB>;h(x7~Nmd)~cNqUrm^UBnq z7b`Y7>7jsdFY%f!OI66r#tv+c?ChkN8>M;UeniQ6Au=2Jpi4A(Q-gTelL2J3gd;@Z zj;vD$wkwy*tW(?lv)$-oYnl_>ZVbC_W2y;42;20gVFrBDHCKJs?Bq>9 zOmCTWo-SY)+<+pSResY^s)g2looLuZbZFa$HCw4zRD|woc^ZNd3pguR!r+w0uJdjK z$L1b1E$9ik-4}rMF7DFJz8e-7u_OMmZ%Gbn=F(5PUH&OA8+|Rs!z*YRN&+V*nUu_QKU-6By8m>RNW+y@WE33Ch9wU8?~ zL6zY#04~5eID3z1d!CQLJOE0c4Aax3E?w8rPtz z%#H~Vn^^$b9Yz4%G9HLwJb=jr;l#@{Oy;skh=^pLmm{VcM+--}45T_ZuHi)p4;8BkJrLaJIDQO7Tm(%nrP{um%#s53dWJ@a zg$Q~<*utLiAk4*$N_mf224(f&j_gVb`O}|_2S|A(=RkQt$;m7?IL8@u%+Ms7)g;jL zEf8tA1+WoI$TZQPX(~-3;YBcwx3a$z8jWV^=(JBwsKrRM4<@MO41pZYj$$&axHg+h zX)Ria-w!!;Z4^>LOv&0Tr==FNq2~M^H;z+-;>}Z_Yrq>}*d8y2LwEv1QUs~_^()jC zB1wzVpgwG>XOs0W%EcztY^+)<`C6g_C+Fk%a=K>hDw;xiMd@v@tb4(O)z831!luo# zA@}cwdtph%<#Zx9GoM|e4EV+59PR!gyeUe8kIg2+kMCbUBMJm`XrB5Dmrkd{OS9A9 z8}Odi-EM%4&Ys)w;|kDeF-(u79|ScQL}@gUEDvyTBK7J~DIJf(F|*U`7P} zH1UpUoK1@P)uoC{!yt~LX1Ptg%iPY8Yg|tw*T=#3aFNn3HJbYBf)Nte8n4HGqVOEAn@fjCcRe<-8 z@K%!9(Fs>bjVDPM&8)SXwA$0%SQXgKB=M@K3XWEpriRN+9O^I4!LLQunMLpZF+`x< zQ#!(b0w53(fmTa=((N85AGr$G8(+8(6&v|kmtv5eq>JIa=V%x##Z7^Im_k!>ktH?Q z?3z4<34sM@%|3zA!V|d;i|NoHDV#&&&1KOB0^@wpXeR%Y)b7-pR)pm5i#JdNFQ4Xc zM^C>r_yA+9%U@-1`z;1fe-D0?lW{9K&rqRYPCS?ypzc5_0Urr;hy6SzW(k> z(z&;F--SGMejenTJNII>k0;~x{Wnhz4_zx{E$gDzw;jJL>w%P#+Er&xpny|`tSFx4 zRL)KA?lSwv7=y83AOg}{>%N)u{K*s5Z9~4@i6Zvjb4kVgH{R#Mab-w>BW-G zuAussd{AjnF{n3qv)Cc<46f>4Es)>`x1EXFO@0fjh)`q+8t8>im~ITwMnzNjuA(8^ z2#xMUM)lBkQcZ_)3T&Qs;G1vUui>Ph4&m2TP2fL-M%;l`SF9|lf+zrenktk9%)#-9 z4B71F{=XA2=0dch32%7tD;pkl$s!dQ*Ol_}R7)u=O%{v;smYij8lO!h`q&yRQD)dH z%Cam8h!%M1=BT)r26#TpN&YrP!i4ZekL_}FZWH*h@pJDuA7hg(lBlkDEg8sWdmmxT zRQ#o1mKuANt%`V@9MTd5d}rXnJ?6IEjyvpakvE}@kS>!8m*rm2MS%YEfgLPT<0n#% zq-ZoK0F)Cbx*{_K$&b%v1P7X$X6xMwX!QZrn?X>jJdFyVzxHIH?DE-E^`Pg3z_LvK zV?fn%Lkx)_p+Kb+Tf}&Ybu@|}qWZo>Bjk!gX@-(hnb{dw&XUJKC_?n%;Sz5>Dr0uS zIa2a7TSVRfS=5*cm2isE>y$({%RT?X(o6jG!lEfUr0Su@RfyMjzEg&c)^mc5v#sky zw3@+{+er!jv|2f?%apTdr{Zam%`}I{cs(*wEFDI- zWP%iv>S@|@N;5>%I9s+b3fc#$*K~8HFQxgiuGk7phR4^@bB4_XN^W0KQ}S4H#?n<| zifKS^!!0T_g9c})u4E*;=@hR3kD#wwWIf78*;mW)1hT5er$;F340t%WL%LY1fvY%5 zr?iMaL#3Z-5kX0$;3$AUX&GU@4$2Fu<;?NDZb9F~J(KWoRtIBgHvlrncEd1-^XFs_ z8YaTJPJD_Q9o49Y_0K0r?6auw^X2r>u_nR*Q4f-6=m{65=K173NAgkeaqI$djQO$E z&`#6-yY$rX4`YszB++${@AC=ea?qUnGMamLI(L)KeaKx>N-*Fg2ZzI9cA5?yk?%aV zfs&X;lNj7{eVC>@JKe3#?uHKK{#||n>KUQ;w24*Ae=2F>!Y=N5U2K>+m|nJ27m$vG z&TW>|ExM|cCf1Sp|v-#bjF&$BM?)>27azw|9I<=(4D#(QA>I1#L3U z6JRF6&dR_Wi9H(p`UGl za)IdMoqtK8<(K*r0PbHWg_eclNb;=TCg9v}mORUz*{wUBEj+UwKk8i=Iu261=ByRGb5jM=K-CE~djYr(|Z-4w(wmB!YoAoV8D4cJ#d&G9;R%@lR-n&7c-zSh2C! zQj-`{bR%9j9KLoWPqo}NBJ3vf7ybF(7w^qb7Z!0|tLm>(qvMED}Nfp*LQ`n6(lj2&!32bh!X z;T>qdqAmEmnP=0a(P?&_n5JgU%xBofl^<$j)3kx-9oMov7TnT0#quiV5Vr}BEvA^W z#4j%>HZfx(LJELlQy3yqHBZhhZwi6IIKDT7Vc0uN%B{cuPPTL(b1@DtTSQc4yu%zi zg@QArh3qjdR$yq&mRl%Xq7p;M5KVF~k!jaLIH+;?cDqf!ng}ge(>$_$mE>ot3w&4C zodnab>Y*-OU~MOQT{@guP_%ii$ea*f!@WcYRrF~XvrBd{Sj9wlV{R0D)-Coq$fueFG|DL6jFQX-N6P%+umsQF4rd8w+p(GDzM~p{z7R`{-bh zI7e@H%To*&2SU`@C7DtBRq>$4)UyyK#Lx&}B4zJ>fBtTL%vidBlPi~eK1;_1a-Y-L zWIpLnhDjr9pSF`fA054F+KEA_5g4}V-sp%KY+Vj1Wx7U?^z*ga<#wo<+5rCAtj^`% zv#ykBY_`p?kFXeefEzfYNR3v^D5l~RKM_W-;5-c6fEn3K!S!@%L+dm16OF{yl{Ca| zk+eh~4h&D(8RTS~dy_^iH>V7?I%138(8I?DlOk4>h1{!MT>iZVj~+jg?7zIBWHy6< zkQaVCro-b*B$IZ|TV}6MVuOGIkMg3xjq`xUyg<`9+su&${c)BGPK`V<#|cw7FY@9H zXs>gSltXx`0-&r#yJnA-pexhX+-sakd!+er-_d=Mx05z*GUM5R_W`8sg>ztF^mLYv zM%lokMo`n7!}_#zccP>+qyZ?UCqw&YF+>vvfXd>wGeMC+#4P$>%gEa0#{PXYs-taHs>Icp-~yN=O)XX-)}>K?k8RH^Bun zFOHi5p$f&KRd$h<5de}sot?5w)NP7PML8?bB`8D^-PK-eur7eqyp5Fc$Sq!XoD`eM z!V!}p#P0#+oH)zY*+0?l0<9CS3M*!40r?C{Q)VNM^T7bz6s?b=YvU9wLWyZ2RHa-M zBf}scCDniz!J-QXOwBk~7d~8!1MVrjK*UXw#@~WPI)kMq+pQv8oalB}If#VX7rfr2 zB|QlA24!@G%QV+1@(!Oa9Y&x**3f6+MXp{ylE)gI^CHJHkMZo_-f+q`1L2fjT3`j* z&T>Qusuk7|qIQID5qBF+X7m8mB~nr?jJu`H`iv(f{77<72-D0Eak?4UG;u_i261HPk|3T(YvI*ENZUuWj3Nw>n0ph)0uWi)8*v@rj+U-t(IVJ-9bz(2 zAEz_(Z>C=wZ9CE+UbeQ$qieQ=NW{OCA|K>=oUQ@T6y4ZNs#?@|WlNl4n~>`Jd@^LT z>5!|TwlR~Vn&ZJxOy#`Kp-_q>BvE%^3KFjqjo@F4l^;c9SmL78bnIZ!7DK-?P@SD+ z!>O6g<+y(~n~d|n3wg)5*x6K()eE>RPt?03BCl>zH z-SzS$F_bP-DgMBK1lROA$Hhe9o4U-1+lwzzX-#ICpCTwVgu*DdYdG<4)FS_Ti2 z4-zvHJi#$Q2*_D5csW^+OoP+W2ka3NJbG3xj2}**5VMN#6q{YB#0M4kI;ihS4rXy2 zj2SNv@c1Tj#!Bt%ihi3Gd7s1}(u{E9sTOv?YyfodhC~L3FZcksqoD`nF14l(7)c8J zNiQYH!L`~Uieb)HDtQ0EJ!R@gj+yPq;Gb+J#2_)hR^&(a=0Jlr5X|L;v;{7hdfY5e z5OE@cgsH4Vh*;P>@_D?{bY#BG<(8|rmd2#gfHcTs60-$ep2#FH#`h_nYsl|Oa?efS zK|yI8bg08rsBtaJnQ~QLlvNQ<9hgnH^aWJMyvu_&OT}Tw?U==<9)V#p9#c+lkCX5y zaS{6>X2$*Eh6G`B} z;VeI0%rZ$b$+`3HmC={kOalhCsO-B zA5SJjG=&7K58KeX3tX{_w%nM@(rOA686q_r>?dbH((E6wNz;6qHQR#Re$6?Pr6$B3 z3h2%pZxi3w4lu|M60hP_ckDnZWyvIDdkU{XyTlnjSPS*i+{zWijObu;b>6AA+15+e zdlB2SX23d?termOa#|Bs>*eDyT7035uum7K95iYOO&)UCStpshV+?c^XUvYUbEhq)2~ z4p}@(bE3iLeL7rZAZb2LXJ+69%Wf{wD}S9`sF4s89VNUBSS&Zj$6lyi4AaoCWB}@M z$oWOC$Y6Y)3}sPd?Q)ywDizi?G}+1AG5>hluZUetM>T#ByV7C79>!6cTgVb23Td^in7sPHB-y_TRBMkj03{cG!+COoOG_oVI|nlb>aK3Hd@3-u zhu8WwkH%GpL(j!I5(Yi53Rkn1{BS0sE_-kwCKw1O3PmlVd$=?4dMO_&YR384L7me~ zXto(>;3i|7i6QLyB!OQyU$u@gSQYAj7s%8M^@-&8&R)VIV+NRI*2wYR=wPZ2kV6A# z6weA8XbM#-UW6Zvyf1n@)dmN8bG&unD%b)LJJAwm-6|iOg2V^j1MLr8&VRjC=)EzfzoPS&cx5YUkpH51KEqKpD7! zCV!T_w&H`-swVqj30ig@TO%4yO+=15tTqgUpiyc{sgm!u(>H=)wE=d1K?YI*utby0^BoNmKYMl6jAl;VUMo$r+fWkeg zN!vB#N-$MN-p80OIg`I;K`~Ux{f+xeZ(|)t@S5zP6F6Lx=c5W=SiAqrtQ`Z*XW{IY zuu~e+b&zk5YvMu`WMLIWII9Rpd~OOK zAv0O`))J1!I5|;<<(8VKt7gEME`axLLT&)mKrU7}@|uy090{i)_bZ863~(CCtY?rk zG#M+6$)W1T8TJq=Ut}Gn7AV(O_saXW{*i*>Oj%9=9UtVd18yQfki5; z^nvIya2qa6XG71tOz2|MgR{sb$6;uqA&NR@8y8V%va|$ZiRf*4g3cygq2aAYo^`a& z@Q95Ot*uxKN%6|r01hOo8<9Mj$jQ32tGnZ)=2<&A`!t$r-2MtRTWm=x9!L@2eAbi_ zR3)g6JNR+``KxCKZ<3eaC9eQ$A}G|b&J?Op(++LZCD}q@k}FhsG4uWa32G;qI5DBm^U(c_o~Kr-9Y|U&3JcrM`s0_!kU=k$;JU5sQPdvn&qA?>w@F#D72lGh6&A`dA+S zq0`xdTku|I`|id)Q_#RpXY=mXy)W?}KF3GLe-IeJ=nwazG1z{$(H}Yw9z3{t2nfVS z%+^tuLXH=1P=f?gOKfCw^Uw*DIp`w3w_(yH(T2g~uE_&yWqHDVVWp?pEQc_5{?kLo zL}>JgZ2<}nAuk3aygH-L}DXi2J8$>mI1@DQSY1yz9hX z?hog|V>h8U+0T{l!ZEv?DCvBz7j?haAEfh?I+IO-FNU_%-wXa>xpMm>&*a^Bgq}M7 zFZ*&rcZ?g98!fc77=>^AF^fc=hW%8h1TnDH1B3P4{*uD3Majx6Z%|mNHPvPc&Ayr~ zT5ED6Cjw2<#LXJmD)pA;>zGQj zk@*1o=4kZ_akx@He7EfFLG`OAHkLjl-eG#rz`ZK6Kld?rb}{zC>wG^ZwIkG8mH5$4 zqiBjJ7aO<>oFHREN7~;9=igRx!Fm?@6v_XDE#SLf%F9vcdbNYsuL^J3z*4|986Yw3 zq-Hmp-K3U4v)qtfv1kK7WW(V)Mf@LUWSODcam^gKHdd&z|Gr{@)s9PR&@V8>Fp=e3MB2~J=_EA?syXYHcjo=-$ue6gWU{bVtpF6NTzf$v81fZfIn zXnu>|+JxKSmGwqAf!gxZzIL{74y+;IFohiFKY+{_=>kk6r=LLP;Q0(94A{iT1k>h$ zf@w9pV`z&9m<|k4U@#E%c&wY^<a zZz#39_qz&4tfKgC-b*$%fc@;~(LhW0lVh+rH7BYlx3KdW!Wk?RIx#XGy$UafU=X(+_zoF!Uwj zZBXiqsPA7#)F(h35%k^rY=XYKzXw6zjvK^A2L`dd)$Ke8v^C`meiw1Mz18Y?>|&_L z;7E{J+}U^l?E@y;>27J%^OVr5#lXltB3L|Oi2zV!Y&*~cbC$Lv3i~NWRTGXNH`E`Q z*F+F13d3A)JIRK*-Zp)u6s>QJT8`sW+nV6ho%_L}5nELY(S0qBH*I?xaNTX~baytd zmbU&*g{{BCPbmNW1mS@l1|b=e+LVUi)!;l3`2bRGLV|lTYpmsinz$!a z$bZlPnOZ!2O4LRQ+o*w^rMXp(3ZLRaPDDc?d9Dfuu|vQ|*hVn!#kf{Xhr8fmxeKW< zW{YQx7DN#W#Gr@@LxEx_R0>jwjZDQ3tPvYPO}NZG3jEPaID;g#^!?Fy_eJj2lD@Qw zx`c}pYkVET$GY?nthE|JrdU+JeEPDREJj5(|2r|b4!o|=1~46Jpyuh(Q|gOM3Wk?% z@k9z6DhiTP?Ex1-vJM?wxCwaA&4`vE2|v+6SfYugxYt%ol-k}Gi`>4IeKX^n3U%xt zidDC=!g-k1D2kSP&~zG)(j2I(7aR*s*;l58j9MDlA4jXZpc~g{qe{slGFvWAGB_4! zXT(%e_*K%aBzn5wLp3u@{0!owPG+EePkz9Z#BLY?Ziwtz}f9Rj#oX)(F*Hr5b;-z#7+m={`E9 z7=PU~Um+r>eegossnC=8?X+AwEo`S%YNu-Hue0`eO_h{FWj$QQ*(AV_bx~-rT=ej% zE@v*6%5tv{z6**LONzd6Wj(P+Q1;-((c#fwgR*&6ZkfvFM~4ThW!4!+TYmBU=;i-A zcu^`GZJG<~rsMiYD*f^Z#pekokOH8BzYe0{*Ndi}R7qQDd%m)X>!~&U>3seA;J>~< ze0^Z|)+#)Md4GNQ{MEBVT`sN)eTb^WM~0w9)c3*K(C-d^G@ad~wQH+I{fVUsC^3f8 zI1j5zYsyvR3VEhjVnAzCL%>P719Agi%+gUQ_mpb~A+ug>k9BvVq+p()|bo zXsHAWn9d-Gu)%6Ln)%sma(Xsli`w(E38*=Ke1$p&twO#^gM7;hWNhFs619_j#NL-x zr$IWEh^{%-(0Qc_HE1u?PGe)NDzy38KVD<)0Lc13rUpif{w$|j&ZP>$TW+DF!18@8DMz7Ut8uoKClhhLEOh^9l&JiZp5Blk%$W(+1oT@tlQT2K(VNDQE zJbiDtbIPne1`ibM#)cW7_;5g1*h8==;1D{}!j1saZ~HpN`IzLghiJk7v)6=lFd!rg~ z4 zTODbnx`CjiY9z-zID=k60rXWHKm;?Tt(pqTtClWC!`?J^WNPJTsGy$6e9+SpV6`Xq zjh>Bt7}*hNrwpvR9UoTw5~@+P1i`@Ki=&>ZR)F2XNy9!aTNtmPYQPXxz5Z-?a^=cO zL8$xBPikBqh%Ovn3I!LI&Gpf2i3z{L8~W1{yqZ7U0*b~k&)fHZw-n8n&rLo7{r4%% z|E{9{l6yPo|81zg?YkSBNdIl`Y=5EuKF23Q|B?A$Cwk~VDFG;U1E|?xVG~e3pm##n z_#}nE*N1bPohJV~(JEm5Lh8H4ROGd!cw#yc9zM&*?_8!{=^&>VsOKpK=>}~>So^Eh z&nf6uyAWO%p8ylf`A0F%X!G(@z}V9BZ&r^|93P8n5?g@C-X%*%TD3z@5~(d#+JauY?5ziz=}p0QTGr8&GrY& zlif=ZSlcHc6$e~`A#h13Y(uYFET`gscLROu;Zu~UEynrJi_Ejb_{orX7xUyT1ntT$ zlD$=DgQ1kySZ0s@jKS;nYp@U<7i3w$rW)yB;8|+8(oTiQMNh!WD_V9H3_F~;=t+Lc zD$;)>l}X@s*##9PgatCbyTbpg1P~! z7qjIK^4s*M31`>^#FOZ2Y_@wbr=)`t_PC;~bZ!u|VLvZN$CIHmqE@OPYErLuVIT4m zuWGC1i@Alv(PEC8{r+M$10g}z21-Ur_AV;QZB`a8L_%)PgqPShOtBsYz$-NZZA>tU zr)Zil=JJjMV(0U6gWMkr)w^~`&cc#y{I3|8L4WBfo;KQ?9zWO>ixO6iNjYxdpX@q5 zO5bHYSvbE1Tt_I=w<{`R*-IKHi!nOTLkimr)E|&wqA6f!m+Q)s{yOX>2a^+dWycXt zjc1UM^;RRyy{cu8T=ozin4RlJuyA^cdYAhsG*|*m?Pkw>Gdn!g?Wiq?1}pX%|bio%dTI@ zJi-1*+}3d2HkvdJ7xw^@{EE#@7?2$^WS|JyAR*3=0ig=^RABU6QrD+8E6Vv~_7200 z8hn|bTuOl6ba*|By)WtqUY4HxN+f=3|4ne+7scR^&5Cpnq86WisepjTQA5RhiZAi*O`egQdN^IsD zj-r1@C2m2_uLdo4Q}R+wW_`BUlNM~sF5GT%Tf;#77|j=~yfG~Bv6tEhaHlkY(S2Rz zcGCEEF?R`rRI}I+xCX(=Yd2*bAY%8}PSV;u(KK4gIr){@{OOW(i%_#oG?oy?l%&|4 z`W91id`pRf;eZFJf;mMlSuzgXqNbAWg9G}zDAyD++}ie9Y9H1`tWJZ?Y0E@aHh2j_ z!P%JvjE*x5cWk~(hJ{5T$!pNiQ<|PIv^AXboeOdgx1S%Mofq4~Sp<(4)}t*yNxmu{ zkvRbAadyhbgKU9WxMHyO2y7Qqq#`Ye%6L>IR62axb>s|%I9HTnDZd$7lH*@En7VU{ zawDKZC^DgJCy*2aFBgLN)fGG3!%|W%T+X7H^m8A3v+{KkSaRoR3JPmqKF#$-5#vIx#?D}u`J7`Q<@44RN~pI41{VnhH$r( z3ZaX0N`xo~2;#W2cOT(4!(gkax?Ljt8sNKFzC}9eOYmLNsKJKUN~zD7xRwL@Ne)xTa80tX8 zkpSv&j^ET4pJdAA1AyNU&y0FLsEdn7PUcccVBB{KxH|Hr|40>`q;u6R(Ip7X0$fWdYnr|9oJWng2;@cOWEO zSi=g?()*Tt&!-{ro?Jm28?qSBBj3l4&K6qO-Yr53Gy7m4BRQ>GO-Z7!18*waBtfe+#9&Ch?ok-w`Uh&b%jX-h(|!TGPVWjwTOI%7c49=WEYY7 z1FvPZgnQwlV*8q7gXUb;Ix0w+Xb+wpJU@7G)Jpb`j-DO9IYQKGz+XAaYS|-<53CVa4!m)x=FneK_W=vOlJkB6~cQFqCsFe_QJvS zB!>qPzI#o8TZT(ZS~rKS-VT}%TmLsP=8-k_qCM{YSjbW;WEfG*?MZIG-G|S!x z>0aXsd}&jjS92kDlZMkAt%=AH0@YB#xrHl{M02PBYLL?pp*M>mR*(voKoqS66GPd! z6eyZlSu@z_J(8@8F&y2LvX((Bt;(BE~bm&u%KpKA68vR zs{~z|d%pj!;Cz~Zpz$?OI!NxM*ak%fu{qbdADAt?-Jge66)a1lm@T-^HjV>Mae$MP zakQWj{54r;HVTz)2`Jq#0VuLrR*-!>na?L9a8-ed(zea<2`$o*&SvjnVPO4F7wK$( z+w&7>b8B|M*{sHyZQq)=O%@mH(`EG%8ovLNH9N3F!3cavTyqF;KD)HvljNkBGtg5T zSlsk4B8G$^okGmUVf>Rj}(9tep%F=4lY$TrH@#f^94ixogpu zxS%w(d&ve~hA&XV3iXlW1K23kfnnL2Ma1W4kTyJ&6RZhX74DcxKp(EX8XwZMC+;sj zc9G|lV31Qx7aXHghZnx5J=JFqr_lSD zbL(OYhD4w=wdd;QvKZdKy==xjV(~I;z;>zevx^GAmvwkc$zmZ)?BUI;m*1YM5*5`_q!7zSuCSw`0#%wr8 z&U`Hjn&-m_rYBrXE%8^Qw1TyyaZK6IYIGsgcxoX57piqJzRh0p(_1`!Psk9WQ1K|B zKs#J7F_^&Gg^$i`8!X)7c1C7UGeF?=qOLKSH;{+xrnPR@d+2psnB&Z2c8tQS1@~tA z;PDZ#*L7>w?AWktjzIv@fYbSbv~W<+Swo5e0)iRV&YTMR3bY%ySXZ0`eIYrGHzz^D zKfSf$)CNjhf5JH9?rBbe$4M%HtiLd~hA~RMwg>xbKqO>9(xA=8j_3&jEzstsDG|oOm^eqe@sQkh22ed|&X3V_sG{yQ8Udg+Qp8Ae8l16Hu+(6uf@WA!ey+1*RN zg1_s@5Vg5n@^}bj(n|7cG3$2=`34p--3t6QDCUq=L%!pi2DF5i{I3wTz{>2K@ zY0SxvPoRcb=|fc8^J?Qr8sZb$s6B;lP};6Sh1HtY7z8`sym7~y(D4CXtRK*8gORWz zI2{sv^5=sm|L={`ROKg0z$8NN03csGJ2Dyw>=dA>Moj`*CZoJSTvluDDv`|k`g(F` zdpGULQa&Harhem_L4g6oDCX-x|*yahx4k)r_Er-r!O zwKXZiuA@;YyDtk+fom1)7%pTgN+O&G@S=JR_2SjO~$K?UQi;{ zGceF2L?g0bD-%X_<4H+Ytn5ZCG{0{py%sP#z*(Ei0HmwpQQP20{F9q$S^%eUu$&mI z$dmWH3?OLznzg;AvIO>%*VwV?lJ>rkZ5Nvn7U0N|pw_o`nH4p(`<*RH@5Yl_q+ZXV z3Pp}^I10nCS$TF{OBD=d!nkg1$ymO{uQWu*1(pF2O=8YKRq6Lo614cZwJV$+3Kkr_ z?hAV}yvC=czzTv9upIQR-KuT zL1El&g#F{a&f@#zSBS#~#oU+*p6==&|G2t(XDx`TD7QF>1i->$lmjILW*Yr;G{pEl zT%>3rz5&-1_YOpP{rSRBnnV^YSS?|%emv>YiMZ-guyJhakOHN&vj*4WELy$KV7Zq8iTe|c5VE^g!gJuf{0CPG_&L&fq zz<>iCnA%~yGz6psWlblBf-`K0VFSUQ84Qgew3QkOg{JXj;d&TdZ!#ioPeEL}KA4-CO{*KWH912kL$E*mH&uckmF<2R|ZG&9?Kie0!ZjFkAmu4|590Gs8fYZrrMOhF+_9rH1kebUpAGWakq&M>x4_?d%r3Hd#YWDC10%wRwG0+tFAI-b?uXIy+H65B#66g5MC{ z^{L;$Gjnneyrq8uc0vA6N)_y$?a$}$z5S;Ly)mpen9rIkUN`yum?YOd$&m_2|7id9 zQS#=m&%b^7?2QCXt7Xc0s@7%Zh5547=6xVFyr`-hsBG2xSREqE|2+Ka>B}cae|>e( zZa*Tyt`)F1-2jxq1P($5Fvj;TV+E;1YOL-xEQvW>=CaPJ`$v;v?FzSQv=~5!-&SVFq4}NLNt` z=T8Ba?1hYZ-5_JUzR`PO!dLH*)b!S(DdV90B&4Au#Sw0)lZ0G-a?dG?=bSF)6N9ev zJ`!|&p!MxC%%t;y>x0^}X<*8upffWZ+QGUPkceY+Y*=PAOj@MZiN3iE&nNKpLPC{)nNv9X@F^!Did*dlfk?;qQ7t z?o(tQ{AMVr;pCLQ8_)(ZjG`{!Ed1jiPO7Ta)&}QoR7i85=S4x`&ruZ$+!8eKPw;5G z1N1Xn5eY#*TVTZNjEt|*p&4RMDAlfo)4(_hArQ^INQWf=&mu5fOiB3^aJn_9h{#D^ zjA+=Zz=zb6_M;c5TH)8z0ddH(&IqvYFzIKee3Rh$ zMt};CJ{@+6egH84gMrnng?e9?L>|-Ou9!VnicO~CkqSPoFsep#3eQz}TzqN({{zJT za^rCYaJZ{G{cZXl5Ty%G)DR>=Q4i(YpRDsMx>=2{ME3)S{Y&Y6;ulB=<1#4`LAcql z3Wh%yf(4dS!tPTQGD1_9V8hfMp6^-t;K+++4ua~vp;C=!$tGoN$ zomaKLN~Z+Rd|t+uz^r#2*9vci#ADMtQ2%JAq_F8J2NR@FtjL_qC=#@zkSlpj;!@i_ zgu+(bu&T$YgNEij%s2uA11}Dn%}SzXA2=VDkd^L)5n=oA$li&%oFs;M{T`UN1X$SQ z>A{m{`>)AUq0&u-$RBrK@nK*l8G+t1#lT8EDjjek@6NKoAL7IveQWjzynQ1F>$}UQ zfB3)pYBHu6^mB173PQUiHifAtDu_3SZ~(7EWWuvWpc`}(5vN&Fj6UaudBqxL`m^R2 zz>iuvE4xEee%C{=bxHCVevo$QtIJCp1jwnOYv-g*3UA*Z9Nd5<0N=&Lar}*Us7@*( zR#ZnC`PM+R>}H@@O7vZR^!o70|LZ2iBEn+OB0QGGz&B`+01@;IM+tJ|A@i6VA0=li zrgN|(1r8am5{NQn>R206XvaolK|A04#ACh0Y{-U~CkGnTB!f?HdsWO*$-H+#J)fin zvtr}qe}Q!hr?SRu4|R?%@p_<`1}FoRX02V-$p;`Di{UgXXVfSPd-4Q~=t>0zg@9Qs zNS1hbD4szMfHO1@i05Vk=FSxs>xT>lOnjV3nZx;?O6;n)W(u2DfSXrntLZGyH8RUt zM=?1b=BFv!Yk z5qX}(agL2eX7$l1FSXkw@5#`DkY=#>t#AsxFb}PSeYOc38XPPiuz;E11pz1wM$S1y zSAOA|sJ|CH>PBc*L-Huw2oB)C>YT&9vW)|m6TInF;Py)uB-yjv9jJ)67K!A&0_lUi zL&v+O*S8(`bILk7>oZ<3F!VPVqHm55(DN-5MvLr-1XUt@Te z!ZX4Bkb5ry|7#n-+`Pb(3(Fmg+BgYvTuM7Sfcx`yDKXS zcxaU*Y-K>P3c(-;-Aq@s&*=*L*sZM0>gFHxZCF_e9V1P{U|f9x3wF_DqZ8lY!y1vn z2<)OWscohPkW~B0{QI`1V`q6ogdLzeRO}-vf-Xi{uzvX7sL?Xsgg4TYD zO$>2B7~qXZBr{@LAu_jSTd8Gr!0f7SpBpxlo;iDb80^=HkceXE!okxR8}H8>ra+4` zF-A}ZVHb%V>A1|tP6V`^9*x}yQ3~~MkLqBvfPNqzAzJ?2oHPZ>^iJTT&c0p-cfZRn z&nL41Isd%*>zkv4=OAc*_5HWc4xh9Va*YHk2P{@O{SerAK=O3d*Ew#GDGtLnf^tWo z!Vq;OsXAun!oKcMN7`w*Kp#ve;zpSQy5+hI^N7Tvt$;ojV)-S5OVbQ#nV8n`$PA!r z44Kyj62=OnWmhqj0*dYzQ?&Z#eRk%ISgc096nWJvxgKENq?1HD$;ia3Mt(G*< z)VT=@OJ@uH-w2;zfV{bj^lfToyp@5TeN)jo1S7KkHY8v>hm0=Sx( zt>d{fWM+x6oOOSaje6_2{n;nv7~#T%fQnbMi=_!V`rnfP+ubLqG{~wOSSMHkr^E>H zYzpTy7H-&GvkG;(p`imc<+wSumZrdFsl4<|iWUbK(6}H<&g>YDs?$n>C!0+li{9eq zXchPn{I1MJEsz;q{;PIx`JS?kk3BQMAgTnZu?rvt|(^_ph>M^zZsiRWSoO{A#&0sOpj5Ld-8=#)>5OGc4 zGVDjr8bO}{L#2)wS6R-=XVd7V2=U9GK&;9wW-R?2bOlkU7R^hC3lzuZj|6!(-IS-i z`4C>s6V|aIPV+_}?~Nx;D!jd#RH%UH<-_y$PId)$(3!{al1hv{T!;`zEpHluUx-eN z5t&Ne;g(5f5|+?)RcdN^Cj`z`cVWS&q@E!|CT+moF!0U%1(A#-8H1QEp#XQ8g2oGx zyhKC8YDp3yhf-{|DvZA*=vQWj<@+(oy7UTL_>5B3gBM4KM}IZIl^}f9vRV`z;p#5D}`2>*8L?B`^xybP4g}oH1bn)k4$H$AP=F0?|Y_%bC)BYB4=I;0Hdcs zf~!iZ_`qu3HA0*Oc*IiVebb^FZd`-mSqPWxT-TC**46gHH{R8L7Dq4Z>s7o+#b&Uo z#oGbT2%2eYNa0|Xs$M#<=m1g2BU@LFZa8{a#(HKoU3Ca$B05Hnu0SGev^WGmIiN^q zIXcu+s(V8Nlx@bK9ZC`ys$LwHbQWkUE(idC1Gt>WqHmO+IS8mmQ_4=IO3!L{7u-e= zs}Q{~95CdWVMo?gIkLw4k50s5)`r?peSw$F%H0m554M%8dy?y{?-bYKHH^$CY$d~| z9x?bjl?E-&I3Xau=3TcgpApjRNo+LAhuMi$aWfoU4AbbUxrp;82t^$o5}M7sJ@Xgk zT8@9@(#KB8AY@-zbMzQ#+SQC>9uF8C^3AJ*CvPA!nzyV03KY^mNfiO)EYhrTX==^W zCMWUj7E)79M(}sTMVaxYBR;z%J#5;2xh7`2f_{4RHiF=4F!ov{^>p~+$+PdD9>85i zF1kxeuu4Q(TAn~eW36e6gnPWh-CUDho9LGEatNY6TU?^&Ttsj?@c;e{jugeOWB>`bo^jez;*JLZ0BVO?f_ln91) ztd{5w{gu65e|Dy|Xd|_VkmUnlSFpm^ov@$Ei~SZAKv5#&`jC!L99K%u|WRTiRyXFlBBYxm_H(I zJufz|*_5Qy#Z*kXju__|SgsZxs5aMR`2sz!TRul=4@$Q%mt(hLSr5S4jQszLURn8sjx1ggIbeIAQ zSFstq3?dFAk6DZIlLS(wbVuMp4D{hFJ2jO9Nf;ElnxKiog-|s>yg!G;CJc(cs}zU! zG>Bk`!{hrRot>f`gmYVG(%o{dl=aWa;zL6^-@Or|;9&=#vCWHJCeA@4nv(u|?xNY2 z+U8%DZ;)nWRM59IIRk4mgiX0fjwhyFTPs_}_c1dNZi-$TvN<#0*FT%&eI)IR>}S7- zY~O3FZb}mzjJgT794|a#6Y0fpo`aM5%$^xJ7+}=GOW{gckI}~C)>`XNd_vIenj41i zGywFw=BMzTo|5A=KgJ(otbGBYl)b?w-551PKJ!sR#}POpAGCxLt#Udk4Jr}1^M~Cyk*w8{=osTAi6cjn~=Q*v@^H)!v?jP+#;7u5As9X7< zvs<-9unSBivfn+g*-vj<^g?4E?R6h7_pN~i!Apo-5x43mMYl8-;9jVMa{E?L_x#CO zK4eX3C1eaWV&9&;AuUbA*wNXw-6kIPxF-4DB<$iIw+gmIG)Jr@9V(0zXo@o;#h;A` zS-|Plen7MDcj)wcqG_ZCA#!L6`)#^N$!H3RLQA$4lFXp&^(%5k|DF%xDDRTc8|Um5 zMm4jI=!^lF-&|>o!d}hu!Qi|q}fhxdh=1G&@zcHr*PKJ38U-`Xx!tWK9@nXmG;;T5A zhmuc_XTdw!4r3(SH+JMKrGRsu)q$AB>mU1kolPO^(x4-+kOuHx$r~aA;LXda6@%9m zZ5*4z$6a=Dxc1fJwO=0cPCfbsT)olpzSgo2Tlla=Bp68%d;*Sd;gkZ$(*w1AP#GiV+Tyh3`VItl~EsxG0bNZ_Z#G(*m*{36lBE++~h zKjos$lh|IDJ)nr7oaS9d#T1%k9-_f9gw+9Dzv&*+^14)cSXf z?xP8|T7&KjB|swi(Wt9A?#I6DXyiM+*cEcbx^;n}Yu3AE8?Kmhm7zOVU%ByebOY-P zxKz$puHEi+97wI?P>lTZ5QwX8K~@#jdhH(_y*~W*`=f&dlmXZAfxff4>RG6T>MzzS zi2CaQ$Su0LO|@Bm49T$ZVgoCj`M|2c=n5o7SfKji{zQ4BWAEL*)~izKRZ>zJ7OAB2 za;mPfrmO53DU65yn28FqlVx{TI!DT&712g%JQ(P*yhZ#(x-8lIK$qo4!v1UDd?S;9 z_$dYzYt0tn2YK(dhVwJ#qOl2cUpLsP2$Jf}X~*fS1r;diE^!)Jm;RtrxiwmU zoG7)O+=th>0*@)FGWhSIuiJ+TLg%mSA09cd2*qJSrYB0ce?YF@D z0KsKGZP|nIA$AluwxXC%udt!ufbwofU{4zn16dw-CFcG5^}&CAfB5>~X)F2q@cFA} zhxqNg!ygZxvJRhs>g8`vH ziM^yI`K@c#P@SVDyO`fAE++%O$y7RG&)yE|@DQ|<>*D|mMolnKO~>P0f2z;2ZYwkvHt@Vc#4cys4=-=yPG-y?B1~^8X#Y zsBx|Fh~jvwS5l2%aW%WJHZdX3dSdeyuBb>NC5sX=cN)74KKQ%5N%98E-n zlz-f`IYbhhqht(S`R2S4nL#*~mtsrVxkr+fz)e6?8DWZj6?6g^;QP!~~>S$pOy2%WwFx=~?R!(XF8_h6b=>dE>V_dC7 z+hDFVUW_tHzHP0Q02&vghOa6ARO)eTJ+2=ArB2ae;0_@cKx*TD{;g@_k=15XIhP;N z$`z{jOf42143C;b1Z6Sm5oXiCfa#En&pH?28vnt9m}8wdT%kmZ!$y8y7-9tkZpTuS zcZY0T66Cd>O3-w(DFAM3dQ6N?X;>b>s5^N`kWm80lA*F-_)5r={-TiQ>s0nFuKz$V z8&+?4>|*}+g-Q=s`yd%^hraGXfr%VVP2KVoPYxD@0;68XT;#X16RDhci2h2mruUJF z(~HR5yD=mjuEVt#p>hSN``9vk5JoDG8J1$q+6F!BU-&5sK%QD}E05Q8MvG>kW(7HM zyGtL!mYP-ptgIl})^e`WPjD+B8o}n-?s3)Q54rdr zo*K@Op0Mi-XVb9z8;G1*SUlROfX#IB3314_~_Fu1sr8OI}l(leu640~c2yZhPipG4*h< zdmsa*<eCk5mqgLBa~2k{3UU*FZ}YkD3tpNI9ue%-yKOwB4pks7j-wDTk6NZjvOj zz$eunOUs>=ltcte3$?rNCqKD#M3v<%#gR$v=`!7qL`nM~M<#-Us2`IA;zI?*)4YJ# zs*Aih6D5mV7O>SRIph1U?e@f9zd&2z#)6MuGghoAVm@o>tYm!12?jw2RV2Y*l7#)tQCGmJ z{#<-WU_|=~=T$i|;<=UfA;EZ(V@xd1)57t?c*do095y+%H59zUM9`^>PF)N|Bx4Yh z+)QUt3#WZ!S)Kssa*1AWnSs>9MzH#=+?bYyYf(Z2{o!nbznM}$x#C)hIj~;u4uD|G zSL6TW>I=Z({vf`I!u~q?)xQGvcL*N{-4c4g0lL0bB%LJJLDLx8>UvoE^W$f4a36!7 zufm<8pbE19gYg7(hLJ}5YvvTV{$rWc5W=$zO9zGZ}C?KM>Jr*!77k(@?>VcA=8efLOL(F>LVICH`c+O#caDQI^No3|6uWK9| z6JuGn(7FhGJXk@#Yt_=&uoR^wkl0?6*(j4CO4Myql7N++ z5{zKBC!|@+B0VejmiYkiqW%Rm*`z-vpdCx0gq7DN5id@wTI+ZU-spy+JsO{{1Gy#X zJIIZQZ|jqAE@KmL_I^b{asHz(fGHnIXNoUhVTRk8xaf%^TeX1B?d%wAXo6mUPY_ z?h@G%4yLF;7!YBw=%cS62L2ftbj)531}kH#I!+#I!v@YojT|PY3TOznSbt0dF%%Q5GM`Lsc?l8$ zt+(SHs?IPkmRYaS6vAvUVFhQ?U@~k>=0MgQ@oXa!MgW&`5y-Vja3v7o}K&i8;na zp{HUS8*l5tmNO)!uOzDg=cF)dAjn|Gec zTzHdl5ePI|<}EdZS(7OImuYU0jd5=#k~lS1fGYy&9P=L=THd;8 za&9?xJfeA8vwX(>=(Y%FO&1?QdoA!9+nA#+kX}BgK%*7+86yPBs^i~b*3EBpJWKm5 z4j#23YQr#KyNh;HNuTTn`MdH9hGLJtfKVqrkj+G1%|P-OK8>aRX60YBd}YFHT?uby zFQ>d&kdtK@3xFws85y#3is=_OG zr9Mkc1OH`tkl~s|29x3U9?Q>B}bW9h;843{;L3t%5X-O}2 zQRHlIdYbuR!pWU>JP4vD(B0#;cjcI_q&V$RClkh`e&R52tp`~@+rwId0@|`0213g_ zk5Eb-#&Bx^1Fm+12FiD?9<9Ze25zjl?I=Bklo<$ME;E3z*_3%UKM^J#6Q$U|-BQd; znF};@qYU~|mZTHbUyBHF@c6P;Y9)KXvcQm|EnpG5gX};6s|qS{Xuuv5W{DAra^B7^ z6aS|R!@-)-ihOM@!KNe999}F5-?ru~;3Y^crSgy=dBG88E=L?jL*S@V6X7x5On`R6 zwCaGU&2j2el9S>qyL09EqJ5SaNyLtH=z_!fmK@{vofdG-ohF4os{67&=o8+e3$J-u zcHIhFrDhxBPOH~spI!57)BWl>N!s;eInYYmB`ln~JvKA$pkpr{Uh?(b6i;95DrQIF zYd4cFnMJHB^QGkql+;ot$B;>)mf8hfoeW5?C2o7Se`5U z!g&g=LFNSn`NO9QiCQ`iTf;1h;6MkMNuqjCxAWPh3J(G^dk=vg44TMQ*n=KvE=_5S z1)pAqZcr*x2n-Gdil(JO68(5>96klfV{b9ee>Po6I}F!4L^@@ezRC<&I9U#^3$l5fayx=??^EHjN_yT37 zS~|@jq@#Hu@nWp>Wa!IG4CbATB)AGnuDFH2ytY-Fb`1N7FW>+{=ARQst4Ux)H6p1d zDI0?dUnek83f!=l9H|u$^#`_M*iAfEL3JrpYLtZKW(5U_8R{Gkj3FJc@pwb51AzNB zSoIg^f@2<1a|Y zxRTgI`EZz>rb8J)c%3|*^ijz~cdTiu;D{V3Nk9;vOo!Qfh~Gs`mqWez>r@&e-rD&X z3>xiOpyBY!7p5$7l)DP&ynzNLi#giX!4-$*0M^u!C;TL{Ip@UBpM#D6h&sf{y6Q6lJZmEm--Y|x2eYPh>AR&Agh<}EpX*n9 z!R}qr$r#BSM+350C@q9(FZX%zAxPZTmcL6-@VZ06wz$nrt;#(zpeJxdQLwEvHH;H; zY1P#>x-_jV20%Ioa$KAmNhD-0KBdY~m6*8*q)QA|PI6Kf6Inf^e7o!OWL zh2GO=n1^F#0Qa3%*19;^IU3&|=Yv5uR*^NqNbrd%^b~@`@F8DLnd8lh)Qav%ng1vv z0gCmMfMOuMh-gKKiOCSsSmMU$LVUu1$fN|5$?42LIi5mk!%CCulYssK|*G+Ly53{9Jf1fODJVD8H%*IuB^ zz#=cA>s?HXUw9h^H`oI<@lyG#&~{N0ct%9%a$K&rT}OF6;HHJ7by zbZHx|`_RJ3rz&95%_W-< zrYFs1A%M3<`B=7yO)#PwGb>~l>3ZTP<`b;r=V4cZBQ4OqzBKo0QLgZFD8vdbU6lsj z&jMe41i!)6Tq;1|$}~jcH&qV!#*H(|S8zCQAOI@dSZM*0;*%;>rl@1#9qKW`9jk>_ zm}ZEV`1*X7PN$;eJd&ZpWC{tdS`wR3A)Ij$$V_g9*<`Swp^)|7jh2lwDMBMOJ!pj` zlWOeAD#~q_i6?ms)Sk2z5;=y3NrI1=ZL#S0vusd^35Q5@syS(HKO&AOi$nG~sP3yn zWlf;;;_YR<@vLlgvtaBW4yMjH5)2Ml!5pBcuh!QQ0j;k;vZ&z+mG!gBUx^_Y8o46| z$8Wy*90&yYegnB(J9GhKOktb3=Pon6!z|0juaDEM941&l=>n#TOb^&;wu$OVYBi{q zh{0^>#OU!Q%42ldx$!!LmT%+iT;t@F;P5(uQ2Q0(wEkv5v`Vm2nel6+rFVD`{`kk$ z#EO#1dWutg*H8j{G2gB9drjhzY+J^k zq7i_?vdXKdx^&CH(_xr$iUO4!5UK!daz>lD zD3B=%WJu%~!l$-xRRU;A0E0r~0%V-22OUpbs?~{8M0wO={BArsM};mHrAeVhg6`Mc zi9Hl3!58Ea@SEX5LBy+QBB=x{2N!khIQ1Xb4&&5lM=~b^rLz0;M(uDc@7 zrj0=)61216y(XWf-sA-0cDRw4;w?8+XsBEe=Hwcxb^m)@YuTUiQNyr#-m9Tu%Y2q) z$y|X6!I;^rf|t%d@bW)!doBqB12LFdz(ym&b5N$j0nT+ydKfXfPdj57Wx|l7G{0eC z{cFgmXRu>anaGr^31ElRF(_=itgJPcId+QnA4A=-$|$iyGbvo7*BVb~+ptm^%SwVa z2tytThc;we3~d}^jb!Y8?D{LNH?RR~Tr7@>1h@OGN}yRjB9iQ)pW*e!9`rrPS7MGN z*kkV^p^#5nwAL<;*P@h#nb$N$S9fN~E!YCWQZ zdGKZvB!9{Vs~?h_-k;CL{u0#Nb2-FqT}PAp2R`$=u`w`Y_>0QjEwJU zToR!FE!54>YE4cPEQ7r<>@CKe7p8-M2ND4K3BB>nh0FFerwWw!cw7n3GOow&3hiHH z+&`|nV&W7MC8WQkBKr{NDum{L;cMc``u3T@s=FlaFhl`N^Hhs|BuGH+R4#@{F>hPc z5t0OK0|Me416_)?R1zE*T-1h9SuoN%l*||#T#*+V=~Qb0=*%Cz+E|FMT#wi#Iv4Go z)X<@6zGjFS$LwJQCUCg`GTfspjlvbDn4If0hZtVq?!uX8ZA=-|OAOh5!g^h6)T@uN zgJQUV_B?zSMc3-6>T8i#u=;lN?nHiM#?{4(kbnEFd{!$drK+10ImfA?5>uQ#%}knwtk?Sy;~AE+4aVYe>%yXi^l0J z9gWhN?%HB8OdKQ&q8E#O7lxN`0}nU@;F?9Dl74y80 zm&cF~IaRMLv`alW29!=2JL$+tdu&mIoH+~uE#d`t_{Ns)t2%)+vtUw*`ZOR2bFr8y z=UUiJboemEd1Y>S2|oIS|BD{*f0u)OH92zABQJ350p?AQ{1f*0)NNej$XDE|)CAq4 zNXj!|A$M&l+{VN+=mvp*aLmt7f`cx{+aB#3-jp1c1gsEx>FhW+n@7~v@A80Y09O!~ z`RDBahVS>jm*};xjH-+ud$lerWWapGoy(~?w;y=#ni^2M zo7CZQsiOt%I62RT!*z_`H$ZE6xEEVV9rswu@LdWg9r;yDN5c`^Oa4J)Wa{6#$@g49 zTunqlj=G9zwy&)F%{NH{qlB4>1Z(?GMXz5UX@R5|medM6J{=bOB#eMsjqB413cH}m zWOSD!IObzTKua&5zC@F{@hL_#smrR=lgG<(BrL5tsW4fF9PlkH zg|eWG$tyP^JxK_KEiR=%O))5BO~G%4vVol(2^L_1vC$dE-hoqp29`Et zr~og?$dP216=J;~v9?E)aT%#>)5xTtNxG4EK`19gO?EyqMg-zw>~-7_M=ZyAfBJ zv*|KQ=;sO}^t#Y>u0*!Fa3EM$o&3|b0YZDBy<7P}tieC$06~}C zRS2ZAmi*z_j9ql`9l81!$@j0H8C*3#Yr6)1fcyN_ zA^ERyj2}8pV4_UH`!SuQ@5Dh43~SEn(T1={F)AF`K(=|ldRAL*R-FgQW~aNg(cRcm zvpS@>j2!<3bqgayGNq?k;VWt*jc=;P@0+jP&fV_jj^DT>5hO9(8|S@^lWry23R^D< z)OYKWkNd;Lz)PJbqys3eV>9ol!EGm-o88Ur?v5VZb31Kwz`>;j%*HGh<8H>;oHZoV zwExbmN@7j{E{2V5hnxK(o13%#-r!!-eQY=zGMsyNHn)3e0uub zei3QpfosD|sk7DHx!2u%pxW4{06;)N3H@+lu*hN-TcP`|wT%Z!=U#Vbv%9Sq=mjK} zksTx~3WJm2N#yAR1>v%@#wgBa2i?Wlu?Qo2kIeo?26E3E$VR8TvC-YyDZ?mvyByBR zS?s(NF~)kBTfe1M4#bGdf@3%MIO{LwhPze%CUU4EW4o)yc0U354wn4MFiRoG;9^S0 zp99<#$gW8m3K!j!R+YIp3CP^_NusuYc32<_!>?aOYt<6+uLmS3VG@kq=LO9G$5F#R)|+#%BVw%@n`d$YYA)%bV$1w}l-`%VS&1W&*B`E0%j z14JkT_=jM58-8N%&BLm!014J~@311ynS-C5!B`X6K?rapm3a4{V~old1VxM;d5dE2G8XGR=$eHLk34%q7YneWaskWD z>9rw7CuWx}ER`1P%VNx(I|jrGAZ*|7Zk3l}Ao!B9VppY@TL?;tU5+YXjyg zJ{V$gM#G-fmkWe2A)DOh!IFZGzz7Y)BxDb@j*zutRb>!q(g|{0ip8f-Ozdu zfIseHhyogDD_H4P;?~oCr-|5~I9zheRl^max;;|vrQyYf6T<;v0DzI|%8+s0G7LZP zVYp*RICD!zV0bPuSe-DO7CALn+3<2SnN82~K1GL%B98m2r+bMxmYa9Y;fx@TD*3#S zjSx#XKQ;6*X8%BpHVsVJ3Qg4;-n-8`MYyz3gcxl9WKlS@$+y$03LtGp$+5L?Ov{Lf9Yo@t z?oP*0qY+T?W3icsgCW^hDoI+4(?l^isN~$4WOl2(;jw?9^ftOXy8rK|z%my$N}ib{ ztw|xbE9Dr61GDUsH|=-elG=FC?cDP(c|LM8Lj+Q6T62dRj5I1J{uaa>l2Fv_<4xBo zh8-$0C}<8R1cwHn;ndI_={wXiFu4FH3`99!ExF=%kiIkwkRf!v<&SjE4%Fv5Rxhu! zqUI>17z~f15~2Hv;hhU?V;A0F6_6?mXH!ImxT%JCA6KyB5Akq3pG_#9J|81Ce=Ep0 zf28lW_GqZiQUv!bofmjX10ewlq+v~z0uXb`tbAxQ%lpAx!Vs@iAbQ?g6;e*bF-MAb z;Tj3Xa*9b|a7QrkmM~pG$3e_i*Sv%*W3mkPXOxeD3n18DP681vY!2)8gEB2_R*&j% z8!NYZ>p^2rUcNd!c$$3o`sMTF^}$~b-$0%RGr$MQ%kTVq5SKWdhq?y}xov1#gZef! zEeF9*Fop!`JF`NCNWvAQ(AAQz&6Xx~04)TOQe5@evf9gX`_9%z(zy@96>m5O3ZG^( zi-{GulN@A>ifaQ~nyfF{$#(!b3>h}(1P45~i7ALWZX22j&-)7e70{$6+cZVCMlbn|$*op6K|JS<7$jl(kldA;H+ z9Zb#&0OquE@7q8YH6tUi7hs2P;hpX7_EsQjxFUgTY-Z+S>pXby;7(`rj+rIMc+A~) z-nNxsymRss!;EcLlIn)$ozvyFf9LV8;OL=D6rvp96C>Znz&*niXw>jeu!L8WExb!nO=0Kr<#opeU_K zKe#Bw!aP(0(_`2t^_E%Lx%n$s(vVGc1BC z(`HKX@X+!V06jp$zgAfCZkV|M;}6VT$zDfGDLKM+E0KVC{d6|dY(_7qXj5ip6gQ_v zjA0?rYm0e-=d%F?s>Fpo$0+o03#O)Rd;8dEWC#nmPBV_x&8P&i;FKtY0!3{zN+%+T zIE1;S$&?Tl;U|mZah+6ocOaGF`@Rv9O_^C)kxe#-j3}d0WaJ20nNhNOjgmbRGD9dk zv%(=eWRI+4WhR@0bI$X7>GS!1zrR1vdEe)G@8`a+>$@}>-D*z=`1&V@|!HPX+0$s3YWubrR{``SiC zJm`7(UY4!JJ&mEjP&U$df+B4x9-6v0e2Z<3>;oye)B zNci}-c!j*)eVT|Si-%dBzHub1&1@Fze)pnOr^DI`XZE=|s&2Pjry57&C!-gjt?REC zb!O>f0eX+z*Z|tEc)umSbEK1XqpG^zwx6_A0^qi=p)$ z4rCmk+^}Y9-m=aLr2G|sk7;{@1SI*xk$sL z1QLGsYcE}6DVJ^J+7-z8-5PCvHgDalBs(=~9RJ>Jk*!F9TY|~fziz=G-8F?W%u8)dz zk8d(5rav+=EHCUcH{EVqys%UiMz}~!rWA5c=KS7%Ua7IS)yLZNLsIGe3KgNxUhbCc92Zc`y<_(b1P-E2Dh{zg1;@SYt1b;~C817@f7Y&WbThX7h6f#Kz? zPfhM$IKOfw%%?3Q)tia-E+o->GV!YZ#%4Cfu1C$zbuN+mM)Esb=$_lPudXd}wXK5P zLnZUC$T#K&)UUQs-L>%wvgN+F6>{EJ(Uk4X{k#3ML6^2#YKaR~s&?WxD^({N=|c2W zrJY2K*-4#m#k<6>TRy+~=TdEB!T#9D<2Js8XD$WPL{Zg@y&P{DHr{^W?6!P$oIBt* z6aQ&pKKaI(%N%bDnoTdJsx#9X*$1lr5||)&Y2dTXx^n;BeD{qr2cuyx=FqtQ zp8>C`bjxZIT-lqcY*^E&(_j9$)hBv*i|AvmBzHkrbii4*zuR5~eQhMNe#bW>9EfB- zOMmltd>j&FWa^p1m3tUuMy|@Tw~P?W`uNsv(Lpd$Wz8h*hGc7wcDW{vYK!G^LMGFf zhh6=V)^mDwAM!-9I*;j@RF5ss42Zs>`W?J0)X75mMIkLVgG5zXvtiJj)%NmL$%?`) z-1pqC_4}BR?|0&P`uYPY7H4Nf&geWSXnY%;DQnqM=#)qny5T008E7TCl1!DH@u8h1 z?)LVfi$w7H8KW;Bf=#Ss1Y}9jKE;by1LJR9kQOQrl{bP{CzOx9&nMs0D6pmBmg4a2Nv?nt zQhF(zRlSD$^{wO z1=bw4YOUmo<=_J5>dffW3u8JiSteupOc-0&c!Ub{tbJVF!6Gw^>y68MKLSzvCT>r2 z$=GUlnfo@fi(C~t5|kuNE$dko0(3t_wbYBJ3*)58sJS~InUp zPm1)?Ejk;Edw&K*A8b5w+)D(1#z!xJ1BUae$ z_!PSlnw;rTQQy335`g&gV-B$HG>F{!HQhiq9`2jI?rWC5&MrQ=?DTi?+W}{1TRyWc z#w39LiVmLG@}al9N1aN0fXYUGIXr&4Wr=)v?Y*WfsS}v8L2d79nHV1&A((Qf6#awD z)Ms!0%6F!5YBJBJ?g-*pJbkHppCCf#y3O#mjbuHqB5QCMU})R7RbkP;9x~vVQ#Dl4 zEI=kUeessoaJPAm`oaUjzrQ)}S5%2I7}VLv+oV5&f^<@jx%2FWEZ@3n_f8XC7B1%? zeq=}Zj4iIa?>@ou#{=Q$A@AOzso+FUdXjUAO>U6h0{6_ExM`#(^^djuXeOELK8F*GouT!O9UHq$uSDjr9jljpbpCa#Er}#gpcB93tuL{S@=v4payV@G zapYdQt^-|4`(w#2H+hsDC5rQyQlfJu1{GLEcpelFj*gB=N=hja9uP>PkQW$I%AXgZ zdJ$gW@ZdL6R>G)V;r7lGSIPS~4$Kz?IfzVIS7j4*^o>V)@P-PSyHk_w|L~GB89Z$BmzWue3FgTmPpFgWcR&C1 zGYNP{gIutE5^76F#UZ#K(@`0r_BAu1d;R@e;%{0Q_8LkGg*3Jn+sYu7p3eh6-l`o- zzaENjXs?gI`UWT5cq?Z7?dG?OO{L`AS?bGyu9cjEr~H zcU+L4!5Z=TtE|l#;$6E7TG9eV1d`{_jO584?d;St{VMGHZG80EbIhyUJ{Fb75icHPqJxU-c3>mG)X37UGn;*;Iw z`f$L*z*U=GF(9!S>AJ1DO6YnmoyOa=bCk?~a;&gozx7f2p2Q4W#rJPM&*|!I$IL!Z zbp+Oi{ki*mwsuDDBb9$W8S+v?NpCoFJ(TL0e63dNYq4hpCe z+dj))Hq7Kdw4NxLtr7M(_PP`JWJ|E3_}11lKZWxu#N{m4pf}RT?YVq9&MM_YH^1CD zTy)}$FZ_b)Y$#1GEHa64<#Khr^ZLv;m(HB*=5M-TNf)1fUJASNh;*xiER%?_DxMxQ z80oq^?)@!;LogKi?8T=Mp{s7c{5XePB)sxd7T(UAh1&Pv7P2rO8izK@xn65(T|sz1 z3!2Jy9M^r)QyG%jaHoz>F?)aJ?ozZ4!gT&xJFlQ)yu5M(Gl%OH{*g^4g_`RM{a4oY zyUk)3hz_Ipe5)=B4A~uKdpA(OSAOq3B1^(^cJ`xMZelfad=C<7`^LNRw**EfY$=w- zh9mQxOnxfek}7@tg(30m9Q`4ysn_3wB0A}}W-GEIb_H{v$4iv24AQlVPq6;6pdY;9 z?BwKaJ@M}E1(k+KSL@ltM+LeryCn57Nnx7W@rqR0Hru~FDKz&*#^U*RZcwwBB_b1w z$3*l|@s*(tNwJEZlha=qw5MCIc^J9TEEC#@nr{zmebYo{2Qld$CNgE%-&T(Qrt>S& zaie!=r!LJi!|KuP3mRWnIw+~WI9@JpXD{|7lI)}HJ)33MQ$?*qzQVffA!bY*#oU$4 zc*CeXDC|mF>FYZi0R<7^h1phQ3T(L#b+5d?l6)kdk;D}uWZk9S-uBMi;zuTnEPjqF zThfwh?gg@=>Q^Xbzs1gX&Px(9LJG&4L@Y)@eS41KoKWf7%!L{ArHzM=~zq^^9ai|?Qv#5M&GHScx zz~QHpP?cV9{-vi^6OPLrlZ5CB0`0!Zs>@7=d$kIT#Ecxip?^jahPgg8o@=+5OvczG zyZg{*=rBG8EptgBB`8y7Set5`_k*)`8$rR}TE!KBQI&7ncRpW!*BRT>vDyHoA zUyQBCwi~c&OG`J&)8uqb$mOqFBt+KDzvdcetNW#4llaj%c2Y+sPgR|xul|d~S>F{Y z1qCYWjazbpbMMa8E0#+xP3tW%aALudGk01?#z~#0txW!TZhbs;#doQ(FgK1t{-3{#uYFpxjODcK)FZs1 zcX3Yn?5??kVp8u!#PzaT(lf7$8Sh0#k%r9^r=?a#dM*+8{7R_Ny5G%F@r5 zY;r!Lt?3uc#W^#%iocr8Nxyuew8EGF;oMxAb%bz>RhoF`weD#(p;3eFpwIH$p$>ke zm6vWL8c;K(SCO?06m2aI6ZhZy-tE3hZKMCPX8v-HJ=zc9eQwJ?O6-lfobOqayqJhY z=~pxE$*dz<@BMwUt#j#~hS+^voC}`RhD^1)1c-M6f6KAoN;8zQW(-xGPmU(831QzZ z31hX>xTC$F%UL>4k?r+vS9(j`N>U=HJY@fnWh)c4=&jQJ^vt$R8&AfO&{SsKQ;jP< zLfkUUP5j@ya_&CklAuv2M{Lw$5)my6w>RD2%2BZ))$(I*?4O3ev=(Y=_24 zvtz>lYCm!k>=A0<@`)zvo&JN!f4ovtvtn$r`=T5(=1}g9mwyrFlX>J`cU^{-AtpZ8 zt~QjL&xL1xog=*BJl&uBUZ$}>jQFf_LJ!4*j8XzvFt;Vwo!vF$WWc`M9}1*V!qQzR zb+W)ms7a~h0zDgtqToWfel0bp8D7Nbk)glT2fNfyf)%r&1s~T*a&@j@*OHAF0ylB} z?v0sEZOaMTql`{gRO>|i8#ngvb&@Gwd5-MpGjYA_Gh!-TNh=jUC%+Z;_u5P=CDBx5 zvitt>%d}-VK3=_N4_(iy(5LHZkrim)nJt*Hq^Yoqna|n^YtcB=FszK_d8(hyQT@xV zh!@R+9`K|E@km#hERoV~b(b@z?$ zCC4}m?KyitYQ>gdieL|wr@<+yW0467CJzjzXc%)soi&4oC4P9jYyuZrkO z#cbTzezAEwJ?nZpcHxNT94njO`It1V>duxc`V#dajH($Dip2}Mp&~aCQmgO#;@ zkl&*=D0ABNew6vd#pi5&@b1|^N1c?3yP>~sGdUq}u7y1W| z+E&vJ8_J5Zh}kfuCVGEBmk1uY9SGetK2LUYJ(XD7s=6vPL#7^0Me2 zo$#UvvNebb$shf|YNvBSGGqO9&vf)z^Ivc}xA=bi%|^SGS@=3sqBdvsJz$U_CI>^IOcX>}(zSa@oK7u7#nesAnTT zBwF{HYE-KzYrb3Y-KTqFE4RAdQD1vIxv#)|Y@3dps8B)um|TzP%{1Q9ux?&^-NrSs z@>$f}&4_kATwO$AR-B(A%4#}B{fqm~d35jIZeg=-cZ=-nRPL>Sb3r8^kQH5%lNYS~ zvUe*ZpG!(#G0>>K$;kux4%l-2N`p3JJe#=AS>VNR}~-oF>|Hsrmjz(am)pc zNPRz%T=oH%$p<~-)X(OQVtf@^O%b{f{LH`FP%^J-fYbdT>7viOw5Kd-n( zgk9t4uUotviF}QCWyiaCn{^X?=ekjakhwEwE$Kz`*yehYyvd44P6*I&b zeO*Iqq-vkbg%N3_cNa`q)|0fbM1Dxey)j65xneS3!l82|0!h&?&sb9@>YcB3>7sl? zq-NgXL{BDHJ^9-51$LpO^rpJC(4TA%Ere2c-mNOD_B@PfFICH?S$TNWlXdvC*Np{! z*frIW+1{m{^s?%Yw7+f9L_=lVGz;;n79}I*SSUCPEvQ)Zto^ScPGIJa@FNS)$ z!IUTG)?-_r!MlF#lcDD}d}74Hyx21B6nss9<5$%Y-%fges|n_6QVJ2?YA$sF9a+Q4 z;X8duzWwKX!-I`4H!mO4S~Jo<+>#vCYo##ONp+UDjCn>g{H>X~L}Px~EPJZ)MwXb% zBxlMBPX07zM)SEQ$Nls6L=o9J6~U$9-F07@ZukjH-tT(dj5BRf^ z({twpM!Cbb&(=2dH{4f0%f9JP-F(JZo#=EoSk`a8i5?r^pv2}*WLOdTMxJ}sEVih& z=dN#vOow5xOQ$8-qvQQ4yV4Afdf$3fLqo%HY`sEf%D%NaFX_h!Q&+3Hca#AK*B?3N zgxBP@C+2ZxKj_7d?Rsh&$SrnwXHu;sNJMnoJG_ZZ=95DD3Ugfgff$QR3ajyszxkx) zxY*w6ZPk=1KTUK9SVlOx9zIoXqR$zF2HS z?Uku1_1+_8|7+)c7Ea8En&_*eCOTu>t2QRxwpYReYKm%j3g-GJ^;4I9QaVEPDfHTe z9ygY+zC^xy&QgZzSsmwnd)tEanv+F#EOULedC+Z_EZ%h*S<4)zUOSo(qG{Fb^M4;0 zIe+-c@@=3gEY?LJB9ywB9tC6zvGXQ(N-l zh9*6(mrP!{+*G{gQ$Kc?FPE&$hd;I1Y%eT()tkw#tqg0(aj&VutkAYIhk31)T`STmtbiRr2 zpZ{z%W-_qD*yLqRZlmy53H7cs%)$1jz=FkN74Cel%v=0Fun+xa=kMM$+^$fXBg7Q- zU-llNv(NNg>1=KJ87Yu>Geb(kgPNY^iiaGdVQs-3^J$Gv%?i2r@^!PHm`h3*b-(&; zUDN$>jwgPEIi|v--r_H=vru+srHpi zjB?@C7ftVn3hP02;?dQ0;``bb%mQpF66I%83ZITA)FK~gC7A5+p3hs=`F)0&d@zkB z7s2QFA__0e;0E2<&yeG9NQw%}{5f4Atl*Pm$URak^1#-vw%g*JAtULV?(jyxOKR~Q zyN?v4?0HSi;;#vdCVcBXF7F9@N`FmO?-T2yqv(8mzk?@-0WFuFtwM8MKlk;&t;F|p zvoMyqJX{%NJ$Dal`_22h(v2Ns@4Te6UZCEJN+~gU8KX;{sZMw9FiqF{;i7!_#5wJk zBGz;hCK*W*aa~r3zVR~Qxr4FV{R*uF7TqT)VP={%@UV^Cui0iV=Zm#%2d7o-d`7e%&!)wsdyXBxG+o|82JL$}5G*Z7^Gvp*H2RnOx_R38i2N0Hm~nZB7KEDjU?y+#xE*_z7N zG4m%PJ(AJa*|-valvGNMb{=4{#h`6PEUs-liJDp)zeAJhOrd<=HLYsJP6I)F-Yr9Y4 zf-M=SjS;Tnr`gqhcH^33TRFc&*EU7w@zpy{xKUqMY8se%VXMo%{Y;WW{6RP33Y$kZ zo{xPOz`Z30-uFkYFIr!z>O6GYbeFSNrhj1L?<4)LN9wOXEq(pnGM34Ex95JL*XxMQ$ri+J*5<6sWa)QC^`xmo*8t!@vjV-XwqYKe!1GdWozL6*eCrt z#TDG%!8%Q$hHSKPjoI_{ed@d~2Jc!uS-!|GoYyAyd$sO0Zst%F-#K=fH;n${m>o8+ zO|w~*eV}woHT?yRcVS_nS%M7o#z|kHCX(VC-!pE5haXv~-=Ya|n1S|R`(PFJ*$7kOerC}9TFYf%-|@5w-Vcbh z8%>r{2St@34}9Dtc4C!{KJ(lh9gpN>@vU5VvUad$W9Zkmcii;rkdeG-N9vQSz)eNs zayMC%=k#LO_ZCbP5UW+!8S(j?b!*Qjk@odKI#3(-^Wx)iw_Ot-q4j_T|Qo1jeJCZBDi1d6=Eh|*_Qp-Xd%ydPSx(-mUw1Kaa{p}7z^5!{Ep0HO>S`mDq4M6gJRl>@K_6j2ZtxbU#1(HR@0tsA>=y1W zrztOtNoVU$#?K`2TvV6vws+u5(Gofv872O~Q13xyv%oImzp z9@@P#2n&>_7@tZU9`g~uncx`6C$^nrw6%@dVk(KEx;JY&;@fUi4;tTY?CIZE;eYX9 zqx_502hL3PlVF#zMZA)N>G9ps0)MSm?R5%%*1lUZ zZkm2KL>heg6UDSYtyXxgSLJ|JF9GT@W_Vh|YsKKQqv*^A|d9&{0FW>(B{uY6({I+%Tsj+#RW8D>huV233 z?lqInx%^GfAGuU#Ph-@5?{l%xRpA>8WhCk1-a3DH?v4p0a8}1~R?#A<@0Ys2|Co_m z+xYsuDQEjHX&havCL)Y`fL^Wfm3GLPg(+Wuag(+iyahk=)||ioEl9IY7)1`=D_U5P znYx~%ncG_`awZn5k^jSl%42Zz^GBU_3Oy_GYlvwtyf)`_p>So#L0FH?^_{0FtS<(2yb;v9jz}$-puNL1D(Y@$$KYbl5Pk%Fn_Zk`HMZ}#)GQ&Vzn)GozZ=;N3knG#*&epiR}DCo}+N@lHS^l#;q z)k?f*2Zq;n@be1zP}xs84XX%XN!M!xJ0kIz}^6*4aAU#4`PC zJFj;3^V?s3H<}D(mbG$g1=-52=L!S3Cm(CX;W+CLj1@`yp)Z4b$Pj1KlC@jM8;7FH zD9^0PoeDBzZxYy*3VJG|1$KVvqGg;W!Z96-9ni!q2POKJW~xjmj+;&4KJ62Ni8cza8rhB|<6AVn zguEEnkMk(D9dtE&8`K9mG*M!&TM{gi(PL|>Hqo=#g8-l)?tzO506PTac*Rc`*La<= zG|+JKaO1wrCX$R7gYx&zGOOknr+X0mm%YvpH)jb<#?{Yuryto>P)C1{dVK~w zc!U*j#wP>M+Chm2GbrkUImEb{C7}x(!N$r*AW{IXUNga=u)oYn_tDR_H_^sz&?QxR z9N^didNU}-?g2as>aDI0822C~$0P2vL049QhhFd&nh3wvsEZYl((7!wBN_8XkFB0F z?Ye&%c?t?W7Ah*i*U;l97&nnTwuL}Un7BiQ>2fbLcxx1YV2$^UZXX9(pr7ai4rHCL z-HM$-N#Zgei=+P01 z5-2Z%RB>?qWbf%3gUodVXceQuFBpqia5VVf@?EDn{15CEMPr4ei?5`x0OGhlcH z%xxjq7|_9ZL{zc^zBgfKpJ8UzTr~)+?m}~~C(7FDEEr1OFxM>&z zadtpmw==+71sw7YNZrC9cH!Oc9mW(w;)FHK@RB?r)l&=5o_;ioz@fzni!@VLOPjHG zrlM>tesvnLFwY|Dv57FA2?I>s*s*953b)7q2`A=oL!NOLJbpQZL0I^>?NYxgu;}e3 zqkJei<9xEX73^5yN(C1|04OCJ#Gu13{q%1*FUI`%!e8`Gq=+PcS-qM{llG(^T#5%+ zlnS0E<&feC8Fje{kR?#54hT0smRS~9LTus|)q}vfdC?j7)o)Gc5%R2U>lfTTb`@p2nmb5br0DjAfJZ6U5+YKGz~iIoCg1)Vj&kqmAG5 z1w`6u;(2=xLfFf~FaiRTpu(mza zV>LXY_*Mt-&7d$xt-vR^hU1I^>nYLe3MC{v&{ZqOB!E}8W)Cp{n8{DK zKr%jN2sCWCPdD4q1gOWg z9EHG{7*k3N?etb}OxExG`B|uFuyJw9+iPhr9jCagzoYM&9|#&yJHzSY?4Mil=}Z{( zP3#7(Ym!s>lO>MnB|*`LG-Bv)6+U)Je|G}G)S}tn>BFSWgD4D>30VQh@52hAL13cQ z3gkd3Id+uD9}DJDIB+!K1@?ncxH;Eg_FDP>2yGj-MwoaGTGo&N3?=%X30I1L+z+xj zey~cB3k9x(=52f|GDo&0S#|XXn?jBE|z3;VllFvg#&vPug z{5h606cm!h;P&cNBz+-es+Q-kKhu+dp-)0rt^(#6fp1y!I-`zFo*BDx?mHZ|QLMwsKq@K2>9 z)_`)RE;jfOVwJcGAdq3_bU~LOK#9wP_%s_PGV8$W0lHd`X%1R#scHlHoh?peRmaa0 zX59rec*(RcZ-wZGOzP!HGYI|gYBn@hG>V8CPh2fY3Z>QXa%&E@_ zHhx_YVF4YiM+D~=;D1XqzszjrICEH^4m$;yZ3esGFz-?F8&FNNhhmJ}0LLL(1T5B6 zXQxo)H32&{?58lTC{6}>BwN7KY9EjA+$_5FgC=A~M(so@5n;eJqQ z3~t{}Q^fh*y9pW!z@k{)@8MA-#BPPBkOBkPB^;Cm27|9`W*#sQ09UDh^2RIyM2O*H zwcI;|%4j$mokPxm#1-Jg(+b4_hB??`U%+t2kd}D%WPTfQG$K!qyzp*${aelTW3k&f zPjNZ)IH`K<|Vl^FucYxoJ+8Ws)$c^w?AS3`i+{V5)Sz`Ot~ zm;A_x-HvZ%fS4gTNW?5m;n8zfv1E&AMp(!E@doHhsxCrYrj~9L0JQ7~jVLEt%gKG3 z3>zl)oWyza0?W^`M=b26_}gugXV|_?v|~8ISHiaJ8}RD)c(}oi=UF#lkx|J-fGK@z z*2kmor7D-lSr}a1V2vNUw1pCZ;UCnAU8=yoZ52j65-0H>J%t`Oy!e+)3~*?~B1Jm3 zposWbHEf%e~`%>RF=|Ie0jWh>3fi>M(j!dg8M*fB$#OE03_Ja zAeMQs5XNanYzfx?wP*7VURvO4QWCb4!4Fq8$O=MN#JE{1jJi(*u-7!n2EE%(!8@F=6TQ_4?wW4wUPMh|8=T&54wHQmo~4!BefFfQ>a481v-qAZ)$ZA6AQ+ z*pu6WZkm5?d!`;dS%iAt(_b=f4pQC%2G)T@DF%GhnSr_$YH-V9D8Y>)!e{x%gi7KPy;{htSgg6VfM5#0k+vbHTrDbR_y~ zt#X6Q(Ek`Rm5Y@l9K)G?Km17*3EO7da-@Mo*u8eZH4DtU0OB_@XxfVpQ6TP04#anXoi4KRxHRPBt88f&cTNhil~E3 z#)1VD6&AI1Dj=DhJDj7(;=n+__98g`WR!(Tx23yQMkY&rTB?e8JVF96ZA12fpN=>~ zUns)DkoOe>X_*7xTEfO7pbGOqY6>dzGDyYDkWD)N^Ex&1K;+6_@OldpslA3nO0OdX z2tQYgE(_plb2A&UY$T_2zp@H-9r#l$g2ydG7)UzUOZ1Fo`52t{shT@+>YvNoJ zL`-lr>ySwDM?8(dAqE~m8DN;)0s^}T8JBZ%Gw|}rb+GJkjP`A~?;g~gq$>&}ZK8SE z10q2mC?zqTK`;mWXWZyWgL<3ssC8yPEII)0bGox&diGn<5~@061RsTp7#V5Y$fVG2 z1=QbyO`;{P0;W;mQ{p;cuKM;NTpVMHHjM@SsI`0kAq0t+dw{*%Sn?M0*_y=%UPORy zQ7NxMho0ce8^E6e<}KC|qnm3x~zRG>yX_WAPx*E?2kDKx0o)( zV>5M#6%s*p<`U`=JmQh)eq%{Xcb(dxtp1xh10kq#nnom(U%m?91$F}gKktHOOeUi$ z4&HAbI7x8Xt)5J&gq47aEgox}11cymG+W3@t{&+8eM~9IGs{4(PUz|pqKgP;pqYh5 zzg&fGbD#b*!R8Et@kolx08vuS}- z{`}g1Xi$&0#2j|D{&sC-?w030EY$+WEf73y5d8r4u9+$m5IzFQf$c1{s8jOWJ2F7m zDIfjqeSyP$LlI*$J+!xxad_8C9L*6z*>VTUNUP~*$T}pt77rYEA$>yd9zPoN65y7F zH5U4F{!Q+_WoKg-P^`Gjdwqax2UG^E0EOUUqw{oooNh15|3zD<3drVxDeX?CV?ZD- zf>a)F2Ja^m35;I}0|YJ84DtQI)<9mc*9wT?bhQ8zxUfhh7O@HbQyf$S2I>R(B#odo zgcn?B1y`0~q9Q~rv96kQGDLqEbek@zokkf=z6A+=KMR`93!ne*`TM|Q!cC|g&aCDU ziU=PJ*YV#*!^_~@5j?v45a6H)DjoclaFDc!B8KPl6EH1cTnqcbg-y;ju=}4dNO76O zhmbVU|NhzmSO3qidB93|3QJ@ZzBCkwpr6A)(y z&geFMhw&Z03K)mL34gNir?&>*~2oGbyvFTa# z@wW-KL%w^NmsGh=L1H)rgBPj{&^sbup;aC_j(`PYEdr3hKD;p(b&9za=-eW>c8sL3 z#BZF)hvP0na~?W*sh12YPU>HRK{i5q0XI&8cJ+v}FbjXuOG5Wh{6w=GCnUN7FWCW3 zuoe?`12dx09}CB9Pxu=Ej2Qkm z5@zndTB>>)5P zdb$81eE>=DDVK!cDFr@g=oZA*w#Y;eZ<7nyW)YR(D&aq5XJe2gCu71ekv%w}#l{IO z_5k7ku=5g*a~b+X^dF9$Jk#LbKRG_hZ41-^KKzFVFvWvm-u~y}O;{J8cLe_nZM-^` z=D!!k@SH86kLaIR!+7Q2L|qcc0ezg*WpEm04!8pAH&l5V#5~~9+yYt{Si1E7v%zIx z2b=bjY(EBM$yf|p0;WD6g-n*K<&a_0+ARQqD1YRAYPKfw88FU@O@>Zof1eliTg#gLR z6Fvg1Rrqip$t6Ii5~n!f$?_`$;4lY!!aD6Ov~(kZ@Ws<&7&k)6uxL2oCmO-&VOPMp zT@>uW{@a;h?F+zza4rnZ0#X;I<=r>H%Lbphq7KtN{)qEpfac48U5EL!L1DmYvlswT zEr1CB_!>Wu?Sp3FUPpBZ$%FR*Nudf*|0Ln0Ymw^$wzTwwGpbqm2XZHM!6Rp&ds$dO zS%;x8l@Q>i$Fu{H@+N&bcx*ZB; zTP>+30$5@KFE)Ekk?$cSH(3XzAJDkkG2rJpy<&ZfjTJ~KenKCYTnoa0D(u5O#rB2g{znf z^mot)RBbRS3P_B9pUexxa2DxtUg4mc8w=Z@{-DBbG$9`CcuFd>T|kdd&1-Fg)Ic%G zAcj-re$Vbsi2dnX_xbKXip7~{r!5ejmo#^xnzujWfxNjtmo=GE8F32n=_6&FGglE0 zCO$hg2Vi1o@(M&&@Zu&63BDt-5&RN%>Bvb{WnunO_!jlTZI3XRs!@>rNK(!iQp|LDp>)a#EI|nIpcf% zx)}BJ+;8MC?Kxcv<524>_yQl+iynvA0eWn!kO&vH^ynhNu$m7(h91vG4j%l3%RfrAa>#ij19HT_ zZp}pO0!P9<@JWSS^-*jFcpn68Z-Ab|jUc=kMRjx3gRRn455ncwyI7hFSc4u==|l`` zbP;%61`5Z!3YfBO9o2>f$Zk=?TM8XRN?lJLP>e&YTe5&s%Y%_+U>@~p32MT+7T2y~ zW3G#XH6wK&d{X=o+U5}9gm%+Y!BfCJR~3!6I{E+e7N-U9EyB4Hfhtuv=J+MfW2kzg z5rfhvgex5r;bYU}rh$ z_0NKcWq@B#^_rJ(2x=I;o3h}KE8b*B-_6dA%%(BotROz&Vyx6fbs>jn)7+K*+x#3LeF{unKAUA1P;0$$cgjZpK=Y z;%_bmyqm@!z?bJyrj2=j>W&o~S6W-(aDEbAt;Zo}z(ga&ZdsoA-UxZOV+W~1Hl&LK zSzv@{86cgy8zGV-PNpLu1P7OXhE%`tk`*a_t^efn9c(Ij=@`TzZaCsnB$&Uj3*gQy zGBXcd7WW!3Nxfyco-1{=DRd^yDg=*MVYZao`#0{vf@>Xegbc)&!j2C%^tbRJ0ookZ zOC~Cdg^^Xvi_cH(2G6|l#_&8d6TXEoQ6=cueDN4o$Enb5sLlFK8gL%7Iam9TUYS6K zSsa*=Gvg1+`ljF>mr+I-KYdIIbbh(EHBQoG^Dmw+Rbt@IX1|*}OGWS~4h6p8#)3 zjtoRDH-Yx~cSJ^$=gYDL-EMNXLx*EDXMT@^NRZLFn@M`|k(n7}@*Ta}2a~6M9SY&x z$y@?ex+h=XF5zSfy`hBu|Hssu2SWLM@#B_|EK|ys7$v+*wiIQXY)Q7XC_61A%S4v4 zJwhmJ6e5i%DrMiwGGr}e-(xU#24kIJ=DFX8KHu-}_n&$0z0W;&JLmN}&ppSJ#tcS6 zh(+}l^&dyzfmK2|=s?*d0q`wDGXL1q2S6xRT?AS%o3y|*7;2v_-H(hcnToUj3#Nbg z(GWDHCeR2;egnowg0^bLy7&odLt&ZV?S)+iB@qRFQ`omCK*WdfpUZ*)Cj;9tjqtVeG7jE zSVgq$e!hq#Vp?Du&RvTrTMu=)pF@;O-~YFNvU|V*c&GxP)^L0=L~!1j)>e>)0Hn+bXi&wkRK?XO zZSvmKp6G~!5AAxdz1Nfxz1|cRgn+F%AONh?0eT9|)s$`h-@*5QC#F1rtpV)pVG2+x zfGmSK9sP!JG@lCXF8Mh)7{ zAjHlgtEP|$*b08MNq$&`h>4mT0@tW9aWp9N7X=%HD1}Zc?zJj72jVAJXiI$ki1qq1 zcaY)wz5!aBlR`H`*DB^#2*{cAd93CF1{5ct?x697#d_u{%B*C;@_5Gx_NVj#!Kyha z=2uV80EcCU%UjSZz>Nk^X;>f86kze3UaCr_skLQp*$gq#WB3e8fxU#(<1b8?6!Wjp zQ`-ODzAE~N!x@l}<~RDG#z-pGqKJ+~kSVIcev@6fcK_e9?_tM*74JG`#i|1k1r(;$#glmH+(BYSp;CE%;tD)?J&J2%PSNG__ zn5%!Fwjhel|6Cs+{{dW{z(U6SbCW~@?58OV8Yo#I1~^ENg8BxZ586Fy*J#tLkRksX z&YWR=m*icZf|8670CVOs3OkDDbH>ydANl9=R`Gl^{3#=EC_I_8_{)f1o-yqdGiU6z zYFATj)WUI`ij^9}H-Y(E(M^DP6kOAI|0_bVr<)1PNLSaa{3_;I|`DvxgUKe(WryEVSZXDGBh!0Md@Tq2N^G+nhw9 zg~rIR_wf0DXQ>m$I|acuk{2oHzFBcD#t^@Xo`2L%cp9Ab6Iy|0v=e~k(rUor&4H%T z4^J8Q5SdDu{_TI_7QsWc31l5abfttF*S_=s#g%4fKK8Yg_Q5aH6?=R+>S~lwyLBIp zZxK%WF*ks->1RMZcXbiVEu$!gB#UM-;gGuh3>{dxT|zQlPlb*I*MmGx#K5I#)7rLl z-feygcw@09D75$Q@uYLw6v0z9t--spUnOH)5LHUgWj}a~&S=5U5VwPbWj_O};8ob*@lK2ej{ZCiv2?|!~1#oDfZ3^cAM%YP15PlThxX5swy2`8vr#x7}#BUJ_IU6@D zdjWQ6$5ki34&1oqXsnT$3?EmS30-Qx-r6~%(?;;(u~YaTG@G2stx#e+j2Q|-c1hrj ze+1VFShu#OfwS>K^jP`gE80@k^KTp*+vL#jPl10`nkqN4rK^KhZFVoyMJvUfZ@9i~ zJPN%eqj5#FaQdbloF(FXrx0IWsiB^&&U=9cfj$$N;@`m?@D5SqlyV2VV?pmxDfTP8j(g=Ip|RRpr=N(XL1`3Q)qbehIn zRYRXZ@vg&JWnGr9|0&B)PTFR1H>igGZ#A^z*v^ft9S`Zwuk1}AT`Tt#D9eolh!sFD zMcbgR_N!p$_Q;NB8|l3-cgOS6{m&25QVQn#z*9KuGy_7W6_#ycVAK@!;D4{oW3xj@&j#AJOioZ_#9TK>a9!zgTx{13QcyGrs?c@d`FxMsNLdQ6VpQunq<7e&VPG z^$MJ{o7sSfkZ8!~-w+T~h~c2v9JmVGFwprAAkAH9m>Ot@7s~_uG6l__#%z83-%#JM z&~}U-0~N#f|N3b_`WgH;MpGb3K@ov@>@u1L>x8HR64Hj3g6N1Y=H*?{c7|OQKLL4v zhj$tVu7CiCyc=)X;N3e%>jQV8CEO^qX>f;wv!NpG2-vO}d?Ks77~((|b-d$HEU;pmz+pb`nTS5RNgJSH8=p?+GEcsP9&5}2Gnc^bRquh-Qt8LA zvfR*WVj-h@8$lAr%~!AX1*J~|duVB(nLe+=N(Pl=7(e@1<_TPO&n}s-gXvB5y&Zh} z)r#W*_Gi3x|59m&%rV)6Um_AeSDBS(YIXOvTl4#a6_y9ZDn}n|c06gH4{HkhZ$`0W z^o(}YCl!RQtMBtUs=QQ8&XsuJZ4x*$P$Z<06?#Q#E|n$N^XkZf5%!dV)v>@sec^u| zK7X7jOR70B@|nNnr**$e$XejMhm()n z?aTQUSxs_qogY49pTz=m~#7?Ut#Y)MIEWNKcl}z z7d(TxeZ1D3UoWFgk|9!AWtf9 zvsP2{+4R9}Y*+bjZrlgrU*dJ6oTj#1rO&FLG42rw)OrCr#W0+wX-bwUE9gPU2LX5z z{{SBCY7_d-VIV(y2PV3l0Mg+gjb+Gt(`Etx7ju_bwJmFduB`ol--bu|!*WL!@Pt3y z94J;lOUg(J9YbFnZG{VmQRr&9zqc=uZIo9yf(qzM0wUS}Am=)sWgP*o2oRWqn)C0# z7C9Uw1fpF7x!>O39R4G|ul`z^MbqgiSzCVVm_>KUjepc#V$f zipJq*uh3)W1L2$hTz6A|^Uj5<2r=1lCcWSFTAl$PGr+GE!d+SzvI09wrW2vSuw*mD zL4$U`7k!}03e$}ffCqBAf?zEUMCoxk!uq-hcEmSRP-M(MPxTbuV+vyiZ%2aB|EaT9 zXm$pQqix;-ID~raYSpF{!mHhv_rl&6z_D(Fl#eVKmG?AM`f(Ld9+)=zh=6 zdjx?-E6upkcnUf%kpdWLeL?xF7!p655|<^QjP-R-ZHkLPZ|8Q4w%lnJ&OSEu{kO#n z3%T}}#s^r)_Nw7lw=8~!zVA~P;nq~w;!Jdsb<>JhS5{K{T&t2XO))Iv#nv3#c&6f6 zazl7&jPHgoe*Cm8n(G)(!+wGYkCjZZ>dctX#q^H#p8?&}BZ_@a`eC`z8%iDJ z_b-hL#(B2p^}$ER74An+yi@hN=X4y_GUKm2r?2MaM@QFQ3?$h2bry@S2ngW(C;$bErKGVI3{Rp^hCZ_pMhD{@3lGfZKe_ROJpeYyUm`{>v)nI zLed~dgrpIIxBk&fgo#8Uu-7G@g5UXAcWoSWMnfwYp`Hs_cCyEdRr-U@KRtwOW<>I9 zpuCEa4i3xbz?<)3o4q^kaXPvY6#GRq?t=0EI$+5Rf+KD;UqOvpDk63} zfS>|GmH{nenDOi@&6A-__U9~Y+&>ej27QaTpPjT)KI;Q=o7eV5;6Wy-@L=$J=Ek####1Fx8e4JaJWy= z7LE~dW*crE-rj*9eLZ$;XPasXpV?*v&d!yMp}qF?9{X`P$|gps+G5mjUx}lV_ndEi z1YX*jR&?J@*4fbf+T%SxGM7ak8={v&s&t4i-aa|&^=2rzId!YPIOjnaC7geThkmi1 zb+}Mt?Zm?P=ICJGdSjL4O@inGciX-gX?(g+ex9ky`s%#d_ezZWCD6zI5eUBP4unnNTmoAh>_Ue+IFKCU6F^{!Y#K?TfI!PEe{j*mk2Y zC7*#aTyE`nP0j(FjB*2R!;}bDHd+{Ny_T`M-)B2AxJO~d<|I$|b-L1a0g7f9dNu`r0KmE2zQJ zXn0(SSW=yGq)K^EMftI3_#a}_phJybnOmo8huj%5D`rxW60y2`yj(}NwEjt=^A-Iw z*#6M^IHmWxwaw?QYAOz%N+%>4L|ynaay6wmWqhbcf&A@Zp>_XwO635g?p7F3F)$>b zlK=kpN)!PBYQ?qcgaupRGG_lbnurRMjj^Ub0C{C+>=ucwFZ9KT*$YFLmsiPcQ9be> z$@14MlOKCYO=G~?BkbAYCsV&(_PHbB zpI5bhYh2Ru;+N5HlGX6dusCXI9^iONOu#I1W+jMpz*_6_@3)tZp#{uB1TFLS%eKlI zvG3VuD*7YyA=+FZ;3yO?b9z!LQl_>PfB(djlVZ)=Vkjju`4zuw*)K%$1>iR6rnlTS zuT&DdMWGr^=ZbyPg9)o|CK>Ki{`+)<9vGjx6&(4a$!Q&7P}4(2&Xcy#e^Cyzf{ zdt%qahle+=v_~F{^*`@|((J~d4j)ATZCo7+f3!BQM7yA7{b%9KqkiqyqpjTuPww33 zsow7^ka&GctxOelU1zMW*F~4VxtZv}2GJW;B#gE(VKj!njjY@5GHyeW(tD|U z`r}v}o83WvrSN{UjgHIR;?I}0J5V~pywHa{^|0+ z^&2ML_c?thlAmm;xCe)fWs~jlX}qz8t;2C$qqMiz->s=;xQcxx%dFF?7J@`p$}eCU zDtW2p?RS2G4ll=eT=W>)&HE#!|_aT5V|@j8{|mGlnP5WKn4W) z``c|HWE<(&`{2X_1uNa)J2x}$T~UF*|(y8R4@hL5J=)|8&5 zdhuiI#~qFqsS-+T&)=ggO7d5oZO}$&-R!BrE($hl3MbP8+3sF0`1ArOC?w2XdC=HJ z@VKx0s%GcQ0n_Ol;NJ07j8&T*EsO%0r^SM2yedwlu0eP6$v;XTUt3qcjlkqb|1r%` z%Hk-wioE#*NwTI0wyBL70?{NBdMOJPvt}Dj2W}*w*V((h>FktU9h21@Om-qyef>LL zyur6>v9C{ELJA#|Gw;CdYk(1|&uVXbTPsg@K7=#IJklh){HOdqU~VD$m#)@ZNrAQ} zHJlqZ${Y*b8)!kqlH+Q2Zt=})=)g8t2DdY`=%e({KM%pW)6Rz|cNCmGwhH$^Kg4*! zuT{tGw!B|7OgP98ac_fI$jC|Hy8#WwQLq$@a@Z`!W7Pd5v>liQV z7YrOZ^YXD!?@y!0d|qr$8l~SQCJdb>c-ei{d;xp$pP`z?3Nq`POZzf6LNyaWXE5-- zTnEk|2>Cuusqq=r#yssE(AK_pyRE>e>XwS<-D4aBcNaJoG}mJ%@oS?%`1=;2z@TC0 zCQHq6IQK}dCLJ^VuPF626;l}kWU_%;6GFGeXlw@WAC&HFFTE z0TiW00<`xk>x_1be54j!=wJ8u%F7F%&~H<{HRTIe7rwaeQ69TC@TJP?5t|vTkAev& zY9NJ0;Q0pTU){Mhb>#*4GRsw$!&yK}j{W`P|aQa@k2RljTGVbwdEnjo?%Kr|3FdmjJO)0bb z%--|S`{+TEP?krDSGxdbFn8)7!|D6+BvzAerh`0%k`w$m3VZvIBf#Mj?4c_I6305p zP}d_0@Sb_4&BmJf^jWxcR=ka1yNWpq;zio6hlWW}cLv=o)(03o?(o6Q4=!Xj0%J1a zE*VsVuHff9TzMRiV$3MA*^Dp007Gk_1$+PV1aW|SXGO2l9H`K#c4&Ure}g<~49r?V zQ%}H!TZB+DT3VFGHZCh;KZgIx>g+?u)d3~v9s09>@MIoS#PffzCE}Y`plal-?PuZ| z1-EbS1412w!b~`~DU8-HvQ6Wv^N_?U-jHzG7RK|v@`npsX%0zW!1^gNO}a7Pk;c{p z(%8)CgzzowP87b+Z)>KO&f>F~bNaGpXRrQ^{xDb5{o-syPL2NTkH6*?U;hdWciHL0 zoqaPYV`jZBoFe;b5;*_Hgnow6DL@OsgX&{=#x0auwU@u+?5txy<<-Re-trnZNm>(* z-ssxRxoxRzx<1R4BY2OBNm+@}_zE7~r%BeHMkb8$%`_$(b*=~8*||(BN(xX0&1b4% zrN0`DCbnSk1ZNCCt%szlzi>`Rrc z4r=cUy*7D&c?u9d3*CJjD4RI!?i-ALKPSaAaq#(NaLs=3SrSC4ugIU z(dl%}Xi%sMokD=}bKpSrfJ?`AJb2ES^H{M}y&pZs3Ac>*rEJ}OP5@w5umyGr!_MfDA&zw$(nvBwO8s}q+G&R&UgQbpu zvxY-@b5PwW?4O8xHeAHiwEqzr2TkL5-^*@c76fiqGo`-}T( zJ$WweS<+4jF_gb=Isa_hB<56gt^qog6{qEKB-BdV8aL&0(v~xztRb0vzjZ~iLpFFs z&U`ULy+ko}KmAN3>(LXo!Xz$M3fGZP%EV8j?XOY#InvU?Huj3*4n|_1+B+N%o3Y?H z(oH!$e@5h$S|5z+{YfktOnvxG=`oB_gAWq4#no3=AvC8 zvwY16mQmrA|8diJgrQcTq@zehrhmHYizZ)3?J%QQq3IeuN;%=jyeo0R8{;wm;q7a-jPi}p)L87g#j4*0B^{J$M0DqibdAKKvqN}x z@=NoX^WO>yYf6ylOz*7Pz{$Z!aum|ijNmBHoBtez3VF(Upb|cNH{D+Qn}n-uzLN?> zfG-5U>rF6CfU2YLlk1)bCr|KaS5!`Z58OKstAtBI3(_4Jkh zuDznae>XC4Mq-gRPFQ|@kRDnIhfzx4C>+f96%S8l*LtVyy;*mb zhAk{vTmRi$X+z3QFV6Z9;2K)lk}g}hA=+~4s8^^=tLuN}@o%0AFCP~u!h{tkpOeXS zY5&$??6)u?Xzui$Z9b|{ksdkYZ~-IR?-0ANy_1W|E-K(f(8abYTNbsUpvhma4}F{H zyOwv^lGlb8XHz(g&eI{6QdFt0VQasL)TMO&OZyI2Mvi-a))y>%TK0Clhb%6h?Lhe;nRs2Nv zJ__SRV!ta2+o$L}(V*vPtg<=tc*_=#i+TEAX?L+txC(-~)P>_sj|z*-#q%BW(j5$L zUN?7%x)=V_G^Rx^N-}B1@2cJdHtnt>X`hC^AGdyWDLT+N=w4DfONmwz*-m0J;|j^Nv8dkrwBt=+NPC)xx%K z?UZwg9wfRdaPvM_oN30_7nR>5aJHH!9uw?xW7^W=7jW+QdiFiT`rYVvVU?zmhc_a; zt;_kkALPDUtn?%MEX^dU%+CwWmzf{;+isdEd43hcgZ**PdcT#BdNxPJl~XRoZqKAD zNUQ;mG8D!=vo2q7swiashB@Lj#E)Xjx~qexU$HPZpD!xk$^4aew&c(^&kWmh;Z3(o zYV_vPs0YhSw&gn~-sa0+3Rtz#n5&R1K{-4~`RE$ry!kt-@e|#+(yPxSa&`-v0~S@& zL+YtuK3S#?>I@>J6M8O5O1qM6IPYgIb1S2K==(dOi80}uXuww)mFIw8IaVPmc3#`k z`{G4+ndq=@J?onaY?j=!_qa1mD;n*(xyZNO!@tNLlw-}HwI$Q%&o$hIi6vE&av

    g50BM* zt)?2y*YQzm^bR}*i%An>#x(G62OZDqKPwavh7tgVVC$?Ez{t7?M-cx`}cTY-IM!-39g$nt9E33II8 zRaI>;qiAWWZFgkqeD|BF+F+K~a#R~%X>Qev+r&@GS$5)JEyiPWZMtf&qG{8&XvC?x|sx}@Etl0xWm{Oh4>G`=}nuWARVl5hepEg%k``4m`nlv^IwI#!sM5XX9sOBX=Qf0JAz z2V5^`iK^oRi9&}p1*co4;7rDSs}nY4n=ekK=f+q7G>*1Ybz*y*l{${?|6$9a?NOba zbzbNDeik-XdM8+Qa(>yTI{D`OUDerPUT&gbXQ=&EjVdr`M{#C9qDDbMv`^Kj8f)57 zoYOnhs8zTtjlz}Grbcb%4v*^caYv%+S|bjIXcsO@>PY53Toh><=xOpmF79%-(B0A# z;b!Bc7r*Y8vItY6#0wU8fnl!j)pUM!|MuUUUlmBreD2a+BY)W5?oi8p+b?|Db@{^^ z4lbC`oL##8@lnErnM%afahp_|%VM}FYpoel!D}aD!ew4KqSC_;P^hY#kE5``aejRw zOepH$t_KqZU1wgk0T+)kY+}^9>Hq)E9yYq5OGo!KB=p|*MNj>F%pDi6SX24zfUA~W zQgU07{%5imp1bfw?1lTXs(h!-UU)T^Qz3idQ+&QWypOjnK=UQ)Z`toR;rg|=Z(fqw z#oB*S`{vEw&5x|xTrvWu^`fG6MK;H0?MnR|@kw%kUb`&=CfDHo-K4=>$hYp=vX` zJd?mnmC0y$u{gN~sZq76mSLb{S;X-y#yN&pHbXNoU5VkF$I=xV=s1Gs5u5-esmrr| z+<_P8JB;3WNOq<{r>IU9b17vJFJm#LV8knokTMo=s)0^pp%-JMMTYMT7D*sJi(omy zIZ()YpZux=FJ2S$;iQyi_5mj_1C(W%fnH8?b3+Qsm42^yXj3 zd~nB$lfN1^>4QzHjx*Xgx1V}pgM_Za24-r_ZPm+vIp%+6gckq)!=HSozJQ8w=EhH- z^Bno@hy5Su*t_?CzZz&{^1^N39DMqZ#oN|9?3=E)*R>n$TVMX|@9WbW`@ekq@$Y`hDkd(z|8-{* zEVuAJ$=BtQxSNLVo}01KS#Nx@w&>%AL?t$7!e_DHe^hVXF_V7&%l{q!#-Hcy{Mn!% z#$9@i(Yi;Tzq|a2CC|;-U3T7!@7{I$m3n=5SiE}Lcr@lioft>tYkNt1Db!;8gzsnnW!P=!_!8%?c_QJpi}f+i zw`bpexSYtgRvX*(yCpJLQX6%hV6MkV@a-4*OkiPAk8hcYgZoco*9kiDSGdx zzg@fVXyV23`+xj{7oPZs&Pp=B@wpR+l+R=OGhQ_I!{2^F zo%TGkhhqww%`Yt+EXg|+HJp@Ef-CvI4>$P2zO6vtt4;f=f|Z*v2d zQBRSo$4Z6P2%l}U^r>D};y@!dTT@eWEq~w+X$3(D8|eh9;F5&314wY_`KNmQ(2kAG zfnK&%eWSTpk=hQaO)M{-K4aR%nN+heT^nNV<=){6!@a}xqxj(z)f?snF2td8K&l=u zd?jsajMT{ac!$>pho9pezF>JUFx*SI`Wq`3Gydr*Q;L>qRNI^@7i6zxpU>4}bV9+! zY`U-F7Zt$(JPs&cQ#FP8OJuL`(LgWw3j)lnWuz8)iz-$X2nHH!tLp+y!Z`98Nlpt# zjrLY&1TuJB;M*o@P9#IwHJNU7c;3W_vskjmK(M*7j)n2+RI@=**TlBxy&l+Dmq;w? zUC4GkO^~L(F5K5fn{+cPn5Hz-sZPYMvp~)LC(#i*5ukNP@))e-)S+BF%c^sQMxhB3 zdZY?F4l}Us^Imi}(hE-`-fp@t$aYyZ^^2cZ+q79~&<;Gz$xHKNxz z(7-AZuFpAGalbh_^f*AQT>URSx? zyyD2GabD0vsSe7^%4C|YP$Ol`)zwu2J*hXG6y~OIMR^V^<+-Qi4|WS>)lmKA<8ZzA zrcA3}ByT(TuHxdr(&{EC4{Sm#cOiTm0#T!<`>$k$u3YS|TND`QEv|xjw5hqFfiVo~ z3{9L>?1c-{rVQ_tIsqNcRgY={ivmE$zo5Q3$oi$Wp}Gd!qMkD~i{@v%5N`Zxn44H2 zm%j-&6{sSyo(%6Kkf(?9{TI~F%OAKM&I-1GWl;+h7yFx761E))EDHi@KEU{;Kd3J) z_Jgnj5TYT2p^lZunTi(NVjE3Le zsk)Y}I}4X{Myak_s-l*xW4-3T!u-rkUqL}WtGCz3 zeZ+sg-khAAJao+mrJ6q|N}nS=|N3jE@0aS0{2Q5k;=gm#{!I`o6bVA`5@vwQqb%Tqrtv2qi|X zWc1FIo*qXmpI~)e#no&k`KHC^Z#%d59S0Hy7PpYPrC4ekPY& z_m+xJ-liy-CJYW6SVv}N`AptfCJdyO0(vcU&ukM0up-y&muoKC;y~q+3bw?WeDh3L z?Gn%;uE@(Vm)J~bVRKzYR=zn(mbq+M=1OLoLo+4vh32&80%n>^C>1}`T;t4qGg@Fq z&80Gz!dwV*!u+oF&&lcPmuoIt9ovP%4AM2N1-*hyiyjZF0aWDsEV{sgOkSY{89Fs# z+w2O@A!0d1g>9KxH)kP62}qy4fT-nB0oe9Bh^>@QUik>1MY4TF zvC#0#$|nj$zCZ}d7Sd+r_z-Di2%81q`KX5^N>IZzT35!p0b-_b>8S*RjmSAR+);{E7wDi`a)7E1X_OGnw4Nh-C6I z#Rkn2Xx2e*7g95^kE)7-93ixjGHMJo)UfY3HaqxCeU|B?^3?}7SMRIe*a#8t_xe8tc1~xb~j7bXzzXg$(3iOl~3hpTcXA17-ra)s8 zbg1E#CAjs|S$>*TvmE%_2+X#Mn4c^7<_K>7bzPC0FL;SjL8+vIyhZ;!F-{fik%Wqf z^i2U`(K5yQW{UJO#f%EX0I`~4iD|WX$v#&&3;F_FVbCBF%wLz;ks|s2*TdiqZtA7bteyqq}Dd8aFGsOBt7>0r#BdbeX zAzDs2FuO}M{r&>Rg&vmEHDmpn3Yt?7%rojG9Zpu{7$kDTF8M1;`h4p0-6S-iGFCpC z>ESQ4KzGfLS!ntW%cvh4GuCH$&Xb!jo$#>9J1-}Pg%{+6sa-d5+9XvqOggEG-DKct zFTotLcIQ$Y$`)|m1OK24tUc^>xX7y47D&EbHtNxl%xZ0YjHPsV}l$Mo9*T|{WKB@9VOWG zQ^*!?nFYN}im%6Om&&CHZ@<_@NddvWnj+XjQw3YW+)h11_K*rQO|WenEzvu`;=N!& zue(3H6w7X+2)Jg7;bA_5Ot{MJ$!S7(DcO70aj0NKLR zapnJqgBIPcU=;D46K&Y3F6>*t`xE3R7;JKo=Y)a?b3#sbman&S!aA3EPKaiuX*ui( z?F_xrI>}SGJ)!MGc(G!VJM_nG$JN%dj%^2H+D5m5DUO6E+-d2*D||EIMtDRz;R(&t zmNXG)vxuSBTHcG=_K}@WDiHMgftLMho5sUij;RT&TEHORyWgt`tw_;A^HP*hFvS)6 zL(4W>Xm86_Tj=G`CkHxMCZW<4ck8qirFCA4mi~w0*3uMLYmpm+w!Hv0PYn zzlxkkqgSNAvqUeo$kEWcl_Vwweo8tFRQ&&>kt=NV^wA%v+i)Q?hLwl6ij(u z*Wjov&G2YaidD$f5E5ggzsD8M(QWM6ENpEacNunGBe^@)g_qZV3mchGtd0~kw%c5t z1xy@Y6z&&?h2ZWKFAgp4?yiNR#a$O&+^x72xLa{baTa%2eDTNsN#4tw*IN&Js_Y-TzF>mwB+zYEu92Ar0YP z{1(w&K-(v5(=Ou4t?#9qV(!P2vC!N@loZ)J&M(!SncUZtAGG?QivIhAJtwJUF2Xj@ zX?}i%zO+4Vjl%knzOX(;N zPUQIuQctu8IpKu`JeVg{?K4!USGFT)6RD*diQF699rUJHb`&XrZGZ`wT1RKFU z|K^icjr;=s)3s~`sjLzJ^A4bsOZqAPC&G~GC#oEVZJmulha>~^ctG(%Z;>X5DM_3A zNG={@i!>3R5Xr`Lw7yONr!J%<+Um?T=s&y;%f4O3AW;MLZ~#xPA|_0k{4jJ{~`&SX`WF~5-aW9inMmfitfFOW^D&1e)<_jJLa zNyCp3109Tz%>sxi!9cLHg9F4^9D6wI3`1tQWZSoc3K|@9MKIg2%o%_okqA7}UgGqp zdH9Eep$SuSkbetA6}1`g7j4<%J69ie6}UMI4^=ejlJQ77&1M7 z6`Fhd4#5%HpO+i(w#F9L8h~X1P*}zhgMNw}*kqpj;X8ls(~Sva90~+b+h-6ly}s*$ z(fT-;z)c7{Sb)*vjH6yycu*tO>ovLl8*Y$;8wc&PWRTP{C*ml>roi`e<;Cux#?MY@ z5aSjzBw-DWbPd>-UOfCg-TpvKe#0=zLRe1p>kg){9}KuP=5YsbZz2tKZx~-pM}{EW z8OplQ_cbH(VXsNM@Vt{LK-g5siLs*6HD$EdD!~n#RcLlV5HM-KwgS?tG z?SrUE-Lz8ZoR2NO;iV18@%6-2&BN|aYzoynYrEU36Y5k=%%QVVmwI~@_bYCL_sF&f z{<%JDd}$qw^ys`N79eYT@+*+*LeF9A-tG3*Db=>e9K9#FC{hi7g$U~Q4m9Zl3qaoN ze5ix^lT0%&&}s9~2yb4MT_QS8vP@58^7}wmXctd4Lw78mp-9$%6i znGkiidr0@=DZH#Ev%{JHqY6xZSv|E|cCuftqVP?SS}ih(yxT^TUezq!tB*}lvGF75 zPVJ!0bJ^K>?p0#Az?xK={lcLLoK)0k2`DXq?aoB2Y3e>2h6jFm6jA-X=VLe+GL1A| z(}!=VGN;Zz-zQ1c36CjDytlZgP$cH~BqEj0f9^^8?_j}?RNJZ6Ik5XXGELosrtyFZzX1HEN!zs0Ospf5ve14q3NM_rtmZKcVg1zp60Egf})lEx)V3{IXw+O?&iA@lXz09S-l!dV)_u zgirA;WX?mX_4BQW#XdrG)2& zl)1;gMHN7zLYGywNCDU2$`1tk}Rc6(ca+yjrfO_K8??y>Ks zKLGw!jp;1vV4Sh27jKJywd9{gCrGaSa=--%2$m2HUJ;i8ON7n4U!!##ISO5mJ&sjj z^(~q0?2!{}X%kE{Zy6&@@oi!E4hvS|xbTj4qw`xFl4%QbbVWl138v*t%Ap+E!hH8D zoWk*@5x||a6)5?gIaz)ndx*OovOV0z$W^0RHw*JRX^2?iO%BrwEw6C-o5-Lw)G_9s zy{||8`N&0dz2H)$j|G*T!MlrMI@-C(;>GaH+v!QFKTwi0ddj&AxL?4Kzq8^}i=;39 zPRRKX;zH} zn&L`u^nJ>3#Z*@0de)Dd8o2VunHu1B=Rx=H62>y*Z94H;Ql4iHR}#y=jABHSI<$#s zP&?7q8~rOtgjnW9*lrpt>BcX#36w_B=!Hd3Sm6GJ^v)Ux3f z(iYwR5v|fVaz-fWP{i$AY0*-o3b1a8~$~*8lhzq>;2h=*J#O>IGn$kJ`n&y`t>ZGdRcZJXv z>C%65)=_vKcVs(99#N33>M;9?u?$Lw-X?iw>JzB`k{7Gsfx%-wa|$`E`7jf@{u~-& z(BGrXu2K+S6xJC0U1Wgs#Fp9j_!G55i2pmNc}19$oYr61CXLtZ@5e(R(iDwM8GrL% z`_8rR8uokE`bFPNts1O!8QrZ(NioR))k|T3a!$c`dUq1O)EQ+1_Dv5;(!DzuP zi|;+Ne}@KOOOBrg)4Zmh9gOUJ?HPWCEN3?}xx6C%A<2&54lyeO3h_rjIi~L%@aAxV zyPbD-Moga&m~n=ujclLgEf~>8RNX)p2O^XHUmW5nnArT=UD{=}D7Z_Hb}#}S>*;@< zTVuS|{>5U)tEL>P23G)2C~~b8t$e(NHPNv=$eY=R(?1r_r>ZwB@{X{LYr;=&yQm6M z3|#U)MPtehee~NArkV=z%W3ZbWf_(Q%z8;SE>*I4M4w3;Dx3Ze#+_eAEPIkYN;rBZ zROZXeboxOspQW^Jp6vx%(V_1&&6Pd>RsAMyn8n~Q9rzmdG6MY+V6b$%0}T_QKJ`^0 zx)Sl0Sh}rX|K?x6!{6hsWTm5OzRuqCPt8^Ht|>kI;IJem zbG%MbMur!yd3SDy3q>tt5T8issM7Ay!^gD8L&x=YOkzOF&9p>f|yy=pM0QH%R)g@ok0#nHRCi`^>?zZaDg116yiR_Q zqmHr@?nSXmBI{9JExW{K3ozu;p&lDtGYR_}n&7uIHzt+_BD8fe8m^n2_*%pbI{9u} z5#B#RVfCfu(uvKrHT}|G@oU~s`7e*PA0P@7U0b)Z#tNFotWJw2mSUUQ5meCx& zZ3<|X8fsAJDKky^d3u>c4JvkL5@rsH4x|F>1v!W#@FrdP94x#i73%}aeoOjczP?&? zk*;n%Z~3qQY2};x*`jn^qLa_gXUJvgZm#;y-e$&x$;!;^HX8`HsX7CcI*ZKpY!Y(t zu3gNDDCeU^5-fr9=Lmcs?RHzaG|v>j#etXXPj^qM7bPllfI=-8m25xHEkYgz4d-BB5Y>m0|Tp5Vb0DJ$qg+QR|y z{wU6C`qM;Ocfl4d=EG}#f?jII(nYBEV7sco8qzzk_rsdt%EQaP3GUVgp4#7g`fZBC zlaNiZw$*oc#bleqQ5nYVyxoIwU0*yUKzdE1d z%>QF9JUhZPue4TkiGw$!$lHol(&EZ$>~e8axZ1Z?E$q_jyhB?Z*O8>Fx@5AG5v$Oj z_qva`(1joz6KUH?0l3)ddji|k`E7IM#VT1bkB@t^vczrmdppc?Ax_8f9Vaoh6(ipN zbB%av=9k(xH6w5FbR-`~1-ukH-3W<8zw$*$oSf3|J)dE(86tv&+KZ;0=ty-!Ow>p1 zQN!D8X(=e^6yBBvQ>F#i$3j3ykxdL;yr0Tr4Pd66ke?V{*P$A6sX}& z5QyAtBY0zl6akDJ=orTXLvNp`jZ5U3D=PTmj{|I?$mR3s2FE=u^Lt5rI<__%q*-*W zLx1tYTRZRPteCLajp%toyqE3kidl1+{>nZxN$-1v*ag2XD(M>uF~)XmYn356Uw!|X zod=w8*Y-4IH$F>l%xYvF{3}UxTdIvg7>F|#HSSXQwq}kfOc(pKerm@9#R$Fp9(O+ z6VjEUuIB^uf(clUYsXmu#xQpQIMp4}k7Pi1YGt>2;YiJ~lRq|avg0${)%)$2p0kn~ z_Pm<1w$LQJ#(77_r^DF2dor?BZMPd`Ze>2i`i>trq z)7aMr0i`(#Rn5s;6$|e)Y^tfx|IlG{-!HJw#Den+Dpn_<_!9rxqT3J9V89ZSik()@ zdv-Wy#(@6%THYgqV_4(IDI!74FWfwc{snf2uL!R=0|)3Zu9Aa{kCddgvSs4NUZou#R=3ER}YkzpZ2(3)3&Zv#KZqzaUu4 z$N2=9VFgMd@QF{Z@-F?^+!&KoT>I%Rp-P9aFFe)%C~I7!yjZtZ%%I-N)YjI&*@^Mf zC(Pv6TzCu-@8Un*UL^(3;Qs|oMxyxtfywGVQs~2#6W#Ff1l=2alB{ zY|-G|oOhP6 z-GILpZmz|^bK6&}^i5Fo>n);01#o50m8@mr9dMlnRb%ei(N0huXWU45ML3PZqW7b; z#u1%Mc(BG{t+x;mf5selji$IRP?}M@tU_DVdOl$WM{TbwL%oFVu4O~+vHhbUb!bks zZT}K(kE_kPkZq%;KdjZ6i7I_A=?O7K@5An+vK_@bBTc^+4e42^@8r)G)9XU}Bc$-hkL>`eV8m#630&=;x+fZ?Hr0Q1?Hz{}!Ob;ajx{cxM2|I^ zSA4Y%?VIhYZ>ws?1Mkl|zctbYf$xM~d$7WNuDv$%8yg!tcp5h)1jPWI$VVbcNxsav z3hlyh$owfc?^1eEvnjefU8pD$l%1a(*zeK%B#?3w3AZ4W;y?U8ti&H1;if{pFW`-U zmpx&y)jYJ9i%6IWoG`*(8|vN@&Q%Zaf(kBys9D$?lba}n<*U4?DB#6N9?bSW(Aeo- zya0Y3-@!hA!*3?Yf}D~3iAvm2A+GXRC#O4ZqkAR(=WfY8Vx7+LZC_NM`@#??85xi0 z;7_R;kATT3SC$hB?Ns)b|m3BNpmELA`zkeFZ>9b_bm&nR}-tz+&*7m=CW= z4}u-ZbeqoNl;m65_TsvfQw&GI3eh!#nP%uUppTF#rxzFZnh52i;3EF|;}8BIx;!ML{4zT=W3)LeT5X6#Z7Z z8YC9>JOMYprXXO~k>ZBfCiRAZ;m&wz4qy;}cEaxA7$n2s9LSr=fio5Dy#$oQ`BOk7 zgQ_`|#dm<^^Q4z-pbxFj+p4f-5zw~SF%Eb$Vkh6+D15R0vwRmm>J=RM0h~8m9G|QQ zyf>=2gI+(1o6#o-+WVK90Iyn!W4<=z%FQU!661CN;{x^G*AO$@5yuLNZ}E)Ku0NsT zd|1ivh{4bq{wwMu5^DcXz3)vLyb+TE=N3_|@DgaaQ;XuAlK_z9a|&^U+nNQICMBa9 z{5qT+r?T|z72QrnEaNB_0L44mgF)(f8T!f=bRh{-#2A?I4)-3Re#YoU$G+ghuuvCU zpu6m}@8?Has$hsFiZ)}-zNa?E3G0D(K_2u&8NgqlByQPmdp9`sqr>V2Eum7(NB@bP zQDEb^3P1=7Hm1w-##sIE8olEw{Ss~VaYO~a4Pl!K;Emti5oX4i&~YsD_`=Y;*(Lv) z2pI3gIgNv*@cl^vymTrE+ButV5+)X9@A!HnP~9_t_qb_ZnSzS9Ix2}jh_+)(4F>9& zN9~p%Yz*d~XYw_m2%o6Hjw~^7*q(t$Z%9W157>vtQgby2Qu`~|7(y;asaPZ?W1^g! zFl@h`e9^)D+5)VG0y2!Y#mJ>~OE}R+xyUY<@3Chf7@_~q z$fw~u;ol?o0|?Y3=)nI(P)AY+aso}^d$s?&-BB_TX8tU-PklSpm+AP+9VA4)RK0<~ zgd(&c2>1)Y1C+s?V!815k_TA@;Q^))`Ke5q-*0d}z#1GBwYL$#0oREPr4;wKVQ69$ zrwaNQWEbQL(1N=|$pp?|xN!FxZ2MVs&nB4s&UBIUY9m!~Q2u=8GU0y;Dqf*r<`GiB@cUp1wEOOw)sG#yVmWp@s=$-G?x;_r<)ORu zw~G9IpNSh&>kmGz=$GpoC$n-?YV{A4&&3q{P}>c`fP* z(7#?&ENC2Yxm!*3wr;Gu7hG-FVA1uakX~V@AOe~MP^%EJn5vNo6#Yuw{f=w*R4KHZ z?m_%{b8nFh%O&9Vs39ej2O+*XD5GRNcAAi?8xxGC5u^3CJ-H-m!)MpIu1hXb3~CF{ zNgGx2Wh#FiBU)rRqUShbmP@oUP{4WsmM2qcK5taQ0I!e3(Faam4%1!p#`c*K>)HyH zIlvk&b>n2ZnYik--MJv|`&|WjA$qU@My(WdwtFnEl9m+ zN&6E7H&tnbe7+sk^Tu!Vx4k!=O2m0zXPC4ke}$0VQmd_OM8r*Qe{DjM+}vV{}0yD2!n1an)_el0A@xGVea7!F~ z{Z`q$4R3;XDmMj;1Lm-KXr?a=O*$946?xS=JwWTO#k>tY5i~4fk7@O zcexoUp6fa7c zlTaR_g7P6I_AYfTw0F2arJ4b1+4Iy7Ls@Ub@NPx$ZRAmHh-qg5Gs$1%w-BOSHzMroT~c z=5O0*+H^$1 zPk>hzrv93%F#0E*GlPTKN~);0r>j&3d5d{7e!1|W_!35<6VgO^C6|amOPH(~Wpe65 zYfNa5w@RMxG}jFkf9r5tHqzO|@>5E+Ceuw7YtSfOHS(#N*x55hxbG5ROgUfmvn zD03Vk+$*n`B_@yK)*xt;QozyGa)6GPk3ZZw)6r=+DfzL1D>9Q)xin7w-}qj|8g9&U ziX^5JeG`*vgi{paU@0yAB7-1KY^i$R(4qKExBEec!NF!}4-}0LD_A=&U=WeCwJ0BF z{Aln9kXfJ2a!4q>w$AV4#zQzN>OZ6$3dvR3=bg|KVH^v?>9qp{pBC7AI!JhE(LX?g1tmOk&8P4i~PEnx+hE}gzE8LvfJo^W$Fq9*-j zvMxt1HeaY*>$UZ=gOAyrmUU~0Pt8w2l^R;X9Q)ZK6>@22?I89^NQ7(%_$?CM(fSki zo*>*F=^xVd_Il9_YmQtsa^{LNt}lJgZoiD`_50zIs2R}VB@_!~n>J$IiVrH|*9jHZcD2KYcO9y9MWw?p zb~-EI_f-3UaYaMu<-2K~B77HJpHQDyvvY_uPX(k3Ul-W=1=8650YV$3zt|2%-;fEP zSf?i@>WD?o_^pJ`?va6Lw9g*hHu`n9ZSd({MD=c5; zIu;>1m{+(s_m5ybP4ygde8XpV@B2(K#x-QhMP@AfDq>};fPA0K2Jv#DwQ)4C08(>m z|FgGFuxMjF;N-lb>ES^D*{!3_#ULwPUoEKy;q;$aZ|LE{qp!YaTgD>wMLkdjsF(6< zrI(lFBl~xB!gGxP)>xtkTxDqz z=FD;*Bt><};GUZ%C++;)$0qHbLV8p^X?f+%pIwmO40`kWyxP;8N)jL_P@gsOB*gm zQUaB&FwBe9SWulKs9_`ct|8WOxvUM_kX$j}*+U{@;^##K>c!yIcv}&-;c9r9%l#Tfhb72$(Sy)+(M@IN=iaeWms-ijo6s3w6Q$0ov-D?i z<)wDJr}%KDn#Q@RGd?F|T#>t~Q$Cy3 zRrchn{hSsjf^z4bEFS(YS*Fp3!421Ov=EII^*5M=8N|Jyu7g`0PrrJb{Y2JkBNEN{ zao&OsIlA%b1Aik)3zTb9k{|Trxnn{g5sqzrydyZJ&x9&q823Y*xnMx#O&fPT%IPii zFAVB11%_9U@N6~yK%iOw+indnRfvh%&Cg=!KCYW{b`+z+=tEW1{lFb1enP-pnZ}C{ zTKR#)(7^{`87q5^Um?H|Fpy6jW))`g13C~FFlvBy`SdZuBm-NlhS2W=Lw79R>;>*X z0I^@(KE?*}Rw>Z_`COTQ@zzLr83buO6r|K$8ypN=9vgRdg|RY1>i{>Ms9T0iM%a?J z188vNtPGs0#u0ckIzozKtirt6rb)aJc>OFA4!}ekg?c7=F1b23VnQMbP8hKf^N7Sa z7q2cxiRmMGSJq+5$nbZ)21HXGs64P_WA2gt1EFRp{&q#7{PAiO6Ho$(t(mE|urN^k z!O=KEE_^i_AJ37DnITz`kf8F%Sui#R=^h&`MJ9#5&L~C2+v*a%dUH%+k`4R63Z8ES z%ey3$8_7&HCnH5YWoBEm>KsxVoOy7YPI1?0iD5A|ayCF8CSD3e&nfQRqX)fazBm;MINjaBc(&U8r8_#%bFrKnqv3>Z~`yhY=NwW6!liNjiC;h zhEq=LPi~FOa)ewANBxHAhbfm>v_2aaw!}H2qC$PSd%cy}$JV(H!sdv0j%%jhKW3<< zFADfs<`AZB?JrGr0orROk`;odxYrbR^yogH#w2CuyAuebIHey2}UHhd6D$p zjWYTB6$J_m=zote_=W^=gsE;z-}tWfcjXl4%KL8_PY%1(Sy{B{;SGuHO5d=3Eh!10 zEv0)^pRu4~rayZLPhGGGP4(|VC@h>#m}^JcT#vk00|<`Edk4jZMUKe}*;vx80cKDy z%O;|_c^5;IsJHA0!UEA;&^+wUa(E|Lt&p3Mtg@w^5$k9l? z6B95`{T?1|;Bxq`5CtTXovz?L5$pp+0w^Od0$pexGt?j*zHYc;xYQeEDb&ILs2Lx< z7z7?(>4WM<6$H_DOY$;C6`sI|P@bsP_v|_<&_MOrlVW2N4u;(yAQ9M6$-=D1)T^nN`%jZ3Fny90GHM-y39O0t^LLpZHp+(5?QZr3WZAorG585Lv6n=P9_Fj0t8k^FLr-8mFV&j2*XO*%h=of!c5d>0 z)vX+A4;&P85bq|7iwcDw1>#5ifz$}ucYy^^i~MqwO-W~rFr$TeP3^m%L>cyq6kz=+ zU6V_ByA2HOt`37%eju8|%5TcA=&xd|LKd0jpTSds6Vce(u;!Q{x}`bcb6{)^MR*Yl zDhK4FFhxFjeg-@t`JoneW@EC~1NSsKf&Ow6jDcC%5z~T_*jqW`_ z7#&L5>lc?_#V8&a)CbrBlmV1cmNtVojuGF}OZIO!x)T5=IBx*N;J@6`qp;@~ZKhz> zB;Hr`<*zN^K&*Jp+F_Y&GU!R=Mq#tqKehdWQ)slBKa zKZiBCif-3MDetRVQR}xmH5wpm^>^=_tv{pl+l`B=HyLy{LzT?IRP|BwdoGDZf0(ZC!Y`4?Te#X7gs#EEEGL{5-exYPn#zvv^ zl6Bl%c9jVsYz|XgV>?2OI?~4N(1d54OkqE4O)nV_*Zsw0r@n&V_G7vnpSWK;VOt_( zLwt<7REMLcp5rF+@6oNO-!X3`?>`OsSRaWlnyfXs+2XZtt~_7;bG(|_JTkMoeZp@B zwgm_a+7p_573r8#zO`otugNyZEgbhf+Hx>Z{LDxNT1`@e9Pl1R>|G(gHAO1t?C|aD zQ68uCVre$X+H}k;pmfoc#oR&_({?#IyW927q{F+jkFV)-ZNIuUAMwaaxqmDQbo8v{ zkDIx23>Kt9tXJ}5rU3nGh?sN)buF2Br}A)svL@rI(6Z{b;%wbE+#&)RnngRB5D3`$qD05jlQu(gSe_JZ!|Y zzmQ+~e#!S|Rr6$3drfCdi+`0iy`4g1`I}Wyh8Z3&igb5CTDMJE{L71T_s9){RYDb*3g{*t2@!aNG0v(KBCc zX4$ta7sdK1ghMauFNXu~?I|7Jbl#p3ElEJa#kiy8)LsS;fBH)R;%03Zu2QKR8rwYKEY6abTS39c` zFp-h z?vOaMOQ3eBr&sP9+kRZ9K(Ph(vXY=6^+V0^&<-9F( zq}x|*n6EHH1<#gLZjGAUDUl}v!7Iz+ec}82X4F|Fac!?3v$nTm{vjmF+oDrXVv96~ z2h3Re*}1EZXeZBc>L#xZ?420CSk&86gP)&xZ^T6P-8)c8VQVN3Yr^tR*0Z9J_3J0_ z_dYcqmw2!#DlRvT4lB#$?FD9GA{BJ_X@=7AiT(x*i7?2f!S3h^U(MhrFi27SUc zzh-M`MR#YIeoP&F@}6g+h~Q`F6bUV-5&r%|%-`7wGyH((vYZp4xtNU!dV^}9dJxj9r z6Hxx|patv*hGnd`UG_Mxfkl57!giP0?GEDYfc_{F(TR--uiX-vV;f&k74zPb!p zT4owwHj+k$tVB9r&p(X*!6u-7Z1|V+hk-MuukSwK5_B=YZGJY0TlZ%JdB^b=MI(dY zUx?#QG;q0;NgVOX`yJD$nI=)JJYtP8nb}RBVsyiLuaHHtM%*{n*Y82BUFpM|gWW6hAfQXs-V_&A zPeLd&aBZ$VsT6x+|08kOHA~yp<<3z#SXN~E56eGa52LzawW_mxL(%?oOh z=zs90pI}m_EVP%N*wd(67I3Oz-WO7x1lZ0zhoz@M_nYF+v4FZ>5Y{(ovBC%*+l${* zyB+G#Kw>mbO4AR$ci464z1>sNb*4;ViHIVp%u^*VRuYfsxoBTGg1xEWjNn{8_o_@u zJ1fjMOYCgF+huMk-_TA8Nr?bn;lZR-LU;iHEPu=m!m)tDf*-Clm)n3AII&nkqHPpA z^4uJ?Fz69LiF$*Geb9ukI}q{TJ$7#j`=Hu9aP$Ba1dF2ztOFdPy`o#}N>3Le95#BO zEE%fKjUjdsJ2;0-@1XBWW0`(@=W4s~f(t@m=n&XB!Rg2edT$RrtU34aYcAY#XYQei z5%P0Y?xEQl;JGFDP;3o_{Nmm$Ak?k*t9Z{xQiu-GcAX0F5!toS`8(<(a%E6?=!Qh# zjL=N*hJ+}rTr-qX{Qs#Epg{P8<^faIH<;u9z4`S9Q}(O;SBBtzMEw{<8Watf2i&3X zlbiDP`UmZhA2PH4?C(iG)H?wdms2B&017_d;LQ>DdLN#~PSZpx! zx7-)7Pr{CK&Hd$^NfM{w8`_ee#Lz_zBRFC1dr#q~s0aiuM;W+Nioid>pg+N(-rpfR zkTrF!g<*2jK@oU$xVV z6{4Dn)7S`}ryq{Qt5vmsx(@&eEq@{HAFQYdS}*xO`ZK%psb&GE+@CT7=I6Z}at@!V zIQd7;uesj;?(K=m>kRqF(^01j&X~vxqD!>)2JW|KTD~s0asG1%tVZo>Z8Z$rSd|5W z>X}pRYwJ1iDJ;p(nS7gud8y|J>HVZN8d{vQnkw^tRM^zo(`=(Hr0a##cjpB#KIQ17 zoqHDf*AU?@@fM$v8adnmohyd~DDCx!2N;y}Wvj7%5$MkM3vNu(7$Iz(!CheR8|Nr} z$0!TGH-Lf#A$4%C>-Xe6; zsC}Ci?+yRl9`bXHE8*X+K4Cn<8r8QcacKC*@j?x1KZc+`SwL>b3Y>I^Jb$+=k!(S1+VChZf;{&hhSoWeTqw^C^8+UWC_$40vc@k^=lOv zC}&yO>8rk5NoVMi4?)@wQmw0wK=3ED9%`z`+3EQULIhwkqIo8$!_Z_eg z(CbWaz%cykcP}zb{D~i^qmoR%aDpD1zwL(K@wTi9^Y!-&$v@A=`CkcIJav6na3-k4gn5tVLt?%NXMY1ss2KDJ%Av}`t$_|T{JX%YLQhN|s4Ui`9ftRv!rjbL;~^tE!s zn33P|`HCotS88u}*Tqe0K)rF?foOi8BM3143Gq~DM<`cd6Q+|7Q8 z20{|OEJ_^BYR_hDb4O{&&zc{Ty#b?}+IHj-wG^iLrR$QOjEDe@FoQyW`_zKWSH( z_;-i)oEhrU@NAvKiz z2QSV?NivWIq6lA#06Mf=~CPF93Aq(TP57peXt20=+Yyx>9xb|bRV zhBrLQWlgGlg5d66s&AGu15ffnICo;PGqGynWg&!7*k4fPCfSsc8%6PpsRv`QomVaQ z?b^TLGk01}q$@D-B-j_nB5&X$%!t=^;_Q-izRHK(Z*T_2T;n;h5LDTtqF6^Bw(|Pl z<366D+g?$pV1!>hn_^X>Zkrk~r;KA2P^pI1f8lIZ3-MU1wD!MM0bJ(^?b07hY&ny; z>$cMnAFCT=t4KJN>@a23D_4XHX&Hlr%*O3f6>>Er0Qjq$Sa%<#A5N&`!BdFQh6-ts z=b>MesRsM~#Hz6HwF6@>T-F%W!DuPN*EgY?J%v=>HYXWXHi10{4uPNPP1xT|R^LXN z1KeTzyg*PXbQ!h$Ikw) z!B?t_U}5ECcK*sOn-N{qxxzDyPdK(yAb)E-o zkC~?&0!o`r7V+I-&aU|BaBP=8iPBy0&6@o8KubSojA~VtlxL5{iDjKC`Df7xji$}S zS<@t>j)_%4hE4X4$;^dpw z0G8Gx9Y10&MdC;{;gtQ?_9_1u>3=&QqdfjNm&6h$#H^Enqg}w?pI6=cHM6Dffl;c% z#mn3BlMd161%vOg>J$t=Olq^QblEp7kVuJE+gkE2S%WvbzqcZem%rD;ksy>o9SG+m zP&NYkp6Jd)+#$oRqIFjz6C3N_Z$kkL8lsw-7V>{G;$v6YP{)~S8$`11KXCYw%%y1t zoJ%*i%HM}(w%{DFXCvzs`wD2dBkeOT$uCh{c^0k62&X7UcxW>HE_>-{+D8$5I>_Mn~XsUIAL-a-S{h?5=iypAwSjNp7d&a%WYrzu)FWS z9ZmsPN~3<1D@UD3&ti-4-G_tBSATOqbo8}72wm67?bS8$qz{Q0Yp{eVIcE2Xc(#8AKFr^Y@VI{v+CNr* znad|NH0G>bGC>MeI-T)ipzRPE?;uG70fmlS#2NoODkbrnc=!!#ddOefVt!jdg$Vt~ zO+4wsLL*VB>boX{>RbzFZ(4@FlC+?4hhmbppk!nC+VJ=oJ`$~Jeo-L#;B83itxHKZ zXgDHN){cyEJ_2bbUW@Is=WGk<%OfE#I1|+Cvmn4Pc3{4CT%Xii0`JSd%a|Li%!eys<<1te_DX z#)*CQJZ*fRTbFlO#ukJ%8ry#W$>=rJsVy2Xq z_Y@!PvApuDt2)mEwchw8d`P*x1CZ+`Al(?oDShiCYiWI!7{-4)dwynjq83yugL+dA z?+OMWjfJeIOYT)A$_gBrDB;}RsG)pjP+1J)H>5ZL1NvvioUM1nccjnc8 z&bjtTw8d>(e`dsz5PQ$>NFf#q2J+j|#~0avc0aWkx+8 z-2>EbeBipE_nP85Y|5+bvX`?S0b>Mw4skboeC~}us_W7Y{2O+YTR_uA3MG>`Bb)sM zQHb}uG*XCb9hKO~&2tAL$#B40@u!M0FsCX4Ss1O`w%h*kSTAmh{>r~(&~-yz_%r5v z$DCeFJCjBxETr{hbPk=uTPdYoSVqWSr};_iuZ5Q{Bg&3qgxSUd;kLW@Mca8F!tD`c z?W*=0xH}-gkG@ywI>qy}Y%caWgnw#*L=$md?mSL4tc!;LZAdQ_-{hTozLxoNEo_%- zsX1+?{I)6nGA6ZdOG2M1dQp63gV+=@kt>@w`=Ie`j_Y1Kq#;ZlB)BG(J(EXD!>M$7O%$a&OLEdZ;pT&fczIrt!`PqY zVRj*ZFknGW^->^7_NBu0tuoJ&T2E@UxtN;QX_5=}sU@ykeC^v6Hf4s<@#yr$+~J7YK~}o4|Hx8FSsqQ@pirMzwY! z+lI6G?c;evjJvpso#<4thlzB%v6I~5UIo}6?eNArb42=eJxei^0%7~PHvvIxv>a{V zxV>X(6{T%#%ZIFGIeD zPe|(P(9K%rWmTh80giT70QsRM6d$Yb89%f`Nz2j zgw%X0dIZn1akY`BtmuEGF`cJJ%nKHa`c8jf*TwtCstaouazjGHaag(+a~e6nC9?Zw zOzy@Rht*nW$zYoPosWY4jx22xOKywA@;S9{$1-(2SNW+KvClV@ zw0b586qI6BV8fXXQvCQd?q3hYR!*amZA@gbwoQ>9L;P;?1EEQ5UPZS*h>EA%Un?C+ zp2X;XyE~-{GuD!IRXo54cAQ4AF6bNqWLcg<9DET={Gu!r|&vbtJB;X0=Zo$i!2FvOjssHP;!s-}ToP!FSD? z`=v1K**0KYr0{KD_H3lN^los8w^P2kDA!i1!Lek4asp8JnYr1?w%6c{XXwsuI#&y; z(?XHfT-+L=n)Nx|gEtpAqUkq;2?`Z3(=rYQvl z>rCmQS;$V$3u|`PxTC8J2aCy2B!+6+t?SfOj6E~?;3=eA(NT!II?R?ffg}-EF@aRF z6tpQ}!XNWSG4F(D81d!;l8TjC{a2A zWrTuTJ1Ab9egl`h&i)4gJ3z$03Un|6@_Z5b@DB2kFl!zq2XiwmYw(mD_$SCk zZSAxJyQiN`#mnYwZ4m73Yp{FWn;|c8|5to(cxv6Nt4Y1T^@PaGv<&=@Cl&3Isw;E0 zq0VQ$;hC2Ax>w^|gJ*cZi=8tlC+7Uc={eGMu4cOS(&Fr#SyYyeq#Ef+;hnD?SwY+b zwl^n>G;xht-+T(|8xh~gtZkN*JMQN;)V%Eq&vZYARkHT(2z6;%#TvbXoj4L|z1*Iv zV|ys42h)bM3J3j73L{&K&$L`ex7|b37BSSgbEjl*dhQqb&=3dvg5n(GQ3-FUO3#5k z(^639CiHrO-uK+W^!-Yv?@O7!e-q!D$DEhdwA1e{RKHJq>mS=t2_~YEgR1Gf55)-B zQ7Slg3bS>(kUp-obk3YNV_VoaVowo5!)!y-N=x4?OO)13GAEXnO1(9zHPhx!xO>=T z#P+x!e!msgx3sjG)z^Y%_3Dljx*WaI-tSk{xP)JOZcW5Lq%2JY2MSy&FI!w%Idn@daQmL)bN4$PByuGALiqfm5BZq6|Hf?Q|L^Zn6lsTa?05K8T;!Zcf%TN$3; zgT7E_7|dhzndV_;y~)h;M{M(w1T*+roJl=iau!21?-WI6=2=N*PKo#nKi(UX^Jqz@9=>*fWO8q|etDXwAj~RTlac(hpO0%2E{>3ssrgJXN+n zCtsDTSF6SrAfixdRk>P2j>>FQb<`K=!g`sFIr+KTyu3u6wjkGJ*6Pe*d3v*{uplc; zr{|@lH7R;PRXHV;G_X&eVH_{Li7V^NOaCDC>u1P|jNoN;@Y@EwERa;Hk)=|FdAK%t zD(nwMYsNQVnTkwieJ(FUq&inxpO*o3PDWFxq}+7wRZfUr4nJ;)>5(V0EaA9v=0}LmTez@z#!WOw2p=WfxxCz)6QUy) z?bNyA=)`w^)ev9`uIeA+Sxjcp^KyonO>UWoD*m(1WR7A~^-o+sxpF?w^}W*0KiePW zbNs6*{3G+;^L$^~kE8fr!awf0b96(qD4umaUU-TByMD^S_WAjL#1U0q;fKiE7`k)i zRsM)$R?6YsdU5<(hrFZGS01A}^)JU42LLra>yN!rW?Qf48K<6zr}%LA+voefvUavd z&-lHVr~MdJ{ll#<6K>aY=brET|6hJ^JN|PiB=Sx(iR6%mWWzm)l}RI3d82~-fP{*^ zn({?My^1HV-L%@tsO$Du^QTqHJ!JmZ9DX_J-BxEiJ=TWT_uD)~@*X9OG^bp`@va+q zKdB%R1mYWYl90qYuL-$)D2IB@b8~F4G8^nX#(ITVoV+1vL?eiODxSAVg-LZoCvPL!>o$=~@hH^3pv-Itp%&??O@;@>D_iaw%17)fjC~p*~2JnWHT< z=~Xx+2T5HjLG+!AmH<**XK6D*`kgCP@iKXZOtA<&R~o|0R2ZsxSrmpX1UdKFGL;E+ zkK<*7F+__k(x}qjSVAU`{n6t+@;Eq&clIHV!_i{`{-zu6+`B>nopm^EaII>XGy0g@h+r4rN!uRCV8BV z9v73xxkUGzHXOr&_>?v8ireVx5pT6=aov5uLdWq7xRX^g0%%B3Ul>&W>bizbuF1I z{c#EhcqJYj(zCoW3dWWa6TkE_uN27R46mGAp)^W7Y^9fYr7!?~UqFgs>>y zbH4Bp%X_X69^!dVXwVo7S!o3lGLpu%^shQBEG(pT#ZLA-A|#Z|d!7;=dhwoDgonPo z=VK^cMiO5$3ZApj^B#B}iJs5Gb6yhfwL$pMz*+0q?y>cqrt($$H;4#9BEU$^a@>QzOQkl>TMj`=;>lI`1u3V^I?CGY+2L zN6)9=`2+NP51#*##QXXSAI|4}qbiiuH$@10kM~Uz9!hy%QnL?vUo(vFq&y=gXlqeP zSA4cMftsD|1n6EWKcy*qyHI2Lq;%gDg`iZYa3UH0DRVIYRq!Mkn!p94eVmNX_PtkAJ;$v3`tO z=XKZA@mpPpz=R5*Nu2%hp85&*-jr?0xZ={k!yBcgwDh70DZ1pj_=grB)-dno_k6Le zCQ1;?1)5*FY&cqP=8&FGl9WS|7QR3J!Bh95lqKa8wPt**`P4hjy2dCgkh)uze0 zg*KAz+6qlBAre49P>8rCZQFr_hr|a7Z7zJH3I+$v!t@rzOHzp#D@i9}tVAb#5@Fd} z1wYa_D&ByX*5)M>NS{f_Ko@F=@+uWRj0#fG85qnaeNGlH!5l>z%u9|qPF;|G!+8nj z^3o_?BFr>zip4bvJLM=ldax#uZF6Z?-bn{+(`m90iyR_Yw$VkRCG$eCc;hRgS$Tyw zbt=3;EjzCTb0I7*O&}ZAUEBAztQqK!gkuK}UYbM1SLtLsrI(U63$gg<7FG`xqY1*% zd|rAADv5W%nF&OuvE2pcW&Q1L*2*T>P9d`S0?r%&q4&$!8p-hSg4COrU13sqY(E8O zC7XhC9U`|nV}Y!!XAoSNivn=tNcZ#3q&*r3#UuG2iyYG9yt6<$Ck445g|+CHjnY%$ z%Wtt*7Q{OX^m3ke7KHQfdFRKr(~S$345dHwE^*ehT?Ask&AZ@&NbmA4Irh_b5h(pJ z?=p=@r7mP9mGCZQ!hUb7pxN7{r82(1W_PzO@*!U=yq?jv zFfwKLy5K3#xq|k8svDd9#-}|onuC!E|rfICc zxajzhW1n?+_4DfwAC|TFADKN1nOXa!GHMHgJotnh@jT3yIdjwOvp*me8)_x{TA1To z?z7=Bi6O>qxvM}V8F2>VJuB{nsVh$PypGUKD0;kC8Qs_v=ov`pe?-C%NmZjtq#TWF zmj|H>dQO;`xvlo-aeb2KC5k^Bb0>lJS?(mzWQIpp^G<@S=ed($oL10>gL?@EYBaG# zf5h!B$MFZr3bnFrXdb-Hv@l{#PS2zLk*JBh`^I|3l?D4c{?(|%m1WcZL}?SMd+`VM z9u*JlZBr|pZ75n5`aybe_SaY6?QV>NA~allcf059gI8;P_W11C3xD}pGub=u>Gdt& zCGDK=>|X2bsas1B18IjVHLqy)nmGf{hrY5?BMI^E^E;}Pm5!@a0dTRe0+6Wr%IUqG zLu>BSMV;#VVFS&&aVS|~Vfp+A18y&FP3pK+tRFS-_uVnK$BGkA2A*y>>pQOyvAtei z=(OYT!LN-W1+@;p_2)}>QN?Js@PBT7k8-oHeocjg)=C<>a%v`(jyQE^R^o5@-ke)h z+xu=a)`+be+TkCoE+m}#VetNs>b>pWZ@jg2Z|_>#|I1O^2OLRlv+w&QZ;ce|Td~_J z>1gh0X}i*7+}rClujT%E;I;O5$3(Wj$$rw*SFL=3KRcln*#P*v6(`#vRX$r1I zLfaXUKQ)@yO5;6f=9eBPdWvIQm^l6?l|9RZD{WCx8gopQ&_)$`tYdN&SDnu^me@K~ zoT;o7Bvmr)T9L*pCq`@YBwl|1;H<2B-aTtvTJ-wfFMk(FiKRDzcakBc`MlE_dB^m* z(yuz+ueIdN_UVWgZA8AxmJ}}kTT=XOOA4FNik$?V!V;x8E3WDDFt}k#SKY?u7fUbg zNKS z#WTJJ?Af_bb})W?t3em;cI?F)G2d3l_eFL!o@v{*Zz-El56ae43jQG!l&vUklP2J6 zh4#gg^pxmA({`d4!KRezAbq!rL-DgdT^ieK<#zo3>LF{n9uy zekX11)tnK^=cC##LcjIEUM&a-u6X88=Up~X2fX<c1vvZr z?d0gNIdzQA^MZn$FV7DrN)LfhqA;B?F9=_!tkuB^$MhjLk4q?R!1GvHN!p0#XWAU_ zZ(z&97EZzu{ZD+@&z49cC=ezHC;2F>b;SbN9Jgcr3Tb;@l1=nKB|?e12*>!=5=kl) z;2u%^bn>rQ0H-({rsbW8GHM&K01n!MXy1t=DNWle5zX_Bh$;5;^JZ zU@XYh;!lX~1f~j|p#b%*(_=bCsXvpVRA{hbUOK#DU8KUv?_yE$Ho_whJ)T!yh}EDk*YOin=^9I3o{&A^XPePV&#ja#_jXQXeJKWd+^(9i@$3B z=lyO=U;ilpt@lz4BlKu(cI)lFenDQFCM*gFnfXV#ZXf!ft2SRVaZ=o#o9!2!JCIqg z&csh|@5Jjyy;<{plY9P~UcdJ66T{~+|NCQSqZMAd)|{=$iB#O^)}pCb;mop6`ur)4 zM+>4(I(?p5GiJ%qHmd@rO!R)T^3{Fg-f4rDQRxMST!R_4vgXZ;ueE!0aLmf9%Dx9~ z3=i*!Dw1R}n~U<%T50i!uDR6*joq~x4+-vjp=Jo&e;EH?;0(S zsU7dgqU8E%3-VBqN%Q9PFW;K|k4Fb)^?0c7G5hT+C@cytQrFZ_tH<{H>q!&;kW{BW z+ncV#Wz-g!^k_k>*JxHn#=q|~Cg6UX#=YuIoBu6ZLPE!AKAQie`ETpg*Pvl|6LuWEjJssEu#?`?9O@ax6nC82}+SGrQS zzqEI_8xWFa%o|}4I%KKYE8SyH$X3@DU1lsR$xlP+kzuKs;@Wr8?M34=j_v8$4Cz^Fsm|BtwVd~XfO#Ns^=>p@?LG8Jpu1fgnFaE48 zhOArlx@xUkqs8TFmFw2nYOY%fSe-ZryLsUnH&V68Fyyr`Wh)x10y`o80)gr=s_?LI z6<*7>&_uR~h*4=Y@tTPEs94nqeSuEZeq6pP5PcK+LVgsDQBshzDghT5m9vd10hk@; z0|>(^P;FFUVPOgdL}?um7#^U=A2kBUKuAP@!jx^uGQ(e#s7`OjhQ-*(IM--0t1^wb zxyC$Iet|I~N1tm_Y4dalG31$5BaB9!N-x+j5xMpL{e#U3iMiCk=U4eU1eFJdX05luf{4Qhv?%~y#+mb z18OU=^{}C|Dx+`&imNrNatb4|&8h;u30K*WhoWU@b&!Hhds?ixvAwj|6haSJ5R{8C zFQ-T~qQF>~9}0;GcHUalUuvNrQJJw}Jj&5rSdeE@1!ZY-O!^?z*la^)Hcr8i2lnJ) zkU;x!+T8pcR24CsY^@2AgHErCiiuKNiexaWh0Zu=NFyWDinVVhiCa^aY)3p;;OV{S0ZqCtbaR;L`6*hc4_SyJ&Y<2e^ zW2(u=3-r0hF?u^ZoCN$ESUAbphJ%ydZ&Mk|{;y=yjs8hS3S;wseENTU`q}ujeUhkx z{HRRreZrQYsPYmNrjLB4vnZ>mUe#QX zQO&u)44VX*xd!?is*^?&L-w*HcuVYMj^mf2-?uF5x6;zGQO)uT^g3)IqcqJ=O|w4ZAE<$TE~jk zMN9j#oMzU2A(T>?s%*8ij*z0%*BZ5c4lh+%(MCAG4uOTJGpO8}01U?I=7v|;0K>^k zYomn2NczpKpN8b}QneKdMWMBCt4RNBmcxSty7+Bs~+J!$yUX!j3^a&&nB8@uE30W&ns8W}#^T6%k1t51DjzEJVMc?Bd6}4Hkopp#N(YRLFe)VP3OtLXldIR}L0$&3tRP%RFOfN6N)fj*b^&l=NBSYqNtQyNxlgq z(}YUkzO;N98xdRs{qo#^?)#oyQA2#X1&88ycX4zEe%=&^XZ6-;pqnMQf4%>n=ip=^D z93++k>xWr`^R)P|h>b8#D{O^eCPdtT5GIy~oh0Pz^K^L0jmJ+x1z(e43KVS=TEYs& z3C+yJi^|X(F>Mukg925dX@c9-{^8+0V_FDN#F*%nCGWAu0wgz}ft*{2<_xsrG3W)a zKHc$}A~N2RRj{_uY{W9F2zz^v9r6b;?CdI>TVj z)#j7u{A?qd{?oJ>`WzKLSp1&1m*W z&q38ur5B(CGmSZ_o=ChjLJGambgM^y3(zpi&=#nA31!5I_12Fw3xCFF3ku&Q-fULjUvvn@;Xv&|Qgu`g);LS+#LAT$1~!w<#z7t9jf zv}ScX!wCFV-4mBU-K{WJom7Al8fG$U&4u>n4^%YAa|Z;nbY|h|I6UA5(o{?a97g{e z_`1oAm-e=0iF!sEB>DyMbyAk9`8symrNivgLR*bh!QJt;xgjqzr%;f#^_ha>EF_)7 z?nNjeo`R6SjS!OxMj)~)&=#qQGK4x=i`iu6D0OnSwm?m^Xw;(qjhg6Es5@q=JL>at z^yAc^-l6W47a4*6m}8>UY1;8cYNE5E#%x{PRhy4~3ryMC9CbH=VlmlwH>%T#g9~*! zKFraN%Onq3>K=vqLcQ9$#e{}Pp3a!7?xi=YvALkSml>Ckm~^O#zKFV4kxAW8uN{S{ zl;StxF`B4<7w`uIzT6pC-8EZO^~zIq-$O*I|EtyGG?5hM8OBu* zKE-quSn+L`F>9E(yNE(@=VuyqdSPM;3JO)VgBPK~fg;3=w;>jFu34Z72qZLPnXu>> z7W%Lh0dh(2-m6ppP)Dhw|HH65zHt?^u_et);=YLGoBi^zm9nne^2r;jF&q?=O#(%; zlZxYVs2QoClKj}H3L7~v=5HFKnN^GlOsA|&8vAVWLwI%fFv6=*mMZrzgn{+J{#R=baY?kYV+`KIA@!8%V#>z%F4)m z9-0;NCd4A_D~5-Sz;_BZERoAye!tvO;zR{;TL%gZ@|n+7&Z)P!$ThhSwXZlA z<$Ki*KYpsi;*9mnOC~oSoiMFQ58o!O)*N`_dsCy3&VI+Dhxp{)3NIS>>w-5HKl=D# zMn=y8SGo+z@(zE*KYg;cr)1Js_uKW3m^kNQXP?#6%1>t)Mvi_`>zm!1zE@AUo%Hs~ zBS8lr*9yMy^y!WJU)?$#`gl{$p8eOh8{aJ2nD*q2qe<*_F}$(cX9_|P8=Oqe|5Wo>2xOhzf75N$s38|i!uo9U z>b_~fJ73m}I9fXNVQN&5_NRA@IejVogrBF+r-Nf^Z(r15XU}it)5q`c`uf;Y)58`N zeU_--BkR&`*^YwaBlh|p~p7^!wUWw)bqf){-rGsr>$vm|MUZ+ zj;mpg_bu3&@#y6iy?mEn9KT-PEikV6)?M9q2D*ON{;YHr2K%svplAF zyfVqP<)H^3rV4Ma-@5P;x4~!E%s2gh`e@SRo0r<>dySj+!IioR2LBT`yQWSn2>f{C zm*xR7?>@C_U)gzW+;y zQ(rRO86#74-dS|q-6ybKw^+}opLXkUr|x>n3xG3i~Z?zfaLeGT@NmKcKFFKYulXn+Yb1+ zdCrjh$)=4zs5%@eo>k}A%#$4!>mOw8dTaW;uRs6rgmTg3y$?Q3;lHZ;>PsDtM&2E| zd`us=GaK_}p1I}o)m!U!s`H2IwSLJboImLaW*u!VKc73V6^V%K9`(GV3dWZj%v(q0msXyrSdB4s_wcB>w z3Gl1iVcv=Sn_RmSIVo#8CXf6!t}t!mq1J}Oe7n6T8h)j?<*ZT$^m^y~`Q)~IFaNK` z{3RWmu>IGMI{P(yZ(4K1fR*VJHoDh+Bd6=2%qP*ukCdIMcf8lZmCa(l>D6w}{3E;0 z`JaX|Bp4MblU$x!~8kFCA4oaw)5bW9=UCfj{N=e zT^nAn8{y+@>hH0;OZE|$>#>J2FYLMcraWQ1)eM9_>^(~Ig*x*#w>e8Qm7mxmUe9Zl}eJ*!YjosJy*8yYK zj~=7`X5z&m_a@8^({0-q>o@GL^}#L1E}br2+{!R*lXFHWu*d#Um2qggj6weCFW*JW#e^cpcq z({DgdOzl-YE`PA#wBNk^Ixk&%!*{XM5>@_z*8bgO^Rr7OCpE_}Y>$t9FTe4=Ju|=A z^W>G?PJRm0RA&nU!(DQVr?0(pdsJ4>c0J0@Z%*3%*3H*fnmXJm>$LOY$PcG%9(w<$ zsF7Ru^lV)`En-1;Y1qfP>9fKbx_0=-gK6f=9yN>4b-hq~%G=E!rJCjnjo%_$cF48( z{)FU@r-rsz>;L}fRVyDYTKB=WsCCMAEf8+SjHeVGF_rG+2KX_uH(f93R$2&|- zZqnUvuSje+vF(^AEkh?AtPNQ>-!Wz`@vehyD=QHz0i3rQyxL2y#_xbbZ1l&|kMZ4|3|srawsAEjUD|5l4{U0T=e+^%L(gN6NHzAyW;!Jd%6 zzH87Z{9@*pXAW)6dR%fud+%uTA9wC?9=ss5ZacSk+yB;KYt2)+rUi-h8?@QAYi>Ia zkDrIjLtM37x0xsJv{ZqvmI&N`3z-rV}s=;()+9*vQnF3f!?`lRv0gk?+mM1CB9)c>1N z>lTDMQQu8~4{seOC7vulxCjpTFGq z+LX{;Q41y4kG%ZOJuO}OSQMS}NMslzPen~|9}4_~;j=Ju)Nkte^o*lWVFqkF%Ko3-J3-NL%r+7;2O zj;#6o$lkqM%_q*?-4NRBwNq=()gIT^>%$~N_vw4aew^vGc+kd?_s+HZxqiLzxeK(( zhcAWeCuwU8+SIbK&*iUs`+-qH(bxwmHwUph|eK0_4X!**F z9&gmmTNczl@=p7e3#KgD%71^Wagat4)Ggs@c-=29baBZj7u+SVi@jL?m9IA+jJm$B z;9;-mr5(G?tI=nXIsEc4?p8#8r+F9nftTEmUE}NiB+Kl!`1ZjbUw3?YzQ4M0pH98% ztCpSnqJ8J}Q;s|eE_}WA{cR^Z53c3%#WAf{>I(lqN^<8+PxA%~5n#7)2 z->>`?zpcxgd^xLk$qD7c6}t|E_7BL;|G>NB)$R{Yy)j8DX|r+FsS#@)-#pNL%KC{L z9-EWK>T9&R_fED~-#^EU{b}f(6DMQCwHFg2Qd-2_n6km`H7=~_ujlFpri?uF(Kh3# z*yCmGw(Quvcy76hF7{Qacg%7$E+Hg-z@aVQzi!-e zu6T!fo9Ddq!**q5-yD?Q>-U4buic+C;nMd>x6dEQzL_~B-?eOl`;I@q%)F&&4uU)e0&Yai-^L)0=YIjnR z+iGpT&yKLX!GnCaH&pgHoSD!d{w3r4*G_!;`~9uyjq@8G?PoZ5+_diUUALnl>fi6z zefhmn=L3rto=&h5rw-;UNw5n!D#Ya0Z!u|d!2YC%e=(zkHwpo z+-dgdU$Z}ddVB1y-=DN@R8rV}dC2yzAJ6*mP{$$fzB#gUu+zc&=Sn=bKb~;^#^z&B z7tOn1)VvcI=k;2F^7)#_{DUg@Yw3PYvh6$SJF0b`zSZ{(3j`-UpL7s zd*YrJu7fB1zh15?C=PAQ0>KIH79>Cj5NMoW!QI{6;o=Gew_uHg#@(fn2AV*EHUSz5 z0RjYv;B?~>f(A16=FPir-ktYx?@ZO~&wWnS`Z}vt?Y+*@8kiP`9EsQtcUgChA?JU> zX*v3i?XKH?MM=LpfKtp-e`X7`dn!@T+kwT7G7t4SpbwWi?rW-7p#1{XC~&4&B-jBR zn62xZE8wkk-NMZX8z29$7;-eYoipXj)2od$ZlQQRMc$FPPTeaDI+h4tlgn5;JqRD( zpK6KhC^gV7BlVZ+iO9_9>XKi>S0Yr1u*Rvhr+Wi!!m~_!x@g;)3U5l!SG)6h0xu(x zIkCDu@}435(r|^{9XDn>`q~x6D{gk~%gYOQQNOa3s%;q5V|n}&37ONBk3kr^NNn;s ziWwrr`wJdfOLnJ<&1AF^&R(fCu%vk>2^~|>#YN(*&#aPEN)DVA@$o><>S|9SevXfO zZG^{1;P?;I$3Bcnd}U!ux6S$3Q>f1xthj~%uiMuwhS^*i9~!E{U(3x1xO?~3iA-I- ztVCkr<&Ga^+}(X#AOvfM>rhWFJVbO>(6Lg#Li^W!72yAIh9UR|?7x*c6T2#!3IPkJQk0H1#G zJ{zIN6`sFn)}bYMPu*?ga5X#CM+!BE3S?`KPWtGN2soG6JOE)nly!S8x_C| zO=RG<=uG$@lLC24%!4U(A~QfoWv5qzhUw9-Ija;mQY_#6SntjX*6rI{8@N*^qI0Kv z7v629id43`?166=xksh;`!#tpIa`0GZ+W?NSDYRel4){gbc5rFc{Pnf^~_E)sWAdo zx?`@g`$UXzCw^{nTx}5bYCEY2L2@;y3$@YEo05h1l7QgN#okEsy z3@evP%bM-Ke-LZ-eN@1LE!WR_dQGZ+6U&=z7-`dc&Z&{etg))1nCNFo)S93BTF%Dx z+`iC9A-P{4{%%B_C!SJx>bYoKfzoKIc_3LzZdw#cDuYFgoG(^4k0W63QYb~B+UKSJ z=kU%#s}=2Ir;OzS`wxUHqDFHo(1gcn?VA|ni;$0BhQa8%NAh+{eh|DgBM^=2_H6EO zyJ~sqx+~AEJI{1EUruYQmvJo4%}(!FB^c8!sn#!m%1NkNfVi5DBJtBOZW`~y zsUMYqwZxyezynAE(|nSA$X#r{y1G(E)k-X{m9GI_=WZ~8FGxi!bcm4~bvCb84SmjgPT!9sebFNC7-* zO}oH-@;s3xk78~v3SQwbFXd;^s+_e?&#SF$;5tt;Y?u7KK9Hqj8SA@J47E>Y&f~>7JF1+PFeGy&W#eYHR(~9C zP%VP1nqS$Co`)f=e@kb`%ky+g{V3Z3BW{?n0>0xG8XL`8kLl7>iI)GZs*dp3!sUlM zFy%71t6z?<8kDc=BzvjW*hfo`XZH)_ac4}}{cEeVF!i3&|5R;GBFc8A&pTSoa@-*h z^pjXC8Y&b)jP?g!CJTNIubpOr`FdiK4LFFt0sHGz&*yuJZGMlFz_EXqbw|QPvc%G#oE47lAUe#M(?~oLwFl6jf%v3QztLHM|srW?wbptVQ8F z!6FPz(bAdCv>IQ!67$P5Y%3wtDUD@Z@+Pq15b!YEl3WGxkueGD48LhpuzrhvBWF6F zx9QmeL@$=98S4TqBgTEt9&VXhOK6YYOs5t?O5aVHCeR#})u|gEE~G<6fvM~XRlwD% zi-|r$T>67IN<63I*ld`tH!?3(2(obPrhS6Q^3D5Y#k_O(hvtT&oYQ2&wjtR9X`WmZ z*<@9>>dmeCL)p(8VAT{Nr5VX)G{($HU%6V2XM-N`JeM8E2wT9l@EnLmvd45j5;1K2 z^j2b|Rb~6E7i{4K7+YLyYge`eEL2wx2v;e#)S#@yPzi`l(}BL-H0tVpv5~wShSr>R zlHVXLNd@zH9vZTR2)Ms4W+c}$TAUum zEFe@Z%crG?V(IUwjz$u%xPe&$+jk(J<0I`J%bVdEJ`qRywG@hv5n)}lSH&(Pv%a1# zuqJ&Wv;!qVFOo2`ykfovHopgMTetVcF?4=EP=E$UHS=r&q2J9b|&wf0|k##8n4_zyi$uu3e&V-W!*ZEUCcU& zMPQ9L8pbK-6oi{nWKhIs@mYeWX4Q9IPO5TSR@QFSS;u2RVHvSCQrHd`-+x298wz3K?nN(3buS8!{(_;~$<2*L1yZ!Uh{+dgjJ!rSHRtJcBb<25PP*~f5KO*o zdKj_h$M=%hG<%8_1OI8Nlft**4rH&S*Ftj?N;X-7ss((xQ^>fDchCQVTFXx;@^!JhBUKEwr{i!U6VD z!JaBZinyYIY30qpx1E>QzKtnlSK=OuHquhH;379jbdv^}K8n+}i*kcrZ}H&) zqnE;z>7cijs@2AD;X2;TX7}o3BP-_Jp@k4jFOw;y2)(uiF;m0oFz&Cgkl9(l@qcATjMgvdmX7gNiWbD*lFYkGUH%{_k&XK%w^M0oGlA4GH?F6Q{ri~eT;ow{CF7o!U#9w#HU!l{EAf84& zI2K)Lo@t|db?U6v+XbCsPJ~m}#aM`P(PW+dGrQ!rr!$JiRkKN4eNr(1ZWy$49ri$D zV5>gJBR&5COCI0+$OiQE9bMC>#4kKG2tI-U=Z4ib9CZMe^mB#LW?Do0XlVlT8VA*n z#>90lVC4OCF^394A__(Iy&aE-3L^_R^%xW1;N1$&&rU0giR`<_C%HIkK?+F-DeaGU zjlAsu+>Otaer({pm2oo4MBMZxJhzG`k)@;`!wND1T0X%#V$U`8-@)d8HRC$B-|c|2Ktf3-0 z2rT=bIVcmkUPl_VL+RGOo|P`vQ<@1b{@-=I(^j%!hhey7l!s-an zh`~q^(dp;fzWEWlR4t*5$!18^Hx$XN6L_D5wL~;ZSNXODRK<0rd7t>`bB;|-OEE9R zy9q7Om7YrjE}UI2Bd(Uq{@sS)^uQv?fi6hQ&fd6g>uG{$|VKE>^X(f3yyRx8MW|VD%%QndvO}au)mLX z_jXQA+O6eYXU9+UrL4{7Vz48vmpNEt+X`BXwy@U&DzK~&-1_@)EB$IPGnuM-ztsvi z-kL?u9&~?v6y`~P>VXQ18fUV57?7jh-E;!fx)by zG2I#3042?Gw}PQ|1Js6_^YT8W4BglLB_-LO+*mc`=*DgRWG3hS&2lWn$pZ>N9ua0* zUiZ~J*k-g(R?94oeZGK@GP4un>lSn1e9EA692;;~O4<{45YK_65+PbC3w7$6qU63Q zt*;Iq-G5Y)chXtJOtRD#Al@-bV-;5yIR zMsBAU1v*RyZ3Jn`^(dX7dK1_4^Fq(D74sR)A?)*@4_-+5N0zx4m+P?9z_`m=eU8-V z(>&74DC3E5rnp;{`rW;ObSWRGDy-MuMot+IS2?OOxUfvs0HQE~?R@X4uecKL`VYT3 zJLiA7=bSKiUj++}3*eB4=J#wxwoF>Ap`TDz1to+rJSA`bAvU2?EZm)5|I&{E?gJ70JD8~2ip?lCi_?ogSGW99 zgT_;13S6grT()9tvml+G3&nMTFgFm-+#<_sY_yLq*xxOZQbLCaY;uppe0d z;3id}NqGae`19L*ZGEr#O~9`iAsh-pI^sj|mElFU7k94aO$%sl0-_*L;P>~fI|P=y zHkQW(v(zHlq(`+CR!^?#g`OQZHf!h1kt=voTy0RlV=~RvE|WM~;N$dq@14~5jAynb zuQGeYpbg|C4rcYZB5QR)wg|WYXnxR6cjK;Y@llUykhZ z4pim87}iEEcyAe-a3N^3iP!C5x+gj*<<~}$Q1GG~EZ^!rbL~z1?9|n3iUU@)R|ua&3dKowQ?)1{ zes5+@G-b!q>pDHoJf5Y726mD0Z7m9~21z|!R-aI_!C6{R0~~nw5Z1Dg6YMB+Q^}h&)#7A> z@*wRD<(0tQEVbPGpbn4M&!l5LQ~bJhG09NvnLaFg=iPh!b;ZyaO~TY}=X;t9+p2$L4^&4*lZNC)0qFT1mbj#yTLf2Uz!iJ435wqv{gyyZw(Z`*77$N;8VZ1iMRGNseXTg7Ho*qw% z`}Sy`PGieMqamJO!SqNM`}9jL2a|MC84ImbVDEoSvSUt5#8*l%6g_f`Ng9f!i4y+E~+>TG*OcTNu$X(zDVt(lLSke|o^d zp#OJ#OxZs8XCK77MF#_e+<&)FpMCE>$m93lVL$s&z`$L>Gs3)o=ZF!da;0wX*X;8J ze8m1AI+X9j-y4|8dxQJ%y+0p1AG$E_?PHz~KKNvmPd@x)%uoK97yi9ree%gCvw!mG zyM50S;=lg0cYfE0!29%HeEL~G`Rdcp`N_AREb+GF z5D}7-1&Y7lB3TO~puM57m7y63Xk%#mZXCfB9qn8#Oh8URL!gtfImiYCbhi6+0v$mv zPKHL-AfS_-sk57*BM4}0XJcH=--OkAwrwN33Dfo|p&#^yj9kh7tM?K|5Te#8Qe4Q+u&?-MxNIf6{+0jlO8;QL*7 zG<5WMSG4_zeIM;&`zidMnzfys70~%T%*4X+eLlPQKo|S>4nt?ae?&eO@|hX!$5I?z zK<^>{ds;&yI~V8wGt$u31n?g12y%9`0J*-agX}@JCLmj558(fq?*ELlaj|x`uz#=1 ze@j3Qko#ZjvamI_cKM&Ox`G^?K9=hAE^TY}p45BthK|PO7OwA=`GEg!$@_wxES%m; zYiCLeG&C`>_^6Pf^?N~Vtw4?dJNy4s_uXY{^8d@v;$7sw$vOkyr?GpNbo{TT6FnFh z*XAXXp_4Pn(ZZeH-rR)V*oof7*22h+-s1h3gFA{zfE-PLD$aJ+_U~uH7ED4>md@J3 z3IrzlUI%MCdz<&&W{@?sHFJ4CFHT_p*V~xh+0c>R%oEJq+1Z|(fx*qqjsAbmpuMA= znWLeN&HIAsO+XC)trLTZow3V@;D0us;ZutNOxD8I#U0Fog_HgNzyAMqu<4!bLB{U~ z9t_;P@BQ`V7f>5e`+;1W7y0k4nT4I1lf#6Al^tYiWX#6G$!f^NXkx<1X~M|_GGt~m z1!H1j<775r0kN|fahMphvcEf+S&f-FO<0+kj7``%KE(d#0Xo{*IfMPLkGIbU4BTmi zg`Sa~?LC&O!WXDuZQ*M1UV6EYb8GA30p$Jcq5p4>pxgVUGqJOyH+AF(g3$qu9YKc9 zAd~-Ws59t&i%kBzZ?r%+3ukknx%0;*dKWXa2K#^6LLe6h6B8pRC&$OT>ivOyf3LhZ zXs%E&m?ne&biIEV+gsRynR!~+gK>coM!vstJ|0MCHx+v_#0ik~@>oy34G-FK)a?&+CS1AKv#L>py?~=-_#`uDn^O>#?)Q&%HHN zI-F}(YgVN?KHH6qT8+K<9pk-8)V%qvG`=!aSG!c(SF#x!fp$$yL9QGw#`U+*kR;JT zkhn!Fdyqk`m{6}vhmz2i;8+vatiK#V+O$xB!qTNL!;fq5P=L7>1zhiu*~%gUN6K1d zZF%2&D4$hEgznC_UbQhD?qs)eNlDQ&TREQWAJA)5Br}n;PCgr>cj!I~Zc60SS$mUXdjS#s z{>0gAeo^*+&h0{BYqA3xLO-p_70UHEh-sfEj)^ET7MD>g&)g zS2UyCqx(7R8`Df&rv0!lkA*MK%}M4ZT1p)BXneK^IZPtW;45XlwNcLjD|S3sab)_q z;lUtj+`TcUF1)Pf5A12|lJVkLOUe=e&N!D0z-$hd40?&Jtv9T$GmZ`K=sw{>Q9~@K z09RQy`6(PV)#qE>M3W5xxs@_{QmoNE>qz!K;`u4#b@75A-@(=J=-UmN^td$xgXPA{ zQ?0Ziv=Q3yPiXO9%|WA_&Bk=cWuXTt0mm4Xurl!>JY}H%GLo19bkV897^ENu);%Z7 zht9<7k?p7U3aPh|>nQ~pAQL!`uRDCo(?X6dYT~L__1Jo0oL~>P#@^e@$zbA* z`DQr04zUt(9Uh?dnxmZ^*!n}ku|d|p;>T(38}b{huY9640efE|3VQlWk`~s_S&u}v z)jC714OT0RWgY&!6llhQzGGAgi#@5kFm`nymQjk<$Cc@RhEqc~xN#>2}BSV$-e(L5fwiWpjm_zK5`>?2|~7_%XP zm8{o1hUJ50ej#?bs80`$E!MK(G`cb}>Qz~?QjBDbnu-lV`exHIm+M4d*Df+-sHG#B z7*~FBs;0W5y7Fj!qjgRLh^mI?JW6rZQ6PlMGXj8q^)wD%MXlG%!Yw@Fb&{IrX zP%VyX>nbiV%+ik;8D>atJA}?s*@QlNuX7D*mvWVc8X5D>-OVxs|2B?4v}c)73)92j4|WbHT9G4w<+#>bv-qSj&i}VQ3>r5 zjM)0@Q-xU|ybPe{dOj+4318~byQ=^v5u=r(39g)K@1XBKEW*?qh&W!tQ@(v}FsXNOQ)y6v)oFX$%!EY}ImJ{k-sBV99^q{WulDl&O5R+m#X77A{tzMZkiMePGd)T*tq zcI2zVjH*Nk+T2P;C8+JcufwkWrm7;4B+>C4pyItZN!PL76@a%9`3`F|6C#&;#e1b2 zU)IxB0GmD8zBwvo3e}Mx04Ud4_ghfX^8nH($-xBbhfWVwX>zjXo3^!dPCfq6_VuL3 zE{g2je*UxQzg#!%@bgby>_8;rsJN8Y-YBA8(;uO%w*G&~%`uyq=5~CXLW;|xgwNuB-)${e)T$)wHt2zD*(G@95!v*psx(9`exkL&jD}p%B$qn6a zAVG`sl9UJ``_bE}tVg_F2Oe*amvkO%1<%Ep#?-Mvh(-!efkiRBQI!^Dq!SIlO`QgZ z5unkJeU?T`6{wU1>YA-%`Hgl=@@0pXR1`Ne&!p^JE1uc8fWRB$4OuL?GV9o1GI4~| zw~9-oL0kW>+7%XTh8+gSq}=9+y}oud;&KB#^((g*wb+YZ)zgsrDhW4q24CtVcgQRK zjmgtTM1J}?^Ys`dpDyd_Hs%#l*|Nb7->8&YUYT2a!RsOCVjFEnPVLG_2E&x- zKbAV<40M?A+tjlcW6X*`)ZKI1un(3j^xlgmAck^O(ZlthC&8bX@7Gh&PQYk7fRnM1 zGH`{<8)MW2kidlQTDHg}32EXQb4maJ-~XI9e`zszKL1ygC3+M-y>L(j$Ydh2?D*%q z&q96U&1lh(lQ2R1PoEp+$%m1Xh<$7eTPgohi8BkKU`pU<_j7!%7H3)e_ z#C_P;L*J)`a6x!iPD!UBa@Ob-&_lUaSectuyBovS zeZ>yUMpuS?CeT!bo0WCTGHJ=;@W3Hh9FK09v=JoPfP@m-UmBy1jP9f3{mIk0fp&^m zYOlTkBt1*Z?S`X~8Y`qdGv~!90V@yf@ODE@$VXo1Ac^kRlNU7mn+%rLH`I}@ zR5&UKW=%v*-JWgtZEtC8ZM1Ga=ub3@`TD&qsrl9jo2(2-dEk(NGTNREO7Wt0yKeqe zZDw-WtHYNJ4>fp(AEq13Ey8FWYM8+&;u&dqHL1Sa`3yQSvf;aqvd|a56SY2KF<$rrx9^!f$9L+KXxxC8r8GWmF&@VEwLRkQp4 zz-TspEf2?qR;i1)&$wQ$otz*PvK^u|pgi)5mhOn7h-KKOG70=R%cy29b3f>4I zsKpe~fXGBwSI@Vf>tiRjB7_5_7RY$kH-S5tJ?DTt8tNZHQ%Y!*SmH(0l&Aid;_bH0 zZEY@>URH=U9U_S2{S# zuiPRR2*u{rK|U{&CVXjNb~r^->(JC$@$=H@I(bC4Q3#Q}uWDX9i@xYQ%B#IU9nXG{ z98{{8!6{K!<>{%DT{QIehCu+*k*U`41=M!Cq6MrmA@I4BjpCDGIS4}7cBL1YOSHTU z7q?aBb_9R>pqCZ-d{LAdVJ$iIojHk}g8r^xx!Qi?xT8MBxq&ICEw_ zG-a!bJe?3=-r!orN#iVn=uhgbZqSnGV5bZWR9zl#iPV~`X>yEEAuh^sEw)S5;mQud zw~hHFPo}Y%^-Es!Qfcd1`F_|SHJ-|uFjT+DV2R=DCVLYPjeGbkaxQ4Ne3fI(Hf8Lb zQdBN+CKyj|K1t0Ae+19-dEb!q=e&Je9!A=kk$r%C8y}+nMS<+4m-ZT7G8xnM?B29t zFg_^qg|oiCb(VBiX`bgxVV7x{7@{`8Y74$~Xj*Cw4L-SeyO&xFsB9R#Mq#x#U`09? zet49lO70JL0(O&{u+a(SXvTK@z|6yt*L;LZ?{#P4310l*U%01s>>E^Gx*Xyg|8YaV z{ribq`>b-C1p?-4rr8-c@DBy1^v~22+sP>ThTE%x2{|w^mR?D9E zMB|>konV5S%`5u}17Nphl^Huvv%p<#Mejh+EXdwGtY`jBHqPwf%w`>d(q|>i(xKAp z3IU12u`)jFUJzV*>7K)uEPSC$%s{=Ih#HJ`Z)m8T6Mzdu3zXH6eq66Vtjv&m7D6( zofF3cFaIO^uLnY>@@{Vn4X^ww6L5;~r}Zn!E=MH^HUW0f$u~mGQX$Kz5bmm*5tC<0 zt^f)7PGG(`4)Gk;uRj+|y+q#zt&`(ueiY`;9}}=CeQz|D|Lm@LQQMv~0GHt@P|=F87R+q^P(Yf%OL%+?XD!$$$v1?Rk(JaWTG& zanV1()(gFf)syBf@lQ%I19Y7{Al7^|YMcU!$Dw|6Um!E!%Z#Y`8y7p%YrdUQ*W9mX zeUOFoiZ&sHdz)_Q6G8>#$YzSk9qD(Ca3m$TQ?;1p2dvEB((N?fNkA`R{HH_muVgKk zW)-!Z5(SV|ETcj&{AB&vg(Lhge-qhXuL}iO3WJF}hrJ*r8-n2Y(I<~0gBf8rE;r%f znrBd$tC;^O&LVC8`NxBTS>?H7jj?MPHr*E+;@3|bUsH3Ef?gU!)TqS7(WniZE*BXq z`!(qB<^WE)5%y*uZQoTk?RQd>%OF|`pd--dw)kJy2__xgtapNqnY;(G_SBgQp03UO zES!bj!n9W_V}p(nldH~>H!iCZpwth=l6`7=bxbAX7TpfEm0LbkG`dDVx4Ov=jLbBR zsoHLa7+9naV_8sf&t+9S$*RCdGWBc@VDtV8Phi+Y>{W|C>j7w5@j!NtclF!;xQ*%OY>sGE#RsUQp!bDyEi zPpJ+i+bLE(P~t`r4g_Iaf~)beD-(quWX{&pe&^$46|>G}E;1{#aVCtWhDT^OM3>Lm zL_BS^@COykiC(U>E8|b|^48ZbdScg3&n^^FUfY`9K|{4?`A&Q(tHk?xSW_pFQas#5 zDO$l&ZWUBzEDzs5LB%^S=Nz8Yq3jMS}&Ma`1 zlCZ~CRBA8%JTflmhx#8l5|g%FDds1S_-;%TT=4@Y&@FNnPAG!q;dkaf)&!X&Rn}Uw zF*CQtV)=}bYCA>VEp6qu>r0js9Ut6oP`UObf%ZQVjE6(ALXGI{w$>_GfooxfuJrxl z)m`@QOL}wAo}{YZXghm`i$`F?&zJ%s&DDey_q;y*bjl3#%K=NzXS=K-T|E7~M#d-FZb3Ff|${PM!{zdKq2y z+vi(17ilayS?l(&&7*VFv@5WNzj)%mSsyQGnf5T_n!l-PpMiNR-g>^B7=Hs4dHTLM~jQTuM z6;I!pKpXNT~5)8 z5W*4u)8!vrXEYViE~dFc`o0cca|lK!tiEKU=YZG#%{2jGNO#;;u;#)LO_hSN%8w=p zB-(BnYMSgb*I>x8SL>ioP^LK-Q%g=I*|@&mz1`i~!3>oq<;>CS>vqBcv5Z-(?wQKX zr7+j*mN8cQa;qyohCIk_HtyROBs(wW(kbg$8Y=ImAWC+(d=Pk)7pn^dOLvCokeRuA088!3i zM}Ur3#yWJ3&p#wLS*C%F)6%B%J0(tc+rwvO%&T-8R zMfc7R^oG;(FQIX;|454O1(0h75UkBFw#m|oWr8paC}ZL&oxJ*B-O1F-xTNPi}s zs{i2amizqxL3SCHo!otnN?4K9HE1d9mGV1IZTyQ>>!hdj0k7)X4*zv`IfClS&j^C3mZ z=YIWNr_hy>0kHScW*5+1WHmJXSg8MYWc`DFI;>zFQcqo57PBeOYn&MWXs$R)b8%F zWM+|dEXskqdpO8-w?eX`c5tV@!HQO>d**wyWxog^<>f2w3Tv* zU%sr3SXm;Y%mC0_w@Wg}v7u~i){y8eIT%#|GZ2#qi=uq2tGHJTN}1NZwHwQoj6yD0 znBT_&G_rP_d!*jHaRdzVnir^|qWHe^;dG}V(|Ae_sh0GfTkk47I&9zuS5V8{UR|s^ z`@rj({PU$GbO$!0-JlJQB!@KqJ5uF+86uk0f8v`PmCVbo`&v2&m!+F5U!#Y3qT%nr z+<0+=)4OW_@{;+~b#A;wEy~hd1H2ElNNLz9V4n(DZd3xFW4|wi=u(h={wF;#pT3d# zBYBo3#iLzp5J}HtEO}%377gf!zHv%0HA%`qHz!(VBqKr?mg0x8^+5k*;M5#eJoPlp z6)LXZmBKrM&rhXH%TjjjNy9;s7ry|+Vsb4ugA>?G`-M2EhNy$g!Qq|$W``^bx``-? z&kj|{ynrpN?-hJ4!ry_yoxHU$?sk9bQhJ>z!~{Z&sq=;p+JX!!cgLD?Z5eD&=Bk)- zYTojJaH8pJ$<{%;Dyh507b9c*xVv(df8hq@X#)Lu|NR<#8}&Z989pnzGbPJiX!Ita z9--I7RJn@|lBNW&YCc(Y*gU_yyqU5(DseTy`}*@jCty``)YWeTow%r>H@Vl`&WA&X zZX;r1XRxdR3{;{IAd})DI~g{adIR&|Zwt`&)nmI9ckxP0BCn{6btD*Wa^YO4G;Yw& za|Y=7I=96aazo4_Po1`%Wijhq(zs9Bmt0JGU6`R45_I)hNBT){4pV8urp0p)>w4Q2 zopy2WM8kDN3@-;nxAX}c4aib3zy`qFdIm)CX?TP$Ax;YPrHFK+HAlsFm89kXhjCvn z_Y)t}G0KGmOS0o)_6On7_AjQ644rOnYMf}EQVoDvRcN=(=uN#+f;&TLz~dK(X9M?f zf7uK;IrDgUyS!%u*=K`iEer_q#INI1>6no*6M;4}FLs1{w2Vz0OZ5d@dH_n)ib;okNY!{zihuE$a-@lISkqR|F${O=E`+6&gg zX-kMP(UpTgzJ1dcsV}YR7ZQjFo~^=X(*7p*pb+CR`S*vyb4C5-n(YcuTHJ15%_h48 zfb5p)zey-0mMCdV^NrXgnx{>VI|uSq@S)-XT_VffUS1M~6CLzrKbeJmcy~qGN0`CD z_o%I>ZP453%k!?vj@NwZvCCHSr^GlmY+Atqh;yumGH|P9YwyPE(=As zm@+N_-U+F9jiLh z8J(rN`!f~pYI^Br>lV8f@%|gSYAtFw_PKsP-1;d!KMW7r;>5|#y6stH#<;8Plf=yq*HD=95xRiUfWhz#?H53KIn5^U8gYu-5h}0! zv6lk89FBMoE0yDPVdo8+%_SOuB!22K6ts0qx~PMF4oRZ0L3<>qGHP(DDd*pE9DV+F zm?4m|l?(I6fbqoZ`J*O3pPRAR_q5B4msbe2ODPltqw9MKsGf-;B(Sjge+~IpMV@# z-Ifw!1G@{XwvgBKRTwYj!`$S~qkDdJ(qiVUYEk7hxQIhK^qq!tqFC7e*!(hdgO?q3 zCvrswX_ks&)|uPh$z&K4YxW?+hHd8_|J7Zp*~Y`&(#0e7Rl`^2D*#JVvtsK^`B%%T zD-?UB`&$Y1dJ`+ekh`h9H2`Hyf`hVt8rYautN(@XQK=SGg7m+NH@L@RR4|N=Hwbl~ zmvQGZQ$dLhbm}g?9;PQD)`pxPoo0erkNo4OCePCbPlDtB)P79A_Gj6iF%LY*?ov~J z)tK#e?8OkOA>X=ZdP}mUPR?hfYTYj*n9rN1Q3ve^TpvOoC4)5`i;&emG_a9m!ll$0r6|NZFXH#I1YS& zS3iOJKfzwKxthJQ%z$n!RAbR83RdbEFsi0%7tf6cD0{@>`yHS7oicB;GTRMgH+47 z5fSs}Gmt4FCOvY5A8mdQr48q(*AWBlvsy@+U26vtU@uUn+e4qU$QA$KH;vFU&*a{g zXg#oyJAm2bi~B9Ssq@zU^r}y1oeAIGC9)PzsG`Ig1Yjy2Z#-*t0z?%?5tp=vR5Jjn zoqS|CZ)1w6-_p11Dh%R6LryhO6_#SM4JWvev7D$0!UeY@MVdpC<@_MY*L-RkX0>nps^fI9B*97>$P^})ysl&5`qlY9+y zZd$|j_ZO)dffJI|fZ`3Vr5GIn>+D+IrQ|0|sQ8NUx;PiMUEtQVvTyS?OlPDM(?$WZ zZ;lKVOK_6lN@i(kDL#I6PFcJ9#A$5=W;o+R%T?gn zSczRu;d=axnndHHSKQcCSuiiU%Yw@_w9K#8uqQr*sI6?p-q_~;sB-!u9*lJql|hlC zr{b=l^xtD^4f$t6Y~*mOcvf~AJqwfSch~i`-}tppmw)B27XN~fpS{1_boAYAHn4>D z31UEuu~PC{tl-&qfP#UhpR0#sUGw^u)JX(9caq27h$2{gtJqW^I7u97CGedt;eszO zghFCy-x_DN*ik)bXucr&`(${7T>uzfU0=Zq-NDF0Mjna!S054{LEbpAgpsTLgJ21v zna2UJ3b=PH3P=#GNN!D@=u6JY1`t3#wKdIfjTmV{f#TaVvEy}lv^A(0bim+%DH-CrhrQuP#|45aO&IyB_vfF3apE>)N_0$qk!) zZDQKMI^>z`5xK?S?aq+A>{zet7um5KzCqNNwv#MuMK>4=m;wA5pVKhBx~E0r&yk2T&5CgV~RanoLbiz!AmWFdPykw2X))$;E zFE)UA@r@TH2n)??e$vGM?pXcxkN+x@eFL(P2HMe+=t6!q>+;7Vz0Vo-x0Nz(XfIqk zkXJQ0nO_ZF(b`zLS_61!^b>p?+r*Is^uU3wRb}xI#<=mhw=E;Nw9_OML#OGWKqNI8 zAz`E&ir2bjEg#y4EWN%mc}pz!`RWs=P(z1bte^uLNWL=3=~1=TbKFy69Ju5m8A^yV zJI+Pj!MBBpo#mb4vIFU;C3zk>+RvY&Bi6U7i#wwaU>_@e4l=wrf^beSFdbki$mjC| zY^8(xD^|@FrAUTs^QD&1mpE6MXx0d31LtuRk$eg}w!f%Xw8L+&N*i?W+3qTGyEuYw z{O~Zj))$>a;BgVoJHyO=G9*|1Wha%j4|XD90kj|mw6|{v;=%N;t&v%MF;_nXWC^+X zqO^yImtZ3)FmOj;-)SIdW0MXk;0T%T>45_ZgV)23z`W=3NacVtOf*d3nfpvb>{}Cnslwct{?H0qYu`P%E30gQ zh-oiX@B9a>LKlT|PEzXj%ZoxR7L-6}&p)z`ncB)f!$eKz8R1x~LBZrbM-)*%5n{-P z^6-C|J^|2kR$~=!gp!p;wRiTOqQod~kiA%Yr#R?mcLurl2Y#ud5HOZHhN*}Y?sln! z5exLr@AY|+Hj@5jJCPrKd=W(odnA#0REG_rJ&YtusQndb49Zp@;SBoCdqw0=y@Czb z+(bpD{6AK9o{1+PDeSLi{i&DPVN>P3ISrV74jkZlfhJwR9}W^q{1@!X++6m3h4gkm zo-{ggew_geV54luDIu%i0xzR>#y5?w)-#c+wL;C8zO3d20h$LYA(ws>JJLe9cG+k^ z#6kV2Z&lF;#DUBJXylYG&g=yyZ8fC-rfBtd^h3L__cSPcjv}i%$V|FcBm$wvR}+S& zvoNyLJsfP)^!TN$!c$(*90w1K*WQrWMLA&;cBW_pkUJ-mnd}D}-4<%!{^IhZ4_cQM zo!>4?GXbHhlCZ%H7#!E5@eLAF{eNU9pbjDo=?oQr*RW4zKvIzm=oDFn7Z%IYk)``n zrVlq8IS6zN?x$&<6qH?>>jN7{GCd`Zx$#MYt;PEYGB8JV!!g>9!atrAm!#f8vLfv9%R_L>70_oHKv^C<0Z>oGePnhUK$ghAN|1)hstk5sV$+UUnjW*UYxmT`VqdA7YpCnSf4t zp-piKi--QCJ;pVL!<_|j?iIr}$)HJgsAC#o@;tq<m9^xFB3QBup3j zESl^Dh!r^DQy}m23s)JCToyDy?~wS^6;wZ06>w?#bcQoO(*Q&g-MuXy&K_BAqPT@{ zuF^v*xm(Fscft+0|6o{1wv9jsYMHX$M0$%YN}bowaoSTITs(Rt9248DJXA&*=+X{O zcl}+PpTA3+bg}Sb^~}3z_#qQzRs9MEZwG=uzGY~}YWRv#jr>+7Qh2 zmla3CbhJO@=mtDD&f0|}UHavLg|@$8;+jxp$x%DZfv-}au_fltkN+sqYobLs<(5-I zuym@#o{(ghJJU~m+xt=8>87G3{3ON#-^AYt9u;QwK?_ zv)H<5Q3N@zoJD3fH1<{|Zdx6_m#)~}V4*w}ppz4(W{_#-)^ zZeJ={olz^R7iYu3(6PvsYC%sh;F zk#wo3>;H|M8yP~LD#|XmOn5)-{$^Zh9rG{Sjh8OpY+sw*Yq2s6vZLs~^K#44)nPfG zX5YDAZUGa4d3&K*c^Y#YxoYX~(jSP{Pr?A?h3NC`Lb{~}Srt@t<2ZhujZRTW5??=_ z!<5F(6SP33Y*zS#cGVCH&SgBNxXJ0p=(|R)1axy%ciuM^_s{QG1zVwaC-yTD6`XW7 z!|*;{I!UZ1z{-T}Q@(|>P8S!LivHz=IP!r0W+j@v3nH_vP?xVMIUpv%S#q8`@K(es zM@N#kKHy6^!x8& z-HZO$oRdp)on$)Cs9mZVFKUGD%!NHtP9Yn}OBAa=2nx?oZ&#}y z`HQ>N$e5Mw0e8`WNa*X)u!25zX;O;!cvh%mj)=_ydBen3a?<=XjE-H5!8-u~E(Niv|`AuB;~^Rgu_RbpuIPV>JJe{s|9{P;?@=>e?09Gy9d^SM-Q>xBN!ug~M;hjl5Tj zX1;=0uYeE&7xJZgX2bqgrRH5B_vgih)eOU!*NUHnXnv-;5+{;1W7|#GD$*XV;f6;Z z<1Py+DlD^!ghaAc#Cq5NJi*I42#3?9%Lm<$EB4*VG44i%&v?||l1g2Hh22EtB}LUN z^SP318|~5(H}R()E798pnOfc*K`V>+=hk=i7%oywioTG>TY7&pT9Ly@vy5xbI$-&s zn9DA8|56#cVTr1;NoTc+8>;oiCvX&3TKzfvV?Gba{>?W#;93fP1d_oLT~+RVe(Lqs z|FV>^rt5Rlpkx(OMcOgBJE33GogA=d{{->-E;yne+WG4D@{AiXUoqqUQ&K~A%M2%x zUJHLJC6(}DascmY9C4#Z<2E`GdV}U)Zq!A}q%(TfD0VRwL!bF1O#|pg9ig=9l$(>$ zd+R};3>9Yuz+tqG0R4dfsQ*t04=?8uRAA3;Ot2+qud4YRVk&^4#pw9om%U!k2@$C8 z(UO8m=^i~QdHZHL2ic{ZN>|BkXX6gCYuh9$514_6QnL4+Or~E5>F{K*@gDRaoYu!! z3eI4Q8@)R6#!*)R4ChyIgR~{`nv(h}#@rZcmKit3zDuvP4Ko zO#Y&u!@B8s$WxRDA1D$@O5DnJb#rZuFTa27W3?iQeRVxyz;rcF<>}I>( zyz?PKKkMd6&$(tj5~uB9%7CarM!KVnj#mTQ9(-hVziPireVHqS_2;TkZ{pJ_lj_SHW#^*$4HLMtg2a13Z?E0sP;Zf~_NOs=r$kA; zHBr9)hd{Kk`j~LrVoOO)6jN!K9B=HJEvr$fK0~u;-L?idt(EoA=YnTuty(g7e_9C{ zLiX|^;<%#uCVz1tks~}ZcrtyBB_Rnl}TRrZW0PsiIr8QbTp&g7VcN;CG34Hrn>pj}RVGYWQ4ef;| z@Qu82vK3k|?_TIED@yFKi*{c>qM$fhJpaq`W zuNQ$MONoQOyCK7%Qe!ufia$=G~8 zBCPt|HR-1Bw*_S^nJ?y`>>Bd}heJ{=9U>v(m61(rntecbRskafFrqf_TU+AbBa~VD zm+gq>+Fl>36GKRS@*0aSDd?0tI53pDMoqitCo9#Z!q!B_DbrL$8F_g;ehRogZ-HJk zOnuTohoaxaZHLEfQnH89ySo*QDJ-i6G=~Q$uz@9bVQ_-umtA7Q)Y4K-=3{C76B+Yo zW=VNocCabA15WzA7)TB{C=f^9d|7;7PJ0vIURU3Un#kylzT+8+l98lyW)J_qCd4@4 zaMpfq=eWNq>;;YC+9f0B({JTFCu{$6)(K3P(v7HvBb)j`HaAQfyB@yQ{jJjTAv`u) zDv>J!`TY;HIAxVwvE8-WbL4=Iu%2j@pJ>aL9H>&@gqB?7Ibox z-FcDZ0Z~BUIDrydfad0P&{;N}8{wMv0A&F-d{37a{RGLPjO}kW)~R((BcIp51*x!I zujRfy@a2Okku?Hq2f^Jk3^75o*sg?TKW30 z)%i*p?QX{oT$}G@ZH+6f*g(U1rTkLy(wqM6JqIo-yHLt9e3$jw0$zvp2$37;?g0J(@S@Z@Ub{wo$(=2>KQ z(&69lcQP{k9R_h3uDsz1`n!jztcZ3B;jPGi#hYIp?STjrtkCAdCgx%Yb;HcvI!uIX zVkkKLUd!d{81U|Pe|ec)jR_&K3ve-yM(X3=+})8@v9!Kuprre$#x6ox$I&i zx9w^xS}xJ_(M*M6msDLb6>gDy=ctb-pF|_Ti|y3ysXF{G{Hr-%fY4;efd$ zjK)(i?ZY?5|DGEBD|N{H=FY&VBLpU_G47P9efBGrzW2iqbPPAl^o%|OvA;5A@!@^s zTWr4_)&rL^>sl^N?Xe@|@3uFzQ9L2ypo2PhCdfvhNwQ1AqPWJ^`{5jtt9)DGAbFM+ zdwgQq2lvSAPfa}uA(g`W_b(ZZ?AOVkrbVAfG!h79wB>DM_bI1VMZy(N-Txk(>rLYr z1lFTuQz52p5#(|tz7o5KthP`7Lv#A}%TPdH=rSF+mc%`GCDWLwhO$KgLxZA#gp2D<*GKGUW86%}?HPS ze`!p6^_1m#f~O%#j|W`0nn+Zd1E$^-PprSY3E7$BbsdUH|5}jiY(q^_17_X9ky}t+ zA$TNA^-U6B-SgQz`V(+Nl4U2deJ5$)Djq20kZXStRYP$1LhK!%#8|Uw1~5`f#*`RL zax?1~q-M3@t3r#|@c~JRVxD_bwtkYjPkaH}mxheb;5MIi`4`fS_Uiop|4r)H6pbzO z+pk1R1HNoQq+9|%`kZqywz^l6msD-}LQDE)3`AC9E_q#sifG>!ob@nY7b_J?C^BJv z=5k!!L=@tGU_Zp#LwhiLvovw&uD0WxeorR^!T`KHr~GkQp26%&7ZF-`N+Nby1nMEl zLR`F|Av>`b`uD58>u8c~h)PYAWwp)Vn-45gHvnTW%GmWVu6{Oa$(;ZOrFCXD$bXTzYK-<>9ta$r021M zxM!>*D~&7%^xD#HMr%S5sv zCAwMf6uNc>Cm5Te3I`wc z<iT#OYN(8wE}GTf}OOCkd&bDNP%ToD+`&3~@$0D|FgVsr%eoPqODw+s{pb zFX)H+LcZz#k^+D#a!gEFbJ>!g!!G_}&P%`CkY$QQhWhb}H45XXg-dfD+}ZCHZ`td&^2`uH!b@>HiZU;`bqrIm zuN(O~8R(RdXBt?KuNEx_5%fko8&gwGmn`A97`ES>67qeWFtqb4MNONt1y^AMugz1X zW>J#hn)&_r2V#$FyWJ#~`l;KtZ#m7-$ks%Ss{S6IBd^iCeWk()7%s|XDGlSHD>48(PdCFd&ZNxx}dYGrQ#TatkS)7-jzDT!n=$VlTkbtu4P=H zH37YdCx$$?Wy`j_mmRt&O{{!`O9q)nEJk=iM;3&R+7hi$ETs)CKGHwgxw6roL)-<5 z6K<^xG>YVOGEm6nwdx~to}8|Eq)#3oTaYhXy>U!V-Jlf3AYg~Lv6iC?Ta+SF_-gEI zn)W-pj--TFW}YsF;rmv`Ok_i-DqL+DwXD;S;w-GubbbQ;ZqD?S8lH)@v!CD2utu#V z7C>D)@lK7r5cTN?4BVHITB&0;4+^YU;~?XND;9K5s5&Eljw$699do!86y zbyb^!JK+8q+Kg1P@W^8umqV72DV*mWSPZH%*XrPXDX!u5HeHZ=16~AZ%eKn${9N(LdLNk}2(|LjXDzIt$X8PW zyDhuc&o5Zt%;RFWx2^Y`iN2U)j=C5Z|AEH}h?zVf&I5D;XtH`8HxRb(9K>Y5bX1m{ z#Z9j>6*^~^t_9ifcG6zhvF5sqw7H(h_+C8;A)fzPF>~v7oq*dnUNN3s*sYNR69)tW zn6UTRS~%Z$pCYq0OXI#R3u{G^Uh|0H5vIxYDA)OUfB#c+C2%@so!=fD$hE)y0u@`~ zk+e+_*mQWYmeksEG^P86H#(n~*PVlawn}Z3g}A?K>KeZR&96P<4e(`S6;U|Q{Psqk z9?9xCK}P`fk@h5h>yjrftj{`OESx_re_N6xuIO))xF5_GRQPB|Z~@9su+x|I{VkFd zC{CzgvmV6Vx9Ttckx?786x=WXF7NEvaT7N8l>_i1DW$K)8W@F_yAy-D7OE(VV&Z!Q z4(Prudg8BJ9WN)t-*vqWDIoSp{y2R3O@OGLx%tOP!Up~@ll->6PH zL)lnqJD&IK?PZ|f&A5ih9P7~Z`JS-+;*BF^g&(9UCyC_0&vR<}e*h;y*uV8I27R(- zPzMw8c0+h~_D>Z?VU$hV@276`ADZo<5td_WIDRAltE&!G%Z!zkm55Dj(Zc_ZpPhzD zC8u}Xap;5&X%YdLxe>#q!fn%j^qG|o@b>lkVu+$1DfdID0Clmgle36;SSbE@R06;n z@AXhwBKP4V1@bx-6Nudf<}^zgM@grmyY(9zj=1x-mie?jagkKnkeTi=pw+ z>tM?!chT$N?UUyrPu9n&D=d-aW!5s?0=N`Ft8YL-q|ctf{^x3_Htf?pJY{yia=)dIZSu#dWSvEG?<8Ls)HO3P11|e@rIAfiKu^X6>x;qxT6~ zddt5hXC^0eU5C1>b+USx(-|AbO-Z3O8vigB;NNS-TTq%$I!xf}Wp)a>*xT?ogR$mp+ta+azy_$cP2iL`K%#PqUNf;qVBU)%g16DW;{L+iNMrUh&$%Cd~(7 zDsk&r$1T{2LW+?Uyx7Zq;s%SHSj~xX zm|>*5L@)dVfZez=lKA{+s>jpf!NJZP0o-~0tij)iix4ViH(55oXlc0o*v#c_NnF-9 z9@o3n@3{VWJL2F?-pW04W`CWc7qwiyA~34w>>KDO(5#*PY|yh*g510O`dJx)y>kn57RD1QcJbS{8aQYRBzLchTWi%(nZJj>1{G?>Sq}nId~|Ynz7uM z%A0FE7NUWm;5?4S0g&iYVI@qgK~L9dfmMRMt)Xr&?rD9``zx#8#cM!j-)?VwTcL87 zNs5|veui-$Typ5;i^GGzX?Ql5F>)n7Nq*x9F&}BI7c$o0#DOM0I;a|i&3xt?5A()V zjW{A6ZCwf?aEZolF{GVq4}Qnc)(cXRzA+BAjOr*;fO1;$B`#N*bUHQ+TmS~#qu2~>P{vMsH{x@F<=_}9omO?%woFyld$?do?~fvIkOSE02L(X~M?WYVr_aKki+HQL~OY;Rd+^kh6FDFHN;>@;Hv zy+AaT{)np2va|>H@lv(%^}5Qpn|GCOe+!jw>k1Ta=!FDa+p@_64pKw5jb&b>iMrak zTK|zPGsViMs4*CCuHN6;npXdH70WYQ(kG0jQ`@g<<5BLAx{d-%R_t%k**EZMI@7>k^yp5l)zKmB+vi?eO9(~1?K!pOh z3TQ2#F-1VXx~UqVUqMq&gB0`dBc}qERmmulM;~tjmg+@Cm zxg(IH_VR-3P30INnuGAsD`Iw(pu_Mi&pRo?#qSGvr&cd!%{`9{xz1m)1N)LaM zhd`u3Ir35$Gwn?43g&e&d0t8wfcqmWSl~Jv=HtP#G;%S7Z&6s}h<+IJC?(4o`htsifq+aG z)c=op8sb82Ndx;I61Zz&D%uLl15`$K^WJ9D3Mm`0{DFVdg-xT7Hh@UpXDGlFprk*- zL1_QfeJfb9AD;h2eIy-_4@ka)Vc~);KF#{$544z+(3N(mxWkgZesIdq;{W$htO99} zgb)~0(`B#IBe(`FLkf?bE^Aklyvn+Mh&KWX)ssZ;ErxkbBE4UKrDvlE2P2wJ{HK45 zIytq|9^jk!IXpY7jSl7&MAY?agopHotR7!^qX+U6HhFk{hU{uyDe9{lAqv|3!_`VJ z-~X%`-E1GT?*FZOTc!JdY=Uv;pzj0^(xs4yY|Hbgr(7>Gge}8ptePjJT z?*IDw*4Ewr-^NdQ|23PrmyVJa+@3el2gv{TWWQ_ne{ExHeFOJ@b!~Hfb9EJc5TFR$ z+5c|k=fN;NP5YzaB?#I0JMKG1H@MG7*{GX7LPySnmGCoss+aWN=iUCe_h{?EivL3z z=w(G4anT3KXjf@PGWh@^%T3uCeiRsyzp>=9i&n9 zTWn)taiQ{F{J-%+v*zRfix-v_Xe?pR+fuqGs=ngCvOn&v*H{>QdEx&pU}5s*h5vzn zSK;69;NRng_|3ltud$z(2HjZjQSsm4pRmY&wP?YE73MVuS#-^<_T&A-y;lcR!@{pP z7QK2DftZ~*YV&~}?Yxg0@4)-WwaukvKY$d^5Gh1ppesbAX~6JcEvO=FLG{Ik*$MoC zDieFs*&c>X7U{cjieBRUl(rZs3bqW9WVw*8LV}(OlU^?w?jS}u;?)o}D13*B4Q#+8-EsP9Mgk z__M<&qX!S4=s`okOD-Or^droc#m1Ys*%~S2-z@0WyxqneEwpi9SW}l@X^Dvho`_CT z1$NbyV`NQYB@18itYp!Z`Y4)Pey8>-2lF|Val~cR9dgv{xMUIUF8@DR*yaCe#;eQU z(L9b}>G0J^I2%QzB!g@ObL*xfdJ6}{Wg=;$ea%dOBX~xomxgJSAeTbK%ke1Ya-KZN z4hC722m4nJO2W~?NU6{$G(Eb&2!~ESM%G1%x{+sen3T!Y7PwVF!t&Lf((5q#1mmI z`=F~+$AsxrSGX{(Qztt;O|dp1PdIg0gobn}e5*?~qi8%}8f2tGPDwOv$^oF!IPgU6 zkB$*-s+6eb+MXEFN`W~p^aX9F!(PTY`EoZCm(aR!*N%*D>70~7TGAp>OUR2 zFo0dWeb_h|cY*#IaBLHh>CPTDw2aUr*g1R--@)IhjX2u1D}g~iWF>@Q6T})UGCGHK zZQ+$(%CwCvnd{e3u8>&~T{QP_GcLw(T$9q8x5 z*}$)yp|)!Z5Wb>vCw7>2Y$rKJ3i@&5vF1p^sF!@mdgI=-;Z^2FM4hRa(TPs8VKJIL zi3cl|HfJ)6zwW*|*!}+LzUK}#l9SMv7kylbIgz7!X+lVzH+w>kY~W} z8Ej;ORZ~13$*2^NSEP=qRt0#u79t8Gj*l$oDs>h_#yV!FWY~{5pmh?DwQcKdlx8@^ zZInEclOpeqN4PE{shO(cXP1!cN5N8I8Q$1G>SC%npfsw$SUHV!5l!nOxLF(jwSwPL4kBfQ}A)6oUX7h(etExy;PmpyCllb5gd zA0J>Y)zk~6tY=$5>g(PiHMchfN;9;+DcAycm57XiLR?mX=avzu7lq!R*v|w-`)a*7 zz|o1_sG^R`{2ugfz6|(2BO1fC&QZy|TF;2%Ke1D3k)$|d2)OF(d^$yKPja%c5(kfm zvp>k&%)%(As`&C}NXsNm!;!%7bE@~@QdzDvHo@MXJuoGN%HYf*IV;L3;l7Jes#xXowa#??JoZ7R(>9Q`S``&(JwFeL0QY+#xH;R{^`M9+*n>&d7OY0 zg3&4P>(S%*ao+wOpZM!WYjtI1|9OK7Nj>;-|M}6u(J$)VL8nT5_{-tZ{xgq^tiD9{ z*p%MTFqZO5^7+K~u-Iv(qi#0w`4NK)SKg7&C%)&ie#&pUZ{*!K$Omv0@n62_t=|g? zXrYMD##x6oVdNM?GQ{?hKIk3Z8ikFB6YR_7<(U3H0ZAsyAH~bd@F_5@^L$8=OEhNw zn;lFKNOvPQ*bhL{4_5r&{CzPV(qD(bF9*#i{Tu#gxzL7N9WtNbxBk@?_pW~6+lDX0zV!oSx51>N2km@tImD4YTUSwG16Ho>~k_zt`mrA3^j?AvtU?r~BJ2&pVO&(b046`;k9N#kS)@Jv&oI#ds6WRkHc z34ECQx6IxHYjoAjzsP1ls>6%tNxhRxCA~2DxyF@+<>hFzBbA_qWN>GBExYIz0ab^M zQ!XL8;t|Zx*d69vp|Z#dP{glOwxBk4nUVT(qgS>hlzzw|Wq5&a$LFwBlVF1s@%lWixJkB?hcU zGs3b7g(r`!kLOt5e1Vmu#>0Y6E_B0y3S@?%GX?E-;j|L~Xh${D!U2}j8Dh(2`F62$ zVGFtFCgKdvFZxu_LEfu%0T0u?Uj{_iwlO# zUlx6>he}c>UD34w(P!RAVKUUgBR)YDk%%3op;#37cUsZ&^n&BUDV~;y*w2kLJEZ=8 zA4sFk{-6nS>JQpDG#W3JmhPOaG)Q9OD-_GQM~{dxRs-XdS%98#_fjfcfwiD7E#l09Lk?) zxh88I?5hYD`jxYAqNf}M3UVRw#$(_5bvNr}qeL7+KrXlhBuI?$_~H1PjD3LrrZk$a%<<4IKMNGm02gv3OGEu$oaeo8Ca^T8 zAW=h?%#S;0Nu(aBq&l=hQkCFFEHvFlUSP52{^*j+#$U#u(*Uid zA25)lh+qg@Ji23c*##faF7xW)fTStj7!dx3==_1BnRT-f?DJ_h>LaG|sdz34BZba<627lXCR=bNEgv4?<64I z9gJ8+zf=RFK!kApc?O(zqV@@$wjp^*B8NW2_a6!sEd0Vu6G@`N7s&PsbU(rqgfs$z zOXLi)PI$sucGC~=N;|h^3Yc%w< z-in{0i0m@T;M&W(h-o$eDKqvex6rIOfg_edf^mR4e)$>o5rz^p$Q+mZru(MP^U zajHpy9OokXS3+@Az%WzJ%5%)9je!Cpf=09lbdU~W4pj0U6w((+!8lENFu}yBr&$r5 zf*?)ig~Jr@&Ze_>;P_~&sMx6=6Ne5{N3TCk7Vj4#b31FDvBoaqMTAR5RlUuF&bCoB zBM!i#H#wdF6iQGpMg);Z5bqMUnhGTh0`8B3fVj9Bj=4jUB#{df3F)z%2x1u{WBYUq zrtNd8G|1Yjh?=Br!xBb#^Y&rgK`uJuyRLKDhgEA!iFmTHj0cnSB1Xm1Nm7Ith=}q@FkX&eC=knN<56(+$T5;E#x{&bN^#Iu`JC{vK1)OTZo6(Uw& z;zf9Vh*_tCTDD{lqO)%z>SB6EwJAp&M~hKWW+G&&Z~{rKM2`%~M1^a1GRru=PaP}S zhKqE-6){m}jf~S=%_SD z<1nkNQKWHV;z-5tVS-3CVvYs6P>lxlv^`d_E3)0A@QKG=W2RURWBSEmyJD~k2Xz-o zUV6=0CG{FZga#?G&ZbF}(d2x#*bYaPvoHPxjDVFQl{uTlSHAt7lR9;%3>SzsKzxIU*lfH6<^uNw1}Db+CXcm~f;gX+oHSUH zETzgWBD`DIi`Y8l4!}Fl>8=zy&rnrjHNrMS+P``GF=s27H0@S=iAe@;y$7nJKQRG6d39O>Pwn2m}!h91cxzq$4_Chj3+V z!Vx5~cIH5aLF(|le2|qR=^|PkG4@}|o>18$xZIH=IHs#dD{wCA%%eW#_f%bRZ2hd! ztpd-CPAald!{T|Vl8`{6;zf@-x5{5A8@MWbe6j>qI2}3_yia~2)K=KU=m|_kU?wq_ zEM!AGW1c1V#ldC~=82(lQ85*hYw&s(lBE9w`y>Ht6^p|)!pmHCfi`hi)acxMrkv&CO$cia= znTbwI!Y*kZDeM;!c0|Z3@iX{>19a(R4##~?9=+f^)PTsDo#9%eZzodqSkyue{P&_Z zGQxzxk;EEB5|+%}1xuQ&0%8!-DxdEY$~1$;Cd$H#A8td9ec?L}8<7hYZjOv29nj!5 zr}5=y)^$b!7_f?k63U6EivkR@%GSFaT6y;`@s;{@N7FDl(<$Y)FomldQ@q#_yYYpM z{AJEgZJtfyqSH0KKzIz_*`9rP=Wa7nzcm~yo1|yIxV%ayD;=;_hk7r_Rh+;px#IZJA zage4dKEgYq^-a81>?qP3@*F)@I3r#?bP8q+^o2=;*1OIC*7KfOH+Y72#qo{%`d2k1 zWv<2;gL^zOfgsacnq+s~El?(2K%p{KHfP;(?2nK{G%`my?bzR<5gZ0w7N+)4&}L04 zm-RFwpoorz3A75!D5uI&%UZ70wB`}jV0$8R;H%?~05bv|BkP-2 zD|!i{t>Fj5DA3cKfmd}(y~XieV#vDGd{-jCD2dBXeI`b@h>31X=8h)`IsE_+1)`{0 z23`JAc0WVetDAS6Ra{~}6;|{&uCFlXs9}1)s;bixY{!P#w1w|H5=c0>r3h zWF$;DId$M;((p8ijcs%}u=xWpQ6{-ATO1!n<;qn9e75wAE{_OG6kH;rD+%xCxWou& zFr}ZVb6uI%s}E%B+Yl|EKt*MBUhW?KXe4XaXD%`PfY^#P5wH*z1bJ#K-{KMFOruyK z>Qq*2vt1>!;&H}~9N#nYOgOPkHie8#;-S(*YpJ55Fub0Mp~Ozr<}V?8iOoW#JB>oA zl1tXeackWMh6XjYdSvV~LLabjBEqwz9d~s+M-f)_MJFtk!Hl06)wzu8DHh%n5F6Sk z1b_mID-8eZV&s7VauhjUM}+z&%eu5W4j=@j3LjYO{G696k`&|9)2yAP<{F{$9m-X; zjUeI`q+YhlHI*GZC7*pjaWBP7B`bPfh2iKBe}Tk3)#<) zRO6;<$ig8MbYdzj=xK`Ph>91`oN^s)Ax3+?51y^jyq~S(O%l>@bS5HhUL)sRTCYy+m{QD!vew*Bx0RG1?~cr z!d|WrJ+x3c*_CLa@_6wg^;=kzN!T<&q+Tk$Kzxp4RbXjaVr>se#DXSXq z9M!E!kl&dYO;vq-ta3}%Y`;j=)I)}8rL;wM?tYJ(dFf(oqka`g^=HL5LYw-vtv>fx=4o_l&$r=I3kU+l6Ms| zL{j;lt=r}E@tG7Qh_UY!X#>x#H6wVIrE&^`m(z*Ws9YR|a|n1hQIUG%{bK`L zT_gclRw`T_FHtT%IL-4B0z*CG_3^Mmdy-S^BoWO|7b7St*=a;8!bC$9L1r;o-c(qS z7;BmKI0pi`^@pgHv}BJlK2*lxgj^x;v3E3L*O1Fv@G>@uyJ)f@Gkz~6 z0F7)EuCf9)VDoj}+W0gP0~|9a;(1MBctR*NG&WwOE_U0q)kxSXK4Gzf;-6%7J<;?n zECi3toKF9nBJwY) zn@da4n0yA0&g)ST4Az{(S_>@js9ifH<3uX2x%#bo)fb9M6lCOc`aQ<|QC5DjMC=Tg z!-)igruTH1R04<7;qz)pgwGgGg)lLIXctH~Vh{ohW{5!<86eab$F%4DWk%0n+@q7U ziv6Csl1YkHTaz2e8Z~!L00a7?9 zP|08*iAE*~&XUWI7FVoRD)i&NHcFSEp*jC?CG#5BOzvyPu(&XqW_`%On#37CBuy0) zP%Nm(V_pD734P$C%!6ke87;kx{qhJ_LtHYg^f zEo4f(NEJA(d1T)IM9qacudySrUYglTcoot2d%~X~U!V9koy*(H5M_oenzJ6|sU%L8(gn*y{@}i}? z9j}%!WLKmJ8Idc%S*6hU$SZA5>~;rsIPPD2Qo8>Q)DwA?chMILCD8#BQP0BO^d zcjNri5Nad0YwUn=@>ZDIb7)1PJp=o$Yu2@<#;b0(Fj2}mDf2^$3UNjNx|i@hltG*H z+dBQGApslk7i+3`Eu9b3G!m^@B?N!>1!<@{ER0$6p(mfLQy^E|gc z=W{s884Rmp)^FGXqoLyrHboo+3JxKUOt|+j^{K>C1J^unRcrDdVqPb1Srn9W<@i~; z+b9}HxE*B>xg=R}E5$#i;^D(cBtLs8_3XfSC8oI3Db#L>P-aCK+3Nh>Uhalv#C|Dr zv=#3w2B!kydFKyLTlI3kdU}Z=5**0waKzBSQdT-eeo}KRHoXk@)(IX5o=Q{gYaFl3 z5u0q5EVx>c&wgUmx}*yNzKFCoL%h)N-l)8qzN&62ECIe*ZnrVaeEHzd-O&!r^3P|Z z9cHp*-l$^y#pXc~R!s=23MP7j_EZ;#3T~s15f}5EgZTyM%n3#HRViWKj5Nth;c)0z+~3vWQzg?&p+&^F_dXnnp*T36jgF$YZ1`XkvU#M`C6 zZOmalbB(x)@^rnqlVu#|l3uSxoRQ0zL+oItcz(cP+`((Qy(~v@Aa}xeS`h}&-Zhkz zQYX<%;(XwU&p=ulk}-hsH%Ef0C1zO}GK&hFq+^!e8sptLlQr2zEm#m77!p%oas~?N zu2~-}&U(G`Yj$_`@nYN5b+`N_<&MXFXBn)MnxzjTxp$?O7blalRXr3uMKdF=M;|Ytk2Y)6>Q@S z-7&@iR?sV~V^Z)f*&Z66TQIV?|KMH21!+;sZI?M%%4K*b7a!rhYGf#;k-^(NMC%Z& zd;)~A;pgo3Av+3^0@jujJ7(w#bk8HHMB+;53rH_6{&@y0r{9Wy#&KSdJBOS#sl-s{ z8Y$u8f+Lgp+6z(xZPXY0T7f)ewKXu@K{jC04CkSA)KZ70upXvC%JF%}UMrtv@os@d z!*>g$Cq$ZY2mJbk!jj?k8Ul0Vfc27E0a{rsau6y_z}je%IW8`?=n``{((yO3nP^**o) z=`ew}M;-{)+KruIfg(837U^JGtM+5Q#A7Odfq9SOoN!Saddauq#m7`mfxKtv>Lv-- zy{G;}GDa%+yVbtcT;YabEZ5PnayH+^%i`Q|5_bw#%M#7qtpx=En7e7(&0$UWgIPBG zcgW3a?27M*V^6s(N&!l^b}q}?gi6Ws`Auv(YklOkN@ufYB;5&gRkZ^--GF!@i-`ff zprU_rsnHkB$iylm4T7y+2e-Ed`C$wa+WU-2xyow#i&vAlDhb>s|rffF~vLKr_I<)m62BD3BN>i8v$+@0QSbsz|ac8x_Fb25&S6afE874|XcX2>9E@gww3g zR#HlO2GO(JUMWGh6nVloI|WqHBB-g$N8_N@favIOtw{L2wMkW`%z>7iRB26PjwC7x z%eC`!d02&Jc0{g12d0Ldj=O>;^A9ny@{WY~Y(bu|-^KDteqnGb_Dr4itX0LIeG@ZK&k#y~+lBHx1(2-E;xh7&x@z4mR8 zC=gr3Lql~esZvgSGDI7RiI>Bb+>_LuaS;L-ma?@>ikZlL4v++4SxiQ62tn==A4=C^ z+<~gOT(+9UOjv~r(uth**P$dgh`5c<52a)R9`XD zGxi1}gef$n4WnJE~8rAGD28+C(utSimXa?-gJOQZo1Wb0L= z^FTO<;jn>=C@fxYt*+OE+~}n1LILb5hFmr5Es)mIFCj3Mi<{*YVM7y)@V7z$36GR(M8U{n{&f#i1`+o~5iaFg63 zOg!^bR++$vIID#NS^9*9BB_inP=Sw@tpy@3)K>iccoYShk*JuWm=7lmZ!@R%Ym`UG z(OnV;ourZ-Tv(}tD|FnStiQPyTrmTUCiG%W3>fEaL<3v6GAp7Qr->q=sDa$+R>b6+ zaieq6qkk^@RN9~!HDIw3&^KPR)p9607XHg%rJHg z*o^0d4kSYZ`^x4NKCJLWj%8y|(e34(wCk{XCJ63g&cSQCeF+S$9n+4-i;s7ISZdZl zG$(W_FlU$dG3}t$j+lqH717n1slz8O3X*$p04v;Yq=76f2)RfK#`=)4)n@8zG<-#t z`Pl{$W^7ks&3*2Cnkg#(U@ac3$E{W?9z37Im~6~Mkeyaw3uxhaF7Rc;w_a$YCGtlJ zZnpt}`J$ZQ3MYZFL>dSZZum2{iGU;n(z!TtH4D3cS$Ypcd?hSaYL><0K0o4U3S8O9*9%cZ`-b*W5(1hhAzmBup_w_^Vrsc;k<^UMb19G)>^GM;v{>=g7G|K z!=3T=0eEAAo_W3D@IVIh561&BX*h-PQ4tg6CP$K$QS15M3sTZ4_Y4#CYjiL zqzmAkN@84xO|D<8Z;Mtjkh0O@Tv$1hZXv&RlCWUY*`o?=nkuoK6nIwQnG`d80*C8* z?@6ThnJSBJl(iyMrC^)0VN~>9Bjg2vlM+{y^)&^f6FG?r-!lpycQH8##ibta8AY7X zhh@qZkZHhLynoPHA~8U_rarTC7nAu&P-1XDDT7aoRlB4TAa}e)LSvhWANc%O!hm@N5DE1TsOefps2klOU7L1 zB=jasJDe;iiJBCVGYfq@tnaSDci<#iK3F!D*e7@ii!gc4QB9sR0YAgeW*v@s_N&a! z$6NsGAdsyu#iD}65Mh-UH zQY)?pm)PlOX=tx}M0|C-QpFgtiFXMljT4;?)sE-N^oWth=|c5<^;Y%T-JsqN3E?dH zOw?#=!LBD%8dc!*QjrxE^-nS2+7}b5Ak9P*kYZmY2z;e*hf=&U6^x>o%x*U{uGEgq%&kreH#FhH zD12C_t;cSh-Z`Pe;Z#heEH8JTpzH#Noc-dIgE9(m(m?t+J8xC6waTVIUWuZF9io$o zL~5^5(q&0g#`Y-BZ~o0P897K`?$2d>lnL_4TXTXMQ9%I|Yp%1oQ_pQ6sEw*OZQ<>9 zav5oW3L!?7QeJ0G!|g?QmJUs&@X5z%#~lE)Lrx_%7d;pnE+!VXtvmEZfou}{hkyMN zi^tAvX;uXt*v#C))WP(H_BPuPo zO_m8z3rp#g#~QgvOlpG>0P&SDJ*6s>vz?kab-#4!IqZ81q|#iC66KL(!_=oz+D$Te zbhz=})&(D9zht`zgn>5P|0*h8C**b zQUPLgK=c$Me3E$xW3bsnh0%Ah2lZ4m6KOJx%ad!@3V!H1Xb#q!tyXjJTs4LCL)so| z>4GZ+e41mpoa-1&#GLd*T{+|Va(fInWN%t*fUb|&px8Z2v5nqYEP-3zBcRnJ5o;GS z>D`1G^H-}xmaUfADZzd7(2>BUJ|u`4H?RaU+~#$cB119h6cxdwZ_T`}KBg&;sYRsR zS5z%CvdFYr%WKNiw7IzPZms!_$NcWuv``K|0`AdCc!3`*5Ylb9J4q>AQqQ3NbkhXo ze{U)tOMD2UVF*o-m4gdsHls8n#zpld;HbZ+!WL$5IeiE3iyqvoSjVG=-%cOy&FHOK zHuT&bwpM(|L`BR8PbeR!$d!`dh^P=H*@x&#!A}~mA7n_UZ==B7Gz%72ey_v53*I8F=$F?!Et zM2R76nZ`6?q4rLYKkRHVE)*^#65=YvDqLPABRSSMD+TF3h_eThp;Dv;d!mkYcqu+!h*y&_Bbp$k`x7T?$0k;v_Z-Gz3`+-sSQF z)B=Z#*(1wgpL}8kZqwGK5I;RR$223=6{QH%U#Y%3B_%I&>Ah2mdziSd^ z`7~{SQlsB#;DfcJcBG6udp(&uHLO_~w^b=vEyliNDWd=dp}vAdRh~cA@TwK^eh$;i z#W+TnPR+$+U}GAxcM36uVps`5*B+hMI`gD1Rn>eW9+Wbg0C$4(Hwaxv=QUs*9Jvv> zY+$*)c1k!3E*#mXz>6e}QRUE1GVEwM3aaTz(RV(NMFuVM+|}+zdDmS;TB&5ve23=U z57T48@OWxCK{Mb*k%w@$7jRo#I*`|FzD&eJF})x)21RHz3b}Gq|6Gx(os#Op z;B7K0)mY)Ci_vA5AXZNK6pJvYJ)*mt*n+YjXQQpClq9rzOco!APk>uy!xe?u$jK6^ z#Wn5V`3rJcRY;?TTX9B&2K3Fk>cj+HC$YM+ITdaqmG-=K8e>ok=jotj#5j0PKQfkl z2e9=U$S&AZ%+|0#(mV+UM~2H8Cr*V54;3lUfI(=sDCQ&cRi$8m$VaAeLJ;c+SZI;D z#9!B%?$`Au3G;M~5>UV_3{{0QkSo+7)k;_sg?5+{bL1L}>|A}ZIZ8<2ghZ;bBngq?Dy=3WRz=d1RicWZ4=Dq7;LYFuvumVp!GThm|TdT)|*MLk`5 zt6ptv!q{gIEcCsa!PQ-!R1-+A#w(4-JKF5+r4k9pcM1$+;mSXY$1SdLxlM|5m=qmQ z$?+#cIom6|iXbCmY)HAGBcrVsQrK6r33^RaTrrUDCBK~>icp&8`i-^MF>^v!LCGOj zlf}u0(VLPBBNqi6DfhCWF4jkf(xO2%>+(HAcb*GAPyw^76bVNacsT#U4tll7=FXZY zY6=3M3_{CkMt&G}<|-_@=lCwbwU>OzdgETyA5(Dy=%_L>WjZ@r_l64n7-5``Pex52 zHWj(}rOI84xnN-!aF8TS7`vJ&oOIs9MW_&6D)+`Gc@DxcsFPScFdsHd{(a=cw^S;J z==CQu6;5j0CFc&S*4ez^Zl{$(2~%W^-JlTs{?2t}p#A%@kT(yX8qHkr>OWGnYv15Mzid&Ra?ceA7_o(!gMZ=n@{F4WC%BF>d`}2oi$n5 z>G{Z6xgLFRg1VyulSR!!HW>o&A}bt_WN8ts_q9O!f9~ln&yx?Rbw1lhTU{w^+G% zesn33TpVcR5hOX6Oy7(J!0FPm3<~J80Q8zkb}&+?6vd6fRmKVmNnMdjH7&tIzT?e3 z#&COET-51(zOXC~bwmYP6(6fAs69a`L!33Lu@mWJLRHUqpY3auR;f^o!7O>T|DQh{yxKRD>(WN(id4ewBexe49qfGG ze$m9+O$NkT0jC*Bow%NlKY96T|M9`z?vWYGwB!=nI{bMU52A>YsP^cuO5t4k?#0Wa z>UY2*_}j<(FZElXu*mH=HZC~E46C9Ws$YEIFFr(WgW#J#E#lyo2=Pz%D){(A5=Cy| zA7b6*4}|OTE*{23WESG#41#>CvyoViCwDd9Z3l}xheQL zaRXMXfr20~9uN}9JkjZ~6X@W9OtmQ#3GDutIbV0WHLMJY)%P|fjXdQ4^1GTi! z{LD7#Uq~tN?>20rZ0J&qejofmw|HsBW_gPgVOSDlGll2eM%feVk&3jGkTQ-b1NURZ z;R(eqxkv-}h)&Cr6g4zca{igdpB9xsml{3<;qTEGCSJkFyzsmyTX@5CYZi!BYtne& zg!&Qv?NbcNcRh8Zic~kp*B&utt{o+H#n;D9SOpgtjz>T_OzK<~@iCJwF1zMw6KYe5k5U9Ywdm?H7rC0cw3HzMYWX6O(Wr9dEIPOsD%@DziKKNU zi%oh_Q^18nN5&#yqM z5KvEAoI)s15hVo!I4O^kpyv`oTru9|bzhHSHDqfvYKQTmR(~ z=|tQ!uxKY;v94=hwcZA_pgKvAq0@~~m{D8b*0Djt{}-_NH57G2Whn z`9#86?^0i56k0J52EenuONlG0qY9387mn%B>=?S!i^paO&|Nh`W&TmnH#(L0V@?;z z1k{s|Erq2f4uKd+fbAW;DBj#rS+>~qSDldW6f?uBtI7s@8DzaPgPnYM#FYjLmQlr^ zm5c-mxd^M5Mv_EAuu&dVdpitAlME>ehh>QCDxEZ=i&RmQIHwlm#gtQZd}BUl53a(W zHC$3mI+UzKH&FfHLG-MyM+r~cylGCLJE@0B4$OoCj`9`gFQ3D%j56V6mzpP8u8QXfk+Oh0E>JGy( zRVASsmU6<^X;|*KTSq5Xm%xEg)lM=3)~$YMMjHjLULScelM2*g{JN9jF@P7f@g;^F zuH^xKqeLWN+W{U6H&=qIMNfx#I>`<}HV1XYMrd}+DeTMDdlhaK()>BAVmK;BWiIy` zx#f0Qp+#w_jK_l=iXe0nFoeskVRVQPQ-P%ma~0|*^1&B!EB$;fRakXh2!^s$XN)Cj z3hd&%L6@d_s*xB(*?TdX7R;UX1=HUgcUJU$1&NQspu52K_}VWVQGXE>S*)v0Dnm9| zd@PlOPSeQbWi<-ZrT{hJ07pQ$zlpw}8*`%&TQQP4D!!mVvu>GafqgI&A)QhHs3Hg^6bR*CoMvEiNk!=GhKzB|4VtXj>_O`9Pq$wX(XkOux}g{@Ze>tT-J)EqHkn2 z!rz$AaZpN=S(Ld1SyPfufc|bO1pd|+*`jQoV&rb%NzIvrmnB5=cWJB&pBk)N`#cBT z!XHp{Nz?id*nDA|yZXVY73Val8yyTL^q)(U0ar;1=SZlYl6geCUld5(2bYkmGC!fD z)AFuIyTK?>PGP3(92-R0urvf4Ho_Ddx+IJd-De#}^gZ3w;f=E+r?yBj8;_&qNU{Rz z8g;$Ht(_`JaF7`hFH-Q_a?)i7FH^-5>#ff3QYyqGydu&qaJ4WbAIr4wBbTgo6jggF zjbW{vUl?)N+<9JWcS4#2R5P+!kHE$_g(8XCIm~BSy~Z7?P)q8Rh8khz9UQur=<#v2 zI7o^0l0^DOtKpp()Y9VNIg*r1PvEI7)m@=(tPfjJ`hh6beKb*4=7K8FuVAF`X>X5* zLtmC5A71*f^zw9=dBB=Pn4v7L7(;Kk7Sv`y3pB}Md}4tD189iIOQU?Jo@cQ7Ap2g* z@uu+#K=U}~nE!37MX%lf2GywB2$ro>&@t<+lR zHDHZR^7U4*T*WarEj`*Xik`-Fdk7{7jrQt%)gVq$3akEdWViWl0{e!K;f5m*FXk zd(6#63Kw|k+oAt<$#0t@71_OVu|~ubGob+`G%*lzU{z3)&xg&}X|-C7!`owEcLyUo zJZk4=_K4bsksfEKo%B=;T2uDTpNhiZG6;?T1{G1a`U+Z*Rv6UK#rR%j)yc%yPVq z{)Q3g^NUMCU)&CMrNi9g<$Re8DJG#j%;UNfAW1lWqpPDZo1Sv4E?0l@w868e5J$OW zkhRGmUtAAThTzUd#Bay(YRooCJV&3^TN3En(@voX79T%Qm*UViYD|~KeuWY zjDIRJ`M-?5WAK_wb5qDy#F3di>Qba%hY#d9E6!aC8QDBiyFgWl7DexXn|#W(LB%De z+#6-P=+SuzfT&1Ok*FqE%vio14-gq_7!M&hSz1=;l)^bOD&)C{V4_-Hh(a=IwK&^% z?3gK{$06ITV{p&W{Ai2a_;Q1$DYL(1^pVOA3T!OzI5J?MCSn2OK?z2HS24wOj>I49 zkvol%J8C31#$-BW6WJ4K7CO!DvmtdT3KVWN1(Z= zbX!&L8B?g*IVw1KmiD_$=w8vnj%3T>x|~nr&`SoJCZ@j}jxVmab5zbOXcqF@7fyNK zXFghvN-!6xU-}OqBm}pg-g-%O!ikDee_AfaCz!N3R&$^_<~T?MPQ+hDwqI+lD!!NN zd_+b|m#Y^!U{6}5ofY>87tNVGb7(4hFeazR zPp_UnY@ClqgYA`-i;IgE?b@nP{3|V`1xwo>CtXi9f0l)J#Jl4^1Bx_%jaVhK->0L* z{3%xF9WyWZ?F2UPQS>i&KQn%05m!2Sd!-n*SLE+jr|8~TA8V_t_ck}gL*g`u6_nzr?FIHi9WXa4~}<6aULuI_yk;4!F*34Cr=$ z9(?)u#oo~`FZW{tw^=UEQ_#F${`CFRgT1)1yt4A|l%2B&;@;bpmB&Yq2nN{X=b~QUA>HN#41H))pma@9Wb%A5rPnkK~P&1{(Vc&9!$<=*|=#Loo&e=N6ZtCvsZigW$U;Qt#N_tzZ%U)$J(Z||+I-tqri z`FViO%Km7Gyc2&%;R<~W?sJydkQ|nQ9v-ZOpW~At+r7`b{c-Qn)`J!Qhcwd5iZ*%} zAKBPDhYXnX;h!Og-=U04?YmbZ{*#78qoWEx*?ZzuI;4j7gkOdOrBCGB!FY(af=92P zs`JeRwi{pW8+ucpj$Av?ElHN}CnzuZpvVgPND3MU`>!zj;1_SB(8nI3>l|H&jM=H^ zns_O2c$14?K)nnO#IN|Dze|pQPKf{dmH+wIWtfqPwUinx4XFK@EXEfEd^Ssm!Tw87IDKS>2mULH;mBeA!C0QarG0CtxdHaxkf6Z80KYQ?Pl` zu=-`NwC8F2ZC!snhmj$DGBI3AK%NN}sVOZQ7%i!{5?(&j zxF!ZwsQcNA$3H#YkDnYofBf{|dz-96IX?`I^`Ms`@DkzB_1|)^Umtkx6V(oRy_R*o z8jnif9P2k|1L?oTQE8Ji8<#mRyE*&T<*Q@&Rke9I?q(vT)mZVj-RHh|e?L@~#p?`jVPxOucDrX*UQ16Qwt z)*cA&5}6mu?v-L@KG=2k%hNOdCB?{szJ>58L7`6lR`8AVyB%9!!q=0K7p9b%U@U$Q zAK)^NT#abz(N)%~7w+cNU8d6n#|&h>gcKXqR9Tn*sPokFtbfp4 z!BDG`z4OibS|O^0PM;Z?LJ5QAn6+HN*Qyj( zn9&uf#SGsPiyOM56;iD&!A$;RGATXQ(^d#Z2?4P4&dxJE_GdVBU^?&d9OvB_;byI} z0|#aR6Tvv1YX`4E#=`Jj0ALDP$1%}$bPBo_Lf&wMEMXNz+2Hg;I;w6+3ihToW;O;2 z!FuS&X>TyPj4Hvj9=@Y;O;0>4uisG1zVoS!sb+;~yQ8p1}NBw2UNqMmQUgpj#ah^lOc;0LKv za622eDeTh4x?Q@!?}+ok@y7lvmu*>ps!CPxz)g@l?%ci7(94%UlDWd(2lE?o~&Mxjv(rt@2YJ z?F)E(@M?eW=-{vWhm$0Tio@NHfHZm?>4Z`8GmpH-eWJ!Z!8SeJTcIaoZf^y?#1BWM z@>iT>)s_GXIn`1y@MN5IDYq^0Y4YUXC{@PwmBlj~;FFnps#o=R^xi^`pV#YQRu|=G zHnS`j$!SV;yIfK7vhM=Hp0Nxn;w<9e&KN<3D&9&JN6ec!$6#vI9!?mbZsf4(q%iL( zp(x&%H={%|&ND$c9o{`b0U=Vq!o$CCxn4{)r^ywq_!)w@!Ly*`B>j=W{UBUrk$N#Y zuAx8#Y_lR&3nOvl%9v2gtu$JM(UPH3&|K2Z{)dYgQFb5@f5xheWEA(`M$_(yK(V7E z>g{aY6<1`SLVhlh-Q_+DYGD{pX22wZHl%`GN5N}m-ZPKj*9Fu`l8*8Z-5$dAvK_fx zc08&h?4sm7a>vS;l>KLqnv(9N5UJtfR!_Q_^85~^x(bkjeX{1&CuSQeYFm9D)@%z3 z61XrEmAPO%Hg2qnuHX;=wPxT2Fw4l3$B<7H<^!&p$b{LL@NG)#CXP5R>a8fUpkSLk_UJRBeR4U zmvx#8K3{T@k4Jv zA;5HJ1(xdK9P1&#^P;Q!2DPFx=}bbG@X__CL%?a(qh?9=cgyN-F==6v{og56H{b!7 zZvWrh*xFiyZ`L-~*0wh8tx^8x*81k1{r@(8=CuDia+vM`Si4ORfYJG_4v{uzdH&+%;lW{@GeFG2rCZD&xp(6fqeQ*^kUofCFC$uc{Hx@N ziT&?QZ5HG)4zVQpwOTD>wa$mzlSjZI+I9#Mv_01txYX3g^*yL|KDf2s$y8ez02^>` zYYbR%v^)YtioJ#Yf!Eot5fAtE@}Ls5bDDh!`?wM*#*2^lU%uMMGKG(q<{g=qzB8lK zig5FGeS_=7mE-JSq?X*AWAVO}8Qz{7FI-kJwOawV!iZoYj(*&a8~kT{_|x}$FP=Ty zef~HyX8DTDd?=Hc?2oE2xS)__xQL})0{XA3YbjOB!aXj%`fJ^b-MoLMZ`U`Sxvy*A zpZ;<(_2qo}%Y4+PuSadWBAp|cwtcwlZ>sNA%E3;5v+hN#3I_#&@Fp}068Lynpehj8 zvyAGIoaS#_uO+|7DLZy*a3h0Ka9q^T$@t?zlfv8zsXH*>-1zP#drbzz4B=>Pg)x#E zdd`obwQBq%wXlw2^EMHUv_0xxMuAn6A_}cRZ z8=L~%(G-#dEJN0w@H{c{y~fcY)$UudhfPHoR8}B)?p=sp^SAE z0bPRH98d}g_bDM~IOqK$<5AGc*ML$)!N9c2@Ln>61%Tok+zoN@5^3l!Rz8V5ETjQ_1oipr@|kT(~%$?cauWjZ9&_NV~yyb zx+Y9U%94GXldJ$0mi9tD{_fIMQWMw)_>+tvtk69`-{_-xuT*FiA4l67!f&R%M@*oH z8WK9`1h9EW?MIcE?P_kBu_igNVuk{7<|Jt4=qd+!qdn zjLn}RqIe`kvO;lfGhz?AB`BiFa==HW^{rj*IYf||OD%1PRab&`w(RjQ(a2nt++%|8_YL}0P*lLUUk6H-|Mz( z;+JiK?<+FK0r%_X7l>+fWP*ydwrmkMzV0+WVy%tTHt(7er*IbUAzV%f6g3myOp9UHu|bQ59`{iX~r~ZJxNJ6^<`*nF{PLtc4Z}0 z3gW_JO*$Gm;fa`%b7-f-7|?P)S7nW)+=z&8;WEgE%{TLvl5{*>xPECR7?gH^ys_%G zq_iso&qIsCTq5|_16^b?`UlJWiVv;RGp&R5y4(A8=j#0#NVRKr`hNaSwK^9wk!$yu z%-^FG0B~vbD06@>6}Uw1mh>s-P@blm(4vx*ltaTWy?QIJUH@Euy*vMmREH|htY}@k z_k6zIafJfmrMj53l+X+%a1J=C`D$w^Enj~rUtE1DLy2szb)3p$!tnObWyDus9xlX` z2L`jAAcxfSN5pR?{sQkOIE))Iil+WHaKB=^Y*uNQMsCctu&8>|ug;D5tM{h;YF&Fv z##sH@r(s+r&ZcA%cbOZ%VhWXbihlz>pSMknwpg-4U2AS8}vibySM zlzgu321~Qt7B%IG8L1Y8Mr46USlie1Po>Xj#W=Q35cN?+5{<7^A+m@U$&xFuztdK} zBgD3X_@Cj3dtVNZo7_S5XTmqB6M^Q6N8 zQ9J_)yXszQs{d%1xVbxvbXKjF6dm-rLIFBmsso2+`UOg3MjKHM?v&|%hwA8=(r^?c z3HQ4xzpJ5cLuwRhI(g*rDhZHa<2`+r)aPvbQ3`*p;Lqxh$VjJf8;JNo~@wx@8og zoW}$gj5MNthCt&0wIv;nY>=(cT8X}@6W%RC0XrEbC+ISP@rW8jB2kTl3UjT{MTH4z zk##i+*$N*dFkuj8%63*^1D+mC@{w!~9~UwUSMBB>;fUbZegrCQdM&)B@-jMMtnpbS zFvmk+0+DwdC~x!dV@oEKmB zR*a8o+2`HYBMHqoY(r}Tke9@pXk%_e7YV!{I7#^QI7Y@bdy$DYt3EkphAu6W5xVq~MJ5(gsY%JELGbmuGqJ#k0jT7b+?-B48V2WrAkm#|rXL{%f}`%t%qq>?Yr zfWuD=z4!>?y5g9z&W$tIlxJW$P24yGz5cXuvy-S;+Gd*b3LL^!Z1so_T6Kw7B}O1b z{e+EnVF2qYNaExo;@C5eehP62oV?`}3f}`R9V^~Zts%|XB-nQ5&zwfP8NvRlhmJAN zXDkUnG+|M2F8n}sV7wI3b(X@=V|0@fmL$p!q0D%U8~2VgQEwdK-^=j;(lLIFbl)#rIU$P3J6m@!*^ zY{HyHK%k&VS{dY_>B#$mqn9rZ5B?@l`k9Cjgt&uH`D%lRd4eFWnGVaO5zV<;4*a7r zx*Vj(`RTE=-cUNE8dM!`S9N$x?m?TK%xxm3bAv}FrZQW=%q>D0H>sWXPqVY}P&77P z3Z3moY#-e=Gxknyq}dy%e5|s0hMXN>3_)T-!&#RiA!eT8sCJ{wttyAsDNDGh@B?dKQf?O2+P7pbtj z`jIzUtE*xJ=VB!kZ|^V7<$kVHGAjxX%)6FX6h026oQG9N0!Cf2oUyU6TnJu*De_ zY~iN|EKXX56Ud1ZdC-L3x@)mo;A6&u|CnD;_;{+)MlY@SS0wMBqCCs%A3qoV#UVQ{ z7BCmJrWlM^QN=|=ijnIO4-;%h(&c=xHc}M--HKs+DQg?5Hs$EAxkxV2pD|8%2ncMH zQD9;OD(xxI0^9~v;E#$Cg4)w>l}ya>FZq~;gt0Y43W#^UD_9B~rJXdJO*yhx%#i4% zpEzs+Y%pKJ$uVD+-Xj9C?;;A7njY9CIXI0q<%AexU1dq%02On@qJ_umQub|?6ugLv zaQ2eH07;+t1d*F6G=T+Hw2^>d%#u;X8xL?tMzXxy%`d2Fat>|RAph0+?y!$ih1Q3m zR!(E7d92SFHVDb6jx zy9h)GNYg(5jW}`UcZsJ9hd8@M4}&j z3PSk=S=2Y5vT3$f#;e$zs-=kXSw^oHJ;jKy;cMQ7g?BBeBqJw<+Np@)5dJCp5l>Qi^>*S*xB>VA%q3<7)YG>xO7YLN+4R8i8SwBB zUAFUp+kC#$rMdfhxa99oakj1o3UI^6CJMu-slEn{hYD=4wj>mSG#{KFS8CjCWqfV2 zj!R^{LkA}c6%Hg_SuF&4sx3GXSE)P#vXs}7xyii3BzB@YG9UKlChf^ZFQVUU-HS>1 zPdNA?CP24}vtIY(`k0RY1Rt*7=lT!#H#Y8LEr_*y_wKLV;XmER&x0=?zt}ta<>h|t zc07Lh)Avsg_Tt9!%F1In3Vjr};n$-&jQ~xV81o_4R*=w?4sGDnI|^=fAT5 z@OS#5g}>fdAISgjO|JiQZ}tAY(*AF5ZLQw%|J(R^@Z-_5r_rMaKkn~7hJS$RJ>8E2 zs6L$dLJ^;hvknK$_=^IBqH)rFup)0gKyOm?eD~S@!^RK$&-Y*L9=&+gi1uDQKLU38 zutCLlV6pWU!LH-O(Ix0q=V>~M|0>q}wbtgn#-j&M51#)=^lJag8eM zCo`T#^y91jCl4EgjWr@!EKedc`ToV@U!uLIyN8Dl8{fZp@gI%o`ycjRJbm%%VdJYO z^aCwIyYS~K{WK!%Q2xYk|0;ifyScjh?Pep|Eq(v!!Q+F!hFv^*p!46|f4+u)uk41; z(Ij5({;-c<{P;mh6U`o@nho<82MYnUE_ zfxMKd2Me(K{o&E8-97B)!ApJWCC}7*38dgSy4T*rbjc^uK2LijnlmsXOn+REk+{fD zM;90eh-Uh{PtpF1sw*!w1@4_ZPH6YdyG7t85k-WWH=$yz<#z?Vh>XL8P$@nSj&~#^ zoCvRE#H-X?0r3*p8rp&C{x%&rzayCxE{jpxi_Wujh;faV?8%aRjA7Ou*%(_g^pA&v zs;dj7TBoR%Q8 zSv*~wv4VRND<(&NQIJ0X$sK#aD6*kM%on9hZbI;+KxYp0L>G`0dy$Y383`wS%RF5! z1)6|Php=)Cu;iWQ`MBWCj(qSAjSqL$g~xT$q|3YHrsl~xKTFBc;u4J<1(cUJsJ2ep zxR7cRg?X~gF!I$V7r^!xSwYFuygfcRJ}PB3dI~2GAMU`3-$D#wVi!?Vw_gI(#{f`x zT8o%yqsswZl#U^FOBv-SvaUzYmU7r?K~6i9Gwz6Uwz;i|I$~y{y=`ZhQ{-0qS^eQN zm|KcgLQ}-~Y1%~;hR3pJ4w2IZ1&GVtI4AcoP1>|R?R1EJMp9imGp-}=#PXn2St%ea zSDztzJ%i9C$;WEyE2ipoHIPO&+U0vWbb|Utbnzxl;9$ilfG`8z$pu_#Gp(z>Wf?RR zfjXy^eIg%pHI#P4Qb|oyE2&B4Aqwk>#`CIgzBt7yvBM%2C+P*&iZYpL&~6t_wHRl$ zR-cffoEeT?Dc>S3e-+6k^yI~>XS+{d?!Ma9YiRmaybjXAqsRG0pDJre`{uf(YkHX0 z-C#nF9eJ5-Y!S50g3I}6G}vBQxwyFC1lnaW{q-<(qLZ%ZT7j&x`|5{%kXDW)vTK)1(Ug-qGpt#-EK@+d03vfW@`OG8^=Tg zCCJmx$x3BLI7Gf+pCS(YV@a3d3GfcCur%Ss2KjrXB4j+>|6%v(^A|@4d;7Y<-$#$0 zW^F`%d$96-Aa@Wx9EU6WJOz%4IzfmqkuI8k=1ma}R7yIzj6xZx6}$FdV$J8GkQ0n& z2;?Z(DTV+cqJc$4gcP}hsU!sOedNO@$Yv1xE1}+8^#&cU8?N6J9d5ixPO(Gz6Z86@ zak{cZ^3bmwmLkXlByC6vGNb|QTfgpRy=;Fg}4x z;Jg`ivO+)~kuAc9v=dDVmoHMFByy=ZPI~B;ou!RvfD1X2rJ;T=&c(IwWZaoQYUok75EgL#Q0+=>7Dzwt^b78aUr_- zDM~C9(%6a)aG40~aU=^B9v7-B!T}$eU)Js>S+5y)k{(?Z`7q+R6?{y_a&gWQ7A|xj z134sq5k+By8$yB~Qq>0sw9|}0xGOX)q)FEuW(rdy@Lpe#N}bT=c0lfI^rySA;9-Kc zd_YsUiNcnCd{xJxj$Z7M28p`&<0IxzN3;Sko;|v<5t@fM6@8EYIRL)0TUL3aM^+=2 zONn23Yx8ql3eJb|)RM0H^XWce-f5VT&x+y1*rSk4qaLL}^f)<{F z#)55(Yn?ykVYqfaeCx)5p=Lff;# zI|UzX*gam`TB~%4S)fVxvd9V>U^vgNYiqdeYg-$3yw_J zvrgo5WCQ$cCDe%%z5lJJ=Tj20>J#Uu&GKF_%WuCe9e261$!i>g{C~AMN^>;F?@<3Z z9HoPJZ5wf3;b!GlpCxZoj=q^R(T!EVqu9XucKq`YZhYV~j)_g1YqZkm>&4qfq8)9s4V|c1{|rj#8O9eP|N6K!G6kDau~NfN zI2S$f1p%riL1$~$ZtFYxZq>0I^aC$fSLUgKx~Y+;-b^8w399w;-M>D0@#2UK{~+6< zSLBE1sBu3zYD7ODJU;sIVPkD|_3Or?2S>Z#Kiv;Li@tyH>hb=ohYH|ld;3qHzTAEM z_~7{u?(f5wyL}eRRxffJes1sO-OtDV zRQ&%+%Qx7^bpL<62_k~=|F7b=t7~`u|6BQ~_y3pp!6$a_|M=qBzH{$i$>Xj5e;>3G zH2m__{$CGX{B-z98V`aJ=Ch(SoKUF!)xopg7e%?DkLmLN z`s&8kmY4rGH%b0qzjr79-^Ne9{6F{c{Jm-hKfRnco_LBjG54FL_+=}uG|KW!y-Kk6 z$+HxP zfw3tD_3mwYc|ql(5N1XjO8aM7KTWBM;VADUmz2awk-C?PE0lBQWdTxaJ7o|V7jb(+ z@ijxjZj1`dduCx7J?9v6$g!|MH%Z*%fUJ~T$Ff5sjGe*gkap6I9L|=Dsl-Wk(+}_p zVH#3L;#+RHQa=dh#S2Ryh^W%Vtu z{PdJxenH`1h(Ab971~RR^G-Qts+;uB#^g0pS`_D6H1vedaO_9{@I`{Lf`hz!*~^E6 z^Q;~FuzMj`Ny?8nKJ_f^BhhC6!;VLsUcn&SSO>=!DUf)+2p`ZR1!RJ0$^^WovDipp zJ&cn|8KlLra$?(G00Hj-lMEPA|6P*LCJ>LHNy_%I8&k)xH3lP zg3>K(lL*a4jngsu?WMm)ym$d5OxPDAhZw)qq?r&#AspV(xO3?tFc8_Vh-lp{`@?8+ z9ykZZOHxZGZKD9fYpVr9U@xNTUbL}mtA7a33bjta-SSnW(xhkRc; zM#=*#QetH(g``FXI#usZ%$4CebD{d&*HN?iO1}MwFwfGYEnsh$l~LUX&1yM8G|%q% z>@219kA~J?7^u@MY5yyN?vv4BIo3q7&(`N8!WV1n}Kn*2e&F**@kEu>n0X z!=rkUj71VXI8cdp|JlnQcMlIh_j=@_BjJkY(W&SbhQ_1tFjfI8vSUCo6VJF-Vql4j zi5JHX>%o0Ah@)UhqloT~v||n^h00?s&Ou6ivT34Dv%;1l9gZpoT@nW^emdvAu_P-L zNFpkgE%Hdgp)8}>LoiC%Y9C+2^c+gN%+vWIZ~9nvxbD$X%(Wk=oOh-XBW^<5KtX11 ziAjvaeRhbbf>&7@hJG53MuA-D9s>4CU&o`Qcx!SzgTy%+5!2L8{0|4phscQ+eBnl@ zs*!R~3IAqiAGFa~0&_7LrlBs&S?#|y4nwajIJ;3FqlpP+^71Q9r(sIlOc1+r5g6Zs0+ z2QG)mx3rsx&%P3zX&<{q5q5ZOGjH6HSf#fqYD4YwwEY%D&4NV=N`wfgfl?@8CE6n` z-p~mMrc2prjExDLYbq1axG`Y{T{icJSPV$!9O0uy zTur#;^radtDagarNnxIfOP-ZHOHV&R*_Ujj5*A7Uu95~HC&AWDhfcG0#knHR5%Scf zLar25i*bLtVU5<9XUBa>F^;UyYJ-7F^%1)+EfzCv_}=kQ+j8egcqi9<2rlkgB6E3u zKwK`L4@FMcG`uehFN8&<&4CB9kxOU^dA5T@c5Nl`e4_>fU~~tL%>{ec)Qrob#L6TCT{H%dl0E%S`b)eV5VvbDLd4PcxH=@w$d;n; zW91UOz%*JIrCL%g(xk|Uo}&wjbk-ngIkUrYpX)`@rBNzv#Hkh%4SHtm4{{-L3lwYbJ6LIFg z@Rq+^y?sxsBP2{)-J&!E}(FkD$BDew(M(Quz9vUIn~(TsS(gUE(#NNC}^`LmCI@x zF-AF3 z^|}g&5m~Mn9JyMOD57KC3WfU|<;O@Rt`4ecjj8UE5#1wlerZxJRbC2o3|t2HYDF)B z>#$GpKT)8kIV-N}lzOA%yTpcdsrlXnje{j-r#2JMTSRZ~lDY3=#+gU({~%jZ%z%Rb z&?((IVV3OgE0Sm~7vg7)Bbwz~yyDDj5(KU_QJb|qxaK6w@qTwPLLc!{jsLlS%ke+) zz0G?D|8aAR4^PP$N5}4xPL+f&}@VPZOg$L+(iX_>Zl+ao&Gta zf((+y?L`IMw^2dsm6G2i0As8R0 zRS~-)!K#U^mrUK~xUNjTvznhe(-qs9$8_x1m)@fKN-uYhel!+nE%1EG#-zwP&)8HM z7RVM@%SD3cNYSHP{q3%PZD`d zSr^)OsW!S|e0rL-v(y+?@Z>o=gSHWXy=JH4r*5i&!g;%1^!iKi8T0L)ZjnMFtzi5e(7? z_p^0$a8YqKRik@rEiC;+!G-JeD}L*xOHdw*LC#V)1;t%T=|*_5-E%MEuLAU}@pmR# zMPz;#tl`6)B_tkS=eQDbHlF3CoOyY5RQ#r(t{y7x9Sn;aNW7M$8sSX1Mc0yRL1Hpk zhq-idu3>DR0iNFNi@%NYkiu%%5-*0aB^NnNBF)63v_{e>+}I;$@g5Oh3_8 z<`oW=aus13^!AoF)LL~-WjG@CsrWhmzXhRa* z`gwnuo}{T^?{yy}!7!U*k!mhP5?)8PT<@B^eEvB=@{H(k&V z1p*;dJ@On)8lvPvDpKJZAZsdRBWf{m9lk>R#tI}tTE@|EobCw0xUY>NnM>)q2AKC* z`!lYYT#$|<(PAcA?nMUHBo^=?Y3jX<_i#n<@#Z#+^OK_ka_A%6>#shGN z?L+0Xk=)dlOjC{7GfU~{2MI34xFVSGcp#aEyf$1|$KWTI!0=sJGPLGBe{r;r(S%q_ zxR8QmEWuiZqVjy8dU%OH5O`IHK6>%ey|DGQ6=%&Y5}L=pD&H+$XrI}|cihKIo)aIY zJw7@^M@F%5C&?VZBb!Ead$U{sQ9!Q0LqZFMmCFT|igYX)4t!9#JQ!MYKSV9Pe`=M1 z-2LQAM>zA0#v)tcQo@c8O2v=Uxen6h;B})t9Z4C?dDNjnX1EB%fH6 zod_+IWE`m~nemYiE^!uWr)m$!{g2(kWm7H{I|%kv1ITb(l#B;#nz411j5l3p?9gF-FT7_%?|7=}`WC>bg05ztW4i`(aUj@Oxn(P?-V=f+y-BnPD8o{0!4K+Dmx)xwx2 ze$NR;b6qi?RSBMX#awafbBF1CHqH2&p}fCsExD@y>Bin%AG6|rR@d&A^}n@^jXVAC zHhw0@|6GUE|H*a1j|uIWpc2|B|3)PX;7-%~#G0Nr_5M~hJ)aQrc{Dw^E}Vn`*>v4nX$8#&~R_{UVBOb~9(&sK|h7J}<3D5;%Jp(!YXWOQDHSe*{&$J9w2 zP`{`7xDTD}pPn*=6X%v#gbSW_B&+UMPu2XB6m_8t^b-u%3eL{jW;v*ZK60MNdDS`C z?1NcKeU+%L^49vb-l`!ucv*JnT+(q;T3WB$G1`UK05XM%q1{V65eMP;d@~n^*NVTl z`8rwQtV9f_;Rtk;N40^53SXiJo;iWRLpv~FX~f{{)0z@vz)zSPTuCd}MRpjYRJ~)5 zCS15iS+;H4wryKowr$(CZC97OY}>YNJagW2CX>ux*vbB|uH0E`K=^MzF&@WAcS)b! zvRGs5ptPgJaet~RCr1`WE{yWO7o|)vlCz#s)G(op;vW+z zED&$-Q*MEu6OmrWDOD{6?`&A8^nx~otQ#=6Bs-1m>bTebx(0OwJpbqOm(MiB+>L^b zv!J8i)1B6gNVG7G)FkK(`kb~>c@rIz7RUzj9^9-Bxv$xXVM8X9Tg|?5RQTgqJi{9#=8sV z-c?NiX{;_Te$$PBdi&bd^?%R5}RR;ilQ$m1q%WYiPiCp7Dct73mNL;sP{#Mf? z&Yx3EKu)#jmk*$pqF%{9X|>LY$K2!MV8dywbDULMy>Pfe~EJv*{p*_YS{ z+)&j{j$PDcX@#G=@=a7L&?c`scvx?I%@tBA*k4rb#Uh@;ZhJ!d*X@S|PPv$=5;7CT zRjH}t=v=GnGLdpseFjPhGl%-D^9YS%+IDp*MKfYrT#+^pu52dItRdc7hw^d+cU-!w znz>%>{SwC>u)|iQbu1W&=O!%32)YjfYj;%4rwFZ-G907jf%gh2(@suJ;+naUH9x~K zFl%+6)yCtDBib8aT(%Ngiv4ARZ3iR7u`w{Z%Dd!cPbwgU3Z-Cyv=Thi*r{|HvPf#P zFw!d))DV*q2#5;iO+m@pduLOfRP-QiW2tls0W~u@CT@JAEx|k1qfwy8DzMhH2EMsV zaLhKC4{_rVx4TQ4B77zG1`^DDYE4(bt*ggi(`PdoL>P>7y3(eO4ci9Zw%#Q{X8O2yG z(Z*5|D_A@he@N2DDBc43m~3H|vaq#lu(_XYOd9e8Ok*qvqvmy4xR3Jq+-$K$o#!CEI0c93&qB0dZcKC7 z*}dWnxdd0Bot*G~-e#{E;_3>)1msrm-A|)1^Eks(VtdvQj$=u-=DMkWdcG?Cr>(!~ z2J-yL%ciGzogx-`#W8F)mYt#5g^?WXC3`3C&j@r2QFrrnt3 zx_5J?Y&bC9YC*r=%H^mlAsjx_-FCDdmq_ks##&gp>xagLK$5VZarHD=gF&$IR) z69LxO0l4jWfX*&=hhA$y_fSB0T7mc1pA(|r6kQ+-aidw7-JZ}U%AF|^*kuOJ@V2@( zUfI1Htu(p@tCW$%$xEGyyAn2T>Y@Z<^=Dn- zaMz3NAMP+tc+x+6;i|XjPE`XUu%bR;Ng4zJ9axBq2UeJ}Bo=-O$i*z%b)N0p234-E z&;!9oSS)`bE%FdH8t9e{HlLc zX+n4-3!%o^ER0=Ff)qBxzkqFcG12xnpuu`jU<+OyMTlK z9u93sD(P>>)i>PkZuC|K^sL^+Q0X>u)L0m>pu~0*MS?MA6=mo zi>I2?iH8HTvoDpB2{UF@B*or4NV2J{Vw!!0D3J!b(DAc|9a9f?$(*In3XUv=&h8){ zvuLWGztkvsvW$(8Wa}O3GXAoNLI`ARm$8l;i&Q?J7>^rGi7_X_ym z^21@pK%`1;7eUpVa_r9se?^O-D~p> zv!C)2rV-h)=VRQC42i*A7QSS`sp+euywSd;FduHaV;6?lWhx7M%D-#0#1r#O)+iqZZH00s z9RF&|GR&rKH*mdWWBr>WRMcvi*v-21ZxCGhOpqDnTpOeN+PmzfHvx1@zV@x~e(lwL zPe%fBJhuTz5Cc~jp}F{toHehY)sT&YQB}AfzzF^NO=DZlp!VBp!+T>8uNUQe=ADv; z52L}I3(*$&Z;Hx5DvUTXlN+0j7w8PmrZPsNeU5Gwmk?99vsgJe;^g;oPuXBvxChO` zIWOLvnEIspAp=uWMXI%=gQ$fHiBJhe309iwi_-Ca&^sc!N?$0?r|xn%l0EO9ZxLnX zib`+bpHj3T1Y!wNyjWS1JT(chq@wcWSuIXhiQ6GML#2CC$o=b+r;YU}t&k%uf8&$v zn6Ga@j)Yqm!&y^*Y=IY95sDAF@@iJab5YJ%wPGNzoN890A?M-ZY42)Q!UU`S}kgY0&P5F)zPx^1K~zm0{IL8P{^DrOBI0kZRoM{9#~RYnXyb3$*LD3U1SdjfLNc@v?WdiXF z=v`@Ri~e!AK>z?W{LS|P5paiyhR@v+QoDRkL2Fj@jc~Ure6dqrLTxgxNNeGYgpQbG z@6uEKIFh^Y;Lx)s#$O$k1KMRff?mt}KPwmMT@Sf#)T;Rub9jT9ga4A90mf1(oc9ZQjv^gF0kHn-(-0;ml z*f_c}Ucw9>%VP?gMoND25Y5F*ZBj$a#gQb^RVM}cAef#I+rU_9-@(T(&qO?YpWvOO z)+JNm2E04ND3mQ!2_G^gY&Z}A;s;1O1>nyOMU1b8jQ>Rx zrIvu@n^W96x&r^0%yKaVX&NOKQ8!r?n~ry+2Z}UUZ!Lv%Qo5VgwXxVsFV+r7BSy%T z57|6>IaV$Aj{TF$Q|yf>>Q1w3E<)@ZW~y1Nr7<*Q zdqgKnkW_BwP*t0gdav&uU9;De5wP5dHBMQ}Q$`4@nsV&9ur{)x&SH zqjG9ZeVH%_8i}ZKfpIK5Ipn}oeO!Iob0V7cZ9h7LAI@^aHsD0En63GuY2r3#Z>XD9 zOvS%*{p>El7G!@AboREdPr!Z>3%8>q9mD??a1xE%ebzyM`E?uBqUR8y zDVhTnkfDvI?izeyB#pk}S*MS74Be%a1Wi}ZxQ&*#wjStsV^BMMM8P~gY8c1{qLW!02JWRh0wsTXR%V9q*4hp|0>iM;-s0Gx&> zr^o_7?+)U~oZC>NSS4YWMai@++$dt(9;GPgXhN(~4gvz$+ z(8u)a)u#pZud@;qRn2-=>U#ASMcq1K2}JNwleZO@cR@O{q@$h@3*-r8Y~<#w*> z7B8zjchL$Q7`)B-JCEV!j7{y0^Bt!P9`VG3>imUD&?dSutX(0W04b5HKrR>ojy+nh zZ-dCxiSbT}0QUP*!$3W7>Jt5Z#8g0C)j#>nS6EzSJg=xqEguYTq@=V<;BxpEmYaro zt(ty8=rIYrMa^;&iz#EPJQoQGMt3Ra-TF9?tqL9ws}E(B`0=mHUlQc0+YE+Ye@Q`9 zL%zB_B@zx6ewKl%nP&-Z{?p6H(-rj3{&?zG`b3CLBA`lFsfZ@MHz4KPeVztp2xKzakiXAj(6i zDb?PWszS~4Ue0RQ9o(=Vl%JL!JrDc(m5T==#%4rz{U=O&pptJoa!5i-iluplBTQJV z(0HD1!^m5D3OpO#;pL%I!`=#OcF4IEm^^=}ts`aYIt5J*(iWBW+$$wGgmzac z{w}hf6OL_quQ?FSi(;u(;t(igqOJ%wlt!TfC9O!@q8v&~fyiw>YFc=sQHYY_Z1^;z z<5C24bRr$eR?yx3X|v@SFHIs*+%4)ZwB&y?I3_+w;T#Gh+y z6PsIC{x8-L@p+pij{b!2A~{QgMK%RNVW4{(Jgw!bzVGU$N*i#>sLUWT!yWuus85^D0QLkd|e#A$NmQp)TK^>mDi2B5{;M@ zDg``ZGHyYkvXpK3*vb8V$!fmMXCOE|?tse}jgjd_Riv{U!Q(LU#dkB`DhI)+PYxM> z%A#ooVHybIvK3JkPm3*GW${YUN$?<*TgruW0H4>TCny1KW-DLqZhSA?1e()h;qrBv zf@*bwHqv)2!$i>LI3<;X=z{hmt*HeapcMrWUi zwp+w9+KTWNt=4kbEy)f;SkPG?wy}wtMNNSfF)u--lk8ChwIsxVN3tUH>0>&PQnB@|&)H{34XvksbfDXK%)^eq#D^aIppUBUakJSWiMjJRlE zYP0kAiTIo_B=;yR*dxL6-!e!GSj{5SEsqMDrC5J5T;xw)o3s;#C8^Bya&z}O195!> zyMGc<=i{R@>nfsmiU<2NGQ&vZyEP{w*c^r~_qu3}QHbZg*NAbM7ls(}?6hJOEK?lAmk0z^xeGR?=oq6my5yD=p;8Fl5a zn2pUklkB!UxmH}ETAWO+263yvnsc2TE`qM*_$N1A8a=Q{sn6Q^nei_XX_BqF=pg{f z6ILVJqlRJ-e<{pN$fz<|3=?wx15L}7LG3y{Xsf;s9Y&_M#*t3u8{x7*g4Vqe@GrMr z3%W@Mv^52eH;DzZ&@PGG)TvNO_PQ%|-U7HT|*{BkYvczoPa_`hU zhy@GVQK8dFO-$``s=`#6$RT}4>X)6QeE+%f=nvDXIh*QCav^=ETTSSMPhayGZk06u zkkOd#f`s3yCcrpwN2h@KdH~0o&81-N-bz5ne{<9v-}U}1jO$KEo%F;(OO!cp!S`!r^^#!+1rZgbfaSFx(a~5f8FQC0dJkZTdR5B z0l0#wkAkP%^#MTO`=3HeYtG9GNZ*7N6>xagM>)AOJDjcn1cb}gVSfkk?`cP+H$hOm zWp5=y`x^AQAw&UihUG45qgFq3SH%Ia@CnH}4gVlPM& zW&wWkG5YAM>$gIfXO|A&T}n|f@F>ixKi_V37ykMVD)$tfkb9InPB^O?7CmSoj;wN@ z$9&XaCYkrS)-_0ZC}a|*XWmHshnLQTRK*y}J%1OIL)l$;gm-TeSbM-uB(S~GJ1Fu;ooX7Gl=m+;lVqW+%+3+Ed8nhE=D>+#!%ZUS8D5r1 z?htD?o^iu2`uS0`5RM)nt0088TU>%*a7NgJD)A3ThY3dRJXC+U9pj?#v$rWAeNUz| zlV*hEVAk+O_h0Be9H!BY#`|A)jbD*OBQaQ~d3X_{m1m<}W|F*e;cc9i5gAI_TR`!sC6YbC97*eiw=2isNo-=| zL5t<65X|44P!<`5*()EYSde8#6uuFUeN>$4&lZs$m9Z}8rML7Cn0lc^aTCv45BpVy zbCWx(4&rnD_G@aHBRgAwn0aGUo3yuSbBvk(G5NrX^9MZXWo8 zT%=Zm9v`JBFO^h@BdpdsBbtyafgUKvC}gqU?|6|A^XI)e$~x19$>Pc$rtsYgJ^*cA zd!#=Zi8cslsvOfr#X6leh%-MOmV zR9Vs$GH3^|fgvnW@WCdx3!mYYWW~BJLd_;*=WUv2Dfg9ZItsf3pK?7X%X%E@g?XTD zDMg52A*{izm`SYp3IxG2!5|2nwR0&DMS;Z!J==f4ln8P)1qTalA7?uX@$Fc4od-wW z1ZD*mUB#YGBQ~7E;C&semcnN;j~|_;Y>I&>XXI4>5W_{vV>h-uHr^UnJnUz{cp;a< zE!PrWqlK&MnbvYku8cG&uN&Z?6r0I+iQ7LZm(G=Dl>8vDvk;{sp|mPBdea1!cXEoY z#gimO_BF!{_ff}OimKyJXXv(-)BaAG#chHS?7wyjcY4u z_3;uPw4C%b9lLnL*-R|Tu2`iMXfw*+q*|H@YC`4q(XndVs6SL~v4#F?PIgrnv7(KP z6O3hCJvHYd^IRw1jdX{jeBqM+*?rph2(Rd|PIt|Qi0)LT%_}TU_UHnKN-&Rr$_f-p zK_Y-!1?{#8#xO}c(0-uK>ekFGzH?pIVx9SdJp1N@@R)Tc^V=gV&{DrwQ;w>qZ_puA zJNF5nT9QNFwTq4BFZv&L@9nbuUVWafdW!@8^eq7#PAUul1xHW-U^<|+gx^l@;aRet z2xXqgwf3We2y6;apN0?{6B9R@*&+SqIeCen?Y=5QKtk-NQ;vU)vf!S-jV|ogd#>lCJ@M9}kEbn4w>wkvoY{bOqH*Niedt-eWM0YH)>;;~k|5 zop^X(OvdEcU?oksCw6Tdubj?NmVdCly71xrJ-Lbz%Ywb*g_LGSVu?x|J%bWq@B8nb zQ5#~f!V%JOG}An};0I*oeHalxnfN!S7yF?n1!@UNg7aznD(jit@2?L7`dxH;;osgb z>$|a#zFX9%kDTuXy0w<4PEwvy3V#ku>4s`@)B~rrhF8E-MTq8?xwHNzkbaWPM$`CB z5SoZHSAzcn*g?|cm`y{4Ih$eRM82d-81C)=8z#YXd$ojoI5XmlB%yiyCmE1N4Ef%T z$(T^R7c@G#C$Jk(wFeR;ZhzF|6pn{i*h!q=`sXDE@p~j<{07zcsX`oY8%2kJWT$!m z2vHiX^CbW)0a>XG3;xLCfr){ng#b}@!AYm~mrfE@8JRQLzI}nskT9IWZHn5O4&{Ew z+E=_d^uku}=812N2uCXq0tY(=O+I1Sf>x*0F=KU#@DCrLY+&RdGQqJHYAbji1ZHTU zm8>+0Fdrc1S<1_&7u=ON8bPhu=v@F$EeHBV1tyr(j~ZpT!&k)YpL8f+JU!Co*oE$T z=op1xK*X~O+@5ZZiXqq~e?TEcbbrTjop*ht601e{9&~%HVwK=aM?f+J7v)DC-?2mJ zBd}vmTuxP{K%JAxZy?Bqmo|Tv47w7UaBfRCG6f3anw`Z37yn5aWxo7gek^PTRN;DoS5mS^~ zc3_b5=W>^uHlY{w<7ekVd!7u<z)QE8u;b;3O9@z@d_r*j?NZ$&f{a9@K z=B*jC6K^iiH)9NmcGwD!NKRvv>ffp0{;nIlF*eF;njzwCl|NhyGMaJcF?tWlz7b zu4o@^qNm72=@gl+FiE>WsQlwfmI`Z2j8^?&$Kpyku=#4q>yef&d|xOoo1k?vf03GIYd(~oeBl~f?jf-b0VuwCe^bsK{r8yT zpVpBDY+{e(K!?!J1T>)zEMOgTivfU^Zj$PU02v(4wXxXuzBr$^+iO6@>O|W(`z@m ztp-5h`k2=J&RM&py7k}J!nEbC%v?y%Po%3b*+3CF0L~#vjGT?~)nv=YEqM7Rs?vQO zQW0BlQ^hGLP|#XbWK5e7Hw;2j{c^ZxyX28rIecPw7l~MG=BYMKi9}?3qkpgxArSg6 zzR(C$v|I7TTWVNaN8q=*mnr6HcDqyQP}wpV+qbxmPVDbgqD3PqP{j3O)b+^3=A_1s zmpK(2S|AoeN=WhNmq59myA_SdgwOgV1KBzvoj4ACvtWCmM>3L!RlG1nQ6=zNhHH*Q z(`l|S*IsowS+DWjIjb31Exad$M8zN^NQ75ZE)q#AoT*VzDWu6r=Yfs9;oOex-$;@d zNA0S2StSA!?FAVA4h55_l<8h!{3on&6Q|8y5Qotv=^()CVwdR*Y;~|buC7C?d$*`_ zAT`of6Up{fcnO&sBke*W+hmMo#`?DNBj>2r!In)S=_2YAsug|BxKDygIzD>cY7W&iu{W#qEO`!#3xy}T75ut59) zx}HM8eO`{0Y~F`b3>;8vzg|g|>+w6JcrD1L5QFbta^Abw~ZO}hy0f$li!c1Au5AJY@;FKi? z&gqKkyz~*%)*xkDiNQzgD7OmZ)wE6&Gz4tW7HbMNeTli+LDKTPYk08jYE;zYsZ1d} z0XOwnmbxWgJ4~DueTyD@0SBreISa&6#a#%srb8<*?G{9e?bBg+^VB2tWgstdj-~Ss z3>mR?>c935wuXYKF-x`WFb|%?3IyVNjMcsL_;dWx z0%^%@t#09rcXjl^KT2gNj1^E{p>-JrJ(A;+6{pt_KP9}We!>W#L26t|;PZK*7GKGJ zsuXwmjYv>P48?a7#8^BX?qZDei)gKw3>+fydh_KH`U&W35|lINB=W)m&7iuao1|0H z8A(vuusVl5T#ySy-Z$cdk;%pIl3nk;t$z8>EyZL1)VBUL92%ih|?GvB2bczi8zyzJrrUzHJ5F{^RS=(-z3iXiri4wsj?=$@p%Wf1%0R`(am3e z0+z-ib4HFl2>pCS+Nnk=r3#o@_?u^uM;1@-$WMGL={FRDZ=CyCjPIV6?=f-)o5+nUyhLtc1L&6|* zUmbqhU*)=y<#{EI1W}Ph2xuynOL5trwfJ5169W^gU^|B`0g4R#>2P@*V7k4Xomtw? zCLvQ*%7khqLu!R21-v?sNHOWk4JLtSNm_KVxkIe<474>vA7#oJoI8&_x1-dJLQr1;|^-kEEEhnMODh}N$#{L)V(F* zlw2%Y1dVRwm`kxjf;Mf~xBQr*3Ies9@8fJA)Tk>z;u9R~QqhGNv6&NUqgk6XR8M)N}tC=;i~88pS^<-LDU7U=KOg)p`I zGTKh;wIANvatg@^^#?S6^0BqxIgn<}kD zZoKH~Y&Os2749IvJ{T{{X<;53)i3XT6AW?zf4sn--})^oYi?VQ}?ZmbDnvG=S= z-b$1!JluRxm*;h);d@CI4{q|5OwlEPD^+i8e^u$JTla^PWX8Q%h)F~&zP;2KDod1- z*Ei?3<~6O=H>TIVtXr@g5ixB8Zb^3{M3qYJ$U~TTr$sldL(W5R-yt8QRbe=wC+hPx zfd46esdfK#H_CY#Hrj}%kb#zL)9(o3g^YS&^3xffE|T_EQmdBX7i==T*i2!&`I5I1 zcZn_Hd9yaM1&EclW*S+5H0i~Ln=tJ8qcLDHc@N6uo=K(OH}Yx+`5NY;pIu@v$WyL~ z2B?X}7&}8U8^_ncO8S*`UyTE?qk5rJ<1E#LWuED+E=s>O$KxKQw6>PRDa)?D~cddZ(ctznKX-Ypz>GdsPtC5`xhwW3J}8Y`&s6`ck2SnBp{AgX`s1 z40|PTZpw(=j7qO!O;-XPB+4YnDKa{hCY8DzLp(VTniI|c5?Oib2xR9b|znk}P38DL6bk%EK@f+|atO)cn|)OUnJ zdt2E0Y<@gK-^-A{66GMSJ+7qD^!7F4b}6I}36Jikyf;ziN4s6Kwlm-xxx}qGEI=my z+0Lu+uv5{`5G(5wq{lo$MN*V7ahtX=W*ABwKz@9kQ{N@~vl#RpL515JLEay8tkxz5 zXNgFUMbYgOVF_ZTxC|wbfOaPGC?yC(3p5BIBP+(>W7o-Z9SI>OxcT>K1UNT3%G{CXLe)lilKJ1tPmfUdQ^YuM{#f`scW+5cU6dv` z_`f2i*SRwo`kY;W=j~iHU`~19e+Yr}*T=HF<64{*offB6%@?h5dEc~aN& zAVekM9}qng!}hc2c-Zk+(sN<-_=CUWb!tD%dPeFkK+BY~_kim$!rYX4y!OR*xN|Q} zGM3RTcpVYX`-vsM!(}wdg)M zA&cyDfc$RpUj8@3XRk|%m3ypAAQHLhRsae|3|7G}=k2b}I_Hq9(gC#&!OK`~-L}&3 zq_xuFYimZ{E+^zCIJ|&soUUzzBop2GN+26ac}Ytu{r~hP#EZsg56*68`PFZW{q#9N z)0}RFj(rXTJ_HyK+~9W`Jx4sjZ_iNwYNo&Eeo~AZU0$HGp8%4mIRGX>^p8E{qyKp$ z{olQ9y}jyDfSvvJ1fcyvl@YL&^5uj6Eg!hYhwQ4#7GBd!u=DFT~mST02*Ri)Hmf;Ti(N_vEpsUV2llhbTJ0xsO^Sr!={l5^|Q1ClKU*e+DhX z{+?r#78ZD7_WO3p;;Zc(dVu%)_&qW;6f(4!Xeg0W^A_@Oo?>10W)J=YL9k|79j*0} zmScJ)7_d3EWR{C~H=23#;f?)-dGv=oO?7a3SBvz$<|jkZ$;LWNE z!IE%+LBT#+AK`v7VrxlqSe)(Zn|KNbRg}(uS<7G*&iuYp;^|s2-e4K7@(M$2dXByP zzh#MZ(6euga85DeYe0$V@!{ps5Ml>pY(^kcph5BM;qb_hD^APmRdG2qkxZluMcdyWtmQ2VOoo@lS4@b9?;81B8f05Q5Y5Q3xlVkMKNmc4R@*KgsP zVSu^1W{dXzW{GqA?~{!_?SDRb`IWbn|G!V3uc1+;El;Y;7b{TTt`Z8T8b1MT?4Jm$ zTb<$0aqHfIRtWSD+|nynDj1jcgD+f_bGZdx3QUqiJ%reArVJnIk_Hc^sTZcQtl32F zfdikATm-sH`xRK440*1$jSZ?oC)YAb-EB$HdcRv{Q3?ojxZM#px6%%QiL|q z-8XbVHiI(14=Y3=1l4^MRrC@sJ%IgtHQF(HB9x|D| zV!V3S&{aE*c~ri?V^QPUWS7Z3j(TUL^Fwuo}Q##I>*GiwJTv_@1B zj>sKLmbenQ`*rfEy^m^!e{>vrc0|h0Tw19la(}QgZ3re$HdrTh_}k$TtTItGSG@lS zg+KkeF9+%i`+(^4pK~5axE#5tgA_*?BxSU6(di5CtgPqy%Cssfi9VM-IP1a5VH@8} zYX=d6A1i^RaL9KZnkoeDnHso$JXfgH@ESqK3GyLG38QC9nTe@x>|X|)QBg~1@hZ;| zhaFfvwt}Tu>7TQiNY$7^LQSTSLO@V$Oluojz?|nZL3I8Z(i2|CGVhaBAHM*Uo|d^Y zPxAXR1IE&+hwePb7^MkTdOdVXLbL7O>G1k!6rUaKz7?Zq3cp}VF8Ir>-j%(^+>nX= zqZ05h<$_?ugY`Gv{qM&e2aQrgP=UZX+DJ8tdm_{P@dWvk@Sz!PW4KV{JiC&*%=Id= zNgAdjipaEF8un2K<2004j-ZAsR3e9>B6m!=&qS_>$3+vvmHJ4kv@Fey6dB!E%#4oE zmObq*Zv?wFC^3nAS$|#TAM(udAc%yH@!8LLvV0kpWHM@KuGHvkOo#8 z4^q4(i)B76FEm1jXG0S#*n|rjLhHZf{bypA`)4#Moz<=UNtiCYCljglrL>CT*?A5$ znwr8Cdvu#>ZXWL}@aDl)z|(2v@*@WA(9&}ik>jTwx^5B*$qaE%ovT}2!HMykPNSM@ zS}?Z6EzZrH(Yq4)_2+QpNqm2KLPV`{h!Q!olKz;2{9t_9lT%NfGRHj%@6ODD%|oE) zcd1%-(bOSSDN$U-YQT`O{}ZRBi54mtGLbJH&qbPt-$&7jUMxLw1#dS#!Irg7+P*$0 zHT?+jlA{Ub6kgrb*?}^x%Xn=bib0k_sL^HCNjq}(k{+UyHvNMrGxbJOrn_u~P4nGi zMZF!?!0Ynw+CE+e_RgXeDSf`aCx6;=#{i!Tw9H0ffl`T$uS2?E5&GB)WDe7)fh-DF zW8W>RQ6Lw4=QegBO(k}lD#lv%BemS|d;ne}k9-EXT*eCfd0L&4nqCv))p(XWT=V)k zgsDBt*~Y{rJ!{d6cUgh^AuGd$Z#ev2Td@juAX}nW`kCqUeuhJe;Bl+}2gYW}u&(}K z2O+Mru2PpAbg8YjGKNO%_tKZS&pTtNVU@7iblSSXPhf`cZ>w49qZwJ;L^>a2)SJz7 zm=4X^68=GFC(rru4>G#rdnWPJdUA0;c=jerWhwieLWTyCAv?BvdRpAq+Fs^_-VU*o z_|eJgsmBu*BXdbJRsq*BRL>{R5L{NrB@9DI-~P8ia=Q`><>*?h6oEr3e=vM{b_c!n zWC1B36VWWu7OzOA#FAjy^&(DkYY7vB=T1!J9}sP-L-A&#qWdKG`c_VjMm=jBW?BJx zMiS$}`b&zIv+NO-Owieip_c^%lDdZp%RWkKN*#2n`9^r)^37hjev{c01j?N!SCW6> z-5GRlWrPw#!}Ou7(`FRBcZG^8D&wPi_)I;!j7rl?#R|xo z4D+wAvRH^oR}%T;UiC}VwuHHjH}b}Xp{oDLBHQqrMI;O|*%^nE9qM33|E>#wpcH8H zHh0TA#o(2=;2I;D^h8fzyer5NU?h>a@bm>tH+8zYZxvg*0df(kIJA>S z@af2#`E>{K!)#-$h9XJ66x-=Bh^%?mw0hs0?X#0y)p&C6c^->dXkp-t;WAY6 zqH&RNv}#TzPI=3IHd(JJb2=QScgRL^*QobVc2y93TKJ~Asmwj{!xP1#Qu;qAYrxrH z$?k6XGEQdcJJjnlFFlh&By=BA9*`Ij(SWkMI_4)Imm~}&Mv&KxY`SUdOiRE7uy7sB zp^qagHcWjaBFmVqI64q_pGhz&l|0+)*?Nm2;i3>1IKsn(qOu^YXDSFOM-+KJjolt* zBF6G}#5~Vs<4K;vi&dum&TGu85;UmGwOWRuXO_r;nMezfO2POo>Eps%$3o09qC5H% zZ%I2_qcC(H7*-o=c1Ke(h8d*X+8gRI)iL@B%W11LP0Q$}JVa302b=4p3s_uXuf=UWe$a*xF~>}ByQ`R)umW4f*~8w>>c(pDwU#+S~ldPq*WGt5gkt?$c_ znTDeTRxW2}mju~PLF=-6zixatHy13nMB~yS}xIOZru|b0K#PT4$-Y0Dl)p;_YFZ}5AK6;lN2^$y&I_z|ObVHY9 z_=FdGSjK~W@jN1wo&WDC>qqrpS5#_a**ti3%XH;TfpJ^`4f=`fAC z+2%Sq!CF_=l}8E}n{JoWHp(-(R~EKTfJ@cg zFp4@dcfk=Ep5Jc1flq!aU`thg;$4<;K zO5Eg;>)2X-Oo~*^d>qybY8I0E@arjg-L3q;PvS5W9sqDHSp1SgW}POU9t8%;bNnox zXA41@oc6jJ(jP^8j6n~X3{d^r5LIz$TNK1z<2+tI$FWPlXQOzDvq+`17@rA4p?$yT zw^P%P{z!^oPa!pPt0YB`ow3I$G*#;cA^;=%V3*x?5&+$_}aEx&ry5cy}OybT2cPkb9JFlV=TM{(w z=>NbvGZ4lK2?`OwJ~xOc=arq0YcZ5@358jsU^gz6w?|sqJi|=J(}swuvYNLz!MeYMkx~XGA*p+4tw$2n!F}FN zLIFAvqgT5(5{tzru__Eol_nQ-kXh5=p`N*lwzs6B6*htH^@)lOwsSf9O^|8W#}fRe zWF6(~o)FBQAP5cxpG$bhJmI`Pr%l?Jar}JK@f@3={IU85OX*B+5JafY54Hr2Q$FVg z`Z`(?N%whC|IK%&09*EiMK$DTWTI+~SO4uU;QQjU@_4-_Kh0t7l$+KH3lOzDP;y-; z)9;;^2#MnDXi4H>Sua0X22&x+>nc^OG$QPrR(4f-QCM$v@|E6PqFmoV?vmmjMtm*i zR?2^^ACemY8EE))5bUcV)R+}WteN`-hPP!iv&yj77UYI+xrfiRe)dy!7(jiqqesYk z8DJkY?h*lb$@0H^==*-?5d~z!-0}jy%Eng4!L**2@UAx~!he}9un96=X8@=Epf&#K zuf!$(zUe9aQz^j5|1O}!#CM$0ss-|$3SH?#9@yZsX9w0xIC$)l;P2fgh<+gZjTLR% z6?Z_ifi1qHX;#r-nodu&1z7(v3ix;!pq(c+V3I?i!oNeUfG6-t^Uy`fIXn?8h;!FV zPvPM>y@6vZ&G`C%03JZ$zpsw!`Wg)LK{_0nt|*Mw_BZ*DtB+*&`QH8^O#85AC_eIN z-m#e2s4I-&@&5kHsRKcsXTH(Ye=`4&9`8Td{psn^@>5Wxj}BfuH-izi=-4StQm=C2 z`lsk8yCRkoNI3!J^AZ7H3M>b3o*sJE21 z+s?#RNbXAG3WLYemL~9Csbg`*&XR+FiY{z)7o3i(wx#XJ*cvIq$c9l>c z)6O+vvg2?XEC4-G8)!zC_l$0^z%8!n%Vcy$fiUR1Gz_U)cI-Kj!!~uy9vn0iydtZx zX@=tfl2&UxBy$@g)A7bDMVWm1(W0jMy~a25Ew+207p}EA)@M3VJJo4r&K8>Bsqbq0 z^WE|36WJ4kZBO-}XQhF+?ek9|eih+;SDAK}q7B`kaC!$ic6^q4e8`=shUQd1kz4?m#wk^3Q0N4U23Dqo zEeQ*nLRZw3!#eQkh~LPwFz$|-DYi{GUifByf;>&qsV76#iia)IE}8o60(eo*G@^VtvPVQ+xUCaD$-zYwx z*8H;?#b>J17aV)GJk{s3h8v&zhqs33?Z0}Om({~e`|l%oo~!@5wX**{$W?6rwFtSg z|4u34G{O4Is)%gm$Cc^#{!PD*-_++d{W|qN@5A&9G`i$hDV^8!>jZoin0}?jV$<*J zx~B`7fcGBxW{rhRzyjz56L2=XtqyHHJ;ow6p6$`5neb&BK+lQx#9Y%)fd&H4did07 z8TjKea+@$&MN$*;o_FYgM9b%YE$oMcwQjM_cCqdebp>$xn^ zdaKQCiN=rkI_a9t8+?)M~vw?#f$>Fu#2f2Lt_bS_%J7l!|Vgea1=^u8*PfmxE7Yw zF)v0*?<&^FlWqtjSO??bAW2R7pkgR73ypy2$0AeR6WkOrt66*t)%3&2RXd@L$rup0 zH#lI=srHJ^I%UIOB$1d&0AOO?bs`G4jds)m*la$VIgd1Z#4yR!i(}G}>%O!?i8k^G zdzn^N&9T%uVz@TfEm~aCGt+UTv`vSYi5t%m6leP8cMp2b!~8hTJ=FL z(akL7>{O=3qacpKPqvp6?e1pfl8pLcnvOBo+cl75C#U6*_uS&8XujUuoIXh&>%?;; z)8a5t_oL&Ui$inN*R*$1fB!{&m@dx11^a(NI0M=)+^rm2{^nhLwkO!>rty&zCSCJn z_dWNsdB6Kz0-c0dn;zOlc8H}fRAXoQLKW_ad)y22?t;^$%{(PKWTHYI9phnt-!@J3 zh;u2+2}kFOyst}u;0pmgFeh8+Ci|cic~>#8Ig1mnt;XyXnzW1VfB!7FbC$VmykUZ= zb~}4u6eh6TSHZ7orN5rO(nhBA)|e&Bxy?@#1yN^>V(W70W#!X6D6p#+Y?h)Zew*wS z`7W8gz?nUC2<{}}+Qel8os80jgbV{oflUC;dK9)sVv6JvEyQ`bAjTRJB%ik+m1^mX zI=3sVGi=L}hLp+@8H_np5Qgcj&97N-_J;UuXW4!=jM2>d09<^$p!sRy#{q! zHdRLnPWGC{8MbBTq)*fC~t8xhc{saEqgnz$*f6vP5{U5#0I0S`&E|qQ7+OP1> zg^j^qyY9J@On1i}C(D$L7c};TkiCRWtWzhxi8x!SV$@UdD9Dso05OJBcb`jH3>NOF zAr7Vm*;E^iajgLh1DnCrhE!ob>|O}66&J%{wBWcgY{pnaI5}<@w4xzGjnGS!t|<)V z`l#~~=Ib1oz~fwndI?o?ijAYlXkIbp<1%GW(#ZLQ8)+&L%&pT+O{b;~oLyMU)TeQ4 zda>a!Q|pt;@;R8_j{2C?j2y*#2w=pr^J1ylC6}yjY!Xy;vQtjd->9hCP0m(#M#p)H0B}l0;s~IoO4u`kZ0~Z zxGjIkyxW>yrs{D0e_=w`|4~z$>)#OkXE0^> zsg8%IvNYi!9-;a@8qrq>2q#@82+j=)$b`I#Qz?+4E;z6i%L#j&p>bx)cLx2il2*jghw2m=jbt)G}YM-UA1-m!R>$(^K)gcU_4+XoKVZgQ2jp8Grov9N6s_z=nfFAiv-WJUg<~#fspl5Zrx!7j51s0maX)ZoL{FM|S*m1)nK_qA zr{5lHlsbCx`iDd2oJyM(Or(Q+p9pF?LYs;YunQ#!BbV+7Ocv-c=!G|NZ`_*( zXl|6+J4D!;fW5>f3TNZTsg*8rWMt3hI{$q5<`~7I9NiF3kPy#uNi-~n<-&}{u#c9! zbv$31l3{yGN_Q+ljhWK9I^NeNL(UX)pt3cZ&$SMCbccNKq`Xaz;bxXjJonHR$b}Ph zQ}`|S-~elP3T6(+Eu)RVhFoC^)l7t<?xx7_rcH5dm|Ft$BFtog*X4KExnT+Ym;?&NljKQEB8>%H64~Z+W~LX;94e+O zydR=88rN|fn$>n?GtBlJ-O@oyM=lqMwW&<0y1>n+W;AXq%*o^W<*p6BK-Fj^-=!%n@#V?v7VZR zXHHgXFGw-6lw$^Gep>B9Prja1v~Gd5rvC0+PVkQXEwu#T9bvd*<-R-j_Mr9l?g-@r z)T6s2Wb@UF19@hHJdJYI;&fTJxtP@7f@j2B29D3_88OrHvEbPK;P}ty8KIfFe=qNd zy!~IV-}3sHZvR)0wi zD3h<CiUG#+^X{BR7E;LVdC{yNoKU$56O zYLe5+3O`9A?QJ@Wdg?NchA0!?!h2}o{)j)`DYkX%f$?7-`JX?o&sAT_EiEbEn}}P0wn;Mlw2Pk9r&w+UweYr?cuB?Fl&6aN( zD)b~cA{)IF-7+X@!?`J{VQT)Zz%zNXsn9Lq9l8z*T-nR|X0eXNH0w$&6cu3ru~xdg zCWDnCx1LHwT1-(j0}_(fQUnzE`ugznhr(j9IgKY)FYYG&b*t(TJw)KAZe}e}$j5 zPcI{*ueE+8qWpFhxjCKKzUs3EIPewceN@P16yOuoYF-p9sn<9fWl{anH(S29z>8N; ze?$iX&SGaVoSWt2!a0uZfmq<~KCMW>q%3%o<*R8O6s0hqn7n+7^O_mxZ&R9{i^2E| z(sTjmvEUdTKmN}rGEZZmeyalWzuA?O|4)x!9G#pVzIeU7K4!@OaAouVZSOU9SMvWu zT<-e62(KbMLzmqLuK&*D^>6HMZR7gyZf|XGKib{J_21fVtk(Y_uBWe_Jbv}+zt2cv zbD%cH>2M>x1b%NLy#Q(eXmNhkPP;@K0{!yqH^(ner@cKG0vjEiymGH^#L^+thL(o%Rb0VYr~#e z@2Icv>#yj>FJU`U>mx;NtUvv-;?7@{?!c(4T314S(TC_A20s&YX!7Z75Wt8THu>tz zC{*e<2$2C0rv~AJe?9QtZmxgxp6;~Ix8R}rwqDhU-)<5&H=8U zI|YOlGv^@4ER(-(`JS*B_i0c+`SIDa3UQTuQk|G^tg6|AKI*-gJ4jzab2 zx9Ynu|Fo~T^B`z-BbaWUyJ5$m9FLJFl&64ZstUrB`-S_^z48CdV*J10b8qQ|E|>np zG;G{QA8KcF56JqQ=l>Qw-P+pT`af#-K7h$y|KapMyZ$B{SG}>cKBn`3+j~1(dztm$ z+1cD#o&OJU)lYv=PKjGpYQXWz-$KQy<^4R_C2|FnSN~x2UOO?Gj1hR&w(( zwOy~*;qP~U2LnkdSsm#e6Z3|`2&6J?jj}rV@$r*a zFJ2sC`b2r{*ry$eLK^Yy}=e^SrkC-j_rQqQt`CN1sa;D|vX89HsInKl;(lj_pmOlfk_1~Ha2 z0?xlbO78~IFlvp5X-pec6%d_*eeZ5r*pE*mPE3n_&EA%zEMG0oZAvv&Q|oy>9@MCi z5Sb@>LRdLg0N*BoI#oe98Vcj{@yPfF_e>&I{=^x8&K<0sciS};-Gr@C_f`d-*Ec&h zOO9p(A9?9g9-{=^F2@5(JnT0ga7JfNx$9)6mBfm0GalNsNV+1CyGWT<(4WwL>Ar`c z&@4o4n)BDMWma`MSSeDg)8uk^iW85Kn>q_G#zSG`AxOP6QDnVi>mH>ZHl%Xj`g^++ zRL?y&>IXMC?`YpyCm1vOAm%fH9p@tMce)g*XfpLqij$Ba(xPIC(2hjfnds)Q>rdNH z64xVhDmmhu@NPeKw?QHf85-@2qjo@bmz{_rVF`GEG@(2S{;aM}D8)1VVd9Q4!Ewr= zJrv(q;XtxfA13PeVU?0BvzeECQB4RTfIR@n1B|U4wmn24W|hOiO?L7M8**vti>$eU z2b&Hte-aL1#$&*f!7yo$IVB!Kt%KfNSbq;l9I!7t70ZfvANIm4T+DtN)vM}pHt)6! zgGa%b#5CMlB%1`9>81)hBZoIcRr!wKW-jWUeS_H`ZjImg>iMmj zoJj7tV=*beqZym95u%Yy=Ei-YDoCj8z91Y%%+j%^Kxb*gBiQ+wapqJIC&Ml+HlNal z1R_aNPE! zCdK6t4wDa|M7T0d4WY6(hqLe&N~a9TX!7lNw$iBPp#0D)S6 zJ_|M?W)dxgLFW;&2a5n2ej1>^4>f$Q3zyJ}g#bxD5s*X!;>S)c280|7pG1D8jZuaP z$W?>zPbJ#WiIa0h;`6+%YELbEPq-m|Z|2bCSj)%)3!W_8Ms{eKqw)>|lZNj$Fmv#J z+Sp7p`IX}%-y0Xzeh?}=ZD1}}5SkPrmY&ZZpOu>C+8MwCb2Q`vatP`!Vtu3|tJ+Ny zBF;|9SWjfgNk&<*0~&HE!V49<|Y4H0s%HY6^d4~Ktbj(U@^4ZKS^ZUcQ3Zp3Y zn^=O`Jtm9yDCv>xp2{xAlgZPgn%r0Y=baOX}V3TAm86X&uetV5{tji_~*6ser8KEj5r#j zW-D_sV_!Nx7e+<$Pzqxt!ba@Tk@Kldib(0LB%516!hp5E3YwOf5#z?Ft&%*bxmn$i z&HHY<5o#VlZ z)+u}3GBDlIaO75H(WsU|FMqs;sn21CqwpNH;{c78m%?IO1l9&bYXsF!baR1nw#1S0 zs^rxuI}|DBgalY@a8<&xGA5I1k(p$=!ubclz?u~foqqJPpf26jND6OaXaj;5$W0-k z@hFYD9mYZ33@4+q&9lHHc^Gdf$4_>L#bIJIJ?Y7NHWYaZ?mP+e&c_q!( zLT1s+>y-ISj6hz-AYT`bEqMBH-VBB$p&Eb*Vl8h?(R2#IBEHoD&D*{miPO^i$BWJr z8X~(@l>25sSiOy|k0NRUo66STde{I`oGiidlx?u?Mdl$l3zI0%r)yA!YnzLie&W!f zc;YlOsbk8K>RI*3g*7?AYOc>Rx*7`x4_Oc?LsNhX3^_Sy3>(Fqh6W7XhFO)IqL3HG zYqqYQjfZ%mAd65lOM&gIKQDP2VuZUOKG`038GR{|MNw<%G=x4mrNP!%yJ79Ej`UhE zrlLwcxHq~{5eOEGVn*5_Vp1w8jGQLsQs`!FYDJvTPdsFtjE5Ri^iHko>ap%NVx}j@Wl+}TWTcOI#+AA{ zq#9woHjYXQ$dTEQbOM)j_ zz-QygCjg33_FDf@%7N{X1Ctl*j*w?mz2>#4dR)wLH}CMKXUrod8Xujx#Cfd$XLlU- z2k~n{J1LK4%(e?0y-22k70czfL5ZB4N>-~>%4g4;wZNQZZGl<1a~?k#d~m1HJ9rc< zJVr_Mx44OxV)l;`!=^Pu zZbB0?5wV*ng*;08o%mur6oG~(L=SitG7^bjV8K2)Riv7oD{`LA85FLLLy}}S8VO>3 z;PDG8V0nM$1nCTv3(V1cNh@)H;(M4+TN&uQm3O66(n)aDPp;E^K1@~V43nNQ7;e`$ zH$}G_kBr~2bI`5#6Fn+t8sUwpXa0#474g{dLfej`%re>D<>MZvmIDwZ59Hey{5K4o z3YQxuoacg%fRxPuJm2YfFd)xrd>_YdlVK4i@Ftba_kl;-tvZ-=j=%*e%G(rnl`_LCV8VXG_Vy;uuPZ^Uk~*6aqBeIsm@>py5tEv@6xsR#O^-`{b+oEJaAO!S%b=zN)F~NWi2}AO^HFgphJA&m7krjIEi6}}lvZoq2 zYw|mqqU>L6`oq6Tm#^)FJgj5VnzC;?QJkXeO^UNSVQQT-ZRTY3%Sa{xCAI2>g8^b8 zZ9rOg&7ym%KH;vtm32l-gdrgLoXjPpi7|yl*qG4NIxM>@jiJ;x^k6RvV+=d6b~*yW zf9gd-xe9DeZD7l5AZKecARgU>cxpElu0HB7Nx3*_hQm}wolYBU{_6uVJ|FNu>qr2t zVfaA*Lifwoq!`^GC3&X`!Er5zI&uq+pk>5uEipW9!EhCa0!k))+}XNr4C-{z)fTk` z;#dFoaSW^s@mz^eREj$Dh$(GV;}uIg&vB6}DfaL+vnVlo%b3X}hWp)h9t8xX1^wvS zFoMF+N`!wSlfsdDEiw6&gWwmG8o zglyUA+gGw=Vuc1F05e;Ng`mYU9NT>1+}W&!vsX` zk^emzpWId^{XVO8V?kP=d9i%W7&p+(xm%xbXHp;8w4&7d7-ZdPLy!9HJm1TyMUP*8 zpFgW)*|kWI9<1TelltRioab3v)=R~`kTN~%)Yqn@6~E4k+glcAO^V(Q z7PaLt;zS2W+X~2ZfQwkos@6M}DrXte^{mSl?Q~*GI@Tr4s9`3i%vFFElZfD=w5$k+ zzSj{!em-dJXK29Soa?TOnC3gLvQ}XnrY`Ik-LxXs@&Pk=Mt*i=1{j91lnZs6Y`JnF zJLQ4IPKp@QkX!#3g?3!8&BovB(bxj4IjK6Mz|Kb%k{>Ksr#>z&kOwjJ+Zj|uis34TesK$y=gE1pm z2sLopAFGlmhpeOpN0HeO`E@ABjNndG2_!!$Nh#rcLC#gOIpO%2gs1P++xPFV<#$f+ zlQ(ez%%)V~B#@Cb2N~*a4i1;h-vRb_WM>KJotq_8t$5g?T0WcsBvwRe#lz2)xhKW>5y_aK2-7DXj4v z7^J|KVf8;-k8=7S%>TO5|J?sY`X5>JhtvN^hl}ceoS?@XfgeVl$;yqS zU&c)xwkMnnw8dwCO~*`kk{B_yk-K*OiQS^{dX%AJMIRJua=19m@t=<-rgQy5SX^Wh zvyR-Q{r!cMLxL0YD~IqS?HrQHR>nsAmQ)%NJw{#qgyo9P$8ne3K+FTJPRe-8O?KEY zPZrWJNs#fwX_=g<#8a4sh4nP-M3l;pEVwYbFsmwJYZE8pBb~ESc$1oe6rJJ)Oy4z#64oIK$IR)7@0-Kc0rO{M zJZ@%`Ag>gV!<=?pv!+vtfAUL}xsI=1BkiaK-CBqEz@dUIRz>J}HJMU$LxvT@%`(Ck zEH=M=!UnT-%FL2e?7j9+jQ8YPL)uFdMVWD-%I`d9godR%b=3-*OBqaZD$hs>vk#6* zTgcI5*z#co5tTY0Pnf1-jOMyVQscz14jE6KbbERXc3I|iPXods1Fcx z=*m<WDtaNHCx+~VuFE4uNL|HnUgS5xqUiBSh;g?m5^M;j zO8s_^7lsn2uJ7z%faNR1QjuVlsGR%TiyMWWWW73PBYmG8vQ zE!EF|W%WO3jjAuX@XmDoPh)#4=l`?a*xOs_e;(o@{SQ^RSEb!gQvQ7Z=J3Uf!#9&? z*5tfSKzzvj-8^__*lqTQM0*t3Kf7lx3;+I|Dj$^JvE9sSG78?LHp`WAzL|IGpYWts z_~c*kr0RHmyE+vQJZfG%H=TF$ElzlG(tl3tFazbo@_PAy0n%~^zx)G#*@R!d!C%hc z$NN9d(<)Dv%t#47Gub`A;v0GO&m?*M*e%~&P+&P^#k{dNcjB9fqZ>4;#UqMs%jA{j zc)4?l$mhd@YdVvQ3Y>Xbr-LYiCi1|BJXq5<2AB0hpz@sBgV0OzPGdVpqT_&;5RR{C zh=AK%`8I!zYx3b`&Bi-t+%KqmAd! zLuPAYh|=??qk~;VKngu`!njLdxC$#=eCDfoQp|(tQH@YEqWRzS*l1oGw zE3SYb4qCiFki{JHba&&c2J=!UnBi`OveMmimK-`yRI z`jRq;cR<{CGgC?q%ZPa06n7Wq0yCew#yMo>#WRgQpKCx&c0HrS z7vUft!N|JNh(1GTI1G!xq<09^c6<>_!l)obI)v;n2r%sG&O>Zxb4dM}OI(mN&~J5< z)JfjlPR2->{yt8K3dpNCX96CHRDsRQOvvPnkV6{YMFt<;1$4Kr^a=Ss6?%b)n;V!(fVIz$<1UBv%`pNq-M?pDfqW0r=CAs*6 z+XDxiN}``&JYe*ikcPsMA13JOc*R6h$LdlHQuO^zeMdm!qhk*c2^h6U&=B>(L>+T} zLw>9Hnc zKS$BHUcj*oWQ)`8+{?G&>vf+g`jmfA4%)|2^+%G!ztmj$#~T6Tdco#{oGW z6LYWm!!Bi29eLA5IsfddCVi<65=}=WaykV>w6|+Tf&^9RZyVSEW)7XyS|H7t$_DWW zm0@nXwz)q@bDy}oeeARzr`D0z6(VvRyzt&$oVU?V73N4z%0-G`WAU__qHVBIEhe}U6O}W&r8AUHTh2*o zy|fGRL*|!_Vfl<}hEg4fbRP0K8BXWS+RkSdR~K<&ahcS*?OB@7#m?kR0RA7jIZR)H z>_O5QU3*2OL|X3|$AH&wj-DQ4z1GR6Oio;$=%Kyn>`hA{=83R#=6PDE?>i^%T0-B; z&8M{lfbN*;YAHQGY!<2|fcy}7n3e$Me5sH?$k`zKTRstz&Vw|8Sbc8w`EUNp+J7|1 zv`ib&4FBJ)y`4tZ|F^Ndy|Vv2#6|WWz38881N!0k=*{7qCqMjkvK6RaucNaZ1twxT zmUl>u-ZAfVn~tL1J9QaHLu9{h3(Kk()e7N^8U;2GJ+k7b6UvVKaXp`)!_9wG(9Yz> zKI#@x*qrf-=~Q@KnUMK_R@)j~y#F}VcP_t>r0DO!En@Z|MreMc-hz0D#N47ZU3#XNfT31;W{OM(6 z6c*NyDJmdWlaZ79_En#CAgo5T`lG%SIB?ZK6C_99lawS#_BJx|(2G}3e?-I7@yn;r zj~{FFofOjqUrh`{pY4j`p8s!-4xhd_TK*Y>=l{;+^B*4Xz?03ry+?c7jjdg{v$eCk zxjO$J;yO(@AcBzba@6aRVzWnwI^ZrUp-iH}lkZFLuzsmkSOG-z&YTwh<;+u?_(kN){}pnp|({r?gvdD04pSLKvD zqqbD#7ZCJnD!q|}A5k^a)Gz3gb*0;39k2Q+?53B{(9@HX699X33n%GiM9zr`*J4M& ze>jD1Xq--){cHRd+rxcv4)AZZ(=_d3>o0Cq`+Td1d8Pn3uPt}hG7yrWvn~=>4+WZb zw4v2})qqG6oJLscgoVN0zL+njS8oeR$3p8*UwXI z8`UmR>vCfdfe;^Ubm`*?t&G_iCH>nvE_byatc0ll;7im0r|uVW3g1s68I~zAt1;9z_Er?2W2TIi88llWac0 zR#h{#&O;s0WXm0v@N5BbrQh~=@L;=2tR8Ez5~{RD?V5fWRN!$%VT9)n$~_nI1iwZS ztk%`jSL)@fQ+4v+$FJ4t5636!)x3wspBMsNye!=wOUOo zx$6VyxW>%$PKO)VW*1d{CCa1#AEJLy9pOM(74a?) zh!(LNjghs8xxGFk$9%hXCdoPWZ52E<_@?wF+kTDeu~d_B$^$K#Ire?{>=n)%a6{H4 zq*I9@z?1vO;!4H+*Xu3_~(8V}PQ{4~6eqsilki>1)V(C=&h>({6 z9h#8Z3cm0*m0l5Ukd)*f$SqE9edN92BZIcRx(b5B=ch++ULI0pcGGMDXWvU0tZF9_ zhyGqC!z;yUe$e-!odE2ufqDU)E6S>M{uJa#Q9B-GpCAdogokz`UPOI~ zs4~K_@kB%@YTS+<3i>TJNl?cj{a6xUqgR^?Lm~qa57$7KQNdHgpFt;olWK3j&>!T=K_47tHf>0WD6x?Bu1j zW2%XXG)@E0LWpCJRi9xz|xHqx) zn{4-Z!|UY?KCdr(Ubg{jk4{dHUw%)X#H6QE&yOF!Iehci>{hw4;)f-|d8S5GPT0~Pk@`#=W_v~r75 zMEzuZaamI+ANMoK!O3~j@Gj_V9q9U@&*{(vINm(k;8WnVnC7xqIPp`=PNt$*CDKH6 zo~u8Qqw*+_XAG&1fOj3b-98LKCkBXHmlpg)=dgi*%Ib{P*fWtVJ#{6F&>Lx(VK9#m zpZxdtZ(jZQ@~I3g%hGdt$h3&R^DC%|!(qS%BXWL;N0P+81Dls53ob083gmjZiLZ%i zeth23ar`b~E`6r5uAZa933chDq_v9Il5@P<)7j5nPK~zDdo_#}#r|qRe++-6qhSg| zV{crqdoGrn=GuUXireD8L*HF?`N06roCr4&&`|Z)S3kZ{qJSWhseU>>{Xr3q2Ek7_#0+ltu?%%g zeK|Y9aY(YI#mTP=IS-(wv>{}KZ1RvzTi>A0fK~1eQj#9^PSG>HkNb)CHu@OqBT|Rb zDB1!vHO5s%7Dv-O2S25*O(0yvFDO=N2;6E=Sj-m%*?pWz7`1-qTiKJ}A*~#a`?gv( zJw^;RufQC?Il`g^M=zfqJteg)3v0H$00iaZj_rwiCz=LY+lYq4I*OSdO2bV|T8v1H))J1FkyU^;I-GZ|j_n;G2Wc6! zu5fOg^98B4_U~nbmL?Mpo*QgdTp$4`2=3mx`g1ho>aB?uLx~-wVN}8@3dNjC-`;#@ zu;0)y*?k7zWpZx5vzEeu6<_0&IY&;s%b9p=;9SU-D8Q+hvd3V%=g>?&L~M}X)1)qq zJ&SdvWX}sa<|KK{5n=hNP*=`Y=4AU8NY{7L3=3X#M~hw4GYr#$RL-mFHCrZcSsb$D z$QSm7yw}x9V$E!pdte}JShbFhXJ;X@t=aapqotFL35&f-BTryeP*imk^GS!1I?L4X z7+O^&%qSjDdWXBdXF9eAHHK6u?L49!2)O}hErcXJ#5UQg3Jaj8{R&TV27fHV;{|&g zOJ@02=nOHbI8+@UpCo`Taayke$9r7v8HSN3lu=N4j?wKvvLWEcuB+GG2wlc{u+?BA z3b7RWSA)j7UBe@hGDUE_AKhTQ6MftaP>=d2{IL#r-5tQx_v`Iw$=vr&(>pIic}ggI$N4S`HD7LJ(9ARf+BZN5J<=Qlunh(H3U^ClsIfyB5q% zKj6p{GPe0Od+;e1SR2%rH%&hszkK@YrxSJf@~L`p_~aET3Z5nuetLVJv~P(g=R-Rg zj`W=U7a+~b9Q2=bY5UK8+5YjGVgKLVebg}apPeoA|7+}RuJV6A$aVPm970v_=la z=310vouI(66A?2T;PPo?s5!{NM0&YM!JVi=)BLXomMi*k_v z&P42bAx9EffzAe@xH3qdq~toKqY5z|dqLIYkRT&*Pn^r0B!Iqamrl_rWl97R5tMkG zM)t;3jQTt_Iwx%_qQy4FP6TCeWqB^U7`6^v9mgB$p#dHz7o32=(}L2NeY)O?s!2q%Ys2|Dkh6le{R&kN9oLJ$JP~B5r!f?i8TnZCrV%8*RON~HU)K(0$4paQ1c)OYW z8DUrKCpO|K8S`YEYw2E%}OV%w)xUeK` z(3Fx2{^%U1hkh#4nv=`4Mme?8Om$@Q<*N?ndLO2d6znCzp4AAnYoOgOY+xxSsp|k~ z0oKX@`2zzL?ZMMmPkwxH^zziPW$PD-s+3c8F^=1;KN&`3Eoo^nO-dr$Kz2GE+A;3L z^Rc8WMO#H{BOSJkW19BV(hh1GDczzYoPa>g#B#DxvX1Mh+XcuENtJ?8ZhHHBp-^!Qr0|kDnhtK7M|D`d9e#Btl&bBGjw% zUnETgjp8{fU7m)c@SLR3HD{grgBGp~Ef+e%UA50QpsDA_PmW%m9C4$BMsmmKs*vDV z6jUAx;$Yq!!TYD`$q$Dwzdt$&f+rl7jUQ~*cL0c^8(5W?u)yEK2+CkbRWRK9+2Q{H zZIo<+R&&fXQZNdCEyY5`911b;3qxIzc7Y+gFo6LxH z=QW;(7LZO3%hcQ{l?2gD7#>dUoCa&6Uqssexf%Y8i>#CAtMwKvc+yj)FaK16P4743|8@4|pbpgLyNuOh>$^WNL`*Rb zer|=MjAi3zdQKLNgH8G!n9H|ny${{;S0(kHQV#TkwWxKOsM1$loM1F$6>#EtVU+Y+ zvSaRNq$PyZbcDIV$RvZ*kdk`Y>VS0LH`o{sL(*$FAdiyF^wjYoO%6|FC$@7``jVcM z)PX8(ICLPEhL3p}x@m;pW5|%=)^)G{3IfBq7>v{F zLEMvL$};+KV{x=*Sgbst?NMJg$Q)HGIjzCJzU{TFZBb<>ofJv+aO80`kTw&FgyJ_h zGQb&O`24nMEQDV+N;o)>-p=T6GdPY3hsV$=-DscpK5B1_kNt7)Bk(vM(a!zxJiZ8r z!|?VaGQXp%s>ReNH~}W@xo?mEvY{mbSY&UfA|UPauYxsLXMeN9H@fZx{H|Br4mY_% zgrQ|5lAxCiD8m}8;@bYcjIDP^IA=fvzX4q_qRv~vtuws2GlarU%?YBsy$GEA$(`Uc zQ#jZug3kp^xL24I@m_%aItOs+EwExY^7ZiUKz?Q58}~&d0n};|((9Ry(y&E4zyuH; zlpOcYAi5!5+&l^bqCUSve0BZPHT|(ro&YO%>)7--aM3jvYK@>|hr0E*v1)wxhb^bQ z(Pfl#U9Y=u-NYl+2w(yNA&_5Wi6c=nL>Qz)K>H2bHyCOW`hy5rZRPkQrX#%$7U?~?g z^aFX`-8O+k0ru#5a$)%+WPjd7A7auIAhT4+EfKo}Z?4Iv5h<`v3Ob)Z(x2~aY&}w& zo6YTSn!DfF&rjH@e$6f#xz90Z@|$nI+1UJgWAl;P+HUS{H5<<7q=FFyDDlBT{&3fv zQWO~nHm|b>h&F6%K@ghYESQ|LOAtvkEGQQPi5SNzCQJ&k=5sQPb0F?$5cf7Vzfq0d z=GNCRNDJa2iIFz*2WHT`kSul}U2%pLPat*DxAmcgkvB%S@Bog}N&H*F7>2W?b7o#9 zSJy9WbhQ}BOM3hq8&cvVF`~D0)2pFw6a5pR3a?O<^~97^op}`@t95-Jt1nc=uS;u_ zr%)`lb?0zW*NBj9UWHb;K%}3d*CgR*=NLVv>}qZMtJP>W_L`f!cC|#-&V9F~zk9T? zwF4-P-|aT+chAN{!ZQlW(1mJM1vd1E^h>N`tk>(+Y|9F#8KV2wEy8Q1zwNhi3e-~mf-I^iV#)0#BphnQsE5erqeB@-9|&kI{F z`cMb4O#GI)piEykxfcon$Jc&UN06ca(I`xTq3cJ(daoNVwU1f;KU;fnwm;efn!mHz z*x~xWTPywVgItxbSnHcvf71UpT!yRhO>^rJ{Lj_@s;`!%09IcGDA%JIv#-#-fGQ&d z7~8_Rm3#+Olijj*kRGH7iXbKQ-m8FgM7ngOx6qS7Na#%v5flNDjsk*6N0i=+^d=y^ z_uiz}{J~Gp`OZ1_o^}71wUWJOX3sn`duH~|TCA6c9M9}hP|bHTvdZyNLeH}ACO{VT zaB|yVzF4c^3mKO8kw3F~2~RQ`um8srR-*U^jH|`HfS%5Nsg)#FeeGkQZ_XjuPDh|z z0Z9jWL~+~{Is8eNpMSj>XcS)3g-~0wgKQf@mF|boH1Qaj@$#sf#OOGuK1)ioMY5eiarCJbE=$`av^3BCa&c!sdnAC>iJV&iyG8Mr`t|3X}S{7kh zzWVNVJ?zeb%%pNTn*25MixX8TPj%dH#B&a7NaVb~9~TI1S%(oYJS!ud+9ETJ4-y>y z!lcL>U(Y7dbyj8ZW+2NGzj%x!K4gO=Qnz<41a1M>VQI;E?{u$!i{*miB}cEj#Kt4J zEkvuSjG(qIoreJBGIDSv<%R{{chXynaUbpj@YMlPa-+UTkD?mO!~0#YL>PG?kuSa` z-=OkYigwJk%92}8(#4iw@08K3JdTbJQDqv3{z&h(UcwBfaeplz7Fr(m-tw|5)-ka> z7iBd{WAc0@`ee-hK&C!ByS69~HmWIhp}n41@}Vlk(DteNq&(|^%UyF5D`yqs=WVn> zx_o2oer>8f^I<{gHxG*h%)Yh0f084k2xz>#ge4ZX<=P=cV z6}(_~K-j-}MA`dV)%@Lrx1y)l=&W@YUHn?lmx7y=?^)>%lHM-|g@{FZ5{Z&(yARoY z(k6cBcDMb@z0vs?p=zwr@@^GcRzr?a|50kzPY;NEdn%Q0Go#q ziS})g2nuRV*d)*ji!|mr@iv)%Czs=4R&VK49cgK6y^5($N(KTBO{P{En%qYfN070% zRS8mGyw?mnA}%%at4nnQB{&n_%{S$;^v&(nvbtH?-}6EYr|1gHpy}K5%OL~b1?}jV&7oO(u2zok!5Xq9^l3wQz4ElR+g1sn~ zcurJl(=Zt8+;YsXI~#?sJ#%L{0DbM4qf0xq)T4u`bQ7oY{n#|2%;)EGk7^Xh zq}n*oj~;x9{E-TYdGDwD3}5{$^Ck@2X*BdD3+_7QELN{H3!hvYca4((;P{lF zP1@G|^RNkv7OBM)DbM)20!QL|H5N_ZQ;Y<-<1Mh9VTz;$LKRgC#Hy{k>vfb<-`@1R zE-EtQ!!YaiZ`*lX@~KuCo-Lk{`W(3OuZaG-2ao;|RZMX#@2m{^pM>82`y2cct9 z@8`OY4!t6n@`S^9x4mg0DB6D6nXY9CS(P z_5?dfvSKtd%-boacUZWO4?FQkLT)@KmT^v~ProF{Pr#qI4=x2%Ze(zvAhPx^oKuQp zPHEC+iKTJ{H%og2xpind)a+iTVP3BI`wz@nR_E_juTF35P6hDyKJL-{Rx`{z9Vs-> z(ImN`K*7O$1E)`5$BpCW8!XO`sXW%<8~3y|(&5UNJ!_}1TwN$fO+3{BYL$~-7^tWGg?FI$K5y&3(^<*6&h|wJ@swAnpjP=Y??uRQ`2&jnfFMm(2Izsn<(+)e z$5d$-7<#Sy1koWLwPX7~xH=Rk3jq{tK7p0zleS(i8#ysF&m1))`AW0~@NTJn;E8I+)}L6>UfukdLuPwJvxuR}dE;nut}(!uKtkv6R|yWHMN2GLLJp;EUQWL^WIGWo;tTk z)?(H^nPxk*KQn-1kX#e8 z*t;YCd^{s>ZFEu0)lBu(wotANCY;&3DhPJQf)cu%YFMp$i%CdEWXZCYrj9xi!-twD z<h0ELhv zJKptviF(0H0|GG%o4hH)ROU_t3V73~RvKH2-$YjFvrap6cd;^D@n=VScKuOZ40};R znLH{@k^)Mo1Cbl)dx@@;p0seTue4)h|LdP`#U&`1jm@UJj@c zXAtiePPJs}KE?mxbLbOeCkAQUWmhEJHhh-?%ByAB0y%I~b0rB^xx=SW2YW~dU2neQ zk6(}UhF=G<o*13^VK{OQt--K@(i$LzPE;ubVXv;9a|KQ8sxL?@T(_IgB@g9`@kpvi*qpov=X-hE#+ zw}?V6{CXqRrp_pf15~@+Wbk@wA?2a;5mg0^B&w)jD;BlVY+{7s-9S}d)B#=!8fcnF zC%T(nz5w3HyP?$k~ z!6oDR`-m@r79(#y)`dk|VLkPGMn#H2P~RG`$GmUyOv?+~+wE%4j46D(-nL=xx#twn zSX}c>p%>YXFrkolpioG6&WERM*kvm6ow7D!^@`K1Ql39?@sf}1*teaF`?hW&GhDJ+ z+nl`cns{i_Pb+(B$6s4iet~t~dj?URBp(k7Sib zY`MW^aBsHUa>;jWV=T!FdY^^L^r9E$)oj4fFUHutTB^~!*TMGbVDvCTyli(%+#y_0 zGh5M9L4CUIanvwX1N5eSAV*u4yBdYx)pyOFls%GM|@UgO!Y1uqDu%e^LZsBn5dFv{E>PY7}2aO%tW_F)CEeaWsYE; zYijkPHn+bU>z5okc?T!eI~a5ToeHFkb;ILJG#{-`*HS#oJY(?dQ%Q8^965n73ZI zW6g6owtNGwBO-xmF54ddY4X)UYd4Waqxz{7AU0+w`EyHPw^g3Jn#0TI71QbBfm?Gh zRrOE#rj`*>6{O>SIwKMe`gzMeepec)FTU0M@rsJ|9uJ4w6lT-PJ2VA3VqJ)#}pXv7EF_BIJ3~3xwR79qoPIYhB2v|11C!Z(E z&re8ikk2;`^D9y1HdpS3FfHe-8s6!C+yB}-_}S6tqql`d6^3p_uhy@2080fAZ8cqC zLR+g=8X2c|?sR3*FpE;Dcy?Ld`LW4ehgdiW-AGYtGFJD-v>tfxud>|RVaenuJ`qz+ z5cYFJ!h5D@s_I@!ub7*X8U3{Xso1m4vxqsq?F?KdJ4eY1qJIBz*GduGq4_#p(YC}2 zvW%M>8TB7pb~c`5G8V&Fx@UUd+OX4{7Tgxjl8ztFgb)|s7f_)%X!6ZX!BQ3I|4^s1 z*imJ=b<-jJQa&O>4?23Md6-H_v+b*7E=JtZNc6q%@ovZTlLpCs@z&in{lJCnEVg}q?cd5*u&^Zsk{e5g>c;sRncwmUxxhSh%Jmx!ODNDg>Itjkud zDi}5JI@aWif*K&)GrO6Qq-FTxXjEzv>`}%gz3gg}?76}S6IyP<`f%@1slFKAuq`j< zBk7tX4w%fpNiiN8has?K_J+Q+fM!W#t3$SoU Y16?3r83&8f8tJ1O?`04l81FXW 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 -- created and tested package, with html manual diff --git a/helm/DEVEL/pxp/ocaml-netstring-0.9.3-2.i386.rpm b/helm/DEVEL/pxp/ocaml-netstring-0.9.3-2.i386.rpm deleted file mode 100644 index e9dc283f0bbc06c39b2dfe2d0b63504107e4519a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 240642 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 z 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

sq(#LK79C80qDxOBpas`h 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 diff --git a/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0.tar.gz b/helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0.tar.gz deleted file mode 100644 index ba7056f6298e40a9035c696ee13f8b4910974e2f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 419688 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