From 35a201cc8ef0c3f5b2df88d2e528aabee1048348 Mon Sep 17 00:00:00 2001 From: Wojtek Kosior Date: Fri, 30 Apr 2021 18:47:09 +0200 Subject: Initial/Final commit --- libxml2-2.9.10/doc/tutorial/apa.html | 8 + libxml2-2.9.10/doc/tutorial/apb.html | 14 + libxml2-2.9.10/doc/tutorial/apc.html | 82 ++ libxml2-2.9.10/doc/tutorial/apd.html | 76 ++ libxml2-2.9.10/doc/tutorial/ape.html | 78 ++ libxml2-2.9.10/doc/tutorial/apf.html | 67 + libxml2-2.9.10/doc/tutorial/apg.html | 75 ++ libxml2-2.9.10/doc/tutorial/aph.html | 76 ++ libxml2-2.9.10/doc/tutorial/api.html | 4 + libxml2-2.9.10/doc/tutorial/ar01s02.html | 14 + libxml2-2.9.10/doc/tutorial/ar01s03.html | 47 + libxml2-2.9.10/doc/tutorial/ar01s04.html | 54 + libxml2-2.9.10/doc/tutorial/ar01s05.html | 55 + libxml2-2.9.10/doc/tutorial/ar01s06.html | 35 + libxml2-2.9.10/doc/tutorial/ar01s07.html | 30 + libxml2-2.9.10/doc/tutorial/ar01s08.html | 38 + libxml2-2.9.10/doc/tutorial/ar01s09.html | 63 + libxml2-2.9.10/doc/tutorial/images/blank.png | Bin 0 -> 374 bytes libxml2-2.9.10/doc/tutorial/images/callouts/1.png | Bin 0 -> 329 bytes libxml2-2.9.10/doc/tutorial/images/callouts/10.png | Bin 0 -> 361 bytes libxml2-2.9.10/doc/tutorial/images/callouts/2.png | Bin 0 -> 353 bytes libxml2-2.9.10/doc/tutorial/images/callouts/3.png | Bin 0 -> 350 bytes libxml2-2.9.10/doc/tutorial/images/callouts/4.png | Bin 0 -> 345 bytes libxml2-2.9.10/doc/tutorial/images/callouts/5.png | Bin 0 -> 348 bytes libxml2-2.9.10/doc/tutorial/images/callouts/6.png | Bin 0 -> 355 bytes libxml2-2.9.10/doc/tutorial/images/callouts/7.png | Bin 0 -> 344 bytes libxml2-2.9.10/doc/tutorial/images/callouts/8.png | Bin 0 -> 357 bytes libxml2-2.9.10/doc/tutorial/images/callouts/9.png | Bin 0 -> 357 bytes libxml2-2.9.10/doc/tutorial/images/caution.png | Bin 0 -> 1250 bytes libxml2-2.9.10/doc/tutorial/images/draft.png | Bin 0 -> 17454 bytes libxml2-2.9.10/doc/tutorial/images/home.png | Bin 0 -> 1156 bytes libxml2-2.9.10/doc/tutorial/images/important.png | Bin 0 -> 722 bytes libxml2-2.9.10/doc/tutorial/images/next.png | Bin 0 -> 1150 bytes libxml2-2.9.10/doc/tutorial/images/note.png | Bin 0 -> 490 bytes libxml2-2.9.10/doc/tutorial/images/prev.png | Bin 0 -> 1132 bytes libxml2-2.9.10/doc/tutorial/images/tip.png | Bin 0 -> 449 bytes libxml2-2.9.10/doc/tutorial/images/toc-blank.png | Bin 0 -> 318 bytes libxml2-2.9.10/doc/tutorial/images/toc-minus.png | Bin 0 -> 259 bytes libxml2-2.9.10/doc/tutorial/images/toc-plus.png | Bin 0 -> 264 bytes libxml2-2.9.10/doc/tutorial/images/up.png | Bin 0 -> 1111 bytes libxml2-2.9.10/doc/tutorial/images/warning.png | Bin 0 -> 1241 bytes libxml2-2.9.10/doc/tutorial/includeaddattribute.c | 64 + libxml2-2.9.10/doc/tutorial/includeaddkeyword.c | 75 ++ libxml2-2.9.10/doc/tutorial/includeconvert.c | 73 ++ libxml2-2.9.10/doc/tutorial/includegetattribute.c | 72 ++ libxml2-2.9.10/doc/tutorial/includekeyword.c | 79 ++ libxml2-2.9.10/doc/tutorial/includexpath.c | 74 ++ libxml2-2.9.10/doc/tutorial/index.html | 14 + libxml2-2.9.10/doc/tutorial/ix01.html | 1 + libxml2-2.9.10/doc/tutorial/xmltutorial.pdf | 1336 ++++++++++++++++++++ 50 files changed, 2604 insertions(+) create mode 100644 libxml2-2.9.10/doc/tutorial/apa.html create mode 100644 libxml2-2.9.10/doc/tutorial/apb.html create mode 100644 libxml2-2.9.10/doc/tutorial/apc.html create mode 100644 libxml2-2.9.10/doc/tutorial/apd.html create mode 100644 libxml2-2.9.10/doc/tutorial/ape.html create mode 100644 libxml2-2.9.10/doc/tutorial/apf.html create mode 100644 libxml2-2.9.10/doc/tutorial/apg.html create mode 100644 libxml2-2.9.10/doc/tutorial/aph.html create mode 100644 libxml2-2.9.10/doc/tutorial/api.html create mode 100644 libxml2-2.9.10/doc/tutorial/ar01s02.html create mode 100644 libxml2-2.9.10/doc/tutorial/ar01s03.html create mode 100644 libxml2-2.9.10/doc/tutorial/ar01s04.html create mode 100644 libxml2-2.9.10/doc/tutorial/ar01s05.html create mode 100644 libxml2-2.9.10/doc/tutorial/ar01s06.html create mode 100644 libxml2-2.9.10/doc/tutorial/ar01s07.html create mode 100644 libxml2-2.9.10/doc/tutorial/ar01s08.html create mode 100644 libxml2-2.9.10/doc/tutorial/ar01s09.html create mode 100644 libxml2-2.9.10/doc/tutorial/images/blank.png create mode 100644 libxml2-2.9.10/doc/tutorial/images/callouts/1.png create mode 100644 libxml2-2.9.10/doc/tutorial/images/callouts/10.png create mode 100644 libxml2-2.9.10/doc/tutorial/images/callouts/2.png create mode 100644 libxml2-2.9.10/doc/tutorial/images/callouts/3.png create mode 100644 libxml2-2.9.10/doc/tutorial/images/callouts/4.png create mode 100644 libxml2-2.9.10/doc/tutorial/images/callouts/5.png create mode 100644 libxml2-2.9.10/doc/tutorial/images/callouts/6.png create mode 100644 libxml2-2.9.10/doc/tutorial/images/callouts/7.png create mode 100644 libxml2-2.9.10/doc/tutorial/images/callouts/8.png create mode 100644 libxml2-2.9.10/doc/tutorial/images/callouts/9.png create mode 100644 libxml2-2.9.10/doc/tutorial/images/caution.png create mode 100644 libxml2-2.9.10/doc/tutorial/images/draft.png create mode 100644 libxml2-2.9.10/doc/tutorial/images/home.png create mode 100644 libxml2-2.9.10/doc/tutorial/images/important.png create mode 100644 libxml2-2.9.10/doc/tutorial/images/next.png create mode 100644 libxml2-2.9.10/doc/tutorial/images/note.png create mode 100644 libxml2-2.9.10/doc/tutorial/images/prev.png create mode 100644 libxml2-2.9.10/doc/tutorial/images/tip.png create mode 100644 libxml2-2.9.10/doc/tutorial/images/toc-blank.png create mode 100644 libxml2-2.9.10/doc/tutorial/images/toc-minus.png create mode 100644 libxml2-2.9.10/doc/tutorial/images/toc-plus.png create mode 100644 libxml2-2.9.10/doc/tutorial/images/up.png create mode 100644 libxml2-2.9.10/doc/tutorial/images/warning.png create mode 100644 libxml2-2.9.10/doc/tutorial/includeaddattribute.c create mode 100644 libxml2-2.9.10/doc/tutorial/includeaddkeyword.c create mode 100644 libxml2-2.9.10/doc/tutorial/includeconvert.c create mode 100644 libxml2-2.9.10/doc/tutorial/includegetattribute.c create mode 100644 libxml2-2.9.10/doc/tutorial/includekeyword.c create mode 100644 libxml2-2.9.10/doc/tutorial/includexpath.c create mode 100644 libxml2-2.9.10/doc/tutorial/index.html create mode 100644 libxml2-2.9.10/doc/tutorial/ix01.html create mode 100644 libxml2-2.9.10/doc/tutorial/xmltutorial.pdf (limited to 'libxml2-2.9.10/doc/tutorial') diff --git a/libxml2-2.9.10/doc/tutorial/apa.html b/libxml2-2.9.10/doc/tutorial/apa.html new file mode 100644 index 0000000..964e15f --- /dev/null +++ b/libxml2-2.9.10/doc/tutorial/apa.html @@ -0,0 +1,8 @@ +A. Compilation

A. Compilation

+ Libxml includes a script, + xml2-config, that can be used to generate + flags for compilation and linking of programs written with the + library. For pre-processor and compiler flags, use xml2-config + --cflags. For library linking flags, use xml2-config + --libs. Other options are available using xml2-config + --help.

diff --git a/libxml2-2.9.10/doc/tutorial/apb.html b/libxml2-2.9.10/doc/tutorial/apb.html new file mode 100644 index 0000000..ef14066 --- /dev/null +++ b/libxml2-2.9.10/doc/tutorial/apb.html @@ -0,0 +1,14 @@ +B. Sample Document

B. Sample Document

+<?xml version="1.0"?>
+<story>
+  <storyinfo>
+    <author>John Fleck</author>
+    <datewritten>June 2, 2002</datewritten>
+    <keyword>example keyword</keyword>
+  </storyinfo>
+  <body>
+    <headline>This is the headline</headline>
+    <para>This is the body text.</para>
+  </body>
+</story>
+
diff --git a/libxml2-2.9.10/doc/tutorial/apc.html b/libxml2-2.9.10/doc/tutorial/apc.html new file mode 100644 index 0000000..f8d9911 --- /dev/null +++ b/libxml2-2.9.10/doc/tutorial/apc.html @@ -0,0 +1,82 @@ +C. Code for Keyword Example

C. Code for Keyword Example

+

+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <libxml/xmlmemory.h>
+#include <libxml/parser.h>
+
+void
+parseStory (xmlDocPtr doc, xmlNodePtr cur) {
+
+	xmlChar *key;
+	cur = cur->xmlChildrenNode;
+	while (cur != NULL) {
+	    if ((!xmlStrcmp(cur->name, (const xmlChar *)"keyword"))) {
+		    key = xmlNodeListGetString(doc, cur->xmlChildrenNode, 1);
+		    printf("keyword: %s\n", key);
+		    xmlFree(key);
+ 	    }
+	cur = cur->next;
+	}
+    return;
+}
+
+static void
+parseDoc(char *docname) {
+
+	xmlDocPtr doc;
+	xmlNodePtr cur;
+
+	doc = xmlParseFile(docname);
+	
+	if (doc == NULL ) {
+		fprintf(stderr,"Document not parsed successfully. \n");
+		return;
+	}
+	
+	cur = xmlDocGetRootElement(doc);
+	
+	if (cur == NULL) {
+		fprintf(stderr,"empty document\n");
+		xmlFreeDoc(doc);
+		return;
+	}
+	
+	if (xmlStrcmp(cur->name, (const xmlChar *) "story")) {
+		fprintf(stderr,"document of the wrong type, root node != story");
+		xmlFreeDoc(doc);
+		return;
+	}
+	
+	cur = cur->xmlChildrenNode;
+	while (cur != NULL) {
+		if ((!xmlStrcmp(cur->name, (const xmlChar *)"storyinfo"))){
+			parseStory (doc, cur);
+		}
+		 
+	cur = cur->next;
+	}
+	
+	xmlFreeDoc(doc);
+	return;
+}
+
+int
+main(int argc, char **argv) {
+
+	char *docname;
+		
+	if (argc <= 1) {
+		printf("Usage: %s docname\n", argv[0]);
+		return(0);
+	}
+
+	docname = argv[1];
+	parseDoc (docname);
+
+	return (1);
+}
+
+

+

diff --git a/libxml2-2.9.10/doc/tutorial/apd.html b/libxml2-2.9.10/doc/tutorial/apd.html new file mode 100644 index 0000000..8f9618d --- /dev/null +++ b/libxml2-2.9.10/doc/tutorial/apd.html @@ -0,0 +1,76 @@ +D. Code for XPath Example

D. Code for XPath Example

+

+#include <libxml/parser.h>
+#include <libxml/xpath.h>
+
+xmlDocPtr
+getdoc (char *docname) {
+	xmlDocPtr doc;
+	doc = xmlParseFile(docname);
+	
+	if (doc == NULL ) {
+		fprintf(stderr,"Document not parsed successfully. \n");
+		return NULL;
+	}
+
+	return doc;
+}
+
+xmlXPathObjectPtr
+getnodeset (xmlDocPtr doc, xmlChar *xpath){
+	
+	xmlXPathContextPtr context;
+	xmlXPathObjectPtr result;
+
+	context = xmlXPathNewContext(doc);
+	if (context == NULL) {
+		printf("Error in xmlXPathNewContext\n");
+		return NULL;
+	}
+	result = xmlXPathEvalExpression(xpath, context);
+	xmlXPathFreeContext(context);
+	if (result == NULL) {
+		printf("Error in xmlXPathEvalExpression\n");
+		return NULL;
+	}
+	if(xmlXPathNodeSetIsEmpty(result->nodesetval)){
+		xmlXPathFreeObject(result);
+                printf("No result\n");
+		return NULL;
+	}
+	return result;
+}
+int
+main(int argc, char **argv) {
+
+	char *docname;
+	xmlDocPtr doc;
+	xmlChar *xpath = (xmlChar*) "//keyword";
+	xmlNodeSetPtr nodeset;
+	xmlXPathObjectPtr result;
+	int i;
+	xmlChar *keyword;
+		
+	if (argc <= 1) {
+		printf("Usage: %s docname\n", argv[0]);
+		return(0);
+	}
+
+	docname = argv[1];
+	doc = getdoc(docname);
+	result = getnodeset (doc, xpath);
+	if (result) {
+		nodeset = result->nodesetval;
+		for (i=0; i < nodeset->nodeNr; i++) {
+			keyword = xmlNodeListGetString(doc, nodeset->nodeTab[i]->xmlChildrenNode, 1);
+		printf("keyword: %s\n", keyword);
+		xmlFree(keyword);
+		}
+		xmlXPathFreeObject (result);
+	}
+	xmlFreeDoc(doc);
+	xmlCleanupParser();
+	return (1);
+}
+

+

diff --git a/libxml2-2.9.10/doc/tutorial/ape.html b/libxml2-2.9.10/doc/tutorial/ape.html new file mode 100644 index 0000000..200319a --- /dev/null +++ b/libxml2-2.9.10/doc/tutorial/ape.html @@ -0,0 +1,78 @@ +E. Code for Add Keyword Example

E. Code for Add Keyword Example

+

+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <libxml/xmlmemory.h>
+#include <libxml/parser.h>
+
+void
+parseStory (xmlDocPtr doc, xmlNodePtr cur, char *keyword) {
+
+	xmlNewTextChild (cur, NULL, "keyword", keyword);
+    return;
+}
+
+xmlDocPtr
+parseDoc(char *docname, char *keyword) {
+
+	xmlDocPtr doc;
+	xmlNodePtr cur;
+
+	doc = xmlParseFile(docname);
+	
+	if (doc == NULL ) {
+		fprintf(stderr,"Document not parsed successfully. \n");
+		return (NULL);
+	}
+	
+	cur = xmlDocGetRootElement(doc);
+	
+	if (cur == NULL) {
+		fprintf(stderr,"empty document\n");
+		xmlFreeDoc(doc);
+		return (NULL);
+	}
+	
+	if (xmlStrcmp(cur->name, (const xmlChar *) "story")) {
+		fprintf(stderr,"document of the wrong type, root node != story");
+		xmlFreeDoc(doc);
+		return (NULL);
+	}
+	
+	cur = cur->xmlChildrenNode;
+	while (cur != NULL) {
+		if ((!xmlStrcmp(cur->name, (const xmlChar *)"storyinfo"))){
+			parseStory (doc, cur, keyword);
+		}
+		 
+	cur = cur->next;
+	}
+	return(doc);
+}
+
+int
+main(int argc, char **argv) {
+
+	char *docname;
+	char *keyword;
+	xmlDocPtr doc;
+
+	if (argc <= 2) {
+		printf("Usage: %s docname, keyword\n", argv[0]);
+		return(0);
+	}
+
+	docname = argv[1];
+	keyword = argv[2];
+	doc = parseDoc (docname, keyword);
+	if (doc != NULL) {
+		xmlSaveFormatFile (docname, doc, 0);
+		xmlFreeDoc(doc);
+	}
+	
+	return (1);
+}
+
+

+

diff --git a/libxml2-2.9.10/doc/tutorial/apf.html b/libxml2-2.9.10/doc/tutorial/apf.html new file mode 100644 index 0000000..4848cdb --- /dev/null +++ b/libxml2-2.9.10/doc/tutorial/apf.html @@ -0,0 +1,67 @@ +F. Code for Add Attribute Example

F. Code for Add Attribute Example

+

+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <libxml/xmlmemory.h>
+#include <libxml/parser.h>
+
+
+xmlDocPtr
+parseDoc(char *docname, char *uri) {
+
+	xmlDocPtr doc;
+	xmlNodePtr cur;
+	xmlNodePtr newnode;
+	xmlAttrPtr newattr;
+
+	doc = xmlParseFile(docname);
+	
+	if (doc == NULL ) {
+		fprintf(stderr,"Document not parsed successfully. \n");
+		return (NULL);
+	}
+	
+	cur = xmlDocGetRootElement(doc);
+	
+	if (cur == NULL) {
+		fprintf(stderr,"empty document\n");
+		xmlFreeDoc(doc);
+		return (NULL);
+	}
+	
+	if (xmlStrcmp(cur->name, (const xmlChar *) "story")) {
+		fprintf(stderr,"document of the wrong type, root node != story");
+		xmlFreeDoc(doc);
+		return (NULL);
+	}
+	
+	newnode = xmlNewTextChild (cur, NULL, "reference", NULL);
+	newattr = xmlNewProp (newnode, "uri", uri);
+	return(doc);
+}
+
+int
+main(int argc, char **argv) {
+
+	char *docname;
+	char *uri;
+	xmlDocPtr doc;
+
+	if (argc <= 2) {
+		printf("Usage: %s docname, uri\n", argv[0]);
+		return(0);
+	}
+
+	docname = argv[1];
+	uri = argv[2];
+	doc = parseDoc (docname, uri);
+	if (doc != NULL) {
+		xmlSaveFormatFile (docname, doc, 1);
+		xmlFreeDoc(doc);
+	}
+	return (1);
+}
+
+

+

diff --git a/libxml2-2.9.10/doc/tutorial/apg.html b/libxml2-2.9.10/doc/tutorial/apg.html new file mode 100644 index 0000000..fffa0ee --- /dev/null +++ b/libxml2-2.9.10/doc/tutorial/apg.html @@ -0,0 +1,75 @@ +G. Code for Retrieving Attribute Value Example

G. Code for Retrieving Attribute Value Example

+

+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <libxml/xmlmemory.h>
+#include <libxml/parser.h>
+
+void
+getReference (xmlDocPtr doc, xmlNodePtr cur) {
+
+	xmlChar *uri;
+	cur = cur->xmlChildrenNode;
+	while (cur != NULL) {
+	    if ((!xmlStrcmp(cur->name, (const xmlChar *)"reference"))) {
+		    uri = xmlGetProp(cur, "uri");
+		    printf("uri: %s\n", uri);
+		    xmlFree(uri);
+	    }
+	    cur = cur->next;
+	}
+	return;
+}
+
+
+void
+parseDoc(char *docname) {
+
+	xmlDocPtr doc;
+	xmlNodePtr cur;
+
+	doc = xmlParseFile(docname);
+	
+	if (doc == NULL ) {
+		fprintf(stderr,"Document not parsed successfully. \n");
+		return;
+	}
+	
+	cur = xmlDocGetRootElement(doc);
+	
+	if (cur == NULL) {
+		fprintf(stderr,"empty document\n");
+		xmlFreeDoc(doc);
+		return;
+	}
+	
+	if (xmlStrcmp(cur->name, (const xmlChar *) "story")) {
+		fprintf(stderr,"document of the wrong type, root node != story");
+		xmlFreeDoc(doc);
+		return;
+	}
+	
+	getReference (doc, cur);
+	xmlFreeDoc(doc);
+	return;
+}
+
+int
+main(int argc, char **argv) {
+
+	char *docname;
+
+	if (argc <= 1) {
+		printf("Usage: %s docname\n", argv[0]);
+		return(0);
+	}
+
+	docname = argv[1];
+	parseDoc (docname);
+	
+	return (1);
+}
+
+

+

diff --git a/libxml2-2.9.10/doc/tutorial/aph.html b/libxml2-2.9.10/doc/tutorial/aph.html new file mode 100644 index 0000000..ef46605 --- /dev/null +++ b/libxml2-2.9.10/doc/tutorial/aph.html @@ -0,0 +1,76 @@ +H. Code for Encoding Conversion Example

H. Code for Encoding Conversion Example

+

+#include <string.h>
+#include <libxml/parser.h>
+
+
+unsigned char*
+convert (unsigned char *in, char *encoding)
+{
+	unsigned char *out;
+        int ret,size,out_size,temp;
+        xmlCharEncodingHandlerPtr handler;
+
+        size = (int)strlen(in)+1; 
+        out_size = size*2-1; 
+        out = malloc((size_t)out_size); 
+
+        if (out) {
+                handler = xmlFindCharEncodingHandler(encoding);
+                
+                if (!handler) {
+                        free(out);
+                        out = NULL;
+                }
+        }
+        if (out) {
+                temp=size-1;
+                ret = handler->input(out, &out_size, in, &temp);
+                if (ret || temp-size+1) {
+                        if (ret) {
+                                printf("conversion wasn't successful.\n");
+                        } else {
+                                printf("conversion wasn't successful. converted: %i octets.\n",temp);
+                        }
+                        free(out);
+                        out = NULL;
+                } else {
+                        out = realloc(out,out_size+1); 
+                        out[out_size]=0; /*null terminating out*/
+                        
+                }
+        } else {
+                printf("no mem\n");
+        }
+        return (out);
+}	
+
+
+int
+main(int argc, char **argv) {
+
+	unsigned char *content, *out;
+	xmlDocPtr doc;
+	xmlNodePtr rootnode;
+	char *encoding = "ISO-8859-1";
+	
+		
+	if (argc <= 1) {
+		printf("Usage: %s content\n", argv[0]);
+		return(0);
+	}
+
+	content = argv[1];
+
+	out = convert(content, encoding);
+
+	doc = xmlNewDoc ("1.0");
+	rootnode = xmlNewDocNode(doc, NULL, (const xmlChar*)"root", out);
+	xmlDocSetRootElement(doc, rootnode);
+
+	xmlSaveFormatFileEnc("-", doc, encoding, 1);
+	return (1);
+}
+
+

+

diff --git a/libxml2-2.9.10/doc/tutorial/api.html b/libxml2-2.9.10/doc/tutorial/api.html new file mode 100644 index 0000000..16e7981 --- /dev/null +++ b/libxml2-2.9.10/doc/tutorial/api.html @@ -0,0 +1,4 @@ +I. Acknowledgements

I. Acknowledgements

A number of people have generously offered feedback, code and + suggested improvements to this tutorial. In no particular order: + Daniel Veillard, Marcus Labib Iskander, Christopher R. Harris, Igor Zlatkovic, Niraj Tolia, David Turover +

diff --git a/libxml2-2.9.10/doc/tutorial/ar01s02.html b/libxml2-2.9.10/doc/tutorial/ar01s02.html new file mode 100644 index 0000000..1e30a98 --- /dev/null +++ b/libxml2-2.9.10/doc/tutorial/ar01s02.html @@ -0,0 +1,14 @@ +Data Types

Data Types

Libxml declares a number of data types we + will encounter repeatedly, hiding the messy stuff so you do not have to deal + with it unless you have some specific need.

+

+xmlChar

A basic replacement for char, a byte in a UTF-8 encoded + string. If your data uses another encoding, it must be converted to + UTF-8 for use with libxml's + functions. More information on encoding is available on the libxml encoding support web page.

+ xmlDoc

A structure containing the tree created by a parsed doc. xmlDocPtr + is a pointer to the structure.

+xmlNodePtr + and xmlNode

A structure containing a single node. xmlNodePtr + is a pointer to the structure, and is used in traversing the document tree.

+

diff --git a/libxml2-2.9.10/doc/tutorial/ar01s03.html b/libxml2-2.9.10/doc/tutorial/ar01s03.html new file mode 100644 index 0000000..cd28fff --- /dev/null +++ b/libxml2-2.9.10/doc/tutorial/ar01s03.html @@ -0,0 +1,47 @@ +Parsing the file

Parsing the file

+Parsing the file requires only the name of the file and a single + function call, plus error checking. Full code: Appendix C, Code for Keyword Example

+

+        1 xmlDocPtr doc;
+	2 xmlNodePtr cur;
+
+	3 doc = xmlParseFile(docname);
+	
+	4 if (doc == NULL ) {
+		fprintf(stderr,"Document not parsed successfully. \n");
+		return;
+	}
+
+	5 cur = xmlDocGetRootElement(doc);
+	
+	6 if (cur == NULL) {
+		fprintf(stderr,"empty document\n");
+		xmlFreeDoc(doc);
+		return;
+	}
+	
+	7 if (xmlStrcmp(cur->name, (const xmlChar *) "story")) {
+		fprintf(stderr,"document of the wrong type, root node != story");
+		xmlFreeDoc(doc);
+		return;
+	}
+
+    

+

1

Declare the pointer that will point to your parsed document.

2

Declare a node pointer (you'll need this in order to + interact with individual nodes).

4

Check to see that the document was successfully parsed. If it + was not, libxml will at this point + register an error and stop. +

[Note]Note

+One common example of an error at this point is improper + handling of encoding. The XML standard requires + documents stored with an encoding other than UTF-8 or UTF-16 to + contain an explicit declaration of their encoding. If the + declaration is there, libxml will + automatically perform the necessary conversion to UTF-8 for + you. More information on XML's encoding + requirements is contained in the standard.

+

5

Retrieve the document's root element.

6

Check to make sure the document actually contains something.

7

In our case, we need to make sure the document is the right + type. "story" is the root type of the documents used in this + tutorial.

+ +

diff --git a/libxml2-2.9.10/doc/tutorial/ar01s04.html b/libxml2-2.9.10/doc/tutorial/ar01s04.html new file mode 100644 index 0000000..11492eb --- /dev/null +++ b/libxml2-2.9.10/doc/tutorial/ar01s04.html @@ -0,0 +1,54 @@ +Retrieving Element Content

Retrieving Element Content

+Retrieving the content of an element involves traversing the document + tree until you find what you are looking for. In this case, we are looking + for an element called "keyword" contained within element called "story". The + process to find the node we are interested in involves tediously walking the + tree. We assume you already have an xmlDocPtr called doc + and an xmlNodPtr called cur.

+

+	1cur = cur->xmlChildrenNode;
+	2while (cur != NULL) {
+		if ((!xmlStrcmp(cur->name, (const xmlChar *)"storyinfo"))){
+			parseStory (doc, cur);
+		}
+		 
+	cur = cur->next;
+	}
+      

+ +

1

Get the first child node of cur. At this + point, cur points at the document root, which is + the element "story".

2

This loop iterates through the elements that are children of + "story", looking for one called "storyinfo". That + is the element that will contain the "keywords" we are + looking for. It uses the libxml string + comparison + function, xmlStrcmp. If there is a match, it calls the function parseStory.

+

+

+void
+parseStory (xmlDocPtr doc, xmlNodePtr cur) {
+
+	xmlChar *key;
+	1 cur = cur->xmlChildrenNode;
+	2 while (cur != NULL) {
+	    if ((!xmlStrcmp(cur->name, (const xmlChar *)"keyword"))) {
+	3	    key = xmlNodeListGetString(doc, cur->xmlChildrenNode, 1);
+		    printf("keyword: %s\n", key);
+		    xmlFree(key);
+ 	    }
+	cur = cur->next;
+	}
+    return;
+}
+      

+

1

Again we get the first child node.

2

Like the loop above, we then iterate through the nodes, looking + for one that matches the element we're interested in, in this case + "keyword".

3

When we find the "keyword" element, we need to print + its contents. Remember that in XML, the text + contained within an element is a child node of that element, so we + turn to cur->xmlChildrenNode. To retrieve it, we + use the function xmlNodeListGetString, which also takes the doc pointer as an argument. In this case, we just print it out.

[Note]Note

Because xmlNodeListGetString allocates + memory for the string it returns, you must use + xmlFree to free it.

+

diff --git a/libxml2-2.9.10/doc/tutorial/ar01s05.html b/libxml2-2.9.10/doc/tutorial/ar01s05.html new file mode 100644 index 0000000..1c40925 --- /dev/null +++ b/libxml2-2.9.10/doc/tutorial/ar01s05.html @@ -0,0 +1,55 @@ +Using XPath to Retrieve Element Content

Using XPath to Retrieve Element Content

In addition to walking the document tree to find an element, + Libxml2 includes support for + use of XPath expressions to retrieve sets of + nodes that match a specified criteria. Full documentation of the + XPath API is here. +

XPath allows searching through a document + for nodes that match specified criteria. In the example below we search + through a document for the contents of all keyword + elements. +

[Note]Note

A full discussion of XPath is beyond + the scope of this document. For details on its use, see the XPath specification.

+ Full code for this example is at Appendix D, Code for XPath Example. +

Using XPath requires setting up an + xmlXPathContext and then supplying the XPath + expression and the context to the + xmlXPathEvalExpression function. The function returns + an xmlXPathObjectPtr, which includes the set of nodes satisfying the + XPath expression.

+

+	xmlXPathObjectPtr
+	getnodeset (xmlDocPtr doc, xmlChar *xpath){
+	
+	1xmlXPathContextPtr context;
+	xmlXPathObjectPtr result;
+
+	2context = xmlXPathNewContext(doc);
+	3result = xmlXPathEvalExpression(xpath, context);
+	4if(xmlXPathNodeSetIsEmpty(result->nodesetval)){
+		xmlXPathFreeObject(result);
+                printf("No result\n");
+		return NULL;
+      

+

1

First we declare our variables.

2

Initialize the context variable.

3

Apply the XPath expression.

4

Check the result and free the memory allocated to + result if no result is found.

+

The xmlPathObjectPtr returned by the function contains a set of nodes + and other information needed to iterate through the set and act on the + results. For this example, our functions returns the + xmlXPathObjectPtr. We use it to print the contents of + keyword nodes in our document. The node set object + includes the number of elements in the set (nodeNr) and + an array of nodes (nodeTab): +

+	1for (i=0; i < nodeset->nodeNr; i++) {
+	2keyword = xmlNodeListGetString(doc, nodeset->nodeTab[i]->xmlChildrenNode, 1);
+		printf("keyword: %s\n", keyword);
+	        xmlFree(keyword);
+	}
+      

+

1

The value of nodeset->Nr holds the number of + elements in the node set. Here we use it to iterate through the array.

2

Here we print the contents of each of the nodes returned. +

[Note]Note

Note that we are printing the child node of the node that is + returned, because the contents of the keyword + element are a child text node.

+

+

diff --git a/libxml2-2.9.10/doc/tutorial/ar01s06.html b/libxml2-2.9.10/doc/tutorial/ar01s06.html new file mode 100644 index 0000000..c09e6ef --- /dev/null +++ b/libxml2-2.9.10/doc/tutorial/ar01s06.html @@ -0,0 +1,35 @@ +Writing element content

Writing element content

+ Writing element content uses many of the same steps we used above + — parsing the document and walking the tree. We parse the document, + then traverse the tree to find the place we want to insert our element. For + this example, we want to again find the "storyinfo" element and + this time insert a keyword. Then we'll write the file to disk. Full code: + Appendix E, Code for Add Keyword Example

+ The main difference in this example is in + parseStory: + +

+void
+parseStory (xmlDocPtr doc, xmlNodePtr cur, char *keyword) {
+
+	1 xmlNewTextChild (cur, NULL, "keyword", keyword);
+    return;
+}
+      

+

1

The xmlNewTextChild + function adds a new child element at the + current node pointer's location in the + tree, specified by cur.

+

+ + Once the node has been added, we would like to write the document to + file. Is you want the element to have a namespace, you can add it here as + well. In our case, the namespace is NULL. +

+	xmlSaveFormatFile (docname, doc, 1);
+      

+ The first parameter is the name of the file to be written. You'll notice + it is the same as the file we just read. In this case, we just write over + the old file. The second parameter is a pointer to the xmlDoc + structure. Setting the third parameter equal to one ensures indenting on output. +

diff --git a/libxml2-2.9.10/doc/tutorial/ar01s07.html b/libxml2-2.9.10/doc/tutorial/ar01s07.html new file mode 100644 index 0000000..fd5c4dd --- /dev/null +++ b/libxml2-2.9.10/doc/tutorial/ar01s07.html @@ -0,0 +1,30 @@ +Writing Attribute

Writing Attribute

+Writing an attribute is similar to writing text to a new element. In + this case, we'll add a reference URI to our + document. Full code:Appendix F, Code for Add Attribute Example.

+ A reference is a child of the story + element, so finding the place to put our new element and attribute is + simple. As soon as we do the error-checking test in our + parseDoc, we are in the right spot to add our + element. But before we do that, we need to make a declaration using a + data type we have not seen yet: +

+	xmlAttrPtr newattr;
+      

+ We also need an extra xmlNodePtr: +

+	xmlNodePtr newnode;
+      

+

+ The rest of parseDoc is the same as before until we + check to see if our root element is story. If it is, + then we know we are at the right spot to add our element: + +

+	1 newnode = xmlNewTextChild (cur, NULL, "reference", NULL);
+	2 newattr = xmlNewProp (newnode, "uri", uri);	
+      

+

1

First we add a new node at the location of the current node + pointer, cur. using the xmlNewTextChild function.

+

Once the node is added, the file is written to disk just as in the + previous example in which we added an element with text content.

diff --git a/libxml2-2.9.10/doc/tutorial/ar01s08.html b/libxml2-2.9.10/doc/tutorial/ar01s08.html new file mode 100644 index 0000000..758f811 --- /dev/null +++ b/libxml2-2.9.10/doc/tutorial/ar01s08.html @@ -0,0 +1,38 @@ +Retrieving Attributes

Retrieving Attributes

+Retrieving the value of an attribute is similar to the previous + example in which we retrieved a node's text contents. In this case we'll + extract the value of the URI we added in the previous + section. Full code: Appendix G, Code for Retrieving Attribute Value Example.

+ The initial steps for this example are similar to the previous ones: parse + the doc, find the element you are interested in, then enter a function to + carry out the specific task required. In this case, we call + getReference: +

+void
+getReference (xmlDocPtr doc, xmlNodePtr cur) {
+
+	xmlChar *uri;
+	cur = cur->xmlChildrenNode;
+	while (cur != NULL) {
+	    if ((!xmlStrcmp(cur->name, (const xmlChar *)"reference"))) {
+		   1 uri = xmlGetProp(cur, "uri");
+		    printf("uri: %s\n", uri);
+		    xmlFree(uri);
+	    }
+	    cur = cur->next;
+	}
+	return;
+}
+      

+ +

1

+ The key function is xmlGetProp, which returns an + xmlChar containing the attribute's value. In this case, + we just print it out. +

[Note]Note

+ If you are using a DTD that declares a fixed or + default value for the attribute, this function will retrieve it. +

+

+ +

diff --git a/libxml2-2.9.10/doc/tutorial/ar01s09.html b/libxml2-2.9.10/doc/tutorial/ar01s09.html new file mode 100644 index 0000000..2987add --- /dev/null +++ b/libxml2-2.9.10/doc/tutorial/ar01s09.html @@ -0,0 +1,63 @@ +Encoding Conversion

Encoding Conversion

+Data encoding compatibility problems are one of the most common + difficulties encountered by programmers new to XML in + general and libxml in particular. Thinking + through the design of your application in light of this issue will help + avoid difficulties later. Internally, libxml + stores and manipulates data in the UTF-8 format. Data used by your program + in other formats, such as the commonly used ISO-8859-1 encoding, must be + converted to UTF-8 before passing it to libxml + functions. If you want your program's output in an encoding other than + UTF-8, you also must convert it.

Libxml uses + iconv if it is available to convert + data. Without iconv, only UTF-8, UTF-16 and + ISO-8859-1 can be used as external formats. With + iconv, any format can be used provided + iconv is able to convert it to and from + UTF-8. Currently iconv supports about 150 + different character formats with ability to convert from any to any. While + the actual number of supported formats varies between implementations, every + iconv implementation is almost guaranteed to + support every format anyone has ever heard of.

[Warning]Warning

A common mistake is to use different formats for the internal data + in different parts of one's code. The most common case is an application + that assumes ISO-8859-1 to be the internal data format, combined with + libxml, which assumes UTF-8 to be the + internal data format. The result is an application that treats internal + data differently, depending on which code section is executing. The one or + the other part of code will then, naturally, misinterpret the data. +

This example constructs a simple document, then adds content provided + at the command line to the document's root element and outputs the results + to stdout in the proper encoding. For this example, we + use ISO-8859-1 encoding. The encoding of the string input at the command + line is converted from ISO-8859-1 to UTF-8. Full code: Appendix H, Code for Encoding Conversion Example

The conversion, encapsulated in the example code in the + convert function, uses + libxml's + xmlFindCharEncodingHandler function: +

+	1xmlCharEncodingHandlerPtr handler;
+        2size = (int)strlen(in)+1; 
+        out_size = size*2-1; 
+        out = malloc((size_t)out_size); 
+
+…
+	3handler = xmlFindCharEncodingHandler(encoding);
+…
+	4handler->input(out, &out_size, in, &temp);
+…	
+	5xmlSaveFormatFileEnc("-", doc, encoding, 1);
+      

+

1

handler is declared as a pointer to an + xmlCharEncodingHandler function.

2

The xmlCharEncodingHandler function needs + to be given the size of the input and output strings, which are + calculated here for strings in and + out.

3

xmlFindCharEncodingHandler takes as its + argument the data's initial encoding and searches + libxml's built-in set of conversion + handlers, returning a pointer to the function or NULL if none is + found.

4

The conversion function identified by handler + requires as its arguments pointers to the input and output strings, + along with the length of each. The lengths must be determined + separately by the application.

5

To output in a specified encoding rather than UTF-8, we use + xmlSaveFormatFileEnc, specifying the + encoding.

+

diff --git a/libxml2-2.9.10/doc/tutorial/images/blank.png b/libxml2-2.9.10/doc/tutorial/images/blank.png new file mode 100644 index 0000000..764bf4f Binary files /dev/null and b/libxml2-2.9.10/doc/tutorial/images/blank.png differ diff --git a/libxml2-2.9.10/doc/tutorial/images/callouts/1.png b/libxml2-2.9.10/doc/tutorial/images/callouts/1.png new file mode 100644 index 0000000..7d47343 Binary files /dev/null and b/libxml2-2.9.10/doc/tutorial/images/callouts/1.png differ diff --git a/libxml2-2.9.10/doc/tutorial/images/callouts/10.png b/libxml2-2.9.10/doc/tutorial/images/callouts/10.png new file mode 100644 index 0000000..997bbc8 Binary files /dev/null and b/libxml2-2.9.10/doc/tutorial/images/callouts/10.png differ diff --git a/libxml2-2.9.10/doc/tutorial/images/callouts/2.png b/libxml2-2.9.10/doc/tutorial/images/callouts/2.png new file mode 100644 index 0000000..5d09341 Binary files /dev/null and b/libxml2-2.9.10/doc/tutorial/images/callouts/2.png differ diff --git a/libxml2-2.9.10/doc/tutorial/images/callouts/3.png b/libxml2-2.9.10/doc/tutorial/images/callouts/3.png new file mode 100644 index 0000000..ef7b700 Binary files /dev/null and b/libxml2-2.9.10/doc/tutorial/images/callouts/3.png differ diff --git a/libxml2-2.9.10/doc/tutorial/images/callouts/4.png b/libxml2-2.9.10/doc/tutorial/images/callouts/4.png new file mode 100644 index 0000000..adb8364 Binary files /dev/null and b/libxml2-2.9.10/doc/tutorial/images/callouts/4.png differ diff --git a/libxml2-2.9.10/doc/tutorial/images/callouts/5.png b/libxml2-2.9.10/doc/tutorial/images/callouts/5.png new file mode 100644 index 0000000..4d7eb46 Binary files /dev/null and b/libxml2-2.9.10/doc/tutorial/images/callouts/5.png differ diff --git a/libxml2-2.9.10/doc/tutorial/images/callouts/6.png b/libxml2-2.9.10/doc/tutorial/images/callouts/6.png new file mode 100644 index 0000000..0ba694a Binary files /dev/null and b/libxml2-2.9.10/doc/tutorial/images/callouts/6.png differ diff --git a/libxml2-2.9.10/doc/tutorial/images/callouts/7.png b/libxml2-2.9.10/doc/tutorial/images/callouts/7.png new file mode 100644 index 0000000..472e96f Binary files /dev/null and b/libxml2-2.9.10/doc/tutorial/images/callouts/7.png differ diff --git a/libxml2-2.9.10/doc/tutorial/images/callouts/8.png b/libxml2-2.9.10/doc/tutorial/images/callouts/8.png new file mode 100644 index 0000000..5e60973 Binary files /dev/null and b/libxml2-2.9.10/doc/tutorial/images/callouts/8.png differ diff --git a/libxml2-2.9.10/doc/tutorial/images/callouts/9.png b/libxml2-2.9.10/doc/tutorial/images/callouts/9.png new file mode 100644 index 0000000..a0676d2 Binary files /dev/null and b/libxml2-2.9.10/doc/tutorial/images/callouts/9.png differ diff --git a/libxml2-2.9.10/doc/tutorial/images/caution.png b/libxml2-2.9.10/doc/tutorial/images/caution.png new file mode 100644 index 0000000..5b7809c Binary files /dev/null and b/libxml2-2.9.10/doc/tutorial/images/caution.png differ diff --git a/libxml2-2.9.10/doc/tutorial/images/draft.png b/libxml2-2.9.10/doc/tutorial/images/draft.png new file mode 100644 index 0000000..0084708 Binary files /dev/null and b/libxml2-2.9.10/doc/tutorial/images/draft.png differ diff --git a/libxml2-2.9.10/doc/tutorial/images/home.png b/libxml2-2.9.10/doc/tutorial/images/home.png new file mode 100644 index 0000000..cbb711d Binary files /dev/null and b/libxml2-2.9.10/doc/tutorial/images/home.png differ diff --git a/libxml2-2.9.10/doc/tutorial/images/important.png b/libxml2-2.9.10/doc/tutorial/images/important.png new file mode 100644 index 0000000..12c90f6 Binary files /dev/null and b/libxml2-2.9.10/doc/tutorial/images/important.png differ diff --git a/libxml2-2.9.10/doc/tutorial/images/next.png b/libxml2-2.9.10/doc/tutorial/images/next.png new file mode 100644 index 0000000..45835bf Binary files /dev/null and b/libxml2-2.9.10/doc/tutorial/images/next.png differ diff --git a/libxml2-2.9.10/doc/tutorial/images/note.png b/libxml2-2.9.10/doc/tutorial/images/note.png new file mode 100644 index 0000000..d0c3c64 Binary files /dev/null and b/libxml2-2.9.10/doc/tutorial/images/note.png differ diff --git a/libxml2-2.9.10/doc/tutorial/images/prev.png b/libxml2-2.9.10/doc/tutorial/images/prev.png new file mode 100644 index 0000000..cf24654 Binary files /dev/null and b/libxml2-2.9.10/doc/tutorial/images/prev.png differ diff --git a/libxml2-2.9.10/doc/tutorial/images/tip.png b/libxml2-2.9.10/doc/tutorial/images/tip.png new file mode 100644 index 0000000..5c4aab3 Binary files /dev/null and b/libxml2-2.9.10/doc/tutorial/images/tip.png differ diff --git a/libxml2-2.9.10/doc/tutorial/images/toc-blank.png b/libxml2-2.9.10/doc/tutorial/images/toc-blank.png new file mode 100644 index 0000000..6ffad17 Binary files /dev/null and b/libxml2-2.9.10/doc/tutorial/images/toc-blank.png differ diff --git a/libxml2-2.9.10/doc/tutorial/images/toc-minus.png b/libxml2-2.9.10/doc/tutorial/images/toc-minus.png new file mode 100644 index 0000000..abbb020 Binary files /dev/null and b/libxml2-2.9.10/doc/tutorial/images/toc-minus.png differ diff --git a/libxml2-2.9.10/doc/tutorial/images/toc-plus.png b/libxml2-2.9.10/doc/tutorial/images/toc-plus.png new file mode 100644 index 0000000..941312c Binary files /dev/null and b/libxml2-2.9.10/doc/tutorial/images/toc-plus.png differ diff --git a/libxml2-2.9.10/doc/tutorial/images/up.png b/libxml2-2.9.10/doc/tutorial/images/up.png new file mode 100644 index 0000000..07634de Binary files /dev/null and b/libxml2-2.9.10/doc/tutorial/images/up.png differ diff --git a/libxml2-2.9.10/doc/tutorial/images/warning.png b/libxml2-2.9.10/doc/tutorial/images/warning.png new file mode 100644 index 0000000..1c33db8 Binary files /dev/null and b/libxml2-2.9.10/doc/tutorial/images/warning.png differ diff --git a/libxml2-2.9.10/doc/tutorial/includeaddattribute.c b/libxml2-2.9.10/doc/tutorial/includeaddattribute.c new file mode 100644 index 0000000..bb6a18b --- /dev/null +++ b/libxml2-2.9.10/doc/tutorial/includeaddattribute.c @@ -0,0 +1,64 @@ + +#include +#include +#include +#include + + +xmlDocPtr +parseDoc(char *docname, char *uri) { + + xmlDocPtr doc; + xmlNodePtr cur; + xmlNodePtr newnode; + xmlAttrPtr newattr; + + doc = xmlParseFile(docname); + + if (doc == NULL ) { + fprintf(stderr,"Document not parsed successfully. \n"); + return (NULL); + } + + cur = xmlDocGetRootElement(doc); + + if (cur == NULL) { + fprintf(stderr,"empty document\n"); + xmlFreeDoc(doc); + return (NULL); + } + + if (xmlStrcmp(cur->name, (const xmlChar *) "story")) { + fprintf(stderr,"document of the wrong type, root node != story"); + xmlFreeDoc(doc); + return (NULL); + } + + newnode = xmlNewTextChild (cur, NULL, "reference", NULL); + newattr = xmlNewProp (newnode, "uri", uri); + return(doc); +} + +int +main(int argc, char **argv) { + + char *docname; + char *uri; + xmlDocPtr doc; + + if (argc <= 2) { + printf("Usage: %s docname, uri\n", argv[0]); + return(0); + } + + docname = argv[1]; + uri = argv[2]; + doc = parseDoc (docname, uri); + if (doc != NULL) { + xmlSaveFormatFile (docname, doc, 1); + xmlFreeDoc(doc); + } + return (1); +} +]]> diff --git a/libxml2-2.9.10/doc/tutorial/includeaddkeyword.c b/libxml2-2.9.10/doc/tutorial/includeaddkeyword.c new file mode 100644 index 0000000..975168d --- /dev/null +++ b/libxml2-2.9.10/doc/tutorial/includeaddkeyword.c @@ -0,0 +1,75 @@ + +#include +#include +#include +#include + +void +parseStory (xmlDocPtr doc, xmlNodePtr cur, char *keyword) { + + xmlNewTextChild (cur, NULL, "keyword", keyword); + return; +} + +xmlDocPtr +parseDoc(char *docname, char *keyword) { + + xmlDocPtr doc; + xmlNodePtr cur; + + doc = xmlParseFile(docname); + + if (doc == NULL ) { + fprintf(stderr,"Document not parsed successfully. \n"); + return (NULL); + } + + cur = xmlDocGetRootElement(doc); + + if (cur == NULL) { + fprintf(stderr,"empty document\n"); + xmlFreeDoc(doc); + return (NULL); + } + + if (xmlStrcmp(cur->name, (const xmlChar *) "story")) { + fprintf(stderr,"document of the wrong type, root node != story"); + xmlFreeDoc(doc); + return (NULL); + } + + cur = cur->xmlChildrenNode; + while (cur != NULL) { + if ((!xmlStrcmp(cur->name, (const xmlChar *)"storyinfo"))){ + parseStory (doc, cur, keyword); + } + + cur = cur->next; + } + return(doc); +} + +int +main(int argc, char **argv) { + + char *docname; + char *keyword; + xmlDocPtr doc; + + if (argc <= 2) { + printf("Usage: %s docname, keyword\n", argv[0]); + return(0); + } + + docname = argv[1]; + keyword = argv[2]; + doc = parseDoc (docname, keyword); + if (doc != NULL) { + xmlSaveFormatFile (docname, doc, 0); + xmlFreeDoc(doc); + } + + return (1); +} +]]> diff --git a/libxml2-2.9.10/doc/tutorial/includeconvert.c b/libxml2-2.9.10/doc/tutorial/includeconvert.c new file mode 100644 index 0000000..482e56f --- /dev/null +++ b/libxml2-2.9.10/doc/tutorial/includeconvert.c @@ -0,0 +1,73 @@ + +#include + + +unsigned char* +convert (unsigned char *in, char *encoding) +{ + unsigned char *out; + int ret,size,out_size,temp; + xmlCharEncodingHandlerPtr handler; + + size = (int)strlen(in)+1; + out_size = size*2-1; + out = malloc((size_t)out_size); + + if (out) { + handler = xmlFindCharEncodingHandler(encoding); + + if (!handler) { + free(out); + out = NULL; + } + } + if (out) { + temp=size-1; + ret = handler->input(out, &out_size, in, &temp); + if (ret || temp-size+1) { + if (ret) { + printf("conversion wasn't successful.\n"); + } else { + printf("conversion wasn't successful. converted: %i octets.\n",temp); + } + free(out); + out = NULL; + } else { + out = realloc(out,out_size+1); + out[out_size]=0; /*null terminating out*/ + + } + } else { + printf("no mem\n"); + } + return (out); +} + + +int +main(int argc, char **argv) { + + unsigned char *content, *out; + xmlDocPtr doc; + xmlNodePtr rootnode; + char *encoding = "ISO-8859-1"; + + + if (argc <= 1) { + printf("Usage: %s content\n", argv[0]); + return(0); + } + + content = argv[1]; + + out = convert(content, encoding); + + doc = xmlNewDoc ("1.0"); + rootnode = xmlNewDocNode(doc, NULL, (const xmlChar*)"root", out); + xmlDocSetRootElement(doc, rootnode); + + xmlSaveFormatFileEnc("-", doc, encoding, 1); + return (1); +} +]]> diff --git a/libxml2-2.9.10/doc/tutorial/includegetattribute.c b/libxml2-2.9.10/doc/tutorial/includegetattribute.c new file mode 100644 index 0000000..b2b7471 --- /dev/null +++ b/libxml2-2.9.10/doc/tutorial/includegetattribute.c @@ -0,0 +1,72 @@ + +#include +#include +#include +#include + +void +getReference (xmlDocPtr doc, xmlNodePtr cur) { + + xmlChar *uri; + cur = cur->xmlChildrenNode; + while (cur != NULL) { + if ((!xmlStrcmp(cur->name, (const xmlChar *)"reference"))) { + uri = xmlGetProp(cur, "uri"); + printf("uri: %s\n", uri); + xmlFree(uri); + } + cur = cur->next; + } + return; +} + + +void +parseDoc(char *docname) { + + xmlDocPtr doc; + xmlNodePtr cur; + + doc = xmlParseFile(docname); + + if (doc == NULL ) { + fprintf(stderr,"Document not parsed successfully. \n"); + return; + } + + cur = xmlDocGetRootElement(doc); + + if (cur == NULL) { + fprintf(stderr,"empty document\n"); + xmlFreeDoc(doc); + return; + } + + if (xmlStrcmp(cur->name, (const xmlChar *) "story")) { + fprintf(stderr,"document of the wrong type, root node != story"); + xmlFreeDoc(doc); + return; + } + + getReference (doc, cur); + xmlFreeDoc(doc); + return; +} + +int +main(int argc, char **argv) { + + char *docname; + + if (argc <= 1) { + printf("Usage: %s docname\n", argv[0]); + return(0); + } + + docname = argv[1]; + parseDoc (docname); + + return (1); +} +]]> diff --git a/libxml2-2.9.10/doc/tutorial/includekeyword.c b/libxml2-2.9.10/doc/tutorial/includekeyword.c new file mode 100644 index 0000000..e9bb467 --- /dev/null +++ b/libxml2-2.9.10/doc/tutorial/includekeyword.c @@ -0,0 +1,79 @@ + +#include +#include +#include +#include + +void +parseStory (xmlDocPtr doc, xmlNodePtr cur) { + + xmlChar *key; + cur = cur->xmlChildrenNode; + while (cur != NULL) { + if ((!xmlStrcmp(cur->name, (const xmlChar *)"keyword"))) { + key = xmlNodeListGetString(doc, cur->xmlChildrenNode, 1); + printf("keyword: %s\n", key); + xmlFree(key); + } + cur = cur->next; + } + return; +} + +static void +parseDoc(char *docname) { + + xmlDocPtr doc; + xmlNodePtr cur; + + doc = xmlParseFile(docname); + + if (doc == NULL ) { + fprintf(stderr,"Document not parsed successfully. \n"); + return; + } + + cur = xmlDocGetRootElement(doc); + + if (cur == NULL) { + fprintf(stderr,"empty document\n"); + xmlFreeDoc(doc); + return; + } + + if (xmlStrcmp(cur->name, (const xmlChar *) "story")) { + fprintf(stderr,"document of the wrong type, root node != story"); + xmlFreeDoc(doc); + return; + } + + cur = cur->xmlChildrenNode; + while (cur != NULL) { + if ((!xmlStrcmp(cur->name, (const xmlChar *)"storyinfo"))){ + parseStory (doc, cur); + } + + cur = cur->next; + } + + xmlFreeDoc(doc); + return; +} + +int +main(int argc, char **argv) { + + char *docname; + + if (argc <= 1) { + printf("Usage: %s docname\n", argv[0]); + return(0); + } + + docname = argv[1]; + parseDoc (docname); + + return (1); +} +]]> diff --git a/libxml2-2.9.10/doc/tutorial/includexpath.c b/libxml2-2.9.10/doc/tutorial/includexpath.c new file mode 100644 index 0000000..6b66e60 --- /dev/null +++ b/libxml2-2.9.10/doc/tutorial/includexpath.c @@ -0,0 +1,74 @@ + +#include + +xmlDocPtr +getdoc (char *docname) { + xmlDocPtr doc; + doc = xmlParseFile(docname); + + if (doc == NULL ) { + fprintf(stderr,"Document not parsed successfully. \n"); + return NULL; + } + + return doc; +} + +xmlXPathObjectPtr +getnodeset (xmlDocPtr doc, xmlChar *xpath){ + + xmlXPathContextPtr context; + xmlXPathObjectPtr result; + + context = xmlXPathNewContext(doc); + if (context == NULL) { + printf("Error in xmlXPathNewContext\n"); + return NULL; + } + result = xmlXPathEvalExpression(xpath, context); + xmlXPathFreeContext(context); + if (result == NULL) { + printf("Error in xmlXPathEvalExpression\n"); + return NULL; + } + if(xmlXPathNodeSetIsEmpty(result->nodesetval)){ + xmlXPathFreeObject(result); + printf("No result\n"); + return NULL; + } + return result; +} +int +main(int argc, char **argv) { + + char *docname; + xmlDocPtr doc; + xmlChar *xpath = (xmlChar*) "//keyword"; + xmlNodeSetPtr nodeset; + xmlXPathObjectPtr result; + int i; + xmlChar *keyword; + + if (argc <= 1) { + printf("Usage: %s docname\n", argv[0]); + return(0); + } + + docname = argv[1]; + doc = getdoc(docname); + result = getnodeset (doc, xpath); + if (result) { + nodeset = result->nodesetval; + for (i=0; i < nodeset->nodeNr; i++) { + keyword = xmlNodeListGetString(doc, nodeset->nodeTab[i]->xmlChildrenNode, 1); + printf("keyword: %s\n", keyword); + xmlFree(keyword); + } + xmlXPathFreeObject (result); + } + xmlFreeDoc(doc); + xmlCleanupParser(); + return (1); +} +]]> \ No newline at end of file diff --git a/libxml2-2.9.10/doc/tutorial/index.html b/libxml2-2.9.10/doc/tutorial/index.html new file mode 100644 index 0000000..51fd481 --- /dev/null +++ b/libxml2-2.9.10/doc/tutorial/index.html @@ -0,0 +1,14 @@ +Libxml Tutorial

Libxml Tutorial

John Fleck

Revision History
Revision 1June 4, 2002
Initial draft
Revision 2June 12, 2002
retrieving attribute value added
Revision 3Aug. 31, 2002
freeing memory fix
Revision 4Nov. 10, 2002
encoding discussion added
Revision 5Dec. 15, 2002
more memory freeing changes
Revision 6Jan. 26. 2003
add index
Revision 7April 25, 2003
add compilation appendix
Revision 8July 24, 2003
add XPath example
Revision 9Feb. 14, 2004
Fix bug in XPath example
Revision 7Aug. 24, 2004
Fix another bug in XPath example

Abstract

Libxml is a freely licensed C language library for handling + XML, portable across a large number of platforms. This + tutorial provides examples of its basic functions.

Introduction

Libxml is a C language library implementing functions for reading, + creating and manipulating XML data. This tutorial + provides example code and explanations of its basic functionality.

Libxml and more details about its use are available on the project home page. Included there is complete + API documentation. This tutorial is not meant + to substitute for that complete documentation, but to illustrate the + functions needed to use the library to perform basic operations. + +

The tutorial is based on a simple XML application I + use for articles I write. The format includes metadata and the body + of the article.

The example code in this tutorial demonstrates how to: +

  • Parse the document.

  • Extract the text within a specified element.

  • Add an element and its content.

  • Add an attribute.

  • Extract the value of an attribute.

+

Full code for the examples is included in the appendices.

diff --git a/libxml2-2.9.10/doc/tutorial/ix01.html b/libxml2-2.9.10/doc/tutorial/ix01.html new file mode 100644 index 0000000..fca9d42 --- /dev/null +++ b/libxml2-2.9.10/doc/tutorial/ix01.html @@ -0,0 +1 @@ +Index

Index

A

attribute
retrieving value, Retrieving Attributes
writing, Writing Attribute

C

compiler flags, Compilation

E

element
retrieving content, Retrieving Element Content
writing content, Writing element content
encoding, Parsing the file, Encoding Conversion

X

xmlChar, Data Types
xmlDoc, Data Types
xmlNodePtr, Data Types
diff --git a/libxml2-2.9.10/doc/tutorial/xmltutorial.pdf b/libxml2-2.9.10/doc/tutorial/xmltutorial.pdf new file mode 100644 index 0000000..967d445 --- /dev/null +++ b/libxml2-2.9.10/doc/tutorial/xmltutorial.pdf @@ -0,0 +1,1336 @@ +%PDF-1.3 +%ª«¬­ +4 0 obj +<< /Type /Info +/Producer (FOP 0.20.5) >> +endobj +5 0 obj +<< /Length 1748 /Filter [ /ASCII85Decode /FlateDecode ] + >> +stream +Gb"/*>Edeu'RnB3cso,c'tRV<@2QG"Te1sI,sZ*n#KKlNVMQ<5BAq5!'k+!#c"8(NNgbpHe&;a;1aP(M@rJfk-$BS+$?JcRY,(_A6k,SUN`TO7efXhh3i=3:BXHM%E2OW]0H+sk$H[O\XG#u0mW@.r"s`W.g99!tcR*(\/("@>q@BW^Q2G*D>/#n3]_.il=X.o?OD#U^04dS]Ss+,a%^lQgnf/]&ceW@ko*%B0QokTBn:$jairCK+PLS%Cdch@t;kIOGu!8)fQ]DhR/U#>#9%l:;J>aO=nBdX8N?;VToPUM@?BfP;2DbSCG8.#;H:nr:@X[RoUP5#8V!2XYms3+,Pg+L(An4XOouF2iL@.s#m5[\'e,fq`PS,Y"o@$je=#b?gu9;/r=qMt:mb%%G5$FjcsdUbn".i6X#Km]hZSOE(i@A:'C!]#YQVN-&c&_nu&jGD2gg2I,X>Af/QL5%8n)7XSCb0W0Z8*)+\&9B^bTmkJ.5_$RWeH_2p2XZM9@ot$UX[_53q*&3VO&J)5%86Y$AZWkI@N:&FKcs%p6WMQCcUFbh8)(40P\*ZA"bb8R+Uti6J;Fdmlr'!#08-$\rUW.S*`0l$l7lOkfeCu3KUG37:dV;6?`SiLnX36m\Ar>kEqpnE4+,0ZZ3>mbtc]/Ye]ERO8`($8oE>X;g2g1^GaWe,."f\E*6Km3M;^8S1^,jb5M4kL$muHb\#!ZDs2A'bm;94ZWTnMuE=%!9!G)bJEiSMujhEeJoj\[m_?-@s8c*.C1268G+TV1+An"dq!66BOQ/uWk*6"Zr]hpdqsAYX6mH:4q,p%/mN/clgm6_*Vk"=D&P?A)R&GV[-;l5h5dH^[E8!6^O+q)a!Ngs^]Q]QTYaG>BGrFu +endstream +endobj +6 0 obj +<< /Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 612 792 ] +/Resources 3 0 R +/Contents 5 0 R +/Annots 7 0 R +>> +endobj +7 0 obj +[ +8 0 R +10 0 R +12 0 R +14 0 R +16 0 R +18 0 R +20 0 R +22 0 R +24 0 R +26 0 R +28 0 R +30 0 R +32 0 R +34 0 R +36 0 R +38 0 R +40 0 R +42 0 R +] +endobj +8 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 144.0 336.111 193.44 326.111 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A 9 0 R +/H /I +>> +endobj +10 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 144.0 325.111 189.82 315.111 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A 11 0 R +/H /I +>> +endobj +12 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 144.0 314.111 204.55 304.111 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A 13 0 R +/H /I +>> +endobj +14 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 144.0 303.111 256.22 293.111 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A 15 0 R +/H /I +>> +endobj +16 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 144.0 292.111 312.05 282.111 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A 17 0 R +/H /I +>> +endobj +18 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 144.0 281.111 241.21 271.111 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A 19 0 R +/H /I +>> +endobj +20 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 144.0 270.111 213.72 260.111 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A 21 0 R +/H /I +>> +endobj +22 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 144.0 259.111 228.72 249.111 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A 23 0 R +/H /I +>> +endobj +24 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 144.0 248.111 230.94 238.111 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A 25 0 R +/H /I +>> +endobj +26 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 144.0 237.111 206.23 227.111 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A 27 0 R +/H /I +>> +endobj +28 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 144.0 226.111 229.83 216.111 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A 29 0 R +/H /I +>> +endobj +30 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 144.0 215.111 268.7 205.111 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A 31 0 R +/H /I +>> +endobj +32 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 144.0 204.111 257.04 194.111 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A 33 0 R +/H /I +>> +endobj +34 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 144.0 193.111 287.86 183.111 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A 35 0 R +/H /I +>> +endobj +36 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 144.0 182.111 286.21 172.111 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A 37 0 R +/H /I +>> +endobj +38 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 144.0 171.111 339.25 161.111 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A 39 0 R +/H /I +>> +endobj +40 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 144.0 160.111 318.98 150.111 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A 41 0 R +/H /I +>> +endobj +42 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 144.0 149.111 231.76 139.111 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A 43 0 R +/H /I +>> +endobj +44 0 obj +<< /Length 1970 /Filter [ /ASCII85Decode /FlateDecode ] + >> +stream +Gat=,=c_>r%"@)@iO:/L`pnKL/_:&.,f(7`!X7:ABPbqR$=B([4oTk@OWIA+4)'QU(?B+bQUm"&pP5fY2lRStIc)5A=+PRF'mbH1$b\5c1meN1+6MFRp&93T.bTmCC[Xt;`dSL&60,^g0&&(*cX!K=g*;q:et62rBUCjRZ5n?05Ff\bT:/_4"`%09AcElf^08^P=?A?TFKJcGeUf"b7J5C3b<,X-$:\'NQXH>\Y#;"_As:Kf[l:Q."b%M*F!R*3AN'##69g9!fQc."g"2G@I+`7q@&5U'r$"^?k@\d^C1kkf4S(@Gq.OJSaUa\R=EctaF!:u9NfqLs,%M0\b<%#]H])4C,>^$F,<;gtL22]H)KKDnY251JPZj\_eqmgMQE@Du&XI!2GcuSro%=1]VO6g=97Burk(cB>ITR8R9JdtsHgE+k=Y'S]VNL4U<"+-#;V85td%%r\Xj6![NqhME,!+"t90\oA1k+o'>"$rlgTG:gRa:t%=mj>_$I7F/7j+`9b?+Xi^hU:Bh;,1@e9s4!-,?0#(UN<#4[8>'Q@NK56"R\7)dp;4j$:,H[&4!7)rI?Y68=RN#]qkrdkK@JH&pq:D`NOOr+d=Y[c]gWC-oViQH)!;CLs;hDhq)GuRnlk89ZK>+-C0.HtfRmQ5LA[Kn^hXV3ei2*!;C1nA4A`m2C'q29lVD77t>J8P9p3`RP`$hQgfWHkO#_dki3GO?PeZMhFM?]pW-r6Hc`op.:b4a0TfB(JojgKl7A\h!I&P;]dG4)u'c,+fp1G+Abf*8ZAaTcL,fGt;[+lkrH>\r;ljeq11PAF>FXedJZ;>Z&l)EkXRIf\Ha:#=XgB)1-Z]&q+"bP*.A&V'C_X"L7PlNNX?lVp91%H1n=Yn]oa#3@,Ib&J[LZUmFMg?jPEDa2sgp0db=,c^&1/*9LC9rV/n?;UW_\>iXRc"`1qPj8u)8'H'Dq?7ZQ\j`KtH<>V9O@M`ZPm(VaoFUW4Y&A;KK>o#o*Rsd0gnWrK?R;#r`((7;dH8YnLcA1=o[9G:t*4EBVooVn0Ia'=2/(T5?Q`5l'GhY +endstream +endobj +45 0 obj +<< /Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 612 792 ] +/Resources 3 0 R +/Contents 44 0 R +/Annots 46 0 R +>> +endobj +46 0 obj +[ +47 0 R +48 0 R +49 0 R +50 0 R +51 0 R +52 0 R +53 0 R +54 0 R +55 0 R +56 0 R +57 0 R +] +endobj +47 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 384.46 600.674 473.05 590.674 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A << /URI (http://www.xmlsoft.org/) +/S /URI >> +/H /I +>> +endobj +48 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 253.694 589.674 331.744 579.674 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A << /URI (http://xmlsoft.org/html/libxml-lib.html) +/S /URI >> +/H /I +>> +endobj +49 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 144.0 251.348 179.0 241.348 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A << /URI (http://xmlsoft.org/html/libxml-tree.html#XMLCHAR) +/S /URI >> +/H /I +>> +endobj +50 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 352.782 207.348 469.722 197.348 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A << /URI (http://www.xmlsoft.org/encoding.html) +/S /URI >> +/H /I +>> +endobj +51 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 264.0 196.348 282.88 186.348 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A << /URI (http://www.xmlsoft.org/encoding.html) +/S /URI >> +/H /I +>> +endobj +52 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 144.0 175.348 176.22 165.348 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A << /URI (http://xmlsoft.org/html/libxml-tree.html#XMLDOC) +/S /URI >> +/H /I +>> +endobj +53 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 283.44 164.348 327.33 154.348 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A << /URI (http://xmlsoft.org/html/libxml-tree.html#XMLDOCPTR) +/S /URI >> +/H /I +>> +endobj +54 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 144.0 143.348 192.89 133.348 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A << /URI (http://xmlsoft.org/html/libxml-tree.html#XMLNODEPTR) +/S /URI >> +/H /I +>> +endobj +55 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 212.33 143.348 231.22 133.348 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A << /URI (http://xmlsoft.org/html/libxml-tree.html#XMLNODE) +/S /URI >> +/H /I +>> +endobj +56 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 144.0 132.348 165.66 122.348 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A << /URI (http://xmlsoft.org/html/libxml-tree.html#XMLNODE) +/S /URI >> +/H /I +>> +endobj +57 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 424.512 143.348 473.402 133.348 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A << /URI (http://xmlsoft.org/html/libxml-tree.html#XMLNODEPTR) +/S /URI >> +/H /I +>> +endobj +58 0 obj +<< /Length 2255 /Filter [ /ASCII85Decode /FlateDecode ] + >> +stream +Gat$:CN%rcn9]V)f)7lYMf=BOaGonl2NeL#u91a,^@K1brQZuE0=@IajGN?FZ4NajnBA_M>$dU!$+"`eJ1M:]Ojt7YKEu/OYS42f>`:;^:<_db'E9`C7D86c>iM!V?%pq(j]8(TmjVJ@/hO"p#j@3$Cj)4QYlBcgmo5=D]d<8.JRsJY8>L4/XA88AID>np@tONC8KI)bAGC3$m"!ol?'^:h?4-6L<"E#a5rAX2ShL+&_V,VqYEtn>0Fj43E%+&Ekf?Li<4)g$teS2lhk6>sg2KSjV/BMUnok;DSIBKIbUhDRqs.9s]Bp3=r"*W]mmU)T`L'&is2[VesK?nNlQW+Uahq#nVnFM-VB)JSoeo1rq&7<6]P/6JJ0/D,$3%QY<05[,$Bu^Ae]k+F4_O=l2g^<#2LmSAW:Dg?r!I#$;1'RT^-d;:$PNM0SfjJc!"cQZR?[dCCA/snB&hh'4#.+2d?roNc-)'@gK;cN$J7'="QakeCFunHn=1U3USH&9&$/,lqM)"Y'4*H3g)qD<)kXPS;]okLL`JWqWMRlE%3`n0@O6tXU$U;4<#MC&G$?d=.VcSME<\3sIPJl.7[CM!ZS1#ahHq'0`Oa78ENU_Er5@;9oP[b`k;X'n*oo_28P_AZ;d>63&TeE_^UH_:)bSM4b*=#7>H"2PAtLr:%D#t"8/uEm0)SGaq+.A4rZ_<:#;WB`mk28O`#XYBYHe(CXl;7[=Zmnf>CFp_Qk&EE2=-\/)BUG5CgE:$^ea!Vce4,h-eulDr1h9jd6+g2s43i!`Z.X^b9(aAqnjcQ@#)-c0&?Xo*d_B%7i[ujL\pI$,cZci6BNbt0l'I+Bi.ml?R'^Z`)<2DCRJKmENilV[D6AmL%9&fp=rSnhn:Er+E!o"Oe/%nf]X^Y]=[(V],=KW>)Qr9^.hEfHP[P0--L4i9JHYLN4q+nC%k"+67D6+u7]g3=L*SSkBV;5s=(V;;;%S/O/rCA\tC;K[g]Og43!D]U)&(IYu4,t5,Q"4p=_kW]Kf37`!Q/i=UI(]S\AY3NrUr9n?lPpei&m6CoL!F`f1+bJ$84s'f0tU@=jQIjTU("RUJle@h7c`d.fuADeA4tVEWS[5H-"W0_a^lq5DI(Z2_DWJIGhSjqc(nY"rdP.V*G7.LOF'0]?;ZgSME\LiNLcOJ+n?Na8g7&Y@WgLo39FL'PQ9aFr##"lo'oaIMH0MX/E.nHkg4Ja0!6:N$p!WhL5inlikLtQKUXVR8#9Lh=1YEJL(oo\t'U@@iK;.=#g=V3+>Aj=?H/_SNohk*67B;HjI&#_:l42+^]%"B)M<=5DK%T79CZ_=P(W3NMU6`#oPccelH<4)5@*IX4oI:AR5OYQ=li?mjlg"1":[Y00-:\@)_A>F8"AAX!RU?Ocn3'i?Sh%Z1?T8k[CjJ%Hk6[#]Abe7DpY5@:0R%J)<$X+,\`)9`~> +endstream +endobj +59 0 obj +<< /Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 612 792 ] +/Resources 3 0 R +/Contents 58 0 R +/Annots 60 0 R +>> +endobj +60 0 obj +[ +61 0 R +62 0 R +] +endobj +61 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 249.81 674.674 414.8 664.674 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A 31 0 R +/H /I +>> +endobj +62 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 361.83 222.18 395.71 212.18 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A << /URI (http://www.w3.org/TR/REC-xml#charencoding) +/S /URI >> +/H /I +>> +endobj +63 0 obj +<< /Length 2246 /Filter [ /ASCII85Decode /FlateDecode ] + >> +stream +Gau0ED/\/e&H88.i?T1`KZ:@;DYDi(6aa\!>qr$"?Y%npAuc0WfOT1=I4j@Nj)4aBQ+q3Pa3(aUU75?9EhY]l!(_GIo\i/[M"`c&W]oL@>WG])@66`>;!2H^Tuf2u+>EkCXSYS$Jd,P;E2f]]etge+?UA!d^F52EY@d6K^eU5Ao`BTU$H"J%tJ);S?DXeUbSelaNNpNBJ:qjS%,84V;iGk6&C/X=k"Ec0X*j/C,d`ch#rca=9PGr$LkQM(\i=)+LfKG,7,5mV3ukqfp2#4k[g+o[g^=T[UHJ0EXb!&7_2]id]cpVh;;n>n+oX=-TgO"HeIrM%V&aG9Ym?8^oG@Nk%=e4V_YOgd_#ac6BF,E@*'](*M^fsd4%&6;Ho*r8-JYbRJc!Rr?YK0@8i]-$F+&X!">e:>m3Q243PU53n6(SnKNAVS]:$7i93u=TieI'rtbdbTmc6Skbif(hQsKIh3RO-bUDoE'B:EbR#3YQp`RO"5j0%IfboC=\KHS'!Pks:fn&tHtHb&d[6ii,[f4aK-WW*YbPsnK`Suho`#&;[P_2iGNd@@W-FaZ(iMbV#?.=*)?XIU0Kbd_>Dh$$dfO'+X8CHRDEPulqFjCEAYaJV#F*BC4U[/%os/M]h`1EbRcUh;7g`\I;3`m.H.m1e(U]LN,P.<5>*P+>9]9/-&eb4'>g($8@JE,4OBmN$\u[*!=YS#46d`GNnr*CJK6<2jMm^m*B$8jq*qg5qR$LQ?#-q-foc\)T7G;Uo<`^Vdra4PYor"Nb/t3r*ki*!SV^2ZK$)$+&4@u&XOYemi9M?Aj3AuPS3;^gfV$47i(4oA-`?*'oFB!ogXt:2?o<-;^ckYV(R@!(pI\H^S+=*bkTe^Y31&$6j,=d7p.ffdV;nY"lp3Yb0UujM)F"[M+DKmK+2Ot^LO>)]O.5?Rm8?]gr^%Z;IDLZji1m;=uketLoR=IZQpk@B:]K@8(&(g$k?8KB7>E%K_AXend`36oJc5)8Do0cObfGJL;Md\*+:U;M%e5gK8VjQ4PaL;o]49r5f;Bfcs=I>R;I(u3bPc0]'j%aO$dLm"A4"se*j%-VW,kPmgToCI:i7pJ_F((hrse=HpsIi@ee1K[Br0lq!dSBrQ(8#g:+6N`R*\#939.tKt9rlACg=OC8VEc8jEVQ3f0aicZH-[4CpkX"l'pke7rA*TO?jHJ.#MFgW'`J!2Rk=a"k+@9:I`]'"7BMU;8/]l\"3aNSo%"bgW5lGYe)r0/(d?@=ZrXohAR73#)Y-6q.8-I0Of'7Z4lVE7sDnnK9Q&.&8FpPttORU@,_l?"4F2!]:RGLkj@1?YAcGB5*9[IcG_`i]cg7[hiI_1SBC/McQI/-s=8@5`p8@_-a=IcI$)hi$FI$&9dD8 +endstream +endobj +64 0 obj +<< /Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 612 792 ] +/Resources 3 0 R +/Contents 63 0 R +/Annots 65 0 R +>> +endobj +65 0 obj +[ +66 0 R +67 0 R +] +endobj +66 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 186.56 514.4 240.56 504.4 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A << /URI (http://xmlsoft.org/html/libxml-parser.html#XMLSTRCMP) +/S /URI >> +/H /I +>> +endobj +67 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 262.18 229.78 382.18 219.78 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A << /URI (http://xmlsoft.org/html/libxml-tree.html#XMLNODELISTGETSTRING) +/S /URI >> +/H /I +>> +endobj +68 0 obj +<< /Length 2448 /Filter [ /ASCII85Decode /FlateDecode ] + >> +stream +Gat^W'uNY0_Xf9KZ+sN+]f\Y0XhlN`OXShJ0_co2^'JFQL?"Y%SXR1@]`YPL]N6qYe(mO2n-Z(TS>Q&1"=J?.2uMn!F9ISR)9h0'@QhZA2r5\uol7c6@ODf.H$"aZ^nd*TPs4n%.1-b\!IloaWu8OPh*54L,b>X$9YN+%PJ5))^OljfW,u+S$c9T(A[.3GZg.=O_J#<>O:H7=S]&cT)hTd=]/Jc1fE`g+`q^p$ReCb0I0aX9GV48Z&mj4JT=WFuC1C=Z'ad&aEstoX%'i'X,=8^f93::pC)9og[0ZJf+-+kWH-0'[nm7Cm-U>l+aLEu.5n6Gh9Y/L^Y!BO%f7D'VMp&d2+Etg#SN<[44`Del8(gVW"&f;/C0@N??3!7V3o??'8&33a/QAs)Qh4#Y[INpQ]=lcL3:$A'#?CoI.#2,UZ]G8SkCVa^7+N*q['QpWCjB3.oJp.=0C/`0o"'nP7F=P=Pp0Wo[7`L_t.0QVS+N1j(r0(cEKLH@i_qUtfgg]-*Jj@JiiDFZAs4NABV72_)m7lck-C;U*`&KpX!@8N)Til]s7C,FY%.BgeO>K^)N![Um]LY>9&)EFo7fPNR),'Q<9"Q[)U14`7fBj2RuG8J7AJ8\\EUIN1VlE2g44VcX6WG;bkEZW:Om=/(':s&[4Q>$g-c7A!Wh;nUtni\/\Wpdct?R*)+1eYYlFf.o6OG@63'I7/02kX'pG&@H1]ju\nT,eg=V!#;"2.*rb]h4^0dck22HQ7jY4YFIj(`#bd;?9cZ8`PWZPN0-\j8u`$dWHAtfHX;DNVX?aVkGPK(\MeFW8VRUe6r0oR?^Y3C-US'%*,4'Xol)QZ.6hiMOH/UJXW@or4nUJ8#`r>KbMr=V'Hb=+l:3IpI1[F:Q8MR6D_9n[2+Ws*CB`4.0NO8B6H*Rs">%I7+pp-l,)ZY34E39q@l]IV7M?Kj1"#+b]gpRV%%qatk)\!BNJ=Q(V*g<,Qp+MrS_l%0[)!EUc,Ilh)dAaW,Yk3tZ.[.J+d"E+Ah#=Gp:dnQBpW2[V>iC%LV"&sIFdF+e5Whj,;_T(-/IP_H`oBZP:3JKt$)r8YaT_rOs$gQpBA!SU<3RVE0e/;qN-\^KoBAajC]>'%VZD40K)Vo1qklK/c=edgY6chpU]L/C8:mr"H3qTFBi*mGorIE6OE4MAM=j1nN$]#US0'U*L[[i].Z!O;P+iX'l'eb9'A%t4G/D0Fe.c@?W8]uN7[HPWM\hHKo,@]Pd(l_oIP%.r;#R_'?lqV0&Hucn:)5f=%HZaVnY2b7^Z@mWnQI5p"9TGYGD(T1)-q_iZT15JQ9lo]dHcJ4`=^PX/9IH+UOH',T5Mb(^1WRa>3T&E\d:i~> +endstream +endobj +69 0 obj +<< /Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 612 792 ] +/Resources 3 0 R +/Contents 68 0 R +/Annots 70 0 R +>> +endobj +70 0 obj +[ +71 0 R +72 0 R +73 0 R +] +endobj +71 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 363.98 698.0 381.19 688.0 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A << /URI (http://xmlsoft.org/html/libxml-xpath.html) +/S /URI >> +/H /I +>> +endobj +72 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 263.38 597.866 341.98 587.866 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A << /URI (http://www.w3.org/TR/xpath) +/S /URI >> +/H /I +>> +endobj +73 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 270.38 586.866 424.81 576.866 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A 33 0 R +/H /I +>> +endobj +74 0 obj +<< /Length 2451 /Filter [ /ASCII85Decode /FlateDecode ] + >> +stream +Gasar99\,?&\cSp;#.ERe/0A(k2nMWXK.k63=fn@.i%6_Tcf72M9pjMjf)5YHU)b,h%2$\Q7i+ndHGI1q>n:chYltM[ZRg#2V\19Yk`;e2hCqLND)^_9T)6Y.,A]8Rt&-NW&s\Nk22Zq?`[54OTA!Y8S"4pI#0djP)3Z>\iZ,sTaU`q)@"KaDS!FT_?JWUl;/RH"<5$a+8,VfPX!C$Ui)#IWp5UnP;s`GAC=X"'IMXs`mid:Tkn'iC'LkXnGfe]Cu\MVY!/@-12l%/-Z=9P@Nu0klY+@3DjA"6hGd@;V`,'L;ehIl4Xg:O>'Y/4d)V2i!d1;JV%=*mSLMV9%_6p-OYlRi*'lXH$_uW[2a:RqG'l2*g1S!bfaj8"D]I3A/IDI7L5`e6gnLcXE1Q3gZ]aD>0)-p_X-tO'kMC9-H6tGIm(e60+9TNkhJR5/DOf_\;Hs)YVLn?eM?n(j/3il+Hc)2gjKQX.%3bpm'nDq.6ZG,\/[e8knrl#+tD.JIO[_bDO+DVb:-Xq0[>6.`9!bh@RI9,Dbqd)m4UJ&8q!HnoR'qq_\bIgs0q\HSit'dGa)5.I2_]o,A8;%H(7@C%GRgHi8hhFP,Ds^-#MXW'7KNBLPaZ8.72(3*Y0S5Ss+Ln[RpsRS@*pm)?UP')2']J'paRlLmd\I+Jmt.$F#J%g4!"B@ZA6DoDJ9IYo014=Z)BLiUh]+'i%MX2\FhPODTbr7QeZ8J.JE(F)omVj"DnB@V7o57L+u/YQ]2\K=l%T^OWN;$!H,l?]pe@Y.Q)dG0sF6i=:YI")%]FSrJJrmhrrg2M.0a:@uYpX'pWonJI)%OM#G#<^n9^F.lf-Z[fXZ+XZs%B1rH6oe$X`@sD#[%k5`,*8-C("llc/[TChY0apeTqX-Bfst6]3WSkOc?p`E5`>S(1'jud28EOYW)//EEi[:(n=UG/&3&Vpme`DH^4De?0.ia8p"Ms-L_R]1[.'=p8k9??Rlns*hV'D65GD+oPCXa%!aoWfE12-5V*t^W/.>`ItdY57BqZHjTC$KJ`oq="M1c3M5c>J!4)4Oj'7D:DZCrS,NNGh-ZRq"$MUos9IME-aU:7ktce_UEdpKYq![CX[G0D'lU#luaWj<+8+:>dT(%!n#YM/.KL[aaMT*5;N4WZ>HomM"=EuO4Ds[:3Uj",jK9d`hhK#jKo&l1HhFA"10jInOua:6kTBi*`m2H7[6el!edoBk,[2%mSpkZj)iZLg/cGQYYddK+G6(*gD`ct('-"@Z>J_@DU[tK"<\'^G<0#<2\H0V0q]L]=bo@4\)S/:Y*@,\+Q^aQA-6dM^*Y\T%H3+b_MKP6=GIror,rWc\urD!MCn*U@t)D=stWd*g;6#`\^>a;:M$Wl^*+6-\-(-8@u;kj-`jX$em[0fZmdsEc15Y03;]$*Y$ErD!"QAYF-gMgp`&C#fbEeB"9=Q\YLAZCH4#P_e&6DYRS-[Me1u#(f(^gLqVA"ShhLe#=!b.!XA9)O-@$"Lsmk#m7XQl@)Ilh,s(ArJWdWe7>@WQu#O/[KVH$+TOb.EGl@Wr.S2QeJl4%"48C9-^`lK`US@it7[TbFp05Si&l;.Dp70if4#V&HMgQ#Fr7dS)dH"LnU,O*&_8?-0(L!N'l:'9)$11?,[a;ShNt%e++a]:/s3A>]kOElQo=j]^-L#T$M0)''pj?#*a8*/[SZ:SlN8r^baQu;VGstii2\od]Wb-%"!(LdW6P>0mrr]ZFG+Ln;96\9Zp?hWb,fdrr_0@G\I~> +endstream +endobj +75 0 obj +<< /Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 612 792 ] +/Resources 3 0 R +/Contents 74 0 R +/Annots 76 0 R +>> +endobj +76 0 obj +[ +77 0 R +78 0 R +79 0 R +80 0 R +] +endobj +77 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 272.33 574.54 455.37 564.54 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A 35 0 R +/H /I +>> +endobj +78 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 186.348 433.66 276.348 423.66 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A << /URI (http://xmlsoft.org/html/libxml-tree.html#XMLNEWTEXTCHILD) +/S /URI >> +/H /I +>> +endobj +79 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 324.744 220.754 470.014 210.754 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A 37 0 R +/H /I +>> +endobj +80 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 144.0 209.754 208.16 199.754 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A 37 0 R +/H /I +>> +endobj +81 0 obj +<< /Length 2156 /Filter [ /ASCII85Decode /FlateDecode ] + >> +stream +GatU4=`<(R&:XAW:]hF%()p9JiLg?p3H,S?BtEP%[h"@^o!4S#NC:_qMZ3>[77oAa9'ZJ2!J<2fI,pfffpA27+"pR9F_o+P'PEGKF66X9r4/,_HGGKtIhGqS46t5aLV*+\m+?YfYH2B!UL_Y#G$b:=q9&QWgAD"[i;bb9"b?^^4Zc=pct:T(_%1oTYg.%88>JX.+Jm+LE1+f=7TbGIDV/`eT=BEL/eCJs1#CiVP$Y'.mKf)?D4aoRC@\L/,VP:m-_KrmbAYK'K&AGjNu(4U[O+HU65kh1AdmH\#?J,l<[m'S8RNoHVpr$BP/MOVBS=`';1C`?3VQXq`q->?Eq\]fG!&9Ofm#eM)ig;(k/pqh)=4%VmS-BU!gI_qpR4EeJJ&+\8BQTP,L4jVl/NV)naGOGh5Uh0e2=d?<@P>0f^o>_RQ;o]C'6)"'nKr>,&PY#%.NYHeHMZ_MKR"-[5esp%eaN&2TGqTRHgC7e#0iOX;BHhE;CL*&B#l6`goi_Su:Z)k':'g7,IM[PjKgl`Pa>:q,KcEr@C]u3<3mhT$3!`h^VW)"2567"61``P%T_@Dhn^BdsD0U2u;CCgY@8\gbLf!]:BWGBPC!UBo#kb$LrtWCMa[JBZf7[#Q:gNZ2.t0NiHn;+C_98Rj-*Xn*?jmeg!6=n?;c&AV57Gejf[n#<339o!1R(gjSSSZm4]+Pk_&df#`VD#O8Vh=*L4B(b54n]6-7UBu-`p?9<6]o7/JiZWi]FtepGHIP*%g.]NX*@o%(b)rS2dY"GZb':M&O`aZdc$N2Ro;j+UhQs+kM'Tmf=Y?[)g"^qqOI^UXp3ljX26T,)]49t$+R'e!'Cpn-k1&_2IHq1('$Y,m?\!IJAQtHkj^>S+,[VN$XP31LjLiIK)BFO(SWQnZeRRSQ9W6_I3V?ldFKW[o!56g_&jI9"LR;[L:oe);Ek=`(P-FdVsg+6(CE?%d-RnK?<@qHt=Tc(2DZ@pUq(32)l#d\IE&:6r=$7;Y.'.I+1OXhp4>YI&UWSnGnS]KFSVFk;SV%h/colS3/ElIQ02bZd15,g!3(<'mZa4P+uA.-opVha"G\;[Ou_]^>mmQ3kj2TP99YHpI'&sEH!1LEGC*R('l&C*OG^&i4F7rq2l[$ZhM:j(V1r\>Y"Cm%Q`;k:FC&DgU8UXs-Xqc[I1aJfkIW'TY/uk"QB[MUS#lU5r7Lg_9a@.k.5cp5PqtnKiS_K\gBWAN8_E+[_:NunDoiZogef7OTY6/ZE0haWh..]2"Z,.GE_ZL]KQ9)me=>po=Mn@hm\3JIQ]_t<*a-lVOeW=]-?jqG,>1uY;A=oG[[?7#G"_R"Q)*K`ic>j,8"nCXSLhPDjaSBdrbNR`[)Ud#4P/P,ReX8e;(u9L5JoG4,F=JpqGF!X2TX*JeuFM*+=Y/er4G^"LPoFkS3o%pih1F%u(J+-2]7V6Pa.VK:*od36#ccZ,?$)!Gth@=%?@u(4-P(gEfJ*L;i)j/nJYr:rd21V-a)h@ajIMi")]=kt'84)S%&-9*-ro$:^7tm[FfJ09:DkXg"f17Ub?+ooe'C!qh2N)/DpTU5(8aYhhlg2J8ZT:ZG`Da6L]A$gItu*E^k9.aEK)Hat +endstream +endobj +82 0 obj +<< /Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 612 792 ] +/Resources 3 0 R +/Contents 81 0 R +/Annots 83 0 R +>> +endobj +83 0 obj +[ +84 0 R +85 0 R +86 0 R +87 0 R +] +endobj +84 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 204.89 545.98 279.89 535.98 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A << /URI (http://xmlsoft.org/html/libxml-tree.html#XMLNEWTEXTCHILD) +/S /URI >> +/H /I +>> +endobj +85 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 338.334 437.654 471.934 427.654 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A 39 0 R +/H /I +>> +endobj +86 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 144.0 426.654 242.88 416.654 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A 39 0 R +/H /I +>> +endobj +87 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 246.998 175.034 306.998 165.034 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A << /URI (http://xmlsoft.org/html/libxml-tree.html#XMLGETPROP) +/S /URI >> +/H /I +>> +endobj +88 0 obj +<< /Length 3062 /Filter [ /ASCII85Decode /FlateDecode ] + >> +stream +Gat=.D/\LD&cV3*Z,h^W?#-KeIn@ugaYcPj8C84+iX41(5k!--,$J\2;>.Q8^*I?i)9Q.;.IIS9a5h2O3#p4Wn%7u+n#s&l)Fme.DROa*n`Kfpfu3#[Z>%H0hGeJ1`EBP#*]O+Fs*_BBpStk*YdmB,.VbunX>]N3p>(?@7b)])2ZMWMs(k(=Rj9nMNBf-Ja`Bh6%ZnRZK[#*5UHV(N*g%ECLd-=Z>8jC4:"Xd`7RABsnA\mOqLo#gm\G])`CqZA2kJ\<&RI7G-%%caI9)@22KWDu$$Uck3MfXOrU#JD`]+4S@INT7rVGZ8NQkTJX/\s[h0Ar;@M=nh%.b)q%Z($8UC_Op0LGG8rH0%hN=H,QKG#;-.>$,KJ\l82YSCrRN6![?e>*'6s"R?HZBb!3>d=1,HNbjB-%otsYjL^8LX!)4]V.3OFF)#Mb`KMbAFS.pp/UY)g+EkEZ0S9>-(@\b^_%fg\BY1=%U1G[<^cIV9KQ:[=]ELb:Cecr8*_!!!9c68%"6&&Qdf#t;dpfQi&Ve7+ZR!jC@5'E.+%3U+RQ+FQ^,spj`cOR5ZsunQ+#b<)=sB2;c\t:5drmt$So8AUaMd"-86MVphQa=tA%"cf#h9:RRLo_$%:c7]&2m67)W4!#gKg&>!9!W;Qpc9KOVJ)HVG*fI>>('-\+n/5H$_Xk/0VIdb(06+?2U@NQr'$l1Knk@0CdAIjF(b/L(+4)V,R6OgC3]OI^PbT@nDimj=L=W,XkhqE^/c.rHN/(mPeT8D**'g0I$kG7]DZBm:PP`j6,r7l]@5j13Ya&kXCW7GjYU5fSZuoQsmj;2.,^>8cHFL_F[,E'b6oT+B'b2ICQ.&B=]@Zm"$qa'7^@`jtAh@6=t/?g'ZMNfai]3*2Oa.4]FVV1+XAhX*)@9Fr1>VKOl\k,L+_Yh`Z^ES2"pkbD^+*TKX.Mq1t[JF=j!%&RFLEl2nJ`G8'nXIMRH:ic90+f%bjM8"=gU*&pA,oX4XrCMlT:U%Tlk*Di!W[q5TR3&j/f(>D*l`N"luAPpDgS]ms?Y5:j;4jois'^e0d9>952;TVuH5KXi:L$!-i&P>\*8j%d#^/35S<4N2a:dKD,Zh8>^2!B>pr:@UHMSU@&/@/RN?5-e!^M>E\-T-13UJ'RG[tNIq]S8N\nl"prl^1"-pVeCPoe^!Q@rjDNCX^PFjk*!"35#R245@$\"'!SV>1rciW^2<_6qN/LVX4(QBHnP8:^n=?j<_U[l*I2XBShl's<#KqEBT%1rqf+u+*'WHGj^'OTu&RjP!;%M,NZUob'UC*pfqqYf?[S*?r0l66+56fQD:U?'hje?+T"&\CX<:Odcc!=ES(.FHTC2F^"C,5r.OQ")dK!tl/2<'D*f-)Bt3=j5E.R9%R^9T7og?#DbIO:OscXcI,0DE8\pTEe/jTAsm1mA-u?)\M6W.;[R`sKU&YjXUtU9=BE08?N^ZQYbiM0WX;iRpZ(aS=pVgN)E:RIW5YCDIDo8T#1@d,OFd_AA[R-K:XL;B<406j`gL*#=H#qH.:&a5o)M[=i5Nbn(OLN@D/>)J0je'%@=UZFHL]GJC\fhoi20IX?)aq?o#B>gDk>5)ZVOb+b[?[ekkPE%X3Yn1Wb9n?:dA/>&;9Ms@*KWQf!$e$cNaK4RP+F>%!'GP9HsFVuKJ'kf\<\7[D#=$6j+q6*fah]f@n.Mi&<"l'FWbId9J*>A=L,7A%L-.f0OIl+:,5IDS,I()"$SCKYNb,>U-Gce`PQR2IMr\h$X<>#&a9Q&:aHr8iLWp=&H;0YO_^M+X9AW/4$j1]ek.V3#tnZ#Q,:kc"geUJn4q?IqqfXg>0K?6-Uln#[Bn@RbNj`uF^k"R6SOCqJhcY$hC5Q!FQ3[_pr]ME,oWtLGihWT/B7QW-dB;;-WnE.VEW@liO[#F#?UuLAC%Q/g-c46u92`R&(3;CR!dJeNdhTW1G=Z^*A?<=n]NheBAT$2@'YM6lpTH.*`F>(jt4crCCj>Yr_N)LahT]P]ccBcE0RBlTf[T"TabbnR>Dm4qt0Rj$n4NMJrq;5D#0BAb;Le0H2%rKS_L"q%"%L:FX._].JPV[T'ps-5e1HGsII^`_,he%/1EYQ,m@s!3j0842/.%^)-WpHgr3QcR7$#._!)hQJ-=p7YBLO?2XZ\].Kkj]SW)Q0JdKK?7p]!K6hN!l$cI'?/NOFY3b7%WlFQ%QD"/E"T8ic:i;a~> +endstream +endobj +89 0 obj +<< /Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 612 792 ] +/Resources 3 0 R +/Contents 88 0 R +/Annots 90 0 R +>> +endobj +90 0 obj +[ +91 0 R +] +endobj +91 0 obj +<< /Type /Annot +/Subtype /Link +/Rect [ 219.0 344.54 435.37 334.54 ] +/C [ 0 0 0 ] +/Border [ 0 0 0 ] +/A 41 0 R +/H /I +>> +endobj +92 0 obj +<< /Length 2048 /Filter [ /ASCII85Decode /FlateDecode ] + >> +stream +Gat=,D/\/e&H88.Tk5.-$o'>kHJR!`l\c!i6+8$*Vg0?uM7/,\P"SYDK44e.-^#*6>B5=hBZiL-T&[NTkdSaAq''d^Md0o*5'*:>)0T9[K,kqd^l5LQE9&QocJlZ$F(Y-OfVH%Li)OdsJ9,j@)(AH^0jUVUOqmIpKXJcU@\BUu(2P&CK"(b2(*sccC0I;+VZIt2^/tKbJji9`0?*):f=X@qVK$HRsWF##YU>hDO#-X$ZQ>0mbt,f=_!Y6#1M:Q$=A@Lo".+lblXl(a1Pg/La0([KVlj-2".T]&;]U[V9r)c=Sp2@?_1n.`B3o#skAJZ!,J\Rr6$P!@TQMQ[Yi\`IEGG_b9oZs=Bf?ume::TV-V*R,^"a\9O7,_e27Ap?'klu7Zo%%&HRM3qhq=MRr%dT)_tR&c$$"qi.J.F"U:#T,28X6bJc$HZ?_M\VV?is-l3sQ-qQPE\(5jbok/+0+[\4$DhX6h8BU\8]WTeJ,,6pC>Up-4YcVNCQ"8-0J;/9,RHPlb&O[$Ip(F&o`[BFKc^l=H0a@aD57"%9g?oX]1M0t7ceY,P+5<=trle/De_)a^r=DeMSO3mjI?R;Rs>X_W(s5A=Vj:=2O,g)kXU68G1j;f]$HWG&e\na.cOVOBb"&(Qn7EN%Ld.])&:IoOBiYEKKkmS8:ZtZC2M24&YSiUihY#.d&7/\NonBR;rc)QRh&iN$>nSAY(,W3k`Q79jM?S2KPh@"-RU`lPaMGR&&)1;MaQR0dQTf6P<.^I_91nV(jK@5W>)[U6Shc7;Ra,te:;oUDN1:(m`Ul]`nV86mc@H=4),`%TO]uZ9e/b^V$nKAm$FC`I6XX,*OQ!Pm5^U7:h?+Sc`@g:N]3YNaSM:S_H@>%1eYla[rNU/Kq.r8)SdHbk4h"*H`UIF+YeVnK$hsd't*Gl4r`pLeLAfPSr;6B/Zc#B#eB#mu8oUFk*86\C%lYS70o.;-n&ebM."+6;pPqTG"GMK_^9=0*VES82q]4_"nHk'X+3pd4,Bje&61/sSfD2\hjUjY3ceu\m9lm7EHF)Ca\Q^*$>g)Q6LjoBsI#o?"Jpj#1HS+(CoMQ.Sac0*g)b8M$!AJD7f5:eRcU[@<)+bG_"UEnsH+q'"9H^U@k(@l5GB[qkf35n4#5U7r?AnQO:PNL3Ye+gE5c!E.eEsCZ"/V.s2;1eBlU"fH:'l-.q385kF%/\qWeRrE.36c$G2,S\9h>V"+f[7o2J8!Mh_7(q44IPeNqj.*,L#BX33kSWrkUS+FVc6JBZWGMr'8^1r/k1C/pfDLp1G'1Q7D;kY,/68llZ-?5IYkbq8-hrpON(?pB6oj<[r06)u&&/I]t>31<_imL/Bt^V)]Gm=(*W_@i]&@Go&>'UIC7^eE=O\Dcq9aGee`WWg +endstream +endobj +93 0 obj +<< /Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 612 792 ] +/Resources 3 0 R +/Contents 92 0 R +>> +endobj +94 0 obj +<< /Length 1148 /Filter [ /ASCII85Decode /FlateDecode ] + >> +stream +Gatm:>AMtc&:XAW:f7XD8LJjlD/Tr%P/8B,SCWB\Pm>iG-N[Fk=)sd,c@8'jP&*^ueo%/aJp'1$Ml2.!baf&08=$@S283c\,$][Y?I@usVs9a8_62%o;Dn(@[0q>.ZI3,--WmC4:_>mj,Q2p![Q-HXD!1bQq]2WjAU6FL4cXDEl,H0;DPM9O^qZ(B3^;(U:4q?WW7U?ltd_o=j9+B7abk]1Mq%haO^fKf>kYQSEc)m!k0I,NbDhWs`BSsPeCG.CUTq?k#*##l$HT^Q?f!68O2Oo_I%f_'8b55'e9VH_0bLnD@[E[3b>GK%QK_RP!S2!k<&G2K3+ERl8)p5),ba,::YifpEg!=suk#kRT$MZgCh1KN>n!0hP$2[8`oq;-N(#A]l843_lYDgjGq.`[7!p$Cn/O:*_[9\;f4G/TpU;FA\2ad\ASc64amQ*j^-A'`jl`3tL.cUQ;MIK\emF&I8mehqH=98fbI^p\@2`%b%^Mq@+Yt_#RB#47Jr=61NMqmsM?Z+lo^3=Yo&2.+&=uLia[ +endstream +endobj +95 0 obj +<< /Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 612 792 ] +/Resources 3 0 R +/Contents 94 0 R +>> +endobj +96 0 obj +<< /Length 1343 /Filter [ /ASCII85Decode /FlateDecode ] + >> +stream +GatU3>ArLj'Ro4H=@e]"929(]2c$p9LYX:WX!g]MXAgXoK*)5A(2R`TCnds0^#KL70k6*@8-GD,d?/8*X,='P%2+#T7KH6lgY_+CT0*QA^?t[2r*[b`g/`Xh"\`>0*TD4Vhf-"e!0D)GFYZ:\0H2%'_H#i&^1g6`V?ZZ21Yu9oRG4T4VGfX'G[%@$SF.Nb;QKL<3>W6#t^5!h&eSVfnrhO_ZU6$%-7B%tG[6s8[Ds>%:Ed-+J*/N.Aq.n7]cmj[K>nTW[b+GK_;C0G$Xq:%k(lV?4-Ve5QV7_uuJ+$[_AVI$ThO[])kS7/:cQcpB35t@ZtrPk_OA`-UO=12q(.+I.TDj?dq]PX0HQiSp^in-e_(T5s%&-GtpmQcNs9p3GsR)(V\Cacr,N$hM+/Kq_4266XPRQ*(E1ldg)S-nJ)6>"D+DP$U%C1)npoLcne!o_WHTU5-=/mP:6'j0$+pFWg0(7gaq1k,%49>6DA.]u8$mpmO!S#QR/M3r8`e4ZVK+4DK!MTo^bQjb3L'[:KW4#!j)&0MLA<j.ee:9PcCH[r.&c"i7aGK9m7Pl*bL0!=hs2Z;JhDi?iu5=f.g@iA][rMeYf`Q<.:1$>Q3Hj_.Y\"om_S/X%HKVa0rA9h;Kt[Z_(4j3R]rppClG(AKEruL/4-X$BBk1AYPo(_5p!U91E/c?Q*ZG+IBCk&jV-92Gm7\rR@-UBKZ$A>O_2%kn7BV9L[49J_9U;QoN-=i0(7FlM`AZ"^M.aUrqV#)4&*CmWhP1<'PnQ`:cBSC\0X.^irY"6hJ7t,DV-bJ\&?@^D-C9.T6@`Mt(f`d\arVlo?Y'!\UmGT1;f_/l"*8rZi\U]`**dgJpLo9n6qrJ^I]N%:6`@"2?6uSRg8U(`f,U3;5W(hQCR5gmoA=X-iWp#>MK6>RY_Rp,]^$#MOE*LV?o-0L]GP/4G+$Y!p6<4/();o@?+7H-;K'&1?(12tnRA)N:LcN>O('5hphg'NN]0*F#0)$!X[Q>#;3O:6cA)_Gq3s#:/;j!ReMc@%X,c-r,?6BL>oQ;DHik91egU-`TsIJ(mr5cMJR#1Jap>EX=MpV1!Ja"GPlZH086n00?&'*M$\FrtUflpL7M%u&M^%@dic@,s"CYgB5\u<+tT:S"dm6s\mKp1u`Gg`-O\s%[=RQlHCKfC1cUP=BuWSU`i!='8K<%J/,>jm?#&9Sr)YIR\t!l;u]H9JH"'PZag`7AL\N$RetRk58[RCF!E0Xj^TR.2.&gWCBhjtk*Hd+^BYdZX +endstream +endobj +99 0 obj +<< /Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 612 792 ] +/Resources 3 0 R +/Contents 98 0 R +>> +endobj +100 0 obj +<< /Length 1188 /Filter [ /ASCII85Decode /FlateDecode ] + >> +stream +Gat=+?#S1_'Re<2n.r-jY2In&jmfR*Zp97s.`Cb0-ense32sO$@a5'@OD@g=p`[XINq4i9U>Ro4sr%\I_6_BC^8nYuq4l>&U:)Wg9BA^^Q\/\&W:(q%Pb4@nujEB=<:`O/d7?`tl#dkQ?3A>T5ACSCIe4';hr%XSseO#.T*!@3rLn8ahpHc2&cdQend>O-)Oj2:]ZfK*G*5_7LZ%`KFn5Yp'k@\QpW,q^QsiXG4,1a]1jCU5SmBlN/V^gr[M9o]nLU3Hd@2DSe^?:al2[,B\Ju$^ss,9`F*1E],l35de,NoA4&07JWt=76Er&Dn<:k+Y4ksY^'BNXB]j?g[+0to^_f'FjKYgl!cR+:cZ!9[)TFcSCoDG2FU4&abbtXncGOsI:,$Kh?Zj/.fT\O0<+u`gotb2Qa=P'OE,?RhPn-9+kdn6YkRc>sB^#U8A6Ln=lMI%C>),l<@hT8#I#r/d@.rsuo[2=dTMe[J@aO8MDT=+_J#r>'$S5GG``["PO;e^c"u6BV;+4>e'^KMGh1H:CN`DR/;Pq6H&&>a<*Tc-E%okku_T)hF\dE]*+EiaH-CEtc\GR`#bNj"M-Tij=`)e)'BO1HuIX5lDWUM6IX%&WIb'iaV*/ZO@0C]`_nU>RT[29^`GJ@)i,$^d]Z6Y+6GZu+5YFa7?Nmca7a!WME)MG/:K#4UV]8p(#Xm3XHSg+k(j#?b66&341W.b#[WGYD54@3=D-k[/lj85~> +endstream +endobj +101 0 obj +<< /Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 612 792 ] +/Resources 3 0 R +/Contents 100 0 R +>> +endobj +102 0 obj +<< /Length 1250 /Filter [ /ASCII85Decode /FlateDecode ] + >> +stream +Gat%#>E@5m'RoMS#_Q/m&Y-*H4-!H/=pBkk)Bfk'04Z+jlZOI08_6[LB!p@m^*gDPK&$p:>/edtIQmbVl.a2XeIX)n,i-=r(?f+;YDWbAR@a'V3M0*8/o?6,m3rks<-u%4!(`bYj")W(u1O>B@5P7e`rRpj3aMDf1:Y,J#/Ks?/YBi(A:8Q6\\Lf'3dA4K4#jj[A?@:SL)u['@rG=b)YQSK90i?N*Tb@%ejQ>XBBRC"(!]d>,i[Qu43/#dY7C@e%J2G>(d91BU'c"E%\7#G@K**I]2S`Q%VuU0GUTbZh`Fc=2oj:/u4C)>+!J9$_@,UUtlS4`r.g)pW"QEOK?fF.1cV5;oo44mtLPn7-'m1NX%g>LHoIr587)DA8:bDgK-%Z-%4HkKo5r`W2;31^.0KRY\XFeEM=T6%6>R2?#V,VnA+dq=*7$s2V,DVX?Z$f,l0.82M:B]OLLDqLLR4[/`%PU2.U&+?mM[\GlJ>Q]<+7dhK?&b&sj^EX-K8'flDH'pTIZq@[6"nqo8'OQOp/qb"*d/.=hO5htJCat=u-ODViR?$pN/HbUclK\sC*A_4qZ)G&cdEP@,]Tn'MgrW33jcSj)A4*6#qH?o<=7(pgZ1Zm4GB-?%(W4Q<8f;:9uh!jtY[Xo2O,jG:O;W-g0,7;e95C\NT1k$-X^>tA*-CVUndP]rGm#FmCoV#~> +endstream +endobj +103 0 obj +<< /Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 612 792 ] +/Resources 3 0 R +/Contents 102 0 R +>> +endobj +104 0 obj +<< /Length 1203 /Filter [ /ASCII85Decode /FlateDecode ] + >> +stream +Gat%"gMYb8&:N/3YV$8RXutPk05[/5,^+dT.+2.A$B7BK<\a]5<0sC"-cj&8QDDHq]Tc\=0M#r]B?jag/LHh9O[f]hDm>lFD_n(._*@54LuCiGs+f$,CqWWn"VKp1O#-.X9+HQ^m^9'0SW=m:362T`Df,m$+mcF*C-;bbVY!nhIhkIqPpqo$KB6bIL]C%Q"W4g1._sN;b=DVs,I"69Y'T:`XL]mO_GQ$hGgtHb/?cHZR-@.ZSOt"inu&1J^&UAW"hbTO,3_E#6i!e2a`c89G4F"BI6N1daNJ_[g%m)k%>nhqJ=BV(W=Ie$a4]2P4JarbA4">ddc_qkH+R,lZM,6Oc!O]b`:hun-SuADm@jR+g*,??&8;Nk,8Z1SF5YbsDlp<_s!uoFZQ/Fi^/sFd!f-S=^n@J\0b;>8aaaIns]bt?AUuFE6I".$">t2bfW/L;h69">g8FS;5)S*H#K[miPY_Y`?mK=R6^q5j*NH"Tr>]/%E^$8DT@,*S#$)c$q!6tHiE]Z`]mKXj=AW3NtXQEali1FO+k5g7`@?[.)S--H]MVaB'@3L_\k%7W,Z'XU:bEnD(pg>u4b1*-9:lIgdLnd[eH-JJj!"7'-E$R%bK_qP'S_9IK-eLhO?*4*N2!?2]3<8HVt(f@=`]lJXQAT+J$'LZqEtDbfdil$U*u#A%#@i+-/[^S7mdgng7ph867%GZ\+KR[<7T2+QK;Rth?sN=d[oifV(foA$G04ltNPo2V[[LWYM;Y5RK@(/he'3a9V-Z_*_4*7'^3R;.It4StQ7m9M:js0c!QK4Z7Q+uZuW7P]3lH0`QoP?6m=Q]INW"EKf#e-^bMKBf=B)L?&%n\1rA:T)C[m17McmW +endstream +endobj +105 0 obj +<< /Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 612 792 ] +/Resources 3 0 R +/Contents 104 0 R +>> +endobj +106 0 obj +<< /Length 1326 /Filter [ /ASCII85Decode /FlateDecode ] + >> +stream +GatU3>Ar7S'Roe[cjX`s^%d6p8PrZX!G`XL*J3VjpF-FV9r;3)16kFO13D?%+)+Rg4/C>7#S>&kcZa9a\`i-qFM1lT`0_JK\LPW13i7%;N?>O^bF;T(WEh*/XPl*sVfIT/YaO'"Q.RBf58GD8+*PlICZc]Td-8b2h\ZF$6*#F7@[IUOs1eb\#j97cd3'_bahS!^Y=DX@j^qHVY>6Q[JoY3?@AMG?7iUF"r6eK]HKebRk#;:YfCj"lJV9B4ZdN'Su:f(>J]oc%)_)17(!)B"T^Lh-1QUq2^rV>j=ikEWI]oFK#[#bfmXKk1dif?YW^E".rmF"s5eU!QL*6YUFClC&5;+H@A>3(rnehj"M:]?u#rF$pQMq.S#g"0C,>bnd+X1^0!NdN_p@0XZdIrb]H@/)O9O[]b2BA/rh(hq'AIqa"a@a6*BV@/X*1gF;tD&$_^3d_65g3s19Y]1`;Llr82&MEUTiK@5;I!KKg8>QNf7mH],0BZ^@`LciSbR.\`T@,,!ZB$N[MnJ(I!fYT.F1'O+<[$(ji>]h-5U%*,8;,>XbapAe)bCVp'4#C(398,DZc5("li]i3dfW4aa<)Nr_7f"qFM>U:*`X%BTpVCC:?TlPX\#e>_6(l2tJ.S^-6Z==Y79g>6oigGnKlhkoCN7/a`\^WaYt;s)/Yep\tf6f"oGn8=BoYpdb3;D5=\W6JJ!C-FKA&A??7fg.VX1b"Tr)tDB@CD5Is7ncag)n/3u?P!qXn3d0QF*LtBU4,2;hs+djk?P,fR!OsgdQ_=5R#BL,+0!D5>qSWs2'5\B!)>7&e_'N#$B8*oDa!r6oMU0\Z0nBfY<56= +endstream +endobj +107 0 obj +<< /Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 612 792 ] +/Resources 3 0 R +/Contents 106 0 R +>> +endobj +108 0 obj +<< /Length 817 /Filter [ /ASCII85Decode /FlateDecode ] + >> +stream +Gat%!?#uMY'RekG_.,6a&.hh->Os^H-ge8]Vpf@X&$1[A%4bZ\B_q1Ud3r*9VrNDM4Qfu;"YQ/+k2J9%(dS;QI"O\h_#W-n"&,Zt@h_0JKCf/XS\.,ik6)$O,(p#:;Ds<40Ku@TIs_t,W.^6!GrnA#;$s(f9)Y?njhchE&*?4F[QJmroANC3B!/e:.BB\)JOQ]!C$4[(gs)X_6\-S26U;)p&ieiOdM[QSYB]2mpjJ`JopoZP2JdO'V?T$KYciKiD*c47hETggnZGLA-'G\'#LoBWT!TojA.W9Q/SNQ]nJ`O]ANEHXS8j':ceoE+9cGii^Wf=[A1kBGCWM]!jkED&P^+_.>&bKm.5;3qTK?ppVcZ$AGm)GD=Q>Cg9$OE':kjQWVe.YT9E=O6,PD&>4CZYags^t'3erVnTh.?YQ\q9sZF44TY%64A7?c+qhj7TB`T'>Gd$])l4-[KR2YPVSJ_4/jW9$HYfU'(JV5&]0_?P<=eaf<-5s2DgkGad1Gs8n@;)91d-5CJ!F%[/#D(20lr6&ha,YfIo"9%b_Y4gXf9u5h@OGJ1VCRqSC_V!>M\+e+%H7@E>](t%:T`*,,0an'h\o2,oMu`\9j5r*;!sCH3#nAPNNG\AqDJ]ro_tDX%Ef>f@noBOGmLBeZcb0k0PLCUR)UIp~> +endstream +endobj +109 0 obj +<< /Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 612 792 ] +/Resources 3 0 R +/Contents 108 0 R +/Annots 110 0 R +>> +endobj +110 0 obj +[ +] +endobj +113 0 obj +<< + /Title (\376\377\0\114\0\151\0\142\0\170\0\155\0\154\0\40\0\124\0\165\0\164\0\157\0\162\0\151\0\141\0\154) + /Parent 111 0 R + /Next 115 0 R + /A 112 0 R +>> endobj +115 0 obj +<< + /Title (\376\377\0\124\0\141\0\142\0\154\0\145\0\40\0\157\0\146\0\40\0\103\0\157\0\156\0\164\0\145\0\156\0\164\0\163) + /Parent 111 0 R + /Prev 113 0 R + /Next 116 0 R + /A 114 0 R +>> endobj +116 0 obj +<< + /Title (\376\377\0\111\0\156\0\164\0\162\0\157\0\144\0\165\0\143\0\164\0\151\0\157\0\156) + /Parent 111 0 R + /Prev 115 0 R + /Next 117 0 R + /A 9 0 R +>> endobj +117 0 obj +<< + /Title (\376\377\0\104\0\141\0\164\0\141\0\40\0\124\0\171\0\160\0\145\0\163) + /Parent 111 0 R + /Prev 116 0 R + /Next 118 0 R + /A 11 0 R +>> endobj +118 0 obj +<< + /Title (\376\377\0\120\0\141\0\162\0\163\0\151\0\156\0\147\0\40\0\164\0\150\0\145\0\40\0\146\0\151\0\154\0\145) + /Parent 111 0 R + /Prev 117 0 R + /Next 119 0 R + /A 13 0 R +>> endobj +119 0 obj +<< + /Title (\376\377\0\122\0\145\0\164\0\162\0\151\0\145\0\166\0\151\0\156\0\147\0\40\0\105\0\154\0\145\0\155\0\145\0\156\0\164\0\40\0\103\0\157\0\156\0\164\0\145\0\156\0\164) + /Parent 111 0 R + /Prev 118 0 R + /Next 120 0 R + /A 15 0 R +>> endobj +120 0 obj +<< + /Title (\376\377\0\125\0\163\0\151\0\156\0\147\0\40\0\130\0\120\0\141\0\164\0\150\0\40\0\164\0\157\0\40\0\122\0\145\0\164\0\162\0\151\0\145\0\166\0\145\0\40\0\105\0\154\0\145\0\155\0\145\0\156\0\164\0\40\0\103\0\157\0\156\0\164\0\145\0\156\0\164) + /Parent 111 0 R + /Prev 119 0 R + /Next 121 0 R + /A 17 0 R +>> endobj +121 0 obj +<< + /Title (\376\377\0\127\0\162\0\151\0\164\0\151\0\156\0\147\0\40\0\145\0\154\0\145\0\155\0\145\0\156\0\164\0\40\0\143\0\157\0\156\0\164\0\145\0\156\0\164) + /Parent 111 0 R + /Prev 120 0 R + /Next 122 0 R + /A 19 0 R +>> endobj +122 0 obj +<< + /Title (\376\377\0\127\0\162\0\151\0\164\0\151\0\156\0\147\0\40\0\101\0\164\0\164\0\162\0\151\0\142\0\165\0\164\0\145) + /Parent 111 0 R + /Prev 121 0 R + /Next 123 0 R + /A 21 0 R +>> endobj +123 0 obj +<< + /Title (\376\377\0\122\0\145\0\164\0\162\0\151\0\145\0\166\0\151\0\156\0\147\0\40\0\101\0\164\0\164\0\162\0\151\0\142\0\165\0\164\0\145\0\163) + /Parent 111 0 R + /Prev 122 0 R + /Next 124 0 R + /A 23 0 R +>> endobj +124 0 obj +<< + /Title (\376\377\0\105\0\156\0\143\0\157\0\144\0\151\0\156\0\147\0\40\0\103\0\157\0\156\0\166\0\145\0\162\0\163\0\151\0\157\0\156) + /Parent 111 0 R + /Prev 123 0 R + /Next 125 0 R + /A 25 0 R +>> endobj +125 0 obj +<< + /Title (\376\377\0\101\0\56\0\240\0\103\0\157\0\155\0\160\0\151\0\154\0\141\0\164\0\151\0\157\0\156) + /Parent 111 0 R + /Prev 124 0 R + /Next 126 0 R + /A 27 0 R +>> endobj +126 0 obj +<< + /Title (\376\377\0\102\0\56\0\240\0\123\0\141\0\155\0\160\0\154\0\145\0\40\0\104\0\157\0\143\0\165\0\155\0\145\0\156\0\164) + /Parent 111 0 R + /Prev 125 0 R + /Next 127 0 R + /A 29 0 R +>> endobj +127 0 obj +<< + /Title (\376\377\0\103\0\56\0\240\0\103\0\157\0\144\0\145\0\40\0\146\0\157\0\162\0\40\0\113\0\145\0\171\0\167\0\157\0\162\0\144\0\40\0\105\0\170\0\141\0\155\0\160\0\154\0\145) + /Parent 111 0 R + /Prev 126 0 R + /Next 128 0 R + /A 31 0 R +>> endobj +128 0 obj +<< + /Title (\376\377\0\104\0\56\0\240\0\103\0\157\0\144\0\145\0\40\0\146\0\157\0\162\0\40\0\130\0\120\0\141\0\164\0\150\0\40\0\105\0\170\0\141\0\155\0\160\0\154\0\145) + /Parent 111 0 R + /Prev 127 0 R + /Next 129 0 R + /A 33 0 R +>> endobj +129 0 obj +<< + /Title (\376\377\0\105\0\56\0\240\0\103\0\157\0\144\0\145\0\40\0\146\0\157\0\162\0\40\0\101\0\144\0\144\0\40\0\113\0\145\0\171\0\167\0\157\0\162\0\144\0\40\0\105\0\170\0\141\0\155\0\160\0\154\0\145) + /Parent 111 0 R + /Prev 128 0 R + /Next 130 0 R + /A 35 0 R +>> endobj +130 0 obj +<< + /Title (\376\377\0\106\0\56\0\240\0\103\0\157\0\144\0\145\0\40\0\146\0\157\0\162\0\40\0\101\0\144\0\144\0\40\0\101\0\164\0\164\0\162\0\151\0\142\0\165\0\164\0\145\0\40\0\105\0\170\0\141\0\155\0\160\0\154\0\145) + /Parent 111 0 R + /Prev 129 0 R + /Next 131 0 R + /A 37 0 R +>> endobj +131 0 obj +<< + /Title (\376\377\0\107\0\56\0\240\0\103\0\157\0\144\0\145\0\40\0\146\0\157\0\162\0\40\0\122\0\145\0\164\0\162\0\151\0\145\0\166\0\151\0\156\0\147\0\40\0\101\0\164\0\164\0\162\0\151\0\142\0\165\0\164\0\145\0\40\0\126\0\141\0\154\0\165\0\145\0\40\0\105\0\170\0\141\0\155\0\160\0\154\0\145) + /Parent 111 0 R + /Prev 130 0 R + /Next 132 0 R + /A 39 0 R +>> endobj +132 0 obj +<< + /Title (\376\377\0\110\0\56\0\240\0\103\0\157\0\144\0\145\0\40\0\146\0\157\0\162\0\40\0\105\0\156\0\143\0\157\0\144\0\151\0\156\0\147\0\40\0\103\0\157\0\156\0\166\0\145\0\162\0\163\0\151\0\157\0\156\0\40\0\105\0\170\0\141\0\155\0\160\0\154\0\145) + /Parent 111 0 R + /Prev 131 0 R + /Next 133 0 R + /A 41 0 R +>> endobj +133 0 obj +<< + /Title (\376\377\0\111\0\56\0\240\0\101\0\143\0\153\0\156\0\157\0\167\0\154\0\145\0\144\0\147\0\145\0\155\0\145\0\156\0\164\0\163) + /Parent 111 0 R + /Prev 132 0 R + /Next 135 0 R + /A 43 0 R +>> endobj +135 0 obj +<< + /Title (\376\377\0\111\0\156\0\144\0\145\0\170) + /Parent 111 0 R + /Prev 133 0 R + /A 134 0 R +>> endobj +136 0 obj +<< /Type /Font +/Subtype /Type1 +/Name /F3 +/BaseFont /Helvetica-Bold +/Encoding /WinAnsiEncoding >> +endobj +137 0 obj +<< /Type /Font +/Subtype /Type1 +/Name /F14 +/BaseFont /ZapfDingbats >> +endobj +138 0 obj +<< /Type /Font +/Subtype /Type1 +/Name /F5 +/BaseFont /Times-Roman +/Encoding /WinAnsiEncoding >> +endobj +139 0 obj +<< /Type /Font +/Subtype /Type1 +/Name /F6 +/BaseFont /Times-Italic +/Encoding /WinAnsiEncoding >> +endobj +140 0 obj +<< /Type /Font +/Subtype /Type1 +/Name /F1 +/BaseFont /Helvetica +/Encoding /WinAnsiEncoding >> +endobj +141 0 obj +<< /Type /Font +/Subtype /Type1 +/Name /F9 +/BaseFont /Courier +/Encoding /WinAnsiEncoding >> +endobj +142 0 obj +<< /Type /Font +/Subtype /Type1 +/Name /F7 +/BaseFont /Times-Bold +/Encoding /WinAnsiEncoding >> +endobj +1 0 obj +<< /Type /Pages +/Count 17 +/Kids [6 0 R 45 0 R 59 0 R 64 0 R 69 0 R 75 0 R 82 0 R 89 0 R 93 0 R 95 0 R 97 0 R 99 0 R 101 0 R 103 0 R 105 0 R 107 0 R 109 0 R ] >> +endobj +2 0 obj +<< /Type /Catalog +/Pages 1 0 R + /Outlines 111 0 R + /PageMode /UseOutlines + >> +endobj +3 0 obj +<< +/Font << /F3 136 0 R /F5 138 0 R /F14 137 0 R /F1 140 0 R /F6 139 0 R /F9 141 0 R /F7 142 0 R >> +/ProcSet [ /PDF /ImageC /Text ] >> +endobj +9 0 obj +<< +/S /GoTo +/D [45 0 R /XYZ 139.0 693.0 null] +>> +endobj +11 0 obj +<< +/S /GoTo +/D [45 0 R /XYZ 139.0 363.674 null] +>> +endobj +13 0 obj +<< +/S /GoTo +/D [59 0 R /XYZ 139.0 725.0 null] +>> +endobj +15 0 obj +<< +/S /GoTo +/D [59 0 R /XYZ 139.0 173.18 null] +>> +endobj +17 0 obj +<< +/S /GoTo +/D [64 0 R /XYZ 139.0 156.646 null] +>> +endobj +19 0 obj +<< +/S /GoTo +/D [75 0 R /XYZ 139.0 667.866 null] +>> +endobj +21 0 obj +<< +/S /GoTo +/D [75 0 R /XYZ 139.0 281.08 null] +>> +endobj +23 0 obj +<< +/S /GoTo +/D [82 0 R /XYZ 139.0 508.98 null] +>> +endobj +25 0 obj +<< +/S /GoTo +/D [89 0 R /XYZ 139.0 725.0 null] +>> +endobj +27 0 obj +<< +/S /GoTo +/D [93 0 R /XYZ 139.0 648.0 null] +>> +endobj +29 0 obj +<< +/S /GoTo +/D [93 0 R /XYZ 139.0 564.561 null] +>> +endobj +31 0 obj +<< +/S /GoTo +/D [93 0 R /XYZ 139.0 386.942 null] +>> +endobj +33 0 obj +<< +/S /GoTo +/D [95 0 R /XYZ 139.0 182.42 null] +>> +endobj +35 0 obj +<< +/S /GoTo +/D [99 0 R /XYZ 139.0 665.56 null] +>> +endobj +37 0 obj +<< +/S /GoTo +/D [101 0 R /XYZ 139.0 497.94 null] +>> +endobj +39 0 obj +<< +/S /GoTo +/D [103 0 R /XYZ 139.0 438.78 null] +>> +endobj +41 0 obj +<< +/S /GoTo +/D [105 0 R /XYZ 139.0 281.02 null] +>> +endobj +43 0 obj +<< +/S /GoTo +/D [107 0 R /XYZ 139.0 113.4 null] +>> +endobj +111 0 obj +<< + /First 113 0 R + /Last 135 0 R +>> endobj +112 0 obj +<< +/S /GoTo +/D [6 0 R /XYZ 139.0 725.0 null] +>> +endobj +114 0 obj +<< +/S /GoTo +/D [6 0 R /XYZ 139.0 396.11 null] +>> +endobj +134 0 obj +<< +/S /GoTo +/D [109 0 R /XYZ 139.0 682.0 null] +>> +endobj +xref +0 143 +0000000000 65535 f +0000046903 00000 n +0000047079 00000 n +0000047172 00000 n +0000000015 00000 n +0000000071 00000 n +0000001911 00000 n +0000002031 00000 n +0000002175 00000 n +0000047325 00000 n +0000002309 00000 n +0000047389 00000 n +0000002445 00000 n +0000047456 00000 n +0000002581 00000 n +0000047521 00000 n +0000002717 00000 n +0000047587 00000 n +0000002853 00000 n +0000047654 00000 n +0000002989 00000 n +0000047721 00000 n +0000003125 00000 n +0000047787 00000 n +0000003261 00000 n +0000047853 00000 n +0000003397 00000 n +0000047918 00000 n +0000003533 00000 n +0000047983 00000 n +0000003669 00000 n +0000048050 00000 n +0000003804 00000 n +0000048117 00000 n +0000003940 00000 n +0000048183 00000 n +0000004076 00000 n +0000048249 00000 n +0000004212 00000 n +0000048316 00000 n +0000004348 00000 n +0000048383 00000 n +0000004484 00000 n +0000048450 00000 n +0000004620 00000 n +0000006683 00000 n +0000006806 00000 n +0000006903 00000 n +0000007078 00000 n +0000007271 00000 n +0000007469 00000 n +0000007659 00000 n +0000007846 00000 n +0000008044 00000 n +0000008246 00000 n +0000008448 00000 n +0000008648 00000 n +0000008847 00000 n +0000009052 00000 n +0000011400 00000 n +0000011523 00000 n +0000011557 00000 n +0000011693 00000 n +0000011884 00000 n +0000014223 00000 n +0000014346 00000 n +0000014380 00000 n +0000014580 00000 n +0000014791 00000 n +0000017332 00000 n +0000017455 00000 n +0000017496 00000 n +0000017685 00000 n +0000017863 00000 n +0000018000 00000 n +0000020544 00000 n +0000020667 00000 n +0000020715 00000 n +0000020850 00000 n +0000021058 00000 n +0000021197 00000 n +0000021333 00000 n +0000023582 00000 n +0000023705 00000 n +0000023753 00000 n +0000023959 00000 n +0000024098 00000 n +0000024234 00000 n +0000024439 00000 n +0000027594 00000 n +0000027717 00000 n +0000027744 00000 n +0000027878 00000 n +0000030019 00000 n +0000030127 00000 n +0000031368 00000 n +0000031476 00000 n +0000032912 00000 n +0000033020 00000 n +0000034353 00000 n +0000034461 00000 n +0000035743 00000 n +0000035853 00000 n +0000037197 00000 n +0000037307 00000 n +0000038604 00000 n +0000038714 00000 n +0000040134 00000 n +0000040244 00000 n +0000041154 00000 n +0000041280 00000 n +0000048516 00000 n +0000048570 00000 n +0000041301 00000 n +0000048635 00000 n +0000041476 00000 n +0000041677 00000 n +0000041848 00000 n +0000042007 00000 n +0000042201 00000 n +0000042455 00000 n +0000042784 00000 n +0000043020 00000 n +0000043221 00000 n +0000043446 00000 n +0000043659 00000 n +0000043842 00000 n +0000044048 00000 n +0000044306 00000 n +0000044552 00000 n +0000044833 00000 n +0000045126 00000 n +0000045496 00000 n +0000045825 00000 n +0000048701 00000 n +0000046038 00000 n +0000046154 00000 n +0000046268 00000 n +0000046354 00000 n +0000046465 00000 n +0000046577 00000 n +0000046686 00000 n +0000046793 00000 n +trailer +<< +/Size 143 +/Root 2 0 R +/Info 4 0 R +>> +startxref +48768 +%%EOF -- cgit v1.2.3